{"version":3,"file":"vendor.thatopen-57cbe69a.6b5d2df2adec255c.bundle.js","mappings":"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AAW4f,EAAGE,KAAK9f,GAAK,EAAI,QAAQ4f,EAAGE,KAAK9f,GAAK,GAAK,GAAK,MAAM4f,EAAGE,KAAK9f,GAAK,GAAK,QAAQ4f,EAAGE,KAAS,GAAJje,EAAS,OAAO+d,EAAGE,KAAKje,GAAK,EAAI,QAAQ+d,EAAGE,KAAKje,GAAK,GAAK,OAAO+d,EAAGE,KAAKje,GAAK,GAAK,OAAO+d,EAAGE,KAAS,IAAJ/d,KAAW6d,EAAGE,KAAK/d,GAAK,EAAI,OAAO6d,EAAGE,KAAK/d,GAAK,GAAK,OAAO6d,EAAGE,KAAK/d,GAAK,GAAK,OAAOge,aAC7Y,CACA,eAAOC,CAASjgB,GACd,IAAK6f,EAAGK,SAASC,KAAKngB,GACpB,MAAM,IAAI6I,MACR,GAAG7I,uNAMT,GAEFQ,EAAEof,GAAI,WAAY,0FAClBpf,EAAEof,GAAI,OAAQ,CACZ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAEF,IAAIQ,GAAKR,GACT,MAAMS,WAAW1H,GACf,WAAA5S,CAAY/F,EAAGC,GACb0K,MAAM3K,GAAIQ,EAAEuI,KAAM,aAAc,IAAImP,IAAM1X,EAAEuI,KAAM,gBAAiB,IAAImP,IAAM1X,EAAEuI,KAAM,eAAgB,IAAImP,IAAM1X,EAAEuI,KAAM,YAAa,IAAImP,IAAM1X,EAAEuI,KAAM,cAAevI,EAAEuI,KAAM,eAAgB,MAAOvI,EAAEuI,KAAM,eAAgB,MAAOvI,EAAEuI,KAAM,WAAYvI,EAAEuI,KAAM,YAAY,GAAKA,KAAK2P,WAAa1Y,EAAG+I,KAAKuX,OAAS,CACjTC,aAAc,IACdC,gBAAgB,KACbvgB,GACF8I,KAAK0X,SAAU,CACpB,CAQA,WAAIA,CAAQzgB,GACV+I,KAAK2X,SAAW1gB,EAAGA,IAAM+I,KAAK4X,aAAe,MAAO5X,KAAK6X,UAAUnH,QAAQzZ,EAC7E,CAMA,WAAIygB,GACF,OAAO1X,KAAK2X,QACd,CAeA,UAAIJ,CAAOtgB,GACT+I,KAAK8X,QAAU,IAAK9X,KAAK8X,WAAY7gB,EACvC,CAYA,UAAIsgB,GACF,OAAOvX,KAAK8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C,EAAIhC,EAAEsB,IAAMtB,EAAEsB,EAAIU,GAAIF,EAAI5B,EAAEkB,IAAMlB,EAAEkB,EAAIU,GAAIC,EAAI7B,EAAEmB,IAAMnB,EAAEmB,EAAIU,GAAIC,EAAI9B,EAAEoB,IAAMpB,EAAEoB,EAAIU,EAClI,CACA,OAAO,IAAI,MAAOhC,EAAGE,EACvB,GAEF3B,EAAEmyC,GAAI,OAAQ,wCACd,IAAIgB,GAAKhB,GACT,MAAMiB,GAAqB,IAAIlxC,IAAI,CACjC,WACA,UACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,WACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACEmxC,GAAK,MAAMC,UAAWn7B,GACxB,WAAA5S,CAAY/F,GACV2K,MAAM3K,GAAIQ,EAAEuI,KAAM,WAAW,GAAK/I,EAAE8C,IAAIgxC,EAAG36B,KAAMpQ,KACnD,CASA,YAAM,CAAO/I,EAAGC,EAAG6B,GAAI,EAAIE,GAAI,GAC7B,MAAMC,EAAI,CAAC,EAAGE,EAAI,IAAIO,IAAI1C,EAAE+zC,iBAAiB9zC,IAAK0C,EAAoB,IAAID,IAAI,CAC5E,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","sources":["webpack://client-app/./node_modules/@thatopen/components-front/dist/index.js"],"sourcesContent":["var nu = Object.defineProperty;\nvar su = (h, t, e) => t in h ? nu(h, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : h[t] = e;\nvar T = (h, t, e) => (su(h, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nimport * as w from \"three\";\nimport { Vector3 as te, Vector2 as at, Plane as Fa, Line3 as Ot, Box3 as pt, Mesh as fe, Triangle as us, Raycaster as iu, Quaternion as Kt, Euler as ru, Matrix4 as Ne, Sphere as Gr, Object3D as br, MeshBasicMaterial as Rc, LineBasicMaterial as Fc, CylinderGeometry as ut, BoxGeometry as ct, BufferGeometry as xr, Float32BufferAttribute as Es, OctahedronGeometry as Gi, Line as fn, SphereGeometry as ou, TorusGeometry as Us, PlaneGeometry as au, DoubleSide as Pc, BufferAttribute as Yr, FrontSide as El, Ray as lu, BackSide as cu, InstancedBufferGeometry as hu, InstancedInterleavedBuffer as ra, InterleavedBufferAttribute as ds, WireframeGeometry as uu, UniformsLib as vr, ShaderLib as Ir, UniformsUtils as Pa, ShaderMaterial as jt, Vector4 as Hr, MathUtils as du, OrthographicCamera as Mc, WebGLRenderTarget as yr, HalfFloatType as Oc, NoBlending as fu, Clock as pu, Color as oa, LinearFilter as Bs, NearestFilter as Mn, DepthTexture as mu, UnsignedIntType as gu, DepthFormat as Eu, DataTexture as vu, NoColorSpace as Iu, RepeatWrapping as vl, WebGLMultipleRenderTargets as yu, RedFormat as wu, FloatType as Cu, RGBAFormat as Tu } from \"three\";\nimport * as xt from \"@thatopen/fragments\";\nimport { Serializer as bu, FragmentMesh as xu } from \"@thatopen/fragments\";\nimport * as de from \"web-ifc\";\nvar Su = Object.defineProperty, Au = (h, t, e) => t in h ? Su(h, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : h[t] = e, S = (h, t, e) => (Au(h, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nconst Dc = 0, Ru = 1, Fu = 2, Il = 2, _o = 1.25, yl = 1, wr = 6 * 4 + 4 + 4, Wr = 65535, Pu = Math.pow(2, -24), Uo = Symbol(\"SKIP_GENERATION\");\nfunction Mu(h) {\n return h.index ? h.index.count : h.attributes.position.count;\n}\nfunction vs(h) {\n return Mu(h) / 3;\n}\nfunction Ou(h, t = ArrayBuffer) {\n return h > 65535 ? new Uint32Array(new t(4 * h)) : new Uint16Array(new t(2 * h));\n}\nfunction Du(h, t) {\n if (!h.index) {\n const e = h.attributes.position.count, n = t.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer, s = Ou(e, n);\n h.setIndex(new Yr(s, 1));\n for (let i = 0; i < e; i++)\n s[i] = i;\n }\n}\nfunction Lc(h) {\n const t = vs(h), e = h.drawRange, n = e.start / 3, s = (e.start + e.count) / 3, i = Math.max(0, n), r = Math.min(t, s) - i;\n return [{\n offset: Math.floor(i),\n count: Math.floor(r)\n }];\n}\nfunction Nc(h) {\n if (!h.groups || !h.groups.length)\n return Lc(h);\n const t = [], e = /* @__PURE__ */ new Set(), n = h.drawRange, s = n.start / 3, i = (n.start + n.count) / 3;\n for (const o of h.groups) {\n const l = o.start / 3, u = (o.start + o.count) / 3;\n e.add(Math.max(s, l)), e.add(Math.min(i, u));\n }\n const r = Array.from(e.values()).sort((o, l) => o - l);\n for (let o = 0; o < r.length - 1; o++) {\n const l = r[o], u = r[o + 1];\n t.push({\n offset: Math.floor(l),\n count: Math.floor(u - l)\n });\n }\n return t;\n}\nfunction Lu(h) {\n if (h.groups.length === 0)\n return !1;\n const t = vs(h), e = Nc(h).sort((i, r) => i.offset - r.offset), n = e[e.length - 1];\n n.count = Math.min(t - n.offset, n.count);\n let s = 0;\n return e.forEach(({ count: i }) => s += i), t !== s;\n}\nfunction He(h, t, e) {\n return e.min.x = t[h], e.min.y = t[h + 1], e.min.z = t[h + 2], e.max.x = t[h + 3], e.max.y = t[h + 4], e.max.z = t[h + 5], e;\n}\nfunction Nu(h) {\n h[0] = h[1] = h[2] = 1 / 0, h[3] = h[4] = h[5] = -1 / 0;\n}\nfunction wl(h) {\n let t = -1, e = -1 / 0;\n for (let n = 0; n < 3; n++) {\n const s = h[n + 3] - h[n];\n s > e && (e = s, t = n);\n }\n return t;\n}\nfunction Cl(h, t) {\n t.set(h);\n}\nfunction Tl(h, t, e) {\n let n, s;\n for (let i = 0; i < 3; i++) {\n const r = i + 3;\n n = h[i], s = t[i], e[i] = n < s ? n : s, n = h[r], s = t[r], e[r] = n > s ? n : s;\n }\n}\nfunction Yi(h, t, e) {\n for (let n = 0; n < 3; n++) {\n const s = t[h + 2 * n], i = t[h + 2 * n + 1], r = s - i, o = s + i;\n r < e[n] && (e[n] = r), o > e[n + 3] && (e[n + 3] = o);\n }\n}\nfunction ks(h) {\n const t = h[3] - h[0], e = h[4] - h[1], n = h[5] - h[2];\n return 2 * (t * e + e * n + n * t);\n}\nfunction Bo(h, t, e, n, s = null) {\n let i = 1 / 0, r = 1 / 0, o = 1 / 0, l = -1 / 0, u = -1 / 0, d = -1 / 0, m = 1 / 0, f = 1 / 0, g = 1 / 0, v = -1 / 0, y = -1 / 0, x = -1 / 0;\n const A = s !== null;\n for (let F = t * 6, P = (t + e) * 6; F < P; F += 6) {\n const C = h[F + 0], O = h[F + 1], U = C - O, Y = C + O;\n U < i && (i = U), Y > l && (l = Y), A && C < m && (m = C), A && C > v && (v = C);\n const H = h[F + 2], K = h[F + 3], Z = H - K, q = H + K;\n Z < r && (r = Z), q > u && (u = q), A && H < f && (f = H), A && H > y && (y = H);\n const ne = h[F + 4], se = h[F + 5], he = ne - se, me = ne + se;\n he < o && (o = he), me > d && (d = me), A && ne < g && (g = ne), A && ne > x && (x = ne);\n }\n n[0] = i, n[1] = r, n[2] = o, n[3] = l, n[4] = u, n[5] = d, A && (s[0] = m, s[1] = f, s[2] = g, s[3] = v, s[4] = y, s[5] = x);\n}\nfunction _u(h, t, e, n) {\n let s = 1 / 0, i = 1 / 0, r = 1 / 0, o = -1 / 0, l = -1 / 0, u = -1 / 0;\n for (let d = t * 6, m = (t + e) * 6; d < m; d += 6) {\n const f = h[d + 0];\n f < s && (s = f), f > o && (o = f);\n const g = h[d + 2];\n g < i && (i = g), g > l && (l = g);\n const v = h[d + 4];\n v < r && (r = v), v > u && (u = v);\n }\n n[0] = s, n[1] = i, n[2] = r, n[3] = o, n[4] = l, n[5] = u;\n}\nfunction Uu(h, t) {\n Nu(t);\n const e = h.attributes.position, n = h.index ? h.index.array : null, s = vs(h), i = new Float32Array(s * 6), r = e.normalized, o = e.array, l = e.offset || 0;\n let u = 3;\n e.isInterleavedBufferAttribute && (u = e.data.stride);\n const d = [\"getX\", \"getY\", \"getZ\"];\n for (let m = 0; m < s; m++) {\n const f = m * 3, g = m * 6;\n let v = f + 0, y = f + 1, x = f + 2;\n n && (v = n[v], y = n[y], x = n[x]), r || (v = v * u + l, y = y * u + l, x = x * u + l);\n for (let A = 0; A < 3; A++) {\n let F, P, C;\n r ? (F = e[d[A]](v), P = e[d[A]](y), C = e[d[A]](x)) : (F = o[v + A], P = o[y + A], C = o[x + A]);\n let O = F;\n P < O && (O = P), C < O && (O = C);\n let U = F;\n P > U && (U = P), C > U && (U = C);\n const Y = (U - O) / 2, H = A * 2;\n i[g + H + 0] = O + Y, i[g + H + 1] = Y + (Math.abs(O) + Y) * Pu, O < t[A] && (t[A] = O), U > t[A + 3] && (t[A + 3] = U);\n }\n }\n return i;\n}\nconst en = 32, Bu = (h, t) => h.candidate - t.candidate, pn = new Array(en).fill().map(() => ({\n count: 0,\n bounds: new Float32Array(6),\n rightCacheBounds: new Float32Array(6),\n leftCacheBounds: new Float32Array(6),\n candidate: 0\n})), Hi = new Float32Array(6);\nfunction ku(h, t, e, n, s, i) {\n let r = -1, o = 0;\n if (i === Dc)\n r = wl(t), r !== -1 && (o = (t[r] + t[r + 3]) / 2);\n else if (i === Ru)\n r = wl(h), r !== -1 && (o = zu(e, n, s, r));\n else if (i === Fu) {\n const l = ks(h);\n let u = _o * s;\n const d = n * 6, m = (n + s) * 6;\n for (let f = 0; f < 3; f++) {\n const g = t[f], v = (t[f + 3] - g) / en;\n if (s < en / 4) {\n const y = [...pn];\n y.length = s;\n let x = 0;\n for (let F = d; F < m; F += 6, x++) {\n const P = y[x];\n P.candidate = e[F + 2 * f], P.count = 0;\n const {\n bounds: C,\n leftCacheBounds: O,\n rightCacheBounds: U\n } = P;\n for (let Y = 0; Y < 3; Y++)\n U[Y] = 1 / 0, U[Y + 3] = -1 / 0, O[Y] = 1 / 0, O[Y + 3] = -1 / 0, C[Y] = 1 / 0, C[Y + 3] = -1 / 0;\n Yi(F, e, C);\n }\n y.sort(Bu);\n let A = s;\n for (let F = 0; F < A; F++) {\n const P = y[F];\n for (; F + 1 < A && y[F + 1].candidate === P.candidate; )\n y.splice(F + 1, 1), A--;\n }\n for (let F = d; F < m; F += 6) {\n const P = e[F + 2 * f];\n for (let C = 0; C < A; C++) {\n const O = y[C];\n P >= O.candidate ? Yi(F, e, O.rightCacheBounds) : (Yi(F, e, O.leftCacheBounds), O.count++);\n }\n }\n for (let F = 0; F < A; F++) {\n const P = y[F], C = P.count, O = s - P.count, U = P.leftCacheBounds, Y = P.rightCacheBounds;\n let H = 0;\n C !== 0 && (H = ks(U) / l);\n let K = 0;\n O !== 0 && (K = ks(Y) / l);\n const Z = yl + _o * (H * C + K * O);\n Z < u && (r = f, u = Z, o = P.candidate);\n }\n } else {\n for (let A = 0; A < en; A++) {\n const F = pn[A];\n F.count = 0, F.candidate = g + v + A * v;\n const P = F.bounds;\n for (let C = 0; C < 3; C++)\n P[C] = 1 / 0, P[C + 3] = -1 / 0;\n }\n for (let A = d; A < m; A += 6) {\n let F = ~~((e[A + 2 * f] - g) / v);\n F >= en && (F = en - 1);\n const P = pn[F];\n P.count++, Yi(A, e, P.bounds);\n }\n const y = pn[en - 1];\n Cl(y.bounds, y.rightCacheBounds);\n for (let A = en - 2; A >= 0; A--) {\n const F = pn[A], P = pn[A + 1];\n Tl(F.bounds, P.rightCacheBounds, F.rightCacheBounds);\n }\n let x = 0;\n for (let A = 0; A < en - 1; A++) {\n const F = pn[A], P = F.count, C = F.bounds, O = pn[A + 1].rightCacheBounds;\n P !== 0 && (x === 0 ? Cl(C, Hi) : Tl(C, Hi, Hi)), x += P;\n let U = 0, Y = 0;\n x !== 0 && (U = ks(Hi) / l);\n const H = s - x;\n H !== 0 && (Y = ks(O) / l);\n const K = yl + _o * (U * x + Y * H);\n K < u && (r = f, u = K, o = F.candidate);\n }\n }\n }\n } else\n console.warn(`MeshBVH: Invalid build strategy value ${i} used.`);\n return { axis: r, pos: o };\n}\nfunction zu(h, t, e, n) {\n let s = 0;\n for (let i = t, r = t + e; i < r; i++)\n s += h[i * 6 + n * 2];\n return s / e;\n}\nclass Wi {\n constructor() {\n }\n}\nfunction Vu(h, t, e, n, s, i) {\n let r = n, o = n + s - 1;\n const l = i.pos, u = i.axis * 2;\n for (; ; ) {\n for (; r <= o && e[r * 6 + u] < l; )\n r++;\n for (; r <= o && e[o * 6 + u] >= l; )\n o--;\n if (r < o) {\n for (let d = 0; d < 3; d++) {\n let m = t[r * 3 + d];\n t[r * 3 + d] = t[o * 3 + d], t[o * 3 + d] = m;\n }\n for (let d = 0; d < 6; d++) {\n let m = e[r * 6 + d];\n e[r * 6 + d] = e[o * 6 + d], e[o * 6 + d] = m;\n }\n r++, o--;\n } else\n return r;\n }\n}\nfunction Gu(h, t, e, n, s, i) {\n let r = n, o = n + s - 1;\n const l = i.pos, u = i.axis * 2;\n for (; ; ) {\n for (; r <= o && e[r * 6 + u] < l; )\n r++;\n for (; r <= o && e[o * 6 + u] >= l; )\n o--;\n if (r < o) {\n let d = h[r];\n h[r] = h[o], h[o] = d;\n for (let m = 0; m < 6; m++) {\n let f = e[r * 6 + m];\n e[r * 6 + m] = e[o * 6 + m], e[o * 6 + m] = f;\n }\n r++, o--;\n } else\n return r;\n }\n}\nfunction Yu(h, t) {\n const e = (h.index ? h.index.count : h.attributes.position.count) / 3, n = e > 2 ** 16, s = n ? 4 : 2, i = t ? new SharedArrayBuffer(e * s) : new ArrayBuffer(e * s), r = n ? new Uint32Array(i) : new Uint16Array(i);\n for (let o = 0, l = r.length; o < l; o++)\n r[o] = o;\n return r;\n}\nfunction Hu(h, t) {\n const e = h.geometry, n = e.index ? e.index.array : null, s = t.maxDepth, i = t.verbose, r = t.maxLeafTris, o = t.strategy, l = t.onProgress, u = vs(e), d = h._indirectBuffer;\n let m = !1;\n const f = new Float32Array(6), g = new Float32Array(6), v = Uu(e, f), y = t.indirect ? Gu : Vu, x = [], A = t.indirect ? Lc(e) : Nc(e);\n if (A.length === 1) {\n const C = A[0], O = new Wi();\n O.boundingData = f, _u(v, C.offset, C.count, g), P(O, C.offset, C.count, g), x.push(O);\n } else\n for (let C of A) {\n const O = new Wi();\n O.boundingData = new Float32Array(6), Bo(v, C.offset, C.count, O.boundingData, g), P(O, C.offset, C.count, g), x.push(O);\n }\n return x;\n function F(C) {\n l && l(C / u);\n }\n function P(C, O, U, Y = null, H = 0) {\n if (!m && H >= s && (m = !0, i && (console.warn(`MeshBVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`), console.warn(e))), U <= r || H >= s)\n return F(O + U), C.offset = O, C.count = U, C;\n const K = ku(C.boundingData, Y, v, O, U, o);\n if (K.axis === -1)\n return F(O + U), C.offset = O, C.count = U, C;\n const Z = y(d, n, v, O, U, K);\n if (Z === O || Z === O + U)\n F(O + U), C.offset = O, C.count = U;\n else {\n C.splitAxis = K.axis;\n const q = new Wi(), ne = O, se = Z - O;\n C.left = q, q.boundingData = new Float32Array(6), Bo(v, ne, se, q.boundingData, g), P(q, ne, se, g, H + 1);\n const he = new Wi(), me = Z, Ie = U - se;\n C.right = he, he.boundingData = new Float32Array(6), Bo(v, me, Ie, he.boundingData, g), P(he, me, Ie, g, H + 1);\n }\n return C;\n }\n}\nfunction Wu(h, t) {\n const e = h.geometry;\n t.indirect && (h._indirectBuffer = Yu(e, t.useSharedArrayBuffer), Lu(e) && !t.verbose && console.warn(\n 'MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the \"indirect\" option. BVH may incorrectly report intersections on unrendered portions of the geometry.'\n )), h._indirectBuffer || Du(e, t);\n const n = Hu(h, t);\n let s, i, r;\n const o = [], l = t.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer;\n for (let m = 0; m < n.length; m++) {\n const f = n[m];\n let g = u(f);\n const v = new l(wr * g);\n s = new Float32Array(v), i = new Uint32Array(v), r = new Uint16Array(v), d(0, f), o.push(v);\n }\n h._roots = o;\n return;\n function u(m) {\n return m.count ? 1 : 1 + u(m.left) + u(m.right);\n }\n function d(m, f) {\n const g = m / 4, v = m / 2, y = !!f.count, x = f.boundingData;\n for (let A = 0; A < 6; A++)\n s[g + A] = x[A];\n if (y) {\n const A = f.offset, F = f.count;\n return i[g + 6] = A, r[v + 14] = F, r[v + 15] = Wr, m + wr;\n } else {\n const A = f.left, F = f.right, P = f.splitAxis;\n let C;\n if (C = d(m + wr, A), C / 4 > Math.pow(2, 32))\n throw new Error(\"MeshBVH: Cannot store child pointer greater than 32 bits.\");\n return i[g + 6] = C / 4, C = d(C, F), i[g + 7] = P, C;\n }\n }\n}\nclass sn {\n constructor() {\n this.min = 1 / 0, this.max = -1 / 0;\n }\n setFromPointsField(t, e) {\n let n = 1 / 0, s = -1 / 0;\n for (let i = 0, r = t.length; i < r; i++) {\n const o = t[i][e];\n n = o < n ? o : n, s = o > s ? o : s;\n }\n this.min = n, this.max = s;\n }\n setFromPoints(t, e) {\n let n = 1 / 0, s = -1 / 0;\n for (let i = 0, r = e.length; i < r; i++) {\n const o = e[i], l = t.dot(o);\n n = l < n ? l : n, s = l > s ? l : s;\n }\n this.min = n, this.max = s;\n }\n isSeparated(t) {\n return this.min > t.max || t.min > this.max;\n }\n}\nsn.prototype.setFromBox = function() {\n const h = new te();\n return function(t, e) {\n const n = e.min, s = e.max;\n let i = 1 / 0, r = -1 / 0;\n for (let o = 0; o <= 1; o++)\n for (let l = 0; l <= 1; l++)\n for (let u = 0; u <= 1; u++) {\n h.x = n.x * o + s.x * (1 - o), h.y = n.y * l + s.y * (1 - l), h.z = n.z * u + s.z * (1 - u);\n const d = t.dot(h);\n i = Math.min(d, i), r = Math.max(d, r);\n }\n this.min = i, this.max = r;\n };\n}();\nconst Ku = function() {\n const h = new te(), t = new te(), e = new te();\n return function(n, s, i) {\n const r = n.start, o = h, l = s.start, u = t;\n e.subVectors(r, l), h.subVectors(n.end, n.start), t.subVectors(s.end, s.start);\n const d = e.dot(u), m = u.dot(o), f = u.dot(u), g = e.dot(o), v = o.dot(o) * f - m * m;\n let y, x;\n v !== 0 ? y = (d * m - g * f) / v : y = 0, x = (d + y * m) / f, i.x = y, i.y = x;\n };\n}(), Ma = function() {\n const h = new at(), t = new te(), e = new te();\n return function(n, s, i, r) {\n Ku(n, s, h);\n let o = h.x, l = h.y;\n if (o >= 0 && o <= 1 && l >= 0 && l <= 1) {\n n.at(o, i), s.at(l, r);\n return;\n } else if (o >= 0 && o <= 1) {\n l < 0 ? s.at(0, r) : s.at(1, r), n.closestPointToPoint(r, !0, i);\n return;\n } else if (l >= 0 && l <= 1) {\n o < 0 ? n.at(0, i) : n.at(1, i), s.closestPointToPoint(i, !0, r);\n return;\n } else {\n let u;\n o < 0 ? u = n.start : u = n.end;\n let d;\n l < 0 ? d = s.start : d = s.end;\n const m = t, f = e;\n if (n.closestPointToPoint(d, !0, t), s.closestPointToPoint(u, !0, e), m.distanceToSquared(d) <= f.distanceToSquared(u)) {\n i.copy(m), r.copy(d);\n return;\n } else {\n i.copy(u), r.copy(f);\n return;\n }\n }\n };\n}(), ju = function() {\n const h = new te(), t = new te(), e = new Fa(), n = new Ot();\n return function(s, i) {\n const { radius: r, center: o } = s, { a: l, b: u, c: d } = i;\n if (n.start = l, n.end = u, n.closestPointToPoint(o, !0, h).distanceTo(o) <= r || (n.start = l, n.end = d, n.closestPointToPoint(o, !0, h).distanceTo(o) <= r) || (n.start = u, n.end = d, n.closestPointToPoint(o, !0, h).distanceTo(o) <= r))\n return !0;\n const m = i.getPlane(e);\n if (Math.abs(m.distanceToPoint(o)) <= r) {\n const f = m.projectPoint(o, t);\n if (i.containsPoint(f))\n return !0;\n }\n return !1;\n };\n}(), Xu = 1e-15;\nfunction ko(h) {\n return Math.abs(h) < Xu;\n}\nclass Lt extends us {\n constructor(...t) {\n super(...t), this.isExtendedTriangle = !0, this.satAxes = new Array(4).fill().map(() => new te()), this.satBounds = new Array(4).fill().map(() => new sn()), this.points = [this.a, this.b, this.c], this.sphere = new Gr(), this.plane = new Fa(), this.needsUpdate = !0;\n }\n intersectsSphere(t) {\n return ju(t, this);\n }\n update() {\n const t = this.a, e = this.b, n = this.c, s = this.points, i = this.satAxes, r = this.satBounds, o = i[0], l = r[0];\n this.getNormal(o), l.setFromPoints(o, s);\n const u = i[1], d = r[1];\n u.subVectors(t, e), d.setFromPoints(u, s);\n const m = i[2], f = r[2];\n m.subVectors(e, n), f.setFromPoints(m, s);\n const g = i[3], v = r[3];\n g.subVectors(n, t), v.setFromPoints(g, s), this.sphere.setFromPoints(this.points), this.plane.setFromNormalAndCoplanarPoint(o, t), this.needsUpdate = !1;\n }\n}\nLt.prototype.closestPointToSegment = function() {\n const h = new te(), t = new te(), e = new Ot();\n return function(n, s = null, i = null) {\n const { start: r, end: o } = n, l = this.points;\n let u, d = 1 / 0;\n for (let m = 0; m < 3; m++) {\n const f = (m + 1) % 3;\n e.start.copy(l[m]), e.end.copy(l[f]), Ma(e, n, h, t), u = h.distanceToSquared(t), u < d && (d = u, s && s.copy(h), i && i.copy(t));\n }\n return this.closestPointToPoint(r, h), u = r.distanceToSquared(h), u < d && (d = u, s && s.copy(h), i && i.copy(r)), this.closestPointToPoint(o, h), u = o.distanceToSquared(h), u < d && (d = u, s && s.copy(h), i && i.copy(o)), Math.sqrt(d);\n };\n}();\nLt.prototype.intersectsTriangle = function() {\n const h = new Lt(), t = new Array(3), e = new Array(3), n = new sn(), s = new sn(), i = new te(), r = new te(), o = new te(), l = new te(), u = new te(), d = new Ot(), m = new Ot(), f = new Ot(), g = new te();\n function v(y, x, A) {\n const F = y.points;\n let P = 0, C = -1;\n for (let O = 0; O < 3; O++) {\n const { start: U, end: Y } = d;\n U.copy(F[O]), Y.copy(F[(O + 1) % 3]), d.delta(r);\n const H = ko(x.distanceToPoint(U));\n if (ko(x.normal.dot(r)) && H) {\n A.copy(d), P = 2;\n break;\n }\n const K = x.intersectLine(d, g);\n if (!K && H && g.copy(U), (K || H) && !ko(g.distanceTo(Y))) {\n if (P <= 1)\n (P === 1 ? A.start : A.end).copy(g), H && (C = P);\n else if (P >= 2) {\n (C === 1 ? A.start : A.end).copy(g), P = 2;\n break;\n }\n if (P++, P === 2 && C === -1)\n break;\n }\n }\n return P;\n }\n return function(y, x = null, A = !1) {\n this.needsUpdate && this.update(), y.isExtendedTriangle ? y.needsUpdate && y.update() : (h.copy(y), h.update(), y = h);\n const F = this.plane, P = y.plane;\n if (Math.abs(F.normal.dot(P.normal)) > 1 - 1e-10) {\n const C = this.satBounds, O = this.satAxes;\n e[0] = y.a, e[1] = y.b, e[2] = y.c;\n for (let H = 0; H < 4; H++) {\n const K = C[H], Z = O[H];\n if (n.setFromPoints(Z, e), K.isSeparated(n))\n return !1;\n }\n const U = y.satBounds, Y = y.satAxes;\n t[0] = this.a, t[1] = this.b, t[2] = this.c;\n for (let H = 0; H < 4; H++) {\n const K = U[H], Z = Y[H];\n if (n.setFromPoints(Z, t), K.isSeparated(n))\n return !1;\n }\n for (let H = 0; H < 4; H++) {\n const K = O[H];\n for (let Z = 0; Z < 4; Z++) {\n const q = Y[Z];\n if (i.crossVectors(K, q), n.setFromPoints(i, t), s.setFromPoints(i, e), n.isSeparated(s))\n return !1;\n }\n }\n return x && (A || console.warn(\"ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0.\"), x.start.set(0, 0, 0), x.end.set(0, 0, 0)), !0;\n } else {\n const C = v(this, P, m);\n if (C === 1 && y.containsPoint(m.end))\n return x && (x.start.copy(m.end), x.end.copy(m.end)), !0;\n if (C !== 2)\n return !1;\n const O = v(y, F, f);\n if (O === 1 && this.containsPoint(f.end))\n return x && (x.start.copy(f.end), x.end.copy(f.end)), !0;\n if (O !== 2)\n return !1;\n if (m.delta(o), f.delta(l), o.dot(l) < 0) {\n let ne = f.start;\n f.start = f.end, f.end = ne;\n }\n const U = m.start.dot(o), Y = m.end.dot(o), H = f.start.dot(o), K = f.end.dot(o), Z = Y < H, q = U < K;\n return U !== K && H !== Y && Z === q ? !1 : (x && (u.subVectors(m.start, f.start), u.dot(o) > 0 ? x.start.copy(m.start) : x.start.copy(f.start), u.subVectors(m.end, f.end), u.dot(o) < 0 ? x.end.copy(m.end) : x.end.copy(f.end)), !0);\n }\n };\n}();\nLt.prototype.distanceToPoint = function() {\n const h = new te();\n return function(t) {\n return this.closestPointToPoint(t, h), t.distanceTo(h);\n };\n}();\nLt.prototype.distanceToTriangle = function() {\n const h = new te(), t = new te(), e = [\"a\", \"b\", \"c\"], n = new Ot(), s = new Ot();\n return function(i, r = null, o = null) {\n const l = r || o ? n : null;\n if (this.intersectsTriangle(i, l))\n return (r || o) && (r && l.getCenter(r), o && l.getCenter(o)), 0;\n let u = 1 / 0;\n for (let d = 0; d < 3; d++) {\n let m;\n const f = e[d], g = i[f];\n this.closestPointToPoint(g, h), m = g.distanceToSquared(h), m < u && (u = m, r && r.copy(h), o && o.copy(g));\n const v = this[f];\n i.closestPointToPoint(v, h), m = v.distanceToSquared(h), m < u && (u = m, r && r.copy(v), o && o.copy(h));\n }\n for (let d = 0; d < 3; d++) {\n const m = e[d], f = e[(d + 1) % 3];\n n.set(this[m], this[f]);\n for (let g = 0; g < 3; g++) {\n const v = e[g], y = e[(g + 1) % 3];\n s.set(i[v], i[y]), Ma(n, s, h, t);\n const x = h.distanceToSquared(t);\n x < u && (u = x, r && r.copy(h), o && o.copy(t));\n }\n }\n return Math.sqrt(u);\n };\n}();\nclass ht {\n constructor(t, e, n) {\n this.isOrientedBox = !0, this.min = new te(), this.max = new te(), this.matrix = new Ne(), this.invMatrix = new Ne(), this.points = new Array(8).fill().map(() => new te()), this.satAxes = new Array(3).fill().map(() => new te()), this.satBounds = new Array(3).fill().map(() => new sn()), this.alignedSatBounds = new Array(3).fill().map(() => new sn()), this.needsUpdate = !1, t && this.min.copy(t), e && this.max.copy(e), n && this.matrix.copy(n);\n }\n set(t, e, n) {\n this.min.copy(t), this.max.copy(e), this.matrix.copy(n), this.needsUpdate = !0;\n }\n copy(t) {\n this.min.copy(t.min), this.max.copy(t.max), this.matrix.copy(t.matrix), this.needsUpdate = !0;\n }\n}\nht.prototype.update = /* @__PURE__ */ function() {\n return function() {\n const h = this.matrix, t = this.min, e = this.max, n = this.points;\n for (let l = 0; l <= 1; l++)\n for (let u = 0; u <= 1; u++)\n for (let d = 0; d <= 1; d++) {\n const m = 1 * l | 2 * u | 4 * d, f = n[m];\n f.x = l ? e.x : t.x, f.y = u ? e.y : t.y, f.z = d ? e.z : t.z, f.applyMatrix4(h);\n }\n const s = this.satBounds, i = this.satAxes, r = n[0];\n for (let l = 0; l < 3; l++) {\n const u = i[l], d = s[l], m = 1 << l, f = n[m];\n u.subVectors(r, f), d.setFromPoints(u, n);\n }\n const o = this.alignedSatBounds;\n o[0].setFromPointsField(n, \"x\"), o[1].setFromPointsField(n, \"y\"), o[2].setFromPointsField(n, \"z\"), this.invMatrix.copy(this.matrix).invert(), this.needsUpdate = !1;\n };\n}();\nht.prototype.intersectsBox = function() {\n const h = new sn();\n return function(t) {\n this.needsUpdate && this.update();\n const e = t.min, n = t.max, s = this.satBounds, i = this.satAxes, r = this.alignedSatBounds;\n if (h.min = e.x, h.max = n.x, r[0].isSeparated(h) || (h.min = e.y, h.max = n.y, r[1].isSeparated(h)) || (h.min = e.z, h.max = n.z, r[2].isSeparated(h)))\n return !1;\n for (let o = 0; o < 3; o++) {\n const l = i[o], u = s[o];\n if (h.setFromBox(l, t), u.isSeparated(h))\n return !1;\n }\n return !0;\n };\n}();\nht.prototype.intersectsTriangle = function() {\n const h = new Lt(), t = new Array(3), e = new sn(), n = new sn(), s = new te();\n return function(i) {\n this.needsUpdate && this.update(), i.isExtendedTriangle ? i.needsUpdate && i.update() : (h.copy(i), h.update(), i = h);\n const r = this.satBounds, o = this.satAxes;\n t[0] = i.a, t[1] = i.b, t[2] = i.c;\n for (let m = 0; m < 3; m++) {\n const f = r[m], g = o[m];\n if (e.setFromPoints(g, t), f.isSeparated(e))\n return !1;\n }\n const l = i.satBounds, u = i.satAxes, d = this.points;\n for (let m = 0; m < 3; m++) {\n const f = l[m], g = u[m];\n if (e.setFromPoints(g, d), f.isSeparated(e))\n return !1;\n }\n for (let m = 0; m < 3; m++) {\n const f = o[m];\n for (let g = 0; g < 4; g++) {\n const v = u[g];\n if (s.crossVectors(f, v), e.setFromPoints(s, t), n.setFromPoints(s, d), e.isSeparated(n))\n return !1;\n }\n }\n return !0;\n };\n}();\nht.prototype.closestPointToPoint = /* @__PURE__ */ function() {\n return function(h, t) {\n return this.needsUpdate && this.update(), t.copy(h).applyMatrix4(this.invMatrix).clamp(this.min, this.max).applyMatrix4(this.matrix), t;\n };\n}();\nht.prototype.distanceToPoint = function() {\n const h = new te();\n return function(t) {\n return this.closestPointToPoint(t, h), t.distanceTo(h);\n };\n}();\nht.prototype.distanceToBox = function() {\n const h = [\"x\", \"y\", \"z\"], t = new Array(12).fill().map(() => new Ot()), e = new Array(12).fill().map(() => new Ot()), n = new te(), s = new te();\n return function(i, r = 0, o = null, l = null) {\n if (this.needsUpdate && this.update(), this.intersectsBox(i))\n return (o || l) && (i.getCenter(s), this.closestPointToPoint(s, n), i.closestPointToPoint(n, s), o && o.copy(n), l && l.copy(s)), 0;\n const u = r * r, d = i.min, m = i.max, f = this.points;\n let g = 1 / 0;\n for (let y = 0; y < 8; y++) {\n const x = f[y];\n s.copy(x).clamp(d, m);\n const A = x.distanceToSquared(s);\n if (A < g && (g = A, o && o.copy(x), l && l.copy(s), A < u))\n return Math.sqrt(A);\n }\n let v = 0;\n for (let y = 0; y < 3; y++)\n for (let x = 0; x <= 1; x++)\n for (let A = 0; A <= 1; A++) {\n const F = (y + 1) % 3, P = (y + 2) % 3, C = x << F | A << P, O = 1 << y | x << F | A << P, U = f[C], Y = f[O];\n t[v].set(U, Y);\n const H = h[y], K = h[F], Z = h[P], q = e[v], ne = q.start, se = q.end;\n ne[H] = d[H], ne[K] = x ? d[K] : m[K], ne[Z] = A ? d[Z] : m[K], se[H] = m[H], se[K] = x ? d[K] : m[K], se[Z] = A ? d[Z] : m[K], v++;\n }\n for (let y = 0; y <= 1; y++)\n for (let x = 0; x <= 1; x++)\n for (let A = 0; A <= 1; A++) {\n s.x = y ? m.x : d.x, s.y = x ? m.y : d.y, s.z = A ? m.z : d.z, this.closestPointToPoint(s, n);\n const F = s.distanceToSquared(n);\n if (F < g && (g = F, o && o.copy(n), l && l.copy(s), F < u))\n return Math.sqrt(F);\n }\n for (let y = 0; y < 12; y++) {\n const x = t[y];\n for (let A = 0; A < 12; A++) {\n const F = e[A];\n Ma(x, F, n, s);\n const P = n.distanceToSquared(s);\n if (P < g && (g = P, o && o.copy(n), l && l.copy(s), P < u))\n return Math.sqrt(P);\n }\n }\n return Math.sqrt(g);\n };\n}();\nclass Oa {\n constructor(t) {\n this._getNewPrimitive = t, this._primitives = [];\n }\n getPrimitive() {\n const t = this._primitives;\n return t.length === 0 ? this._getNewPrimitive() : t.pop();\n }\n releasePrimitive(t) {\n this._primitives.push(t);\n }\n}\nclass Zu extends Oa {\n constructor() {\n super(() => new Lt());\n }\n}\nconst wt = /* @__PURE__ */ new Zu();\nfunction gt(h, t) {\n return t[h + 15] === 65535;\n}\nfunction Et(h, t) {\n return t[h + 6];\n}\nfunction Ct(h, t) {\n return t[h + 14];\n}\nfunction Tt(h) {\n return h + 8;\n}\nfunction bt(h, t) {\n return t[h + 6];\n}\nfunction _c(h, t) {\n return t[h + 7];\n}\nclass Qu {\n constructor() {\n this.float32Array = null, this.uint16Array = null, this.uint32Array = null;\n const t = [];\n let e = null;\n this.setBuffer = (n) => {\n e && t.push(e), e = n, this.float32Array = new Float32Array(n), this.uint16Array = new Uint16Array(n), this.uint32Array = new Uint32Array(n);\n }, this.clearBuffer = () => {\n e = null, this.float32Array = null, this.uint16Array = null, this.uint32Array = null, t.length !== 0 && this.setBuffer(t.pop());\n };\n }\n}\nconst ze = new Qu();\nlet In, fs;\nconst Zn = [], Ki = /* @__PURE__ */ new Oa(() => new pt());\nfunction qu(h, t, e, n, s, i) {\n In = Ki.getPrimitive(), fs = Ki.getPrimitive(), Zn.push(In, fs), ze.setBuffer(h._roots[t]);\n const r = aa(0, h.geometry, e, n, s, i);\n ze.clearBuffer(), Ki.releasePrimitive(In), Ki.releasePrimitive(fs), Zn.pop(), Zn.pop();\n const o = Zn.length;\n return o > 0 && (fs = Zn[o - 1], In = Zn[o - 2]), r;\n}\nfunction aa(h, t, e, n, s = null, i = 0, r = 0) {\n const { float32Array: o, uint16Array: l, uint32Array: u } = ze;\n let d = h * 2;\n if (gt(d, l)) {\n const m = Et(h, u), f = Ct(d, l);\n return He(h, o, In), n(m, f, !1, r, i + h, In);\n } else {\n let m = function(q) {\n const { uint16Array: ne, uint32Array: se } = ze;\n let he = q * 2;\n for (; !gt(he, ne); )\n q = Tt(q), he = q * 2;\n return Et(q, se);\n }, f = function(q) {\n const { uint16Array: ne, uint32Array: se } = ze;\n let he = q * 2;\n for (; !gt(he, ne); )\n q = bt(q, se), he = q * 2;\n return Et(q, se) + Ct(he, ne);\n };\n const g = Tt(h), v = bt(h, u);\n let y = g, x = v, A, F, P, C;\n if (s && (P = In, C = fs, He(y, o, P), He(x, o, C), A = s(P), F = s(C), F < A)) {\n y = v, x = g;\n const q = A;\n A = F, F = q, P = C;\n }\n P || (P = In, He(y, o, P));\n const O = gt(y * 2, l), U = e(P, O, A, r + 1, i + y);\n let Y;\n if (U === Il) {\n const q = m(y), ne = f(y) - q;\n Y = n(q, ne, !0, r + 1, i + y, P);\n } else\n Y = U && aa(\n y,\n t,\n e,\n n,\n s,\n i,\n r + 1\n );\n if (Y)\n return !0;\n C = fs, He(x, o, C);\n const H = gt(x * 2, l), K = e(C, H, F, r + 1, i + x);\n let Z;\n if (K === Il) {\n const q = m(x), ne = f(x) - q;\n Z = n(q, ne, !0, r + 1, i + x, C);\n } else\n Z = K && aa(\n x,\n t,\n e,\n n,\n s,\n i,\n r + 1\n );\n return !!Z;\n }\n}\nconst zs = /* @__PURE__ */ new te(), zo = /* @__PURE__ */ new te();\nfunction Ju(h, t, e = {}, n = 0, s = 1 / 0) {\n const i = n * n, r = s * s;\n let o = 1 / 0, l = null;\n if (h.shapecast(\n {\n boundsTraverseOrder: (d) => (zs.copy(t).clamp(d.min, d.max), zs.distanceToSquared(t)),\n intersectsBounds: (d, m, f) => f < o && f < r,\n intersectsTriangle: (d, m) => {\n d.closestPointToPoint(t, zs);\n const f = t.distanceToSquared(zs);\n return f < o && (zo.copy(zs), o = f, l = m), f < i;\n }\n }\n ), o === 1 / 0)\n return null;\n const u = Math.sqrt(o);\n return e.point ? e.point.copy(zo) : e.point = zo.clone(), e.distance = u, e.faceIndex = l, e;\n}\nconst Qn = /* @__PURE__ */ new te(), qn = /* @__PURE__ */ new te(), Jn = /* @__PURE__ */ new te(), ji = /* @__PURE__ */ new at(), Xi = /* @__PURE__ */ new at(), Zi = /* @__PURE__ */ new at(), bl = /* @__PURE__ */ new te(), xl = /* @__PURE__ */ new te(), Sl = /* @__PURE__ */ new te(), Qi = /* @__PURE__ */ new te();\nfunction $u(h, t, e, n, s, i) {\n let r;\n return i === cu ? r = h.intersectTriangle(n, e, t, !0, s) : r = h.intersectTriangle(t, e, n, i !== Pc, s), r === null ? null : {\n distance: h.origin.distanceTo(s),\n point: s.clone()\n };\n}\nfunction ed(h, t, e, n, s, i, r, o, l) {\n Qn.fromBufferAttribute(t, i), qn.fromBufferAttribute(t, r), Jn.fromBufferAttribute(t, o);\n const u = $u(h, Qn, qn, Jn, Qi, l);\n if (u) {\n n && (ji.fromBufferAttribute(n, i), Xi.fromBufferAttribute(n, r), Zi.fromBufferAttribute(n, o), u.uv = us.getInterpolation(Qi, Qn, qn, Jn, ji, Xi, Zi, new at())), s && (ji.fromBufferAttribute(s, i), Xi.fromBufferAttribute(s, r), Zi.fromBufferAttribute(s, o), u.uv1 = us.getInterpolation(Qi, Qn, qn, Jn, ji, Xi, Zi, new at())), e && (bl.fromBufferAttribute(e, i), xl.fromBufferAttribute(e, r), Sl.fromBufferAttribute(e, o), u.normal = us.getInterpolation(Qi, Qn, qn, Jn, bl, xl, Sl, new te()), u.normal.dot(h.direction) > 0 && u.normal.multiplyScalar(-1));\n const d = {\n a: i,\n b: r,\n c: o,\n normal: new te(),\n materialIndex: 0\n };\n us.getNormal(Qn, qn, Jn, d.normal), u.face = d, u.faceIndex = i;\n }\n return u;\n}\nfunction Kr(h, t, e, n, s) {\n const i = n * 3;\n let r = i + 0, o = i + 1, l = i + 2;\n const u = h.index;\n h.index && (r = u.getX(r), o = u.getX(o), l = u.getX(l));\n const { position: d, normal: m, uv: f, uv1: g } = h.attributes, v = ed(e, d, m, f, g, r, o, l, t);\n return v ? (v.faceIndex = n, s && s.push(v), v) : null;\n}\nfunction Qe(h, t, e, n) {\n const s = h.a, i = h.b, r = h.c;\n let o = t, l = t + 1, u = t + 2;\n e && (o = e.getX(o), l = e.getX(l), u = e.getX(u)), s.x = n.getX(o), s.y = n.getY(o), s.z = n.getZ(o), i.x = n.getX(l), i.y = n.getY(l), i.z = n.getZ(l), r.x = n.getX(u), r.y = n.getY(u), r.z = n.getZ(u);\n}\nfunction td(h, t, e, n, s, i) {\n const { geometry: r, _indirectBuffer: o } = h;\n for (let l = n, u = n + s; l < u; l++)\n Kr(r, t, e, l, i);\n}\nfunction nd(h, t, e, n, s) {\n const { geometry: i, _indirectBuffer: r } = h;\n let o = 1 / 0, l = null;\n for (let u = n, d = n + s; u < d; u++) {\n let m;\n m = Kr(i, t, e, u), m && m.distance < o && (l = m, o = m.distance);\n }\n return l;\n}\nfunction sd(h, t, e, n, s, i, r) {\n const { geometry: o } = e, { index: l } = o, u = o.attributes.position;\n for (let d = h, m = t + h; d < m; d++) {\n let f;\n if (f = d, Qe(r, f * 3, l, u), r.needsUpdate = !0, n(r, f, s, i))\n return !0;\n }\n return !1;\n}\nfunction id(h, t = null) {\n t && Array.isArray(t) && (t = new Set(t));\n const e = h.geometry, n = e.index ? e.index.array : null, s = e.attributes.position;\n let i, r, o, l, u = 0;\n const d = h._roots;\n for (let f = 0, g = d.length; f < g; f++)\n i = d[f], r = new Uint32Array(i), o = new Uint16Array(i), l = new Float32Array(i), m(0, u), u += i.byteLength;\n function m(f, g, v = !1) {\n const y = f * 2;\n if (o[y + 15] === Wr) {\n const x = r[f + 6], A = o[y + 14];\n let F = 1 / 0, P = 1 / 0, C = 1 / 0, O = -1 / 0, U = -1 / 0, Y = -1 / 0;\n for (let H = 3 * x, K = 3 * (x + A); H < K; H++) {\n let Z = n[H];\n const q = s.getX(Z), ne = s.getY(Z), se = s.getZ(Z);\n q < F && (F = q), q > O && (O = q), ne < P && (P = ne), ne > U && (U = ne), se < C && (C = se), se > Y && (Y = se);\n }\n return l[f + 0] !== F || l[f + 1] !== P || l[f + 2] !== C || l[f + 3] !== O || l[f + 4] !== U || l[f + 5] !== Y ? (l[f + 0] = F, l[f + 1] = P, l[f + 2] = C, l[f + 3] = O, l[f + 4] = U, l[f + 5] = Y, !0) : !1;\n } else {\n const x = f + 8, A = r[f + 6], F = x + g, P = A + g;\n let C = v, O = !1, U = !1;\n t ? C || (O = t.has(F), U = t.has(P), C = !O && !U) : (O = !0, U = !0);\n const Y = C || O, H = C || U;\n let K = !1;\n Y && (K = m(x, g, C));\n let Z = !1;\n H && (Z = m(A, g, C));\n const q = K || Z;\n if (q)\n for (let ne = 0; ne < 3; ne++) {\n const se = x + ne, he = A + ne, me = l[se], Ie = l[se + 3], Ee = l[he], ue = l[he + 3];\n l[f + ne] = me < Ee ? me : Ee, l[f + ne + 3] = Ie > ue ? Ie : ue;\n }\n return q;\n }\n }\n}\nconst Al = /* @__PURE__ */ new pt();\nfunction wn(h, t, e, n) {\n return He(h, t, Al), e.intersectBox(Al, n);\n}\nfunction rd(h, t, e, n, s, i) {\n const { geometry: r, _indirectBuffer: o } = h;\n for (let l = n, u = n + s; l < u; l++) {\n let d = o ? o[l] : l;\n Kr(r, t, e, d, i);\n }\n}\nfunction od(h, t, e, n, s) {\n const { geometry: i, _indirectBuffer: r } = h;\n let o = 1 / 0, l = null;\n for (let u = n, d = n + s; u < d; u++) {\n let m;\n m = Kr(i, t, e, r ? r[u] : u), m && m.distance < o && (l = m, o = m.distance);\n }\n return l;\n}\nfunction ad(h, t, e, n, s, i, r) {\n const { geometry: o } = e, { index: l } = o, u = o.attributes.position;\n for (let d = h, m = t + h; d < m; d++) {\n let f;\n if (f = e.resolveTriangleIndex(d), Qe(r, f * 3, l, u), r.needsUpdate = !0, n(r, f, s, i))\n return !0;\n }\n return !1;\n}\nconst Rl = /* @__PURE__ */ new te();\nfunction ld(h, t, e, n, s) {\n ze.setBuffer(h._roots[t]), la(0, h, e, n, s), ze.clearBuffer();\n}\nfunction la(h, t, e, n, s) {\n const { float32Array: i, uint16Array: r, uint32Array: o } = ze, l = h * 2;\n if (gt(l, r)) {\n const u = Et(h, o), d = Ct(l, r);\n td(t, e, n, u, d, s);\n } else {\n const u = Tt(h);\n wn(u, i, n, Rl) && la(u, t, e, n, s);\n const d = bt(h, o);\n wn(d, i, n, Rl) && la(d, t, e, n, s);\n }\n}\nconst Fl = /* @__PURE__ */ new te(), cd = [\"x\", \"y\", \"z\"];\nfunction hd(h, t, e, n) {\n ze.setBuffer(h._roots[t]);\n const s = ca(0, h, e, n);\n return ze.clearBuffer(), s;\n}\nfunction ca(h, t, e, n) {\n const { float32Array: s, uint16Array: i, uint32Array: r } = ze;\n let o = h * 2;\n if (gt(o, i)) {\n const l = Et(h, r), u = Ct(o, i);\n return nd(t, e, n, l, u);\n } else {\n const l = _c(h, r), u = cd[l], d = n.direction[u] >= 0;\n let m, f;\n d ? (m = Tt(h), f = bt(h, r)) : (m = bt(h, r), f = Tt(h));\n const g = wn(m, s, n, Fl) ? ca(m, t, e, n) : null;\n if (g) {\n const y = g.point[u];\n if (d ? y <= s[f + l] : (\n // min bounding data\n y >= s[f + l + 3]\n ))\n return g;\n }\n const v = wn(f, s, n, Fl) ? ca(f, t, e, n) : null;\n return g && v ? g.distance <= v.distance ? g : v : g || v || null;\n }\n}\nconst qi = /* @__PURE__ */ new pt(), $n = /* @__PURE__ */ new Lt(), es = /* @__PURE__ */ new Lt(), Vs = /* @__PURE__ */ new Ne(), Pl = /* @__PURE__ */ new ht(), Ji = /* @__PURE__ */ new ht();\nfunction ud(h, t, e, n) {\n ze.setBuffer(h._roots[t]);\n const s = ha(0, h, e, n);\n return ze.clearBuffer(), s;\n}\nfunction ha(h, t, e, n, s = null) {\n const { float32Array: i, uint16Array: r, uint32Array: o } = ze;\n let l = h * 2;\n if (s === null && (e.boundingBox || e.computeBoundingBox(), Pl.set(e.boundingBox.min, e.boundingBox.max, n), s = Pl), gt(l, r)) {\n const u = t.geometry, d = u.index, m = u.attributes.position, f = e.index, g = e.attributes.position, v = Et(h, o), y = Ct(l, r);\n if (Vs.copy(n).invert(), e.boundsTree)\n return He(h, i, Ji), Ji.matrix.copy(Vs), Ji.needsUpdate = !0, e.boundsTree.shapecast({\n intersectsBounds: (x) => Ji.intersectsBox(x),\n intersectsTriangle: (x) => {\n x.a.applyMatrix4(n), x.b.applyMatrix4(n), x.c.applyMatrix4(n), x.needsUpdate = !0;\n for (let A = v * 3, F = (y + v) * 3; A < F; A += 3)\n if (Qe(es, A, d, m), es.needsUpdate = !0, x.intersectsTriangle(es))\n return !0;\n return !1;\n }\n });\n for (let x = v * 3, A = (y + v) * 3; x < A; x += 3) {\n Qe($n, x, d, m), $n.a.applyMatrix4(Vs), $n.b.applyMatrix4(Vs), $n.c.applyMatrix4(Vs), $n.needsUpdate = !0;\n for (let F = 0, P = f.count; F < P; F += 3)\n if (Qe(es, F, f, g), es.needsUpdate = !0, $n.intersectsTriangle(es))\n return !0;\n }\n } else {\n const u = h + 8, d = o[h + 6];\n return He(u, i, qi), !!(s.intersectsBox(qi) && ha(u, t, e, n, s) || (He(d, i, qi), s.intersectsBox(qi) && ha(d, t, e, n, s)));\n }\n}\nconst $i = /* @__PURE__ */ new Ne(), Vo = /* @__PURE__ */ new ht(), Gs = /* @__PURE__ */ new ht(), dd = /* @__PURE__ */ new te(), fd = /* @__PURE__ */ new te(), pd = /* @__PURE__ */ new te(), md = /* @__PURE__ */ new te();\nfunction gd(h, t, e, n = {}, s = {}, i = 0, r = 1 / 0) {\n t.boundingBox || t.computeBoundingBox(), Vo.set(t.boundingBox.min, t.boundingBox.max, e), Vo.needsUpdate = !0;\n const o = h.geometry, l = o.attributes.position, u = o.index, d = t.attributes.position, m = t.index, f = wt.getPrimitive(), g = wt.getPrimitive();\n let v = dd, y = fd, x = null, A = null;\n s && (x = pd, A = md);\n let F = 1 / 0, P = null, C = null;\n return $i.copy(e).invert(), Gs.matrix.copy($i), h.shapecast(\n {\n boundsTraverseOrder: (O) => Vo.distanceToBox(O),\n intersectsBounds: (O, U, Y) => Y < F && Y < r ? (U && (Gs.min.copy(O.min), Gs.max.copy(O.max), Gs.needsUpdate = !0), !0) : !1,\n intersectsRange: (O, U) => {\n if (t.boundsTree)\n return t.boundsTree.shapecast({\n boundsTraverseOrder: (Y) => Gs.distanceToBox(Y),\n intersectsBounds: (Y, H, K) => K < F && K < r,\n intersectsRange: (Y, H) => {\n for (let K = Y, Z = Y + H; K < Z; K++) {\n Qe(g, 3 * K, m, d), g.a.applyMatrix4(e), g.b.applyMatrix4(e), g.c.applyMatrix4(e), g.needsUpdate = !0;\n for (let q = O, ne = O + U; q < ne; q++) {\n Qe(f, 3 * q, u, l), f.needsUpdate = !0;\n const se = f.distanceToTriangle(g, v, x);\n if (se < F && (y.copy(v), A && A.copy(x), F = se, P = q, C = K), se < i)\n return !0;\n }\n }\n }\n });\n {\n const Y = vs(t);\n for (let H = 0, K = Y; H < K; H++) {\n Qe(g, 3 * H, m, d), g.a.applyMatrix4(e), g.b.applyMatrix4(e), g.c.applyMatrix4(e), g.needsUpdate = !0;\n for (let Z = O, q = O + U; Z < q; Z++) {\n Qe(f, 3 * Z, u, l), f.needsUpdate = !0;\n const ne = f.distanceToTriangle(g, v, x);\n if (ne < F && (y.copy(v), A && A.copy(x), F = ne, P = Z, C = H), ne < i)\n return !0;\n }\n }\n }\n }\n }\n ), wt.releasePrimitive(f), wt.releasePrimitive(g), F === 1 / 0 ? null : (n.point ? n.point.copy(y) : n.point = y.clone(), n.distance = F, n.faceIndex = P, s && (s.point ? s.point.copy(A) : s.point = A.clone(), s.point.applyMatrix4($i), y.applyMatrix4($i), s.distance = y.sub(s.point).length(), s.faceIndex = C), n);\n}\nfunction Ed(h, t = null) {\n t && Array.isArray(t) && (t = new Set(t));\n const e = h.geometry, n = e.index ? e.index.array : null, s = e.attributes.position;\n let i, r, o, l, u = 0;\n const d = h._roots;\n for (let f = 0, g = d.length; f < g; f++)\n i = d[f], r = new Uint32Array(i), o = new Uint16Array(i), l = new Float32Array(i), m(0, u), u += i.byteLength;\n function m(f, g, v = !1) {\n const y = f * 2;\n if (o[y + 15] === Wr) {\n const x = r[f + 6], A = o[y + 14];\n let F = 1 / 0, P = 1 / 0, C = 1 / 0, O = -1 / 0, U = -1 / 0, Y = -1 / 0;\n for (let H = x, K = x + A; H < K; H++) {\n const Z = 3 * h.resolveTriangleIndex(H);\n for (let q = 0; q < 3; q++) {\n let ne = Z + q;\n ne = n ? n[ne] : ne;\n const se = s.getX(ne), he = s.getY(ne), me = s.getZ(ne);\n se < F && (F = se), se > O && (O = se), he < P && (P = he), he > U && (U = he), me < C && (C = me), me > Y && (Y = me);\n }\n }\n return l[f + 0] !== F || l[f + 1] !== P || l[f + 2] !== C || l[f + 3] !== O || l[f + 4] !== U || l[f + 5] !== Y ? (l[f + 0] = F, l[f + 1] = P, l[f + 2] = C, l[f + 3] = O, l[f + 4] = U, l[f + 5] = Y, !0) : !1;\n } else {\n const x = f + 8, A = r[f + 6], F = x + g, P = A + g;\n let C = v, O = !1, U = !1;\n t ? C || (O = t.has(F), U = t.has(P), C = !O && !U) : (O = !0, U = !0);\n const Y = C || O, H = C || U;\n let K = !1;\n Y && (K = m(x, g, C));\n let Z = !1;\n H && (Z = m(A, g, C));\n const q = K || Z;\n if (q)\n for (let ne = 0; ne < 3; ne++) {\n const se = x + ne, he = A + ne, me = l[se], Ie = l[se + 3], Ee = l[he], ue = l[he + 3];\n l[f + ne] = me < Ee ? me : Ee, l[f + ne + 3] = Ie > ue ? Ie : ue;\n }\n return q;\n }\n }\n}\nconst Ml = /* @__PURE__ */ new te();\nfunction vd(h, t, e, n, s) {\n ze.setBuffer(h._roots[t]), ua(0, h, e, n, s), ze.clearBuffer();\n}\nfunction ua(h, t, e, n, s) {\n const { float32Array: i, uint16Array: r, uint32Array: o } = ze, l = h * 2;\n if (gt(l, r)) {\n const u = Et(h, o), d = Ct(l, r);\n rd(t, e, n, u, d, s);\n } else {\n const u = Tt(h);\n wn(u, i, n, Ml) && ua(u, t, e, n, s);\n const d = bt(h, o);\n wn(d, i, n, Ml) && ua(d, t, e, n, s);\n }\n}\nconst Ol = /* @__PURE__ */ new te(), Id = [\"x\", \"y\", \"z\"];\nfunction yd(h, t, e, n) {\n ze.setBuffer(h._roots[t]);\n const s = da(0, h, e, n);\n return ze.clearBuffer(), s;\n}\nfunction da(h, t, e, n) {\n const { float32Array: s, uint16Array: i, uint32Array: r } = ze;\n let o = h * 2;\n if (gt(o, i)) {\n const l = Et(h, r), u = Ct(o, i);\n return od(t, e, n, l, u);\n } else {\n const l = _c(h, r), u = Id[l], d = n.direction[u] >= 0;\n let m, f;\n d ? (m = Tt(h), f = bt(h, r)) : (m = bt(h, r), f = Tt(h));\n const g = wn(m, s, n, Ol) ? da(m, t, e, n) : null;\n if (g) {\n const y = g.point[u];\n if (d ? y <= s[f + l] : (\n // min bounding data\n y >= s[f + l + 3]\n ))\n return g;\n }\n const v = wn(f, s, n, Ol) ? da(f, t, e, n) : null;\n return g && v ? g.distance <= v.distance ? g : v : g || v || null;\n }\n}\nconst er = /* @__PURE__ */ new pt(), ts = /* @__PURE__ */ new Lt(), ns = /* @__PURE__ */ new Lt(), Ys = /* @__PURE__ */ new Ne(), Dl = /* @__PURE__ */ new ht(), tr = /* @__PURE__ */ new ht();\nfunction wd(h, t, e, n) {\n ze.setBuffer(h._roots[t]);\n const s = fa(0, h, e, n);\n return ze.clearBuffer(), s;\n}\nfunction fa(h, t, e, n, s = null) {\n const { float32Array: i, uint16Array: r, uint32Array: o } = ze;\n let l = h * 2;\n if (s === null && (e.boundingBox || e.computeBoundingBox(), Dl.set(e.boundingBox.min, e.boundingBox.max, n), s = Dl), gt(l, r)) {\n const u = t.geometry, d = u.index, m = u.attributes.position, f = e.index, g = e.attributes.position, v = Et(h, o), y = Ct(l, r);\n if (Ys.copy(n).invert(), e.boundsTree)\n return He(h, i, tr), tr.matrix.copy(Ys), tr.needsUpdate = !0, e.boundsTree.shapecast({\n intersectsBounds: (x) => tr.intersectsBox(x),\n intersectsTriangle: (x) => {\n x.a.applyMatrix4(n), x.b.applyMatrix4(n), x.c.applyMatrix4(n), x.needsUpdate = !0;\n for (let A = v, F = y + v; A < F; A++)\n if (Qe(ns, 3 * t.resolveTriangleIndex(A), d, m), ns.needsUpdate = !0, x.intersectsTriangle(ns))\n return !0;\n return !1;\n }\n });\n for (let x = v, A = y + v; x < A; x++) {\n const F = t.resolveTriangleIndex(x);\n Qe(ts, 3 * F, d, m), ts.a.applyMatrix4(Ys), ts.b.applyMatrix4(Ys), ts.c.applyMatrix4(Ys), ts.needsUpdate = !0;\n for (let P = 0, C = f.count; P < C; P += 3)\n if (Qe(ns, P, f, g), ns.needsUpdate = !0, ts.intersectsTriangle(ns))\n return !0;\n }\n } else {\n const u = h + 8, d = o[h + 6];\n return He(u, i, er), !!(s.intersectsBox(er) && fa(u, t, e, n, s) || (He(d, i, er), s.intersectsBox(er) && fa(d, t, e, n, s)));\n }\n}\nconst nr = /* @__PURE__ */ new Ne(), Go = /* @__PURE__ */ new ht(), Hs = /* @__PURE__ */ new ht(), Cd = /* @__PURE__ */ new te(), Td = /* @__PURE__ */ new te(), bd = /* @__PURE__ */ new te(), xd = /* @__PURE__ */ new te();\nfunction Sd(h, t, e, n = {}, s = {}, i = 0, r = 1 / 0) {\n t.boundingBox || t.computeBoundingBox(), Go.set(t.boundingBox.min, t.boundingBox.max, e), Go.needsUpdate = !0;\n const o = h.geometry, l = o.attributes.position, u = o.index, d = t.attributes.position, m = t.index, f = wt.getPrimitive(), g = wt.getPrimitive();\n let v = Cd, y = Td, x = null, A = null;\n s && (x = bd, A = xd);\n let F = 1 / 0, P = null, C = null;\n return nr.copy(e).invert(), Hs.matrix.copy(nr), h.shapecast(\n {\n boundsTraverseOrder: (O) => Go.distanceToBox(O),\n intersectsBounds: (O, U, Y) => Y < F && Y < r ? (U && (Hs.min.copy(O.min), Hs.max.copy(O.max), Hs.needsUpdate = !0), !0) : !1,\n intersectsRange: (O, U) => {\n if (t.boundsTree) {\n const Y = t.boundsTree;\n return Y.shapecast({\n boundsTraverseOrder: (H) => Hs.distanceToBox(H),\n intersectsBounds: (H, K, Z) => Z < F && Z < r,\n intersectsRange: (H, K) => {\n for (let Z = H, q = H + K; Z < q; Z++) {\n const ne = Y.resolveTriangleIndex(Z);\n Qe(g, 3 * ne, m, d), g.a.applyMatrix4(e), g.b.applyMatrix4(e), g.c.applyMatrix4(e), g.needsUpdate = !0;\n for (let se = O, he = O + U; se < he; se++) {\n const me = h.resolveTriangleIndex(se);\n Qe(f, 3 * me, u, l), f.needsUpdate = !0;\n const Ie = f.distanceToTriangle(g, v, x);\n if (Ie < F && (y.copy(v), A && A.copy(x), F = Ie, P = se, C = Z), Ie < i)\n return !0;\n }\n }\n }\n });\n } else {\n const Y = vs(t);\n for (let H = 0, K = Y; H < K; H++) {\n Qe(g, 3 * H, m, d), g.a.applyMatrix4(e), g.b.applyMatrix4(e), g.c.applyMatrix4(e), g.needsUpdate = !0;\n for (let Z = O, q = O + U; Z < q; Z++) {\n const ne = h.resolveTriangleIndex(Z);\n Qe(f, 3 * ne, u, l), f.needsUpdate = !0;\n const se = f.distanceToTriangle(g, v, x);\n if (se < F && (y.copy(v), A && A.copy(x), F = se, P = Z, C = H), se < i)\n return !0;\n }\n }\n }\n }\n }\n ), wt.releasePrimitive(f), wt.releasePrimitive(g), F === 1 / 0 ? null : (n.point ? n.point.copy(y) : n.point = y.clone(), n.distance = F, n.faceIndex = P, s && (s.point ? s.point.copy(A) : s.point = A.clone(), s.point.applyMatrix4(nr), y.applyMatrix4(nr), s.distance = y.sub(s.point).length(), s.faceIndex = C), n);\n}\nfunction Ad() {\n return typeof SharedArrayBuffer < \"u\";\n}\nconst ei = new ze.constructor(), Sr = new ze.constructor(), En = new Oa(() => new pt()), ss = new pt(), is = new pt(), Yo = new pt(), Ho = new pt();\nlet Wo = !1;\nfunction Rd(h, t, e, n) {\n if (Wo)\n throw new Error(\"MeshBVH: Recursive calls to bvhcast not supported.\");\n Wo = !0;\n const s = h._roots, i = t._roots;\n let r, o = 0, l = 0;\n const u = new Ne().copy(e).invert();\n for (let d = 0, m = s.length; d < m; d++) {\n ei.setBuffer(s[d]), l = 0;\n const f = En.getPrimitive();\n He(0, ei.float32Array, f), f.applyMatrix4(u);\n for (let g = 0, v = i.length; g < v && (Sr.setBuffer(i[d]), r = Ft(\n 0,\n 0,\n e,\n u,\n n,\n o,\n l,\n 0,\n 0,\n f\n ), Sr.clearBuffer(), l += i[g].length, !r); g++)\n ;\n if (En.releasePrimitive(f), ei.clearBuffer(), o += s[d].length, r)\n break;\n }\n return Wo = !1, r;\n}\nfunction Ft(h, t, e, n, s, i = 0, r = 0, o = 0, l = 0, u = null, d = !1) {\n let m, f;\n d ? (m = Sr, f = ei) : (m = ei, f = Sr);\n const g = m.float32Array, v = m.uint32Array, y = m.uint16Array, x = f.float32Array, A = f.uint32Array, F = f.uint16Array, P = h * 2, C = t * 2, O = gt(P, y), U = gt(C, F);\n let Y = !1;\n if (U && O)\n d ? Y = s(\n Et(t, A),\n Ct(t * 2, F),\n Et(h, v),\n Ct(h * 2, y),\n l,\n r + t,\n o,\n i + h\n ) : Y = s(\n Et(h, v),\n Ct(h * 2, y),\n Et(t, A),\n Ct(t * 2, F),\n o,\n i + h,\n l,\n r + t\n );\n else if (U) {\n const H = En.getPrimitive();\n He(t, x, H), H.applyMatrix4(e);\n const K = Tt(h), Z = bt(h, v);\n He(K, g, ss), He(Z, g, is);\n const q = H.intersectsBox(ss), ne = H.intersectsBox(is);\n Y = q && Ft(\n t,\n K,\n n,\n e,\n s,\n r,\n i,\n l,\n o + 1,\n H,\n !d\n ) || ne && Ft(\n t,\n Z,\n n,\n e,\n s,\n r,\n i,\n l,\n o + 1,\n H,\n !d\n ), En.releasePrimitive(H);\n } else {\n const H = Tt(t), K = bt(t, A);\n He(H, x, Yo), He(K, x, Ho);\n const Z = u.intersectsBox(Yo), q = u.intersectsBox(Ho);\n if (Z && q)\n Y = Ft(\n h,\n H,\n e,\n n,\n s,\n i,\n r,\n o,\n l + 1,\n u,\n d\n ) || Ft(\n h,\n K,\n e,\n n,\n s,\n i,\n r,\n o,\n l + 1,\n u,\n d\n );\n else if (Z)\n if (O)\n Y = Ft(\n h,\n H,\n e,\n n,\n s,\n i,\n r,\n o,\n l + 1,\n u,\n d\n );\n else {\n const ne = En.getPrimitive();\n ne.copy(Yo).applyMatrix4(e);\n const se = Tt(h), he = bt(h, v);\n He(se, g, ss), He(he, g, is);\n const me = ne.intersectsBox(ss), Ie = ne.intersectsBox(is);\n Y = me && Ft(\n H,\n se,\n n,\n e,\n s,\n r,\n i,\n l,\n o + 1,\n ne,\n !d\n ) || Ie && Ft(\n H,\n he,\n n,\n e,\n s,\n r,\n i,\n l,\n o + 1,\n ne,\n !d\n ), En.releasePrimitive(ne);\n }\n else if (q)\n if (O)\n Y = Ft(\n h,\n K,\n e,\n n,\n s,\n i,\n r,\n o,\n l + 1,\n u,\n d\n );\n else {\n const ne = En.getPrimitive();\n ne.copy(Ho).applyMatrix4(e);\n const se = Tt(h), he = bt(h, v);\n He(se, g, ss), He(he, g, is);\n const me = ne.intersectsBox(ss), Ie = ne.intersectsBox(is);\n Y = me && Ft(\n K,\n se,\n n,\n e,\n s,\n r,\n i,\n l,\n o + 1,\n ne,\n !d\n ) || Ie && Ft(\n K,\n he,\n n,\n e,\n s,\n r,\n i,\n l,\n o + 1,\n ne,\n !d\n ), En.releasePrimitive(ne);\n }\n }\n return Y;\n}\nconst sr = /* @__PURE__ */ new ht(), Ll = /* @__PURE__ */ new pt();\nclass Da {\n static serialize(t, e = {}) {\n e = {\n cloneBuffers: !0,\n ...e\n };\n const n = t.geometry, s = t._roots, i = t._indirectBuffer, r = n.getIndex();\n let o;\n return e.cloneBuffers ? o = {\n roots: s.map((l) => l.slice()),\n index: r.array.slice(),\n indirectBuffer: i ? i.slice() : null\n } : o = {\n roots: s,\n index: r.array,\n indirectBuffer: i\n }, o;\n }\n static deserialize(t, e, n = {}) {\n n = {\n setIndex: !0,\n indirect: !!t.indirectBuffer,\n ...n\n };\n const { index: s, roots: i, indirectBuffer: r } = t, o = new Da(e, { ...n, [Uo]: !0 });\n if (o._roots = i, o._indirectBuffer = r || null, n.setIndex) {\n const l = e.getIndex();\n if (l === null) {\n const u = new Yr(t.index, 1, !1);\n e.setIndex(u);\n } else\n l.array !== s && (l.array.set(s), l.needsUpdate = !0);\n }\n return o;\n }\n get indirect() {\n return !!this._indirectBuffer;\n }\n constructor(t, e = {}) {\n if (t.isBufferGeometry) {\n if (t.index && t.index.isInterleavedBufferAttribute)\n throw new Error(\"MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.\");\n } else\n throw new Error(\"MeshBVH: Only BufferGeometries are supported.\");\n if (e = Object.assign({\n strategy: Dc,\n maxDepth: 40,\n maxLeafTris: 10,\n verbose: !0,\n useSharedArrayBuffer: !1,\n setBoundingBox: !0,\n onProgress: null,\n indirect: !1,\n // undocumented options\n // Whether to skip generating the tree. Used for deserialization.\n [Uo]: !1\n }, e), e.useSharedArrayBuffer && !Ad())\n throw new Error(\"MeshBVH: SharedArrayBuffer is not available.\");\n this.geometry = t, this._roots = null, this._indirectBuffer = null, e[Uo] || (Wu(this, e), !t.boundingBox && e.setBoundingBox && (t.boundingBox = this.getBoundingBox(new pt())));\n const { _indirectBuffer: n } = this;\n this.resolveTriangleIndex = e.indirect ? (s) => n[s] : (s) => s;\n }\n refit(t = null) {\n return (this.indirect ? Ed : id)(this, t);\n }\n traverse(t, e = 0) {\n const n = this._roots[e], s = new Uint32Array(n), i = new Uint16Array(n);\n r(0);\n function r(o, l = 0) {\n const u = o * 2, d = i[u + 15] === Wr;\n if (d) {\n const m = s[o + 6], f = i[u + 14];\n t(l, d, new Float32Array(n, o * 4, 6), m, f);\n } else {\n const m = o + wr / 4, f = s[o + 6], g = s[o + 7];\n t(l, d, new Float32Array(n, o * 4, 6), g) || (r(m, l + 1), r(f, l + 1));\n }\n }\n }\n /* Core Cast Functions */\n raycast(t, e = El) {\n const n = this._roots, s = this.geometry, i = [], r = e.isMaterial, o = Array.isArray(e), l = s.groups, u = r ? e.side : e, d = this.indirect ? vd : ld;\n for (let m = 0, f = n.length; m < f; m++) {\n const g = o ? e[l[m].materialIndex].side : u, v = i.length;\n if (d(this, m, g, t, i), o) {\n const y = l[m].materialIndex;\n for (let x = v, A = i.length; x < A; x++)\n i[x].face.materialIndex = y;\n }\n }\n return i;\n }\n raycastFirst(t, e = El) {\n const n = this._roots, s = this.geometry, i = e.isMaterial, r = Array.isArray(e);\n let o = null;\n const l = s.groups, u = i ? e.side : e, d = this.indirect ? yd : hd;\n for (let m = 0, f = n.length; m < f; m++) {\n const g = r ? e[l[m].materialIndex].side : u, v = d(this, m, g, t);\n v != null && (o == null || v.distance < o.distance) && (o = v, r && (v.face.materialIndex = l[m].materialIndex));\n }\n return o;\n }\n intersectsGeometry(t, e) {\n let n = !1;\n const s = this._roots, i = this.indirect ? wd : ud;\n for (let r = 0, o = s.length; r < o && (n = i(this, r, t, e), !n); r++)\n ;\n return n;\n }\n shapecast(t) {\n const e = wt.getPrimitive(), n = this.indirect ? ad : sd;\n let {\n boundsTraverseOrder: s,\n intersectsBounds: i,\n intersectsRange: r,\n intersectsTriangle: o\n } = t;\n if (r && o) {\n const m = r;\n r = (f, g, v, y, x) => m(f, g, v, y, x) ? !0 : n(f, g, this, o, v, y, e);\n } else\n r || (o ? r = (m, f, g, v) => n(m, f, this, o, g, v, e) : r = (m, f, g) => g);\n let l = !1, u = 0;\n const d = this._roots;\n for (let m = 0, f = d.length; m < f; m++) {\n const g = d[m];\n if (l = qu(this, m, i, r, s, u), l)\n break;\n u += g.byteLength;\n }\n return wt.releasePrimitive(e), l;\n }\n bvhcast(t, e, n) {\n let {\n intersectsRanges: s,\n intersectsTriangles: i\n } = n;\n const r = wt.getPrimitive(), o = this.geometry.index, l = this.geometry.attributes.position, u = this.indirect ? (v) => {\n const y = this.resolveTriangleIndex(v);\n Qe(r, y * 3, o, l);\n } : (v) => {\n Qe(r, v * 3, o, l);\n }, d = wt.getPrimitive(), m = t.geometry.index, f = t.geometry.attributes.position, g = t.indirect ? (v) => {\n const y = t.resolveTriangleIndex(v);\n Qe(d, y * 3, m, f);\n } : (v) => {\n Qe(d, v * 3, m, f);\n };\n if (i) {\n const v = (y, x, A, F, P, C, O, U) => {\n for (let Y = A, H = A + F; Y < H; Y++) {\n g(Y), d.a.applyMatrix4(e), d.b.applyMatrix4(e), d.c.applyMatrix4(e), d.needsUpdate = !0;\n for (let K = y, Z = y + x; K < Z; K++)\n if (u(K), r.needsUpdate = !0, i(r, d, K, Y, P, C, O, U))\n return !0;\n }\n return !1;\n };\n if (s) {\n const y = s;\n s = function(x, A, F, P, C, O, U, Y) {\n return y(x, A, F, P, C, O, U, Y) ? !0 : v(x, A, F, P, C, O, U, Y);\n };\n } else\n s = v;\n }\n return Rd(this, t, e, s);\n }\n /* Derived Cast Functions */\n intersectsBox(t, e) {\n return sr.set(t.min, t.max, e), sr.needsUpdate = !0, this.shapecast(\n {\n intersectsBounds: (n) => sr.intersectsBox(n),\n intersectsTriangle: (n) => sr.intersectsTriangle(n)\n }\n );\n }\n intersectsSphere(t) {\n return this.shapecast(\n {\n intersectsBounds: (e) => t.intersectsBox(e),\n intersectsTriangle: (e) => e.intersectsSphere(t)\n }\n );\n }\n closestPointToGeometry(t, e, n = {}, s = {}, i = 0, r = 1 / 0) {\n return (this.indirect ? Sd : gd)(\n this,\n t,\n e,\n n,\n s,\n i,\n r\n );\n }\n closestPointToPoint(t, e = {}, n = 0, s = 1 / 0) {\n return Ju(\n this,\n t,\n e,\n n,\n s\n );\n }\n getBoundingBox(t) {\n return t.makeEmpty(), this._roots.forEach((e) => {\n He(0, new Float32Array(e), Ll), t.union(Ll);\n }), t;\n }\n}\nfunction Nl(h, t, e) {\n return h === null || (h.point.applyMatrix4(t.matrixWorld), h.distance = h.point.distanceTo(e.ray.origin), h.object = t, h.distance < e.near || h.distance > e.far) ? null : h;\n}\nconst Ko = /* @__PURE__ */ new lu(), _l = /* @__PURE__ */ new Ne(), Fd = fe.prototype.raycast;\nfunction Pd(h, t) {\n if (this.geometry.boundsTree) {\n if (this.material === void 0)\n return;\n _l.copy(this.matrixWorld).invert(), Ko.copy(h.ray).applyMatrix4(_l);\n const e = this.geometry.boundsTree;\n if (h.firstHitOnly === !0) {\n const n = Nl(e.raycastFirst(Ko, this.material), this, h);\n n && t.push(n);\n } else {\n const n = e.raycast(Ko, this.material);\n for (let s = 0, i = n.length; s < i; s++) {\n const r = Nl(n[s], this, h);\n r && t.push(r);\n }\n }\n } else\n Fd.call(this, h, t);\n}\nfunction Md(h) {\n return this.boundsTree = new Da(this, h), this.boundsTree;\n}\nfunction Od() {\n this.boundsTree = null;\n}\nclass $ {\n constructor() {\n S(this, \"trigger\", (t) => {\n const e = this.handlers.slice(0);\n for (const n of e)\n n(t);\n }), S(this, \"handlers\", []);\n }\n /**\n * Add a callback to this event instance.\n * @param handler - the callback to be added to this event.\n */\n add(t) {\n this.handlers.push(t);\n }\n /**\n * Removes a callback from this event instance.\n * @param handler - the callback to be removed from this event.\n */\n remove(t) {\n this.handlers = this.handlers.filter((e) => e !== t);\n }\n /** Gets rid of all the suscribed events. */\n reset() {\n this.handlers.length = 0;\n }\n}\nclass ti {\n constructor() {\n S(this, \"trigger\", async (t) => {\n const e = this.handlers.slice(0);\n for (const n of e)\n await n(t);\n }), S(this, \"handlers\", []);\n }\n /**\n * Add a callback to this event instance.\n * @param handler - the callback to be added to this event.\n */\n add(t) {\n this.handlers.push(t);\n }\n /**\n * Removes a callback from this event instance.\n * @param handler - the callback to be removed from this event.\n */\n remove(t) {\n this.handlers = this.handlers.filter((e) => e !== t);\n }\n /** Gets rid of all the suscribed events. */\n reset() {\n this.handlers.length = 0;\n }\n}\nclass La {\n constructor(t) {\n S(this, \"isDisposeable\", () => \"dispose\" in this && \"onDisposed\" in this), S(this, \"isResizeable\", () => \"resize\" in this && \"getSize\" in this), S(this, \"isUpdateable\", () => \"onAfterUpdate\" in this && \"onBeforeUpdate\" in this && \"update\" in this), S(this, \"isHideable\", () => \"visible\" in this), S(this, \"isConfigurable\", () => \"setup\" in this && \"config\" in this && \"onSetup\" in this), this.components = t;\n }\n}\nclass Re extends La {\n}\nclass Uc extends La {\n constructor(t) {\n super(t), S(this, \"worlds\", /* @__PURE__ */ new Map()), S(this, \"onWorldChanged\", new $()), S(this, \"currentWorld\", null), this.onWorldChanged.add(({ world: e, action: n }) => {\n n === \"removed\" && this.worlds.delete(e.uuid);\n });\n }\n}\nclass Dd extends Uc {\n constructor() {\n super(...arguments), S(this, \"hasCameraControls\", () => \"controls\" in this);\n }\n}\nclass Ld extends Uc {\n constructor() {\n super(...arguments), S(this, \"onAfterUpdate\", new $()), S(this, \"onBeforeUpdate\", new $()), S(this, \"onDisposed\", new $()), S(this, \"onResize\", new $()), S(this, \"onClippingPlanesUpdated\", new $()), S(this, \"clippingPlanes\", []);\n }\n /**\n * Updates the clipping planes and triggers the `onClippingPlanesUpdated` event.\n *\n * @remarks\n * This method is typically called when there is a change to the list of clipping planes\n * used by the active renderer.\n */\n updateClippingPlanes() {\n this.onClippingPlanesUpdated.trigger();\n }\n /**\n * Sets or removes a clipping plane from the renderer.\n *\n * @param active - A boolean indicating whether the clipping plane should be active or not.\n * @param plane - The clipping plane to be added or removed.\n * @param isLocal - An optional boolean indicating whether the clipping plane is local to the object. If not provided, it defaults to `false`.\n *\n * @remarks\n * This method adds or removes a clipping plane from the `clippingPlanes` array.\n * If `active` is `true` and the plane is not already in the array, it is added.\n * If `active` is `false` and the plane is in the array, it is removed.\n * The `three.clippingPlanes` property is then updated to reflect the current state of the `clippingPlanes` array,\n * excluding any planes marked as local.\n */\n setPlane(t, e, n) {\n e.isLocal = n;\n const s = this.clippingPlanes.indexOf(e);\n t && s === -1 ? this.clippingPlanes.push(e) : !t && s > -1 && this.clippingPlanes.splice(s, 1), this.three.clippingPlanes = this.clippingPlanes.filter(\n (i) => !i.isLocal\n );\n }\n}\nconst Bc = class pa extends Re {\n constructor(t) {\n super(t), S(this, \"_disposedComponents\", /* @__PURE__ */ new Set()), S(this, \"enabled\", !0), t.add(pa.uuid, this);\n }\n // TODO: Remove this?\n /**\n * Return the UUIDs of all disposed components.\n */\n get() {\n return this._disposedComponents;\n }\n /**\n * Removes a mesh, its geometry and its materials from memory. If you are\n * using any of these in other parts of the application, make sure that you\n * remove them from the mesh before disposing it.\n *\n * @param object - the [object](https://threejs.org/docs/#api/en/core/Object3D)\n * to remove.\n *\n * @param materials - whether to dispose the materials of the mesh.\n *\n * @param recursive - whether to recursively dispose the children of the mesh.\n */\n destroy(t, e = !0, n = !0) {\n t.removeFromParent();\n const s = t;\n s.dispose && s.dispose(), this.disposeGeometryAndMaterials(t, e), n && s.children && s.children.length && this.disposeChildren(s), t.children.length = 0;\n }\n /**\n * Disposes a geometry from memory.\n *\n * @param geometry - the\n * [geometry](https://threejs.org/docs/#api/en/core/BufferGeometry)\n * to remove.\n */\n disposeGeometry(t) {\n t.boundsTree && t.disposeBoundsTree && t.disposeBoundsTree(), t.dispose();\n }\n disposeGeometryAndMaterials(t, e) {\n const n = t;\n n.geometry && this.disposeGeometry(n.geometry), e && n.material && pa.disposeMaterial(n), n.material = [], n.geometry = null;\n }\n disposeChildren(t) {\n for (const e of t.children)\n this.destroy(e);\n }\n static disposeMaterial(t) {\n if (t.material)\n if (Array.isArray(t.material))\n for (const e of t.material)\n e.dispose();\n else\n t.material.dispose();\n }\n};\nS(Bc, \"uuid\", \"76e9cd8e-ad8f-4753-9ef6-cbc60f7247fe\");\nlet rn = Bc;\nconst Cr = 0, Nd = 1, _d = new te(), Ul = new Ot(), jo = new Fa(), Bl = new te(), ir = new us();\nclass Ud {\n constructor() {\n this.tolerance = -1, this.faces = [], this.newFaces = [], this.assigned = new kl(), this.unassigned = new kl(), this.vertices = [];\n }\n setFromPoints(t) {\n if (t.length >= 4) {\n this.makeEmpty();\n for (let e = 0, n = t.length; e < n; e++)\n this.vertices.push(new Bd(t[e]));\n this.compute();\n }\n return this;\n }\n setFromObject(t) {\n const e = [];\n return t.updateMatrixWorld(!0), t.traverse(function(n) {\n const s = n.geometry;\n if (s !== void 0) {\n const i = s.attributes.position;\n if (i !== void 0)\n for (let r = 0, o = i.count; r < o; r++) {\n const l = new te();\n l.fromBufferAttribute(i, r).applyMatrix4(n.matrixWorld), e.push(l);\n }\n }\n }), this.setFromPoints(e);\n }\n containsPoint(t) {\n const e = this.faces;\n for (let n = 0, s = e.length; n < s; n++)\n if (e[n].distanceToPoint(t) > this.tolerance)\n return !1;\n return !0;\n }\n intersectRay(t, e) {\n const n = this.faces;\n let s = -1 / 0, i = 1 / 0;\n for (let r = 0, o = n.length; r < o; r++) {\n const l = n[r], u = l.distanceToPoint(t.origin), d = l.normal.dot(t.direction);\n if (u > 0 && d >= 0)\n return null;\n const m = d !== 0 ? -u / d : 0;\n if (!(m <= 0) && (d > 0 ? i = Math.min(m, i) : s = Math.max(m, s), s > i))\n return null;\n }\n return s !== -1 / 0 ? t.at(s, e) : t.at(i, e), e;\n }\n intersectsRay(t) {\n return this.intersectRay(t, _d) !== null;\n }\n makeEmpty() {\n return this.faces = [], this.vertices = [], this;\n }\n // Adds a vertex to the 'assigned' list of vertices and assigns it to the given face\n addVertexToFace(t, e) {\n return t.face = e, e.outside === null ? this.assigned.append(t) : this.assigned.insertBefore(e.outside, t), e.outside = t, this;\n }\n // Removes a vertex from the 'assigned' list of vertices and from the given face\n removeVertexFromFace(t, e) {\n return t === e.outside && (t.next !== null && t.next.face === e ? e.outside = t.next : e.outside = null), this.assigned.remove(t), this;\n }\n // Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertex list\n removeAllVerticesFromFace(t) {\n if (t.outside !== null) {\n const e = t.outside;\n let n = t.outside;\n for (; n.next !== null && n.next.face === t; )\n n = n.next;\n return this.assigned.removeSubList(e, n), e.prev = n.next = null, t.outside = null, e;\n }\n }\n // Removes all the visible vertices that 'face' is able to see\n deleteFaceVertices(t, e) {\n const n = this.removeAllVerticesFromFace(t);\n if (n !== void 0)\n if (e === void 0)\n this.unassigned.appendChain(n);\n else {\n let s = n;\n do {\n const i = s.next;\n e.distanceToPoint(s.point) > this.tolerance ? this.addVertexToFace(s, e) : this.unassigned.append(s), s = i;\n } while (s !== null);\n }\n return this;\n }\n // Reassigns as many vertices as possible from the unassigned list to the new faces\n resolveUnassignedPoints(t) {\n if (this.unassigned.isEmpty() === !1) {\n let e = this.unassigned.first();\n do {\n const n = e.next;\n let s = this.tolerance, i = null;\n for (let r = 0; r < t.length; r++) {\n const o = t[r];\n if (o.mark === Cr) {\n const l = o.distanceToPoint(e.point);\n if (l > s && (s = l, i = o), s > 1e3 * this.tolerance)\n break;\n }\n }\n i !== null && this.addVertexToFace(e, i), e = n;\n } while (e !== null);\n }\n return this;\n }\n // Computes the extremes of a simplex which will be the initial hull\n computeExtremes() {\n const t = new te(), e = new te(), n = [], s = [];\n for (let i = 0; i < 3; i++)\n n[i] = s[i] = this.vertices[0];\n t.copy(this.vertices[0].point), e.copy(this.vertices[0].point);\n for (let i = 0, r = this.vertices.length; i < r; i++) {\n const o = this.vertices[i], l = o.point;\n for (let u = 0; u < 3; u++)\n l.getComponent(u) < t.getComponent(u) && (t.setComponent(u, l.getComponent(u)), n[u] = o);\n for (let u = 0; u < 3; u++)\n l.getComponent(u) > e.getComponent(u) && (e.setComponent(u, l.getComponent(u)), s[u] = o);\n }\n return this.tolerance = 3 * Number.EPSILON * (Math.max(Math.abs(t.x), Math.abs(e.x)) + Math.max(Math.abs(t.y), Math.abs(e.y)) + Math.max(Math.abs(t.z), Math.abs(e.z))), { min: n, max: s };\n }\n // Computes the initial simplex assigning to its faces all the points\n // that are candidates to form part of the hull\n computeInitialHull() {\n const t = this.vertices, e = this.computeExtremes(), n = e.min, s = e.max;\n let i = 0, r = 0;\n for (let f = 0; f < 3; f++) {\n const g = s[f].point.getComponent(f) - n[f].point.getComponent(f);\n g > i && (i = g, r = f);\n }\n const o = n[r], l = s[r];\n let u, d;\n i = 0, Ul.set(o.point, l.point);\n for (let f = 0, g = this.vertices.length; f < g; f++) {\n const v = t[f];\n if (v !== o && v !== l) {\n Ul.closestPointToPoint(v.point, !0, Bl);\n const y = Bl.distanceToSquared(v.point);\n y > i && (i = y, u = v);\n }\n }\n i = -1, jo.setFromCoplanarPoints(o.point, l.point, u.point);\n for (let f = 0, g = this.vertices.length; f < g; f++) {\n const v = t[f];\n if (v !== o && v !== l && v !== u) {\n const y = Math.abs(jo.distanceToPoint(v.point));\n y > i && (i = y, d = v);\n }\n }\n const m = [];\n if (jo.distanceToPoint(d.point) < 0) {\n m.push(\n Mt.create(o, l, u),\n Mt.create(d, l, o),\n Mt.create(d, u, l),\n Mt.create(d, o, u)\n );\n for (let f = 0; f < 3; f++) {\n const g = (f + 1) % 3;\n m[f + 1].getEdge(2).setTwin(m[0].getEdge(g)), m[f + 1].getEdge(1).setTwin(m[g + 1].getEdge(0));\n }\n } else {\n m.push(\n Mt.create(o, u, l),\n Mt.create(d, o, l),\n Mt.create(d, l, u),\n Mt.create(d, u, o)\n );\n for (let f = 0; f < 3; f++) {\n const g = (f + 1) % 3;\n m[f + 1].getEdge(2).setTwin(m[0].getEdge((3 - f) % 3)), m[f + 1].getEdge(0).setTwin(m[g + 1].getEdge(1));\n }\n }\n for (let f = 0; f < 4; f++)\n this.faces.push(m[f]);\n for (let f = 0, g = t.length; f < g; f++) {\n const v = t[f];\n if (v !== o && v !== l && v !== u && v !== d) {\n i = this.tolerance;\n let y = null;\n for (let x = 0; x < 4; x++) {\n const A = this.faces[x].distanceToPoint(v.point);\n A > i && (i = A, y = this.faces[x]);\n }\n y !== null && this.addVertexToFace(v, y);\n }\n }\n return this;\n }\n // Removes inactive faces\n reindexFaces() {\n const t = [];\n for (let e = 0; e < this.faces.length; e++) {\n const n = this.faces[e];\n n.mark === Cr && t.push(n);\n }\n return this.faces = t, this;\n }\n // Finds the next vertex to create faces with the current hull\n nextVertexToAdd() {\n if (this.assigned.isEmpty() === !1) {\n let t, e = 0;\n const n = this.assigned.first().face;\n let s = n.outside;\n do {\n const i = n.distanceToPoint(s.point);\n i > e && (e = i, t = s), s = s.next;\n } while (s !== null && s.face === n);\n return t;\n }\n }\n // Computes a chain of half edges in CCW order called the 'horizon'.\n // For an edge to be part of the horizon it must join a face that can see\n // 'eyePoint' and a face that cannot see 'eyePoint'.\n computeHorizon(t, e, n, s) {\n this.deleteFaceVertices(n), n.mark = Nd;\n let i;\n e === null ? i = e = n.getEdge(0) : i = e.next;\n do {\n const r = i.twin, o = r.face;\n o.mark === Cr && (o.distanceToPoint(t) > this.tolerance ? this.computeHorizon(t, r, o, s) : s.push(i)), i = i.next;\n } while (i !== e);\n return this;\n }\n // Creates a face with the vertices 'eyeVertex.point', 'horizonEdge.tail' and 'horizonEdge.head' in CCW order\n addAdjoiningFace(t, e) {\n const n = Mt.create(t, e.tail(), e.head());\n return this.faces.push(n), n.getEdge(-1).setTwin(e.twin), n.getEdge(0);\n }\n // Adds 'horizon.length' faces to the hull, each face will be linked with the\n // horizon opposite face and the face on the left/right\n addNewFaces(t, e) {\n this.newFaces = [];\n let n = null, s = null;\n for (let i = 0; i < e.length; i++) {\n const r = e[i], o = this.addAdjoiningFace(t, r);\n n === null ? n = o : o.next.setTwin(s), this.newFaces.push(o.face), s = o;\n }\n return n.next.setTwin(s), this;\n }\n // Adds a vertex to the hull\n addVertexToHull(t) {\n const e = [];\n return this.unassigned.clear(), this.removeVertexFromFace(t, t.face), this.computeHorizon(t.point, null, t.face, e), this.addNewFaces(t, e), this.resolveUnassignedPoints(this.newFaces), this;\n }\n cleanup() {\n return this.assigned.clear(), this.unassigned.clear(), this.newFaces = [], this;\n }\n compute() {\n let t;\n for (this.computeInitialHull(); (t = this.nextVertexToAdd()) !== void 0; )\n this.addVertexToHull(t);\n return this.reindexFaces(), this.cleanup(), this;\n }\n}\nclass Mt {\n constructor() {\n this.normal = new te(), this.midpoint = new te(), this.area = 0, this.constant = 0, this.outside = null, this.mark = Cr, this.edge = null;\n }\n static create(t, e, n) {\n const s = new Mt(), i = new Xo(t, s), r = new Xo(e, s), o = new Xo(n, s);\n return i.next = o.prev = r, r.next = i.prev = o, o.next = r.prev = i, s.edge = i, s.compute();\n }\n getEdge(t) {\n let e = this.edge;\n for (; t > 0; )\n e = e.next, t--;\n for (; t < 0; )\n e = e.prev, t++;\n return e;\n }\n compute() {\n const t = this.edge.tail(), e = this.edge.head(), n = this.edge.next.head();\n return ir.set(t.point, e.point, n.point), ir.getNormal(this.normal), ir.getMidpoint(this.midpoint), this.area = ir.getArea(), this.constant = this.normal.dot(this.midpoint), this;\n }\n distanceToPoint(t) {\n return this.normal.dot(t) - this.constant;\n }\n}\nclass Xo {\n constructor(t, e) {\n this.vertex = t, this.prev = null, this.next = null, this.twin = null, this.face = e;\n }\n head() {\n return this.vertex;\n }\n tail() {\n return this.prev ? this.prev.vertex : null;\n }\n length() {\n const t = this.head(), e = this.tail();\n return e !== null ? e.point.distanceTo(t.point) : -1;\n }\n lengthSquared() {\n const t = this.head(), e = this.tail();\n return e !== null ? e.point.distanceToSquared(t.point) : -1;\n }\n setTwin(t) {\n return this.twin = t, t.twin = this, this;\n }\n}\nclass Bd {\n constructor(t) {\n this.point = t, this.prev = null, this.next = null, this.face = null;\n }\n}\nclass kl {\n constructor() {\n this.head = null, this.tail = null;\n }\n first() {\n return this.head;\n }\n last() {\n return this.tail;\n }\n clear() {\n return this.head = this.tail = null, this;\n }\n // Inserts a vertex before the target vertex\n insertBefore(t, e) {\n return e.prev = t.prev, e.next = t, e.prev === null ? this.head = e : e.prev.next = e, t.prev = e, this;\n }\n // Inserts a vertex after the target vertex\n insertAfter(t, e) {\n return e.prev = t, e.next = t.next, e.next === null ? this.tail = e : e.next.prev = e, t.next = e, this;\n }\n // Appends a vertex to the end of the linked list\n append(t) {\n return this.head === null ? this.head = t : this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t, this;\n }\n // Appends a chain of vertices where 'vertex' is the head.\n appendChain(t) {\n for (this.head === null ? this.head = t : this.tail.next = t, t.prev = this.tail; t.next !== null; )\n t = t.next;\n return this.tail = t, this;\n }\n // Removes a vertex from the linked list\n remove(t) {\n return t.prev === null ? this.head = t.next : t.prev.next = t.next, t.next === null ? this.tail = t.prev : t.next.prev = t.prev, this;\n }\n // Removes a list of vertices whose 'head' is 'a' and whose 'tail' is b\n removeSubList(t, e) {\n return t.prev === null ? this.head = e.next : t.prev.next = e.next, e.next === null ? this.tail = t.prev : e.next.prev = t.prev, this;\n }\n isEmpty() {\n return this.head === null;\n }\n}\nconst ma = [2, 2, 1], ga = [1, 0, 0];\nfunction Wt(h, t) {\n return h * 3 + t;\n}\nfunction kd(h) {\n const t = h.elements;\n let e = 0;\n for (let n = 0; n < 9; n++)\n e += t[n] * t[n];\n return Math.sqrt(e);\n}\nfunction zd(h) {\n const t = h.elements;\n let e = 0;\n for (let n = 0; n < 3; n++) {\n const s = t[Wt(ma[n], ga[n])];\n e += 2 * s * s;\n }\n return Math.sqrt(e);\n}\nfunction Vd(h, t) {\n let e = 0, n = 1;\n const s = h.elements;\n for (let u = 0; u < 3; u++) {\n const d = Math.abs(s[Wt(ma[u], ga[u])]);\n d > e && (e = d, n = u);\n }\n let i = 1, r = 0;\n const o = ga[n], l = ma[n];\n if (Math.abs(s[Wt(l, o)]) > Number.EPSILON) {\n const u = s[Wt(l, l)], d = s[Wt(o, o)], m = s[Wt(l, o)], f = (u - d) / 2 / m;\n let g;\n f < 0 ? g = -1 / (-f + Math.sqrt(1 + f * f)) : g = 1 / (f + Math.sqrt(1 + f * f)), i = 1 / Math.sqrt(1 + g * g), r = g * i;\n }\n return t.identity(), t.elements[Wt(o, o)] = i, t.elements[Wt(l, l)] = i, t.elements[Wt(l, o)] = r, t.elements[Wt(o, l)] = -r, t;\n}\nfunction Gd(h, t) {\n let e = 0, n = 0;\n const s = 10;\n t.unitary.identity(), t.diagonal.copy(h);\n const i = t.unitary, r = t.diagonal, o = new w.Matrix3(), l = new w.Matrix3(), u = Number.EPSILON * kd(r);\n for (; n < s && zd(r) > u; )\n Vd(r, o), l.copy(o).transpose(), r.multiply(o), r.premultiply(l), i.multiply(o), ++e > 2 && (n++, e = 0);\n return t;\n}\nfunction Yd(h) {\n const t = [];\n for (let je = 0; je < h.length - 2; je += 3) {\n const pe = h[je], Ye = h[je + 1], St = h[je + 2];\n t.push(new w.Vector3(pe, Ye, St));\n }\n const e = new Ud();\n e.setFromPoints(t);\n const n = {\n unitary: new w.Matrix3(),\n diagonal: new w.Matrix3()\n }, s = e.faces, i = [], r = [];\n for (let je = 0, pe = s.length; je < pe; je++) {\n const Ye = s[je];\n let St = Ye.edge;\n i.length = 0;\n do\n i.push(St), St = St.next;\n while (St !== Ye.edge);\n const Oe = i.length - 2;\n for (let _t = 1, qr = Oe; _t <= qr; _t++) {\n const At = i[0].vertex, ws = i[_t + 0].vertex, Cs = i[_t + 1].vertex;\n r.push(At.point.x, At.point.y, At.point.z), r.push(ws.point.x, ws.point.y, ws.point.z), r.push(Cs.point.x, Cs.point.y, Cs.point.z);\n }\n }\n const o = new w.Vector3(), l = new w.Vector3(), u = new w.Vector3(), d = new w.Vector3(), m = new w.Vector3(), f = new w.Vector3(), g = new w.Vector3(), v = new w.Vector3();\n let y = 0, x = 0, A = 0, F = 0, P = 0, C = 0, O = 0;\n for (let je = 0, pe = r.length; je < pe; je += 9) {\n o.fromArray(r, je), l.fromArray(r, je + 3), u.fromArray(r, je + 6), g.set(0, 0, 0), g.add(o).add(l).add(u).divideScalar(3), d.subVectors(l, o), m.subVectors(u, o);\n const Ye = f.crossVectors(d, m).length() / 2;\n v.add(f.copy(g).multiplyScalar(Ye)), y += Ye, x += (9 * g.x * g.x + o.x * o.x + l.x * l.x + u.x * u.x) * (Ye / 12), A += (9 * g.x * g.y + o.x * o.y + l.x * l.y + u.x * u.y) * (Ye / 12), F += (9 * g.x * g.z + o.x * o.z + l.x * l.z + u.x * u.z) * (Ye / 12), P += (9 * g.y * g.y + o.y * o.y + l.y * l.y + u.y * u.y) * (Ye / 12), C += (9 * g.y * g.z + o.y * o.z + l.y * l.z + u.y * u.z) * (Ye / 12), O += (9 * g.z * g.z + o.z * o.z + l.z * l.z + u.z * u.z) * (Ye / 12);\n }\n v.divideScalar(y), x /= y, A /= y, F /= y, P /= y, C /= y, O /= y, x -= v.x * v.x, A -= v.x * v.y, F -= v.x * v.z, P -= v.y * v.y, C -= v.y * v.z, O -= v.z * v.z;\n const U = new w.Matrix3();\n U.elements[0] = x, U.elements[1] = A, U.elements[2] = F, U.elements[3] = A, U.elements[4] = P, U.elements[5] = C, U.elements[6] = F, U.elements[7] = C, U.elements[8] = O, Gd(U, n);\n const Y = n.unitary, H = new w.Vector3(), K = new w.Vector3(), Z = new w.Vector3();\n Y.extractBasis(H, K, Z);\n let q = -1 / 0, ne = -1 / 0, se = -1 / 0, he = 1 / 0, me = 1 / 0, Ie = 1 / 0;\n for (let je = 0, pe = t.length; je < pe; je++) {\n const Ye = t[je];\n q = Math.max(H.dot(Ye), q), ne = Math.max(K.dot(Ye), ne), se = Math.max(Z.dot(Ye), se), he = Math.min(H.dot(Ye), he), me = Math.min(K.dot(Ye), me), Ie = Math.min(Z.dot(Ye), Ie);\n }\n H.multiplyScalar(0.5 * (he + q)), K.multiplyScalar(0.5 * (me + ne)), Z.multiplyScalar(0.5 * (Ie + se));\n const Ee = new w.Vector3(), ue = new w.Vector3(), Le = new w.Matrix3();\n Ee.add(H).add(K).add(Z), ue.x = q - he, ue.y = ne - me, ue.z = se - Ie, ue.multiplyScalar(0.5), Le.copy(Y);\n const { x: we, y: Ke, z: Nt } = ue, vt = new w.Matrix4();\n vt.makeScale(we * 2, Ke * 2, Nt * 2);\n const ys = new w.Matrix4();\n ys.makeTranslation(-we, -Ke, -Nt);\n const Cn = new w.Matrix4();\n Cn.makeTranslation(Ee.x, Ee.y, Ee.z);\n const Zt = new w.Matrix4();\n Zt.setFromMatrix3(Le);\n const Qt = new w.Matrix4();\n return Qt.multiply(Cn), Qt.multiply(Zt), Qt.multiply(ys), Qt.multiply(vt), { center: Ee, halfSizes: ue, rotation: Le, transformation: Qt };\n}\nfunction Hd(h, t, e) {\n const n = [\n h[0] - t[0],\n h[1] - t[1],\n h[2] - t[2]\n ];\n return e[0] * n[0] + e[1] * n[1] + e[2] * n[2] > 0;\n}\nclass zl {\n static isTransparent(t) {\n return t.transparent && t.opacity < 1;\n }\n}\nconst Ea = class $e {\n // Copied from three.js source\n // Original source: http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n static create() {\n const t = Math.random() * 4294967295 | 0, e = Math.random() * 4294967295 | 0, n = Math.random() * 4294967295 | 0, s = Math.random() * 4294967295 | 0;\n return `${$e._lut[t & 255] + $e._lut[t >> 8 & 255] + $e._lut[t >> 16 & 255] + $e._lut[t >> 24 & 255]}-${$e._lut[e & 255]}${$e._lut[e >> 8 & 255]}-${$e._lut[e >> 16 & 15 | 64]}${$e._lut[e >> 24 & 255]}-${$e._lut[n & 63 | 128]}${$e._lut[n >> 8 & 255]}-${$e._lut[n >> 16 & 255]}${$e._lut[n >> 24 & 255]}${$e._lut[s & 255]}${$e._lut[s >> 8 & 255]}${$e._lut[s >> 16 & 255]}${$e._lut[s >> 24 & 255]}`.toLowerCase();\n }\n static validate(t) {\n if (!$e._pattern.test(t))\n throw new Error(\n `${t} is not a valid UUID v4.\n\n- If you're the tool creator, you can take one from https://www.uuidgenerator.net/.\n\n- If you're using a platform tool, verify the uuid isn't misspelled or contact the tool creator.`\n );\n }\n};\nS(Ea, \"_pattern\", /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/), // prettier-ignore\nS(Ea, \"_lut\", [\n \"00\",\n \"01\",\n \"02\",\n \"03\",\n \"04\",\n \"05\",\n \"06\",\n \"07\",\n \"08\",\n \"09\",\n \"0a\",\n \"0b\",\n \"0c\",\n \"0d\",\n \"0e\",\n \"0f\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\",\n \"1a\",\n \"1b\",\n \"1c\",\n \"1d\",\n \"1e\",\n \"1f\",\n \"20\",\n \"21\",\n \"22\",\n \"23\",\n \"24\",\n \"25\",\n \"26\",\n \"27\",\n \"28\",\n \"29\",\n \"2a\",\n \"2b\",\n \"2c\",\n \"2d\",\n \"2e\",\n \"2f\",\n \"30\",\n \"31\",\n \"32\",\n \"33\",\n \"34\",\n \"35\",\n \"36\",\n \"37\",\n \"38\",\n \"39\",\n \"3a\",\n \"3b\",\n \"3c\",\n \"3d\",\n \"3e\",\n \"3f\",\n \"40\",\n \"41\",\n \"42\",\n \"43\",\n \"44\",\n \"45\",\n \"46\",\n \"47\",\n \"48\",\n \"49\",\n \"4a\",\n \"4b\",\n \"4c\",\n \"4d\",\n \"4e\",\n \"4f\",\n \"50\",\n \"51\",\n \"52\",\n \"53\",\n \"54\",\n \"55\",\n \"56\",\n \"57\",\n \"58\",\n \"59\",\n \"5a\",\n \"5b\",\n \"5c\",\n \"5d\",\n \"5e\",\n \"5f\",\n \"60\",\n \"61\",\n \"62\",\n \"63\",\n \"64\",\n \"65\",\n \"66\",\n \"67\",\n \"68\",\n \"69\",\n \"6a\",\n \"6b\",\n \"6c\",\n \"6d\",\n \"6e\",\n \"6f\",\n \"70\",\n \"71\",\n \"72\",\n \"73\",\n \"74\",\n \"75\",\n \"76\",\n \"77\",\n \"78\",\n \"79\",\n \"7a\",\n \"7b\",\n \"7c\",\n \"7d\",\n \"7e\",\n \"7f\",\n \"80\",\n \"81\",\n \"82\",\n \"83\",\n \"84\",\n \"85\",\n \"86\",\n \"87\",\n \"88\",\n \"89\",\n \"8a\",\n \"8b\",\n \"8c\",\n \"8d\",\n \"8e\",\n \"8f\",\n \"90\",\n \"91\",\n \"92\",\n \"93\",\n \"94\",\n \"95\",\n \"96\",\n \"97\",\n \"98\",\n \"99\",\n \"9a\",\n \"9b\",\n \"9c\",\n \"9d\",\n \"9e\",\n \"9f\",\n \"a0\",\n \"a1\",\n \"a2\",\n \"a3\",\n \"a4\",\n \"a5\",\n \"a6\",\n \"a7\",\n \"a8\",\n \"a9\",\n \"aa\",\n \"ab\",\n \"ac\",\n \"ad\",\n \"ae\",\n \"af\",\n \"b0\",\n \"b1\",\n \"b2\",\n \"b3\",\n \"b4\",\n \"b5\",\n \"b6\",\n \"b7\",\n \"b8\",\n \"b9\",\n \"ba\",\n \"bb\",\n \"bc\",\n \"bd\",\n \"be\",\n \"bf\",\n \"c0\",\n \"c1\",\n \"c2\",\n \"c3\",\n \"c4\",\n \"c5\",\n \"c6\",\n \"c7\",\n \"c8\",\n \"c9\",\n \"ca\",\n \"cb\",\n \"cc\",\n \"cd\",\n \"ce\",\n \"cf\",\n \"d0\",\n \"d1\",\n \"d2\",\n \"d3\",\n \"d4\",\n \"d5\",\n \"d6\",\n \"d7\",\n \"d8\",\n \"d9\",\n \"da\",\n \"db\",\n \"dc\",\n \"dd\",\n \"de\",\n \"df\",\n \"e0\",\n \"e1\",\n \"e2\",\n \"e3\",\n \"e4\",\n \"e5\",\n \"e6\",\n \"e7\",\n \"e8\",\n \"e9\",\n \"ea\",\n \"eb\",\n \"ec\",\n \"ed\",\n \"ee\",\n \"ef\",\n \"f0\",\n \"f1\",\n \"f2\",\n \"f3\",\n \"f4\",\n \"f5\",\n \"f6\",\n \"f7\",\n \"f8\",\n \"f9\",\n \"fa\",\n \"fb\",\n \"fc\",\n \"fd\",\n \"fe\",\n \"ff\"\n]);\nlet Na = Ea;\nclass Wd extends Re {\n constructor(t, e) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"onVertexFound\", new $()), S(this, \"onVertexLost\", new $()), S(this, \"onEnabled\", new $()), S(this, \"components\"), S(this, \"workingPlane\", null), S(this, \"_pickedPoint\", null), S(this, \"_config\"), S(this, \"_enabled\", !1), this.components = t, this.config = {\n snapDistance: 0.25,\n showOnlyVertex: !1,\n ...e\n }, this.enabled = !1;\n }\n /**\n * Sets the enabled state of the VertexPicker.\n * When enabled, the VertexPicker will actively search for vertices in the 3D scene.\n * When disabled, the VertexPicker will stop searching for vertices and reset the picked point.\n *\n * @param value - The new enabled state.\n */\n set enabled(t) {\n this._enabled = t, t || (this._pickedPoint = null), this.onEnabled.trigger(t);\n }\n /**\n * Gets the current enabled state of the VertexPicker.\n *\n * @returns The current enabled state.\n */\n get enabled() {\n return this._enabled;\n }\n /**\n * Sets the configuration for the VertexPicker component.\n *\n * @param value - A Partial object containing the configuration properties to update.\n * The properties not provided in the value object will retain their current values.\n *\n * @example\n * ```typescript\n * vertexPicker.config = {\n * snapDistance: 0.5,\n * showOnlyVertex: true,\n * };\n * ```\n */\n set config(t) {\n this._config = { ...this._config, ...t };\n }\n /**\n * Gets the current configuration for the VertexPicker component.\n *\n * @returns A copy of the current VertexPickerConfig object.\n *\n * @example\n * ```typescript\n * const currentConfig = vertexPicker.config;\n * console.log(currentConfig.snapDistance); // Output: 0.25\n * ```\n */\n get config() {\n return this._config;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.onVertexFound.reset(), this.onVertexLost.reset(), this.components = null, this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Performs the vertex picking operation based on the current state of the VertexPicker.\n *\n * @param world - The World instance to use for raycasting.\n *\n * @returns The current picked point, or null if no point is picked.\n *\n * @remarks\n * This method checks if the VertexPicker is enabled. If not, it returns the current picked point.\n * If enabled, it performs raycasting to find the closest intersecting object.\n * It then determines the closest vertex or point on the face, based on the configuration settings.\n * If the picked point is on the working plane (if defined), it triggers the `onVertexFound` event and updates the `pickedPoint`.\n * If the picked point is not on the working plane, it resets the `pickedPoint`.\n * If no intersecting object is found, it triggers the `onVertexLost` event and resets the `pickedPoint`.\n */\n get(t) {\n if (!this.enabled)\n return this._pickedPoint;\n const e = this.components.get(Dt).get(t).castRay();\n if (!e)\n return this._pickedPoint !== null && (this.onVertexLost.trigger(), this._pickedPoint = null), this._pickedPoint;\n const n = this.getClosestVertex(e);\n return n ? !this.workingPlane || Math.abs(this.workingPlane.distanceToPoint(n)) < 1e-3 ? ((this._pickedPoint === null || !this._pickedPoint.equals(n)) && (this._pickedPoint = n.clone(), this.onVertexFound.trigger(this._pickedPoint)), this._pickedPoint) : (this._pickedPoint = null, this._pickedPoint) : (this._pickedPoint !== null && (this.onVertexLost.trigger(), this._pickedPoint = null), this._pickedPoint);\n }\n getClosestVertex(t) {\n let e = new w.Vector3(), n = !1, s = Number.MAX_SAFE_INTEGER;\n const i = this.getVertices(t);\n if (i === null)\n return null;\n for (const r of i) {\n if (!r)\n continue;\n const o = t.point.distanceTo(r);\n o > s || o > this._config.snapDistance || (n = !0, e = r, s = t.point.distanceTo(r));\n }\n return n ? e : this.config.showOnlyVertex ? null : t.point;\n }\n getVertices(t) {\n const e = t.object;\n if (!t.face || !e)\n return null;\n const n = e.geometry, s = new w.Matrix4(), { instanceId: i } = t, r = i !== void 0, o = e instanceof w.InstancedMesh;\n return o && r && e.getMatrixAt(i, s), [\n this.getVertex(t.face.a, n),\n this.getVertex(t.face.b, n),\n this.getVertex(t.face.c, n)\n ].map((l) => (l && (o && r && l.applyMatrix4(s), l.applyMatrix4(e.matrixWorld)), l));\n }\n getVertex(t, e) {\n if (t === void 0)\n return null;\n const n = e.attributes.position;\n return new w.Vector3(\n n.getX(t),\n n.getY(t),\n n.getZ(t)\n );\n }\n}\nconst kc = class zc {\n constructor() {\n S(this, \"onDisposed\", new $()), S(this, \"list\", /* @__PURE__ */ new Map()), S(this, \"enabled\", !1), S(this, \"_clock\"), S(this, \"update\", () => {\n if (!this.enabled)\n return;\n const t = this._clock.getDelta();\n for (const [e, n] of this.list)\n n.enabled && n.isUpdateable() && n.update(t);\n requestAnimationFrame(this.update);\n }), this._clock = new w.Clock(), zc.setupBVH();\n }\n /**\n * Adds a component to the list of components.\n * Throws an error if a component with the same UUID already exists.\n *\n * @param uuid - The unique identifier of the component.\n * @param instance - The instance of the component to be added.\n *\n * @throws Will throw an error if a component with the same UUID already exists.\n *\n * @internal\n */\n add(t, e) {\n if (this.list.has(t))\n throw new Error(\n \"You're trying to add a component that already exists in the components instance. Use Components.get() instead.\"\n );\n Na.validate(t), this.list.set(t, e);\n }\n /**\n * Retrieves a component instance by its constructor function.\n * If the component does not exist in the list, it will be created and added.\n *\n * @template U - The type of the component to retrieve.\n * @param Component - The constructor function of the component to retrieve.\n *\n * @returns The instance of the requested component.\n *\n * @throws Will throw an error if a component with the same UUID already exists.\n *\n * @internal\n */\n get(t) {\n const e = t.uuid;\n if (!this.list.has(e)) {\n const n = new t(this);\n return this.list.has(e) || this.add(e, n), n;\n }\n return this.list.get(e);\n }\n /**\n * Initializes the Components instance.\n * This method starts the animation loop, sets the enabled flag to true,\n * and calls the update method.\n *\n * @returns {void}\n */\n init() {\n this.enabled = !0, this._clock.start(), this.update();\n }\n /**\n * Disposes the memory of all the components and tools of this instance of\n * the library. A memory leak will be created if:\n *\n * - An instance of the library ends up out of scope and this function isn't\n * called. This is especially relevant in Single Page Applications (React,\n * Angular, Vue, etc).\n *\n * - Any of the objects of this instance (meshes, geometries,materials, etc) is\n * referenced by a reference type (object or array).\n *\n * You can learn more about how Three.js handles memory leaks\n * [here](https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects).\n *\n */\n dispose() {\n this.enabled = !1;\n for (const [t, e] of this.list)\n e.enabled = !1, e.isDisposeable() && e.dispose();\n this._clock.stop(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n static setupBVH() {\n w.BufferGeometry.prototype.computeBoundsTree = Md, w.BufferGeometry.prototype.disposeBoundsTree = Od, w.Mesh.prototype.raycast = Pd;\n }\n};\nS(kc, \"release\", \"2.1.1\");\nlet Kd = kc;\nclass jd {\n constructor(t) {\n S(this, \"_event\"), S(this, \"_position\", new w.Vector2()), S(this, \"onDisposed\", new $()), S(this, \"updateMouseInfo\", (e) => {\n this._event = e;\n }), this.dom = t, this.setupEvents(!0);\n }\n /**\n * The real position of the mouse of the Three.js canvas.\n */\n get position() {\n if (this._event) {\n const t = this.dom.getBoundingClientRect();\n this._position.x = this.getPositionX(t, this._event), this._position.y = this.getPositionY(t, this._event);\n }\n return this._position;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n getPositionY(t, e) {\n return -((e.clientY - t.top) / (t.bottom - t.top)) * 2 + 1;\n }\n getPositionX(t, e) {\n return (e.clientX - t.left) / (t.right - t.left) * 2 - 1;\n }\n setupEvents(t) {\n t ? this.dom.addEventListener(\"pointermove\", this.updateMouseInfo) : this.dom.removeEventListener(\"pointermove\", this.updateMouseInfo);\n }\n}\nclass Xd {\n constructor(t, e) {\n S(this, \"enabled\", !0), S(this, \"components\"), S(this, \"onDisposed\", new $()), S(this, \"mouse\"), S(this, \"three\", new w.Raycaster()), S(this, \"world\");\n const n = e.renderer;\n if (!n)\n throw new Error(\"A renderer is needed for the raycaster to work!\");\n this.world = e, this.mouse = new jd(n.three.domElement), this.components = t;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.mouse.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Throws a ray from the camera to the mouse or touch event point and returns\n * the first item found. This also takes into account the clipping planes\n * used by the renderer.\n *\n * @param items - the [meshes](https://threejs.org/docs/#api/en/objects/Mesh)\n * to query. If not provided, it will query all the meshes stored in\n * {@link Components.meshes}.\n */\n castRay(t = Array.from(this.world.meshes)) {\n if (!this.world)\n throw new Error(\"A world is needed to cast rays!\");\n const e = this.world.camera.three;\n return this.three.setFromCamera(this.mouse.position, e), this.intersect(t);\n }\n /**\n * Casts a ray from a given origin in a given direction and returns the first item found.\n * This method also takes into account the clipping planes used by the renderer.\n *\n * @param origin - The origin of the ray.\n * @param direction - The direction of the ray.\n * @param items - The meshes to query. If not provided, it will query all the meshes stored in {@link World.meshes}.\n * @returns The first intersection found or `null` if no intersection was found.\n */\n castRayFromVector(t, e, n = Array.from(this.world.meshes)) {\n return this.three.set(t, e), this.intersect(n);\n }\n intersect(t = Array.from(this.world.meshes)) {\n const e = this.three.intersectObjects(t), n = this.filterClippingPlanes(e);\n return n.length > 0 ? n[0] : null;\n }\n filterClippingPlanes(t) {\n if (!this.world.renderer)\n throw new Error(\"Renderer not found!\");\n const e = this.world.renderer.three;\n if (!e.clippingPlanes)\n return t;\n const n = e.clippingPlanes;\n return t.length <= 0 || !n || (n == null ? void 0 : n.length) <= 0 ? t : t.filter(\n (s) => n.every((i) => i.distanceToPoint(s.point) > 0)\n );\n }\n}\nconst Vc = class Gc extends Re {\n constructor(t) {\n super(t), S(this, \"enabled\", !0), S(this, \"list\", /* @__PURE__ */ new Map()), S(this, \"onDisposed\", new $()), t.add(Gc.uuid, this);\n }\n /**\n * Retrieves a SimpleRaycaster instance for the given world.\n * If a SimpleRaycaster instance already exists for the world, it will be returned.\n * Otherwise, a new SimpleRaycaster instance will be created and added to the list.\n *\n * @param world - The world for which to retrieve or create a SimpleRaycaster instance.\n * @returns The SimpleRaycaster instance for the given world.\n */\n get(t) {\n if (this.list.has(t.uuid))\n return this.list.get(t.uuid);\n const e = new Xd(this.components, t);\n return this.list.set(t.uuid, e), t.onDisposed.add(() => {\n this.delete(t);\n }), e;\n }\n /**\n * Deletes the SimpleRaycaster instance associated with the given world.\n * If a SimpleRaycaster instance exists for the given world, it will be disposed and removed from the list.\n *\n * @param world - The world for which to delete the SimpleRaycaster instance.\n * @returns {void}\n */\n delete(t) {\n const e = this.list.get(t.uuid);\n e && e.dispose(), this.list.delete(t.uuid);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger();\n }\n};\nS(Vc, \"uuid\", \"d5d8bdf0-db25-4952-b951-b643af207ace\");\nlet Dt = Vc;\nclass Zd extends La {\n constructor() {\n super(...arguments), S(this, \"meshes\", /* @__PURE__ */ new Set()), S(this, \"onAfterUpdate\", new $()), S(this, \"onBeforeUpdate\", new $()), S(this, \"onDisposed\", new $()), S(this, \"isDisposing\", !1), S(this, \"enabled\", !0), S(this, \"uuid\", Na.create()), S(this, \"name\"), S(this, \"_scene\"), S(this, \"_camera\"), S(this, \"_renderer\", null);\n }\n /**\n * Getter for the scene. If no scene is initialized, it throws an error.\n * @returns The current scene.\n */\n get scene() {\n if (!this._scene)\n throw new Error(\"No scene initialized!\");\n return this._scene;\n }\n /**\n * Setter for the scene. It sets the current scene, adds the world to the scene's worlds set,\n * sets the current world in the scene, and triggers the scene's onWorldChanged event with the added action.\n * @param scene - The new scene to be set.\n */\n set scene(t) {\n this._scene = t, t.worlds.set(this.uuid, this), t.currentWorld = this, t.onWorldChanged.trigger({ world: this, action: \"added\" });\n }\n /**\n * Getter for the camera. If no camera is initialized, it throws an error.\n * @returns The current camera.\n */\n get camera() {\n if (!this._camera)\n throw new Error(\"No camera initialized!\");\n return this._camera;\n }\n /**\n * Setter for the camera. It sets the current camera, adds the world to the camera's worlds set,\n * sets the current world in the camera, and triggers the camera's onWorldChanged event with the added action.\n * @param camera - The new camera to be set.\n */\n set camera(t) {\n this._camera = t, t.worlds.set(this.uuid, this), t.currentWorld = this, t.onWorldChanged.trigger({ world: this, action: \"added\" });\n }\n /**\n * Getter for the renderer.\n * @returns The current renderer or null if no renderer is set. Some worlds don't need a renderer to work (when your mail goal is not to display a 3D viewport to the user).\n */\n get renderer() {\n return this._renderer;\n }\n /**\n * Setter for the renderer. It sets the current renderer, adds the world to the renderer's worlds set,\n * sets the current world in the renderer, and triggers the renderer's onWorldChanged event with the added action.\n * If a new renderer is set, it also triggers the onWorldChanged event with the removed action for the old renderer.\n * @param renderer - The new renderer to be set or null to remove the current renderer.\n */\n set renderer(t) {\n this._renderer = t, t && (t.worlds.set(this.uuid, this), t.currentWorld = this, t.onWorldChanged.trigger({ world: this, action: \"added\" }));\n }\n /** {@link Updateable.update} */\n update(t) {\n this.enabled && (!this._scene || !this._camera || (this.scene.currentWorld = this, this.camera.currentWorld = this, this.renderer && (this.renderer.currentWorld = this), this.onBeforeUpdate.trigger(), this.scene.isUpdateable() && this.scene.update(t), this.camera.isUpdateable() && this.camera.update(t), this.renderer && this.renderer.update(t), this.onAfterUpdate.trigger()));\n }\n /** {@link Disposable.dispose} */\n dispose(t = !0) {\n if (this.enabled = !1, this.isDisposing = !0, this.scene.onWorldChanged.trigger({ world: this, action: \"removed\" }), this.camera.onWorldChanged.trigger({ world: this, action: \"removed\" }), this.renderer && this.renderer.onWorldChanged.trigger({ world: this, action: \"removed\" }), t) {\n const e = this.components.get(rn);\n this.scene.dispose(), this.camera.isDisposeable() && this.camera.dispose(), this.renderer && this.renderer.dispose();\n for (const n of this.meshes)\n e.destroy(n);\n this.meshes.clear();\n }\n this._scene = null, this._camera = null, this._renderer = null, this.onDisposed.trigger();\n }\n}\nclass Qd extends Ld {\n /**\n * Constructor for the SimpleRenderer class.\n *\n * @param components - The components instance.\n * @param container - The HTML container where the THREE.js canvas will be rendered.\n * @param parameters - Optional parameters for the THREE.js WebGLRenderer.\n */\n constructor(t, e, n) {\n super(t), S(this, \"enabled\", !0), S(this, \"container\"), S(this, \"three\"), S(this, \"_canvas\"), S(this, \"_parameters\"), S(this, \"_resizeObserver\", null), S(this, \"onContainerUpdated\", new $()), S(this, \"_resizing\", !1), S(this, \"resize\", (r) => {\n if (this._resizing)\n return;\n this._resizing = !0, this.onContainerUpdated.trigger();\n const o = r ? r.x : this.container.clientWidth, l = r ? r.y : this.container.clientHeight;\n this.three.setSize(o, l), this.onResize.trigger(new w.Vector2(o, l)), this._resizing = !1;\n }), S(this, \"resizeEvent\", () => {\n this.resize();\n }), S(this, \"onContextLost\", (r) => {\n r.preventDefault(), this.enabled = !1;\n }), S(this, \"onContextBack\", () => {\n this.three.setRenderTarget(null), this.three.dispose(), this.three = new w.WebGLRenderer({\n canvas: this._canvas,\n antialias: !0,\n alpha: !0,\n ...this._parameters\n }), this.enabled = !0;\n }), this.container = e, this._parameters = n, this.three = new w.WebGLRenderer({\n antialias: !0,\n alpha: !0,\n ...n\n }), this.three.setPixelRatio(Math.min(window.devicePixelRatio, 2)), this.setupRenderer(), this.setupEvents(!0), this.resize(), this._canvas = this.three.domElement;\n const s = this.three.getContext(), { canvas: i } = s;\n i.addEventListener(\"webglcontextlost\", this.onContextLost, !1), i.addEventListener(\"webglcontextrestored\", this.onContextBack, !1);\n }\n /** {@link Updateable.update} */\n update() {\n if (!this.enabled || !this.currentWorld)\n return;\n this.onBeforeUpdate.trigger(this);\n const t = this.currentWorld.scene.three, e = this.currentWorld.camera.three;\n this.three.render(t, e), this.onAfterUpdate.trigger(this);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1, this.setupEvents(!1), this.three.domElement.remove(), this.three.dispose(), this.onResize.reset(), this.onAfterUpdate.reset(), this.onBeforeUpdate.reset(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /** {@link Resizeable.getSize}. */\n getSize() {\n return new w.Vector2(\n this.three.domElement.clientWidth,\n this.three.domElement.clientHeight\n );\n }\n /**\n * Sets up and manages the event listeners for the renderer.\n *\n * @param active - A boolean indicating whether to activate or deactivate the event listeners.\n *\n * @throws Will throw an error if the renderer does not have an HTML container.\n */\n setupEvents(t) {\n const e = this.three.domElement.parentElement;\n if (!e)\n throw new Error(\"This renderer needs to have an HTML container!\");\n this._resizeObserver && (this._resizeObserver.disconnect(), this._resizeObserver = null), window.removeEventListener(\"resize\", this.resizeEvent), t && (this._resizeObserver = new ResizeObserver(this.resizeEvent), this._resizeObserver.observe(e), window.addEventListener(\"resize\", this.resizeEvent));\n }\n setupRenderer() {\n this.three.localClippingEnabled = !0, this.container && this.container.appendChild(this.three.domElement), this.onContainerUpdated.trigger();\n }\n}\n/*!\n * camera-controls\n * https://github.com/yomotsu/camera-controls\n * (c) 2017 @yomotsu\n * Released under the MIT License.\n */\nconst ye = {\n LEFT: 1,\n RIGHT: 2,\n MIDDLE: 4\n}, J = Object.freeze({\n NONE: 0,\n ROTATE: 1,\n TRUCK: 2,\n OFFSET: 4,\n DOLLY: 8,\n ZOOM: 16,\n TOUCH_ROTATE: 32,\n TOUCH_TRUCK: 64,\n TOUCH_OFFSET: 128,\n TOUCH_DOLLY: 256,\n TOUCH_ZOOM: 512,\n TOUCH_DOLLY_TRUCK: 1024,\n TOUCH_DOLLY_OFFSET: 2048,\n TOUCH_DOLLY_ROTATE: 4096,\n TOUCH_ZOOM_TRUCK: 8192,\n TOUCH_ZOOM_OFFSET: 16384,\n TOUCH_ZOOM_ROTATE: 32768\n}), rs = {\n NONE: 0,\n IN: 1,\n OUT: -1\n};\nfunction On(h) {\n return h.isPerspectiveCamera;\n}\nfunction gn(h) {\n return h.isOrthographicCamera;\n}\nconst os = Math.PI * 2, Vl = Math.PI / 2, Yc = 1e-5, Ws = Math.PI / 180;\nfunction Pt(h, t, e) {\n return Math.max(t, Math.min(e, h));\n}\nfunction Ue(h, t = Yc) {\n return Math.abs(h) < t;\n}\nfunction De(h, t, e = Yc) {\n return Ue(h - t, e);\n}\nfunction Gl(h, t) {\n return Math.round(h / t) * t;\n}\nfunction Ks(h) {\n return isFinite(h) ? h : h < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n}\nfunction js(h) {\n return Math.abs(h) < Number.MAX_VALUE ? h : h * (1 / 0);\n}\nfunction rr(h, t, e, n, s = 1 / 0, i) {\n n = Math.max(1e-4, n);\n const r = 2 / n, o = r * i, l = 1 / (1 + o + 0.48 * o * o + 0.235 * o * o * o);\n let u = h - t;\n const d = t, m = s * n;\n u = Pt(u, -m, m), t = h - u;\n const f = (e.value + r * u) * i;\n e.value = (e.value - r * f) * l;\n let g = t + (u + f) * l;\n return d - h > 0 == g > d && (g = d, e.value = (g - d) / i), g;\n}\nfunction Yl(h, t, e, n, s = 1 / 0, i, r) {\n n = Math.max(1e-4, n);\n const o = 2 / n, l = o * i, u = 1 / (1 + l + 0.48 * l * l + 0.235 * l * l * l);\n let d = t.x, m = t.y, f = t.z, g = h.x - d, v = h.y - m, y = h.z - f;\n const x = d, A = m, F = f, P = s * n, C = P * P, O = g * g + v * v + y * y;\n if (O > C) {\n const me = Math.sqrt(O);\n g = g / me * P, v = v / me * P, y = y / me * P;\n }\n d = h.x - g, m = h.y - v, f = h.z - y;\n const U = (e.x + o * g) * i, Y = (e.y + o * v) * i, H = (e.z + o * y) * i;\n e.x = (e.x - o * U) * u, e.y = (e.y - o * Y) * u, e.z = (e.z - o * H) * u, r.x = d + (g + U) * u, r.y = m + (v + Y) * u, r.z = f + (y + H) * u;\n const K = x - h.x, Z = A - h.y, q = F - h.z, ne = r.x - x, se = r.y - A, he = r.z - F;\n return K * ne + Z * se + q * he > 0 && (r.x = x, r.y = A, r.z = F, e.x = (r.x - x) / i, e.y = (r.y - A) / i, e.z = (r.z - F) / i), r;\n}\nfunction Zo(h, t) {\n t.set(0, 0), h.forEach((e) => {\n t.x += e.clientX, t.y += e.clientY;\n }), t.x /= h.length, t.y /= h.length;\n}\nfunction Qo(h, t) {\n return gn(h) ? (console.warn(`${t} is not supported in OrthographicCamera`), !0) : !1;\n}\nclass qd {\n constructor() {\n this._listeners = {};\n }\n /**\n * Adds the specified event listener.\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n addEventListener(t, e) {\n const n = this._listeners;\n n[t] === void 0 && (n[t] = []), n[t].indexOf(e) === -1 && n[t].push(e);\n }\n /**\n * Presence of the specified event listener.\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n hasEventListener(t, e) {\n const n = this._listeners;\n return n[t] !== void 0 && n[t].indexOf(e) !== -1;\n }\n /**\n * Removes the specified event listener\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n removeEventListener(t, e) {\n const n = this._listeners[t];\n if (n !== void 0) {\n const s = n.indexOf(e);\n s !== -1 && n.splice(s, 1);\n }\n }\n /**\n * Removes all event listeners\n * @param type event name\n * @category Methods\n */\n removeAllEventListeners(t) {\n if (!t) {\n this._listeners = {};\n return;\n }\n Array.isArray(this._listeners[t]) && (this._listeners[t].length = 0);\n }\n /**\n * Fire an event type.\n * @param event DispatcherEvent\n * @category Methods\n */\n dispatchEvent(t) {\n const e = this._listeners[t.type];\n if (e !== void 0) {\n t.target = this;\n const n = e.slice(0);\n for (let s = 0, i = n.length; s < i; s++)\n n[s].call(this, t);\n }\n }\n}\nconst Jd = \"2.7.3\", or = 1 / 8, Hc = typeof window < \"u\", $d = Hc && /Mac/.test(navigator.platform), ef = !(Hc && \"PointerEvent\" in window);\nlet ve, Hl, ar, qo, dt, be, Pe, as, Xs, zt, Vt, Dn, Wl, Kl, yt, Zs, ls, jl, Jo, Xl, $o, ea, lr;\nclass ai extends qd {\n /**\n * Injects THREE as the dependency. You can then proceed to use CameraControls.\n *\n * e.g\n * ```javascript\n * CameraControls.install( { THREE: THREE } );\n * ```\n *\n * Note: If you do not wish to use enter three.js to reduce file size(tree-shaking for example), make a subset to install.\n *\n * ```js\n * import {\n * \tVector2,\n * \tVector3,\n * \tVector4,\n * \tQuaternion,\n * \tMatrix4,\n * \tSpherical,\n * \tBox3,\n * \tSphere,\n * \tRaycaster,\n * \tMathUtils,\n * } from 'three';\n *\n * const subsetOfTHREE = {\n * \tVector2 : Vector2,\n * \tVector3 : Vector3,\n * \tVector4 : Vector4,\n * \tQuaternion: Quaternion,\n * \tMatrix4 : Matrix4,\n * \tSpherical : Spherical,\n * \tBox3 : Box3,\n * \tSphere : Sphere,\n * \tRaycaster : Raycaster,\n * };\n \n * CameraControls.install( { THREE: subsetOfTHREE } );\n * ```\n * @category Statics\n */\n static install(t) {\n ve = t.THREE, Hl = Object.freeze(new ve.Vector3(0, 0, 0)), ar = Object.freeze(new ve.Vector3(0, 1, 0)), qo = Object.freeze(new ve.Vector3(0, 0, 1)), dt = new ve.Vector2(), be = new ve.Vector3(), Pe = new ve.Vector3(), as = new ve.Vector3(), Xs = new ve.Vector3(), zt = new ve.Vector3(), Vt = new ve.Vector3(), Dn = new ve.Vector3(), Wl = new ve.Vector3(), Kl = new ve.Vector3(), yt = new ve.Spherical(), Zs = new ve.Spherical(), ls = new ve.Box3(), jl = new ve.Box3(), Jo = new ve.Sphere(), Xl = new ve.Quaternion(), $o = new ve.Quaternion(), ea = new ve.Matrix4(), lr = new ve.Raycaster();\n }\n /**\n * list all ACTIONs\n * @category Statics\n */\n static get ACTION() {\n return J;\n }\n /**\n * Creates a `CameraControls` instance.\n *\n * Note:\n * You **must install** three.js before using camera-controls. see [#install](#install)\n * Not doing so will lead to runtime errors (`undefined` references to THREE).\n *\n * e.g.\n * ```\n * CameraControls.install( { THREE } );\n * const cameraControls = new CameraControls( camera, domElement );\n * ```\n *\n * @param camera A `THREE.PerspectiveCamera` or `THREE.OrthographicCamera` to be controlled.\n * @param domElement A `HTMLElement` for the draggable area, usually `renderer.domElement`.\n * @category Constructor\n */\n constructor(t, e) {\n super(), this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.minDistance = Number.EPSILON, this.maxDistance = 1 / 0, this.infinityDolly = !1, this.minZoom = 0.01, this.maxZoom = 1 / 0, this.smoothTime = 0.25, this.draggingSmoothTime = 0.125, this.maxSpeed = 1 / 0, this.azimuthRotateSpeed = 1, this.polarRotateSpeed = 1, this.dollySpeed = 1, this.dollyDragInverted = !1, this.truckSpeed = 2, this.dollyToCursor = !1, this.dragToOffset = !1, this.verticalDragToForward = !1, this.boundaryFriction = 0, this.restThreshold = 0.01, this.colliderMeshes = [], this.cancel = () => {\n }, this._enabled = !0, this._state = J.NONE, this._viewport = null, this._changedDolly = 0, this._changedZoom = 0, this._hasRested = !0, this._boundaryEnclosesCamera = !1, this._needsUpdate = !0, this._updatedLastTime = !1, this._elementRect = new DOMRect(), this._isDragging = !1, this._dragNeedsUpdate = !0, this._activePointers = [], this._lockedPointer = null, this._interactiveArea = new DOMRect(0, 0, 1, 1), this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._isUserControllingOffset = !1, this._isUserControllingZoom = !1, this._lastDollyDirection = rs.NONE, this._thetaVelocity = { value: 0 }, this._phiVelocity = { value: 0 }, this._radiusVelocity = { value: 0 }, this._targetVelocity = new ve.Vector3(), this._focalOffsetVelocity = new ve.Vector3(), this._zoomVelocity = { value: 0 }, this._truckInternal = (C, O, U) => {\n let Y, H;\n if (On(this._camera)) {\n const K = be.copy(this._camera.position).sub(this._target), Z = this._camera.getEffectiveFOV() * Ws, q = K.length() * Math.tan(Z * 0.5);\n Y = this.truckSpeed * C * q / this._elementRect.height, H = this.truckSpeed * O * q / this._elementRect.height;\n } else if (gn(this._camera)) {\n const K = this._camera;\n Y = C * (K.right - K.left) / K.zoom / this._elementRect.width, H = O * (K.top - K.bottom) / K.zoom / this._elementRect.height;\n } else\n return;\n this.verticalDragToForward ? (U ? this.setFocalOffset(this._focalOffsetEnd.x + Y, this._focalOffsetEnd.y, this._focalOffsetEnd.z, !0) : this.truck(Y, 0, !0), this.forward(-H, !0)) : U ? this.setFocalOffset(this._focalOffsetEnd.x + Y, this._focalOffsetEnd.y + H, this._focalOffsetEnd.z, !0) : this.truck(Y, H, !0);\n }, this._rotateInternal = (C, O) => {\n const U = os * this.azimuthRotateSpeed * C / this._elementRect.height, Y = os * this.polarRotateSpeed * O / this._elementRect.height;\n this.rotate(U, Y, !0);\n }, this._dollyInternal = (C, O, U) => {\n const Y = Math.pow(0.95, -C * this.dollySpeed), H = this._sphericalEnd.radius, K = this._sphericalEnd.radius * Y, Z = Pt(K, this.minDistance, this.maxDistance), q = Z - K;\n this.infinityDolly && this.dollyToCursor ? this._dollyToNoClamp(K, !0) : this.infinityDolly && !this.dollyToCursor ? (this.dollyInFixed(q, !0), this._dollyToNoClamp(Z, !0)) : this._dollyToNoClamp(Z, !0), this.dollyToCursor && (this._changedDolly += (this.infinityDolly ? K : Z) - H, this._dollyControlCoord.set(O, U)), this._lastDollyDirection = Math.sign(-C);\n }, this._zoomInternal = (C, O, U) => {\n const Y = Math.pow(0.95, C * this.dollySpeed), H = this._zoom, K = this._zoom * Y;\n this.zoomTo(K, !0), this.dollyToCursor && (this._changedZoom += K - H, this._dollyControlCoord.set(O, U));\n }, typeof ve > \"u\" && console.error(\"camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information.\"), this._camera = t, this._yAxisUpSpace = new ve.Quaternion().setFromUnitVectors(this._camera.up, ar), this._yAxisUpSpaceInverse = this._yAxisUpSpace.clone().invert(), this._state = J.NONE, this._target = new ve.Vector3(), this._targetEnd = this._target.clone(), this._focalOffset = new ve.Vector3(), this._focalOffsetEnd = this._focalOffset.clone(), this._spherical = new ve.Spherical().setFromVector3(be.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)), this._sphericalEnd = this._spherical.clone(), this._lastDistance = this._spherical.radius, this._zoom = this._camera.zoom, this._zoomEnd = this._zoom, this._lastZoom = this._zoom, this._nearPlaneCorners = [\n new ve.Vector3(),\n new ve.Vector3(),\n new ve.Vector3(),\n new ve.Vector3()\n ], this._updateNearPlaneCorners(), this._boundary = new ve.Box3(new ve.Vector3(-1 / 0, -1 / 0, -1 / 0), new ve.Vector3(1 / 0, 1 / 0, 1 / 0)), this._cameraUp0 = this._camera.up.clone(), this._target0 = this._target.clone(), this._position0 = this._camera.position.clone(), this._zoom0 = this._zoom, this._focalOffset0 = this._focalOffset.clone(), this._dollyControlCoord = new ve.Vector2(), this.mouseButtons = {\n left: J.ROTATE,\n middle: J.DOLLY,\n right: J.TRUCK,\n wheel: On(this._camera) ? J.DOLLY : gn(this._camera) ? J.ZOOM : J.NONE\n }, this.touches = {\n one: J.TOUCH_ROTATE,\n two: On(this._camera) ? J.TOUCH_DOLLY_TRUCK : gn(this._camera) ? J.TOUCH_ZOOM_TRUCK : J.NONE,\n three: J.TOUCH_TRUCK\n };\n const n = new ve.Vector2(), s = new ve.Vector2(), i = new ve.Vector2(), r = (C) => {\n if (!this._enabled || !this._domElement)\n return;\n if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n const Y = this._domElement.getBoundingClientRect(), H = C.clientX / Y.width, K = C.clientY / Y.height;\n if (H < this._interactiveArea.left || H > this._interactiveArea.right || K < this._interactiveArea.top || K > this._interactiveArea.bottom)\n return;\n }\n const O = C.pointerType !== \"mouse\" ? null : (C.buttons & ye.LEFT) === ye.LEFT ? ye.LEFT : (C.buttons & ye.MIDDLE) === ye.MIDDLE ? ye.MIDDLE : (C.buttons & ye.RIGHT) === ye.RIGHT ? ye.RIGHT : null;\n if (O !== null) {\n const Y = this._findPointerByMouseButton(O);\n Y && this._disposePointer(Y);\n }\n if ((C.buttons & ye.LEFT) === ye.LEFT && this._lockedPointer)\n return;\n const U = {\n pointerId: C.pointerId,\n clientX: C.clientX,\n clientY: C.clientY,\n deltaX: 0,\n deltaY: 0,\n mouseButton: O\n };\n this._activePointers.push(U), this._domElement.ownerDocument.removeEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"pointerup\", d), this._domElement.ownerDocument.addEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.addEventListener(\"pointerup\", d), this._isDragging = !0, y(C);\n }, o = (C) => {\n if (!this._enabled || !this._domElement || this._lockedPointer)\n return;\n if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n const Y = this._domElement.getBoundingClientRect(), H = C.clientX / Y.width, K = C.clientY / Y.height;\n if (H < this._interactiveArea.left || H > this._interactiveArea.right || K < this._interactiveArea.top || K > this._interactiveArea.bottom)\n return;\n }\n const O = (C.buttons & ye.LEFT) === ye.LEFT ? ye.LEFT : (C.buttons & ye.MIDDLE) === ye.MIDDLE ? ye.MIDDLE : (C.buttons & ye.RIGHT) === ye.RIGHT ? ye.RIGHT : null;\n if (O !== null) {\n const Y = this._findPointerByMouseButton(O);\n Y && this._disposePointer(Y);\n }\n const U = {\n pointerId: 1,\n clientX: C.clientX,\n clientY: C.clientY,\n deltaX: 0,\n deltaY: 0,\n mouseButton: (C.buttons & ye.LEFT) === ye.LEFT ? ye.LEFT : (C.buttons & ye.MIDDLE) === ye.LEFT ? ye.MIDDLE : (C.buttons & ye.RIGHT) === ye.LEFT ? ye.RIGHT : null\n };\n this._activePointers.push(U), this._domElement.ownerDocument.removeEventListener(\"mousemove\", u), this._domElement.ownerDocument.removeEventListener(\"mouseup\", m), this._domElement.ownerDocument.addEventListener(\"mousemove\", u), this._domElement.ownerDocument.addEventListener(\"mouseup\", m), this._isDragging = !0, y(C);\n }, l = (C) => {\n C.cancelable && C.preventDefault();\n const O = C.pointerId, U = this._lockedPointer || this._findPointerById(O);\n if (U) {\n if (U.clientX = C.clientX, U.clientY = C.clientY, U.deltaX = C.movementX, U.deltaY = C.movementY, this._state = 0, C.pointerType === \"touch\")\n switch (this._activePointers.length) {\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n else\n (!this._isDragging && this._lockedPointer || this._isDragging && (C.buttons & ye.LEFT) === ye.LEFT) && (this._state = this._state | this.mouseButtons.left), this._isDragging && (C.buttons & ye.MIDDLE) === ye.MIDDLE && (this._state = this._state | this.mouseButtons.middle), this._isDragging && (C.buttons & ye.RIGHT) === ye.RIGHT && (this._state = this._state | this.mouseButtons.right);\n x();\n }\n }, u = (C) => {\n const O = this._lockedPointer || this._findPointerById(1);\n O && (O.clientX = C.clientX, O.clientY = C.clientY, O.deltaX = C.movementX, O.deltaY = C.movementY, this._state = 0, (this._lockedPointer || (C.buttons & ye.LEFT) === ye.LEFT) && (this._state = this._state | this.mouseButtons.left), (C.buttons & ye.MIDDLE) === ye.MIDDLE && (this._state = this._state | this.mouseButtons.middle), (C.buttons & ye.RIGHT) === ye.RIGHT && (this._state = this._state | this.mouseButtons.right), x());\n }, d = (C) => {\n const O = this._findPointerById(C.pointerId);\n if (!(O && O === this._lockedPointer)) {\n if (O && this._disposePointer(O), C.pointerType === \"touch\")\n switch (this._activePointers.length) {\n case 0:\n this._state = J.NONE;\n break;\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n else\n this._state = J.NONE;\n A();\n }\n }, m = () => {\n const C = this._findPointerById(1);\n C && C === this._lockedPointer || (C && this._disposePointer(C), this._state = J.NONE, A());\n };\n let f = -1;\n const g = (C) => {\n if (!this._domElement || !this._enabled || this.mouseButtons.wheel === J.NONE)\n return;\n if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n const K = this._domElement.getBoundingClientRect(), Z = C.clientX / K.width, q = C.clientY / K.height;\n if (Z < this._interactiveArea.left || Z > this._interactiveArea.right || q < this._interactiveArea.top || q > this._interactiveArea.bottom)\n return;\n }\n if (C.preventDefault(), this.dollyToCursor || this.mouseButtons.wheel === J.ROTATE || this.mouseButtons.wheel === J.TRUCK) {\n const K = performance.now();\n f - K < 1e3 && this._getClientRect(this._elementRect), f = K;\n }\n const O = $d ? -1 : -3, U = C.deltaMode === 1 ? C.deltaY / O : C.deltaY / (O * 10), Y = this.dollyToCursor ? (C.clientX - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0, H = this.dollyToCursor ? (C.clientY - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n switch (this.mouseButtons.wheel) {\n case J.ROTATE: {\n this._rotateInternal(C.deltaX, C.deltaY), this._isUserControllingRotate = !0;\n break;\n }\n case J.TRUCK: {\n this._truckInternal(C.deltaX, C.deltaY, !1), this._isUserControllingTruck = !0;\n break;\n }\n case J.OFFSET: {\n this._truckInternal(C.deltaX, C.deltaY, !0), this._isUserControllingOffset = !0;\n break;\n }\n case J.DOLLY: {\n this._dollyInternal(-U, Y, H), this._isUserControllingDolly = !0;\n break;\n }\n case J.ZOOM: {\n this._zoomInternal(-U, Y, H), this._isUserControllingZoom = !0;\n break;\n }\n }\n this.dispatchEvent({ type: \"control\" });\n }, v = (C) => {\n if (!(!this._domElement || !this._enabled)) {\n if (this.mouseButtons.right === ai.ACTION.NONE) {\n const O = C instanceof PointerEvent ? C.pointerId : 0, U = this._findPointerById(O);\n U && this._disposePointer(U), this._domElement.ownerDocument.removeEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"pointerup\", d), this._domElement.ownerDocument.removeEventListener(\"mousemove\", u), this._domElement.ownerDocument.removeEventListener(\"mouseup\", m);\n return;\n }\n C.preventDefault();\n }\n }, y = (C) => {\n if (this._enabled) {\n if (Zo(this._activePointers, dt), this._getClientRect(this._elementRect), n.copy(dt), s.copy(dt), this._activePointers.length >= 2) {\n const O = dt.x - this._activePointers[1].clientX, U = dt.y - this._activePointers[1].clientY, Y = Math.sqrt(O * O + U * U);\n i.set(0, Y);\n const H = (this._activePointers[0].clientX + this._activePointers[1].clientX) * 0.5, K = (this._activePointers[0].clientY + this._activePointers[1].clientY) * 0.5;\n s.set(H, K);\n }\n if (this._state = 0, !C)\n this._lockedPointer && (this._state = this._state | this.mouseButtons.left);\n else if (\"pointerType\" in C && C.pointerType === \"touch\")\n switch (this._activePointers.length) {\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n else\n !this._lockedPointer && (C.buttons & ye.LEFT) === ye.LEFT && (this._state = this._state | this.mouseButtons.left), (C.buttons & ye.MIDDLE) === ye.MIDDLE && (this._state = this._state | this.mouseButtons.middle), (C.buttons & ye.RIGHT) === ye.RIGHT && (this._state = this._state | this.mouseButtons.right);\n ((this._state & J.ROTATE) === J.ROTATE || (this._state & J.TOUCH_ROTATE) === J.TOUCH_ROTATE || (this._state & J.TOUCH_DOLLY_ROTATE) === J.TOUCH_DOLLY_ROTATE || (this._state & J.TOUCH_ZOOM_ROTATE) === J.TOUCH_ZOOM_ROTATE) && (this._sphericalEnd.theta = this._spherical.theta, this._sphericalEnd.phi = this._spherical.phi, this._thetaVelocity.value = 0, this._phiVelocity.value = 0), ((this._state & J.TRUCK) === J.TRUCK || (this._state & J.TOUCH_TRUCK) === J.TOUCH_TRUCK || (this._state & J.TOUCH_DOLLY_TRUCK) === J.TOUCH_DOLLY_TRUCK || (this._state & J.TOUCH_ZOOM_TRUCK) === J.TOUCH_ZOOM_TRUCK) && (this._targetEnd.copy(this._target), this._targetVelocity.set(0, 0, 0)), ((this._state & J.DOLLY) === J.DOLLY || (this._state & J.TOUCH_DOLLY) === J.TOUCH_DOLLY || (this._state & J.TOUCH_DOLLY_TRUCK) === J.TOUCH_DOLLY_TRUCK || (this._state & J.TOUCH_DOLLY_OFFSET) === J.TOUCH_DOLLY_OFFSET || (this._state & J.TOUCH_DOLLY_ROTATE) === J.TOUCH_DOLLY_ROTATE) && (this._sphericalEnd.radius = this._spherical.radius, this._radiusVelocity.value = 0), ((this._state & J.ZOOM) === J.ZOOM || (this._state & J.TOUCH_ZOOM) === J.TOUCH_ZOOM || (this._state & J.TOUCH_ZOOM_TRUCK) === J.TOUCH_ZOOM_TRUCK || (this._state & J.TOUCH_ZOOM_OFFSET) === J.TOUCH_ZOOM_OFFSET || (this._state & J.TOUCH_ZOOM_ROTATE) === J.TOUCH_ZOOM_ROTATE) && (this._zoomEnd = this._zoom, this._zoomVelocity.value = 0), ((this._state & J.OFFSET) === J.OFFSET || (this._state & J.TOUCH_OFFSET) === J.TOUCH_OFFSET || (this._state & J.TOUCH_DOLLY_OFFSET) === J.TOUCH_DOLLY_OFFSET || (this._state & J.TOUCH_ZOOM_OFFSET) === J.TOUCH_ZOOM_OFFSET) && (this._focalOffsetEnd.copy(this._focalOffset), this._focalOffsetVelocity.set(0, 0, 0)), this.dispatchEvent({ type: \"controlstart\" });\n }\n }, x = () => {\n if (!this._enabled || !this._dragNeedsUpdate)\n return;\n this._dragNeedsUpdate = !1, Zo(this._activePointers, dt);\n const C = this._domElement && document.pointerLockElement === this._domElement ? this._lockedPointer || this._activePointers[0] : null, O = C ? -C.deltaX : s.x - dt.x, U = C ? -C.deltaY : s.y - dt.y;\n if (s.copy(dt), ((this._state & J.ROTATE) === J.ROTATE || (this._state & J.TOUCH_ROTATE) === J.TOUCH_ROTATE || (this._state & J.TOUCH_DOLLY_ROTATE) === J.TOUCH_DOLLY_ROTATE || (this._state & J.TOUCH_ZOOM_ROTATE) === J.TOUCH_ZOOM_ROTATE) && (this._rotateInternal(O, U), this._isUserControllingRotate = !0), (this._state & J.DOLLY) === J.DOLLY || (this._state & J.ZOOM) === J.ZOOM) {\n const Y = this.dollyToCursor ? (n.x - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0, H = this.dollyToCursor ? (n.y - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0, K = this.dollyDragInverted ? -1 : 1;\n (this._state & J.DOLLY) === J.DOLLY ? (this._dollyInternal(K * U * or, Y, H), this._isUserControllingDolly = !0) : (this._zoomInternal(K * U * or, Y, H), this._isUserControllingZoom = !0);\n }\n if ((this._state & J.TOUCH_DOLLY) === J.TOUCH_DOLLY || (this._state & J.TOUCH_ZOOM) === J.TOUCH_ZOOM || (this._state & J.TOUCH_DOLLY_TRUCK) === J.TOUCH_DOLLY_TRUCK || (this._state & J.TOUCH_ZOOM_TRUCK) === J.TOUCH_ZOOM_TRUCK || (this._state & J.TOUCH_DOLLY_OFFSET) === J.TOUCH_DOLLY_OFFSET || (this._state & J.TOUCH_ZOOM_OFFSET) === J.TOUCH_ZOOM_OFFSET || (this._state & J.TOUCH_DOLLY_ROTATE) === J.TOUCH_DOLLY_ROTATE || (this._state & J.TOUCH_ZOOM_ROTATE) === J.TOUCH_ZOOM_ROTATE) {\n const Y = dt.x - this._activePointers[1].clientX, H = dt.y - this._activePointers[1].clientY, K = Math.sqrt(Y * Y + H * H), Z = i.y - K;\n i.set(0, K);\n const q = this.dollyToCursor ? (s.x - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0, ne = this.dollyToCursor ? (s.y - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n (this._state & J.TOUCH_DOLLY) === J.TOUCH_DOLLY || (this._state & J.TOUCH_DOLLY_ROTATE) === J.TOUCH_DOLLY_ROTATE || (this._state & J.TOUCH_DOLLY_TRUCK) === J.TOUCH_DOLLY_TRUCK || (this._state & J.TOUCH_DOLLY_OFFSET) === J.TOUCH_DOLLY_OFFSET ? (this._dollyInternal(Z * or, q, ne), this._isUserControllingDolly = !0) : (this._zoomInternal(Z * or, q, ne), this._isUserControllingZoom = !0);\n }\n ((this._state & J.TRUCK) === J.TRUCK || (this._state & J.TOUCH_TRUCK) === J.TOUCH_TRUCK || (this._state & J.TOUCH_DOLLY_TRUCK) === J.TOUCH_DOLLY_TRUCK || (this._state & J.TOUCH_ZOOM_TRUCK) === J.TOUCH_ZOOM_TRUCK) && (this._truckInternal(O, U, !1), this._isUserControllingTruck = !0), ((this._state & J.OFFSET) === J.OFFSET || (this._state & J.TOUCH_OFFSET) === J.TOUCH_OFFSET || (this._state & J.TOUCH_DOLLY_OFFSET) === J.TOUCH_DOLLY_OFFSET || (this._state & J.TOUCH_ZOOM_OFFSET) === J.TOUCH_ZOOM_OFFSET) && (this._truckInternal(O, U, !0), this._isUserControllingOffset = !0), this.dispatchEvent({ type: \"control\" });\n }, A = () => {\n Zo(this._activePointers, dt), s.copy(dt), this._dragNeedsUpdate = !1, (this._activePointers.length === 0 || this._activePointers.length === 1 && this._activePointers[0] === this._lockedPointer) && (this._isDragging = !1), this._activePointers.length === 0 && this._domElement && (this._domElement.ownerDocument.removeEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"mousemove\", u), this._domElement.ownerDocument.removeEventListener(\"pointerup\", d), this._domElement.ownerDocument.removeEventListener(\"mouseup\", m), this.dispatchEvent({ type: \"controlend\" }));\n };\n this.lockPointer = () => {\n !this._enabled || !this._domElement || (this.cancel(), this._lockedPointer = {\n pointerId: -1,\n clientX: 0,\n clientY: 0,\n deltaX: 0,\n deltaY: 0,\n mouseButton: null\n }, this._activePointers.push(this._lockedPointer), this._domElement.ownerDocument.removeEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"pointerup\", d), this._domElement.requestPointerLock(), this._domElement.ownerDocument.addEventListener(\"pointerlockchange\", F), this._domElement.ownerDocument.addEventListener(\"pointerlockerror\", P), this._domElement.ownerDocument.addEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.addEventListener(\"pointerup\", d), y());\n }, this.unlockPointer = () => {\n this._lockedPointer !== null && (this._disposePointer(this._lockedPointer), this._lockedPointer = null), document.exitPointerLock(), this.cancel(), this._domElement && (this._domElement.ownerDocument.removeEventListener(\"pointerlockchange\", F), this._domElement.ownerDocument.removeEventListener(\"pointerlockerror\", P));\n };\n const F = () => {\n this._domElement && this._domElement.ownerDocument.pointerLockElement === this._domElement || this.unlockPointer();\n }, P = () => {\n this.unlockPointer();\n };\n this._addAllEventListeners = (C) => {\n this._domElement = C, this._domElement.style.touchAction = \"none\", this._domElement.style.userSelect = \"none\", this._domElement.style.webkitUserSelect = \"none\", this._domElement.addEventListener(\"pointerdown\", r), ef && this._domElement.addEventListener(\"mousedown\", o), this._domElement.addEventListener(\"pointercancel\", d), this._domElement.addEventListener(\"wheel\", g, { passive: !1 }), this._domElement.addEventListener(\"contextmenu\", v);\n }, this._removeAllEventListeners = () => {\n this._domElement && (this._domElement.style.touchAction = \"\", this._domElement.style.userSelect = \"\", this._domElement.style.webkitUserSelect = \"\", this._domElement.removeEventListener(\"pointerdown\", r), this._domElement.removeEventListener(\"mousedown\", o), this._domElement.removeEventListener(\"pointercancel\", d), this._domElement.removeEventListener(\"wheel\", g, { passive: !1 }), this._domElement.removeEventListener(\"contextmenu\", v), this._domElement.ownerDocument.removeEventListener(\"pointermove\", l, { passive: !1 }), this._domElement.ownerDocument.removeEventListener(\"mousemove\", u), this._domElement.ownerDocument.removeEventListener(\"pointerup\", d), this._domElement.ownerDocument.removeEventListener(\"mouseup\", m), this._domElement.ownerDocument.removeEventListener(\"pointerlockchange\", F), this._domElement.ownerDocument.removeEventListener(\"pointerlockerror\", P));\n }, this.cancel = () => {\n this._state !== J.NONE && (this._state = J.NONE, this._activePointers.length = 0, A());\n }, e && this.connect(e), this.update(0);\n }\n /**\n * The camera to be controlled\n * @category Properties\n */\n get camera() {\n return this._camera;\n }\n set camera(t) {\n this._camera = t, this.updateCameraUp(), this._camera.updateProjectionMatrix(), this._updateNearPlaneCorners(), this._needsUpdate = !0;\n }\n /**\n * Whether or not the controls are enabled.\n * `false` to disable user dragging/touch-move, but all methods works.\n * @category Properties\n */\n get enabled() {\n return this._enabled;\n }\n set enabled(t) {\n this._enabled = t, this._domElement && (t ? (this._domElement.style.touchAction = \"none\", this._domElement.style.userSelect = \"none\", this._domElement.style.webkitUserSelect = \"none\") : (this.cancel(), this._domElement.style.touchAction = \"\", this._domElement.style.userSelect = \"\", this._domElement.style.webkitUserSelect = \"\"));\n }\n /**\n * Returns `true` if the controls are active updating.\n * readonly value.\n * @category Properties\n */\n get active() {\n return !this._hasRested;\n }\n /**\n * Getter for the current `ACTION`.\n * readonly value.\n * @category Properties\n */\n get currentAction() {\n return this._state;\n }\n /**\n * get/set Current distance.\n * @category Properties\n */\n get distance() {\n return this._spherical.radius;\n }\n set distance(t) {\n this._spherical.radius === t && this._sphericalEnd.radius === t || (this._spherical.radius = t, this._sphericalEnd.radius = t, this._needsUpdate = !0);\n }\n // horizontal angle\n /**\n * get/set the azimuth angle (horizontal) in radians.\n * Every 360 degrees turn is added to `.azimuthAngle` value, which is accumulative.\n * @category Properties\n */\n get azimuthAngle() {\n return this._spherical.theta;\n }\n set azimuthAngle(t) {\n this._spherical.theta === t && this._sphericalEnd.theta === t || (this._spherical.theta = t, this._sphericalEnd.theta = t, this._needsUpdate = !0);\n }\n // vertical angle\n /**\n * get/set the polar angle (vertical) in radians.\n * @category Properties\n */\n get polarAngle() {\n return this._spherical.phi;\n }\n set polarAngle(t) {\n this._spherical.phi === t && this._sphericalEnd.phi === t || (this._spherical.phi = t, this._sphericalEnd.phi = t, this._needsUpdate = !0);\n }\n /**\n * Whether camera position should be enclosed in the boundary or not.\n * @category Properties\n */\n get boundaryEnclosesCamera() {\n return this._boundaryEnclosesCamera;\n }\n set boundaryEnclosesCamera(t) {\n this._boundaryEnclosesCamera = t, this._needsUpdate = !0;\n }\n /**\n * Set drag-start, touches and wheel enable area in the domElement.\n * each values are between `0` and `1` inclusive, where `0` is left/top and `1` is right/bottom of the screen.\n * e.g. `{ x: 0, y: 0, width: 1, height: 1 }` for entire area.\n * @category Properties\n */\n set interactiveArea(t) {\n this._interactiveArea.width = Pt(t.width, 0, 1), this._interactiveArea.height = Pt(t.height, 0, 1), this._interactiveArea.x = Pt(t.x, 0, 1 - this._interactiveArea.width), this._interactiveArea.y = Pt(t.y, 0, 1 - this._interactiveArea.height);\n }\n /**\n * Adds the specified event listener.\n * Applicable event types (which is `K`) are:\n * | Event name | Timing |\n * | ------------------- | ------ |\n * | `'controlstart'` | When the user starts to control the camera via mouse / touches. ¹ |\n * | `'control'` | When the user controls the camera (dragging). |\n * | `'controlend'` | When the user ends to control the camera. ¹ |\n * | `'transitionstart'` | When any kind of transition starts, either user control or using a method with `enableTransition = true` |\n * | `'update'` | When the camera position is updated. |\n * | `'wake'` | When the camera starts moving. |\n * | `'rest'` | When the camera movement is below `.restThreshold` ². |\n * | `'sleep'` | When the camera end moving. |\n *\n * 1. `mouseButtons.wheel` (Mouse wheel control) does not emit `'controlstart'` and `'controlend'`. `mouseButtons.wheel` uses scroll-event internally, and scroll-event happens intermittently. That means \"start\" and \"end\" cannot be detected.\n * 2. Due to damping, `sleep` will usually fire a few seconds after the camera _appears_ to have stopped moving. If you want to do something (e.g. enable UI, perform another transition) at the point when the camera has stopped, you probably want the `rest` event. This can be fine tuned using the `.restThreshold` parameter. See the [Rest and Sleep Example](https://yomotsu.github.io/camera-controls/examples/rest-and-sleep.html).\n *\n * e.g.\n * ```\n * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n * ```\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n addEventListener(t, e) {\n super.addEventListener(t, e);\n }\n /**\n * Removes the specified event listener\n * e.g.\n * ```\n * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n * ```\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n removeEventListener(t, e) {\n super.removeEventListener(t, e);\n }\n /**\n * Rotate azimuthal angle(horizontal) and polar angle(vertical).\n * Every value is added to the current value.\n * @param azimuthAngle Azimuth rotate angle. In radian.\n * @param polarAngle Polar rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotate(t, e, n = !1) {\n return this.rotateTo(this._sphericalEnd.theta + t, this._sphericalEnd.phi + e, n);\n }\n /**\n * Rotate azimuthal angle(horizontal) to the given angle and keep the same polar angle(vertical) target.\n *\n * e.g.\n * ```\n * cameraControls.rotateAzimuthTo( 30 * THREE.MathUtils.DEG2RAD, true );\n * ```\n * @param azimuthAngle Azimuth rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotateAzimuthTo(t, e = !1) {\n return this.rotateTo(t, this._sphericalEnd.phi, e);\n }\n /**\n * Rotate polar angle(vertical) to the given angle and keep the same azimuthal angle(horizontal) target.\n *\n * e.g.\n * ```\n * cameraControls.rotatePolarTo( 30 * THREE.MathUtils.DEG2RAD, true );\n * ```\n * @param polarAngle Polar rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotatePolarTo(t, e = !1) {\n return this.rotateTo(this._sphericalEnd.theta, t, e);\n }\n /**\n * Rotate azimuthal angle(horizontal) and polar angle(vertical) to the given angle.\n * Camera view will rotate over the orbit pivot absolutely:\n *\n * azimuthAngle\n * ```\n * 0º\n * \\\n * 90º -----+----- -90º\n * \\\n * 180º\n * ```\n * | direction | angle |\n * | --------- | ---------------------- |\n * | front | 0º |\n * | left | 90º (`Math.PI / 2`) |\n * | right | -90º (`- Math.PI / 2`) |\n * | back | 180º (`Math.PI`) |\n *\n * polarAngle\n * ```\n * 180º\n * |\n * 90º\n * |\n * 0º\n * ```\n * | direction | angle |\n * | -------------------- | ---------------------- |\n * | top/sky | 180º (`Math.PI`) |\n * | horizontal from view | 90º (`Math.PI / 2`) |\n * | bottom/floor | 0º |\n *\n * @param azimuthAngle Azimuth rotate angle to. In radian.\n * @param polarAngle Polar rotate angle to. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotateTo(t, e, n = !1) {\n this._isUserControllingRotate = !1;\n const s = Pt(t, this.minAzimuthAngle, this.maxAzimuthAngle), i = Pt(e, this.minPolarAngle, this.maxPolarAngle);\n this._sphericalEnd.theta = s, this._sphericalEnd.phi = i, this._sphericalEnd.makeSafe(), this._needsUpdate = !0, n || (this._spherical.theta = this._sphericalEnd.theta, this._spherical.phi = this._sphericalEnd.phi);\n const r = !n || De(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && De(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold);\n return this._createOnRestPromise(r);\n }\n /**\n * Dolly in/out camera position.\n * @param distance Distance of dollyIn. Negative number for dollyOut.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dolly(t, e = !1) {\n return this.dollyTo(this._sphericalEnd.radius - t, e);\n }\n /**\n * Dolly in/out camera position to given distance.\n * @param distance Distance of dolly.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dollyTo(t, e = !1) {\n return this._isUserControllingDolly = !1, this._lastDollyDirection = rs.NONE, this._changedDolly = 0, this._dollyToNoClamp(Pt(t, this.minDistance, this.maxDistance), e);\n }\n _dollyToNoClamp(t, e = !1) {\n const n = this._sphericalEnd.radius;\n if (this.colliderMeshes.length >= 1) {\n const i = this._collisionTest(), r = De(i, this._spherical.radius);\n if (!(n > t) && r)\n return Promise.resolve();\n this._sphericalEnd.radius = Math.min(t, i);\n } else\n this._sphericalEnd.radius = t;\n this._needsUpdate = !0, e || (this._spherical.radius = this._sphericalEnd.radius);\n const s = !e || De(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n return this._createOnRestPromise(s);\n }\n /**\n * Dolly in, but does not change the distance between the target and the camera, and moves the target position instead.\n * Specify a negative value for dolly out.\n * @param distance Distance of dolly.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dollyInFixed(t, e = !1) {\n this._targetEnd.add(this._getCameraDirection(Xs).multiplyScalar(t)), e || this._target.copy(this._targetEnd);\n const n = !e || De(this._target.x, this._targetEnd.x, this.restThreshold) && De(this._target.y, this._targetEnd.y, this.restThreshold) && De(this._target.z, this._targetEnd.z, this.restThreshold);\n return this._createOnRestPromise(n);\n }\n /**\n * Zoom in/out camera. The value is added to camera zoom.\n * Limits set with `.minZoom` and `.maxZoom`\n * @param zoomStep zoom scale\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n zoom(t, e = !1) {\n return this.zoomTo(this._zoomEnd + t, e);\n }\n /**\n * Zoom in/out camera to given scale. The value overwrites camera zoom.\n * Limits set with .minZoom and .maxZoom\n * @param zoom\n * @param enableTransition\n * @category Methods\n */\n zoomTo(t, e = !1) {\n this._isUserControllingZoom = !1, this._zoomEnd = Pt(t, this.minZoom, this.maxZoom), this._needsUpdate = !0, e || (this._zoom = this._zoomEnd);\n const n = !e || De(this._zoom, this._zoomEnd, this.restThreshold);\n return this._changedZoom = 0, this._createOnRestPromise(n);\n }\n /**\n * @deprecated `pan()` has been renamed to `truck()`\n * @category Methods\n */\n pan(t, e, n = !1) {\n return console.warn(\"`pan` has been renamed to `truck`\"), this.truck(t, e, n);\n }\n /**\n * Truck and pedestal camera using current azimuthal angle\n * @param x Horizontal translate amount\n * @param y Vertical translate amount\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n truck(t, e, n = !1) {\n this._camera.updateMatrix(), zt.setFromMatrixColumn(this._camera.matrix, 0), Vt.setFromMatrixColumn(this._camera.matrix, 1), zt.multiplyScalar(t), Vt.multiplyScalar(-e);\n const s = be.copy(zt).add(Vt), i = Pe.copy(this._targetEnd).add(s);\n return this.moveTo(i.x, i.y, i.z, n);\n }\n /**\n * Move forward / backward.\n * @param distance Amount to move forward / backward. Negative value to move backward\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n forward(t, e = !1) {\n be.setFromMatrixColumn(this._camera.matrix, 0), be.crossVectors(this._camera.up, be), be.multiplyScalar(t);\n const n = Pe.copy(this._targetEnd).add(be);\n return this.moveTo(n.x, n.y, n.z, e);\n }\n /**\n * Move up / down.\n * @param height Amount to move up / down. Negative value to move down\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n elevate(t, e = !1) {\n return be.copy(this._camera.up).multiplyScalar(t), this.moveTo(this._targetEnd.x + be.x, this._targetEnd.y + be.y, this._targetEnd.z + be.z, e);\n }\n /**\n * Move target position to given point.\n * @param x x coord to move center position\n * @param y y coord to move center position\n * @param z z coord to move center position\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n moveTo(t, e, n, s = !1) {\n this._isUserControllingTruck = !1;\n const i = be.set(t, e, n).sub(this._targetEnd);\n this._encloseToBoundary(this._targetEnd, i, this.boundaryFriction), this._needsUpdate = !0, s || this._target.copy(this._targetEnd);\n const r = !s || De(this._target.x, this._targetEnd.x, this.restThreshold) && De(this._target.y, this._targetEnd.y, this.restThreshold) && De(this._target.z, this._targetEnd.z, this.restThreshold);\n return this._createOnRestPromise(r);\n }\n /**\n * Look in the given point direction.\n * @param x point x.\n * @param y point y.\n * @param z point z.\n * @param enableTransition Whether to move smoothly or immediately.\n * @returns Transition end promise\n * @category Methods\n */\n lookInDirectionOf(t, e, n, s = !1) {\n const i = be.set(t, e, n).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);\n return this.setPosition(i.x, i.y, i.z, s);\n }\n /**\n * Fit the viewport to the box or the bounding box of the object, using the nearest axis. paddings are in unit.\n * set `cover: true` to fill enter screen.\n * e.g.\n * ```\n * cameraControls.fitToBox( myMesh );\n * ```\n * @param box3OrObject Axis aligned bounding box to fit the view.\n * @param enableTransition Whether to move smoothly or immediately.\n * @param options | `` { cover: boolean, paddingTop: number, paddingLeft: number, paddingBottom: number, paddingRight: number }\n * @returns Transition end promise\n * @category Methods\n */\n fitToBox(t, e, { cover: n = !1, paddingLeft: s = 0, paddingRight: i = 0, paddingBottom: r = 0, paddingTop: o = 0 } = {}) {\n const l = [], u = t.isBox3 ? ls.copy(t) : ls.setFromObject(t);\n u.isEmpty() && (console.warn(\"camera-controls: fitTo() cannot be used with an empty box. Aborting\"), Promise.resolve());\n const d = Gl(this._sphericalEnd.theta, Vl), m = Gl(this._sphericalEnd.phi, Vl);\n l.push(this.rotateTo(d, m, e));\n const f = be.setFromSpherical(this._sphericalEnd).normalize(), g = Xl.setFromUnitVectors(f, qo), v = De(Math.abs(f.y), 1);\n v && g.multiply($o.setFromAxisAngle(ar, d)), g.multiply(this._yAxisUpSpaceInverse);\n const y = jl.makeEmpty();\n Pe.copy(u.min).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.min).setX(u.max.x).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.min).setY(u.max.y).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.max).setZ(u.min.z).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.min).setZ(u.max.z).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.max).setY(u.min.y).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.max).setX(u.min.x).applyQuaternion(g), y.expandByPoint(Pe), Pe.copy(u.max).applyQuaternion(g), y.expandByPoint(Pe), y.min.x -= s, y.min.y -= r, y.max.x += i, y.max.y += o, g.setFromUnitVectors(qo, f), v && g.premultiply($o.invert()), g.premultiply(this._yAxisUpSpace);\n const x = y.getSize(be), A = y.getCenter(Pe).applyQuaternion(g);\n if (On(this._camera)) {\n const F = this.getDistanceToFitBox(x.x, x.y, x.z, n);\n l.push(this.moveTo(A.x, A.y, A.z, e)), l.push(this.dollyTo(F, e)), l.push(this.setFocalOffset(0, 0, 0, e));\n } else if (gn(this._camera)) {\n const F = this._camera, P = F.right - F.left, C = F.top - F.bottom, O = n ? Math.max(P / x.x, C / x.y) : Math.min(P / x.x, C / x.y);\n l.push(this.moveTo(A.x, A.y, A.z, e)), l.push(this.zoomTo(O, e)), l.push(this.setFocalOffset(0, 0, 0, e));\n }\n return Promise.all(l);\n }\n /**\n * Fit the viewport to the sphere or the bounding sphere of the object.\n * @param sphereOrMesh\n * @param enableTransition\n * @category Methods\n */\n fitToSphere(t, e) {\n const n = [], s = t instanceof ve.Sphere ? Jo.copy(t) : ai.createBoundingSphere(t, Jo);\n if (n.push(this.moveTo(s.center.x, s.center.y, s.center.z, e)), On(this._camera)) {\n const i = this.getDistanceToFitSphere(s.radius);\n n.push(this.dollyTo(i, e));\n } else if (gn(this._camera)) {\n const i = this._camera.right - this._camera.left, r = this._camera.top - this._camera.bottom, o = 2 * s.radius, l = Math.min(i / o, r / o);\n n.push(this.zoomTo(l, e));\n }\n return n.push(this.setFocalOffset(0, 0, 0, e)), Promise.all(n);\n }\n /**\n * Look at the `target` from the `position`.\n * @param positionX\n * @param positionY\n * @param positionZ\n * @param targetX\n * @param targetY\n * @param targetZ\n * @param enableTransition\n * @category Methods\n */\n setLookAt(t, e, n, s, i, r, o = !1) {\n this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = rs.NONE, this._changedDolly = 0;\n const l = Pe.set(s, i, r), u = be.set(t, e, n);\n this._targetEnd.copy(l), this._sphericalEnd.setFromVector3(u.sub(l).applyQuaternion(this._yAxisUpSpace)), this.normalizeRotations(), this._needsUpdate = !0, o || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));\n const d = !o || De(this._target.x, this._targetEnd.x, this.restThreshold) && De(this._target.y, this._targetEnd.y, this.restThreshold) && De(this._target.z, this._targetEnd.z, this.restThreshold) && De(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && De(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold) && De(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n return this._createOnRestPromise(d);\n }\n /**\n * Similar to setLookAt, but it interpolates between two states.\n * @param positionAX\n * @param positionAY\n * @param positionAZ\n * @param targetAX\n * @param targetAY\n * @param targetAZ\n * @param positionBX\n * @param positionBY\n * @param positionBZ\n * @param targetBX\n * @param targetBY\n * @param targetBZ\n * @param t\n * @param enableTransition\n * @category Methods\n */\n lerpLookAt(t, e, n, s, i, r, o, l, u, d, m, f, g, v = !1) {\n this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = rs.NONE, this._changedDolly = 0;\n const y = be.set(s, i, r), x = Pe.set(t, e, n);\n yt.setFromVector3(x.sub(y).applyQuaternion(this._yAxisUpSpace));\n const A = as.set(d, m, f), F = Pe.set(o, l, u);\n Zs.setFromVector3(F.sub(A).applyQuaternion(this._yAxisUpSpace)), this._targetEnd.copy(y.lerp(A, g));\n const P = Zs.theta - yt.theta, C = Zs.phi - yt.phi, O = Zs.radius - yt.radius;\n this._sphericalEnd.set(yt.radius + O * g, yt.phi + C * g, yt.theta + P * g), this.normalizeRotations(), this._needsUpdate = !0, v || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));\n const U = !v || De(this._target.x, this._targetEnd.x, this.restThreshold) && De(this._target.y, this._targetEnd.y, this.restThreshold) && De(this._target.z, this._targetEnd.z, this.restThreshold) && De(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && De(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold) && De(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n return this._createOnRestPromise(U);\n }\n /**\n * Set angle and distance by given position.\n * An alias of `setLookAt()`, without target change. Thus keep gazing at the current target\n * @param positionX\n * @param positionY\n * @param positionZ\n * @param enableTransition\n * @category Methods\n */\n setPosition(t, e, n, s = !1) {\n return this.setLookAt(t, e, n, this._targetEnd.x, this._targetEnd.y, this._targetEnd.z, s);\n }\n /**\n * Set the target position where gaze at.\n * An alias of `setLookAt()`, without position change. Thus keep the same position.\n * @param targetX\n * @param targetY\n * @param targetZ\n * @param enableTransition\n * @category Methods\n */\n setTarget(t, e, n, s = !1) {\n const i = this.getPosition(be), r = this.setLookAt(i.x, i.y, i.z, t, e, n, s);\n return this._sphericalEnd.phi = Pt(this._sphericalEnd.phi, this.minPolarAngle, this.maxPolarAngle), r;\n }\n /**\n * Set focal offset using the screen parallel coordinates. z doesn't affect in Orthographic as with Dolly.\n * @param x\n * @param y\n * @param z\n * @param enableTransition\n * @category Methods\n */\n setFocalOffset(t, e, n, s = !1) {\n this._isUserControllingOffset = !1, this._focalOffsetEnd.set(t, e, n), this._needsUpdate = !0, s || this._focalOffset.copy(this._focalOffsetEnd);\n const i = !s || De(this._focalOffset.x, this._focalOffsetEnd.x, this.restThreshold) && De(this._focalOffset.y, this._focalOffsetEnd.y, this.restThreshold) && De(this._focalOffset.z, this._focalOffsetEnd.z, this.restThreshold);\n return this._createOnRestPromise(i);\n }\n /**\n * Set orbit point without moving the camera.\n * SHOULD NOT RUN DURING ANIMATIONS. `setOrbitPoint()` will immediately fix the positions.\n * @param targetX\n * @param targetY\n * @param targetZ\n * @category Methods\n */\n setOrbitPoint(t, e, n) {\n this._camera.updateMatrixWorld(), zt.setFromMatrixColumn(this._camera.matrixWorldInverse, 0), Vt.setFromMatrixColumn(this._camera.matrixWorldInverse, 1), Dn.setFromMatrixColumn(this._camera.matrixWorldInverse, 2);\n const s = be.set(t, e, n), i = s.distanceTo(this._camera.position), r = s.sub(this._camera.position);\n zt.multiplyScalar(r.x), Vt.multiplyScalar(r.y), Dn.multiplyScalar(r.z), be.copy(zt).add(Vt).add(Dn), be.z = be.z + i, this.dollyTo(i, !1), this.setFocalOffset(-be.x, be.y, -be.z, !1), this.moveTo(t, e, n, !1);\n }\n /**\n * Set the boundary box that encloses the target of the camera. box3 is in THREE.Box3\n * @param box3\n * @category Methods\n */\n setBoundary(t) {\n if (!t) {\n this._boundary.min.set(-1 / 0, -1 / 0, -1 / 0), this._boundary.max.set(1 / 0, 1 / 0, 1 / 0), this._needsUpdate = !0;\n return;\n }\n this._boundary.copy(t), this._boundary.clampPoint(this._targetEnd, this._targetEnd), this._needsUpdate = !0;\n }\n /**\n * Set (or unset) the current viewport.\n * Set this when you want to use renderer viewport and .dollyToCursor feature at the same time.\n * @param viewportOrX\n * @param y\n * @param width\n * @param height\n * @category Methods\n */\n setViewport(t, e, n, s) {\n if (t === null) {\n this._viewport = null;\n return;\n }\n this._viewport = this._viewport || new ve.Vector4(), typeof t == \"number\" ? this._viewport.set(t, e, n, s) : this._viewport.copy(t);\n }\n /**\n * Calculate the distance to fit the box.\n * @param width box width\n * @param height box height\n * @param depth box depth\n * @returns distance\n * @category Methods\n */\n getDistanceToFitBox(t, e, n, s = !1) {\n if (Qo(this._camera, \"getDistanceToFitBox\"))\n return this._spherical.radius;\n const i = t / e, r = this._camera.getEffectiveFOV() * Ws, o = this._camera.aspect;\n return ((s ? i > o : i < o) ? e : t / o) * 0.5 / Math.tan(r * 0.5) + n * 0.5;\n }\n /**\n * Calculate the distance to fit the sphere.\n * @param radius sphere radius\n * @returns distance\n * @category Methods\n */\n getDistanceToFitSphere(t) {\n if (Qo(this._camera, \"getDistanceToFitSphere\"))\n return this._spherical.radius;\n const e = this._camera.getEffectiveFOV() * Ws, n = Math.atan(Math.tan(e * 0.5) * this._camera.aspect) * 2, s = 1 < this._camera.aspect ? e : n;\n return t / Math.sin(s * 0.5);\n }\n /**\n * Returns the orbit center position, where the camera looking at.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getTarget(t, e = !0) {\n return (t && t.isVector3 ? t : new ve.Vector3()).copy(e ? this._targetEnd : this._target);\n }\n /**\n * Returns the camera position.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getPosition(t, e = !0) {\n return (t && t.isVector3 ? t : new ve.Vector3()).setFromSpherical(e ? this._sphericalEnd : this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(e ? this._targetEnd : this._target);\n }\n /**\n * Returns the spherical coordinates of the orbit.\n * @param out The receiving Spherical instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getSpherical(t, e = !0) {\n return (t && t instanceof ve.Spherical ? t : new ve.Spherical()).copy(e ? this._sphericalEnd : this._spherical);\n }\n /**\n * Returns the focal offset, which is how much the camera appears to be translated in screen parallel coordinates.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getFocalOffset(t, e = !0) {\n return (t && t.isVector3 ? t : new ve.Vector3()).copy(e ? this._focalOffsetEnd : this._focalOffset);\n }\n /**\n * Normalize camera azimuth angle rotation between 0 and 360 degrees.\n * @category Methods\n */\n normalizeRotations() {\n this._sphericalEnd.theta = this._sphericalEnd.theta % os, this._sphericalEnd.theta < 0 && (this._sphericalEnd.theta += os), this._spherical.theta += os * Math.round((this._sphericalEnd.theta - this._spherical.theta) / os);\n }\n /**\n * Reset all rotation and position to defaults.\n * @param enableTransition\n * @category Methods\n */\n reset(t = !1) {\n if (!De(this._camera.up.x, this._cameraUp0.x) || !De(this._camera.up.y, this._cameraUp0.y) || !De(this._camera.up.z, this._cameraUp0.z)) {\n this._camera.up.copy(this._cameraUp0);\n const n = this.getPosition(be);\n this.updateCameraUp(), this.setPosition(n.x, n.y, n.z);\n }\n const e = [\n this.setLookAt(this._position0.x, this._position0.y, this._position0.z, this._target0.x, this._target0.y, this._target0.z, t),\n this.setFocalOffset(this._focalOffset0.x, this._focalOffset0.y, this._focalOffset0.z, t),\n this.zoomTo(this._zoom0, t)\n ];\n return Promise.all(e);\n }\n /**\n * Set current camera position as the default position.\n * @category Methods\n */\n saveState() {\n this._cameraUp0.copy(this._camera.up), this.getTarget(this._target0), this.getPosition(this._position0), this._zoom0 = this._zoom, this._focalOffset0.copy(this._focalOffset);\n }\n /**\n * Sync camera-up direction.\n * When camera-up vector is changed, `.updateCameraUp()` must be called.\n * @category Methods\n */\n updateCameraUp() {\n this._yAxisUpSpace.setFromUnitVectors(this._camera.up, ar), this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert();\n }\n /**\n * Apply current camera-up direction to the camera.\n * The orbit system will be re-initialized with the current position.\n * @category Methods\n */\n applyCameraUp() {\n const t = be.subVectors(this._target, this._camera.position).normalize(), e = Pe.crossVectors(t, this._camera.up);\n this._camera.up.crossVectors(e, t).normalize(), this._camera.updateMatrixWorld();\n const n = this.getPosition(be);\n this.updateCameraUp(), this.setPosition(n.x, n.y, n.z);\n }\n /**\n * Update camera position and directions.\n * This should be called in your tick loop every time, and returns true if re-rendering is needed.\n * @param delta\n * @returns updated\n * @category Methods\n */\n update(t) {\n const e = this._sphericalEnd.theta - this._spherical.theta, n = this._sphericalEnd.phi - this._spherical.phi, s = this._sphericalEnd.radius - this._spherical.radius, i = Wl.subVectors(this._targetEnd, this._target), r = Kl.subVectors(this._focalOffsetEnd, this._focalOffset), o = this._zoomEnd - this._zoom;\n if (Ue(e))\n this._thetaVelocity.value = 0, this._spherical.theta = this._sphericalEnd.theta;\n else {\n const d = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;\n this._spherical.theta = rr(this._spherical.theta, this._sphericalEnd.theta, this._thetaVelocity, d, 1 / 0, t), this._needsUpdate = !0;\n }\n if (Ue(n))\n this._phiVelocity.value = 0, this._spherical.phi = this._sphericalEnd.phi;\n else {\n const d = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;\n this._spherical.phi = rr(this._spherical.phi, this._sphericalEnd.phi, this._phiVelocity, d, 1 / 0, t), this._needsUpdate = !0;\n }\n if (Ue(s))\n this._radiusVelocity.value = 0, this._spherical.radius = this._sphericalEnd.radius;\n else {\n const d = this._isUserControllingDolly ? this.draggingSmoothTime : this.smoothTime;\n this._spherical.radius = rr(this._spherical.radius, this._sphericalEnd.radius, this._radiusVelocity, d, this.maxSpeed, t), this._needsUpdate = !0;\n }\n if (Ue(i.x) && Ue(i.y) && Ue(i.z))\n this._targetVelocity.set(0, 0, 0), this._target.copy(this._targetEnd);\n else {\n const d = this._isUserControllingTruck ? this.draggingSmoothTime : this.smoothTime;\n Yl(this._target, this._targetEnd, this._targetVelocity, d, this.maxSpeed, t, this._target), this._needsUpdate = !0;\n }\n if (Ue(r.x) && Ue(r.y) && Ue(r.z))\n this._focalOffsetVelocity.set(0, 0, 0), this._focalOffset.copy(this._focalOffsetEnd);\n else {\n const d = this._isUserControllingOffset ? this.draggingSmoothTime : this.smoothTime;\n Yl(this._focalOffset, this._focalOffsetEnd, this._focalOffsetVelocity, d, this.maxSpeed, t, this._focalOffset), this._needsUpdate = !0;\n }\n if (Ue(o))\n this._zoomVelocity.value = 0, this._zoom = this._zoomEnd;\n else {\n const d = this._isUserControllingZoom ? this.draggingSmoothTime : this.smoothTime;\n this._zoom = rr(this._zoom, this._zoomEnd, this._zoomVelocity, d, 1 / 0, t);\n }\n if (this.dollyToCursor) {\n if (On(this._camera) && this._changedDolly !== 0) {\n const d = this._spherical.radius - this._lastDistance, m = this._camera, f = this._getCameraDirection(Xs), g = be.copy(f).cross(m.up).normalize();\n g.lengthSq() === 0 && (g.x = 1);\n const v = Pe.crossVectors(g, f), y = this._sphericalEnd.radius * Math.tan(m.getEffectiveFOV() * Ws * 0.5), x = (this._sphericalEnd.radius - d - this._sphericalEnd.radius) / this._sphericalEnd.radius, A = as.copy(this._targetEnd).add(g.multiplyScalar(this._dollyControlCoord.x * y * m.aspect)).add(v.multiplyScalar(this._dollyControlCoord.y * y)), F = be.copy(this._targetEnd).lerp(A, x), P = this._lastDollyDirection === rs.IN && this._spherical.radius <= this.minDistance, C = this._lastDollyDirection === rs.OUT && this.maxDistance <= this._spherical.radius;\n if (this.infinityDolly && (P || C)) {\n this._sphericalEnd.radius -= d, this._spherical.radius -= d;\n const U = Pe.copy(f).multiplyScalar(-d);\n F.add(U);\n }\n this._boundary.clampPoint(F, F);\n const O = Pe.subVectors(F, this._targetEnd);\n this._targetEnd.copy(F), this._target.add(O), this._changedDolly -= d, Ue(this._changedDolly) && (this._changedDolly = 0);\n } else if (gn(this._camera) && this._changedZoom !== 0) {\n const d = this._zoom - this._lastZoom, m = this._camera, f = be.set(this._dollyControlCoord.x, this._dollyControlCoord.y, (m.near + m.far) / (m.near - m.far)).unproject(m), g = Pe.set(0, 0, -1).applyQuaternion(m.quaternion), v = as.copy(f).add(g.multiplyScalar(-f.dot(m.up))), y = -(this._zoom - d - this._zoom) / this._zoom, x = this._getCameraDirection(Xs), A = this._targetEnd.dot(x), F = be.copy(this._targetEnd).lerp(v, y), P = F.dot(x), C = x.multiplyScalar(P - A);\n F.sub(C), this._boundary.clampPoint(F, F);\n const O = Pe.subVectors(F, this._targetEnd);\n this._targetEnd.copy(F), this._target.add(O), this._changedZoom -= d, Ue(this._changedZoom) && (this._changedZoom = 0);\n }\n }\n this._camera.zoom !== this._zoom && (this._camera.zoom = this._zoom, this._camera.updateProjectionMatrix(), this._updateNearPlaneCorners(), this._needsUpdate = !0), this._dragNeedsUpdate = !0;\n const l = this._collisionTest();\n this._spherical.radius = Math.min(this._spherical.radius, l), this._spherical.makeSafe(), this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target), this._camera.lookAt(this._target), (!Ue(this._focalOffset.x) || !Ue(this._focalOffset.y) || !Ue(this._focalOffset.z)) && (this._camera.updateMatrixWorld(), zt.setFromMatrixColumn(this._camera.matrix, 0), Vt.setFromMatrixColumn(this._camera.matrix, 1), Dn.setFromMatrixColumn(this._camera.matrix, 2), zt.multiplyScalar(this._focalOffset.x), Vt.multiplyScalar(-this._focalOffset.y), Dn.multiplyScalar(this._focalOffset.z), be.copy(zt).add(Vt).add(Dn), this._camera.position.add(be)), this._boundaryEnclosesCamera && this._encloseToBoundary(this._camera.position.copy(this._target), be.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse), 1);\n const u = this._needsUpdate;\n return u && !this._updatedLastTime ? (this._hasRested = !1, this.dispatchEvent({ type: \"wake\" }), this.dispatchEvent({ type: \"update\" })) : u ? (this.dispatchEvent({ type: \"update\" }), Ue(e, this.restThreshold) && Ue(n, this.restThreshold) && Ue(s, this.restThreshold) && Ue(i.x, this.restThreshold) && Ue(i.y, this.restThreshold) && Ue(i.z, this.restThreshold) && Ue(r.x, this.restThreshold) && Ue(r.y, this.restThreshold) && Ue(r.z, this.restThreshold) && Ue(o, this.restThreshold) && !this._hasRested && (this._hasRested = !0, this.dispatchEvent({ type: \"rest\" }))) : !u && this._updatedLastTime && this.dispatchEvent({ type: \"sleep\" }), this._lastDistance = this._spherical.radius, this._lastZoom = this._zoom, this._updatedLastTime = u, this._needsUpdate = !1, u;\n }\n /**\n * Get all state in JSON string\n * @category Methods\n */\n toJSON() {\n return JSON.stringify({\n enabled: this._enabled,\n minDistance: this.minDistance,\n maxDistance: Ks(this.maxDistance),\n minZoom: this.minZoom,\n maxZoom: Ks(this.maxZoom),\n minPolarAngle: this.minPolarAngle,\n maxPolarAngle: Ks(this.maxPolarAngle),\n minAzimuthAngle: Ks(this.minAzimuthAngle),\n maxAzimuthAngle: Ks(this.maxAzimuthAngle),\n smoothTime: this.smoothTime,\n draggingSmoothTime: this.draggingSmoothTime,\n dollySpeed: this.dollySpeed,\n truckSpeed: this.truckSpeed,\n dollyToCursor: this.dollyToCursor,\n verticalDragToForward: this.verticalDragToForward,\n target: this._targetEnd.toArray(),\n position: be.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),\n zoom: this._zoomEnd,\n focalOffset: this._focalOffsetEnd.toArray(),\n target0: this._target0.toArray(),\n position0: this._position0.toArray(),\n zoom0: this._zoom0,\n focalOffset0: this._focalOffset0.toArray()\n });\n }\n /**\n * Reproduce the control state with JSON. enableTransition is where anim or not in a boolean.\n * @param json\n * @param enableTransition\n * @category Methods\n */\n fromJSON(t, e = !1) {\n const n = JSON.parse(t);\n this.enabled = n.enabled, this.minDistance = n.minDistance, this.maxDistance = js(n.maxDistance), this.minZoom = n.minZoom, this.maxZoom = js(n.maxZoom), this.minPolarAngle = n.minPolarAngle, this.maxPolarAngle = js(n.maxPolarAngle), this.minAzimuthAngle = js(n.minAzimuthAngle), this.maxAzimuthAngle = js(n.maxAzimuthAngle), this.smoothTime = n.smoothTime, this.draggingSmoothTime = n.draggingSmoothTime, this.dollySpeed = n.dollySpeed, this.truckSpeed = n.truckSpeed, this.dollyToCursor = n.dollyToCursor, this.verticalDragToForward = n.verticalDragToForward, this._target0.fromArray(n.target0), this._position0.fromArray(n.position0), this._zoom0 = n.zoom0, this._focalOffset0.fromArray(n.focalOffset0), this.moveTo(n.target[0], n.target[1], n.target[2], e), yt.setFromVector3(be.fromArray(n.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)), this.rotateTo(yt.theta, yt.phi, e), this.dollyTo(yt.radius, e), this.zoomTo(n.zoom, e), this.setFocalOffset(n.focalOffset[0], n.focalOffset[1], n.focalOffset[2], e), this._needsUpdate = !0;\n }\n /**\n * Attach all internal event handlers to enable drag control.\n * @category Methods\n */\n connect(t) {\n if (this._domElement) {\n console.warn(\"camera-controls is already connected.\");\n return;\n }\n t.setAttribute(\"data-camera-controls-version\", Jd), this._addAllEventListeners(t), this._getClientRect(this._elementRect);\n }\n /**\n * Detach all internal event handlers to disable drag control.\n */\n disconnect() {\n this.cancel(), this._removeAllEventListeners(), this._domElement && (this._domElement.removeAttribute(\"data-camera-controls-version\"), this._domElement = void 0);\n }\n /**\n * Dispose the cameraControls instance itself, remove all eventListeners.\n * @category Methods\n */\n dispose() {\n this.removeAllEventListeners(), this.disconnect();\n }\n // it's okay to expose public though\n _getTargetDirection(t) {\n return t.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse);\n }\n // it's okay to expose public though\n _getCameraDirection(t) {\n return this._getTargetDirection(t).negate();\n }\n _findPointerById(t) {\n return this._activePointers.find((e) => e.pointerId === t);\n }\n _findPointerByMouseButton(t) {\n return this._activePointers.find((e) => e.mouseButton === t);\n }\n _disposePointer(t) {\n this._activePointers.splice(this._activePointers.indexOf(t), 1);\n }\n _encloseToBoundary(t, e, n) {\n const s = e.lengthSq();\n if (s === 0)\n return t;\n const i = Pe.copy(e).add(t), r = this._boundary.clampPoint(i, as).sub(i), o = r.lengthSq();\n if (o === 0)\n return t.add(e);\n if (o === s)\n return t;\n if (n === 0)\n return t.add(e).add(r);\n {\n const l = 1 + n * o / e.dot(r);\n return t.add(Pe.copy(e).multiplyScalar(l)).add(r.multiplyScalar(1 - n));\n }\n }\n _updateNearPlaneCorners() {\n if (On(this._camera)) {\n const t = this._camera, e = t.near, n = t.getEffectiveFOV() * Ws, s = Math.tan(n * 0.5) * e, i = s * t.aspect;\n this._nearPlaneCorners[0].set(-i, -s, 0), this._nearPlaneCorners[1].set(i, -s, 0), this._nearPlaneCorners[2].set(i, s, 0), this._nearPlaneCorners[3].set(-i, s, 0);\n } else if (gn(this._camera)) {\n const t = this._camera, e = 1 / t.zoom, n = t.left * e, s = t.right * e, i = t.top * e, r = t.bottom * e;\n this._nearPlaneCorners[0].set(n, i, 0), this._nearPlaneCorners[1].set(s, i, 0), this._nearPlaneCorners[2].set(s, r, 0), this._nearPlaneCorners[3].set(n, r, 0);\n }\n }\n // lateUpdate\n _collisionTest() {\n let t = 1 / 0;\n if (!(this.colliderMeshes.length >= 1) || Qo(this._camera, \"_collisionTest\"))\n return t;\n const e = this._getTargetDirection(Xs);\n ea.lookAt(Hl, e, this._camera.up);\n for (let n = 0; n < 4; n++) {\n const s = Pe.copy(this._nearPlaneCorners[n]);\n s.applyMatrix4(ea);\n const i = as.addVectors(this._target, s);\n lr.set(i, e), lr.far = this._spherical.radius + 1;\n const r = lr.intersectObjects(this.colliderMeshes);\n r.length !== 0 && r[0].distance < t && (t = r[0].distance);\n }\n return t;\n }\n /**\n * Get its client rect and package into given `DOMRect` .\n */\n _getClientRect(t) {\n if (!this._domElement)\n return;\n const e = this._domElement.getBoundingClientRect();\n return t.x = e.left, t.y = e.top, this._viewport ? (t.x += this._viewport.x, t.y += e.height - this._viewport.w - this._viewport.y, t.width = this._viewport.z, t.height = this._viewport.w) : (t.width = e.width, t.height = e.height), t;\n }\n _createOnRestPromise(t) {\n return t ? Promise.resolve() : (this._hasRested = !1, this.dispatchEvent({ type: \"transitionstart\" }), new Promise((e) => {\n const n = () => {\n this.removeEventListener(\"rest\", n), e();\n };\n this.addEventListener(\"rest\", n);\n }));\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _addAllEventListeners(t) {\n }\n _removeAllEventListeners() {\n }\n /**\n * backward compatible\n * @deprecated use smoothTime (in seconds) instead\n * @category Properties\n */\n get dampingFactor() {\n return console.warn(\".dampingFactor has been deprecated. use smoothTime (in seconds) instead.\"), 0;\n }\n /**\n * backward compatible\n * @deprecated use smoothTime (in seconds) instead\n * @category Properties\n */\n set dampingFactor(t) {\n console.warn(\".dampingFactor has been deprecated. use smoothTime (in seconds) instead.\");\n }\n /**\n * backward compatible\n * @deprecated use draggingSmoothTime (in seconds) instead\n * @category Properties\n */\n get draggingDampingFactor() {\n return console.warn(\".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.\"), 0;\n }\n /**\n * backward compatible\n * @deprecated use draggingSmoothTime (in seconds) instead\n * @category Properties\n */\n set draggingDampingFactor(t) {\n console.warn(\".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.\");\n }\n static createBoundingSphere(t, e = new ve.Sphere()) {\n const n = e, s = n.center;\n ls.makeEmpty(), t.traverseVisible((r) => {\n r.isMesh && ls.expandByObject(r);\n }), ls.getCenter(s);\n let i = 0;\n return t.traverseVisible((r) => {\n if (!r.isMesh)\n return;\n const o = r, l = o.geometry.clone();\n l.applyMatrix4(o.matrixWorld);\n const u = l.attributes.position;\n for (let d = 0, m = u.count; d < m; d++)\n be.fromBufferAttribute(u, d), i = Math.max(i, s.distanceToSquared(be));\n }), n.radius = Math.sqrt(i), n;\n }\n}\nclass Ar extends Dd {\n constructor(t) {\n super(t), S(this, \"onBeforeUpdate\", new $()), S(this, \"onAfterUpdate\", new $()), S(this, \"onAspectUpdated\", new $()), S(this, \"onDisposed\", new $()), S(this, \"three\"), S(this, \"_allControls\", /* @__PURE__ */ new Map()), S(this, \"updateAspect\", () => {\n var e;\n if (!(!this.currentWorld || !this.currentWorld.renderer)) {\n if (this.three instanceof w.OrthographicCamera) {\n this.onAspectUpdated.trigger();\n return;\n }\n if ((e = this.currentWorld.renderer) != null && e.isResizeable()) {\n const n = this.currentWorld.renderer.getSize();\n this.three.aspect = n.width / n.height, this.three.updateProjectionMatrix(), this.onAspectUpdated.trigger();\n }\n }\n }), this.three = this.setupCamera(), this.setupEvents(!0), this.onWorldChanged.add(({ action: e, world: n }) => {\n if (e === \"added\") {\n const s = this.newCameraControls();\n this._allControls.set(n.uuid, s);\n }\n if (e === \"removed\") {\n const s = this._allControls.get(n.uuid);\n s && (s.dispose(), this._allControls.delete(n.uuid));\n }\n });\n }\n /**\n * The object that controls the camera. An instance of\n * [yomotsu's cameracontrols](https://github.com/yomotsu/camera-controls).\n * Transforming the camera directly will have no effect: you need to use this\n * object to move, rotate, look at objects, etc.\n */\n get controls() {\n if (!this.currentWorld)\n throw new Error(\"This camera needs a world to work!\");\n const t = this._allControls.get(this.currentWorld.uuid);\n if (!t)\n throw new Error(\"Controls not found!\");\n return t;\n }\n /**\n * Getter for the enabled state of the camera controls.\n * If the current world is null, it returns false.\n * Otherwise, it returns the enabled state of the camera controls.\n *\n * @returns {boolean} The enabled state of the camera controls.\n */\n get enabled() {\n return this.currentWorld === null ? !1 : this.controls.enabled;\n }\n /**\n * Setter for the enabled state of the camera controls.\n * If the current world is not null, it sets the enabled state of the camera controls to the provided value.\n *\n * @param {boolean} enabled - The new enabled state of the camera controls.\n */\n set enabled(t) {\n this.currentWorld !== null && (this.controls.enabled = t);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.onAspectUpdated.reset(), this.onBeforeUpdate.reset(), this.onAfterUpdate.reset(), this.three.removeFromParent(), this.onDisposed.trigger(), this.onDisposed.reset();\n for (const [t, e] of this._allControls)\n e.dispose();\n }\n /** {@link Updateable.update} */\n update(t) {\n this.enabled && (this.onBeforeUpdate.trigger(this), this.controls.update(t), this.onAfterUpdate.trigger(this));\n }\n setupCamera() {\n const t = window.innerWidth / window.innerHeight, e = new w.PerspectiveCamera(60, t, 1, 1e3);\n return e.position.set(50, 50, 50), e.lookAt(new w.Vector3(0, 0, 0)), e;\n }\n newCameraControls() {\n if (!this.currentWorld)\n throw new Error(\"This camera needs a world to work!\");\n if (!this.currentWorld.renderer)\n throw new Error(\"This camera needs a renderer to work!\");\n ai.install({ THREE: Ar.getSubsetOfThree() });\n const { domElement: t } = this.currentWorld.renderer.three, e = new ai(this.three, t);\n return e.smoothTime = 0.2, e.dollyToCursor = !0, e.infinityDolly = !0, e;\n }\n setupEvents(t) {\n t ? window.addEventListener(\"resize\", this.updateAspect) : window.removeEventListener(\"resize\", this.updateAspect);\n }\n static getSubsetOfThree() {\n return {\n MOUSE: w.MOUSE,\n Vector2: w.Vector2,\n Vector3: w.Vector3,\n Vector4: w.Vector4,\n Quaternion: w.Quaternion,\n Matrix4: w.Matrix4,\n Spherical: w.Spherical,\n Box3: w.Box3,\n Sphere: w.Sphere,\n Raycaster: w.Raycaster,\n MathUtils: w.MathUtils\n };\n }\n}\nconst Wc = class Kc extends Re {\n constructor(t) {\n super(t), S(this, \"onAfterUpdate\", new $()), S(this, \"onBeforeUpdate\", new $()), S(this, \"onDisposed\", new $()), S(this, \"onWorldCreated\", new $()), S(this, \"onWorldDeleted\", new $()), S(this, \"list\", /* @__PURE__ */ new Map()), S(this, \"enabled\", !0), t.add(Kc.uuid, this);\n }\n /**\n * Creates a new instance of a SimpleWorld and adds it to the list of worlds.\n *\n * @template T - The type of the scene, extending from BaseScene. Defaults to BaseScene.\n * @template U - The type of the camera, extending from BaseCamera. Defaults to BaseCamera.\n * @template S - The type of the renderer, extending from BaseRenderer. Defaults to BaseRenderer.\n *\n * @throws {Error} - Throws an error if a world with the same UUID already exists in the list.\n */\n create() {\n const t = new Zd(this.components), e = t.uuid;\n if (this.list.has(e))\n throw new Error(\"There is already a world with this name!\");\n return this.list.set(e, t), this.onWorldCreated.trigger(t), t;\n }\n /**\n * Deletes a world from the list of worlds.\n *\n * @param {World} world - The world to be deleted.\n *\n * @throws {Error} - Throws an error if the provided world is not found in the list.\n *\n * @returns {void}\n */\n delete(t) {\n if (!this.list.has(t.uuid))\n throw new Error(\"The provided world is not found in the list!\");\n const e = t.uuid;\n this.list.delete(t.uuid), t.dispose(), this.onWorldDeleted.trigger(e);\n }\n /**\n * Disposes of the Worlds component and all its managed worlds.\n * This method sets the enabled flag to false, disposes of all worlds, clears the list,\n * and triggers the onDisposed event.\n *\n * @returns {void}\n */\n dispose() {\n this.enabled = !1;\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger();\n }\n /** {@link Updateable.update} */\n update(t) {\n if (this.enabled)\n for (const [e, n] of this.list)\n n.update(t);\n }\n};\nS(Wc, \"uuid\", \"fdb61dc4-2ec1-4966-b83d-54ea795fad4a\");\nlet tf = Wc;\nclass nf {\n constructor(t, e, n) {\n S(this, \"onDisposed\", new $()), S(this, \"world\"), S(this, \"components\"), S(this, \"three\"), S(this, \"_fade\", 3), S(this, \"updateZoom\", () => {\n this.world.camera instanceof Ar && (this.material.uniforms.uZoom.value = this.world.camera.three.zoom);\n }), this.world = e;\n const { color: s, size1: i, size2: r, distance: o } = n;\n this.components = t;\n const l = new w.PlaneGeometry(2, 2, 1, 1), u = new w.ShaderMaterial({\n side: w.DoubleSide,\n uniforms: {\n uSize1: {\n value: i\n },\n uSize2: {\n value: r\n },\n uColor: {\n value: s\n },\n uDistance: {\n value: o\n },\n uFade: {\n value: this._fade\n },\n uZoom: {\n value: 1\n }\n },\n transparent: !0,\n vertexShader: `\n \n varying vec3 worldPosition;\n \n uniform float uDistance;\n \n void main() {\n \n vec3 pos = position.xzy * uDistance;\n pos.xz += cameraPosition.xz;\n \n worldPosition = pos;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n \n }\n `,\n fragmentShader: `\n \n varying vec3 worldPosition;\n \n uniform float uZoom;\n uniform float uFade;\n uniform float uSize1;\n uniform float uSize2;\n uniform vec3 uColor;\n uniform float uDistance;\n \n \n \n float getGrid(float size) {\n \n vec2 r = worldPosition.xz / size;\n \n \n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y);\n \n \n return 1.0 - min(line, 1.0);\n }\n \n void main() {\n \n \n float d = 1.0 - min(distance(cameraPosition.xz, worldPosition.xz) / uDistance, 1.0);\n \n float g1 = getGrid(uSize1);\n float g2 = getGrid(uSize2);\n \n // Ortho camera fades the grid away when zooming out\n float minZoom = step(0.2, uZoom);\n float zoomFactor = pow(min(uZoom, 1.), 2.) * minZoom;\n \n gl_FragColor = vec4(uColor.rgb, mix(g2, g1, g1) * pow(d, uFade));\n gl_FragColor.a = mix(0.5 * gl_FragColor.a, gl_FragColor.a, g2) * zoomFactor;\n \n if ( gl_FragColor.a <= 0.0 ) discard;\n \n \n }\n \n `,\n extensions: {\n derivatives: !0\n }\n });\n this.three = new w.Mesh(l, u), this.three.frustumCulled = !1, e.scene.three.add(this.three), this.setupEvents(!0);\n }\n /** {@link Hideable.visible} */\n get visible() {\n return this.three.visible;\n }\n /** {@link Hideable.visible} */\n set visible(t) {\n t ? this.world.scene.three.add(this.three) : this.three.removeFromParent();\n }\n /** The material of the grid. */\n get material() {\n return this.three.material;\n }\n /**\n * Whether the grid should fade away with distance. Recommended to be true for\n * perspective cameras and false for orthographic cameras.\n */\n get fade() {\n return this._fade === 3;\n }\n /**\n * Whether the grid should fade away with distance. Recommended to be true for\n * perspective cameras and false for orthographic cameras.\n */\n set fade(t) {\n this._fade = t ? 3 : 0, this.material.uniforms.uFade.value = this._fade;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.components.get(rn).destroy(this.three), this.onDisposed.trigger(), this.onDisposed.reset(), this.world = null, this.components = null;\n }\n setupEvents(t) {\n if (this.world.isDisposing || !(this.world.camera instanceof Ar))\n return;\n const e = this.world.camera.controls;\n t ? e.addEventListener(\"update\", this.updateZoom) : e.removeEventListener(\"update\", this.updateZoom);\n }\n}\nconst sf = class jc extends Re {\n constructor(t) {\n super(t), S(this, \"list\", /* @__PURE__ */ new Map()), S(this, \"config\", {\n color: new w.Color(12303291),\n size1: 1,\n size2: 10,\n distance: 500\n }), S(this, \"onDisposed\", new $()), S(this, \"enabled\", !0), t.add(jc.uuid, this);\n }\n /**\n * Creates a new grid for the given world.\n * Throws an error if a grid already exists for the world.\n *\n * @param world - The world to create the grid for.\n * @returns The newly created grid.\n *\n * @throws Will throw an error if a grid already exists for the given world.\n */\n create(t) {\n if (this.list.has(t.uuid))\n throw new Error(\"This world already has a grid!\");\n const e = new nf(this.components, t, this.config);\n return this.list.set(t.uuid, e), t.onDisposed.add(() => {\n this.delete(t);\n }), e;\n }\n /**\n * Deletes the grid associated with the given world.\n * If a grid does not exist for the given world, this method does nothing.\n *\n * @param world - The world for which to delete the grid.\n *\n * @remarks\n * This method will dispose of the grid and remove it from the internal list.\n * If the world is disposed before calling this method, the grid will be automatically deleted.\n */\n delete(t) {\n const e = this.list.get(t.uuid);\n e && e.dispose(), this.list.delete(t.uuid);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n};\nS(sf, \"uuid\", \"d1e814d5-b81c-4452-87a2-f039375e0489\");\nconst Ln = new iu(), ot = new te(), mn = new te(), Ge = new Kt(), Zl = {\n X: new te(1, 0, 0),\n Y: new te(0, 1, 0),\n Z: new te(0, 0, 1)\n}, ta = { type: \"change\" }, Ql = { type: \"mouseDown\" }, ql = { type: \"mouseUp\", mode: null }, Jl = { type: \"objectChange\" };\nclass rf extends br {\n constructor(t, e) {\n super(), e === void 0 && (console.warn('THREE.TransformControls: The second parameter \"domElement\" is now mandatory.'), e = document), this.isTransformControls = !0, this.visible = !1, this.domElement = e, this.domElement.style.touchAction = \"none\";\n const n = new uf();\n this._gizmo = n, this.add(n);\n const s = new df();\n this._plane = s, this.add(s);\n const i = this;\n function r(F, P) {\n let C = P;\n Object.defineProperty(i, F, {\n get: function() {\n return C !== void 0 ? C : P;\n },\n set: function(O) {\n C !== O && (C = O, s[F] = O, n[F] = O, i.dispatchEvent({ type: F + \"-changed\", value: O }), i.dispatchEvent(ta));\n }\n }), i[F] = P, s[F] = P, n[F] = P;\n }\n r(\"camera\", t), r(\"object\", void 0), r(\"enabled\", !0), r(\"axis\", null), r(\"mode\", \"translate\"), r(\"translationSnap\", null), r(\"rotationSnap\", null), r(\"scaleSnap\", null), r(\"space\", \"world\"), r(\"size\", 1), r(\"dragging\", !1), r(\"showX\", !0), r(\"showY\", !0), r(\"showZ\", !0);\n const o = new te(), l = new te(), u = new Kt(), d = new Kt(), m = new te(), f = new Kt(), g = new te(), v = new te(), y = new te(), x = 0, A = new te();\n r(\"worldPosition\", o), r(\"worldPositionStart\", l), r(\"worldQuaternion\", u), r(\"worldQuaternionStart\", d), r(\"cameraPosition\", m), r(\"cameraQuaternion\", f), r(\"pointStart\", g), r(\"pointEnd\", v), r(\"rotationAxis\", y), r(\"rotationAngle\", x), r(\"eye\", A), this._offset = new te(), this._startNorm = new te(), this._endNorm = new te(), this._cameraScale = new te(), this._parentPosition = new te(), this._parentQuaternion = new Kt(), this._parentQuaternionInv = new Kt(), this._parentScale = new te(), this._worldScaleStart = new te(), this._worldQuaternionInv = new Kt(), this._worldScale = new te(), this._positionStart = new te(), this._quaternionStart = new Kt(), this._scaleStart = new te(), this._getPointer = of.bind(this), this._onPointerDown = lf.bind(this), this._onPointerHover = af.bind(this), this._onPointerMove = cf.bind(this), this._onPointerUp = hf.bind(this), this.domElement.addEventListener(\"pointerdown\", this._onPointerDown), this.domElement.addEventListener(\"pointermove\", this._onPointerHover), this.domElement.addEventListener(\"pointerup\", this._onPointerUp);\n }\n // updateMatrixWorld updates key transformation variables\n updateMatrixWorld() {\n this.object !== void 0 && (this.object.updateMatrixWorld(), this.object.parent === null ? console.error(\"TransformControls: The attached 3D object must be a part of the scene graph.\") : this.object.parent.matrixWorld.decompose(this._parentPosition, this._parentQuaternion, this._parentScale), this.object.matrixWorld.decompose(this.worldPosition, this.worldQuaternion, this._worldScale), this._parentQuaternionInv.copy(this._parentQuaternion).invert(), this._worldQuaternionInv.copy(this.worldQuaternion).invert()), this.camera.updateMatrixWorld(), this.camera.matrixWorld.decompose(this.cameraPosition, this.cameraQuaternion, this._cameraScale), this.camera.isOrthographicCamera ? this.camera.getWorldDirection(this.eye).negate() : this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(), super.updateMatrixWorld(this);\n }\n pointerHover(t) {\n if (this.object === void 0 || this.dragging === !0)\n return;\n Ln.setFromCamera(t, this.camera);\n const e = na(this._gizmo.picker[this.mode], Ln);\n e ? this.axis = e.object.name : this.axis = null;\n }\n pointerDown(t) {\n if (!(this.object === void 0 || this.dragging === !0 || t.button !== 0) && this.axis !== null) {\n Ln.setFromCamera(t, this.camera);\n const e = na(this._plane, Ln, !0);\n e && (this.object.updateMatrixWorld(), this.object.parent.updateMatrixWorld(), this._positionStart.copy(this.object.position), this._quaternionStart.copy(this.object.quaternion), this._scaleStart.copy(this.object.scale), this.object.matrixWorld.decompose(this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart), this.pointStart.copy(e.point).sub(this.worldPositionStart)), this.dragging = !0, Ql.mode = this.mode, this.dispatchEvent(Ql);\n }\n }\n pointerMove(t) {\n const e = this.axis, n = this.mode, s = this.object;\n let i = this.space;\n if (n === \"scale\" ? i = \"local\" : (e === \"E\" || e === \"XYZE\" || e === \"XYZ\") && (i = \"world\"), s === void 0 || e === null || this.dragging === !1 || t.button !== -1)\n return;\n Ln.setFromCamera(t, this.camera);\n const r = na(this._plane, Ln, !0);\n if (r) {\n if (this.pointEnd.copy(r.point).sub(this.worldPositionStart), n === \"translate\")\n this._offset.copy(this.pointEnd).sub(this.pointStart), i === \"local\" && e !== \"XYZ\" && this._offset.applyQuaternion(this._worldQuaternionInv), e.indexOf(\"X\") === -1 && (this._offset.x = 0), e.indexOf(\"Y\") === -1 && (this._offset.y = 0), e.indexOf(\"Z\") === -1 && (this._offset.z = 0), i === \"local\" && e !== \"XYZ\" ? this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale) : this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale), s.position.copy(this._offset).add(this._positionStart), this.translationSnap && (i === \"local\" && (s.position.applyQuaternion(Ge.copy(this._quaternionStart).invert()), e.search(\"X\") !== -1 && (s.position.x = Math.round(s.position.x / this.translationSnap) * this.translationSnap), e.search(\"Y\") !== -1 && (s.position.y = Math.round(s.position.y / this.translationSnap) * this.translationSnap), e.search(\"Z\") !== -1 && (s.position.z = Math.round(s.position.z / this.translationSnap) * this.translationSnap), s.position.applyQuaternion(this._quaternionStart)), i === \"world\" && (s.parent && s.position.add(ot.setFromMatrixPosition(s.parent.matrixWorld)), e.search(\"X\") !== -1 && (s.position.x = Math.round(s.position.x / this.translationSnap) * this.translationSnap), e.search(\"Y\") !== -1 && (s.position.y = Math.round(s.position.y / this.translationSnap) * this.translationSnap), e.search(\"Z\") !== -1 && (s.position.z = Math.round(s.position.z / this.translationSnap) * this.translationSnap), s.parent && s.position.sub(ot.setFromMatrixPosition(s.parent.matrixWorld))));\n else if (n === \"scale\") {\n if (e.search(\"XYZ\") !== -1) {\n let o = this.pointEnd.length() / this.pointStart.length();\n this.pointEnd.dot(this.pointStart) < 0 && (o *= -1), mn.set(o, o, o);\n } else\n ot.copy(this.pointStart), mn.copy(this.pointEnd), ot.applyQuaternion(this._worldQuaternionInv), mn.applyQuaternion(this._worldQuaternionInv), mn.divide(ot), e.search(\"X\") === -1 && (mn.x = 1), e.search(\"Y\") === -1 && (mn.y = 1), e.search(\"Z\") === -1 && (mn.z = 1);\n s.scale.copy(this._scaleStart).multiply(mn), this.scaleSnap && (e.search(\"X\") !== -1 && (s.scale.x = Math.round(s.scale.x / this.scaleSnap) * this.scaleSnap || this.scaleSnap), e.search(\"Y\") !== -1 && (s.scale.y = Math.round(s.scale.y / this.scaleSnap) * this.scaleSnap || this.scaleSnap), e.search(\"Z\") !== -1 && (s.scale.z = Math.round(s.scale.z / this.scaleSnap) * this.scaleSnap || this.scaleSnap));\n } else if (n === \"rotate\") {\n this._offset.copy(this.pointEnd).sub(this.pointStart);\n const o = 20 / this.worldPosition.distanceTo(ot.setFromMatrixPosition(this.camera.matrixWorld));\n let l = !1;\n e === \"XYZE\" ? (this.rotationAxis.copy(this._offset).cross(this.eye).normalize(), this.rotationAngle = this._offset.dot(ot.copy(this.rotationAxis).cross(this.eye)) * o) : (e === \"X\" || e === \"Y\" || e === \"Z\") && (this.rotationAxis.copy(Zl[e]), ot.copy(Zl[e]), i === \"local\" && ot.applyQuaternion(this.worldQuaternion), ot.cross(this.eye), ot.length() === 0 ? l = !0 : this.rotationAngle = this._offset.dot(ot.normalize()) * o), (e === \"E\" || l) && (this.rotationAxis.copy(this.eye), this.rotationAngle = this.pointEnd.angleTo(this.pointStart), this._startNorm.copy(this.pointStart).normalize(), this._endNorm.copy(this.pointEnd).normalize(), this.rotationAngle *= this._endNorm.cross(this._startNorm).dot(this.eye) < 0 ? 1 : -1), this.rotationSnap && (this.rotationAngle = Math.round(this.rotationAngle / this.rotationSnap) * this.rotationSnap), i === \"local\" && e !== \"E\" && e !== \"XYZE\" ? (s.quaternion.copy(this._quaternionStart), s.quaternion.multiply(Ge.setFromAxisAngle(this.rotationAxis, this.rotationAngle)).normalize()) : (this.rotationAxis.applyQuaternion(this._parentQuaternionInv), s.quaternion.copy(Ge.setFromAxisAngle(this.rotationAxis, this.rotationAngle)), s.quaternion.multiply(this._quaternionStart).normalize());\n }\n this.dispatchEvent(ta), this.dispatchEvent(Jl);\n }\n }\n pointerUp(t) {\n t.button === 0 && (this.dragging && this.axis !== null && (ql.mode = this.mode, this.dispatchEvent(ql)), this.dragging = !1, this.axis = null);\n }\n dispose() {\n this.domElement.removeEventListener(\"pointerdown\", this._onPointerDown), this.domElement.removeEventListener(\"pointermove\", this._onPointerHover), this.domElement.removeEventListener(\"pointermove\", this._onPointerMove), this.domElement.removeEventListener(\"pointerup\", this._onPointerUp), this.traverse(function(t) {\n t.geometry && t.geometry.dispose(), t.material && t.material.dispose();\n });\n }\n // Set current object\n attach(t) {\n return this.object = t, this.visible = !0, this;\n }\n // Detach from object\n detach() {\n return this.object = void 0, this.visible = !1, this.axis = null, this;\n }\n reset() {\n this.enabled && this.dragging && (this.object.position.copy(this._positionStart), this.object.quaternion.copy(this._quaternionStart), this.object.scale.copy(this._scaleStart), this.dispatchEvent(ta), this.dispatchEvent(Jl), this.pointStart.copy(this.pointEnd));\n }\n getRaycaster() {\n return Ln;\n }\n // TODO: deprecate\n getMode() {\n return this.mode;\n }\n setMode(t) {\n this.mode = t;\n }\n setTranslationSnap(t) {\n this.translationSnap = t;\n }\n setRotationSnap(t) {\n this.rotationSnap = t;\n }\n setScaleSnap(t) {\n this.scaleSnap = t;\n }\n setSize(t) {\n this.size = t;\n }\n setSpace(t) {\n this.space = t;\n }\n}\nfunction of(h) {\n if (this.domElement.ownerDocument.pointerLockElement)\n return {\n x: 0,\n y: 0,\n button: h.button\n };\n {\n const t = this.domElement.getBoundingClientRect();\n return {\n x: (h.clientX - t.left) / t.width * 2 - 1,\n y: -(h.clientY - t.top) / t.height * 2 + 1,\n button: h.button\n };\n }\n}\nfunction af(h) {\n if (this.enabled)\n switch (h.pointerType) {\n case \"mouse\":\n case \"pen\":\n this.pointerHover(this._getPointer(h));\n break;\n }\n}\nfunction lf(h) {\n this.enabled && (document.pointerLockElement || this.domElement.setPointerCapture(h.pointerId), this.domElement.addEventListener(\"pointermove\", this._onPointerMove), this.pointerHover(this._getPointer(h)), this.pointerDown(this._getPointer(h)));\n}\nfunction cf(h) {\n this.enabled && this.pointerMove(this._getPointer(h));\n}\nfunction hf(h) {\n this.enabled && (this.domElement.releasePointerCapture(h.pointerId), this.domElement.removeEventListener(\"pointermove\", this._onPointerMove), this.pointerUp(this._getPointer(h)));\n}\nfunction na(h, t, e) {\n const n = t.intersectObject(h, !0);\n for (let s = 0; s < n.length; s++)\n if (n[s].object.visible || e)\n return n[s];\n return !1;\n}\nconst cr = new ru(), _e = new te(0, 1, 0), $l = new te(0, 0, 0), ec = new Ne(), hr = new Kt(), Tr = new Kt(), Gt = new te(), tc = new Ne(), Js = new te(1, 0, 0), Nn = new te(0, 1, 0), $s = new te(0, 0, 1), ur = new te(), Qs = new te(), qs = new te();\nclass uf extends br {\n constructor() {\n super(), this.isTransformControlsGizmo = !0, this.type = \"TransformControlsGizmo\";\n const t = new Rc({\n depthTest: !1,\n depthWrite: !1,\n fog: !1,\n toneMapped: !1,\n transparent: !0\n }), e = new Fc({\n depthTest: !1,\n depthWrite: !1,\n fog: !1,\n toneMapped: !1,\n transparent: !0\n }), n = t.clone();\n n.opacity = 0.15;\n const s = e.clone();\n s.opacity = 0.5;\n const i = t.clone();\n i.color.setHex(16711680);\n const r = t.clone();\n r.color.setHex(65280);\n const o = t.clone();\n o.color.setHex(255);\n const l = t.clone();\n l.color.setHex(16711680), l.opacity = 0.5;\n const u = t.clone();\n u.color.setHex(65280), u.opacity = 0.5;\n const d = t.clone();\n d.color.setHex(255), d.opacity = 0.5;\n const m = t.clone();\n m.opacity = 0.25;\n const f = t.clone();\n f.color.setHex(16776960), f.opacity = 0.25, t.clone().color.setHex(16776960);\n const g = t.clone();\n g.color.setHex(7895160);\n const v = new ut(0, 0.04, 0.1, 12);\n v.translate(0, 0.05, 0);\n const y = new ct(0.08, 0.08, 0.08);\n y.translate(0, 0.04, 0);\n const x = new xr();\n x.setAttribute(\"position\", new Es([0, 0, 0, 1, 0, 0], 3));\n const A = new ut(75e-4, 75e-4, 0.5, 3);\n A.translate(0, 0.25, 0);\n function F(he, me) {\n const Ie = new Us(he, 75e-4, 3, 64, me * Math.PI * 2);\n return Ie.rotateY(Math.PI / 2), Ie.rotateX(Math.PI / 2), Ie;\n }\n function P() {\n const he = new xr();\n return he.setAttribute(\"position\", new Es([0, 0, 0, 1, 1, 1], 3)), he;\n }\n const C = {\n X: [\n [new fe(v, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],\n [new fe(v, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]],\n [new fe(A, i), [0, 0, 0], [0, 0, -Math.PI / 2]]\n ],\n Y: [\n [new fe(v, r), [0, 0.5, 0]],\n [new fe(v, r), [0, -0.5, 0], [Math.PI, 0, 0]],\n [new fe(A, r)]\n ],\n Z: [\n [new fe(v, o), [0, 0, 0.5], [Math.PI / 2, 0, 0]],\n [new fe(v, o), [0, 0, -0.5], [-Math.PI / 2, 0, 0]],\n [new fe(A, o), null, [Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new fe(new Gi(0.1, 0), m.clone()), [0, 0, 0]]\n ],\n XY: [\n [new fe(new ct(0.15, 0.15, 0.01), d.clone()), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new fe(new ct(0.15, 0.15, 0.01), l.clone()), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new fe(new ct(0.15, 0.15, 0.01), u.clone()), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ]\n }, O = {\n X: [\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],\n [new fe(new ut(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]\n ],\n Y: [\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]\n ],\n Z: [\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new fe(new Gi(0.2, 0), n)]\n ],\n XY: [\n [new fe(new ct(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new fe(new ct(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new fe(new ct(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ]\n }, U = {\n START: [\n [new fe(new Gi(0.01, 2), s), null, null, null, \"helper\"]\n ],\n END: [\n [new fe(new Gi(0.01, 2), s), null, null, null, \"helper\"]\n ],\n DELTA: [\n [new fn(P(), s), null, null, null, \"helper\"]\n ],\n X: [\n [new fn(x, s.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], \"helper\"]\n ],\n Y: [\n [new fn(x, s.clone()), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], \"helper\"]\n ],\n Z: [\n [new fn(x, s.clone()), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], \"helper\"]\n ]\n }, Y = {\n XYZE: [\n [new fe(F(0.5, 1), g), null, [0, Math.PI / 2, 0]]\n ],\n X: [\n [new fe(F(0.5, 0.5), i)]\n ],\n Y: [\n [new fe(F(0.5, 0.5), r), null, [0, 0, -Math.PI / 2]]\n ],\n Z: [\n [new fe(F(0.5, 0.5), o), null, [0, Math.PI / 2, 0]]\n ],\n E: [\n [new fe(F(0.75, 1), f), null, [0, Math.PI / 2, 0]]\n ]\n }, H = {\n AXIS: [\n [new fn(x, s.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], \"helper\"]\n ]\n }, K = {\n XYZE: [\n [new fe(new ou(0.25, 10, 8), n)]\n ],\n X: [\n [new fe(new Us(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]]\n ],\n Y: [\n [new fe(new Us(0.5, 0.1, 4, 24), n), [0, 0, 0], [Math.PI / 2, 0, 0]]\n ],\n Z: [\n [new fe(new Us(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, 0, -Math.PI / 2]]\n ],\n E: [\n [new fe(new Us(0.75, 0.1, 2, 24), n)]\n ]\n }, Z = {\n X: [\n [new fe(y, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],\n [new fe(A, i), [0, 0, 0], [0, 0, -Math.PI / 2]],\n [new fe(y, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]]\n ],\n Y: [\n [new fe(y, r), [0, 0.5, 0]],\n [new fe(A, r)],\n [new fe(y, r), [0, -0.5, 0], [0, 0, Math.PI]]\n ],\n Z: [\n [new fe(y, o), [0, 0, 0.5], [Math.PI / 2, 0, 0]],\n [new fe(A, o), [0, 0, 0], [Math.PI / 2, 0, 0]],\n [new fe(y, o), [0, 0, -0.5], [-Math.PI / 2, 0, 0]]\n ],\n XY: [\n [new fe(new ct(0.15, 0.15, 0.01), d), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new fe(new ct(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new fe(new ct(0.15, 0.15, 0.01), u), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new fe(new ct(0.1, 0.1, 0.1), m.clone())]\n ]\n }, q = {\n X: [\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],\n [new fe(new ut(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]\n ],\n Y: [\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]\n ],\n Z: [\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],\n [new fe(new ut(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]\n ],\n XY: [\n [new fe(new ct(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]\n ],\n YZ: [\n [new fe(new ct(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]\n ],\n XZ: [\n [new fe(new ct(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]\n ],\n XYZ: [\n [new fe(new ct(0.2, 0.2, 0.2), n), [0, 0, 0]]\n ]\n }, ne = {\n X: [\n [new fn(x, s.clone()), [-1e3, 0, 0], null, [1e6, 1, 1], \"helper\"]\n ],\n Y: [\n [new fn(x, s.clone()), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], \"helper\"]\n ],\n Z: [\n [new fn(x, s.clone()), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], \"helper\"]\n ]\n };\n function se(he) {\n const me = new br();\n for (const Ie in he)\n for (let Ee = he[Ie].length; Ee--; ) {\n const ue = he[Ie][Ee][0].clone(), Le = he[Ie][Ee][1], we = he[Ie][Ee][2], Ke = he[Ie][Ee][3], Nt = he[Ie][Ee][4];\n ue.name = Ie, ue.tag = Nt, Le && ue.position.set(Le[0], Le[1], Le[2]), we && ue.rotation.set(we[0], we[1], we[2]), Ke && ue.scale.set(Ke[0], Ke[1], Ke[2]), ue.updateMatrix();\n const vt = ue.geometry.clone();\n vt.applyMatrix4(ue.matrix), ue.geometry = vt, ue.renderOrder = 1 / 0, ue.position.set(0, 0, 0), ue.rotation.set(0, 0, 0), ue.scale.set(1, 1, 1), me.add(ue);\n }\n return me;\n }\n this.gizmo = {}, this.picker = {}, this.helper = {}, this.add(this.gizmo.translate = se(C)), this.add(this.gizmo.rotate = se(Y)), this.add(this.gizmo.scale = se(Z)), this.add(this.picker.translate = se(O)), this.add(this.picker.rotate = se(K)), this.add(this.picker.scale = se(q)), this.add(this.helper.translate = se(U)), this.add(this.helper.rotate = se(H)), this.add(this.helper.scale = se(ne)), this.picker.translate.visible = !1, this.picker.rotate.visible = !1, this.picker.scale.visible = !1;\n }\n // updateMatrixWorld will update transformations and appearance of individual handles\n updateMatrixWorld(t) {\n const e = (this.mode === \"scale\" ? \"local\" : this.space) === \"local\" ? this.worldQuaternion : Tr;\n this.gizmo.translate.visible = this.mode === \"translate\", this.gizmo.rotate.visible = this.mode === \"rotate\", this.gizmo.scale.visible = this.mode === \"scale\", this.helper.translate.visible = this.mode === \"translate\", this.helper.rotate.visible = this.mode === \"rotate\", this.helper.scale.visible = this.mode === \"scale\";\n let n = [];\n n = n.concat(this.picker[this.mode].children), n = n.concat(this.gizmo[this.mode].children), n = n.concat(this.helper[this.mode].children);\n for (let s = 0; s < n.length; s++) {\n const i = n[s];\n i.visible = !0, i.rotation.set(0, 0, 0), i.position.copy(this.worldPosition);\n let r;\n if (this.camera.isOrthographicCamera ? r = (this.camera.top - this.camera.bottom) / this.camera.zoom : r = this.worldPosition.distanceTo(this.cameraPosition) * Math.min(1.9 * Math.tan(Math.PI * this.camera.fov / 360) / this.camera.zoom, 7), i.scale.set(1, 1, 1).multiplyScalar(r * this.size / 4), i.tag === \"helper\") {\n i.visible = !1, i.name === \"AXIS\" ? (i.visible = !!this.axis, this.axis === \"X\" && (Ge.setFromEuler(cr.set(0, 0, 0)), i.quaternion.copy(e).multiply(Ge), Math.abs(_e.copy(Js).applyQuaternion(e).dot(this.eye)) > 0.9 && (i.visible = !1)), this.axis === \"Y\" && (Ge.setFromEuler(cr.set(0, 0, Math.PI / 2)), i.quaternion.copy(e).multiply(Ge), Math.abs(_e.copy(Nn).applyQuaternion(e).dot(this.eye)) > 0.9 && (i.visible = !1)), this.axis === \"Z\" && (Ge.setFromEuler(cr.set(0, Math.PI / 2, 0)), i.quaternion.copy(e).multiply(Ge), Math.abs(_e.copy($s).applyQuaternion(e).dot(this.eye)) > 0.9 && (i.visible = !1)), this.axis === \"XYZE\" && (Ge.setFromEuler(cr.set(0, Math.PI / 2, 0)), _e.copy(this.rotationAxis), i.quaternion.setFromRotationMatrix(ec.lookAt($l, _e, Nn)), i.quaternion.multiply(Ge), i.visible = this.dragging), this.axis === \"E\" && (i.visible = !1)) : i.name === \"START\" ? (i.position.copy(this.worldPositionStart), i.visible = this.dragging) : i.name === \"END\" ? (i.position.copy(this.worldPosition), i.visible = this.dragging) : i.name === \"DELTA\" ? (i.position.copy(this.worldPositionStart), i.quaternion.copy(this.worldQuaternionStart), ot.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1), ot.applyQuaternion(this.worldQuaternionStart.clone().invert()), i.scale.copy(ot), i.visible = this.dragging) : (i.quaternion.copy(e), this.dragging ? i.position.copy(this.worldPositionStart) : i.position.copy(this.worldPosition), this.axis && (i.visible = this.axis.search(i.name) !== -1));\n continue;\n }\n i.quaternion.copy(e), this.mode === \"translate\" || this.mode === \"scale\" ? (i.name === \"X\" && Math.abs(_e.copy(Js).applyQuaternion(e).dot(this.eye)) > 0.99 && (i.scale.set(1e-10, 1e-10, 1e-10), i.visible = !1), i.name === \"Y\" && Math.abs(_e.copy(Nn).applyQuaternion(e).dot(this.eye)) > 0.99 && (i.scale.set(1e-10, 1e-10, 1e-10), i.visible = !1), i.name === \"Z\" && Math.abs(_e.copy($s).applyQuaternion(e).dot(this.eye)) > 0.99 && (i.scale.set(1e-10, 1e-10, 1e-10), i.visible = !1), i.name === \"XY\" && Math.abs(_e.copy($s).applyQuaternion(e).dot(this.eye)) < 0.2 && (i.scale.set(1e-10, 1e-10, 1e-10), i.visible = !1), i.name === \"YZ\" && Math.abs(_e.copy(Js).applyQuaternion(e).dot(this.eye)) < 0.2 && (i.scale.set(1e-10, 1e-10, 1e-10), i.visible = !1), i.name === \"XZ\" && Math.abs(_e.copy(Nn).applyQuaternion(e).dot(this.eye)) < 0.2 && (i.scale.set(1e-10, 1e-10, 1e-10), i.visible = !1)) : this.mode === \"rotate\" && (hr.copy(e), _e.copy(this.eye).applyQuaternion(Ge.copy(e).invert()), i.name.search(\"E\") !== -1 && i.quaternion.setFromRotationMatrix(ec.lookAt(this.eye, $l, Nn)), i.name === \"X\" && (Ge.setFromAxisAngle(Js, Math.atan2(-_e.y, _e.z)), Ge.multiplyQuaternions(hr, Ge), i.quaternion.copy(Ge)), i.name === \"Y\" && (Ge.setFromAxisAngle(Nn, Math.atan2(_e.x, _e.z)), Ge.multiplyQuaternions(hr, Ge), i.quaternion.copy(Ge)), i.name === \"Z\" && (Ge.setFromAxisAngle($s, Math.atan2(_e.y, _e.x)), Ge.multiplyQuaternions(hr, Ge), i.quaternion.copy(Ge))), i.visible = i.visible && (i.name.indexOf(\"X\") === -1 || this.showX), i.visible = i.visible && (i.name.indexOf(\"Y\") === -1 || this.showY), i.visible = i.visible && (i.name.indexOf(\"Z\") === -1 || this.showZ), i.visible = i.visible && (i.name.indexOf(\"E\") === -1 || this.showX && this.showY && this.showZ), i.material._color = i.material._color || i.material.color.clone(), i.material._opacity = i.material._opacity || i.material.opacity, i.material.color.copy(i.material._color), i.material.opacity = i.material._opacity, this.enabled && this.axis && (i.name === this.axis || this.axis.split(\"\").some(function(o) {\n return i.name === o;\n })) && (i.material.color.setHex(16776960), i.material.opacity = 1);\n }\n super.updateMatrixWorld(t);\n }\n}\nclass df extends fe {\n constructor() {\n super(\n new au(1e5, 1e5, 2, 2),\n new Rc({ visible: !1, wireframe: !0, side: Pc, transparent: !0, opacity: 0.1, toneMapped: !1 })\n ), this.isTransformControlsPlane = !0, this.type = \"TransformControlsPlane\";\n }\n updateMatrixWorld(t) {\n let e = this.space;\n switch (this.position.copy(this.worldPosition), this.mode === \"scale\" && (e = \"local\"), ur.copy(Js).applyQuaternion(e === \"local\" ? this.worldQuaternion : Tr), Qs.copy(Nn).applyQuaternion(e === \"local\" ? this.worldQuaternion : Tr), qs.copy($s).applyQuaternion(e === \"local\" ? this.worldQuaternion : Tr), _e.copy(Qs), this.mode) {\n case \"translate\":\n case \"scale\":\n switch (this.axis) {\n case \"X\":\n _e.copy(this.eye).cross(ur), Gt.copy(ur).cross(_e);\n break;\n case \"Y\":\n _e.copy(this.eye).cross(Qs), Gt.copy(Qs).cross(_e);\n break;\n case \"Z\":\n _e.copy(this.eye).cross(qs), Gt.copy(qs).cross(_e);\n break;\n case \"XY\":\n Gt.copy(qs);\n break;\n case \"YZ\":\n Gt.copy(ur);\n break;\n case \"XZ\":\n _e.copy(qs), Gt.copy(Qs);\n break;\n case \"XYZ\":\n case \"E\":\n Gt.set(0, 0, 0);\n break;\n }\n break;\n case \"rotate\":\n default:\n Gt.set(0, 0, 0);\n }\n Gt.length() === 0 ? this.quaternion.copy(this.cameraQuaternion) : (tc.lookAt(ot.set(0, 0, 0), Gt, _e), this.quaternion.setFromRotationMatrix(tc)), super.updateMatrixWorld(t);\n }\n}\nclass jr {\n constructor(t, e, n, s, i, r = 5, o = !0) {\n if (S(this, \"onDraggingStarted\", new $()), S(this, \"onDraggingEnded\", new $()), S(this, \"onDisposed\", new $()), S(this, \"normal\"), S(this, \"origin\"), S(this, \"three\", new w.Plane()), S(this, \"components\"), S(this, \"world\"), S(this, \"_helper\"), S(this, \"_visible\", !0), S(this, \"_enabled\", !0), S(this, \"_controlsActive\", !1), S(this, \"_arrowBoundBox\", new w.Mesh()), S(this, \"_planeMesh\"), S(this, \"_controls\"), S(this, \"_hiddenMaterial\", new w.MeshBasicMaterial({\n visible: !1\n })), S(this, \"update\", () => {\n this._enabled && this.three.setFromNormalAndCoplanarPoint(\n this.normal,\n this._helper.position\n );\n }), S(this, \"changeDrag\", (l) => {\n this._visible = !l.value, this.preventCameraMovement(), this.notifyDraggingChanged(l);\n }), this.components = t, this.world = e, !e.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.normal = s, this.origin = n, e.renderer.setPlane(!0, this.three), this._planeMesh = jr.newPlaneMesh(r, i), this._helper = this.newHelper(), this._controls = this.newTransformControls(), this.three.setFromNormalAndCoplanarPoint(s, n), o && this.toggleControls(!0);\n }\n /**\n * Getter for the enabled state of the clipping plane.\n * @returns {boolean} The current enabled state.\n */\n get enabled() {\n return this._enabled;\n }\n /**\n * Setter for the enabled state of the clipping plane.\n * Updates the clipping plane state in the renderer and throws an error if no renderer is found.\n * @param {boolean} state - The new enabled state.\n */\n set enabled(t) {\n if (!this.world.renderer)\n throw new Error(\"No renderer found for clipping plane!\");\n this._enabled = t, this.world.renderer.setPlane(t, this.three);\n }\n /** {@link Hideable.visible } */\n get visible() {\n return this._visible;\n }\n /** {@link Hideable.visible } */\n set visible(t) {\n this._visible = t, this._controls.visible = t, this._helper.visible = t, this.toggleControls(t);\n }\n /** The meshes used for raycasting */\n get meshes() {\n return [this._planeMesh, this._arrowBoundBox];\n }\n /** The material of the clipping plane representation. */\n get planeMaterial() {\n return this._planeMesh.material;\n }\n /** The material of the clipping plane representation. */\n set planeMaterial(t) {\n this._planeMesh.material = t;\n }\n /** The size of the clipping plane representation. */\n get size() {\n return this._planeMesh.scale.x;\n }\n /** Sets the size of the clipping plane representation. */\n set size(t) {\n this._planeMesh.scale.set(t, t, t);\n }\n /**\n * Getter for the helper object of the clipping plane.\n * The helper object is a THREE.Object3D that contains the clipping plane mesh and other related objects.\n * It is used for positioning, rotating, and scaling the clipping plane in the 3D scene.\n *\n * @returns {THREE.Object3D} The helper object of the clipping plane.\n */\n get helper() {\n return this._helper;\n }\n /**\n * Sets the clipping plane's normal and origin from the given normal and point.\n * This method resets the clipping plane's state, updates the normal and origin,\n * and positions the helper object accordingly.\n *\n * @param normal - The new normal vector for the clipping plane.\n * @param point - The new origin point for the clipping plane.\n *\n * @returns {void}\n */\n setFromNormalAndCoplanarPoint(t, e) {\n this.reset(), this.normal.equals(t) || (this.normal.copy(t), this._helper.lookAt(t)), this.origin.copy(e), this._helper.position.copy(e), this._helper.updateMatrix(), this.update();\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this._enabled = !1, this.onDraggingStarted.reset(), this.onDraggingEnded.reset(), this._helper.removeFromParent(), this.world.renderer && this.world.renderer.setPlane(!1, this.three), this._arrowBoundBox.removeFromParent(), this._arrowBoundBox.geometry.dispose(), this._planeMesh.geometry.dispose(), this._controls.removeFromParent(), this._controls.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n reset() {\n const t = new w.Vector3(1, 0, 0), e = new w.Vector3();\n this.normal.equals(t) || (this.normal.copy(t), this._helper.lookAt(t)), this.origin.copy(e), this._helper.position.copy(e), this._helper.updateMatrix();\n }\n toggleControls(t) {\n if (t) {\n if (this._controlsActive)\n return;\n this._controls.addEventListener(\"change\", this.update), this._controls.addEventListener(\"dragging-changed\", this.changeDrag);\n } else\n this._controls.removeEventListener(\"change\", this.update), this._controls.removeEventListener(\"dragging-changed\", this.changeDrag);\n this._controlsActive = t;\n }\n newTransformControls() {\n if (!this.world.renderer)\n throw new Error(\"No renderer found for clipping plane!\");\n const t = this.world.camera.three, e = this.world.renderer.three.domElement, n = new rf(t, e);\n return this.initializeControls(n), this.world.scene.three.add(n), n;\n }\n initializeControls(t) {\n t.attach(this._helper), t.showX = !1, t.showY = !1, t.setSpace(\"local\"), this.createArrowBoundingBox(), t.children[0].children[0].add(this._arrowBoundBox);\n }\n createArrowBoundingBox() {\n this._arrowBoundBox.geometry = new w.CylinderGeometry(0.18, 0.18, 1.2), this._arrowBoundBox.material = this._hiddenMaterial, this._arrowBoundBox.rotateX(Math.PI / 2), this._arrowBoundBox.updateMatrix(), this._arrowBoundBox.geometry.applyMatrix4(this._arrowBoundBox.matrix);\n }\n notifyDraggingChanged(t) {\n t.value ? this.onDraggingStarted.trigger() : this.onDraggingEnded.trigger();\n }\n preventCameraMovement() {\n this.world.camera.enabled = this._visible;\n }\n newHelper() {\n const t = new w.Object3D();\n return t.lookAt(this.normal), t.position.copy(this.origin), this._planeMesh.position.z += 0.01, t.add(this._planeMesh), this.world.scene.three.add(t), t;\n }\n static newPlaneMesh(t, e) {\n const n = new w.PlaneGeometry(1), s = new w.Mesh(n, e);\n return s.scale.set(t, t, t), s;\n }\n}\nconst Xc = class va extends Re {\n constructor(t) {\n super(t), S(this, \"onBeforeDrag\", new $()), S(this, \"onAfterDrag\", new $()), S(this, \"onBeforeCreate\", new $()), S(this, \"onBeforeCancel\", new $()), S(this, \"onAfterCancel\", new $()), S(this, \"onBeforeDelete\", new $()), S(this, \"onAfterCreate\", new $()), S(this, \"onAfterDelete\", new $()), S(this, \"onDisposed\", new $()), S(this, \"orthogonalY\", !1), S(this, \"toleranceOrthogonalY\", 0.7), S(this, \"Type\", jr), S(this, \"list\", []), S(this, \"_material\", new w.MeshBasicMaterial({\n color: 12255487,\n side: w.DoubleSide,\n transparent: !0,\n opacity: 0.2\n })), S(this, \"_size\", 5), S(this, \"_enabled\", !1), S(this, \"_visible\", !0), S(this, \"_onStartDragging\", () => {\n this.onBeforeDrag.trigger();\n }), S(this, \"_onEndDragging\", () => {\n this.onAfterDrag.trigger();\n }), this.components.add(va.uuid, this);\n }\n /** {@link Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link Component.enabled} */\n set enabled(t) {\n this._enabled = t;\n for (const e of this.list)\n e.enabled = t;\n this.updateMaterialsAndPlanes();\n }\n /** {@link Hideable.visible } */\n get visible() {\n return this._visible;\n }\n /** {@link Hideable.visible } */\n set visible(t) {\n this._visible = t;\n for (const e of this.list)\n e.visible = t;\n }\n /** The material of the clipping plane representation. */\n get material() {\n return this._material;\n }\n /** The material of the clipping plane representation. */\n set material(t) {\n this._material = t;\n for (const e of this.list)\n e.planeMaterial = t;\n }\n /** The size of the geometric representation of the clippings planes. */\n get size() {\n return this._size;\n }\n /** The size of the geometric representation of the clippings planes. */\n set size(t) {\n this._size = t;\n for (const e of this.list)\n e.size = t;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this._enabled = !1;\n for (const t of this.list)\n t.dispose();\n this.list.length = 0, this._material.dispose(), this.onBeforeCreate.reset(), this.onBeforeCancel.reset(), this.onBeforeDelete.reset(), this.onBeforeDrag.reset(), this.onAfterCreate.reset(), this.onAfterCancel.reset(), this.onAfterDelete.reset(), this.onAfterDrag.reset(), this.onDisposed.trigger(va.uuid), this.onDisposed.reset();\n }\n /** {@link Createable.create} */\n create(t) {\n const e = this.components.get(Dt).get(t).castRay();\n e && this.createPlaneFromIntersection(t, e);\n }\n /**\n * Creates a plane in a certain place and with a certain orientation,\n * without the need of the mouse.\n *\n * @param world - the world where this plane should be created.\n * @param normal - the orientation of the clipping plane.\n * @param point - the position of the clipping plane.\n * navigation.\n */\n createFromNormalAndCoplanarPoint(t, e, n) {\n const s = this.newPlane(t, n, e);\n return this.updateMaterialsAndPlanes(), s;\n }\n /**\n * {@link Createable.delete}\n *\n * @param world - the world where the plane to delete is.\n * @param plane - the plane to delete. If undefined, the first plane\n * found under the cursor will be deleted.\n */\n delete(t, e) {\n e || (e = this.pickPlane(t)), e && this.deletePlane(e);\n }\n /** Deletes all the existing clipping planes. */\n deleteAll() {\n for (; this.list.length > 0; ) {\n const t = this.list[0];\n this.delete(t.world, t);\n }\n }\n deletePlane(t) {\n const e = this.list.indexOf(t);\n if (e !== -1) {\n if (this.list.splice(e, 1), !t.world.renderer)\n throw new Error(\"Renderer not found for this plane's world!\");\n t.world.renderer.setPlane(!1, t.three), t.dispose(), this.updateMaterialsAndPlanes(), this.onAfterDelete.trigger(t);\n }\n }\n pickPlane(t) {\n const e = this.components.get(Dt).get(t), n = this.getAllPlaneMeshes(), s = e.castRay(n);\n if (s) {\n const i = s.object;\n return this.list.find((r) => r.meshes.includes(i));\n }\n }\n getAllPlaneMeshes() {\n const t = [];\n for (const e of this.list)\n t.push(...e.meshes);\n return t;\n }\n createPlaneFromIntersection(t, e) {\n var n;\n if (!t.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const s = e.point.distanceTo(new w.Vector3(0, 0, 0)), i = (n = e.face) == null ? void 0 : n.normal;\n if (!s || !i)\n return;\n const r = this.getWorldNormal(e, i), o = this.newPlane(t, e.point, r.negate());\n o.visible = this._visible, o.size = this._size, t.renderer.setPlane(!0, o.three), this.updateMaterialsAndPlanes();\n }\n getWorldNormal(t, e) {\n const n = t.object;\n let s = t.object.matrixWorld.clone();\n if (n instanceof w.InstancedMesh && t.instanceId !== void 0) {\n const o = new w.Matrix4();\n n.getMatrixAt(t.instanceId, o), s = o.multiply(s);\n }\n const i = new w.Matrix3().getNormalMatrix(s), r = e.clone().applyMatrix3(i).normalize();\n return this.normalizePlaneDirectionY(r), r;\n }\n normalizePlaneDirectionY(t) {\n this.orthogonalY && (t.y > this.toleranceOrthogonalY && (t.x = 0, t.y = 1, t.z = 0), t.y < -this.toleranceOrthogonalY && (t.x = 0, t.y = -1, t.z = 0));\n }\n newPlane(t, e, n) {\n const s = new this.Type(\n this.components,\n t,\n e,\n n,\n this._material\n );\n return s.onDraggingStarted.add(this._onStartDragging), s.onDraggingEnded.add(this._onEndDragging), this.list.push(s), this.onAfterCreate.trigger(s), s;\n }\n updateMaterialsAndPlanes() {\n const t = this.components.get(tf);\n for (const [e, n] of t.list) {\n if (!n.renderer)\n continue;\n n.renderer.updateClippingPlanes();\n const { clippingPlanes: s } = n.renderer;\n for (const i of n.meshes)\n if (i.material)\n if (Array.isArray(i.material))\n for (const r of i.material)\n r.clippingPlanes = s;\n else\n i.material.clippingPlanes = s;\n }\n }\n};\nS(Xc, \"uuid\", \"66290bc5-18c4-4cd1-9379-2e17a0617611\");\nlet li = Xc;\nfunction ff(h, t, e, n) {\n return new Promise((s, i) => {\n function r() {\n const o = h.clientWaitSync(t, e, 0);\n if (o === h.WAIT_FAILED) {\n i();\n return;\n }\n if (o === h.TIMEOUT_EXPIRED) {\n setTimeout(r, n);\n return;\n }\n s();\n }\n r();\n });\n}\nasync function pf(h, t, e, n, s, i, r) {\n const o = h.fenceSync(h.SYNC_GPU_COMMANDS_COMPLETE, 0);\n h.flush(), await ff(h, o, 0, 10), h.deleteSync(o), h.bindBuffer(t, e), h.getBufferSubData(t, n, s, i, r), h.bindBuffer(t, null);\n}\nasync function mf(h, t, e, n, s, i, r, o) {\n const l = h.createBuffer();\n return h.bindBuffer(h.PIXEL_PACK_BUFFER, l), h.bufferData(h.PIXEL_PACK_BUFFER, o.byteLength, h.STREAM_READ), h.readPixels(t, e, n, s, i, r, 0), h.bindBuffer(h.PIXEL_PACK_BUFFER, null), await pf(h, h.PIXEL_PACK_BUFFER, l, 0, o), h.deleteBuffer(l), o;\n}\nclass Zc {\n constructor(t, e, n) {\n if (S(this, \"onDisposed\", new $()), S(this, \"onViewUpdated\", new ti()), S(this, \"enabled\", !0), S(this, \"needsUpdate\", !1), S(this, \"renderDebugFrame\", !1), S(this, \"components\"), S(this, \"world\"), S(this, \"renderer\"), S(this, \"autoUpdate\", !0), S(this, \"updateInterval\", 1e3), S(this, \"worker\"), S(this, \"scene\", new w.Scene()), S(this, \"_width\", 512), S(this, \"_height\", 512), S(this, \"_availableColor\", 1), S(this, \"renderTarget\"), S(this, \"bufferSize\"), S(this, \"_buffer\"), S(this, \"_isWorkerBusy\", !1), S(this, \"updateVisibility\", async (r) => {\n if (!this.enabled || !this.needsUpdate && !r || this._isWorkerBusy)\n return;\n this._isWorkerBusy = !0;\n const o = this.world.camera.three;\n o.updateMatrix(), this.renderer.setSize(this._width, this._height), this.renderer.setRenderTarget(this.renderTarget), this.renderer.render(this.scene, o);\n const l = this.renderer.getContext();\n await mf(\n l,\n 0,\n 0,\n this._width,\n this._height,\n l.RGBA,\n l.UNSIGNED_BYTE,\n this._buffer\n ), this.renderer.setRenderTarget(null), this.renderDebugFrame && this.renderer.render(this.scene, o), this.worker.postMessage({\n buffer: this._buffer\n }), this.needsUpdate = !1;\n }), !e.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.components = t, this.applySettings(n), this.world = e, this.renderer = new w.WebGLRenderer(), this.renderTarget = new w.WebGLRenderTarget(this._width, this._height), this.bufferSize = this._width * this._height * 4, this._buffer = new Uint8Array(this.bufferSize), this.renderer.clippingPlanes = e.renderer.clippingPlanes;\n const s = `\n addEventListener(\"message\", (event) => {\n const { buffer } = event.data;\n const colors = new Map();\n for (let i = 0; i < buffer.length; i += 4) {\n const r = buffer[i];\n const g = buffer[i + 1];\n const b = buffer[i + 2];\n const code = \"\" + r + \"-\" + g + \"-\" + b;\n if(colors.has(code)) {\n colors.set(code, colors.get(code) + 1);\n } else {\n colors.set(code, 1);\n }\n }\n postMessage({ colors });\n });\n `, i = new Blob([s], { type: \"application/javascript\" });\n this.worker = new Worker(URL.createObjectURL(i));\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1;\n for (const t of this.scene.children)\n t.removeFromParent();\n this.onViewUpdated.reset(), this.worker.terminate(), this.renderer.dispose(), this.renderTarget.dispose(), this._buffer = null, this.onDisposed.reset();\n }\n getAvailableColor() {\n let t = BigInt(this._availableColor.toString());\n const e = [];\n do\n e.unshift(Number(t % 256n)), t /= 256n;\n while (t);\n for (; e.length !== 3; )\n e.unshift(0);\n const [n, s, i] = e, r = `${n}-${s}-${i}`;\n return { r: n, g: s, b: i, code: r };\n }\n increaseColor() {\n if (this._availableColor === 256 * 256 * 256) {\n console.warn(\"Color can't be increased over 256 x 256 x 256!\");\n return;\n }\n this._availableColor++;\n }\n decreaseColor() {\n if (this._availableColor === 1) {\n console.warn(\"Color can't be decreased under 0!\");\n return;\n }\n this._availableColor--;\n }\n applySettings(t) {\n t && (t.updateInterval !== void 0 && (this.updateInterval = t.updateInterval), t.height !== void 0 && (this._height = t.height), t.width !== void 0 && (this._width = t.width), t.autoUpdate !== void 0 && (this.autoUpdate = t.autoUpdate));\n }\n}\nclass gf extends Zc {\n constructor(t, e, n) {\n super(t, e, n), S(this, \"onViewUpdated\", new $()), S(this, \"threshold\", 100), S(this, \"colorMeshes\", /* @__PURE__ */ new Map()), S(this, \"isProcessing\", !1), S(this, \"_colorCodeMeshMap\", /* @__PURE__ */ new Map()), S(this, \"_meshIDColorCodeMap\", /* @__PURE__ */ new Map()), S(this, \"_currentVisibleMeshes\", /* @__PURE__ */ new Set()), S(this, \"_recentlyHiddenMeshes\", /* @__PURE__ */ new Set()), S(this, \"_intervalID\", null), S(this, \"_transparentMat\", new w.MeshBasicMaterial({\n transparent: !0,\n opacity: 0\n })), S(this, \"handleWorkerMessage\", async (s) => {\n if (this.isProcessing)\n return;\n const i = s.data.colors;\n this._recentlyHiddenMeshes = new Set(this._currentVisibleMeshes), this._currentVisibleMeshes.clear();\n for (const [r, o] of i) {\n if (o < this.threshold)\n continue;\n const l = this._colorCodeMeshMap.get(r);\n l && (this._currentVisibleMeshes.add(l), this._recentlyHiddenMeshes.delete(l));\n }\n this.onViewUpdated.trigger({\n seen: this._currentVisibleMeshes,\n unseen: this._recentlyHiddenMeshes\n }), this._isWorkerBusy = !1;\n }), this.worker.addEventListener(\"message\", this.handleWorkerMessage), this.autoUpdate && window.setInterval(async () => {\n this.isProcessing || await this.updateVisibility();\n }, this.updateInterval), this.onViewUpdated.add(({ seen: s, unseen: i }) => {\n for (const r of s)\n r.visible = !0;\n for (const r of i)\n r.visible = !1;\n });\n }\n /** {@link Disposable.dispose} */\n dispose() {\n super.dispose(), this._intervalID !== null && (window.clearInterval(this._intervalID), this._intervalID = null), this._currentVisibleMeshes.clear(), this._recentlyHiddenMeshes.clear(), this._meshIDColorCodeMap.clear(), this._transparentMat.dispose(), this._colorCodeMeshMap.clear();\n const t = this.components.get(rn);\n for (const e in this.colorMeshes) {\n const n = this.colorMeshes.get(e);\n n && t.destroy(n, !0);\n }\n this.colorMeshes.clear();\n }\n /**\n * Adds a mesh to the culler. When the mesh is not visibile anymore, it will be removed from the scene. When it's visible again, it will be added to the scene.\n * @param mesh - The mesh to add. It can be a regular THREE.Mesh or an instance of THREE.InstancedMesh.\n * @returns {void}\n */\n add(t) {\n if (!this.enabled)\n return;\n if (this.isProcessing) {\n console.log(\"Culler processing not finished yet.\");\n return;\n }\n this.isProcessing = !0;\n const e = t instanceof w.InstancedMesh, { geometry: n, material: s } = t, { colorMaterial: i, code: r } = this.getAvailableMaterial();\n let o;\n if (Array.isArray(s)) {\n let d = !0;\n const m = [];\n for (const f of s)\n zl.isTransparent(f) ? m.push(this._transparentMat) : (d = !1, m.push(i));\n if (d) {\n i.dispose(), this.isProcessing = !1;\n return;\n }\n o = m;\n } else if (zl.isTransparent(s)) {\n i.dispose(), this.isProcessing = !1;\n return;\n } else\n o = i;\n this._colorCodeMeshMap.set(r, t), this._meshIDColorCodeMap.set(t.uuid, r);\n const l = e ? t.count : 1, u = new w.InstancedMesh(n, o, l);\n e ? u.instanceMatrix = t.instanceMatrix : u.setMatrixAt(0, new w.Matrix4()), t.visible = !1, t.updateWorldMatrix(!0, !1), u.applyMatrix4(t.matrixWorld), u.updateMatrix(), this.scene.add(u), this.colorMeshes.set(t.uuid, u), this.increaseColor(), this.isProcessing = !1;\n }\n /**\n * Removes a mesh from the culler, so its visibility is not controlled by the culler anymore.\n * When the mesh is removed, it will be hidden from the scene and its color-coded mesh will be destroyed.\n * @param mesh - The mesh to remove. It can be a regular THREE.Mesh or an instance of THREE.InstancedMesh.\n * @returns {void}\n */\n remove(t) {\n if (this.isProcessing) {\n console.log(\"Culler processing not finished yet.\");\n return;\n }\n this.isProcessing = !0;\n const e = this.components.get(rn);\n this._currentVisibleMeshes.delete(t), this._recentlyHiddenMeshes.delete(t);\n const n = this.colorMeshes.get(t.uuid), s = this._meshIDColorCodeMap.get(t.uuid);\n if (!n || !s) {\n this.isProcessing = !1, console.log(t.visible);\n return;\n }\n this._colorCodeMeshMap.delete(s), this._meshIDColorCodeMap.delete(t.uuid), this.colorMeshes.delete(t.uuid), n.geometry = void 0, n.material = [], e.destroy(n, !0), this._recentlyHiddenMeshes.delete(t), this._currentVisibleMeshes.delete(t), this.isProcessing = !1;\n }\n getAvailableMaterial() {\n const { r: t, g: e, b: n, code: s } = this.getAvailableColor(), i = w.ColorManagement.enabled;\n w.ColorManagement.enabled = !1;\n const r = new w.Color(`rgb(${t}, ${e}, ${n})`);\n if (!this.world.renderer)\n throw new Error(\"Renderer not found in the world!\");\n const o = this.world.renderer.clippingPlanes, l = new w.MeshBasicMaterial({\n color: r,\n clippingPlanes: o,\n side: w.DoubleSide\n });\n return w.ColorManagement.enabled = i, { colorMaterial: l, code: s };\n }\n}\nconst Qc = class Ia extends Re {\n constructor(t) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"_enabled\", !0), S(this, \"list\", /* @__PURE__ */ new Map()), t.add(Ia.uuid, this);\n }\n /** {@link Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link Component.enabled} */\n set enabled(t) {\n this._enabled = t;\n for (const [e, n] of this.list)\n n.enabled = t;\n }\n /**\n * Creates a new MeshCullerRenderer for the given world.\n * If a MeshCullerRenderer already exists for the world, it will return the existing one.\n *\n * @param world - The world for which to create the MeshCullerRenderer.\n * @param config - Optional configuration settings for the MeshCullerRenderer.\n *\n * @returns The newly created or existing MeshCullerRenderer for the given world.\n */\n create(t, e) {\n if (this.list.has(t.uuid))\n return this.list.get(t.uuid);\n const n = new gf(this.components, t, e);\n return this.list.set(t.uuid, n), n;\n }\n /**\n * Deletes the MeshCullerRenderer associated with the given world.\n * If a MeshCullerRenderer exists for the given world, it will be disposed and removed from the list.\n *\n * @param world - The world for which to delete the MeshCullerRenderer.\n *\n * @returns {void}\n */\n delete(t) {\n const e = this.list.get(t.uuid);\n e && e.dispose(), this.list.delete(t.uuid);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1, this.onDisposed.trigger(Ia.uuid), this.onDisposed.reset();\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear();\n }\n};\nS(Qc, \"uuid\", \"69f2a50d-c266-44fc-b1bd-fa4d34be89e6\");\nlet Ef = Qc;\nclass vf {\n constructor(t) {\n if (S(this, \"onDisposed\", new $()), S(this, \"onAfterUpdate\", new $()), S(this, \"onBeforeUpdate\", new $()), S(this, \"onResize\", new $()), S(this, \"frontOffset\", 0), S(this, \"overrideMaterial\", new w.MeshDepthMaterial()), S(this, \"backgroundColor\", new w.Color(395274)), S(this, \"renderer\"), S(this, \"enabled\", !0), S(this, \"world\"), S(this, \"_lockRotation\", !0), S(this, \"_camera\"), S(this, \"_plane\"), S(this, \"_size\", new w.Vector2(320, 160)), S(this, \"_tempVector1\", new w.Vector3()), S(this, \"_tempVector2\", new w.Vector3()), S(this, \"_tempTarget\", new w.Vector3()), S(this, \"down\", new w.Vector3(0, -1, 0)), S(this, \"updatePlanes\", () => {\n if (!this.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const s = [], i = this.world.renderer.three;\n for (const r of i.clippingPlanes)\n s.push(r);\n s.push(this._plane), this.renderer.clippingPlanes = s;\n }), this.world = t, !this.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.renderer = new w.WebGLRenderer(), this.renderer.setSize(this._size.x, this._size.y);\n const e = 1, n = this._size.x / this._size.y;\n this._camera = new w.OrthographicCamera(\n e * n / -2,\n e * n / 2,\n e / 2,\n e / -2\n ), this.world.renderer.onClippingPlanesUpdated.add(this.updatePlanes), this._camera.position.set(0, 200, 0), this._camera.zoom = 0.1, this._camera.rotation.x = -Math.PI / 2, this._plane = new w.Plane(this.down, 200), this.updatePlanes();\n }\n /**\n * Gets or sets whether the minimap rotation is locked.\n * When rotation is locked, the minimap will always face the same direction as the camera.\n */\n get lockRotation() {\n return this._lockRotation;\n }\n /**\n * Sets whether the minimap rotation is locked.\n * When rotation is locked, the minimap will always face the same direction as the camera.\n * @param active - If `true`, rotation is locked. If `false`, rotation is not locked.\n */\n set lockRotation(t) {\n this._lockRotation = t, t && (this._camera.rotation.z = 0);\n }\n /**\n * Gets the current zoom level of the minimap.\n * The zoom level determines how much of the world is visible on the minimap.\n * @returns The current zoom level of the minimap.\n */\n get zoom() {\n return this._camera.zoom;\n }\n /**\n * Sets the zoom level of the minimap.\n * The zoom level determines how much of the world is visible on the minimap.\n * @param value - The new zoom level of the minimap.\n */\n set zoom(t) {\n this._camera.zoom = t, this._camera.updateProjectionMatrix();\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.enabled = !1, this.onBeforeUpdate.reset(), this.onAfterUpdate.reset(), this.onResize.reset(), this.overrideMaterial.dispose(), this.renderer.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /** Returns the camera used by the MiniMap */\n get() {\n return this._camera;\n }\n /** {@link Updateable.update} */\n update() {\n if (!this.enabled)\n return;\n this.onBeforeUpdate.trigger();\n const t = this.world.scene.three, e = this.world.camera;\n if (!e.hasCameraControls())\n throw new Error(\"The given world must use camera controls!\");\n if (!(t instanceof w.Scene))\n throw new Error(\"The given world must have a THREE.Scene as a root!\");\n const n = e.controls;\n if (n.getPosition(this._tempVector1), this._camera.position.x = this._tempVector1.x, this._camera.position.z = this._tempVector1.z, this.frontOffset !== 0 && (n.getTarget(this._tempVector2), this._tempVector2.sub(this._tempVector1), this._tempVector2.normalize().multiplyScalar(this.frontOffset), this._camera.position.x += this._tempVector2.x, this._camera.position.z += this._tempVector2.z), !this._lockRotation) {\n n.getTarget(this._tempTarget);\n const i = Math.atan2(\n this._tempTarget.x - this._tempVector1.x,\n this._tempTarget.z - this._tempVector1.z\n );\n this._camera.rotation.z = i + Math.PI;\n }\n this._plane.set(this.down, this._tempVector1.y);\n const s = t.background;\n t.background = this.backgroundColor, this.renderer.render(t, this._camera), t.background = s, this.onAfterUpdate.trigger();\n }\n /** {@link Resizeable.getSize} */\n getSize() {\n return this._size;\n }\n /** {@link Resizeable.resize} */\n resize(t = this._size) {\n this._size.copy(t), this.renderer.setSize(t.x, t.y);\n const e = t.x / t.y, n = 1;\n this._camera.left = n * e / -2, this._camera.right = n * e / 2, this._camera.top = n / 2, this._camera.bottom = -n / 2, this._camera.updateProjectionMatrix(), this.onResize.trigger(t);\n }\n}\nconst If = class qc extends Re {\n constructor(t) {\n super(t), S(this, \"onAfterUpdate\", new $()), S(this, \"onBeforeUpdate\", new $()), S(this, \"onDisposed\", new $()), S(this, \"enabled\", !0), S(this, \"list\", /* @__PURE__ */ new Map()), this.components.add(qc.uuid, this);\n }\n /**\n * Creates a new {@link MiniMap} instance associated with the given world.\n * If a {@link MiniMap} instance already exists for the given world, an error will be thrown.\n *\n * @param world - The {@link World} for which to create a {@link MiniMap} instance.\n * @returns The newly created {@link MiniMap} instance.\n * @throws Will throw an error if a {@link MiniMap} instance already exists for the given world.\n */\n create(t) {\n if (this.list.has(t.uuid))\n throw new Error(\"This world already has a minimap!\");\n const e = new vf(t);\n return this.list.set(t.uuid, e), e;\n }\n /**\n * Deletes a {@link MiniMap} instance associated with the given world ID.\n * If a {@link MiniMap} instance does not exist for the given ID, nothing happens.\n *\n * @param id - The unique identifier of the world for which to delete the {@link MiniMap} instance.\n * @returns {void}\n */\n delete(t) {\n const e = this.list.get(t);\n e && e.dispose(), this.list.delete(t);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.list)\n e.dispose();\n this.list.clear(), this.onDisposed.trigger();\n }\n /** {@link Updateable.update} */\n update() {\n for (const [t, e] of this.list)\n e.update();\n }\n};\nS(If, \"uuid\", \"39ad6aad-84c8-4adf-a1e0-7f25313a9e7f\");\nconst yf = /* @__PURE__ */ new Map([\n [\n de.IFCRELAGGREGATES,\n {\n forRelating: \"IsDecomposedBy\",\n forRelated: \"Decomposes\"\n }\n ],\n [\n de.IFCRELASSOCIATESMATERIAL,\n {\n forRelating: \"AssociatedTo\",\n forRelated: \"HasAssociations\"\n }\n ],\n [\n de.IFCRELASSOCIATESCLASSIFICATION,\n {\n forRelating: \"ClassificationForObjects\",\n forRelated: \"HasAssociations\"\n }\n ],\n [\n de.IFCRELASSIGNSTOGROUP,\n {\n forRelating: \"IsGroupedBy\",\n forRelated: \"HasAssignments\"\n }\n ],\n [\n de.IFCRELDEFINESBYPROPERTIES,\n {\n forRelated: \"IsDefinedBy\",\n forRelating: \"DefinesOcurrence\"\n }\n ],\n [\n de.IFCRELDEFINESBYTYPE,\n {\n forRelated: \"IsTypedBy\",\n forRelating: \"Types\"\n }\n ],\n [\n de.IFCRELDEFINESBYTEMPLATE,\n {\n forRelated: \"IsDefinedBy\",\n forRelating: \"Defines\"\n }\n ],\n [\n de.IFCRELCONTAINEDINSPATIALSTRUCTURE,\n {\n forRelated: \"ContainedInStructure\",\n forRelating: \"ContainsElements\"\n }\n ]\n]), Jc = class ya extends Re {\n constructor(t) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"onRelationsIndexed\", new $()), S(this, \"relationMaps\", {}), S(this, \"enabled\", !0), S(this, \"_relToAttributesMap\", yf), S(this, \"_inverseAttributes\", [\n \"IsDecomposedBy\",\n \"Decomposes\",\n \"AssociatedTo\",\n \"HasAssociations\",\n \"ClassificationForObjects\",\n \"IsGroupedBy\",\n \"HasAssignments\",\n \"IsDefinedBy\",\n \"DefinesOcurrence\",\n \"IsTypedBy\",\n \"Types\",\n \"Defines\",\n \"ContainedInStructure\",\n \"ContainsElements\"\n ]), S(this, \"_ifcRels\", [\n de.IFCRELAGGREGATES,\n de.IFCRELASSOCIATESMATERIAL,\n de.IFCRELASSOCIATESCLASSIFICATION,\n de.IFCRELASSIGNSTOGROUP,\n de.IFCRELDEFINESBYPROPERTIES,\n de.IFCRELDEFINESBYTYPE,\n de.IFCRELDEFINESBYTEMPLATE,\n de.IFCRELCONTAINEDINSPATIALSTRUCTURE\n ]), S(this, \"onFragmentsDisposed\", (e) => {\n delete this.relationMaps[e.groupID];\n }), this.components.add(ya.uuid, this), t.get(ke).onFragmentsDisposed.add(this.onFragmentsDisposed);\n }\n indexRelations(t, e, n, s) {\n const i = Object.keys(e).find(\n (m) => m.startsWith(\"Relating\")\n ), r = Object.keys(e).find(\n (m) => m.startsWith(\"Related\")\n );\n if (!(i && r))\n return;\n const o = e[i].value, l = e[r].map((m) => m.value), u = t.get(o) ?? /* @__PURE__ */ new Map(), d = this._inverseAttributes.indexOf(s);\n u.set(d, l), t.set(o, u);\n for (const m of l) {\n const f = t.get(m) ?? /* @__PURE__ */ new Map(), g = this._inverseAttributes.indexOf(n), v = f.get(g) ?? [];\n v.push(o), f.set(g, v), t.set(m, f);\n }\n }\n /**\n * Adds a relation map to the model's relations map.\n *\n * @param model - The `FragmentsGroup` model to which the relation map will be added.\n * @param relationMap - The `RelationsMap` to be added to the model's relations map.\n *\n * @fires onRelationsIndexed - Triggers an event with the model's UUID and the added relation map.\n */\n setRelationMap(t, e) {\n this.relationMaps[t.uuid] = e, this.onRelationsIndexed.trigger({\n modelID: t.uuid,\n relationsMap: e\n });\n }\n /**\n * Processes a given model to index its IFC entities relations based on predefined inverse attributes.\n * This method iterates through each specified inverse attribute, retrieves the corresponding relations,\n * and maps them in a structured way to facilitate quick access to related entities.\n *\n * The process involves querying the model for each relation type associated with the inverse attributes\n * and updating the internal relationMaps with the relationships found. This map is keyed by the model's UUID\n * and contains a nested map where each key is an entity's expressID and its value is another map.\n * This inner map's keys are the indices of the inverse attributes, and its values are arrays of expressIDs\n * of entities that are related through that attribute.\n *\n * @param model The `FragmentsGroup` model to be processed. It must have properties loaded.\n * @returns A promise that resolves to the relations map for the processed model. This map is a detailed\n * representation of the relations indexed by entity expressIDs and relation types.\n * @throws An error if the model does not have properties loaded.\n */\n async process(t) {\n if (!t.hasProperties)\n throw new Error(\"FragmentsGroup properties not found\");\n let e = this.relationMaps[t.uuid];\n if (e)\n return e;\n e = /* @__PURE__ */ new Map();\n for (const n of this._ifcRels) {\n const s = await t.getAllPropertiesOfType(n);\n if (!s)\n continue;\n const i = this._relToAttributesMap.get(n);\n if (!i)\n continue;\n const { forRelated: r, forRelating: o } = i;\n for (const l in s) {\n const u = s[l];\n this.indexRelations(e, u, r, o);\n }\n }\n return this.setRelationMap(t, e), e;\n }\n /**\n * Processes a given model from a WebIfc API to index its IFC entities relations.\n *\n * @param ifcApi - The WebIfc API instance from which to retrieve the model's properties.\n * @param modelID - The unique identifier of the model within the WebIfc API.\n * @returns A promise that resolves to the relations map for the processed model.\n * This map is a detailed representation of the relations indexed by entity expressIDs and relation types.\n */\n async processFromWebIfc(t, e) {\n const n = /* @__PURE__ */ new Map();\n for (const s of this._ifcRels) {\n const i = this._relToAttributesMap.get(s);\n if (!i)\n continue;\n const { forRelated: r, forRelating: o } = i, l = t.GetLineIDsWithType(e, s);\n for (let u = 0; u < l.size(); u++) {\n const d = await t.properties.getItemProperties(\n e,\n l.get(u)\n );\n this.indexRelations(n, d, r, o);\n }\n }\n return this.onRelationsIndexed.trigger({\n modelID: e.toString(),\n relationsMap: n\n }), n;\n }\n /**\n * Retrieves the relations of a specific entity within a model based on the given relation name.\n * This method searches the indexed relation maps for the specified model and entity,\n * returning the IDs of related entities if a match is found.\n *\n * @param model The `FragmentsGroup` model containing the entity.\n * @param expressID The unique identifier of the entity within the model.\n * @param relationName The IFC schema inverse attribute of the relation to search for (e.g., \"IsDefinedBy\", \"ContainsElements\").\n * @returns An array of express IDs representing the related entities, or `null` if no relations are found\n * or the specified relation name is not indexed.\n */\n getEntityRelations(t, e, n) {\n const s = this.relationMaps[t.uuid];\n if (!s)\n return null;\n const i = s.get(e), r = this._inverseAttributes.indexOf(n);\n return !i || r === -1 ? null : i.get(r) || null;\n }\n /**\n * Serializes the relations of a given relation map into a JSON string.\n * This method iterates through the relations in the given map, organizing them into a structured object where each key is an expressID of an entity,\n * and its value is another object mapping relation indices to arrays of related entity expressIDs.\n * The resulting object is then serialized into a JSON string.\n *\n * @param relationMap - The map of relations to be serialized. The map keys are expressIDs of entities, and the values are maps where each key is a relation type ID and its value is an array of expressIDs of entities related through that relation type.\n * @returns A JSON string representing the serialized relations of the given relation map.\n */\n serializeRelations(t) {\n const e = {};\n for (const [n, s] of t.entries()) {\n e[n] || (e[n] = {});\n for (const [i, r] of s.entries())\n e[n][i] = r;\n }\n return JSON.stringify(e);\n }\n /**\n * Serializes the relations of a specific model into a JSON string.\n * This method iterates through the relations indexed for the given model,\n * organizing them into a structured object where each key is an expressID of an entity,\n * and its value is another object mapping relation indices to arrays of related entity expressIDs.\n * The resulting object is then serialized into a JSON string.\n *\n * @param model The `FragmentsGroup` model whose relations are to be serialized.\n * @returns A JSON string representing the serialized relations of the specified model.\n * If the model has no indexed relations, `null` is returned.\n */\n serializeModelRelations(t) {\n const e = this.relationMaps[t.uuid];\n return e ? this.serializeRelations(e) : null;\n }\n /**\n * Serializes all relations of every model processed by the indexer into a JSON string.\n * This method iterates through each model's relations indexed in `relationMaps`, organizing them\n * into a structured JSON object. Each top-level key in this object corresponds to a model's UUID,\n * and its value is another object mapping entity expressIDs to their related entities, categorized\n * by relation types. The structure facilitates easy access to any entity's relations across all models.\n *\n * @returns A JSON string representing the serialized relations of all models processed by the indexer.\n * If no relations have been indexed, an empty object is returned as a JSON string.\n */\n serializeAllRelations() {\n const t = {};\n for (const e in this.relationMaps) {\n const n = this.relationMaps[e], s = {};\n for (const [i, r] of n.entries()) {\n s[i] || (s[i] = {});\n for (const [o, l] of r.entries())\n s[i][o] = l;\n }\n t[e] = s;\n }\n return JSON.stringify(t);\n }\n /**\n * Converts a JSON string representing relations between entities into a structured map.\n * This method parses the JSON string to reconstruct the relations map that indexes\n * entity relations by their express IDs. The outer map keys are the express IDs of entities,\n * and the values are maps where each key is a relation type ID and its value is an array\n * of express IDs of entities related through that relation type.\n *\n * @param json The JSON string to be parsed into the relations map.\n * @returns A `Map` where the key is the express ID of an entity as a number, and the value\n * is another `Map`. This inner map's key is the relation type ID as a number, and its value\n * is an array of express IDs (as numbers) of entities related through that relation type.\n */\n getRelationsMapFromJSON(t) {\n const e = JSON.parse(t), n = /* @__PURE__ */ new Map();\n for (const s in e) {\n const i = e[s], r = /* @__PURE__ */ new Map();\n for (const o in i)\n r.set(Number(o), i[o]);\n n.set(Number(s), r);\n }\n return n;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.relationMaps = {}, this.components.get(ke).onFragmentsDisposed.remove(this.onFragmentsDisposed), this.onDisposed.trigger(ya.uuid), this.onDisposed.reset();\n }\n};\nS(Jc, \"uuid\", \"23a889ab-83b3-44a4-8bee-ead83438370b\");\nlet Xr = Jc;\nconst $c = class eh extends Re {\n constructor(t) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"onFragmentsLoaded\", new $()), S(this, \"onFragmentsDisposed\", new $()), S(this, \"list\", /* @__PURE__ */ new Map()), S(this, \"groups\", /* @__PURE__ */ new Map()), S(this, \"baseCoordinationModel\", \"\"), S(this, \"enabled\", !0), S(this, \"_loader\", new bu()), this.components.add(eh.uuid, this);\n }\n /**\n * Getter for the meshes of all fragments in the FragmentsManager.\n * It iterates over the fragments in the list and pushes their meshes into an array.\n * @returns {THREE.Mesh[]} An array of THREE.Mesh objects representing the fragments.\n */\n get meshes() {\n const t = [];\n for (const [e, n] of this.list)\n t.push(n.mesh);\n return t;\n }\n /** {@link Disposable.dispose} */\n dispose() {\n for (const [t, e] of this.groups)\n e.dispose(!0);\n this.baseCoordinationModel = \"\", this.groups.clear(), this.list.clear(), this.onFragmentsLoaded.reset(), this.onFragmentsDisposed.reset(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Dispose of a specific fragment group.\n * This method removes the group from the groups map, deletes all fragments within the group from the list,\n * disposes of the group, and triggers the onFragmentsDisposed event.\n *\n * @param group - The fragment group to be disposed.\n */\n disposeGroup(t) {\n const { uuid: e } = t, n = [];\n for (const s of t.items)\n n.push(s.id), this.list.delete(s.id);\n t.dispose(!0), this.groups.delete(t.uuid), this.onFragmentsDisposed.trigger({\n groupID: e,\n fragmentIDs: n\n });\n }\n /**\n * Loads a binary file that contain fragment geometry.\n * @param data - The binary data to load.\n * @param config - Optional configuration for loading.\n * @param config.coordinate - Whether to apply coordinate transformation. Default is true.\n * @param config.properties - Ifc properties to set on the loaded fragments. Not to be used when streaming.\n * @returns The loaded FragmentsGroup.\n */\n load(t, e) {\n const n = { coordinate: !0, ...e }, { coordinate: s, name: i, properties: r, relationsMap: o } = n, l = this._loader.import(t);\n i && (l.name = i);\n for (const u of l.items)\n u.group = l, this.list.set(u.id, u);\n return s && this.coordinate([l]), this.groups.set(l.uuid, l), r && l.setLocalProperties(r), o && this.components.get(Xr).setRelationMap(l, o), this.onFragmentsLoaded.trigger(l), l;\n }\n /**\n * Export the specified fragmentsgroup to binary data.\n * @param group - the fragments group to be exported.\n * @returns the exported data as binary buffer.\n */\n export(t) {\n return this._loader.export(t);\n }\n /**\n * Gets a map of model IDs to sets of express IDs for the given fragment ID map.\n * @param fragmentIdMap - A map of fragment IDs to their corresponding express IDs.\n * @returns A map of model IDs to sets of express IDs.\n */\n getModelIdMap(t) {\n const e = {};\n for (const n in t) {\n const s = this.list.get(n);\n if (!(s && s.group))\n continue;\n const i = s.group;\n i.uuid in e || (e[i.uuid] = /* @__PURE__ */ new Set());\n const r = t[n];\n for (const o of r)\n e[i.uuid].add(o);\n }\n return e;\n }\n /**\n * Converts a map of model IDs to sets of express IDs to a fragment ID map.\n * @param modelIdMap - A map of model IDs to their corresponding express IDs.\n * @returns A fragment ID map.\n * @remarks\n * This method iterates through the provided model ID map, retrieves the corresponding model from the `groups` map,\n * and then calls the `getFragmentMap` method of the model to obtain a fragment ID map for the given express IDs.\n * The fragment ID maps are then merged into a single map and returned.\n * If a model with a given ID is not found in the `groups` map, the method skips that model and continues with the next one.\n */\n modelIdToFragmentIdMap(t) {\n let e = {};\n for (const n in t) {\n const s = this.groups.get(n);\n if (!s)\n continue;\n const i = t[n], r = s.getFragmentMap(i);\n e = { ...e, ...r };\n }\n return e;\n }\n /**\n * Applies coordinate transformation to the provided models.\n * If no models are provided, all groups are used.\n * The first model in the list becomes the base model for coordinate transformation.\n * All other models are then transformed to match the base model's coordinate system.\n *\n * @param models - The models to apply coordinate transformation to.\n * If not provided, all groups are used.\n *\n * @returns {void}\n */\n coordinate(t = Array.from(this.groups.values())) {\n if (this.baseCoordinationModel.length === 0) {\n const n = t.pop();\n if (!n)\n return;\n this.baseCoordinationModel = n.uuid;\n }\n if (!t.length)\n return;\n const e = this.groups.get(this.baseCoordinationModel);\n if (!e) {\n console.log(\"No base model found for coordination!\");\n return;\n }\n for (const n of t)\n n !== e && (n.position.set(0, 0, 0), n.rotation.set(0, 0, 0), n.scale.set(1, 1, 1), n.updateMatrix(), n.applyMatrix4(n.coordinationMatrix.clone().invert()), n.applyMatrix4(e.coordinationMatrix));\n }\n};\nS($c, \"uuid\", \"fef46874-46a3-461b-8c44-2922ab77c806\");\nlet ke = $c;\nconst th = class tn extends Re {\n constructor(t) {\n super(t), S(this, \"enabled\", !0), S(this, \"onDisposed\", new $()), S(this, \"_absoluteMin\"), S(this, \"_absoluteMax\"), S(this, \"_meshes\", []), this.components.add(tn.uuid, this), this._absoluteMin = tn.newBound(!0), this._absoluteMax = tn.newBound(!1);\n }\n /**\n * A static method to calculate the dimensions of a given bounding box.\n *\n * @param bbox - The bounding box to calculate the dimensions for.\n * @returns An object containing the width, height, depth, and center of the bounding box.\n */\n static getDimensions(t) {\n const { min: e, max: n } = t, s = Math.abs(n.x - e.x), i = Math.abs(n.y - e.y), r = Math.abs(n.z - e.z), o = new w.Vector3();\n return o.subVectors(n, e).divideScalar(2).add(e), { width: s, height: i, depth: r, center: o };\n }\n /**\n * A static method to create a new bounding box boundary.\n *\n * @param positive - A boolean indicating whether to create a boundary for positive or negative values.\n * @returns A new THREE.Vector3 representing the boundary.\n *\n * @remarks\n * This method is used to create a new boundary for calculating bounding boxes.\n * It sets the x, y, and z components of the returned vector to positive or negative infinity,\n * depending on the value of the `positive` parameter.\n *\n * @example\n * ```typescript\n * const positiveBound = BoundingBoxer.newBound(true);\n * console.log(positiveBound); // Output: Vector3 { x: Infinity, y: Infinity, z: Infinity }\n *\n * const negativeBound = BoundingBoxer.newBound(false);\n * console.log(negativeBound); // Output: Vector3 { x: -Infinity, y: -Infinity, z: -Infinity }\n * ```\n */\n static newBound(t) {\n const e = t ? 1 : -1;\n return new w.Vector3(\n e * Number.MAX_VALUE,\n e * Number.MAX_VALUE,\n e * Number.MAX_VALUE\n );\n }\n /**\n * A static method to calculate the bounding box of a set of points.\n *\n * @param points - An array of THREE.Vector3 representing the points.\n * @param min - An optional THREE.Vector3 representing the minimum bounds. If not provided, it will be calculated.\n * @param max - An optional THREE.Vector3 representing the maximum bounds. If not provided, it will be calculated.\n * @returns A THREE.Box3 representing the bounding box of the given points.\n *\n * @remarks\n * This method calculates the bounding box of a set of points by iterating through each point and updating the minimum and maximum bounds accordingly.\n * If the `min` or `max` parameters are provided, they will be used as the initial bounds. Otherwise, the initial bounds will be set to positive and negative infinity.\n *\n * @example\n * ```typescript\n * const points = [\n * new THREE.Vector3(1, 2, 3),\n * new THREE.Vector3(4, 5, 6),\n * new THREE.Vector3(7, 8, 9),\n * ];\n *\n * const bbox = BoundingBoxer.getBounds(points);\n * console.log(bbox); // Output: Box3 { min: Vector3 { x: 1, y: 2, z: 3 }, max: Vector3 { x: 7, y: 8, z: 9 } }\n * ```\n */\n static getBounds(t, e, n) {\n const s = n || this.newBound(!1), i = e || this.newBound(!0);\n for (const r of t)\n r.x < i.x && (i.x = r.x), r.y < i.y && (i.y = r.y), r.z < i.z && (i.z = r.z), r.x > s.x && (s.x = r.x), r.y > s.y && (s.y = r.y), r.z > s.z && (s.z = r.z);\n return new w.Box3(e, n);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n const t = this.components.get(rn);\n for (const e of this._meshes)\n t.destroy(e);\n this._meshes = [], this.onDisposed.trigger(tn.uuid), this.onDisposed.reset();\n }\n /**\n * Returns the bounding box of the calculated fragments.\n *\n * @returns A new THREE.Box3 instance representing the bounding box.\n *\n * @remarks\n * This method clones the internal minimum and maximum vectors and returns a new THREE.Box3 instance.\n * The returned box represents the bounding box of the calculated fragments.\n *\n * @example\n * ```typescript\n * const boundingBox = boundingBoxer.get();\n * console.log(boundingBox); // Output: Box3 { min: Vector3 { x: -10, y: -10, z: -10 }, max: Vector3 { x: 10, y: 10, z: 10 } }\n * ```\n */\n get() {\n const t = this._absoluteMin.clone(), e = this._absoluteMax.clone();\n return new w.Box3(t, e);\n }\n /**\n * Calculates and returns a sphere that encompasses the entire bounding box.\n *\n * @returns A new THREE.Sphere instance representing the calculated sphere.\n *\n * @remarks\n * This method calculates the center and radius of a sphere that encompasses the entire bounding box.\n * The center is calculated as the midpoint between the minimum and maximum bounds of the bounding box.\n * The radius is calculated as the distance from the center to the minimum bound.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * const boundingSphere = boundingBoxer.getSphere();\n * console.log(boundingSphere); // Output: Sphere { center: Vector3 { x: 0, y: 0, z: 0 }, radius: 10 }\n * ```\n */\n getSphere() {\n const t = this._absoluteMin.clone(), e = this._absoluteMax.clone(), n = Math.abs((e.x - t.x) / 2), s = Math.abs((e.y - t.y) / 2), i = Math.abs((e.z - t.z) / 2), r = new w.Vector3(t.x + n, t.y + s, t.z + i), o = r.distanceTo(t);\n return new w.Sphere(r, o);\n }\n /**\n * Returns a THREE.Mesh instance representing the bounding box.\n *\n * @returns A new THREE.Mesh instance representing the bounding box.\n *\n * @remarks\n * This method calculates the dimensions of the bounding box using the `getDimensions` method.\n * It then creates a new THREE.BoxGeometry with the calculated dimensions.\n * A new THREE.Mesh is created using the box geometry, and it is added to the `_meshes` array.\n * The position of the mesh is set to the center of the bounding box.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * const boundingBoxMesh = boundingBoxer.getMesh();\n * scene.add(boundingBoxMesh);\n * ```\n */\n getMesh() {\n const t = new w.Box3(this._absoluteMin, this._absoluteMax), e = tn.getDimensions(t), { width: n, height: s, depth: i, center: r } = e, o = new w.BoxGeometry(n, s, i), l = new w.Mesh(o);\n return this._meshes.push(l), l.position.copy(r), l;\n }\n /**\n * Resets the internal minimum and maximum vectors to positive and negative infinity, respectively.\n * This method is used to prepare the BoundingBoxer for a new set of fragments.\n *\n * @remarks\n * This method is called when a new set of fragments is added to the BoundingBoxer.\n * It ensures that the bounding box calculations are accurate and up-to-date.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * // ...\n * boundingBoxer.reset();\n * ```\n */\n reset() {\n this._absoluteMin = tn.newBound(!0), this._absoluteMax = tn.newBound(!1);\n }\n /**\n * Adds a FragmentsGroup to the BoundingBoxer.\n *\n * @param group - The FragmentsGroup to add.\n *\n * @remarks\n * This method iterates through each fragment in the provided FragmentsGroup,\n * and calls the `addMesh` method for each fragment's mesh.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.add(fragmentsGroup);\n * ```\n */\n add(t) {\n for (const e of t.items)\n this.addMesh(e.mesh);\n }\n /**\n * Adds a mesh to the BoundingBoxer and calculates the bounding box.\n *\n * @param mesh - The mesh to add. It can be an instance of THREE.InstancedMesh, THREE.Mesh, or FRAGS.CurveMesh.\n * @param itemIDs - An optional iterable of numbers representing the item IDs.\n *\n * @remarks\n * This method calculates the bounding box of the provided mesh and updates the internal minimum and maximum vectors.\n * If the mesh is an instance of THREE.InstancedMesh, it calculates the bounding box for each instance.\n * If the mesh is an instance of FRAGS.FragmentMesh and itemIDs are provided, it calculates the bounding box for the specified item IDs.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * boundingBoxer.addMesh(mesh);\n * ```\n */\n addMesh(t, e) {\n if (!t.geometry.index)\n return;\n const n = tn.getFragmentBounds(t);\n t.updateMatrixWorld();\n const s = t.matrixWorld, i = new w.Matrix4(), r = t instanceof w.InstancedMesh, o = /* @__PURE__ */ new Set();\n if (e && t instanceof xt.FragmentMesh)\n for (const l of e) {\n const u = t.fragment.getInstancesIDs(l);\n if (u)\n for (const d of u)\n o.add(d);\n }\n else\n o.add(0);\n for (const l of o) {\n const u = n.min.clone(), d = n.max.clone();\n r && (t.getMatrixAt(l, i), u.applyMatrix4(i), d.applyMatrix4(i)), u.applyMatrix4(s), d.applyMatrix4(s), u.x < this._absoluteMin.x && (this._absoluteMin.x = u.x), u.y < this._absoluteMin.y && (this._absoluteMin.y = u.y), u.z < this._absoluteMin.z && (this._absoluteMin.z = u.z), u.x > this._absoluteMax.x && (this._absoluteMax.x = u.x), u.y > this._absoluteMax.y && (this._absoluteMax.y = u.y), u.z > this._absoluteMax.z && (this._absoluteMax.z = u.z), d.x > this._absoluteMax.x && (this._absoluteMax.x = d.x), d.y > this._absoluteMax.y && (this._absoluteMax.y = d.y), d.z > this._absoluteMax.z && (this._absoluteMax.z = d.z), d.x < this._absoluteMin.x && (this._absoluteMin.x = d.x), d.y < this._absoluteMin.y && (this._absoluteMin.y = d.y), d.z < this._absoluteMin.z && (this._absoluteMin.z = d.z);\n }\n }\n /**\n * Uses a FragmentIdMap to add its meshes to the bb calculation.\n *\n * This method iterates through the provided `fragmentIdMap`, retrieves the corresponding fragment from the `FragmentsManager`,\n * and then calls the `addMesh` method for each fragment's mesh, passing the expression IDs as the second parameter.\n *\n * @param fragmentIdMap - A mapping of fragment IDs to their corresponding expression IDs.\n *\n * @remarks\n * This method is used to add a mapping of fragment IDs to their corresponding expression IDs.\n * It ensures that the bounding box calculations are accurate and up-to-date by updating the internal minimum and maximum vectors.\n *\n * @example\n * ```typescript\n * const boundingBoxer = components.get(BoundingBoxer);\n * const fragmentIdMap: FRAGS.FragmentIdMap = {\n * '5991fa75-2eef-4825-90b3-85177f51a9c9': [123, 245, 389],\n * '3469077e-39bf-4fc9-b3e6-4a1d78ad52b0': [454, 587, 612],\n * };\n * boundingBoxer.addFragmentIdMap(fragmentIdMap);\n * ```\n */\n addFragmentIdMap(t) {\n const e = this.components.get(ke);\n for (const n in t) {\n const s = e.list.get(n);\n if (!s)\n continue;\n const i = t[n];\n this.addMesh(s.mesh, i);\n }\n }\n static getFragmentBounds(t) {\n const e = t.geometry.attributes.position, n = Number.MAX_VALUE, s = -n, i = new w.Vector3(n, n, n), r = new w.Vector3(s, s, s);\n if (!t.geometry.index)\n throw new Error(\"Geometry must be indexed!\");\n const o = Array.from(t.geometry.index.array);\n for (let l = 0; l < o.length; l++) {\n if (l % 3 === 0 && o[l] === 0 && o[l + 1] === 0 && o[l + 2] === 0) {\n l += 2;\n continue;\n }\n const u = o[l], d = e.getX(u), m = e.getY(u), f = e.getZ(u);\n d < i.x && (i.x = d), m < i.y && (i.y = m), f < i.z && (i.z = f), d > r.x && (r.x = d), m > r.y && (r.y = m), f > r.z && (r.z = f);\n }\n return new w.Box3(i, r);\n }\n};\nS(th, \"uuid\", \"d1444724-dba6-4cdd-a0c7-68ee1450d166\");\nlet wa = th;\nconst nh = /* @__PURE__ */ new Set([\n 1123145078,\n 574549367,\n 1675464909,\n 2059837836,\n 3798115385,\n 32440307,\n 3125803723,\n 3207858831,\n 2740243338,\n 2624227202,\n 4240577450,\n 3615266464,\n 3724593414,\n 220341763,\n 477187591,\n 1878645084,\n 1300840506,\n 3303107099,\n 1607154358,\n 1878645084,\n 846575682,\n 1351298697,\n 2417041796,\n 3049322572,\n 3331915920,\n 1416205885,\n 776857604,\n 3285139300,\n 3958052878,\n 2827736869,\n 2732653382,\n 673634403,\n 3448662350,\n 4142052618,\n 2924175390,\n 803316827,\n 2556980723,\n 1809719519,\n 2205249479,\n 807026263,\n 3737207727,\n 1660063152,\n 2347385850,\n 2705031697,\n 3732776249,\n 2485617015,\n 2611217952,\n 1704287377,\n 2937912522,\n 2770003689,\n 1281925730,\n 1484403080,\n 3448662350,\n 4142052618,\n 3800577675,\n 4006246654,\n 3590301190,\n 1383045692,\n 2775532180,\n 2047409740,\n 370225590,\n 3593883385,\n 2665983363,\n 4124623270,\n 812098782,\n 3649129432,\n 987898635,\n 1105321065,\n 3510044353,\n 1635779807,\n 2603310189,\n 3406155212,\n 1310608509,\n 4261334040,\n 2736907675,\n 3649129432,\n 1136057603,\n 1260505505,\n 4182860854,\n 2713105998,\n 2898889636,\n 59481748,\n 3749851601,\n 3486308946,\n 3150382593,\n 1062206242,\n 3264961684,\n 15328376,\n 1485152156,\n 370225590,\n 1981873012,\n 2859738748,\n 45288368,\n 2614616156,\n 2732653382,\n 775493141,\n 2147822146,\n 2601014836,\n 2629017746,\n 1186437898,\n 2367409068,\n 1213902940,\n 3632507154,\n 3900360178,\n 476780140,\n 1472233963,\n 2804161546,\n 3008276851,\n 738692330,\n 374418227,\n 315944413,\n 3905492369,\n 3570813810,\n 2571569899,\n 178912537,\n 2294589976,\n 1437953363,\n 2133299955,\n 572779678,\n 3092502836,\n 388784114,\n 2624227202,\n 1425443689,\n 3057273783,\n 2347385850,\n 1682466193,\n 2519244187,\n 2839578677,\n 3958567839,\n 2513912981,\n 2830218821,\n 427810014\n]), sh = class ih extends Re {\n constructor(t) {\n super(t), S(this, \"enabled\", !0), t.add(ih.uuid, this);\n }\n /**\n * Exports all the properties of an IFC into an array of JS objects.\n * @param webIfc The instance of [web-ifc](https://github.com/ThatOpen/engine_web-ifc) to use.\n * @param modelID ID of the IFC model whose properties to extract.\n * @param indirect whether to get the indirect relationships as well.\n * @param recursiveSpatial whether to get the properties of spatial items recursively\n * to make the location data available (e.g. absolute position of building).\n */\n async export(t, e, n = !1, s = !0) {\n const i = {}, r = new Set(t.GetIfcEntityList(e)), o = /* @__PURE__ */ new Set([\n de.IFCPROJECT,\n de.IFCSITE,\n de.IFCBUILDING,\n de.IFCBUILDINGSTOREY,\n de.IFCSPACE\n ]);\n for (const l of o)\n r.add(l);\n for (const l of r) {\n if (nh.has(l))\n continue;\n const u = o.has(l) && s, d = t.GetLineIDsWithType(e, l);\n for (const m of d) {\n const f = t.GetLine(0, m, u, n);\n i[f.expressID] = f;\n }\n }\n return i;\n }\n};\nS(sh, \"uuid\", \"b32c4332-cd67-436e-ba7f-196646c7a635\");\nlet wf = sh;\nconst rh = {\n 950732822: \"IFCURIREFERENCE\",\n 4075327185: \"IFCTIME\",\n 1209108979: \"IFCTEMPERATURERATEOFCHANGEMEASURE\",\n 3457685358: \"IFCSOUNDPRESSURELEVELMEASURE\",\n 4157543285: \"IFCSOUNDPOWERLEVELMEASURE\",\n 2798247006: \"IFCPROPERTYSETDEFINITIONSET\",\n 1790229001: \"IFCPOSITIVEINTEGER\",\n 525895558: \"IFCNONNEGATIVELENGTHMEASURE\",\n 1774176899: \"IFCLINEINDEX\",\n 1275358634: \"IFCLANGUAGEID\",\n 2541165894: \"IFCDURATION\",\n 3701338814: \"IFCDAYINWEEKNUMBER\",\n 2195413836: \"IFCDATETIME\",\n 937566702: \"IFCDATE\",\n 1683019596: \"IFCCARDINALPOINTREFERENCE\",\n 2314439260: \"IFCBINARY\",\n 1500781891: \"IFCAREADENSITYMEASURE\",\n 3683503648: \"IFCARCINDEX\",\n 4065007721: \"IFCYEARNUMBER\",\n 1718600412: \"IFCWARPINGMOMENTMEASURE\",\n 51269191: \"IFCWARPINGCONSTANTMEASURE\",\n 2593997549: \"IFCVOLUMETRICFLOWRATEMEASURE\",\n 3458127941: \"IFCVOLUMEMEASURE\",\n 3345633955: \"IFCVAPORPERMEABILITYMEASURE\",\n 1278329552: \"IFCTORQUEMEASURE\",\n 2591213694: \"IFCTIMESTAMP\",\n 2726807636: \"IFCTIMEMEASURE\",\n 743184107: \"IFCTHERMODYNAMICTEMPERATUREMEASURE\",\n 2016195849: \"IFCTHERMALTRANSMITTANCEMEASURE\",\n 857959152: \"IFCTHERMALRESISTANCEMEASURE\",\n 2281867870: \"IFCTHERMALEXPANSIONCOEFFICIENTMEASURE\",\n 2645777649: \"IFCTHERMALCONDUCTIVITYMEASURE\",\n 232962298: \"IFCTHERMALADMITTANCEMEASURE\",\n 296282323: \"IFCTEXTTRANSFORMATION\",\n 603696268: \"IFCTEXTFONTNAME\",\n 3490877962: \"IFCTEXTDECORATION\",\n 1460886941: \"IFCTEXTALIGNMENT\",\n 2801250643: \"IFCTEXT\",\n 58845555: \"IFCTEMPERATUREGRADIENTMEASURE\",\n 361837227: \"IFCSPECULARROUGHNESS\",\n 2757832317: \"IFCSPECULAREXPONENT\",\n 3477203348: \"IFCSPECIFICHEATCAPACITYMEASURE\",\n 993287707: \"IFCSOUNDPRESSUREMEASURE\",\n 846465480: \"IFCSOUNDPOWERMEASURE\",\n 3471399674: \"IFCSOLIDANGLEMEASURE\",\n 408310005: \"IFCSHEARMODULUSMEASURE\",\n 2190458107: \"IFCSECTIONALAREAINTEGRALMEASURE\",\n 3467162246: \"IFCSECTIONMODULUSMEASURE\",\n 2766185779: \"IFCSECONDINMINUTE\",\n 3211557302: \"IFCROTATIONALSTIFFNESSMEASURE\",\n 1755127002: \"IFCROTATIONALMASSMEASURE\",\n 2133746277: \"IFCROTATIONALFREQUENCYMEASURE\",\n 200335297: \"IFCREAL\",\n 96294661: \"IFCRATIOMEASURE\",\n 3972513137: \"IFCRADIOACTIVITYMEASURE\",\n 3665567075: \"IFCPRESSUREMEASURE\",\n 2169031380: \"IFCPRESENTABLETEXT\",\n 1364037233: \"IFCPOWERMEASURE\",\n 1245737093: \"IFCPOSITIVERATIOMEASURE\",\n 3054510233: \"IFCPOSITIVEPLANEANGLEMEASURE\",\n 2815919920: \"IFCPOSITIVELENGTHMEASURE\",\n 4042175685: \"IFCPLANEANGLEMEASURE\",\n 2642773653: \"IFCPLANARFORCEMEASURE\",\n 2260317790: \"IFCPARAMETERVALUE\",\n 929793134: \"IFCPHMEASURE\",\n 2395907400: \"IFCNUMERICMEASURE\",\n 2095195183: \"IFCNORMALISEDRATIOMEASURE\",\n 765770214: \"IFCMONTHINYEARNUMBER\",\n 2615040989: \"IFCMONETARYMEASURE\",\n 3114022597: \"IFCMOMENTOFINERTIAMEASURE\",\n 1648970520: \"IFCMOLECULARWEIGHTMEASURE\",\n 3177669450: \"IFCMOISTUREDIFFUSIVITYMEASURE\",\n 1753493141: \"IFCMODULUSOFSUBGRADEREACTIONMEASURE\",\n 1052454078: \"IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE\",\n 2173214787: \"IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE\",\n 3341486342: \"IFCMODULUSOFELASTICITYMEASURE\",\n 102610177: \"IFCMINUTEINHOUR\",\n 3531705166: \"IFCMASSPERLENGTHMEASURE\",\n 3124614049: \"IFCMASSMEASURE\",\n 4017473158: \"IFCMASSFLOWRATEMEASURE\",\n 1477762836: \"IFCMASSDENSITYMEASURE\",\n 2486716878: \"IFCMAGNETICFLUXMEASURE\",\n 286949696: \"IFCMAGNETICFLUXDENSITYMEASURE\",\n 151039812: \"IFCLUMINOUSINTENSITYMEASURE\",\n 2755797622: \"IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE\",\n 2095003142: \"IFCLUMINOUSFLUXMEASURE\",\n 503418787: \"IFCLOGICAL\",\n 3086160713: \"IFCLINEARVELOCITYMEASURE\",\n 1307019551: \"IFCLINEARSTIFFNESSMEASURE\",\n 2128979029: \"IFCLINEARMOMENTMEASURE\",\n 191860431: \"IFCLINEARFORCEMEASURE\",\n 1243674935: \"IFCLENGTHMEASURE\",\n 3258342251: \"IFCLABEL\",\n 2054016361: \"IFCKINEMATICVISCOSITYMEASURE\",\n 3192672207: \"IFCISOTHERMALMOISTURECAPACITYMEASURE\",\n 3686016028: \"IFCIONCONCENTRATIONMEASURE\",\n 3809634241: \"IFCINTEGERCOUNTRATEMEASURE\",\n 1939436016: \"IFCINTEGER\",\n 2679005408: \"IFCINDUCTANCEMEASURE\",\n 3358199106: \"IFCILLUMINANCEMEASURE\",\n 983778844: \"IFCIDENTIFIER\",\n 2589826445: \"IFCHOURINDAY\",\n 1158859006: \"IFCHEATINGVALUEMEASURE\",\n 3113092358: \"IFCHEATFLUXDENSITYMEASURE\",\n 3064340077: \"IFCGLOBALLYUNIQUEID\",\n 3044325142: \"IFCFREQUENCYMEASURE\",\n 1361398929: \"IFCFORCEMEASURE\",\n 2590844177: \"IFCFONTWEIGHT\",\n 2715512545: \"IFCFONTVARIANT\",\n 1102727119: \"IFCFONTSTYLE\",\n 2078135608: \"IFCENERGYMEASURE\",\n 2506197118: \"IFCELECTRICVOLTAGEMEASURE\",\n 2951915441: \"IFCELECTRICRESISTANCEMEASURE\",\n 3790457270: \"IFCELECTRICCURRENTMEASURE\",\n 2093906313: \"IFCELECTRICCONDUCTANCEMEASURE\",\n 3818826038: \"IFCELECTRICCHARGEMEASURE\",\n 1827137117: \"IFCELECTRICCAPACITANCEMEASURE\",\n 69416015: \"IFCDYNAMICVISCOSITYMEASURE\",\n 524656162: \"IFCDOSEEQUIVALENTMEASURE\",\n 4134073009: \"IFCDIMENSIONCOUNT\",\n 1514641115: \"IFCDESCRIPTIVEMEASURE\",\n 300323983: \"IFCDAYLIGHTSAVINGHOUR\",\n 86635668: \"IFCDAYINMONTHNUMBER\",\n 94842927: \"IFCCURVATUREMEASURE\",\n 1778710042: \"IFCCOUNTMEASURE\",\n 3238673880: \"IFCCONTEXTDEPENDENTMEASURE\",\n 3812528620: \"IFCCOMPOUNDPLANEANGLEMEASURE\",\n 2991860651: \"IFCCOMPLEXNUMBER\",\n 1867003952: \"IFCBOXALIGNMENT\",\n 2735952531: \"IFCBOOLEAN\",\n 2650437152: \"IFCAREAMEASURE\",\n 632304761: \"IFCANGULARVELOCITYMEASURE\",\n 360377573: \"IFCAMOUNTOFSUBSTANCEMEASURE\",\n 4182062534: \"IFCACCELERATIONMEASURE\",\n 3699917729: \"IFCABSORBEDDOSEMEASURE\",\n 1971632696: \"IFCGEOSLICE\",\n 2680139844: \"IFCGEOMODEL\",\n 24726584: \"IFCELECTRICFLOWTREATMENTDEVICE\",\n 3693000487: \"IFCDISTRIBUTIONBOARD\",\n 3460952963: \"IFCCONVEYORSEGMENT\",\n 3999819293: \"IFCCAISSONFOUNDATION\",\n 3314249567: \"IFCBOREHOLE\",\n 4196446775: \"IFCBEARING\",\n 325726236: \"IFCALIGNMENT\",\n 3425753595: \"IFCTRACKELEMENT\",\n 991950508: \"IFCSIGNAL\",\n 3798194928: \"IFCREINFORCEDSOIL\",\n 3290496277: \"IFCRAIL\",\n 1383356374: \"IFCPAVEMENT\",\n 2182337498: \"IFCNAVIGATIONELEMENT\",\n 234836483: \"IFCMOORINGDEVICE\",\n 2078563270: \"IFCMOBILETELECOMMUNICATIONSAPPLIANCE\",\n 1638804497: \"IFCLIQUIDTERMINAL\",\n 1154579445: \"IFCLINEARPOSITIONINGELEMENT\",\n 2696325953: \"IFCKERB\",\n 2713699986: \"IFCGEOTECHNICALASSEMBLY\",\n 2142170206: \"IFCELECTRICFLOWTREATMENTDEVICETYPE\",\n 3376911765: \"IFCEARTHWORKSFILL\",\n 1077100507: \"IFCEARTHWORKSELEMENT\",\n 3071239417: \"IFCEARTHWORKSCUT\",\n 479945903: \"IFCDISTRIBUTIONBOARDTYPE\",\n 3426335179: \"IFCDEEPFOUNDATION\",\n 1502416096: \"IFCCOURSE\",\n 2940368186: \"IFCCONVEYORSEGMENTTYPE\",\n 3203706013: \"IFCCAISSONFOUNDATIONTYPE\",\n 3862327254: \"IFCBUILTSYSTEM\",\n 1876633798: \"IFCBUILTELEMENT\",\n 963979645: \"IFCBRIDGEPART\",\n 644574406: \"IFCBRIDGE\",\n 3649138523: \"IFCBEARINGTYPE\",\n 1662888072: \"IFCALIGNMENTVERTICAL\",\n 317615605: \"IFCALIGNMENTSEGMENT\",\n 1545765605: \"IFCALIGNMENTHORIZONTAL\",\n 4266260250: \"IFCALIGNMENTCANT\",\n 3956297820: \"IFCVIBRATIONDAMPERTYPE\",\n 1530820697: \"IFCVIBRATIONDAMPER\",\n 840318589: \"IFCVEHICLE\",\n 1953115116: \"IFCTRANSPORTATIONDEVICE\",\n 618700268: \"IFCTRACKELEMENTTYPE\",\n 2281632017: \"IFCTENDONCONDUITTYPE\",\n 3663046924: \"IFCTENDONCONDUIT\",\n 42703149: \"IFCSINESPIRAL\",\n 1894708472: \"IFCSIGNALTYPE\",\n 3599934289: \"IFCSIGNTYPE\",\n 33720170: \"IFCSIGN\",\n 1027922057: \"IFCSEVENTHORDERPOLYNOMIALSPIRAL\",\n 544395925: \"IFCSEGMENTEDREFERENCECURVE\",\n 3649235739: \"IFCSECONDORDERPOLYNOMIALSPIRAL\",\n 550521510: \"IFCROADPART\",\n 146592293: \"IFCROAD\",\n 3818125796: \"IFCRELADHERESTOELEMENT\",\n 4021432810: \"IFCREFERENT\",\n 1891881377: \"IFCRAILWAYPART\",\n 3992365140: \"IFCRAILWAY\",\n 1763565496: \"IFCRAILTYPE\",\n 1946335990: \"IFCPOSITIONINGELEMENT\",\n 514975943: \"IFCPAVEMENTTYPE\",\n 506776471: \"IFCNAVIGATIONELEMENTTYPE\",\n 710110818: \"IFCMOORINGDEVICETYPE\",\n 1950438474: \"IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE\",\n 976884017: \"IFCMARINEPART\",\n 525669439: \"IFCMARINEFACILITY\",\n 1770583370: \"IFCLIQUIDTERMINALTYPE\",\n 2176059722: \"IFCLINEARELEMENT\",\n 679976338: \"IFCKERBTYPE\",\n 3948183225: \"IFCIMPACTPROTECTIONDEVICETYPE\",\n 2568555532: \"IFCIMPACTPROTECTIONDEVICE\",\n 2898700619: \"IFCGRADIENTCURVE\",\n 1594536857: \"IFCGEOTECHNICALSTRATUM\",\n 4230923436: \"IFCGEOTECHNICALELEMENT\",\n 4228831410: \"IFCFACILITYPARTCOMMON\",\n 1310830890: \"IFCFACILITYPART\",\n 24185140: \"IFCFACILITY\",\n 4234616927: \"IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID\",\n 1306400036: \"IFCDEEPFOUNDATIONTYPE\",\n 4189326743: \"IFCCOURSETYPE\",\n 2000195564: \"IFCCOSINESPIRAL\",\n 3497074424: \"IFCCLOTHOID\",\n 1626504194: \"IFCBUILTELEMENTTYPE\",\n 3651464721: \"IFCVEHICLETYPE\",\n 1229763772: \"IFCTRIANGULATEDIRREGULARNETWORK\",\n 3665877780: \"IFCTRANSPORTATIONDEVICETYPE\",\n 782932809: \"IFCTHIRDORDERPOLYNOMIALSPIRAL\",\n 2735484536: \"IFCSPIRAL\",\n 1356537516: \"IFCSECTIONEDSURFACE\",\n 1290935644: \"IFCSECTIONEDSOLIDHORIZONTAL\",\n 1862484736: \"IFCSECTIONEDSOLID\",\n 1441486842: \"IFCRELPOSITIONS\",\n 1033248425: \"IFCRELASSOCIATESPROFILEDEF\",\n 3381221214: \"IFCPOLYNOMIALCURVE\",\n 2485787929: \"IFCOFFSETCURVEBYDISTANCES\",\n 590820931: \"IFCOFFSETCURVE\",\n 3465909080: \"IFCINDEXEDPOLYGONALTEXTUREMAP\",\n 593015953: \"IFCDIRECTRIXCURVESWEPTAREASOLID\",\n 4212018352: \"IFCCURVESEGMENT\",\n 3425423356: \"IFCAXIS2PLACEMENTLINEAR\",\n 823603102: \"IFCSEGMENT\",\n 2165702409: \"IFCPOINTBYDISTANCEEXPRESSION\",\n 182550632: \"IFCOPENCROSSPROFILEDEF\",\n 388784114: \"IFCLINEARPLACEMENT\",\n 536804194: \"IFCALIGNMENTHORIZONTALSEGMENT\",\n 3752311538: \"IFCALIGNMENTCANTSEGMENT\",\n 1010789467: \"IFCTEXTURECOORDINATEINDICESWITHVOIDS\",\n 222769930: \"IFCTEXTURECOORDINATEINDICES\",\n 2691318326: \"IFCQUANTITYNUMBER\",\n 3633395639: \"IFCALIGNMENTVERTICALSEGMENT\",\n 2879124712: \"IFCALIGNMENTPARAMETERSEGMENT\",\n 25142252: \"IFCCONTROLLER\",\n 3087945054: \"IFCALARM\",\n 4288193352: \"IFCACTUATOR\",\n 630975310: \"IFCUNITARYCONTROLELEMENT\",\n 4086658281: \"IFCSENSOR\",\n 2295281155: \"IFCPROTECTIVEDEVICETRIPPINGUNIT\",\n 182646315: \"IFCFLOWINSTRUMENT\",\n 1426591983: \"IFCFIRESUPPRESSIONTERMINAL\",\n 819412036: \"IFCFILTER\",\n 3415622556: \"IFCFAN\",\n 1003880860: \"IFCELECTRICTIMECONTROL\",\n 402227799: \"IFCELECTRICMOTOR\",\n 264262732: \"IFCELECTRICGENERATOR\",\n 3310460725: \"IFCELECTRICFLOWSTORAGEDEVICE\",\n 862014818: \"IFCELECTRICDISTRIBUTIONBOARD\",\n 1904799276: \"IFCELECTRICAPPLIANCE\",\n 1360408905: \"IFCDUCTSILENCER\",\n 3518393246: \"IFCDUCTSEGMENT\",\n 342316401: \"IFCDUCTFITTING\",\n 562808652: \"IFCDISTRIBUTIONCIRCUIT\",\n 4074379575: \"IFCDAMPER\",\n 3640358203: \"IFCCOOLINGTOWER\",\n 4136498852: \"IFCCOOLEDBEAM\",\n 2272882330: \"IFCCONDENSER\",\n 3571504051: \"IFCCOMPRESSOR\",\n 3221913625: \"IFCCOMMUNICATIONSAPPLIANCE\",\n 639361253: \"IFCCOIL\",\n 3902619387: \"IFCCHILLER\",\n 4217484030: \"IFCCABLESEGMENT\",\n 1051757585: \"IFCCABLEFITTING\",\n 3758799889: \"IFCCABLECARRIERSEGMENT\",\n 635142910: \"IFCCABLECARRIERFITTING\",\n 2938176219: \"IFCBURNER\",\n 32344328: \"IFCBOILER\",\n 2906023776: \"IFCBEAMSTANDARDCASE\",\n 277319702: \"IFCAUDIOVISUALAPPLIANCE\",\n 2056796094: \"IFCAIRTOAIRHEATRECOVERY\",\n 177149247: \"IFCAIRTERMINALBOX\",\n 1634111441: \"IFCAIRTERMINAL\",\n 486154966: \"IFCWINDOWSTANDARDCASE\",\n 4237592921: \"IFCWASTETERMINAL\",\n 4156078855: \"IFCWALLELEMENTEDCASE\",\n 4207607924: \"IFCVALVE\",\n 4292641817: \"IFCUNITARYEQUIPMENT\",\n 3179687236: \"IFCUNITARYCONTROLELEMENTTYPE\",\n 3026737570: \"IFCTUBEBUNDLE\",\n 3825984169: \"IFCTRANSFORMER\",\n 812556717: \"IFCTANK\",\n 1162798199: \"IFCSWITCHINGDEVICE\",\n 385403989: \"IFCSTRUCTURALLOADCASE\",\n 1404847402: \"IFCSTACKTERMINAL\",\n 1999602285: \"IFCSPACEHEATER\",\n 3420628829: \"IFCSOLARDEVICE\",\n 3027962421: \"IFCSLABSTANDARDCASE\",\n 3127900445: \"IFCSLABELEMENTEDCASE\",\n 1329646415: \"IFCSHADINGDEVICE\",\n 3053780830: \"IFCSANITARYTERMINAL\",\n 2572171363: \"IFCREINFORCINGBARTYPE\",\n 1232101972: \"IFCRATIONALBSPLINECURVEWITHKNOTS\",\n 90941305: \"IFCPUMP\",\n 655969474: \"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE\",\n 738039164: \"IFCPROTECTIVEDEVICE\",\n 1156407060: \"IFCPLATESTANDARDCASE\",\n 3612865200: \"IFCPIPESEGMENT\",\n 310824031: \"IFCPIPEFITTING\",\n 3694346114: \"IFCOUTLET\",\n 144952367: \"IFCOUTERBOUNDARYCURVE\",\n 2474470126: \"IFCMOTORCONNECTION\",\n 1911478936: \"IFCMEMBERSTANDARDCASE\",\n 1437502449: \"IFCMEDICALDEVICE\",\n 629592764: \"IFCLIGHTFIXTURE\",\n 76236018: \"IFCLAMP\",\n 2176052936: \"IFCJUNCTIONBOX\",\n 4175244083: \"IFCINTERCEPTOR\",\n 2068733104: \"IFCHUMIDIFIER\",\n 3319311131: \"IFCHEATEXCHANGER\",\n 2188021234: \"IFCFLOWMETER\",\n 1209101575: \"IFCEXTERNALSPATIALELEMENT\",\n 484807127: \"IFCEVAPORATOR\",\n 3747195512: \"IFCEVAPORATIVECOOLER\",\n 2814081492: \"IFCENGINE\",\n 2417008758: \"IFCELECTRICDISTRIBUTIONBOARDTYPE\",\n 3242481149: \"IFCDOORSTANDARDCASE\",\n 3205830791: \"IFCDISTRIBUTIONSYSTEM\",\n 400855858: \"IFCCOMMUNICATIONSAPPLIANCETYPE\",\n 905975707: \"IFCCOLUMNSTANDARDCASE\",\n 1677625105: \"IFCCIVILELEMENT\",\n 3296154744: \"IFCCHIMNEY\",\n 2674252688: \"IFCCABLEFITTINGTYPE\",\n 2188180465: \"IFCBURNERTYPE\",\n 1177604601: \"IFCBUILDINGSYSTEM\",\n 39481116: \"IFCBUILDINGELEMENTPARTTYPE\",\n 1136057603: \"IFCBOUNDARYCURVE\",\n 2461110595: \"IFCBSPLINECURVEWITHKNOTS\",\n 1532957894: \"IFCAUDIOVISUALAPPLIANCETYPE\",\n 4088093105: \"IFCWORKCALENDAR\",\n 4009809668: \"IFCWINDOWTYPE\",\n 926996030: \"IFCVOIDINGFEATURE\",\n 2391383451: \"IFCVIBRATIONISOLATOR\",\n 2415094496: \"IFCTENDONTYPE\",\n 3081323446: \"IFCTENDONANCHORTYPE\",\n 413509423: \"IFCSYSTEMFURNITUREELEMENT\",\n 3101698114: \"IFCSURFACEFEATURE\",\n 3657597509: \"IFCSTRUCTURALSURFACEACTION\",\n 2757150158: \"IFCSTRUCTURALCURVEREACTION\",\n 1004757350: \"IFCSTRUCTURALCURVEACTION\",\n 338393293: \"IFCSTAIRTYPE\",\n 1072016465: \"IFCSOLARDEVICETYPE\",\n 4074543187: \"IFCSHADINGDEVICETYPE\",\n 2157484638: \"IFCSEAMCURVE\",\n 2781568857: \"IFCROOFTYPE\",\n 2310774935: \"IFCREINFORCINGMESHTYPE\",\n 964333572: \"IFCREINFORCINGELEMENTTYPE\",\n 683857671: \"IFCRATIONALBSPLINESURFACEWITHKNOTS\",\n 1469900589: \"IFCRAMPTYPE\",\n 2839578677: \"IFCPOLYGONALFACESET\",\n 1158309216: \"IFCPILETYPE\",\n 3079942009: \"IFCOPENINGSTANDARDCASE\",\n 1114901282: \"IFCMEDICALDEVICETYPE\",\n 3113134337: \"IFCINTERSECTIONCURVE\",\n 3946677679: \"IFCINTERCEPTORTYPE\",\n 2571569899: \"IFCINDEXEDPOLYCURVE\",\n 3493046030: \"IFCGEOGRAPHICELEMENT\",\n 1509553395: \"IFCFURNITURE\",\n 1893162501: \"IFCFOOTINGTYPE\",\n 2853485674: \"IFCEXTERNALSPATIALSTRUCTUREELEMENT\",\n 4148101412: \"IFCEVENT\",\n 132023988: \"IFCENGINETYPE\",\n 2397081782: \"IFCELEMENTASSEMBLYTYPE\",\n 2323601079: \"IFCDOORTYPE\",\n 1213902940: \"IFCCYLINDRICALSURFACE\",\n 1525564444: \"IFCCONSTRUCTIONPRODUCTRESOURCETYPE\",\n 4105962743: \"IFCCONSTRUCTIONMATERIALRESOURCETYPE\",\n 2185764099: \"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE\",\n 15328376: \"IFCCOMPOSITECURVEONSURFACE\",\n 3875453745: \"IFCCOMPLEXPROPERTYTEMPLATE\",\n 3893394355: \"IFCCIVILELEMENTTYPE\",\n 2197970202: \"IFCCHIMNEYTYPE\",\n 167062518: \"IFCBSPLINESURFACEWITHKNOTS\",\n 2887950389: \"IFCBSPLINESURFACE\",\n 2603310189: \"IFCADVANCEDBREPWITHVOIDS\",\n 1635779807: \"IFCADVANCEDBREP\",\n 2916149573: \"IFCTRIANGULATEDFACESET\",\n 1935646853: \"IFCTOROIDALSURFACE\",\n 2387106220: \"IFCTESSELLATEDFACESET\",\n 3206491090: \"IFCTASKTYPE\",\n 699246055: \"IFCSURFACECURVE\",\n 4095615324: \"IFCSUBCONTRACTRESOURCETYPE\",\n 603775116: \"IFCSTRUCTURALSURFACEREACTION\",\n 4015995234: \"IFCSPHERICALSURFACE\",\n 2481509218: \"IFCSPATIALZONETYPE\",\n 463610769: \"IFCSPATIALZONE\",\n 710998568: \"IFCSPATIALELEMENTTYPE\",\n 1412071761: \"IFCSPATIALELEMENT\",\n 3663146110: \"IFCSIMPLEPROPERTYTEMPLATE\",\n 3243963512: \"IFCREVOLVEDAREASOLIDTAPERED\",\n 816062949: \"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT\",\n 1521410863: \"IFCRELSPACEBOUNDARY2NDLEVEL\",\n 3523091289: \"IFCRELSPACEBOUNDARY1STLEVEL\",\n 427948657: \"IFCRELINTERFERESELEMENTS\",\n 307848117: \"IFCRELDEFINESBYTEMPLATE\",\n 1462361463: \"IFCRELDEFINESBYOBJECT\",\n 2565941209: \"IFCRELDECLARES\",\n 1027710054: \"IFCRELASSIGNSTOGROUPBYFACTOR\",\n 3521284610: \"IFCPROPERTYTEMPLATE\",\n 492091185: \"IFCPROPERTYSETTEMPLATE\",\n 653396225: \"IFCPROJECTLIBRARY\",\n 569719735: \"IFCPROCEDURETYPE\",\n 3967405729: \"IFCPREDEFINEDPROPERTYSET\",\n 1682466193: \"IFCPCURVE\",\n 428585644: \"IFCLABORRESOURCETYPE\",\n 2294589976: \"IFCINDEXEDPOLYGONALFACEWITHVOIDS\",\n 178912537: \"IFCINDEXEDPOLYGONALFACE\",\n 4095422895: \"IFCGEOGRAPHICELEMENTTYPE\",\n 2652556860: \"IFCFIXEDREFERENCESWEPTAREASOLID\",\n 2804161546: \"IFCEXTRUDEDAREASOLIDTAPERED\",\n 4024345920: \"IFCEVENTTYPE\",\n 2629017746: \"IFCCURVEBOUNDEDSURFACE\",\n 1815067380: \"IFCCREWRESOURCETYPE\",\n 3419103109: \"IFCCONTEXT\",\n 2574617495: \"IFCCONSTRUCTIONRESOURCETYPE\",\n 2059837836: \"IFCCARTESIANPOINTLIST3D\",\n 1675464909: \"IFCCARTESIANPOINTLIST2D\",\n 574549367: \"IFCCARTESIANPOINTLIST\",\n 3406155212: \"IFCADVANCEDFACE\",\n 3698973494: \"IFCTYPERESOURCE\",\n 3736923433: \"IFCTYPEPROCESS\",\n 901063453: \"IFCTESSELLATEDITEM\",\n 1096409881: \"IFCSWEPTDISKSOLIDPOLYGONAL\",\n 1042787934: \"IFCRESOURCETIME\",\n 1608871552: \"IFCRESOURCECONSTRAINTRELATIONSHIP\",\n 2943643501: \"IFCRESOURCEAPPROVALRELATIONSHIP\",\n 2090586900: \"IFCQUANTITYSET\",\n 1482703590: \"IFCPROPERTYTEMPLATEDEFINITION\",\n 3778827333: \"IFCPREDEFINEDPROPERTIES\",\n 2998442950: \"IFCMIRROREDPROFILEDEF\",\n 853536259: \"IFCMATERIALRELATIONSHIP\",\n 3404854881: \"IFCMATERIALPROFILESETUSAGETAPERING\",\n 3079605661: \"IFCMATERIALPROFILESETUSAGE\",\n 2852063980: \"IFCMATERIALCONSTITUENTSET\",\n 3708119e3: \"IFCMATERIALCONSTITUENT\",\n 1585845231: \"IFCLAGTIME\",\n 2133299955: \"IFCINDEXEDTRIANGLETEXTUREMAP\",\n 1437953363: \"IFCINDEXEDTEXTUREMAP\",\n 3570813810: \"IFCINDEXEDCOLOURMAP\",\n 1437805879: \"IFCEXTERNALREFERENCERELATIONSHIP\",\n 297599258: \"IFCEXTENDEDPROPERTIES\",\n 211053100: \"IFCEVENTTIME\",\n 2713554722: \"IFCCONVERSIONBASEDUNITWITHOFFSET\",\n 3285139300: \"IFCCOLOURRGBLIST\",\n 1236880293: \"IFCWORKTIME\",\n 1199560280: \"IFCTIMEPERIOD\",\n 3611470254: \"IFCTEXTUREVERTEXLIST\",\n 2771591690: \"IFCTASKTIMERECURRING\",\n 1549132990: \"IFCTASKTIME\",\n 2043862942: \"IFCTABLECOLUMN\",\n 2934153892: \"IFCSURFACEREINFORCEMENTAREA\",\n 609421318: \"IFCSTRUCTURALLOADORRESULT\",\n 3478079324: \"IFCSTRUCTURALLOADCONFIGURATION\",\n 1054537805: \"IFCSCHEDULINGTIME\",\n 2439245199: \"IFCRESOURCELEVELRELATIONSHIP\",\n 2433181523: \"IFCREFERENCE\",\n 3915482550: \"IFCRECURRENCEPATTERN\",\n 986844984: \"IFCPROPERTYABSTRACTION\",\n 3843373140: \"IFCPROJECTEDCRS\",\n 677532197: \"IFCPRESENTATIONITEM\",\n 1507914824: \"IFCMATERIALUSAGEDEFINITION\",\n 552965576: \"IFCMATERIALPROFILEWITHOFFSETS\",\n 164193824: \"IFCMATERIALPROFILESET\",\n 2235152071: \"IFCMATERIALPROFILE\",\n 1847252529: \"IFCMATERIALLAYERWITHOFFSETS\",\n 760658860: \"IFCMATERIALDEFINITION\",\n 3057273783: \"IFCMAPCONVERSION\",\n 4294318154: \"IFCEXTERNALINFORMATION\",\n 1466758467: \"IFCCOORDINATEREFERENCESYSTEM\",\n 1785450214: \"IFCCOORDINATEOPERATION\",\n 775493141: \"IFCCONNECTIONVOLUMEGEOMETRY\",\n 979691226: \"IFCREINFORCINGBAR\",\n 3700593921: \"IFCELECTRICDISTRIBUTIONPOINT\",\n 1062813311: \"IFCDISTRIBUTIONCONTROLELEMENT\",\n 1052013943: \"IFCDISTRIBUTIONCHAMBERELEMENT\",\n 578613899: \"IFCCONTROLLERTYPE\",\n 2454782716: \"IFCCHAMFEREDGEFEATURE\",\n 753842376: \"IFCBEAM\",\n 3001207471: \"IFCALARMTYPE\",\n 2874132201: \"IFCACTUATORTYPE\",\n 3304561284: \"IFCWINDOW\",\n 3512223829: \"IFCWALLSTANDARDCASE\",\n 2391406946: \"IFCWALL\",\n 3313531582: \"IFCVIBRATIONISOLATORTYPE\",\n 2347447852: \"IFCTENDONANCHOR\",\n 3824725483: \"IFCTENDON\",\n 2515109513: \"IFCSTRUCTURALANALYSISMODEL\",\n 4252922144: \"IFCSTAIRFLIGHT\",\n 331165859: \"IFCSTAIR\",\n 1529196076: \"IFCSLAB\",\n 1783015770: \"IFCSENSORTYPE\",\n 1376911519: \"IFCROUNDEDEDGEFEATURE\",\n 2016517767: \"IFCROOF\",\n 2320036040: \"IFCREINFORCINGMESH\",\n 3027567501: \"IFCREINFORCINGELEMENT\",\n 3055160366: \"IFCRATIONALBEZIERCURVE\",\n 3283111854: \"IFCRAMPFLIGHT\",\n 3024970846: \"IFCRAMP\",\n 2262370178: \"IFCRAILING\",\n 3171933400: \"IFCPLATE\",\n 1687234759: \"IFCPILE\",\n 1073191201: \"IFCMEMBER\",\n 900683007: \"IFCFOOTING\",\n 3508470533: \"IFCFLOWTREATMENTDEVICE\",\n 2223149337: \"IFCFLOWTERMINAL\",\n 707683696: \"IFCFLOWSTORAGEDEVICE\",\n 987401354: \"IFCFLOWSEGMENT\",\n 3132237377: \"IFCFLOWMOVINGDEVICE\",\n 4037862832: \"IFCFLOWINSTRUMENTTYPE\",\n 4278956645: \"IFCFLOWFITTING\",\n 2058353004: \"IFCFLOWCONTROLLER\",\n 4222183408: \"IFCFIRESUPPRESSIONTERMINALTYPE\",\n 1810631287: \"IFCFILTERTYPE\",\n 346874300: \"IFCFANTYPE\",\n 1658829314: \"IFCENERGYCONVERSIONDEVICE\",\n 857184966: \"IFCELECTRICALELEMENT\",\n 1634875225: \"IFCELECTRICALCIRCUIT\",\n 712377611: \"IFCELECTRICTIMECONTROLTYPE\",\n 1217240411: \"IFCELECTRICMOTORTYPE\",\n 1365060375: \"IFCELECTRICHEATERTYPE\",\n 1534661035: \"IFCELECTRICGENERATORTYPE\",\n 3277789161: \"IFCELECTRICFLOWSTORAGEDEVICETYPE\",\n 663422040: \"IFCELECTRICAPPLIANCETYPE\",\n 855621170: \"IFCEDGEFEATURE\",\n 2030761528: \"IFCDUCTSILENCERTYPE\",\n 3760055223: \"IFCDUCTSEGMENTTYPE\",\n 869906466: \"IFCDUCTFITTINGTYPE\",\n 395920057: \"IFCDOOR\",\n 3041715199: \"IFCDISTRIBUTIONPORT\",\n 3040386961: \"IFCDISTRIBUTIONFLOWELEMENT\",\n 1945004755: \"IFCDISTRIBUTIONELEMENT\",\n 2063403501: \"IFCDISTRIBUTIONCONTROLELEMENTTYPE\",\n 1599208980: \"IFCDISTRIBUTIONCHAMBERELEMENTTYPE\",\n 2635815018: \"IFCDISCRETEACCESSORYTYPE\",\n 1335981549: \"IFCDISCRETEACCESSORY\",\n 4147604152: \"IFCDIAMETERDIMENSION\",\n 3961806047: \"IFCDAMPERTYPE\",\n 3495092785: \"IFCCURTAINWALL\",\n 1973544240: \"IFCCOVERING\",\n 2954562838: \"IFCCOOLINGTOWERTYPE\",\n 335055490: \"IFCCOOLEDBEAMTYPE\",\n 488727124: \"IFCCONSTRUCTIONPRODUCTRESOURCE\",\n 1060000209: \"IFCCONSTRUCTIONMATERIALRESOURCE\",\n 3898045240: \"IFCCONSTRUCTIONEQUIPMENTRESOURCE\",\n 1163958913: \"IFCCONDITIONCRITERION\",\n 2188551683: \"IFCCONDITION\",\n 2816379211: \"IFCCONDENSERTYPE\",\n 3850581409: \"IFCCOMPRESSORTYPE\",\n 843113511: \"IFCCOLUMN\",\n 2301859152: \"IFCCOILTYPE\",\n 2611217952: \"IFCCIRCLE\",\n 2951183804: \"IFCCHILLERTYPE\",\n 1285652485: \"IFCCABLESEGMENTTYPE\",\n 3293546465: \"IFCCABLECARRIERSEGMENTTYPE\",\n 395041908: \"IFCCABLECARRIERFITTINGTYPE\",\n 1909888760: \"IFCBUILDINGELEMENTPROXYTYPE\",\n 1095909175: \"IFCBUILDINGELEMENTPROXY\",\n 2979338954: \"IFCBUILDINGELEMENTPART\",\n 52481810: \"IFCBUILDINGELEMENTCOMPONENT\",\n 3299480353: \"IFCBUILDINGELEMENT\",\n 231477066: \"IFCBOILERTYPE\",\n 1916977116: \"IFCBEZIERCURVE\",\n 819618141: \"IFCBEAMTYPE\",\n 1967976161: \"IFCBSPLINECURVE\",\n 3460190687: \"IFCASSET\",\n 2470393545: \"IFCANGULARDIMENSION\",\n 1871374353: \"IFCAIRTOAIRHEATRECOVERYTYPE\",\n 3352864051: \"IFCAIRTERMINALTYPE\",\n 1411407467: \"IFCAIRTERMINALBOXTYPE\",\n 3821786052: \"IFCACTIONREQUEST\",\n 1213861670: \"IFC2DCOMPOSITECURVE\",\n 1033361043: \"IFCZONE\",\n 3342526732: \"IFCWORKSCHEDULE\",\n 4218914973: \"IFCWORKPLAN\",\n 1028945134: \"IFCWORKCONTROL\",\n 1133259667: \"IFCWASTETERMINALTYPE\",\n 1898987631: \"IFCWALLTYPE\",\n 2769231204: \"IFCVIRTUALELEMENT\",\n 728799441: \"IFCVALVETYPE\",\n 1911125066: \"IFCUNITARYEQUIPMENTTYPE\",\n 1600972822: \"IFCTUBEBUNDLETYPE\",\n 3593883385: \"IFCTRIMMEDCURVE\",\n 1620046519: \"IFCTRANSPORTELEMENT\",\n 1692211062: \"IFCTRANSFORMERTYPE\",\n 1637806684: \"IFCTIMESERIESSCHEDULE\",\n 5716631: \"IFCTANKTYPE\",\n 2254336722: \"IFCSYSTEM\",\n 2315554128: \"IFCSWITCHINGDEVICETYPE\",\n 148013059: \"IFCSUBCONTRACTRESOURCE\",\n 1975003073: \"IFCSTRUCTURALSURFACECONNECTION\",\n 2986769608: \"IFCSTRUCTURALRESULTGROUP\",\n 1235345126: \"IFCSTRUCTURALPOINTREACTION\",\n 734778138: \"IFCSTRUCTURALPOINTCONNECTION\",\n 2082059205: \"IFCSTRUCTURALPOINTACTION\",\n 3987759626: \"IFCSTRUCTURALPLANARACTIONVARYING\",\n 1621171031: \"IFCSTRUCTURALPLANARACTION\",\n 1252848954: \"IFCSTRUCTURALLOADGROUP\",\n 1721250024: \"IFCSTRUCTURALLINEARACTIONVARYING\",\n 1807405624: \"IFCSTRUCTURALLINEARACTION\",\n 2445595289: \"IFCSTRUCTURALCURVEMEMBERVARYING\",\n 214636428: \"IFCSTRUCTURALCURVEMEMBER\",\n 4243806635: \"IFCSTRUCTURALCURVECONNECTION\",\n 1179482911: \"IFCSTRUCTURALCONNECTION\",\n 682877961: \"IFCSTRUCTURALACTION\",\n 1039846685: \"IFCSTAIRFLIGHTTYPE\",\n 3112655638: \"IFCSTACKTERMINALTYPE\",\n 3812236995: \"IFCSPACETYPE\",\n 652456506: \"IFCSPACEPROGRAM\",\n 1305183839: \"IFCSPACEHEATERTYPE\",\n 3856911033: \"IFCSPACE\",\n 2533589738: \"IFCSLABTYPE\",\n 4097777520: \"IFCSITE\",\n 4105383287: \"IFCSERVICELIFE\",\n 3517283431: \"IFCSCHEDULETIMECONTROL\",\n 1768891740: \"IFCSANITARYTERMINALTYPE\",\n 2863920197: \"IFCRELASSIGNSTASKS\",\n 160246688: \"IFCRELAGGREGATES\",\n 2324767716: \"IFCRAMPFLIGHTTYPE\",\n 2893384427: \"IFCRAILINGTYPE\",\n 3248260540: \"IFCRADIUSDIMENSION\",\n 2250791053: \"IFCPUMPTYPE\",\n 1842657554: \"IFCPROTECTIVEDEVICETYPE\",\n 3651124850: \"IFCPROJECTIONELEMENT\",\n 3642467123: \"IFCPROJECTORDERRECORD\",\n 2904328755: \"IFCPROJECTORDER\",\n 2744685151: \"IFCPROCEDURE\",\n 3740093272: \"IFCPORT\",\n 3724593414: \"IFCPOLYLINE\",\n 4017108033: \"IFCPLATETYPE\",\n 4231323485: \"IFCPIPESEGMENTTYPE\",\n 804291784: \"IFCPIPEFITTINGTYPE\",\n 3327091369: \"IFCPERMIT\",\n 2382730787: \"IFCPERFORMANCEHISTORY\",\n 2837617999: \"IFCOUTLETTYPE\",\n 3425660407: \"IFCORDERACTION\",\n 3588315303: \"IFCOPENINGELEMENT\",\n 4143007308: \"IFCOCCUPANT\",\n 1916936684: \"IFCMOVE\",\n 977012517: \"IFCMOTORCONNECTIONTYPE\",\n 3181161470: \"IFCMEMBERTYPE\",\n 2108223431: \"IFCMECHANICALFASTENERTYPE\",\n 377706215: \"IFCMECHANICALFASTENER\",\n 2506943328: \"IFCLINEARDIMENSION\",\n 1161773419: \"IFCLIGHTFIXTURETYPE\",\n 1051575348: \"IFCLAMPTYPE\",\n 3827777499: \"IFCLABORRESOURCE\",\n 4288270099: \"IFCJUNCTIONBOXTYPE\",\n 2391368822: \"IFCINVENTORY\",\n 1806887404: \"IFCHUMIDIFIERTYPE\",\n 1251058090: \"IFCHEATEXCHANGERTYPE\",\n 2706460486: \"IFCGROUP\",\n 3009204131: \"IFCGRID\",\n 200128114: \"IFCGASTERMINALTYPE\",\n 814719939: \"IFCFURNITURESTANDARD\",\n 263784265: \"IFCFURNISHINGELEMENT\",\n 3009222698: \"IFCFLOWTREATMENTDEVICETYPE\",\n 2297155007: \"IFCFLOWTERMINALTYPE\",\n 1339347760: \"IFCFLOWSTORAGEDEVICETYPE\",\n 1834744321: \"IFCFLOWSEGMENTTYPE\",\n 1482959167: \"IFCFLOWMOVINGDEVICETYPE\",\n 3815607619: \"IFCFLOWMETERTYPE\",\n 3198132628: \"IFCFLOWFITTINGTYPE\",\n 3907093117: \"IFCFLOWCONTROLLERTYPE\",\n 1287392070: \"IFCFEATUREELEMENTSUBTRACTION\",\n 2143335405: \"IFCFEATUREELEMENTADDITION\",\n 2827207264: \"IFCFEATUREELEMENT\",\n 2489546625: \"IFCFASTENERTYPE\",\n 647756555: \"IFCFASTENER\",\n 3737207727: \"IFCFACETEDBREPWITHVOIDS\",\n 807026263: \"IFCFACETEDBREP\",\n 3390157468: \"IFCEVAPORATORTYPE\",\n 3174744832: \"IFCEVAPORATIVECOOLERTYPE\",\n 3272907226: \"IFCEQUIPMENTSTANDARD\",\n 1962604670: \"IFCEQUIPMENTELEMENT\",\n 2107101300: \"IFCENERGYCONVERSIONDEVICETYPE\",\n 1704287377: \"IFCELLIPSE\",\n 2590856083: \"IFCELEMENTCOMPONENTTYPE\",\n 1623761950: \"IFCELEMENTCOMPONENT\",\n 4123344466: \"IFCELEMENTASSEMBLY\",\n 1758889154: \"IFCELEMENT\",\n 360485395: \"IFCELECTRICALBASEPROPERTIES\",\n 3849074793: \"IFCDISTRIBUTIONFLOWELEMENTTYPE\",\n 3256556792: \"IFCDISTRIBUTIONELEMENTTYPE\",\n 681481545: \"IFCDIMENSIONCURVEDIRECTEDCALLOUT\",\n 1457835157: \"IFCCURTAINWALLTYPE\",\n 3295246426: \"IFCCREWRESOURCE\",\n 1916426348: \"IFCCOVERINGTYPE\",\n 1419761937: \"IFCCOSTSCHEDULE\",\n 3895139033: \"IFCCOSTITEM\",\n 3293443760: \"IFCCONTROL\",\n 2559216714: \"IFCCONSTRUCTIONRESOURCE\",\n 2510884976: \"IFCCONIC\",\n 3732776249: \"IFCCOMPOSITECURVE\",\n 300633059: \"IFCCOLUMNTYPE\",\n 2937912522: \"IFCCIRCLEHOLLOWPROFILEDEF\",\n 3124254112: \"IFCBUILDINGSTOREY\",\n 1950629157: \"IFCBUILDINGELEMENTTYPE\",\n 4031249490: \"IFCBUILDING\",\n 1260505505: \"IFCBOUNDEDCURVE\",\n 3649129432: \"IFCBOOLEANCLIPPINGRESULT\",\n 1334484129: \"IFCBLOCK\",\n 3207858831: \"IFCASYMMETRICISHAPEPROFILEDEF\",\n 1674181508: \"IFCANNOTATION\",\n 2296667514: \"IFCACTOR\",\n 2097647324: \"IFCTRANSPORTELEMENTTYPE\",\n 3473067441: \"IFCTASK\",\n 1580310250: \"IFCSYSTEMFURNITUREELEMENTTYPE\",\n 4124788165: \"IFCSURFACEOFREVOLUTION\",\n 2809605785: \"IFCSURFACEOFLINEAREXTRUSION\",\n 2028607225: \"IFCSURFACECURVESWEPTAREASOLID\",\n 4070609034: \"IFCSTRUCTUREDDIMENSIONCALLOUT\",\n 2218152070: \"IFCSTRUCTURALSURFACEMEMBERVARYING\",\n 3979015343: \"IFCSTRUCTURALSURFACEMEMBER\",\n 3689010777: \"IFCSTRUCTURALREACTION\",\n 530289379: \"IFCSTRUCTURALMEMBER\",\n 3136571912: \"IFCSTRUCTURALITEM\",\n 3544373492: \"IFCSTRUCTURALACTIVITY\",\n 451544542: \"IFCSPHERE\",\n 3893378262: \"IFCSPATIALSTRUCTUREELEMENTTYPE\",\n 2706606064: \"IFCSPATIALSTRUCTUREELEMENT\",\n 3626867408: \"IFCRIGHTCIRCULARCYLINDER\",\n 4158566097: \"IFCRIGHTCIRCULARCONE\",\n 1856042241: \"IFCREVOLVEDAREASOLID\",\n 2914609552: \"IFCRESOURCE\",\n 1401173127: \"IFCRELVOIDSELEMENT\",\n 3451746338: \"IFCRELSPACEBOUNDARY\",\n 366585022: \"IFCRELSERVICESBUILDINGS\",\n 4122056220: \"IFCRELSEQUENCE\",\n 1058617721: \"IFCRELSCHEDULESCOSTITEMS\",\n 1245217292: \"IFCRELREFERENCEDINSPATIALSTRUCTURE\",\n 750771296: \"IFCRELPROJECTSELEMENT\",\n 202636808: \"IFCRELOVERRIDESPROPERTIES\",\n 2051452291: \"IFCRELOCCUPIESSPACES\",\n 3268803585: \"IFCRELNESTS\",\n 4189434867: \"IFCRELINTERACTIONREQUIREMENTS\",\n 279856033: \"IFCRELFLOWCONTROLELEMENTS\",\n 3940055652: \"IFCRELFILLSELEMENT\",\n 781010003: \"IFCRELDEFINESBYTYPE\",\n 4186316022: \"IFCRELDEFINESBYPROPERTIES\",\n 693640335: \"IFCRELDEFINES\",\n 2551354335: \"IFCRELDECOMPOSES\",\n 2802773753: \"IFCRELCOVERSSPACES\",\n 886880790: \"IFCRELCOVERSBLDGELEMENTS\",\n 3242617779: \"IFCRELCONTAINEDINSPATIALSTRUCTURE\",\n 3678494232: \"IFCRELCONNECTSWITHREALIZINGELEMENTS\",\n 504942748: \"IFCRELCONNECTSWITHECCENTRICITY\",\n 1638771189: \"IFCRELCONNECTSSTRUCTURALMEMBER\",\n 3912681535: \"IFCRELCONNECTSSTRUCTURALELEMENT\",\n 2127690289: \"IFCRELCONNECTSSTRUCTURALACTIVITY\",\n 3190031847: \"IFCRELCONNECTSPORTS\",\n 4201705270: \"IFCRELCONNECTSPORTTOELEMENT\",\n 3945020480: \"IFCRELCONNECTSPATHELEMENTS\",\n 1204542856: \"IFCRELCONNECTSELEMENTS\",\n 826625072: \"IFCRELCONNECTS\",\n 2851387026: \"IFCRELASSOCIATESPROFILEPROPERTIES\",\n 2655215786: \"IFCRELASSOCIATESMATERIAL\",\n 3840914261: \"IFCRELASSOCIATESLIBRARY\",\n 982818633: \"IFCRELASSOCIATESDOCUMENT\",\n 2728634034: \"IFCRELASSOCIATESCONSTRAINT\",\n 919958153: \"IFCRELASSOCIATESCLASSIFICATION\",\n 4095574036: \"IFCRELASSOCIATESAPPROVAL\",\n 1327628568: \"IFCRELASSOCIATESAPPLIEDVALUE\",\n 1865459582: \"IFCRELASSOCIATES\",\n 205026976: \"IFCRELASSIGNSTORESOURCE\",\n 3372526763: \"IFCRELASSIGNSTOPROJECTORDER\",\n 2857406711: \"IFCRELASSIGNSTOPRODUCT\",\n 4278684876: \"IFCRELASSIGNSTOPROCESS\",\n 1307041759: \"IFCRELASSIGNSTOGROUP\",\n 2495723537: \"IFCRELASSIGNSTOCONTROL\",\n 1683148259: \"IFCRELASSIGNSTOACTOR\",\n 3939117080: \"IFCRELASSIGNS\",\n 3454111270: \"IFCRECTANGULARTRIMMEDSURFACE\",\n 2798486643: \"IFCRECTANGULARPYRAMID\",\n 2770003689: \"IFCRECTANGLEHOLLOWPROFILEDEF\",\n 3219374653: \"IFCPROXY\",\n 1451395588: \"IFCPROPERTYSET\",\n 4194566429: \"IFCPROJECTIONCURVE\",\n 103090709: \"IFCPROJECT\",\n 4208778838: \"IFCPRODUCT\",\n 2945172077: \"IFCPROCESS\",\n 220341763: \"IFCPLANE\",\n 603570806: \"IFCPLANARBOX\",\n 3566463478: \"IFCPERMEABLECOVERINGPROPERTIES\",\n 3505215534: \"IFCOFFSETCURVE3D\",\n 3388369263: \"IFCOFFSETCURVE2D\",\n 3888040117: \"IFCOBJECT\",\n 1425443689: \"IFCMANIFOLDSOLIDBREP\",\n 1281925730: \"IFCLINE\",\n 572779678: \"IFCLSHAPEPROFILEDEF\",\n 1484403080: \"IFCISHAPEPROFILEDEF\",\n 987898635: \"IFCGEOMETRICCURVESET\",\n 1268542332: \"IFCFURNITURETYPE\",\n 4238390223: \"IFCFURNISHINGELEMENTTYPE\",\n 3455213021: \"IFCFLUIDFLOWPROPERTIES\",\n 315944413: \"IFCFILLAREASTYLETILES\",\n 4203026998: \"IFCFILLAREASTYLETILESYMBOLWITHSTYLE\",\n 374418227: \"IFCFILLAREASTYLEHATCHING\",\n 2047409740: \"IFCFACEBASEDSURFACEMODEL\",\n 477187591: \"IFCEXTRUDEDAREASOLID\",\n 80994333: \"IFCENERGYPROPERTIES\",\n 2835456948: \"IFCELLIPSEPROFILEDEF\",\n 2777663545: \"IFCELEMENTARYSURFACE\",\n 339256511: \"IFCELEMENTTYPE\",\n 1883228015: \"IFCELEMENTQUANTITY\",\n 1472233963: \"IFCEDGELOOP\",\n 4006246654: \"IFCDRAUGHTINGPREDEFINEDCURVEFONT\",\n 445594917: \"IFCDRAUGHTINGPREDEFINEDCOLOUR\",\n 3073041342: \"IFCDRAUGHTINGCALLOUT\",\n 526551008: \"IFCDOORSTYLE\",\n 1714330368: \"IFCDOORPANELPROPERTIES\",\n 2963535650: \"IFCDOORLININGPROPERTIES\",\n 32440307: \"IFCDIRECTION\",\n 4054601972: \"IFCDIMENSIONCURVETERMINATOR\",\n 606661476: \"IFCDIMENSIONCURVE\",\n 693772133: \"IFCDEFINEDSYMBOL\",\n 2827736869: \"IFCCURVEBOUNDEDPLANE\",\n 2601014836: \"IFCCURVE\",\n 2147822146: \"IFCCSGSOLID\",\n 2506170314: \"IFCCSGPRIMITIVE3D\",\n 194851669: \"IFCCRANERAILFSHAPEPROFILEDEF\",\n 4133800736: \"IFCCRANERAILASHAPEPROFILEDEF\",\n 2485617015: \"IFCCOMPOSITECURVESEGMENT\",\n 2205249479: \"IFCCLOSEDSHELL\",\n 1383045692: \"IFCCIRCLEPROFILEDEF\",\n 1416205885: \"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM\",\n 3331915920: \"IFCCARTESIANTRANSFORMATIONOPERATOR3D\",\n 3486308946: \"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM\",\n 3749851601: \"IFCCARTESIANTRANSFORMATIONOPERATOR2D\",\n 59481748: \"IFCCARTESIANTRANSFORMATIONOPERATOR\",\n 1123145078: \"IFCCARTESIANPOINT\",\n 2898889636: \"IFCCSHAPEPROFILEDEF\",\n 2713105998: \"IFCBOXEDHALFSPACE\",\n 2581212453: \"IFCBOUNDINGBOX\",\n 4182860854: \"IFCBOUNDEDSURFACE\",\n 2736907675: \"IFCBOOLEANRESULT\",\n 2740243338: \"IFCAXIS2PLACEMENT3D\",\n 3125803723: \"IFCAXIS2PLACEMENT2D\",\n 4261334040: \"IFCAXIS1PLACEMENT\",\n 1302238472: \"IFCANNOTATIONSURFACE\",\n 2265737646: \"IFCANNOTATIONFILLAREAOCCURRENCE\",\n 669184980: \"IFCANNOTATIONFILLAREA\",\n 3288037868: \"IFCANNOTATIONCURVEOCCURRENCE\",\n 2543172580: \"IFCZSHAPEPROFILEDEF\",\n 1299126871: \"IFCWINDOWSTYLE\",\n 512836454: \"IFCWINDOWPANELPROPERTIES\",\n 336235671: \"IFCWINDOWLININGPROPERTIES\",\n 2759199220: \"IFCVERTEXLOOP\",\n 1417489154: \"IFCVECTOR\",\n 427810014: \"IFCUSHAPEPROFILEDEF\",\n 2347495698: \"IFCTYPEPRODUCT\",\n 1628702193: \"IFCTYPEOBJECT\",\n 1345879162: \"IFCTWODIRECTIONREPEATFACTOR\",\n 2715220739: \"IFCTRAPEZIUMPROFILEDEF\",\n 3124975700: \"IFCTEXTLITERALWITHEXTENT\",\n 4282788508: \"IFCTEXTLITERAL\",\n 3028897424: \"IFCTERMINATORSYMBOL\",\n 3071757647: \"IFCTSHAPEPROFILEDEF\",\n 230924584: \"IFCSWEPTSURFACE\",\n 1260650574: \"IFCSWEPTDISKSOLID\",\n 2247615214: \"IFCSWEPTAREASOLID\",\n 1878645084: \"IFCSURFACESTYLERENDERING\",\n 2513912981: \"IFCSURFACE\",\n 2233826070: \"IFCSUBEDGE\",\n 3653947884: \"IFCSTRUCTURALSTEELPROFILEPROPERTIES\",\n 3843319758: \"IFCSTRUCTURALPROFILEPROPERTIES\",\n 1190533807: \"IFCSTRUCTURALLOADSINGLEFORCEWARPING\",\n 1597423693: \"IFCSTRUCTURALLOADSINGLEFORCE\",\n 1973038258: \"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION\",\n 2473145415: \"IFCSTRUCTURALLOADSINGLEDISPLACEMENT\",\n 2668620305: \"IFCSTRUCTURALLOADPLANARFORCE\",\n 1595516126: \"IFCSTRUCTURALLOADLINEARFORCE\",\n 390701378: \"IFCSPACETHERMALLOADPROPERTIES\",\n 1202362311: \"IFCSOUNDVALUE\",\n 2485662743: \"IFCSOUNDPROPERTIES\",\n 723233188: \"IFCSOLIDMODEL\",\n 2609359061: \"IFCSLIPPAGECONNECTIONCONDITION\",\n 4124623270: \"IFCSHELLBASEDSURFACEMODEL\",\n 2411513650: \"IFCSERVICELIFEFACTOR\",\n 1509187699: \"IFCSECTIONEDSPINE\",\n 2778083089: \"IFCROUNDEDRECTANGLEPROFILEDEF\",\n 478536968: \"IFCRELATIONSHIP\",\n 3765753017: \"IFCREINFORCEMENTDEFINITIONPROPERTIES\",\n 3413951693: \"IFCREGULARTIMESERIES\",\n 3615266464: \"IFCRECTANGLEPROFILEDEF\",\n 110355661: \"IFCPROPERTYTABLEVALUE\",\n 3650150729: \"IFCPROPERTYSINGLEVALUE\",\n 3357820518: \"IFCPROPERTYSETDEFINITION\",\n 941946838: \"IFCPROPERTYREFERENCEVALUE\",\n 2752243245: \"IFCPROPERTYLISTVALUE\",\n 4166981789: \"IFCPROPERTYENUMERATEDVALUE\",\n 1680319473: \"IFCPROPERTYDEFINITION\",\n 871118103: \"IFCPROPERTYBOUNDEDVALUE\",\n 673634403: \"IFCPRODUCTDEFINITIONSHAPE\",\n 179317114: \"IFCPREDEFINEDPOINTMARKERSYMBOL\",\n 433424934: \"IFCPREDEFINEDDIMENSIONSYMBOL\",\n 2559016684: \"IFCPREDEFINEDCURVEFONT\",\n 759155922: \"IFCPREDEFINEDCOLOUR\",\n 2775532180: \"IFCPOLYGONALBOUNDEDHALFSPACE\",\n 2924175390: \"IFCPOLYLOOP\",\n 1423911732: \"IFCPOINTONSURFACE\",\n 4022376103: \"IFCPOINTONCURVE\",\n 2067069095: \"IFCPOINT\",\n 1663979128: \"IFCPLANAREXTENT\",\n 2004835150: \"IFCPLACEMENT\",\n 597895409: \"IFCPIXELTEXTURE\",\n 3021840470: \"IFCPHYSICALCOMPLEXQUANTITY\",\n 2519244187: \"IFCPATH\",\n 2529465313: \"IFCPARAMETERIZEDPROFILEDEF\",\n 1029017970: \"IFCORIENTEDEDGE\",\n 2665983363: \"IFCOPENSHELL\",\n 2833995503: \"IFCONEDIRECTIONREPEATFACTOR\",\n 219451334: \"IFCOBJECTDEFINITION\",\n 1430189142: \"IFCMECHANICALCONCRETEMATERIALPROPERTIES\",\n 2022407955: \"IFCMATERIALDEFINITIONREPRESENTATION\",\n 2347385850: \"IFCMAPPEDITEM\",\n 1008929658: \"IFCLOOP\",\n 2624227202: \"IFCLOCALPLACEMENT\",\n 3422422726: \"IFCLIGHTSOURCESPOT\",\n 1520743889: \"IFCLIGHTSOURCEPOSITIONAL\",\n 4266656042: \"IFCLIGHTSOURCEGONIOMETRIC\",\n 2604431987: \"IFCLIGHTSOURCEDIRECTIONAL\",\n 125510826: \"IFCLIGHTSOURCEAMBIENT\",\n 1402838566: \"IFCLIGHTSOURCE\",\n 3741457305: \"IFCIRREGULARTIMESERIES\",\n 3905492369: \"IFCIMAGETEXTURE\",\n 2445078500: \"IFCHYGROSCOPICMATERIALPROPERTIES\",\n 812098782: \"IFCHALFSPACESOLID\",\n 178086475: \"IFCGRIDPLACEMENT\",\n 3590301190: \"IFCGEOMETRICSET\",\n 4142052618: \"IFCGEOMETRICREPRESENTATIONSUBCONTEXT\",\n 2453401579: \"IFCGEOMETRICREPRESENTATIONITEM\",\n 3448662350: \"IFCGEOMETRICREPRESENTATIONCONTEXT\",\n 1446786286: \"IFCGENERALPROFILEPROPERTIES\",\n 803998398: \"IFCGENERALMATERIALPROPERTIES\",\n 3857492461: \"IFCFUELPROPERTIES\",\n 738692330: \"IFCFILLAREASTYLE\",\n 4219587988: \"IFCFAILURECONNECTIONCONDITION\",\n 3008276851: \"IFCFACESURFACE\",\n 803316827: \"IFCFACEOUTERBOUND\",\n 1809719519: \"IFCFACEBOUND\",\n 2556980723: \"IFCFACE\",\n 1860660968: \"IFCEXTENDEDMATERIALPROPERTIES\",\n 476780140: \"IFCEDGECURVE\",\n 3900360178: \"IFCEDGE\",\n 4170525392: \"IFCDRAUGHTINGPREDEFINEDTEXTFONT\",\n 3732053477: \"IFCDOCUMENTREFERENCE\",\n 1694125774: \"IFCDIMENSIONPAIR\",\n 2273265877: \"IFCDIMENSIONCALLOUTRELATIONSHIP\",\n 3632507154: \"IFCDERIVEDPROFILEDEF\",\n 3800577675: \"IFCCURVESTYLE\",\n 2889183280: \"IFCCONVERSIONBASEDUNIT\",\n 3050246964: \"IFCCONTEXTDEPENDENTUNIT\",\n 45288368: \"IFCCONNECTIONPOINTECCENTRICITY\",\n 1981873012: \"IFCCONNECTIONCURVEGEOMETRY\",\n 370225590: \"IFCCONNECTEDFACESET\",\n 1485152156: \"IFCCOMPOSITEPROFILEDEF\",\n 2542286263: \"IFCCOMPLEXPROPERTY\",\n 776857604: \"IFCCOLOURRGB\",\n 647927063: \"IFCCLASSIFICATIONREFERENCE\",\n 3150382593: \"IFCCENTERLINEPROFILEDEF\",\n 616511568: \"IFCBLOBTEXTURE\",\n 2705031697: \"IFCARBITRARYPROFILEDEFWITHVOIDS\",\n 1310608509: \"IFCARBITRARYOPENPROFILEDEF\",\n 3798115385: \"IFCARBITRARYCLOSEDPROFILEDEF\",\n 2297822566: \"IFCANNOTATIONTEXTOCCURRENCE\",\n 3612888222: \"IFCANNOTATIONSYMBOLOCCURRENCE\",\n 962685235: \"IFCANNOTATIONSURFACEOCCURRENCE\",\n 2442683028: \"IFCANNOTATIONOCCURRENCE\",\n 1065908215: \"IFCWATERPROPERTIES\",\n 891718957: \"IFCVIRTUALGRIDINTERSECTION\",\n 1907098498: \"IFCVERTEXPOINT\",\n 3304826586: \"IFCVERTEXBASEDTEXTUREMAP\",\n 2799835756: \"IFCVERTEX\",\n 180925521: \"IFCUNITASSIGNMENT\",\n 1735638870: \"IFCTOPOLOGYREPRESENTATION\",\n 1377556343: \"IFCTOPOLOGICALREPRESENTATIONITEM\",\n 581633288: \"IFCTIMESERIESVALUE\",\n 1718945513: \"IFCTIMESERIESREFERENCERELATIONSHIP\",\n 3101149627: \"IFCTIMESERIES\",\n 3317419933: \"IFCTHERMALMATERIALPROPERTIES\",\n 1210645708: \"IFCTEXTUREVERTEX\",\n 2552916305: \"IFCTEXTUREMAP\",\n 1742049831: \"IFCTEXTURECOORDINATEGENERATOR\",\n 280115917: \"IFCTEXTURECOORDINATE\",\n 1484833681: \"IFCTEXTSTYLEWITHBOXCHARACTERISTICS\",\n 1640371178: \"IFCTEXTSTYLETEXTMODEL\",\n 2636378356: \"IFCTEXTSTYLEFORDEFINEDFONT\",\n 1983826977: \"IFCTEXTSTYLEFONTMODEL\",\n 1447204868: \"IFCTEXTSTYLE\",\n 912023232: \"IFCTELECOMADDRESS\",\n 531007025: \"IFCTABLEROW\",\n 985171141: \"IFCTABLE\",\n 1290481447: \"IFCSYMBOLSTYLE\",\n 626085974: \"IFCSURFACETEXTURE\",\n 1351298697: \"IFCSURFACESTYLEWITHTEXTURES\",\n 846575682: \"IFCSURFACESTYLESHADING\",\n 1607154358: \"IFCSURFACESTYLEREFRACTION\",\n 3303107099: \"IFCSURFACESTYLELIGHTING\",\n 1300840506: \"IFCSURFACESTYLE\",\n 3049322572: \"IFCSTYLEDREPRESENTATION\",\n 3958052878: \"IFCSTYLEDITEM\",\n 2830218821: \"IFCSTYLEMODEL\",\n 3408363356: \"IFCSTRUCTURALLOADTEMPERATURE\",\n 2525727697: \"IFCSTRUCTURALLOADSTATIC\",\n 2162789131: \"IFCSTRUCTURALLOAD\",\n 2273995522: \"IFCSTRUCTURALCONNECTIONCONDITION\",\n 3692461612: \"IFCSIMPLEPROPERTY\",\n 4240577450: \"IFCSHAPEREPRESENTATION\",\n 3982875396: \"IFCSHAPEMODEL\",\n 867548509: \"IFCSHAPEASPECT\",\n 4165799628: \"IFCSECTIONREINFORCEMENTPROPERTIES\",\n 2042790032: \"IFCSECTIONPROPERTIES\",\n 448429030: \"IFCSIUNIT\",\n 2341007311: \"IFCROOT\",\n 3679540991: \"IFCRIBPLATEPROFILEPROPERTIES\",\n 1660063152: \"IFCREPRESENTATIONMAP\",\n 3008791417: \"IFCREPRESENTATIONITEM\",\n 3377609919: \"IFCREPRESENTATIONCONTEXT\",\n 1076942058: \"IFCREPRESENTATION\",\n 1222501353: \"IFCRELAXATION\",\n 1580146022: \"IFCREINFORCEMENTBARPROPERTIES\",\n 2692823254: \"IFCREFERENCESVALUEDOCUMENT\",\n 825690147: \"IFCQUANTITYWEIGHT\",\n 2405470396: \"IFCQUANTITYVOLUME\",\n 3252649465: \"IFCQUANTITYTIME\",\n 931644368: \"IFCQUANTITYLENGTH\",\n 2093928680: \"IFCQUANTITYCOUNT\",\n 2044713172: \"IFCQUANTITYAREA\",\n 3710013099: \"IFCPROPERTYENUMERATION\",\n 148025276: \"IFCPROPERTYDEPENDENCYRELATIONSHIP\",\n 3896028662: \"IFCPROPERTYCONSTRAINTRELATIONSHIP\",\n 2598011224: \"IFCPROPERTY\",\n 2802850158: \"IFCPROFILEPROPERTIES\",\n 3958567839: \"IFCPROFILEDEF\",\n 2267347899: \"IFCPRODUCTSOFCOMBUSTIONPROPERTIES\",\n 2095639259: \"IFCPRODUCTREPRESENTATION\",\n 2417041796: \"IFCPRESENTATIONSTYLEASSIGNMENT\",\n 3119450353: \"IFCPRESENTATIONSTYLE\",\n 1304840413: \"IFCPRESENTATIONLAYERWITHSTYLE\",\n 2022622350: \"IFCPRESENTATIONLAYERASSIGNMENT\",\n 1775413392: \"IFCPREDEFINEDTEXTFONT\",\n 3213052703: \"IFCPREDEFINEDTERMINATORSYMBOL\",\n 990879717: \"IFCPREDEFINEDSYMBOL\",\n 3727388367: \"IFCPREDEFINEDITEM\",\n 3355820592: \"IFCPOSTALADDRESS\",\n 2226359599: \"IFCPHYSICALSIMPLEQUANTITY\",\n 2483315170: \"IFCPHYSICALQUANTITY\",\n 101040310: \"IFCPERSONANDORGANIZATION\",\n 2077209135: \"IFCPERSON\",\n 1207048766: \"IFCOWNERHISTORY\",\n 1411181986: \"IFCORGANIZATIONRELATIONSHIP\",\n 4251960020: \"IFCORGANIZATION\",\n 1227763645: \"IFCOPTICALMATERIALPROPERTIES\",\n 2251480897: \"IFCOBJECTIVE\",\n 3701648758: \"IFCOBJECTPLACEMENT\",\n 1918398963: \"IFCNAMEDUNIT\",\n 2706619895: \"IFCMONETARYUNIT\",\n 3368373690: \"IFCMETRIC\",\n 677618848: \"IFCMECHANICALSTEELMATERIALPROPERTIES\",\n 4256014907: \"IFCMECHANICALMATERIALPROPERTIES\",\n 2597039031: \"IFCMEASUREWITHUNIT\",\n 3265635763: \"IFCMATERIALPROPERTIES\",\n 2199411900: \"IFCMATERIALLIST\",\n 1303795690: \"IFCMATERIALLAYERSETUSAGE\",\n 3303938423: \"IFCMATERIALLAYERSET\",\n 248100487: \"IFCMATERIALLAYER\",\n 1847130766: \"IFCMATERIALCLASSIFICATIONRELATIONSHIP\",\n 1838606355: \"IFCMATERIAL\",\n 30780891: \"IFCLOCALTIME\",\n 1566485204: \"IFCLIGHTINTENSITYDISTRIBUTION\",\n 4162380809: \"IFCLIGHTDISTRIBUTIONDATA\",\n 3452421091: \"IFCLIBRARYREFERENCE\",\n 2655187982: \"IFCLIBRARYINFORMATION\",\n 3020489413: \"IFCIRREGULARTIMESERIESVALUE\",\n 852622518: \"IFCGRIDAXIS\",\n 3548104201: \"IFCEXTERNALLYDEFINEDTEXTFONT\",\n 3207319532: \"IFCEXTERNALLYDEFINEDSYMBOL\",\n 1040185647: \"IFCEXTERNALLYDEFINEDSURFACESTYLE\",\n 2242383968: \"IFCEXTERNALLYDEFINEDHATCHSTYLE\",\n 3200245327: \"IFCEXTERNALREFERENCE\",\n 1648886627: \"IFCENVIRONMENTALIMPACTVALUE\",\n 3796139169: \"IFCDRAUGHTINGCALLOUTRELATIONSHIP\",\n 770865208: \"IFCDOCUMENTINFORMATIONRELATIONSHIP\",\n 1154170062: \"IFCDOCUMENTINFORMATION\",\n 1376555844: \"IFCDOCUMENTELECTRONICFORMAT\",\n 2949456006: \"IFCDIMENSIONALEXPONENTS\",\n 1045800335: \"IFCDERIVEDUNITELEMENT\",\n 1765591967: \"IFCDERIVEDUNIT\",\n 1072939445: \"IFCDATEANDTIME\",\n 3510044353: \"IFCCURVESTYLEFONTPATTERN\",\n 2367409068: \"IFCCURVESTYLEFONTANDSCALING\",\n 1105321065: \"IFCCURVESTYLEFONT\",\n 539742890: \"IFCCURRENCYRELATIONSHIP\",\n 602808272: \"IFCCOSTVALUE\",\n 1065062679: \"IFCCOORDINATEDUNIVERSALTIMEOFFSET\",\n 347226245: \"IFCCONSTRAINTRELATIONSHIP\",\n 613356794: \"IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP\",\n 1658513725: \"IFCCONSTRAINTAGGREGATIONRELATIONSHIP\",\n 1959218052: \"IFCCONSTRAINT\",\n 2732653382: \"IFCCONNECTIONSURFACEGEOMETRY\",\n 4257277454: \"IFCCONNECTIONPORTGEOMETRY\",\n 2614616156: \"IFCCONNECTIONPOINTGEOMETRY\",\n 2859738748: \"IFCCONNECTIONGEOMETRY\",\n 3264961684: \"IFCCOLOURSPECIFICATION\",\n 3639012971: \"IFCCLASSIFICATIONNOTATIONFACET\",\n 938368621: \"IFCCLASSIFICATIONNOTATION\",\n 1098599126: \"IFCCLASSIFICATIONITEMRELATIONSHIP\",\n 1767535486: \"IFCCLASSIFICATIONITEM\",\n 747523909: \"IFCCLASSIFICATION\",\n 622194075: \"IFCCALENDARDATE\",\n 2069777674: \"IFCBOUNDARYNODECONDITIONWARPING\",\n 1387855156: \"IFCBOUNDARYNODECONDITION\",\n 3367102660: \"IFCBOUNDARYFACECONDITION\",\n 1560379544: \"IFCBOUNDARYEDGECONDITION\",\n 4037036970: \"IFCBOUNDARYCONDITION\",\n 3869604511: \"IFCAPPROVALRELATIONSHIP\",\n 390851274: \"IFCAPPROVALPROPERTYRELATIONSHIP\",\n 2080292479: \"IFCAPPROVALACTORRELATIONSHIP\",\n 130549933: \"IFCAPPROVAL\",\n 1110488051: \"IFCAPPLIEDVALUERELATIONSHIP\",\n 411424972: \"IFCAPPLIEDVALUE\",\n 639542469: \"IFCAPPLICATION\",\n 618182010: \"IFCADDRESS\",\n 3630933823: \"IFCACTORROLE\",\n 599546466: \"FILE_DESCRIPTION\",\n 1390159747: \"FILE_NAME\",\n 1109904537: \"FILE_SCHEMA\"\n};\nclass yn {\n static async getUnits(t) {\n var e, n, s;\n const { IFCUNITASSIGNMENT: i } = de, r = await t.getAllPropertiesOfType(i);\n if (!r)\n return 1;\n const o = Object.keys(r), l = r[parseInt(o[0], 10)];\n for (const u of l.Units) {\n if (u.value === void 0 || u.value === null)\n continue;\n const d = await t.getProperties(u.value);\n if (!d || !d.UnitType || !d.UnitType.value || d.UnitType.value !== \"LENGTHUNIT\")\n continue;\n let m = 1, f = 1;\n return d.Name.value === \"METRE\" && (f = 1), d.Name.value === \"FOOT\" && (f = 0.3048), ((e = d.Prefix) == null ? void 0 : e.value) === \"MILLI\" ? m = 1e-3 : ((n = d.Prefix) == null ? void 0 : n.value) === \"CENTI\" ? m = 0.01 : ((s = d.Prefix) == null ? void 0 : s.value) === \"DECI\" && (m = 0.1), f * m;\n }\n return 1;\n }\n static async findItemByGuid(t, e) {\n var n;\n const s = t.getAllPropertiesIDs();\n for (const i of s) {\n const r = await t.getProperties(i);\n if (r && ((n = r.GlobalId) == null ? void 0 : n.value) === e)\n return r;\n }\n return null;\n }\n static async getRelationMap(t, e, n) {\n var s;\n const i = n ?? (async () => {\n }), r = {}, o = t.getAllPropertiesIDs();\n for (const l of o) {\n const u = await t.getProperties(l);\n if (!u)\n continue;\n const d = u.type === e, m = Object.keys(u).find(\n (x) => x.startsWith(\"Relating\")\n ), f = Object.keys(u).find(\n (x) => x.startsWith(\"Related\")\n );\n if (!(d && m && f))\n continue;\n const g = await t.getProperties((s = u[m]) == null ? void 0 : s.value), v = u[f];\n if (!g || !v || !(v && Array.isArray(v)))\n continue;\n const y = v.map((x) => x.value);\n await i(g.expressID, y), r[g.expressID] = y;\n }\n return r;\n }\n static async getQsetQuantities(t, e, n) {\n const s = n ?? (() => {\n }), i = await t.getProperties(e);\n return !i || i.type !== de.IFCELEMENTQUANTITY ? null : (i.Quantities ?? [{}]).map((r) => (r.value && s(r.value), r.value)).filter((r) => r !== null);\n }\n static async getPsetProps(t, e, n) {\n const s = n ?? (() => {\n }), i = await t.getProperties(e);\n return !i || i.type !== de.IFCPROPERTYSET ? null : (i.HasProperties ?? [{}]).map((r) => (r.value && s(r.value), r.value)).filter((r) => r !== null);\n }\n static async getPsetRel(t, e) {\n var n;\n if (!await t.getProperties(e))\n return null;\n const s = await t.getAllPropertiesOfType(\n de.IFCRELDEFINESBYPROPERTIES\n );\n if (!s)\n return null;\n const i = Object.values(s);\n let r = null;\n for (const o of i)\n ((n = o.RelatingPropertyDefinition) == null ? void 0 : n.value) === e && (r = o.expressID);\n return r;\n }\n static async getQsetRel(t, e) {\n return yn.getPsetRel(t, e);\n }\n static async getEntityName(t, e) {\n var n;\n const s = await t.getProperties(e);\n if (!s)\n return { key: null, name: null };\n const i = Object.keys(s).find((o) => o.endsWith(\"Name\")) ?? null, r = i ? (n = s[i]) == null ? void 0 : n.value : null;\n return { key: i, name: r };\n }\n static async getQuantityValue(t, e) {\n const n = await t.getProperties(e);\n if (!n)\n return { key: null, value: null };\n const s = Object.keys(n).find((r) => r.endsWith(\"Value\")) ?? null;\n let i;\n return s === null || n[s] === void 0 || n[s] === null ? i = null : i = n[s].value, { key: s, value: i };\n }\n static isRel(t) {\n return rh[t].startsWith(\"IFCREL\");\n }\n static async attributeExists(t, e, n) {\n const s = await t.getProperties(e);\n return s ? Object.keys(s).includes(n) : !1;\n }\n static async groupEntitiesByType(t, e) {\n var n;\n const s = /* @__PURE__ */ new Map();\n for (const i of e) {\n const r = await t.getProperties(i);\n if (!r)\n continue;\n const o = r.type;\n s.get(o) || s.set(o, /* @__PURE__ */ new Set()), (n = s.get(o)) == null || n.add(i);\n }\n return s;\n }\n // static getPropertyUnits(properties: IfcProperties, expressID: number) {\n // const entity = properties[expressID];\n // if (!entity) return null;\n // const propertyInstance =\n // entity instanceof WEBIFC.IFC2X3.IfcProperty ||\n // entity instanceof WEBIFC.IFC4.IfcProperty ||\n // entity instanceof WEBIFC.IFC4X3.IfcProperty;\n // if (!propertyInstance) return null;\n // const { key: valueKey } = IfcPropertiesUtils.getQuantityValue(\n // properties,\n // expressID\n // );\n // if (!valueKey) return null;\n // // @ts-ignore\n // const measureName = entity[valueKey].constructor.name as string;\n // const isMeasureAttribute = measureName.endsWith(\"Measure\");\n // if (!isMeasureAttribute) return null;\n // const measureType = measureName.slice(3, measureName.length - 7);\n // return propertyInstance;\n // }\n}\nclass Cf {\n constructor() {\n S(this, \"factor\", 1), S(this, \"complement\", 1);\n }\n apply(t) {\n const e = this.getScaleMatrix().multiply(t);\n t.copy(e);\n }\n setUp(t) {\n var e, n, s;\n this.factor = 1;\n const i = this.getLengthUnits(t);\n if (!i)\n return;\n const r = i == null, o = i.Name === void 0 || i.Name === null;\n r || o || (i.Name.value === \"FOOT\" && (this.factor = 0.3048), ((e = i.Prefix) == null ? void 0 : e.value) === \"MILLI\" ? this.complement = 1e-3 : ((n = i.Prefix) == null ? void 0 : n.value) === \"CENTI\" ? this.complement = 0.01 : ((s = i.Prefix) == null ? void 0 : s.value) === \"DECI\" && (this.complement = 0.01));\n }\n getLengthUnits(t) {\n try {\n const e = t.GetLineIDsWithType(\n 0,\n de.IFCUNITASSIGNMENT\n ).get(0), n = t.GetLine(0, e);\n for (const s of n.Units) {\n if (!s || s.value === null || s.value === void 0)\n continue;\n const i = t.GetLine(0, s.value);\n if (i.UnitType && i.UnitType.value === \"LENGTHUNIT\")\n return i;\n }\n return null;\n } catch {\n return console.log(\"Could not get units\"), null;\n }\n }\n getScaleMatrix() {\n const t = this.factor;\n return new w.Matrix4().fromArray([\n t,\n 0,\n 0,\n 0,\n 0,\n t,\n 0,\n 0,\n 0,\n 0,\n t,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n}\nclass oh {\n constructor() {\n S(this, \"itemsByFloor\", {}), S(this, \"_units\", new Cf());\n }\n // TODO: Maybe make this more flexible so that it also support more exotic spatial structures?\n setUp(t) {\n this._units.setUp(t), this.cleanUp();\n try {\n const e = t.GetLineIDsWithType(\n 0,\n de.IFCRELCONTAINEDINSPATIALSTRUCTURE\n ), n = /* @__PURE__ */ new Set(), s = t.GetLineIDsWithType(0, de.IFCSPACE);\n for (let u = 0; u < s.size(); u++)\n n.add(s.get(u));\n const i = t.GetLineIDsWithType(0, de.IFCRELAGGREGATES), r = i.size();\n for (let u = 0; u < r; u++) {\n const d = i.get(u), m = t.GetLine(0, d);\n if (!m || !m.RelatingObject || !m.RelatedObjects)\n continue;\n const f = m.RelatingObject.value, g = m.RelatedObjects;\n for (const v of g) {\n const y = v.value;\n n.has(y) && (this.itemsByFloor[y] = f);\n }\n }\n const o = {}, l = e.size();\n for (let u = 0; u < l; u++) {\n const d = e.get(u), m = t.GetLine(0, d);\n if (!m || !m.RelatingStructure || !m.RelatedElements)\n continue;\n const f = m.RelatingStructure.value, g = m.RelatedElements;\n if (n.has(f))\n for (const v of g) {\n o[f] || (o[f] = []);\n const y = v.value;\n o[f].push(y);\n }\n else\n for (const v of g) {\n const y = v.value;\n this.itemsByFloor[y] = f;\n }\n }\n for (const u in o) {\n const d = this.itemsByFloor[u];\n if (d !== void 0) {\n const m = o[u];\n for (const f of m)\n this.itemsByFloor[f] = d;\n }\n }\n for (let u = 0; u < r; u++) {\n const d = i.get(u), m = t.GetLine(0, d);\n if (!m || !m.RelatingObject || !m.RelatedObjects)\n continue;\n const f = m.RelatingObject.value, g = m.RelatedObjects;\n for (const v of g) {\n const y = v.value, x = this.itemsByFloor[f];\n x !== void 0 && (this.itemsByFloor[y] = x);\n }\n }\n } catch {\n console.log(\"Could not get floors.\");\n }\n }\n cleanUp() {\n this.itemsByFloor = {};\n }\n}\nclass _a {\n constructor() {\n S(this, \"includeProperties\", !0), S(this, \"optionalCategories\", [de.IFCSPACE]), S(this, \"coordinate\", !0), S(this, \"wasm\", {\n path: \"\",\n absolute: !1,\n logLevel: de.LogLevel.LOG_LEVEL_OFF\n }), S(this, \"excludedCategories\", /* @__PURE__ */ new Set()), S(this, \"saveLocations\", !1), S(this, \"webIfc\", {\n COORDINATE_TO_ORIGIN: !0\n // OPTIMIZE_PROFILES: true,\n }), S(this, \"autoSetWasm\", !0), S(this, \"customLocateFileHandler\", null);\n }\n}\nclass ah {\n constructor() {\n S(this, \"defLineMat\", new w.LineBasicMaterial({ color: 16777215 }));\n }\n read(t) {\n const e = t.GetAllAlignments(0), n = t.GetAllCrossSections2D(0), s = t.GetAllCrossSections3D(0), i = {\n IfcAlignment: e,\n IfcCrossSection2D: n,\n IfcCrossSection3D: s\n };\n return this.get(i);\n }\n get(t) {\n if (t.IfcAlignment) {\n const e = /* @__PURE__ */ new Map();\n for (const n of t.IfcAlignment) {\n const s = new xt.Alignment();\n s.absolute = this.getCurves(n.curve3D, s), s.horizontal = this.getCurves(n.horizontal, s), s.vertical = this.getCurves(n.vertical, s), e.set(e.size, s);\n }\n return { alignments: e, coordinationMatrix: new w.Matrix4() };\n }\n }\n getCurves(t, e) {\n const n = [];\n let s = 0;\n for (const i of t) {\n const r = {};\n if (i.data)\n for (const f of i.data) {\n const [g, v] = f.split(\": \"), y = parseFloat(v);\n r[g] = y || v;\n }\n const { points: o } = i, l = new Float32Array(o.length * 3);\n for (let f = 0; f < o.length; f++) {\n const { x: g, y: v, z: y } = o[f];\n l[f * 3] = g, l[f * 3 + 1] = v, l[f * 3 + 2] = y || 0;\n }\n const u = new w.BufferAttribute(l, 3), d = new w.EdgesGeometry();\n d.setAttribute(\"position\", u);\n const m = new xt.CurveMesh(\n s,\n r,\n e,\n d,\n this.defLineMat\n );\n n.push(m.curve), s++;\n }\n return n;\n }\n}\nclass lh {\n getNameInfo(t) {\n var e;\n const n = {}, { arguments: s } = t.GetHeaderLine(0, de.FILE_NAME) || {};\n if (!s)\n return n;\n const [\n i,\n r,\n o,\n l,\n u,\n d,\n m\n ] = s;\n if (i != null && i.value && (n.name = i.value), r != null && r.value && (n.creationDate = new Date(r.value)), o) {\n n.author = {};\n const [f, g] = o;\n f != null && f.value && (n.author.name = f.value), g != null && g.value && (n.author.email = g.value);\n }\n return (e = l[0]) != null && e.value && (n.organization = l[0].value), u != null && u.value && (n.preprocessorVersion = u == null ? void 0 : u.value), d != null && d.value && (n.originatingSystem = d == null ? void 0 : d.value), m != null && m.value && (n.authorization = m == null ? void 0 : m.value), n;\n }\n getDescriptionInfo(t) {\n var e;\n const n = {}, { arguments: s } = t.GetHeaderLine(0, de.FILE_DESCRIPTION) || {};\n if (!s)\n return n;\n const [i, r] = s;\n if ((e = i[0]) != null && e.value) {\n const o = i[0].value.match(/\\[([^\\]]+)\\]/);\n o && o[1] && (n.viewDefinition = o[1]);\n }\n return r != null && r.value && (n.implementationLevel = r.value), n;\n }\n}\nconst ch = class Ca extends Re {\n constructor(t) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"onIfcStartedLoading\", new $()), S(this, \"onSetup\", new $()), S(this, \"settings\", new _a()), S(this, \"webIfc\", new de.IfcAPI()), S(this, \"enabled\", !0), S(this, \"_material\", new w.MeshLambertMaterial()), S(this, \"_spatialTree\", new oh()), S(this, \"_metaData\", new lh()), S(this, \"_fragmentInstances\", /* @__PURE__ */ new Map()), S(this, \"_civil\", new ah()), S(this, \"_visitedFragments\", /* @__PURE__ */ new Map()), S(this, \"_materialT\", new w.MeshLambertMaterial({\n transparent: !0,\n opacity: 0.5\n })), this.components.add(Ca.uuid, this), this.settings.excludedCategories.add(de.IFCOPENINGELEMENT);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.webIfc = null, this.onDisposed.trigger(Ca.uuid), this.onDisposed.reset();\n }\n /**\n * Sets up the IfcLoader component with the provided configuration.\n *\n * @param config - Optional configuration settings for the IfcLoader.\n * If not provided, the existing settings will be used.\n *\n * @returns A Promise that resolves when the setup process is completed.\n *\n * @remarks\n * If the `autoSetWasm` option is enabled in the configuration,\n * the method will automatically set the WASM paths for the Web-IFC library.\n *\n * @example\n * ```typescript\n * const ifcLoader = new IfcLoader(components);\n * await ifcLoader.setup({ autoSetWasm: true });\n * ```\n */\n async setup(t) {\n this.settings = { ...this.settings, ...t }, this.settings.autoSetWasm && await this.autoSetWasm(), this.onSetup.trigger();\n }\n /**\n * Loads an IFC file and processes it for 3D visualization.\n *\n * @param data - The Uint8Array containing the IFC file data.\n * @param coordinate - Optional boolean indicating whether to coordinate the loaded IFC data. Default is true.\n *\n * @returns A Promise that resolves to the FragmentsGroup containing the loaded and processed IFC data.\n *\n * @example\n * ```typescript\n * const ifcLoader = components.get(IfcLoader);\n * const group = await ifcLoader.load(ifcData);\n * ```\n */\n async load(t, e = !0) {\n const n = performance.now();\n this.onIfcStartedLoading.trigger(), await this.readIfcFile(t);\n const s = await this.getAllGeometries(), i = await this.components.get(wf).export(this.webIfc, 0);\n s.setLocalProperties(i), this.cleanUp();\n const r = this.components.get(ke);\n r.groups.set(s.uuid, s);\n for (const o of s.items)\n r.list.set(o.id, o), o.mesh.uuid = o.id, o.group = s;\n r.onFragmentsLoaded.trigger(s), e && r.coordinate([s]);\n for (const [o] of s.data) {\n const l = i[o];\n if (!l || !l.GlobalId)\n continue;\n const u = l.GlobalId.value || l.GlobalId;\n s.globalToExpressIDs.set(u, o);\n }\n return console.log(`Streaming the IFC took ${performance.now() - n} ms!`), s;\n }\n /**\n * Reads an IFC file and initializes the Web-IFC library.\n *\n * @param data - The Uint8Array containing the IFC file data.\n *\n * @returns A Promise that resolves when the IFC file is opened and initialized.\n *\n * @remarks\n * This method sets the WASM path and initializes the Web-IFC library based on the provided settings.\n * It also opens the IFC model using the provided data and settings.\n *\n * @example\n * ```typescript\n * const ifcLoader = components.get(IfcLoader);\n * await ifcLoader.readIfcFile(ifcData);\n * ```\n */\n async readIfcFile(t) {\n const { path: e, absolute: n, logLevel: s } = this.settings.wasm;\n return this.webIfc.SetWasmPath(e, n), await this.webIfc.Init(), s && this.webIfc.SetLogLevel(s), this.webIfc.OpenModel(t, this.settings.webIfc);\n }\n /**\n * Cleans up the IfcLoader component by resetting the Web-IFC library,\n * clearing the visited fragments and fragment instances maps, and creating a new instance of the Web-IFC library.\n *\n * @remarks\n * This method is called automatically after using the .load() method, so usually you don't need to use it manually.\n *\n * @example\n * ```typescript\n * const ifcLoader = components.get(IfcLoader);\n * ifcLoader.cleanUp();\n * ```\n */\n cleanUp() {\n this.webIfc = null, this.webIfc = new de.IfcAPI(), this._visitedFragments.clear(), this._fragmentInstances.clear();\n }\n async getAllGeometries() {\n this._spatialTree.setUp(this.webIfc);\n const t = this.webIfc.GetIfcEntityList(0), e = new xt.FragmentsGroup();\n e.ifcMetadata = {\n name: \"\",\n description: \"\",\n ...this._metaData.getNameInfo(this.webIfc),\n ...this._metaData.getDescriptionInfo(this.webIfc),\n schema: this.webIfc.GetModelSchema(0) || \"IFC2X3\",\n maxExpressID: this.webIfc.GetMaxExpressID(0)\n };\n const n = [];\n for (const i of t) {\n if (!this.webIfc.IsIfcElement(i) && i !== de.IFCSPACE || this.settings.excludedCategories.has(i))\n continue;\n const r = this.webIfc.GetLineIDsWithType(0, i), o = r.size();\n for (let l = 0; l < o; l++) {\n const u = r.get(l);\n n.push(u);\n const d = this._spatialTree.itemsByFloor[u] || 0;\n e.data.set(u, [[], [d, i]]);\n }\n }\n this._spatialTree.cleanUp(), this.webIfc.StreamMeshes(0, n, (i) => {\n this.getMesh(i, e);\n });\n for (const i of this._visitedFragments) {\n const { index: r, fragment: o } = i[1];\n e.keyFragments.set(r, o.id);\n }\n for (const i of e.items) {\n const r = this._fragmentInstances.get(i.id);\n if (!r)\n throw new Error(\"Fragment not found!\");\n const o = [];\n for (const [l, u] of r)\n o.push(u);\n i.add(o);\n }\n const s = this.webIfc.GetCoordinationMatrix(0);\n return e.coordinationMatrix.fromArray(s), e.civilData = this._civil.read(this.webIfc), e;\n }\n getMesh(t, e) {\n const n = t.geometries.size(), s = t.expressID;\n for (let i = 0; i < n; i++) {\n const r = t.geometries.get(i), { x: o, y: l, z: u, w: d } = r.color, m = d !== 1, { geometryExpressID: f } = r, g = `${f}-${m}`;\n if (!this._visitedFragments.has(g)) {\n const C = this.getGeometry(this.webIfc, f), O = m ? this._materialT : this._material, U = new xt.Fragment(C, O, 1);\n e.add(U.mesh), e.items.push(U);\n const Y = this._visitedFragments.size;\n this._visitedFragments.set(g, { index: Y, fragment: U });\n }\n const v = new w.Color().setRGB(o, l, u, \"srgb\"), y = new w.Matrix4();\n y.fromArray(r.flatTransformation);\n const x = this._visitedFragments.get(g);\n if (x === void 0)\n throw new Error(\"Error getting geometry data for streaming!\");\n const A = e.data.get(s);\n if (!A)\n throw new Error(\"Data not found!\");\n A[0].push(x.index);\n const { fragment: F } = x;\n this._fragmentInstances.has(F.id) || this._fragmentInstances.set(F.id, /* @__PURE__ */ new Map());\n const P = this._fragmentInstances.get(F.id);\n if (!P)\n throw new Error(\"Instances not found!\");\n if (P.has(s)) {\n const C = P.get(s);\n if (!C)\n throw new Error(\"Instance not found!\");\n C.transforms.push(y), C.colors && C.colors.push(v);\n } else\n P.set(s, { id: s, transforms: [y], colors: [v] });\n }\n }\n getGeometry(t, e) {\n const n = t.GetGeometry(0, e), s = t.GetIndexArray(\n n.GetIndexData(),\n n.GetIndexDataSize()\n ), i = t.GetVertexArray(\n n.GetVertexData(),\n n.GetVertexDataSize()\n ), r = new Float32Array(i.length / 2), o = new Float32Array(i.length / 2);\n for (let m = 0; m < i.length; m += 6)\n r[m / 2] = i[m], r[m / 2 + 1] = i[m + 1], r[m / 2 + 2] = i[m + 2], o[m / 2] = i[m + 3], o[m / 2 + 1] = i[m + 4], o[m / 2 + 2] = i[m + 5];\n const l = new w.BufferGeometry(), u = new w.BufferAttribute(r, 3), d = new w.BufferAttribute(o, 3);\n return l.setAttribute(\"position\", u), l.setAttribute(\"normal\", d), l.setIndex(Array.from(s)), n.delete(), l;\n }\n async autoSetWasm() {\n const t = await fetch(\n `https://unpkg.com/@thatopen/components@${Kd.release}/package.json`\n );\n if (!t.ok) {\n console.warn(\n \"Couldn't get openbim-components package.json. Set wasm settings manually.\"\n );\n return;\n }\n const e = await t.json();\n if (!(\"web-ifc\" in e.peerDependencies))\n console.warn(\n \"Couldn't get web-ifc from peer dependencies in openbim-components. Set wasm settings manually.\"\n );\n else {\n const n = e.peerDependencies[\"web-ifc\"];\n this.settings.wasm.path = `https://unpkg.com/web-ifc@${n}/`, this.settings.wasm.absolute = !0;\n }\n }\n};\nS(ch, \"uuid\", \"a659add7-1418-4771-a0d6-7d4d438e4624\");\nlet Tf = ch;\nconst bf = class hs extends Re {\n constructor(t) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"onRequestFile\", new $()), S(this, \"ifcToExport\", null), S(this, \"onElementToPset\", new $()), S(this, \"onPropToPset\", new $()), S(this, \"onPsetRemoved\", new $()), S(this, \"onDataChanged\", new $()), S(this, \"wasm\", {\n path: \"/\",\n absolute: !1\n }), S(this, \"enabled\", !0), S(this, \"attributeListeners\", {}), S(this, \"selectedModel\"), S(this, \"changeMap\", {}), this.components.add(hs.uuid, this);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.selectedModel = void 0, this.attributeListeners = {}, this.changeMap = {}, this.onElementToPset.reset(), this.onPropToPset.reset(), this.onPsetRemoved.reset(), this.onDataChanged.reset(), this.onDisposed.trigger(hs.uuid), this.onDisposed.reset();\n }\n /**\n * Static method to retrieve the IFC schema from a given model.\n *\n * @param model - The FragmentsGroup model from which to retrieve the IFC schema.\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @returns The IFC schema associated with the given model.\n */\n static getIFCSchema(t) {\n const e = t.ifcMetadata.schema;\n if (!e)\n throw new Error(\"IFC Schema not found\");\n return e;\n }\n /**\n * Method to set properties data in the model.\n *\n * @param model - The FragmentsGroup model in which to set the properties.\n * @param dataToSave - An array of objects representing the properties to be saved.\n * Each object must have an `expressID` property, which is the express ID of the entity in the model.\n * The rest of the properties will be set as the properties of the entity.\n *\n * @returns {Promise} A promise that resolves when all the properties have been set.\n *\n * @throws Will throw an error if any of the `expressID` properties are missing in the `dataToSave` array.\n */\n async setData(t, ...e) {\n for (const n of e) {\n const s = n.expressID;\n s && (await t.setProperties(s, n), this.registerChange(t, s));\n }\n }\n /**\n * Creates a new Property Set (Pset) in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the Pset.\n * @param name - The name of the Pset.\n * @param description - (Optional) The description of the Pset.\n *\n * @returns A promise that resolves with an object containing the newly created Pset and its relation.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n async newPset(t, e, n) {\n const s = hs.getIFCSchema(t), { ownerHistoryHandle: i } = await this.getOwnerHistory(t), r = this.newGUID(t), o = new de[s].IfcLabel(e), l = n ? new de[s].IfcText(n) : null, u = new de[s].IfcPropertySet(\n r,\n i,\n o,\n l,\n []\n );\n u.expressID = this.increaseMaxID(t);\n const d = this.newGUID(t), m = new de[s].IfcRelDefinesByProperties(\n d,\n i,\n null,\n null,\n [],\n new de.Handle(u.expressID)\n );\n return m.expressID = this.increaseMaxID(t), await this.setData(t, u, m), { pset: u, rel: m };\n }\n /**\n * Removes a Property Set (Pset) from the given model.\n *\n * @param model - The FragmentsGroup model from which to remove the Pset.\n * @param psetID - The express IDs of the Psets to be removed.\n *\n * @returns {Promise} A promise that resolves when all the Psets have been removed.\n *\n * @throws Will throw an error if any of the `expressID` properties are missing in the `psetID` array.\n * @throws Will throw an error if the Pset to be removed is not of type `IFCPROPERTYSET`.\n * @throws Will throw an error if no relation is found between the Pset and the model.\n */\n async removePset(t, ...e) {\n for (const n of e) {\n const s = await t.getProperties(n);\n if ((s == null ? void 0 : s.type) !== de.IFCPROPERTYSET)\n continue;\n const i = await yn.getPsetRel(t, n);\n if (i && (await t.setProperties(i, null), this.registerChange(t, i)), s) {\n for (const r of s.HasProperties)\n await t.setProperties(r.value, null);\n await t.setProperties(n, null), this.onPsetRemoved.trigger({ model: t, psetID: n }), this.registerChange(t, n);\n }\n }\n }\n /**\n * Creates a new single-value property of type string in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the property.\n * @param type - The type of the property value. Must be a string property type.\n * @param name - The name of the property.\n * @param value - The value of the property. Must be a string.\n *\n * @returns The newly created single-value property.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n newSingleStringProperty(t, e, n, s) {\n return this.newSingleProperty(t, e, n, s);\n }\n /**\n * Creates a new single-value property of type numeric in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the property.\n * @param type - The type of the property value. Must be a numeric property type.\n * @param name - The name of the property.\n * @param value - The value of the property. Must be a number.\n *\n * @returns The newly created single-value property.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n newSingleNumericProperty(t, e, n, s) {\n return this.newSingleProperty(t, e, n, s);\n }\n /**\n * Creates a new single-value property of type boolean in the given model.\n *\n * @param model - The FragmentsGroup model in which to create the property.\n * @param type - The type of the property value. Must be a boolean property type.\n * @param name - The name of the property.\n * @param value - The value of the property. Must be a boolean.\n *\n * @returns The newly created single-value property.\n *\n * @throws Will throw an error if the IFC schema is not found in the model.\n * @throws Will throw an error if no OwnerHistory is found in the model.\n */\n newSingleBooleanProperty(t, e, n, s) {\n return this.newSingleProperty(t, e, n, s);\n }\n /**\n * Removes a property from a Property Set (Pset) in the given model.\n *\n * @param model - The FragmentsGroup model from which to remove the property.\n * @param psetID - The express ID of the Pset from which to remove the property.\n * @param propID - The express ID of the property to be removed.\n *\n * @returns {Promise} A promise that resolves when the property has been removed.\n *\n * @throws Will throw an error if the Pset or the property to be removed are not found in the model.\n * @throws Will throw an error if the Pset to be removed is not of type `IFCPROPERTYSET`.\n */\n async removePsetProp(t, e, n) {\n const s = await t.getProperties(e), i = await t.getProperties(n);\n !s || !i || s.type === de.IFCPROPERTYSET && i && (s.HasProperties = s.HasProperties.filter((r) => r.value !== n), await t.setProperties(n, null), this.registerChange(t, e, n));\n }\n async addElementToPset(t, e, ...n) {\n const s = await yn.getPsetRel(t, e);\n if (!s)\n return;\n const i = await t.getProperties(s);\n if (i) {\n for (const r of n) {\n const o = new de.Handle(r);\n i.RelatedObjects.push(o), this.onElementToPset.trigger({\n model: t,\n psetID: e,\n elementID: r\n });\n }\n this.registerChange(t, e);\n }\n }\n /**\n * Adds elements to a Property Set (Pset) in the given model.\n *\n * @param model - The FragmentsGroup model in which to add the elements.\n * @param psetID - The express ID of the Pset to which to add the elements.\n * @param elementID - The express IDs of the elements to be added.\n *\n * @returns {Promise} A promise that resolves when all the elements have been added.\n *\n * @throws Will throw an error if the Pset or the elements to be added are not found in the model.\n * @throws Will throw an error if the Pset to be added to is not of type `IFCPROPERTYSET`.\n * @throws Will throw an error if no relation is found between the Pset and the model.\n */\n async addPropToPset(t, e, ...n) {\n const s = await t.getProperties(e);\n if (s) {\n for (const i of n) {\n if (s.HasProperties.includes(i))\n continue;\n const r = new de.Handle(i);\n s.HasProperties.push(r), this.onPropToPset.trigger({ model: t, psetID: e, propID: i });\n }\n this.registerChange(t, e);\n }\n }\n /**\n * Saves the changes made to the model to a new IFC file.\n *\n * @param model - The FragmentsGroup model from which to save the changes.\n * @param ifcToSaveOn - The Uint8Array representing the original IFC file.\n *\n * @returns A promise that resolves with the modified IFC data as a Uint8Array.\n *\n * @throws Will throw an error if any issues occur during the saving process.\n */\n async saveToIfc(t, e) {\n const n = this.components.get(Tf), s = n.webIfc, i = await n.readIfcFile(e), r = this.changeMap[t.uuid] ?? [];\n for (const l of r) {\n const u = await t.getProperties(l);\n if (u)\n try {\n s.WriteLine(i, u);\n } catch {\n }\n else\n try {\n s.DeleteLine(i, l);\n } catch {\n }\n }\n const o = s.SaveModel(i);\n return n.webIfc.CloseModel(i), n.cleanUp(), o;\n }\n /**\n * Sets an attribute listener for a specific attribute of an entity in the model.\n * The listener will trigger an event whenever the attribute's value changes.\n *\n * @param model - The FragmentsGroup model in which to set the attribute listener.\n * @param expressID - The express ID of the entity for which to set the listener.\n * @param attributeName - The name of the attribute for which to set the listener.\n *\n * @returns The event that will be triggered when the attribute's value changes.\n *\n * @throws Will throw an error if the entity with the given expressID doesn't exist.\n * @throws Will throw an error if the attribute is an array or null, and it can't have a listener.\n * @throws Will throw an error if the attribute has a badly defined handle.\n */\n async setAttributeListener(t, e, n) {\n this.attributeListeners[t.uuid] || (this.attributeListeners[t.uuid] = {});\n const s = this.attributeListeners[t.uuid][e] ? this.attributeListeners[t.uuid][e][n] : null;\n if (s)\n return s;\n const i = await t.getProperties(e);\n if (!i)\n throw new Error(`Entity with expressID ${e} doesn't exists.`);\n const r = i[n];\n if (Array.isArray(r) || !r)\n throw new Error(\n `Attribute ${n} is array or null, and it can't have a listener.`\n );\n const o = r.value;\n if (o === void 0 || o == null)\n throw new Error(`Attribute ${n} has a badly defined handle.`);\n const l = new $();\n return Object.defineProperty(i[n], \"value\", {\n get() {\n return this._value;\n },\n async set(u) {\n this._value = u, l.trigger(u);\n }\n }), i[n].value = o, this.attributeListeners[t.uuid][e] || (this.attributeListeners[t.uuid][e] = {}), this.attributeListeners[t.uuid][e][n] = l, l;\n }\n increaseMaxID(t) {\n return t.ifcMetadata.maxExpressID++, t.ifcMetadata.maxExpressID;\n }\n newGUID(t) {\n const e = hs.getIFCSchema(t);\n return new de[e].IfcGloballyUniqueId(Na.create());\n }\n async getOwnerHistory(t) {\n const e = await t.getAllPropertiesOfType(\n de.IFCOWNERHISTORY\n );\n if (!e)\n throw new Error(\"No OwnerHistory was found.\");\n const n = Object.keys(e).map((r) => parseInt(r, 10)), s = e[n[0]], i = new de.Handle(s.expressID);\n return { ownerHistory: s, ownerHistoryHandle: i };\n }\n registerChange(t, ...e) {\n this.changeMap[t.uuid] || (this.changeMap[t.uuid] = /* @__PURE__ */ new Set());\n for (const n of e)\n this.changeMap[t.uuid].add(n), this.onDataChanged.trigger({ model: t, expressID: n });\n }\n async newSingleProperty(t, e, n, s) {\n const i = hs.getIFCSchema(t), r = new de[i].IfcIdentifier(n), o = new de[i][e](s), l = new de[i].IfcPropertySingleValue(\n r,\n null,\n o,\n null\n );\n return l.expressID = this.increaseMaxID(t), await this.setData(t, l), l;\n }\n};\nS(bf, \"uuid\", \"58c2d9f0-183c-48d6-a402-dfcf5b9a34df\");\nconst hh = class uh extends Re {\n constructor(t) {\n super(t), S(this, \"enabled\", !0), S(this, \"list\", {}), S(this, \"onDisposed\", new $()), S(this, \"onFragmentsDisposed\", (e) => {\n const { groupID: n, fragmentIDs: s } = e;\n for (const i in this.list) {\n const r = this.list[i], o = Object.keys(r);\n if (o.includes(n))\n delete r[n], Object.values(r).length === 0 && delete this.list[i];\n else\n for (const l of o) {\n const u = r[l];\n for (const d of s)\n delete u[d];\n Object.values(u).length === 0 && delete r[l];\n }\n }\n }), t.add(uh.uuid, this), t.get(ke).onFragmentsDisposed.add(this.onFragmentsDisposed);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.list = {}, this.components.get(ke).onFragmentsDisposed.remove(this.onFragmentsDisposed), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Removes a fragment from the classification based on its unique identifier (guid).\n * This method iterates through all classification systems and classes, and deletes the fragment with the specified guid from the respective group.\n *\n * @param guid - The unique identifier of the fragment to be removed.\n */\n remove(t) {\n for (const e in this.list) {\n const n = this.list[e];\n for (const s in n) {\n const i = n[s];\n delete i[t];\n }\n }\n }\n /**\n * Finds and returns fragments based on the provided filter criteria.\n * If no filter is provided, it returns all fragments.\n *\n * @param filter - An optional object containing filter criteria.\n * The keys of the object represent the classification system names,\n * and the values are arrays of class names to match.\n *\n * @returns A map of fragment GUIDs to their respective express IDs,\n * where the express IDs are filtered based on the provided filter criteria.\n *\n * @throws Will throw an error if the fragments map is malformed.\n */\n find(t) {\n const e = this.components.get(ke);\n if (!t) {\n const r = {};\n for (const [o, l] of e.list)\n r[o] = new Set(l.ids);\n return r;\n }\n const n = Object.keys(t).length, s = {};\n for (const r in t) {\n const o = t[r];\n if (!this.list[r]) {\n console.warn(`Classification ${r} does not exist.`);\n continue;\n }\n for (const l of o) {\n const u = this.list[r][l];\n if (u)\n for (const d in u) {\n s[d] || (s[d] = /* @__PURE__ */ new Map());\n for (const m of u[d]) {\n const f = s[d].get(m);\n f === void 0 ? s[d].set(m, 1) : s[d].set(m, f + 1);\n }\n }\n }\n }\n const i = {};\n for (const r in s) {\n const o = s[r];\n for (const [l, u] of o) {\n if (u === void 0)\n throw new Error(\"Malformed fragments map!\");\n u === n && (i[r] || (i[r] = /* @__PURE__ */ new Set()), i[r].add(l));\n }\n }\n return i;\n }\n /**\n * Classifies fragments based on their modelID.\n *\n * @param modelID - The unique identifier of the model to classify fragments by.\n * @param group - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the fragments in the provided group,\n * and classifies them based on their modelID.\n * The classification is stored in the `list.models` property,\n * with the modelID as the key and a map of fragment IDs to their respective express IDs as the value.\n *\n */\n byModel(t, e) {\n this.list.models || (this.list.models = {});\n const n = this.list.models;\n n[t] || (n[t] = {});\n const s = n[t];\n for (const [i, r] of e.data) {\n const o = r[0];\n for (const l of o) {\n const u = e.keyFragments.get(l);\n u && (s[u] || (s[u] = /* @__PURE__ */ new Set()), s[u].add(i));\n }\n }\n }\n /**\n * Classifies fragments based on their PredefinedType property.\n *\n * @param group - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the properties of the fragments in the provided group,\n * and classifies them based on their PredefinedType property.\n * The classification is stored in the `list.predefinedTypes` property,\n * with the PredefinedType as the key and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found.\n */\n async byPredefinedType(t) {\n var e;\n this.list.predefinedTypes || (this.list.predefinedTypes = {});\n const n = this.list.predefinedTypes, s = t.getAllPropertiesIDs();\n for (const i of s) {\n const r = await t.getProperties(i);\n if (!r)\n continue;\n const o = String((e = r.PredefinedType) == null ? void 0 : e.value).toUpperCase();\n n[o] || (n[o] = {});\n const l = n[o];\n for (const [u, d] of t.data) {\n const m = d[0];\n for (const f of m) {\n const g = t.keyFragments.get(f);\n if (!g)\n throw new Error(\"Fragment ID not found!\");\n l[g] || (l[g] = /* @__PURE__ */ new Set()), l[g].add(r.expressID);\n }\n }\n }\n }\n /**\n * Classifies fragments based on their entity type.\n *\n * @param group - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the relations of the fragments in the provided group,\n * and classifies them based on their entity type.\n * The classification is stored in the `list.entities` property,\n * with the entity type as the key and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found.\n */\n byEntity(t) {\n this.list.entities || (this.list.entities = {});\n for (const [e, n] of t.data) {\n const s = n[1][1], i = rh[s];\n this.saveItem(t, \"entities\", i, e);\n }\n }\n /**\n * Classifies fragments based on a specific IFC relationship.\n *\n * @param group - The FragmentsGroup containing the fragments to be classified.\n * @param ifcRel - The IFC relationship number to classify fragments by.\n * @param systemName - The name of the classification system to store the classification.\n *\n * @remarks\n * This method iterates through the relations of the fragments in the provided group,\n * and classifies them based on the specified IFC relationship.\n * The classification is stored in the `list` property under the specified system name,\n * with the relationship name as the class name and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found or if the IFC relationship is not valid.\n */\n async byIfcRel(t, e, n) {\n yn.isRel(e) && await yn.getRelationMap(\n t,\n e,\n async (s, i) => {\n const { name: r } = await yn.getEntityName(\n t,\n s\n );\n for (const o of i)\n this.saveItem(\n t,\n n,\n r ?? \"NO REL NAME\",\n o\n );\n }\n );\n }\n /**\n * Classifies fragments based on their spatial structure in the IFC model.\n *\n * @param model - The FragmentsGroup containing the fragments to be classified.\n *\n * @remarks\n * This method iterates through the relations of the fragments in the provided group,\n * and classifies them based on their spatial structure in the IFC model.\n * The classification is stored in the `list` property under the system name \"spatialStructures\",\n * with the relationship name as the class name and a map of fragment IDs to their respective express IDs as the value.\n *\n * @throws Will throw an error if the fragment ID is not found or if the model relations do not exist.\n */\n async bySpatialStructure(t) {\n var e, n;\n const s = this.components.get(Xr), i = s.relationMaps[t.uuid];\n if (!i)\n throw new Error(\n `Classifier: model relations of ${t.name || t.uuid} have to exists to group by spatial structure.`\n );\n const r = \"spatialStructures\";\n for (const [o] of i) {\n const l = s.getEntityRelations(\n t,\n o,\n \"Decomposes\"\n );\n if (l)\n for (const f of l) {\n const g = await t.getProperties(f);\n if (!g)\n continue;\n const v = (e = g.Name) == null ? void 0 : e.value;\n this.saveItem(t, r, v, o);\n }\n const u = s.getEntityRelations(\n t,\n o,\n \"ContainsElements\"\n );\n if (!u)\n continue;\n const d = await t.getProperties(o);\n if (!d)\n continue;\n const m = (n = d.Name) == null ? void 0 : n.value;\n for (const f of u) {\n this.saveItem(t, r, m, f);\n const g = s.getEntityRelations(\n t,\n Number(f),\n \"IsDecomposedBy\"\n );\n if (g)\n for (const v of g)\n this.saveItem(t, r, m, v);\n }\n }\n }\n /**\n * Sets the color of the specified fragments.\n *\n * @param items - A map of fragment IDs to their respective express IDs.\n * @param color - The color to set for the fragments.\n * @param override - A boolean indicating whether to override the existing color of the fragments.\n *\n * @remarks\n * This method iterates through the provided fragment IDs, retrieves the corresponding fragments,\n * and sets their color using the `setColor` method of the FragmentsGroup class.\n *\n * @throws Will throw an error if the fragment with the specified ID is not found.\n */\n setColor(t, e, n = !1) {\n const s = this.components.get(ke);\n for (const i in t) {\n const r = s.list.get(i);\n if (!r)\n continue;\n const o = t[i];\n r.setColor(e, o, n);\n }\n }\n /**\n * Resets the color of the specified fragments to their original color.\n *\n * @param items - A map of fragment IDs to their respective express IDs.\n *\n * @remarks\n * This method iterates through the provided fragment IDs, retrieves the corresponding fragments,\n * and resets their color using the `resetColor` method of the FragmentsGroup class.\n *\n * @throws Will throw an error if the fragment with the specified ID is not found.\n */\n resetColor(t) {\n const e = this.components.get(ke);\n for (const n in t) {\n const s = e.list.get(n);\n if (!s)\n continue;\n const i = t[n];\n s.resetColor(i);\n }\n }\n saveItem(t, e, n, s) {\n this.list[e] || (this.list[e] = {});\n const i = t.data.get(s);\n if (i)\n for (const r of i[0]) {\n const o = t.keyFragments.get(r);\n if (o) {\n const l = this.list[e];\n l[n] || (l[n] = {}), l[n][o] || (l[n][o] = /* @__PURE__ */ new Set()), l[n][o].add(s);\n }\n }\n }\n};\nS(hh, \"uuid\", \"e25a7f3c-46c4-4a14-9d3d-5115f24ebeb7\");\nlet xf = hh;\nconst Sf = class dh extends Re {\n constructor(t) {\n super(t), S(this, \"onDisposed\", new $()), S(this, \"enabled\", !0), S(this, \"height\", 10), S(this, \"groupName\", \"spatialStructures\"), S(this, \"list\", /* @__PURE__ */ new Set()), t.add(dh.uuid, this);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.list.clear(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Sets the explosion state of the fragments.\n *\n * @param active - A boolean indicating whether to activate or deactivate the explosion.\n *\n * @remarks\n * This method applies a vertical transformation to the fragments based on the `active` parameter.\n * If `active` is true, the fragments are moved upwards by a distance determined by the `height` property.\n * If `active` is false, the fragments are moved back to their original position.\n *\n * The method also keeps track of the exploded items using the `list` set.\n *\n * @throws Will throw an error if the `Classifier` or `FragmentsManager` components are not found in the `components` system.\n */\n set(t) {\n if (!this.enabled)\n return;\n const e = this.components.get(xf), n = this.components.get(ke), s = t ? 1 : -1;\n let i = 0;\n const r = e.list[this.groupName], o = new w.Matrix4();\n for (const l in r) {\n o.elements[13] = i * s * this.height;\n for (const u in r[l]) {\n const d = n.list.get(u), m = l + u, f = this.list.has(m);\n if (!d || t && f || !t && !f)\n continue;\n t ? this.list.add(m) : this.list.delete(m);\n const g = r[l][u];\n d.applyTransform(g, o);\n }\n i++;\n }\n }\n};\nS(Sf, \"uuid\", \"d260618b-ce88-4c7d-826c-6debb91de3e2\");\nconst Af = class fh extends Re {\n constructor(t) {\n super(t), S(this, \"enabled\", !0), this.components.add(fh.uuid, this);\n }\n /**\n * Sets the visibility of fragments within the 3D scene.\n * If no `items` parameter is provided, all fragments will be set to the specified visibility.\n * If `items` is provided, only the specified fragments will be affected.\n *\n * @param visible - The visibility state to set for the fragments.\n * @param items - An optional map of fragment IDs and their corresponding sub-fragment IDs to be affected.\n * If not provided, all fragments will be affected.\n *\n * @returns {void}\n */\n set(t, e) {\n const n = this.components.get(ke);\n if (!e) {\n for (const [s, i] of n.list)\n i && (i.setVisibility(t), this.updateCulledVisibility(i));\n return;\n }\n for (const s in e) {\n const i = e[s], r = n.list.get(s);\n r && (r.setVisibility(t, i), this.updateCulledVisibility(r));\n }\n }\n /**\n * Isolates fragments within the 3D scene by hiding all other fragments and showing only the specified ones.\n * It calls the `set` method twice: first to hide all fragments, and then to show only the specified ones.\n *\n * @param items - A map of fragment IDs and their corresponding sub-fragment IDs to be isolated.\n * If not provided, all fragments will be isolated.\n *\n * @returns {void}\n */\n isolate(t) {\n this.set(!1), this.set(!0, t);\n }\n updateCulledVisibility(t) {\n const e = this.components.get(Ef);\n for (const [n, s] of e.list) {\n const i = s.colorMeshes.get(t.id);\n i && (i.count = t.mesh.count);\n }\n }\n};\nS(Af, \"uuid\", \"dd9ccf2d-8a21-4821-b7f6-2949add16a29\");\nclass Rf extends _a {\n constructor() {\n super(...arguments), S(this, \"minGeometrySize\", 10), S(this, \"minAssetsSize\", 1e3);\n }\n}\nconst Ff = class ph extends Re {\n constructor(t) {\n super(t), S(this, \"onGeometryStreamed\", new $()), S(this, \"onAssetStreamed\", new $()), S(this, \"onProgress\", new $()), S(this, \"onIfcLoaded\", new $()), S(this, \"onDisposed\", new $()), S(this, \"settings\", new Rf()), S(this, \"enabled\", !0), S(this, \"webIfc\", new de.IfcAPI()), S(this, \"_spatialTree\", new oh()), S(this, \"_metaData\", new lh()), S(this, \"_visitedGeometries\", /* @__PURE__ */ new Map()), S(this, \"_streamSerializer\", new xt.StreamSerializer()), S(this, \"_geometries\", /* @__PURE__ */ new Map()), S(this, \"_geometryCount\", 0), S(this, \"_civil\", new ah()), S(this, \"_groupSerializer\", new xt.Serializer()), S(this, \"_assets\", []), S(this, \"_meshesWithHoles\", /* @__PURE__ */ new Set()), this.components.add(ph.uuid, this), this.settings.excludedCategories.add(de.IFCOPENINGELEMENT);\n }\n /** {@link Disposable.dispose} */\n dispose() {\n this.onIfcLoaded.reset(), this.onGeometryStreamed.reset(), this.onAssetStreamed.reset(), this.webIfc = null, this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * This method streams the IFC file from a given buffer.\n *\n * @param data - The Uint8Array containing the IFC file data.\n * @returns A Promise that resolves when the streaming process is complete.\n *\n * @remarks\n * This method cleans up any resources after the streaming process is complete.\n *\n * @example\n * ```typescript\n * const ifcData = await fetch('path/to/ifc/file.ifc');\n * const rawBuffer = await response.arrayBuffer();\n * const ifcBuffer = new Uint8Array(rawBuffer);\n * await ifcGeometryTiler.streamFromBuffer(ifcBuffer);\n * ```\n */\n async streamFromBuffer(t) {\n await this.readIfcFile(t), await this.streamAllGeometries(), this.cleanUp();\n }\n /**\n * This method streams the IFC file from a given callback.\n *\n * @param loadCallback - The callback function that will be used to load the IFC file.\n * @returns A Promise that resolves when the streaming process is complete.\n *\n * @remarks\n * This method cleans up any resources after the streaming process is complete.\n *\n */\n async streamFromCallBack(t) {\n await this.streamIfcFile(t), await this.streamAllGeometries(), this.cleanUp();\n }\n async readIfcFile(t) {\n const { path: e, absolute: n, logLevel: s } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, n), await this.webIfc.Init(), s && this.webIfc.SetLogLevel(s), this.webIfc.OpenModel(t, this.settings.webIfc);\n }\n async streamIfcFile(t) {\n const { path: e, absolute: n, logLevel: s } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, n), await this.webIfc.Init(), s && this.webIfc.SetLogLevel(s), this.webIfc.OpenModelFromCallback(t, this.settings.webIfc);\n }\n async streamAllGeometries() {\n const { minGeometrySize: t, minAssetsSize: e } = this.settings;\n this._spatialTree.setUp(this.webIfc);\n const n = this.webIfc.GetIfcEntityList(0), s = [[]], i = new xt.FragmentsGroup();\n i.ifcMetadata = {\n name: \"\",\n description: \"\",\n ...this._metaData.getNameInfo(this.webIfc),\n ...this._metaData.getDescriptionInfo(this.webIfc),\n schema: this.webIfc.GetModelSchema(0) || \"IFC2X3\",\n maxExpressID: this.webIfc.GetMaxExpressID(0)\n };\n let r = 0, o = 0;\n for (const y of n) {\n if (!this.webIfc.IsIfcElement(y) && y !== de.IFCSPACE || this.settings.excludedCategories.has(y))\n continue;\n const x = this.webIfc.GetLineIDsWithType(0, y), A = x.size();\n for (let F = 0; F < A; F++) {\n r > t && (r = 0, o++, s.push([]));\n const P = x.get(F);\n s[o].push(P);\n const C = this.webIfc.GetLine(0, P);\n if (C.GlobalId) {\n const U = (C == null ? void 0 : C.GlobalId.value) || (C == null ? void 0 : C.GlobalId);\n i.globalToExpressIDs.set(U, P);\n }\n const O = this._spatialTree.itemsByFloor[P] || 0;\n i.data.set(P, [[], [O, y]]), r++;\n }\n }\n this._spatialTree.cleanUp();\n let l = 0.01, u = 0;\n for (const y of s) {\n u++, this.webIfc.StreamMeshes(0, y, (A) => {\n this.getMesh(this.webIfc, A, i);\n }), this._geometryCount > t && await this.streamGeometries(), this._assets.length > e && await this.streamAssets();\n const x = u / s.length;\n x > l && (l += 0.01, l = Math.max(l, x), this.onProgress.trigger(Math.round(l * 100) / 100));\n }\n this._geometryCount && await this.streamGeometries(), this._assets.length && await this.streamAssets();\n const { opaque: d, transparent: m } = i.geometryIDs;\n for (const [y, { index: x, uuid: A }] of this._visitedGeometries)\n i.keyFragments.set(x, A), (y > 1 ? d : m).set(y, x);\n const f = i.data.keys();\n for (const y of f) {\n const [x] = i.data.get(y);\n x.length || i.data.delete(y);\n }\n const g = this.webIfc.GetCoordinationMatrix(0);\n i.coordinationMatrix.fromArray(g), i.civilData = this._civil.read(this.webIfc);\n const v = this._groupSerializer.export(i);\n this.onIfcLoaded.trigger(v), i.dispose(!0);\n }\n cleanUp() {\n this.webIfc = null, this.webIfc = new de.IfcAPI(), this._visitedGeometries.clear(), this._geometries.clear(), this._assets = [], this._meshesWithHoles.clear();\n }\n getMesh(t, e, n) {\n const s = e.geometries.size(), i = e.expressID, r = { id: i, geometries: [] };\n for (let o = 0; o < s; o++) {\n const l = e.geometries.get(o), u = l.geometryExpressID, d = l.color.w === 1 ? 1 : -1, m = u * d;\n if (!this._visitedGeometries.has(m)) {\n this._visitedGeometries.has(u) || this.getGeometry(t, u);\n const C = this._visitedGeometries.size, O = w.MathUtils.generateUUID();\n this._visitedGeometries.set(m, { uuid: O, index: C });\n }\n const f = this._visitedGeometries.get(m);\n if (f === void 0)\n throw new Error(\"Error getting geometry data for streaming!\");\n const g = n.data.get(i);\n if (!g)\n throw new Error(\"Data not found!\");\n g[0].push(f.index);\n const { x: v, y, z: x, w: A } = l.color, F = [v, y, x, A], P = l.flatTransformation;\n r.geometries.push({ color: F, geometryID: u, transformation: P });\n }\n this._assets.push(r);\n }\n getGeometry(t, e) {\n const n = t.GetGeometry(0, e), s = t.GetIndexArray(\n n.GetIndexData(),\n n.GetIndexDataSize()\n ), i = t.GetVertexArray(\n n.GetVertexData(),\n n.GetVertexDataSize()\n ), r = new Float32Array(i.length / 2), o = new Float32Array(i.length / 2);\n for (let f = 0; f < i.length; f += 6)\n r[f / 2] = i[f], r[f / 2 + 1] = i[f + 1], r[f / 2 + 2] = i[f + 2], o[f / 2] = i[f + 3], o[f / 2 + 1] = i[f + 4], o[f / 2 + 2] = i[f + 5];\n const l = Yd(r), u = new Float32Array(l.transformation.elements), d = [l.center.x, l.center.y, l.center.z];\n let m = !1;\n for (let f = 0; f < r.length - 2; f += 3) {\n const g = r[f], v = r[f + 1], y = r[f + 2], x = o[f], A = o[f + 1], F = o[f + 2];\n if (Hd(d, [g, v, y], [x, A, F])) {\n m = !0;\n break;\n }\n }\n this._geometries.set(e, {\n position: r,\n normal: o,\n index: s,\n boundingBox: u,\n hasHoles: m\n }), n.delete(), this._geometryCount++;\n }\n async streamAssets() {\n await this.onAssetStreamed.trigger(this._assets), this._assets = null, this._assets = [];\n }\n async streamGeometries() {\n let t = this._streamSerializer.export(this._geometries), e = {};\n for (const [n, { boundingBox: s, hasHoles: i }] of this._geometries)\n e[n] = { boundingBox: s, hasHoles: i };\n this.onGeometryStreamed.trigger({ data: e, buffer: t }), e = null, t = null, this._geometries.clear(), this._geometryCount = 0;\n }\n};\nS(Ff, \"uuid\", \"d9999a00-e1f5-4d3f-8cfe-c56e08609764\");\nclass Pf extends _a {\n constructor() {\n super(...arguments), S(this, \"propertiesSize\", 100);\n }\n}\nclass Mf extends Re {\n constructor() {\n super(...arguments), S(this, \"onPropertiesStreamed\", new ti()), S(this, \"onProgress\", new ti()), S(this, \"onIndicesStreamed\", new ti()), S(this, \"onDisposed\", new $()), S(this, \"enabled\", !0), S(this, \"settings\", new Pf()), S(this, \"webIfc\", new de.IfcAPI());\n }\n /** {@link Disposable.dispose} */\n async dispose() {\n this.onIndicesStreamed.reset(), this.onPropertiesStreamed.reset(), this.webIfc = null, this.onDisposed.reset();\n }\n /**\n * This method converts properties from an IFC file to tiles given its data as a Uint8Array.\n *\n * @param data - The Uint8Array containing the IFC file data.\n * @returns A Promise that resolves when the streaming process is complete.\n */\n async streamFromBuffer(t) {\n await this.readIfcFile(t), await this.streamAllProperties(), this.cleanUp();\n }\n /**\n * This method converts properties from an IFC file to tiles using a given callback function to read the file.\n *\n * @param loadCallback - A callback function that loads the IFC file data.\n * @returns A Promise that resolves when the streaming process is complete.\n */\n async streamFromCallBack(t) {\n await this.streamIfcFile(t), await this.streamAllProperties(), this.cleanUp();\n }\n async readIfcFile(t) {\n const { path: e, absolute: n, logLevel: s } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, n), await this.webIfc.Init(), s && this.webIfc.SetLogLevel(s), this.webIfc.OpenModel(t, this.settings.webIfc);\n }\n async streamIfcFile(t) {\n const { path: e, absolute: n, logLevel: s } = this.settings.wasm;\n this.webIfc.SetWasmPath(e, n), await this.webIfc.Init(), s && this.webIfc.SetLogLevel(s), this.webIfc.OpenModelFromCallback(t, this.settings.webIfc);\n }\n async streamAllProperties() {\n const { propertiesSize: t } = this.settings, e = new Set(this.webIfc.GetIfcEntityList(0)), n = /* @__PURE__ */ new Set([\n de.IFCPROJECT,\n de.IFCSITE,\n de.IFCBUILDING,\n de.IFCBUILDINGSTOREY,\n de.IFCSPACE\n ]);\n for (const o of n)\n e.add(o);\n let s = 0.01, i = 0;\n for (const o of e) {\n if (i++, nh.has(o))\n continue;\n const l = n.has(o), u = this.webIfc.GetLineIDsWithType(0, o), d = u.size();\n let m = 0;\n for (let g = 0; g < d - t; g += t) {\n const v = {};\n for (let y = 0; y < t; y++) {\n m++;\n const x = u.get(g + y);\n try {\n const A = this.webIfc.GetLine(0, x, l);\n v[A.expressID] = A;\n } catch {\n console.log(`Could not get property: ${x}`);\n }\n }\n await this.onPropertiesStreamed.trigger({ type: o, data: v });\n }\n if (m !== d) {\n const g = {};\n for (let v = m; v < d; v++) {\n const y = u.get(v);\n try {\n const x = this.webIfc.GetLine(0, y, l);\n g[x.expressID] = x;\n } catch {\n console.log(`Could not get property: ${y}`);\n }\n }\n await this.onPropertiesStreamed.trigger({ type: o, data: g });\n }\n const f = i / e.size;\n f > s && (s += 0.01, s = Math.max(s, f), await this.onProgress.trigger(Math.round(s * 100) / 100));\n }\n const r = await this.components.get(Xr).processFromWebIfc(this.webIfc, 0);\n await this.onIndicesStreamed.trigger(r);\n }\n cleanUp() {\n this.webIfc = null, this.webIfc = new de.IfcAPI();\n }\n}\nS(Mf, \"uuid\", \"88d2c89c-ce32-47d7-8cb6-d51e4b311a0b\");\nconst mh = class gh extends Re {\n constructor(t) {\n super(t), S(this, \"enabled\", !0), t.add(gh.uuid, this);\n }\n /**\n * Utility method to calculate the distance from a point to a line segment.\n *\n * @param point - The point from which to calculate the distance.\n * @param lineStart - The start point of the line segment.\n * @param lineEnd - The end point of the line segment.\n * @param clamp - If true, the distance will be clamped to the line segment's length.\n * @returns The distance from the point to the line segment.\n */\n static distanceFromPointToLine(t, e, n, s = !1) {\n const i = new w.Line3(), r = new w.Vector3();\n return i.set(e, n), i.closestPointToPoint(t, s, r), r.distanceTo(t);\n }\n /**\n * Method to get the face of a mesh that contains a given triangle index.\n * It also returns the edges of the found face and their indices.\n *\n * @param mesh - The mesh to get the face from. It must be indexed.\n * @param triangleIndex - The index of the triangle within the mesh.\n * @param instance - The instance of the mesh (optional).\n * @returns An object containing the edges of the found face and their indices, or null if no face was found.\n */\n getFace(t, e, n) {\n if (!t.geometry.index)\n throw new Error(\"Geometry must be indexed!\");\n const s = /* @__PURE__ */ new Map(), i = t.geometry.index.array, { plane: r } = this.getFaceData(\n e,\n n,\n t\n ), o = [];\n for (let m = 0; m < i.length / 3; m++) {\n const { plane: f, edges: g } = this.getFaceData(m, n, t);\n if (f.equals(r)) {\n o.push({ index: m, edges: g });\n for (const { id: v, points: y, distance: x } of g)\n s.set(v, { points: y, distance: x });\n }\n }\n let l = 0;\n const u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map();\n for (const { index: m, edges: f } of o) {\n const g = /* @__PURE__ */ new Map();\n for (const { id: C } of f)\n if (u.has(C)) {\n const O = u.get(C);\n g.set(C, O);\n }\n const v = f.map((C) => C.id);\n if (!g.size) {\n const C = l++;\n for (const { id: O } of f)\n u.set(O, C);\n d.set(C, {\n edges: new Set(v),\n indices: /* @__PURE__ */ new Set([m])\n });\n continue;\n }\n let y = null;\n const x = /* @__PURE__ */ new Set(), A = new Set(v);\n for (const [C, O] of g) {\n y === null ? y = O : O !== y && x.add(O), u.delete(C);\n const { edges: U } = d.get(O);\n U.delete(C), A.delete(C);\n }\n if (y === null)\n throw new Error(\"Error computing face!\");\n const F = d.get(y), { indices: P } = F;\n P.add(m);\n for (const C of A) {\n u.set(C, y);\n const { edges: O } = F;\n O.add(C);\n }\n for (const C of x) {\n const O = d.get(C), { edges: U, indices: Y } = O, H = d.get(y), { edges: K, indices: Z } = H;\n for (const q of U)\n K.add(q), u.set(q, y);\n for (const q of Y)\n Z.add(q);\n d.delete(C);\n }\n }\n for (const [m, { indices: f, edges: g }] of d)\n if (f.has(e)) {\n const v = [];\n for (const y of g) {\n const x = s.get(y);\n v.push(x);\n }\n return { edges: v, indices: f };\n }\n return null;\n }\n /**\n * Method to get the vertices and normal of a mesh face at a given index.\n * It also applies instance transformation if provided.\n *\n * @param mesh - The mesh to get the face from. It must be indexed.\n * @param faceIndex - The index of the face within the mesh.\n * @param instance - The instance of the mesh (optional).\n * @returns An object containing the vertices and normal of the face.\n * @throws Will throw an error if the geometry is not indexed.\n */\n getVerticesAndNormal(t, e, n) {\n if (!t.geometry.index)\n throw new Error(\"Geometry must be indexed!\");\n const s = t.geometry.index.array, i = t.geometry.attributes.position.array, r = t.geometry.attributes.normal.array, o = s[e * 3] * 3, l = s[e * 3 + 1] * 3, u = s[e * 3 + 2] * 3, d = new w.Vector3(i[o], i[o + 1], i[o + 2]), m = new w.Vector3(i[l], i[l + 1], i[l + 2]), f = new w.Vector3(i[u], i[u + 1], i[u + 2]), g = new w.Vector3(r[o], r[o + 1], r[o + 2]), v = new w.Vector3(r[l], r[l + 1], r[l + 2]), y = new w.Vector3(r[u], r[u + 1], r[u + 2]), x = (g.x + v.x + y.x) / 3, A = (g.y + v.y + y.y) / 3, F = (g.z + v.z + y.z) / 3, P = new w.Vector3(x, A, F);\n if (n !== void 0 && t instanceof w.InstancedMesh) {\n const C = new w.Matrix4();\n t.getMatrixAt(n, C);\n const O = new w.Matrix4();\n O.extractRotation(C), P.applyMatrix4(O), d.applyMatrix4(C), m.applyMatrix4(C), f.applyMatrix4(C);\n }\n return { p1: d, p2: m, p3: f, faceNormal: P };\n }\n /**\n * Method to round the vector's components to a specified number of decimal places.\n * This is used to ensure numerical precision in edge detection.\n *\n * @param vector - The vector to round.\n * @returns The vector with rounded components.\n */\n round(t) {\n t.x = Math.trunc(t.x * 1e3) / 1e3, t.y = Math.trunc(t.y * 1e3) / 1e3, t.z = Math.trunc(t.z * 1e3) / 1e3;\n }\n /**\n * Calculates the volume of a set of fragments.\n *\n * @param frags - A map of fragment IDs to their corresponding item IDs.\n * @returns The total volume of the fragments and the bounding sphere.\n *\n * @remarks\n * This method creates a set of instanced meshes from the given fragments and item IDs.\n * It then calculates the volume of each mesh and returns the total volume and its bounding sphere.\n *\n * @throws Will throw an error if the geometry of the meshes is not indexed.\n * @throws Will throw an error if the fragment manager is not available.\n */\n getVolumeFromFragments(t) {\n const e = this.components.get(ke), n = new w.Matrix4(), s = [];\n for (const r in t) {\n const o = e.list.get(r);\n if (!o)\n continue;\n const l = t[r];\n let u = 0;\n for (const f of l) {\n const g = o.getInstancesIDs(f);\n g && (u += g.size);\n }\n const d = new w.InstancedMesh(\n o.mesh.geometry,\n void 0,\n u\n );\n let m = 0;\n for (const f of l) {\n const g = o.getInstancesIDs(f);\n if (g)\n for (const v of g)\n o.mesh.getMatrixAt(v, n), d.setMatrixAt(m++, n);\n }\n s.push(d);\n }\n const i = this.getVolumeFromMeshes(s);\n for (const r of s)\n r.geometry = null, r.material = [], r.dispose();\n return i;\n }\n /**\n * Calculates the total volume of a set of meshes.\n *\n * @param meshes - An array of meshes or instanced meshes to calculate the volume from.\n * @returns The total volume of the meshes and the bounding sphere.\n *\n * @remarks\n * This method calculates the volume of each mesh in the provided array and returns the total volume\n * and its bounding sphere.\n *\n */\n getVolumeFromMeshes(t) {\n let e = 0;\n for (const n of t)\n e += this.getVolumeOfMesh(n);\n return e;\n }\n getFaceData(t, e, n) {\n const s = this.getVerticesAndNormal(n, t, e), { p1: i, p2: r, p3: o, faceNormal: l } = s;\n this.round(i), this.round(r), this.round(o), this.round(l);\n const u = [\n { id: `${i.x}|${i.y}|${i.z}`, value: i },\n { id: `${r.x}|${r.y}|${r.z}`, value: r },\n { id: `${o.x}|${o.y}|${o.z}`, value: o }\n ];\n u.sort((F, P) => F.id < P.id ? -1 : F.id > P.id ? 1 : 0);\n const [\n { id: d, value: m },\n { id: f, value: g },\n { id: v, value: y }\n ] = u, x = [\n {\n id: `${d}|${f}`,\n distance: m.distanceTo(g),\n points: [m, g]\n },\n {\n id: `${f}|${v}`,\n distance: g.distanceTo(y),\n points: [g, y]\n },\n {\n id: `${d}|${v}`,\n distance: m.distanceTo(y),\n points: [m, y]\n }\n ], A = new w.Plane();\n return A.setFromNormalAndCoplanarPoint(l, i), A.constant = Math.round(A.constant * 10) / 10, { plane: A, edges: x };\n }\n // https://stackoverflow.com/a/1568551\n getVolumeOfMesh(t) {\n let e = 0;\n const n = new w.Vector3(), s = new w.Vector3(), i = new w.Vector3(), { index: r } = t.geometry, o = t.geometry.attributes.position.array;\n if (!r)\n return console.warn(\"Geometry must be indexed to compute its volume!\"), 0;\n const l = [];\n if (t instanceof w.InstancedMesh)\n for (let d = 0; d < t.count; d++) {\n const m = new w.Matrix4();\n t.getMatrixAt(d, m), l.push(m);\n }\n else\n l.push(new w.Matrix4().identity());\n const { matrixWorld: u } = t;\n for (let d = 0; d < r.array.length - 2; d += 3)\n for (const m of l) {\n const f = m.multiply(u), g = r.array[d] * 3, v = r.array[d + 1] * 3, y = r.array[d + 2] * 3;\n n.set(o[g], o[g + 1], o[g + 2]).applyMatrix4(f), s.set(o[v], o[v + 1], o[v + 2]).applyMatrix4(f), i.set(o[y], o[y + 1], o[y + 2]).applyMatrix4(f), e += this.getSignedVolumeOfTriangle(n, s, i);\n }\n return Math.abs(e);\n }\n getSignedVolumeOfTriangle(t, e, n) {\n const s = n.x * e.y * t.z, i = e.x * n.y * t.z, r = n.x * t.y * e.z, o = t.x * n.y * e.z, l = e.x * t.y * n.z, u = t.x * e.y * n.z;\n return 1 / 6 * (-s + i + r - o - l + u);\n }\n};\nS(mh, \"uuid\", \"267ca032-672f-4cb0-afa9-d24e904f39d6\");\nlet Un = mh;\nconst nc = new pt(), dr = new te();\nclass Eh extends hu {\n constructor() {\n super(), this.isLineSegmentsGeometry = !0, this.type = \"LineSegmentsGeometry\";\n const t = [-1, 2, 0, 1, 2, 0, -1, 1, 0, 1, 1, 0, -1, 0, 0, 1, 0, 0, -1, -1, 0, 1, -1, 0], e = [-1, 2, 1, 2, -1, 1, 1, 1, -1, -1, 1, -1, -1, -2, 1, -2], n = [0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5];\n this.setIndex(n), this.setAttribute(\"position\", new Es(t, 3)), this.setAttribute(\"uv\", new Es(e, 2));\n }\n applyMatrix4(t) {\n const e = this.attributes.instanceStart, n = this.attributes.instanceEnd;\n return e !== void 0 && (e.applyMatrix4(t), n.applyMatrix4(t), e.needsUpdate = !0), this.boundingBox !== null && this.computeBoundingBox(), this.boundingSphere !== null && this.computeBoundingSphere(), this;\n }\n setPositions(t) {\n let e;\n t instanceof Float32Array ? e = t : Array.isArray(t) && (e = new Float32Array(t));\n const n = new ra(e, 6, 1);\n return this.setAttribute(\"instanceStart\", new ds(n, 3, 0)), this.setAttribute(\"instanceEnd\", new ds(n, 3, 3)), this.computeBoundingBox(), this.computeBoundingSphere(), this;\n }\n setColors(t) {\n let e;\n t instanceof Float32Array ? e = t : Array.isArray(t) && (e = new Float32Array(t));\n const n = new ra(e, 6, 1);\n return this.setAttribute(\"instanceColorStart\", new ds(n, 3, 0)), this.setAttribute(\"instanceColorEnd\", new ds(n, 3, 3)), this;\n }\n fromWireframeGeometry(t) {\n return this.setPositions(t.attributes.position.array), this;\n }\n fromEdgesGeometry(t) {\n return this.setPositions(t.attributes.position.array), this;\n }\n fromMesh(t) {\n return this.fromWireframeGeometry(new uu(t.geometry)), this;\n }\n fromLineSegments(t) {\n const e = t.geometry;\n return this.setPositions(e.attributes.position.array), this;\n }\n computeBoundingBox() {\n this.boundingBox === null && (this.boundingBox = new pt());\n const t = this.attributes.instanceStart, e = this.attributes.instanceEnd;\n t !== void 0 && e !== void 0 && (this.boundingBox.setFromBufferAttribute(t), nc.setFromBufferAttribute(e), this.boundingBox.union(nc));\n }\n computeBoundingSphere() {\n this.boundingSphere === null && (this.boundingSphere = new Gr()), this.boundingBox === null && this.computeBoundingBox();\n const t = this.attributes.instanceStart, e = this.attributes.instanceEnd;\n if (t !== void 0 && e !== void 0) {\n const n = this.boundingSphere.center;\n this.boundingBox.getCenter(n);\n let s = 0;\n for (let i = 0, r = t.count; i < r; i++)\n dr.fromBufferAttribute(t, i), s = Math.max(s, n.distanceToSquared(dr)), dr.fromBufferAttribute(e, i), s = Math.max(s, n.distanceToSquared(dr));\n this.boundingSphere.radius = Math.sqrt(s), isNaN(this.boundingSphere.radius) && console.error(\"THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.\", this);\n }\n }\n toJSON() {\n }\n applyMatrix(t) {\n return console.warn(\"THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().\"), this.applyMatrix4(t);\n }\n}\nvr.line = {\n worldUnits: { value: 1 },\n linewidth: { value: 1 },\n resolution: { value: new at(1, 1) },\n dashOffset: { value: 0 },\n dashScale: { value: 1 },\n dashSize: { value: 1 },\n gapSize: { value: 1 }\n // todo FIX - maybe change to totalSize\n};\nIr.line = {\n uniforms: Pa.merge([\n vr.common,\n vr.fog,\n vr.line\n ]),\n vertexShader: (\n /* glsl */\n `\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tuniform float linewidth;\n\t\tuniform vec2 resolution;\n\n\t\tattribute vec3 instanceStart;\n\t\tattribute vec3 instanceEnd;\n\n\t\tattribute vec3 instanceColorStart;\n\t\tattribute vec3 instanceColorEnd;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashScale;\n\t\t\tattribute float instanceDistanceStart;\n\t\t\tattribute float instanceDistanceEnd;\n\t\t\tvarying float vLineDistance;\n\n\t\t#endif\n\n\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\n\n\t\t\t// trim end segment so it terminates between the camera plane and the near plane\n\n\t\t\t// conservative estimate of the near plane\n\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\n\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\n\t\t\tfloat nearEstimate = - 0.5 * b / a;\n\n\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\n\n\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#ifdef USE_COLOR\n\n\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\n\n\t\t\t#endif\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\tfloat aspect = resolution.x / resolution.y;\n\n\t\t\t// camera space\n\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\n\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\tworldStart = start.xyz;\n\t\t\t\tworldEnd = end.xyz;\n\n\t\t\t#else\n\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n\t\t\t// perhaps there is a more elegant solution -- WestLangley\n\n\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\n\n\t\t\tif ( perspective ) {\n\n\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( start, end );\n\n\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( end, start );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// clip space\n\t\t\tvec4 clipStart = projectionMatrix * start;\n\t\t\tvec4 clipEnd = projectionMatrix * end;\n\n\t\t\t// ndc space\n\t\t\tvec3 ndcStart = clipStart.xyz / clipStart.w;\n\t\t\tvec3 ndcEnd = clipEnd.xyz / clipEnd.w;\n\n\t\t\t// direction\n\t\t\tvec2 dir = ndcEnd.xy - ndcStart.xy;\n\n\t\t\t// account for clip-space aspect ratio\n\t\t\tdir.x *= aspect;\n\t\t\tdir = normalize( dir );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\tvec3 worldDir = normalize( end.xyz - start.xyz );\n\t\t\t\tvec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) );\n\t\t\t\tvec3 worldUp = normalize( cross( worldDir, tmpFwd ) );\n\t\t\t\tvec3 worldFwd = cross( worldDir, worldUp );\n\t\t\t\tworldPos = position.y < 0.5 ? start: end;\n\n\t\t\t\t// height offset\n\t\t\t\tfloat hw = linewidth * 0.5;\n\t\t\t\tworldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp;\n\n\t\t\t\t// don't extend the line if we're rendering dashes because we\n\t\t\t\t// won't be rendering the endcaps\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t// cap extension\n\t\t\t\t\tworldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir;\n\n\t\t\t\t\t// add width to the box\n\t\t\t\t\tworldPos.xyz += worldFwd * hw;\n\n\t\t\t\t\t// endcaps\n\t\t\t\t\tif ( position.y > 1.0 || position.y < 0.0 ) {\n\n\t\t\t\t\t\tworldPos.xyz -= worldFwd * 2.0 * hw;\n\n\t\t\t\t\t}\n\n\t\t\t\t#endif\n\n\t\t\t\t// project the worldpos\n\t\t\t\tvec4 clip = projectionMatrix * worldPos;\n\n\t\t\t\t// shift the depth of the projected points so the line\n\t\t\t\t// segments overlap neatly\n\t\t\t\tvec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;\n\t\t\t\tclip.z = clipPose.z * clip.w;\n\n\t\t\t#else\n\n\t\t\t\tvec2 offset = vec2( dir.y, - dir.x );\n\t\t\t\t// undo aspect ratio adjustment\n\t\t\t\tdir.x /= aspect;\n\t\t\t\toffset.x /= aspect;\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y < 0.0 ) {\n\n\t\t\t\t\toffset += - dir;\n\n\t\t\t\t} else if ( position.y > 1.0 ) {\n\n\t\t\t\t\toffset += dir;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for linewidth\n\t\t\t\toffset *= linewidth;\n\n\t\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\n\t\t\t\toffset /= resolution.y;\n\n\t\t\t\t// select end\n\t\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\n\n\t\t\t\t// back to clip space\n\t\t\t\toffset *= clip.w;\n\n\t\t\t\tclip.xy += offset;\n\n\t\t\t#endif\n\n\t\t\tgl_Position = clip;\n\n\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t}\n\t\t`\n ),\n fragmentShader: (\n /* glsl */\n `\n\t\tuniform vec3 diffuse;\n\t\tuniform float opacity;\n\t\tuniform float linewidth;\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashOffset;\n\t\t\tuniform float dashSize;\n\t\t\tuniform float gapSize;\n\n\t\t#endif\n\n\t\tvarying float vLineDistance;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\n\t\tvec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\n\n\t\t\tfloat mua;\n\t\t\tfloat mub;\n\n\t\t\tvec3 p13 = p1 - p3;\n\t\t\tvec3 p43 = p4 - p3;\n\n\t\t\tvec3 p21 = p2 - p1;\n\n\t\t\tfloat d1343 = dot( p13, p43 );\n\t\t\tfloat d4321 = dot( p43, p21 );\n\t\t\tfloat d1321 = dot( p13, p21 );\n\t\t\tfloat d4343 = dot( p43, p43 );\n\t\t\tfloat d2121 = dot( p21, p21 );\n\n\t\t\tfloat denom = d2121 * d4343 - d4321 * d4321;\n\n\t\t\tfloat numer = d1343 * d4321 - d1321 * d4343;\n\n\t\t\tmua = numer / denom;\n\t\t\tmua = clamp( mua, 0.0, 1.0 );\n\t\t\tmub = ( d1343 + d4321 * ( mua ) ) / d4343;\n\t\t\tmub = clamp( mub, 0.0, 1.0 );\n\n\t\t\treturn vec2( mua, mub );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#include \n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n\n\t\t\t\tif ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\n\n\t\t\t#endif\n\n\t\t\tfloat alpha = opacity;\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// Find the closest points on the view ray and the line segment\n\t\t\t\tvec3 rayEnd = normalize( worldPos.xyz ) * 1e5;\n\t\t\t\tvec3 lineDir = worldEnd - worldStart;\n\t\t\t\tvec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );\n\n\t\t\t\tvec3 p1 = worldStart + lineDir * params.x;\n\t\t\t\tvec3 p2 = rayEnd * params.y;\n\t\t\t\tvec3 delta = p1 - p2;\n\t\t\t\tfloat len = length( delta );\n\t\t\t\tfloat norm = len / linewidth;\n\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t\tfloat dnorm = fwidth( norm );\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\tif ( norm > 0.5 ) {\n\n\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t#endif\n\n\t\t\t\t#endif\n\n\t\t\t#else\n\n\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t// artifacts appear on some hardware if a derivative is taken within a conditional\n\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\tfloat len2 = a * a + b * b;\n\t\t\t\t\tfloat dlen = fwidth( len2 );\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t#else\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\t\tfloat len2 = a * a + b * b;\n\n\t\t\t\t\t\tif ( len2 > 1.0 ) discard;\n\n\t\t\t\t\t}\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvec4 diffuseColor = vec4( diffuse, alpha );\n\n\t\t\t#include \n\t\t\t#include \n\n\t\t\tgl_FragColor = vec4( diffuseColor.rgb, alpha );\n\n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\t\t\t#include \n\n\t\t}\n\t\t`\n )\n};\nclass pi extends jt {\n constructor(t) {\n super({\n type: \"LineMaterial\",\n uniforms: Pa.clone(Ir.line.uniforms),\n vertexShader: Ir.line.vertexShader,\n fragmentShader: Ir.line.fragmentShader,\n clipping: !0\n // required for clipping support\n }), this.isLineMaterial = !0, this.setValues(t);\n }\n get color() {\n return this.uniforms.diffuse.value;\n }\n set color(t) {\n this.uniforms.diffuse.value = t;\n }\n get worldUnits() {\n return \"WORLD_UNITS\" in this.defines;\n }\n set worldUnits(t) {\n t === !0 ? this.defines.WORLD_UNITS = \"\" : delete this.defines.WORLD_UNITS;\n }\n get linewidth() {\n return this.uniforms.linewidth.value;\n }\n set linewidth(t) {\n this.uniforms.linewidth && (this.uniforms.linewidth.value = t);\n }\n get dashed() {\n return \"USE_DASH\" in this.defines;\n }\n set dashed(t) {\n t === !0 !== this.dashed && (this.needsUpdate = !0), t === !0 ? this.defines.USE_DASH = \"\" : delete this.defines.USE_DASH;\n }\n get dashScale() {\n return this.uniforms.dashScale.value;\n }\n set dashScale(t) {\n this.uniforms.dashScale.value = t;\n }\n get dashSize() {\n return this.uniforms.dashSize.value;\n }\n set dashSize(t) {\n this.uniforms.dashSize.value = t;\n }\n get dashOffset() {\n return this.uniforms.dashOffset.value;\n }\n set dashOffset(t) {\n this.uniforms.dashOffset.value = t;\n }\n get gapSize() {\n return this.uniforms.gapSize.value;\n }\n set gapSize(t) {\n this.uniforms.gapSize.value = t;\n }\n get opacity() {\n return this.uniforms.opacity.value;\n }\n set opacity(t) {\n this.uniforms && (this.uniforms.opacity.value = t);\n }\n get resolution() {\n return this.uniforms.resolution.value;\n }\n set resolution(t) {\n this.uniforms.resolution.value.copy(t);\n }\n get alphaToCoverage() {\n return \"USE_ALPHA_TO_COVERAGE\" in this.defines;\n }\n set alphaToCoverage(t) {\n this.defines && (t === !0 !== this.alphaToCoverage && (this.needsUpdate = !0), t === !0 ? (this.defines.USE_ALPHA_TO_COVERAGE = \"\", this.extensions.derivatives = !0) : (delete this.defines.USE_ALPHA_TO_COVERAGE, this.extensions.derivatives = !1));\n }\n}\nconst sc = new te(), ic = new te(), et = new Hr(), tt = new Hr(), Yt = new Hr(), sa = new te(), ia = new Ne(), nt = new Ot(), rc = new te(), fr = new pt(), pr = new Gr(), Ht = new Hr();\nlet Xt, Bn;\nfunction oc(h, t, e) {\n return Ht.set(0, 0, -t, 1).applyMatrix4(h.projectionMatrix), Ht.multiplyScalar(1 / Ht.w), Ht.x = Bn / e.width, Ht.y = Bn / e.height, Ht.applyMatrix4(h.projectionMatrixInverse), Ht.multiplyScalar(1 / Ht.w), Math.abs(Math.max(Ht.x, Ht.y));\n}\nfunction Of(h, t) {\n const e = h.matrixWorld, n = h.geometry, s = n.attributes.instanceStart, i = n.attributes.instanceEnd, r = Math.min(n.instanceCount, s.count);\n for (let o = 0, l = r; o < l; o++) {\n nt.start.fromBufferAttribute(s, o), nt.end.fromBufferAttribute(i, o), nt.applyMatrix4(e);\n const u = new te(), d = new te();\n Xt.distanceSqToSegment(nt.start, nt.end, d, u), d.distanceTo(u) < Bn * 0.5 && t.push({\n point: d,\n pointOnLine: u,\n distance: Xt.origin.distanceTo(d),\n object: h,\n face: null,\n faceIndex: o,\n uv: null,\n uv1: null\n });\n }\n}\nfunction Df(h, t, e) {\n const n = t.projectionMatrix, i = h.material.resolution, r = h.matrixWorld, o = h.geometry, l = o.attributes.instanceStart, u = o.attributes.instanceEnd, d = Math.min(o.instanceCount, l.count), m = -t.near;\n Xt.at(1, Yt), Yt.w = 1, Yt.applyMatrix4(t.matrixWorldInverse), Yt.applyMatrix4(n), Yt.multiplyScalar(1 / Yt.w), Yt.x *= i.x / 2, Yt.y *= i.y / 2, Yt.z = 0, sa.copy(Yt), ia.multiplyMatrices(t.matrixWorldInverse, r);\n for (let f = 0, g = d; f < g; f++) {\n if (et.fromBufferAttribute(l, f), tt.fromBufferAttribute(u, f), et.w = 1, tt.w = 1, et.applyMatrix4(ia), tt.applyMatrix4(ia), et.z > m && tt.z > m)\n continue;\n if (et.z > m) {\n const P = et.z - tt.z, C = (et.z - m) / P;\n et.lerp(tt, C);\n } else if (tt.z > m) {\n const P = tt.z - et.z, C = (tt.z - m) / P;\n tt.lerp(et, C);\n }\n et.applyMatrix4(n), tt.applyMatrix4(n), et.multiplyScalar(1 / et.w), tt.multiplyScalar(1 / tt.w), et.x *= i.x / 2, et.y *= i.y / 2, tt.x *= i.x / 2, tt.y *= i.y / 2, nt.start.copy(et), nt.start.z = 0, nt.end.copy(tt), nt.end.z = 0;\n const y = nt.closestPointToPointParameter(sa, !0);\n nt.at(y, rc);\n const x = du.lerp(et.z, tt.z, y), A = x >= -1 && x <= 1, F = sa.distanceTo(rc) < Bn * 0.5;\n if (A && F) {\n nt.start.fromBufferAttribute(l, f), nt.end.fromBufferAttribute(u, f), nt.start.applyMatrix4(r), nt.end.applyMatrix4(r);\n const P = new te(), C = new te();\n Xt.distanceSqToSegment(nt.start, nt.end, C, P), e.push({\n point: C,\n pointOnLine: P,\n distance: Xt.origin.distanceTo(C),\n object: h,\n face: null,\n faceIndex: f,\n uv: null,\n uv1: null\n });\n }\n }\n}\nclass Lf extends fe {\n constructor(t = new Eh(), e = new pi({ color: Math.random() * 16777215 })) {\n super(t, e), this.isLineSegments2 = !0, this.type = \"LineSegments2\";\n }\n // for backwards-compatibility, but could be a method of LineSegmentsGeometry...\n computeLineDistances() {\n const t = this.geometry, e = t.attributes.instanceStart, n = t.attributes.instanceEnd, s = new Float32Array(2 * e.count);\n for (let r = 0, o = 0, l = e.count; r < l; r++, o += 2)\n sc.fromBufferAttribute(e, r), ic.fromBufferAttribute(n, r), s[o] = o === 0 ? 0 : s[o - 1], s[o + 1] = s[o] + sc.distanceTo(ic);\n const i = new ra(s, 2, 1);\n return t.setAttribute(\"instanceDistanceStart\", new ds(i, 1, 0)), t.setAttribute(\"instanceDistanceEnd\", new ds(i, 1, 1)), this;\n }\n raycast(t, e) {\n const n = this.material.worldUnits, s = t.camera;\n s === null && !n && console.error('LineSegments2: \"Raycaster.camera\" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');\n const i = t.params.Line2 !== void 0 && t.params.Line2.threshold || 0;\n Xt = t.ray;\n const r = this.matrixWorld, o = this.geometry, l = this.material;\n Bn = l.linewidth + i, o.boundingSphere === null && o.computeBoundingSphere(), pr.copy(o.boundingSphere).applyMatrix4(r);\n let u;\n if (n)\n u = Bn * 0.5;\n else {\n const m = Math.max(s.near, pr.distanceToPoint(Xt.origin));\n u = oc(s, m, l.resolution);\n }\n if (pr.radius += u, Xt.intersectsSphere(pr) === !1)\n return;\n o.boundingBox === null && o.computeBoundingBox(), fr.copy(o.boundingBox).applyMatrix4(r);\n let d;\n if (n)\n d = Bn * 0.5;\n else {\n const m = Math.max(s.near, fr.distanceToPoint(Xt.origin));\n d = oc(s, m, l.resolution);\n }\n fr.expandByScalar(d), Xt.intersectsBox(fr) !== !1 && (n ? Of(this, e) : Df(this, s, e));\n }\n}\nclass Rr extends Eh {\n constructor() {\n super(), this.isLineGeometry = !0, this.type = \"LineGeometry\";\n }\n setPositions(t) {\n const e = t.length - 3, n = new Float32Array(2 * e);\n for (let s = 0; s < e; s += 3)\n n[2 * s] = t[s], n[2 * s + 1] = t[s + 1], n[2 * s + 2] = t[s + 2], n[2 * s + 3] = t[s + 3], n[2 * s + 4] = t[s + 4], n[2 * s + 5] = t[s + 5];\n return super.setPositions(n), this;\n }\n setColors(t) {\n const e = t.length - 3, n = new Float32Array(2 * e);\n for (let s = 0; s < e; s += 3)\n n[2 * s] = t[s], n[2 * s + 1] = t[s + 1], n[2 * s + 2] = t[s + 2], n[2 * s + 3] = t[s + 3], n[2 * s + 4] = t[s + 4], n[2 * s + 5] = t[s + 5];\n return super.setColors(n), this;\n }\n fromLine(t) {\n const e = t.geometry;\n return this.setPositions(e.attributes.position.array), this;\n }\n}\nclass vh extends Lf {\n constructor(t = new Rr(), e = new pi({ color: Math.random() * 16777215 })) {\n super(t, e), this.isLine2 = !0, this.type = \"Line2\";\n }\n}\nconst Pr = class Pr {\n constructor(t, e) {\n T(this, \"scene\");\n T(this, \"onSelect\", new $());\n T(this, \"type\");\n T(this, \"selectCurve\");\n T(this, \"selectPoints\");\n T(this, \"hoverCurve\");\n T(this, \"hoverPoints\");\n T(this, \"caster\", new w.Raycaster());\n this.scene = t, this.type = e, this.hoverCurve = this.newCurve(3e-3, 4473924, !1), this.hoverPoints = this.newPoints(5, 4473924), this.selectCurve = this.newCurve(5e-3, 16777215, !0), this.selectPoints = this.newPoints(7, 16777215);\n }\n dispose() {\n this.selectCurve && this.scene.remove(this.selectCurve), this.selectCurve.material.dispose(), this.selectCurve.geometry.dispose(), this.selectCurve = null, this.hoverCurve.material.dispose(), this.hoverCurve.geometry.dispose(), this.hoverCurve = null, this.hoverPoints.material.dispose(), this.hoverPoints.geometry.dispose(), this.selectPoints.material.dispose(), this.selectPoints.geometry.dispose(), this.scene = null;\n }\n castRay(t, e, n, s) {\n const i = new w.Vector2(), r = n.getBoundingClientRect();\n i.x = (t.clientX - r.left) / r.width * 2 - 1, i.y = -((t.clientY - r.top) / r.height) * 2 + 1, this.caster.setFromCamera(i, e);\n const o = this.caster.intersectObjects(s);\n return o.length ? o[0] : null;\n }\n select(t) {\n this.highlight(t, this.selectCurve, this.selectPoints, !0), this.onSelect.trigger(t);\n }\n unSelect() {\n this.selectCurve.removeFromParent(), this.selectPoints.removeFromParent();\n }\n hover(t) {\n this.highlight(t, this.hoverCurve, this.hoverPoints, !1);\n }\n unHover() {\n this.hoverCurve.removeFromParent(), this.hoverPoints.removeFromParent();\n }\n setResolution({ x: t, y: e }) {\n this.selectCurve.material.resolution.set(t / e, 1), this.hoverCurve.material.resolution.set(t / e, 1);\n }\n highlight(t, e, n, s) {\n const { alignment: i } = t.curve;\n this.scene.add(e), this.scene.add(n);\n const r = [], o = [], l = [];\n for (const f of i[this.type]) {\n const g = f.mesh.geometry.attributes.position;\n for (const A of g.array)\n r.push(A);\n if (s) {\n let A;\n if (this.type === \"absolute\") {\n const { horizontal: P } = f.alignment;\n A = P[f.index].data.TYPE;\n } else\n A = f.data.TYPE;\n const F = Pr.settings.colors[A] || [1, 1, 1];\n for (let P = 0; P < g.count; P++)\n o.push(...F);\n }\n const [v, y, x] = g.array;\n l.push(new w.Vector3(v, y, x));\n }\n const u = r[r.length - 3], d = r[r.length - 2], m = r[r.length - 1];\n l.push(new w.Vector3(u, d, m)), r.length / 3 > e.geometry.attributes.position.count && (e.geometry.dispose(), e.geometry = new Rr()), e.geometry.setPositions(r), s && e.geometry.setColors(o), n.geometry.setFromPoints(l);\n }\n newCurve(t, e, n) {\n const s = new Rr(), i = new pi({\n color: e,\n linewidth: t,\n vertexColors: n,\n worldUnits: !1,\n depthTest: !1\n }), r = new vh(s, i);\n return this.scene.add(r), r;\n }\n newPoints(t, e) {\n const n = new w.BufferGeometry(), s = new w.BufferAttribute(new Float32Array(), 3);\n n.setAttribute(\"position\", s);\n const i = new w.PointsMaterial({\n size: t,\n color: e,\n sizeAttenuation: !1,\n depthTest: !1\n }), r = new w.Points(n, i);\n return r.frustumCulled = !1, this.scene.add(r), r;\n }\n};\nT(Pr, \"settings\", {\n colors: {\n LINE: [213 / 255, 0 / 255, 255 / 255],\n CIRCULARARC: [0 / 255, 46, 255 / 255],\n CLOTHOID: [0 / 255, 255 / 255, 0 / 255],\n PARABOLICARC: [0 / 255, 255 / 255, 72 / 255],\n CONSTANTGRADIENT: [213 / 255, 0 / 255, 255 / 255]\n }\n});\nlet Fr = Pr;\nclass Nf extends br {\n constructor(t = document.createElement(\"div\")) {\n super(), this.isCSS2DObject = !0, this.element = t, this.element.style.position = \"absolute\", this.element.style.userSelect = \"none\", this.element.setAttribute(\"draggable\", !1), this.center = new at(0.5, 0.5), this.addEventListener(\"removed\", function() {\n this.traverse(function(e) {\n e.element instanceof Element && e.element.parentNode !== null && e.element.parentNode.removeChild(e.element);\n });\n });\n }\n copy(t, e) {\n return super.copy(t, e), this.element = t.element.cloneNode(!0), this.center = t.center, this;\n }\n}\nconst cs = new te(), ac = new Ne(), lc = new Ne(), cc = new te(), hc = new te();\nclass _f {\n constructor(t = {}) {\n const e = this;\n let n, s, i, r;\n const o = {\n objects: /* @__PURE__ */ new WeakMap()\n }, l = t.element !== void 0 ? t.element : document.createElement(\"div\");\n l.style.overflow = \"hidden\", this.domElement = l, this.getSize = function() {\n return {\n width: n,\n height: s\n };\n }, this.render = function(g, v) {\n g.matrixWorldAutoUpdate === !0 && g.updateMatrixWorld(), v.parent === null && v.matrixWorldAutoUpdate === !0 && v.updateMatrixWorld(), ac.copy(v.matrixWorldInverse), lc.multiplyMatrices(v.projectionMatrix, ac), u(g, g, v), f(g);\n }, this.setSize = function(g, v) {\n n = g, s = v, i = n / 2, r = s / 2, l.style.width = g + \"px\", l.style.height = v + \"px\";\n };\n function u(g, v, y) {\n if (g.isCSS2DObject) {\n cs.setFromMatrixPosition(g.matrixWorld), cs.applyMatrix4(lc);\n const x = g.visible === !0 && cs.z >= -1 && cs.z <= 1 && g.layers.test(y.layers) === !0;\n if (g.element.style.display = x === !0 ? \"\" : \"none\", x === !0) {\n g.onBeforeRender(e, v, y);\n const F = g.element;\n F.style.transform = \"translate(\" + -100 * g.center.x + \"%,\" + -100 * g.center.y + \"%)translate(\" + (cs.x * i + i) + \"px,\" + (-cs.y * r + r) + \"px)\", F.parentNode !== l && l.appendChild(F), g.onAfterRender(e, v, y);\n }\n const A = {\n distanceToCameraSquared: d(y, g)\n };\n o.objects.set(g, A);\n }\n for (let x = 0, A = g.children.length; x < A; x++)\n u(g.children[x], v, y);\n }\n function d(g, v) {\n return cc.setFromMatrixPosition(g.matrixWorld), hc.setFromMatrixPosition(v.matrixWorld), cc.distanceToSquared(hc);\n }\n function m(g) {\n const v = [];\n return g.traverse(function(y) {\n y.isCSS2DObject && v.push(y);\n }), v;\n }\n function f(g) {\n const v = m(g).sort(function(x, A) {\n if (x.renderOrder !== A.renderOrder)\n return A.renderOrder - x.renderOrder;\n const F = o.objects.get(x).distanceToCameraSquared, P = o.objects.get(A).distanceToCameraSquared;\n return F - P;\n }), y = v.length;\n for (let x = 0, A = v.length; x < A; x++)\n v[x].element.style.zIndex = y - x;\n }\n }\n}\nclass ft {\n // Define marker as setup configuration?\n constructor(t, e, n) {\n /**\n * The CSS object representing the marker.\n */\n T(this, \"three\");\n /**\n * The world in which the marker exists.\n */\n T(this, \"world\");\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n this.world = t;\n let s;\n e ? s = e : (s = document.createElement(\"div\"), s.style.width = \"15px\", s.style.height = \"15px\", s.style.border = \"5px solid red\"), this.three = new Nf(s), (n || t.scene.three).add(this.three), this.visible = !0;\n }\n /** {@link OBC.Hideable.visible} */\n set visible(t) {\n this.three.visible = t;\n }\n /** {@link OBC.Hideable.visible} */\n get visible() {\n return this.three.visible;\n }\n /**\n * Toggles the visibility of the marker.\n *\n * This method changes the `visible` property of the marker to its opposite value.\n * If the marker is currently visible, it will be hidden, and vice versa.\n *\n * @returns {void}\n */\n toggleVisibility() {\n this.visible = !this.visible;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.three.removeFromParent(), this.three.element.remove(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n}\nclass Uf extends Qd {\n constructor(e, n, s) {\n super(e, n, s);\n /**\n * This renderer is used to render 2D objects (CSS2DObjects) in a 3D scene.\n */\n T(this, \"three2D\", new _f());\n this.onAfterUpdate.add(() => {\n if (this.onBeforeUpdate.trigger(this), !this.enabled || !this.currentWorld)\n return;\n const i = this.currentWorld.scene.three, r = this.currentWorld.camera.three;\n i instanceof w.Scene && this.three2D.render(i, r);\n }), this.onDisposed.add(() => {\n this.three2D.domElement.remove();\n }), this.onResize.add(({ x: i, y: r }) => {\n this.three2D.setSize(i, r);\n }), this.setupHtmlRenderer(), this.resize();\n }\n setupHtmlRenderer() {\n this.three2D.domElement.style.position = \"absolute\", this.three2D.domElement.style.top = \"0px\", this.three2D.domElement.style.pointerEvents = \"none\", this.container && this.container.appendChild(this.three2D.domElement);\n }\n}\nconst Mr = class Mr extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * The distance threshold for clustering markers.\n * Markers within this distance will be considered for clustering.\n * Default value is 50.\n */\n T(this, \"threshold\", 50);\n /**\n * Indicates whether markers should be automatically clustered.\n * If true, markers will be clustered based on the threshold value.\n * Default value is true.\n */\n T(this, \"autoCluster\", !0);\n /**\n * A Map containing the markers grouped by world UUID.\n * Each world can have its own set of markers.\n */\n T(this, \"list\", /* @__PURE__ */ new Map());\n T(this, \"clusterLabels\", /* @__PURE__ */ new Set());\n T(this, \"currentKeys\", /* @__PURE__ */ new Set());\n T(this, \"_color\", \"white\");\n // TODO: Replace with UUID for the marker key\n T(this, \"_markerKey\", 0);\n T(this, \"_clusterKey\", 0);\n T(this, \"_worldEvents\", /* @__PURE__ */ new Map());\n T(this, \"_setupWorlds\", /* @__PURE__ */ new Set());\n e.add(Mr.uuid, this);\n }\n /**\n * Getter for the color property.\n * Returns the current color of the markers.\n *\n * @returns {string} The current color of the markers.\n */\n get color() {\n return this._color;\n }\n /**\n * Setter for the color property.\n * Updates the color of all the markers to the new value.\n *\n * @param {string} value - The new color value for the markers.\n */\n set color(e) {\n this._color = e;\n for (const [n, s] of this.list)\n for (const [i, r] of s)\n r.label.three.element.style.color = e;\n }\n /**\n * Creates a new marker at the specified point in the world.\n *\n * @param world - The world where the marker will be created.\n * @param text - The text content of the marker.\n * @param point - The 3D position where the marker will be placed.\n * @param isStatic - Indicates whether the marker should be static and not clustered.\n * @returns The unique key of the created marker.\n */\n create(e, n, s, i = !1) {\n this.setupEvents(e, !0);\n const r = this._markerKey.toString(), o = this.getWorldMarkerList(e);\n if (o.has(r))\n return;\n const l = document.createElement(\"span\");\n l.innerHTML = n, l.style.color = this._color;\n const u = new ft(e, l);\n return u.three.position.copy(s), o.set(r, {\n key: r,\n label: u,\n merged: !1,\n static: i\n }), this._markerKey++, r;\n }\n /**\n * Deletes a marker with the specified ID from all worlds.\n *\n * @param id - The unique identifier of the marker to be deleted.\n *\n * @remarks\n * This method iterates through all the worlds and their respective markers.\n * If a marker with the specified ID is found, it disposes of the marker's label\n * and removes the marker from the world's marker list.\n *\n */\n delete(e) {\n for (const [n, s] of this.list) {\n const i = s.get(e);\n i && i.label.dispose(), s.delete(e);\n }\n }\n /**\n * Retrieves the list of markers associated with a specific world.\n * If the list does not exist for the given world, it creates a new one.\n *\n * @param world - The world for which the marker list is to be retrieved.\n * @returns A Map containing the markers associated with the given world.\n *\n * @remarks\n * This method is used to manage markers per world. It ensures that each world has its own set of markers.\n * If a marker list for the given world does not exist, it creates a new one and associates it with the world.\n */\n getWorldMarkerList(e) {\n return this.list.has(e.uuid) || this.list.set(e.uuid, /* @__PURE__ */ new Map()), this.list.get(e.uuid);\n }\n /** {@link OBC.Disposable.dispose} */\n dispose(e) {\n for (const [n, s] of this.list) {\n const i = [...s.keys()];\n for (const r of i) {\n const o = s.get(r);\n e && o.type !== e || (o.label.dispose(), s.delete(r));\n }\n }\n if (!e) {\n this.list.clear(), this._markerKey = 0;\n for (const n of this.clusterLabels)\n n.label.dispose();\n this.clusterLabels.clear(), this._clusterKey = 0, this.currentKeys.clear();\n }\n this.onDisposed.trigger();\n }\n /**\n * Sets up event listeners for clustering markers in the given world.\n *\n * @param world - The world where the event listeners will be set up.\n * @param enabled - Indicates whether the event listeners should be enabled or disabled.\n *\n * @remarks\n * This method checks if the event listeners are already set up for the given world.\n * If the event listeners are already set up and the `enabled` parameter is true, the method returns without doing anything.\n * If the world does not have camera controls, the method returns without doing anything.\n *\n * The method then retrieves the event listener for the given world using the `getWorldEvent` method.\n * It removes the existing event listeners for the \"sleep\" and \"rest\" events from the world's camera controls.\n *\n * If the `enabled` parameter is true, the method adds the event listener for the \"sleep\" and \"rest\" events to the world's camera controls.\n */\n setupEvents(e, n) {\n if (n && this._setupWorlds.has(e.uuid) || !e.camera.hasCameraControls())\n return;\n const s = this.getWorldEvent(e);\n e.camera.controls.removeEventListener(\"sleep\", s), e.camera.controls.removeEventListener(\"rest\", s), n && (e.camera.controls.addEventListener(\"sleep\", s), e.camera.controls.addEventListener(\"rest\", s));\n }\n /**\n * Performs clustering of markers in the given world.\n *\n * @param world - The world where clustering will be performed.\n *\n */\n cluster(e) {\n if (!this.autoCluster)\n return;\n this.resetMarkers();\n const n = this.list.get(e.uuid);\n if (n) {\n for (const [s, i] of n)\n if (!i.merged && !i.static) {\n this.currentKeys.clear();\n for (const [r, o] of n)\n o.static || i.key !== o.key && !o.merged && this.distance(i.label, o.label) < this.threshold && (this.currentKeys.add(o.key), o.merged = !0);\n if (this.currentKeys.size > 0) {\n this.currentKeys.add(i.key), i.merged = !0;\n const r = Array.from(this.currentKeys), o = this.getAveragePositionFromLabels(r), l = new ft(\n i.label.world,\n this.createClusterElement(this._clusterKey.toString())\n ), { element: u } = l.three;\n u.textContent = r.length.toString(), l.three.position.copy(o), this.clusterLabels.add({\n key: this._clusterKey.toString(),\n markerKeys: r,\n label: l\n }), this._clusterKey++;\n }\n }\n this.removeMergeMarkers(e);\n }\n }\n getWorldEvent(e) {\n if (!this._worldEvents.has(e.uuid)) {\n const n = () => {\n this.cluster(e);\n };\n this._worldEvents.set(e.uuid, n);\n }\n return this._worldEvents.get(e.uuid);\n }\n resetMarkers() {\n for (const [e, n] of this.list)\n for (const [s, i] of n)\n i.merged = !1;\n for (const e of this.clusterLabels)\n e.label.dispose();\n this.clusterLabels.clear(), this._clusterKey = 0;\n }\n removeMergeMarkers(e) {\n const n = this.list.get(e.uuid);\n if (n) {\n for (const [s, i] of n)\n i.merged ? i.label.dispose() : i.label.world.scene.three.add(i.label.three);\n for (const s of this.clusterLabels)\n if (s.markerKeys.length === 1) {\n for (const [i, r] of this.list) {\n const o = r.get(s.markerKeys[0]);\n if (!o)\n continue;\n o.label.world.scene.three.add(o.label.three), o.merged = !1;\n }\n s.label.dispose(), this.clusterLabels.delete(s);\n }\n }\n }\n getAveragePositionFromLabels(e) {\n const n = e.map((s) => {\n for (const [i, r] of this.list) {\n const o = r.get(s);\n if (o)\n return o.label.three.position;\n }\n return new w.Vector3();\n });\n return n.reduce((s, i) => s.add(i), new w.Vector3()).divideScalar(n.length);\n }\n createClusterElement(e) {\n const n = document.createElement(\"div\");\n return n.textContent = e, n.style.color = \"#000000\", n.style.background = \"#FFFFFF\", n.style.fontSize = \"1.2rem\", n.style.fontWeight = \"500\", n.style.pointerEvents = \"auto\", n.style.borderRadius = \"50%\", n.style.padding = \"5px 11px\", n.style.textAlign = \"center\", n.style.cursor = \"pointer\", n.addEventListener(\"pointerdown\", () => {\n this.navigateToCluster(e);\n }), n.addEventListener(\"pointerover\", () => {\n n.style.background = \"#BCF124\";\n }), n.addEventListener(\"pointerout\", () => {\n n.style.background = \"#FFFFFF\";\n }), n;\n }\n getScreenPosition(e) {\n const n = new w.Vector3();\n if (!e.world.renderer)\n throw new Error(\"Renderer not found!\");\n const s = e.three.position.clone();\n s.project(e.world.camera.three);\n const i = e.world.renderer.getSize();\n return n.x = s.x * i.x / 2 + i.x / 2, n.y = -(s.y * i.y / 2) + i.y / 2, n;\n }\n distance(e, n) {\n const s = this.getScreenPosition(e), i = this.getScreenPosition(n), r = s.x - i.x, o = s.y - i.y, l = Math.sqrt(r * r + o * o) * 0.5;\n return l === 0 ? this.threshold + 1 : l;\n }\n navigateToCluster(e) {\n const n = [], s = Array.from(this.clusterLabels).find(\n (m) => m.key === e\n );\n if (!s)\n return;\n const i = s.label.world.camera;\n if (!i.hasCameraControls()) {\n console.warn(\"Zoom to clusters only supported with Camera Controls!\");\n return;\n }\n for (const m of s.markerKeys)\n for (const [f, g] of this.list) {\n const v = g.get(m);\n if (v) {\n const { x: y, y: x, z: A } = v.label.three.position;\n n.push(y, x, A);\n }\n }\n s.label.dispose(), this.clusterLabels.delete(s);\n const r = new w.BufferGeometry(), o = new Float32Array(n), l = new w.BufferAttribute(o, 3);\n r.setAttribute(\"position\", l);\n const u = new w.Mesh(r);\n u.geometry.computeBoundingSphere(), u.geometry.boundingSphere && i.controls.fitToSphere(u, !0), r.dispose(), u.clear(), n.length = 0;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Mr, \"uuid\", \"4079eb91-79b0-4ede-bcf2-15b837129236\");\nlet nn = Mr;\nvar uc = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Ih(h) {\n return h && h.__esModule && Object.prototype.hasOwnProperty.call(h, \"default\") ? h.default : h;\n}\nvar Ua = { exports: {} };\nUa.exports = Zr;\nUa.exports.default = Zr;\nfunction Zr(h, t, e) {\n e = e || 2;\n var n = t && t.length, s = n ? t[0] * e : h.length, i = yh(h, 0, s, e, !0), r = [];\n if (!i || i.next === i.prev)\n return r;\n var o, l, u, d, m, f, g;\n if (n && (i = Gf(h, t, i, e)), h.length > 80 * e) {\n o = u = h[0], l = d = h[1];\n for (var v = e; v < s; v += e)\n m = h[v], f = h[v + 1], m < o && (o = m), f < l && (l = f), m > u && (u = m), f > d && (d = f);\n g = Math.max(u - o, d - l), g = g !== 0 ? 32767 / g : 0;\n }\n return ci(i, r, e, o, l, g, 0), r;\n}\nfunction yh(h, t, e, n, s) {\n var i, r;\n if (s === xa(h, t, e, n) > 0)\n for (i = t; i < e; i += n)\n r = dc(i, h[i], h[i + 1], r);\n else\n for (i = e - n; i >= t; i -= n)\n r = dc(i, h[i], h[i + 1], r);\n return r && Qr(r, r.next) && (ui(r), r = r.next), r;\n}\nfunction zn(h, t) {\n if (!h)\n return h;\n t || (t = h);\n var e = h, n;\n do\n if (n = !1, !e.steiner && (Qr(e, e.next) || We(e.prev, e, e.next) === 0)) {\n if (ui(e), e = t = e.prev, e === e.next)\n break;\n n = !0;\n } else\n e = e.next;\n while (n || e !== t);\n return t;\n}\nfunction ci(h, t, e, n, s, i, r) {\n if (h) {\n !r && i && jf(h, n, s, i);\n for (var o = h, l, u; h.prev !== h.next; ) {\n if (l = h.prev, u = h.next, i ? kf(h, n, s, i) : Bf(h)) {\n t.push(l.i / e | 0), t.push(h.i / e | 0), t.push(u.i / e | 0), ui(h), h = u.next, o = u.next;\n continue;\n }\n if (h = u, h === o) {\n r ? r === 1 ? (h = zf(zn(h), t, e), ci(h, t, e, n, s, i, 2)) : r === 2 && Vf(h, t, e, n, s, i) : ci(zn(h), t, e, n, s, i, 1);\n break;\n }\n }\n }\n}\nfunction Bf(h) {\n var t = h.prev, e = h, n = h.next;\n if (We(t, e, n) >= 0)\n return !1;\n for (var s = t.x, i = e.x, r = n.x, o = t.y, l = e.y, u = n.y, d = s < i ? s < r ? s : r : i < r ? i : r, m = o < l ? o < u ? o : u : l < u ? l : u, f = s > i ? s > r ? s : r : i > r ? i : r, g = o > l ? o > u ? o : u : l > u ? l : u, v = n.next; v !== t; ) {\n if (v.x >= d && v.x <= f && v.y >= m && v.y <= g && ps(s, o, i, l, r, u, v.x, v.y) && We(v.prev, v, v.next) >= 0)\n return !1;\n v = v.next;\n }\n return !0;\n}\nfunction kf(h, t, e, n) {\n var s = h.prev, i = h, r = h.next;\n if (We(s, i, r) >= 0)\n return !1;\n for (var o = s.x, l = i.x, u = r.x, d = s.y, m = i.y, f = r.y, g = o < l ? o < u ? o : u : l < u ? l : u, v = d < m ? d < f ? d : f : m < f ? m : f, y = o > l ? o > u ? o : u : l > u ? l : u, x = d > m ? d > f ? d : f : m > f ? m : f, A = Ta(g, v, t, e, n), F = Ta(y, x, t, e, n), P = h.prevZ, C = h.nextZ; P && P.z >= A && C && C.z <= F; ) {\n if (P.x >= g && P.x <= y && P.y >= v && P.y <= x && P !== s && P !== r && ps(o, d, l, m, u, f, P.x, P.y) && We(P.prev, P, P.next) >= 0 || (P = P.prevZ, C.x >= g && C.x <= y && C.y >= v && C.y <= x && C !== s && C !== r && ps(o, d, l, m, u, f, C.x, C.y) && We(C.prev, C, C.next) >= 0))\n return !1;\n C = C.nextZ;\n }\n for (; P && P.z >= A; ) {\n if (P.x >= g && P.x <= y && P.y >= v && P.y <= x && P !== s && P !== r && ps(o, d, l, m, u, f, P.x, P.y) && We(P.prev, P, P.next) >= 0)\n return !1;\n P = P.prevZ;\n }\n for (; C && C.z <= F; ) {\n if (C.x >= g && C.x <= y && C.y >= v && C.y <= x && C !== s && C !== r && ps(o, d, l, m, u, f, C.x, C.y) && We(C.prev, C, C.next) >= 0)\n return !1;\n C = C.nextZ;\n }\n return !0;\n}\nfunction zf(h, t, e) {\n var n = h;\n do {\n var s = n.prev, i = n.next.next;\n !Qr(s, i) && wh(s, n, n.next, i) && hi(s, i) && hi(i, s) && (t.push(s.i / e | 0), t.push(n.i / e | 0), t.push(i.i / e | 0), ui(n), ui(n.next), n = h = i), n = n.next;\n } while (n !== h);\n return zn(n);\n}\nfunction Vf(h, t, e, n, s, i) {\n var r = h;\n do {\n for (var o = r.next.next; o !== r.prev; ) {\n if (r.i !== o.i && Qf(r, o)) {\n var l = Ch(r, o);\n r = zn(r, r.next), l = zn(l, l.next), ci(r, t, e, n, s, i, 0), ci(l, t, e, n, s, i, 0);\n return;\n }\n o = o.next;\n }\n r = r.next;\n } while (r !== h);\n}\nfunction Gf(h, t, e, n) {\n var s = [], i, r, o, l, u;\n for (i = 0, r = t.length; i < r; i++)\n o = t[i] * n, l = i < r - 1 ? t[i + 1] * n : h.length, u = yh(h, o, l, n, !1), u === u.next && (u.steiner = !0), s.push(Zf(u));\n for (s.sort(Yf), i = 0; i < s.length; i++)\n e = Hf(s[i], e);\n return e;\n}\nfunction Yf(h, t) {\n return h.x - t.x;\n}\nfunction Hf(h, t) {\n var e = Wf(h, t);\n if (!e)\n return t;\n var n = Ch(e, h);\n return zn(n, n.next), zn(e, e.next);\n}\nfunction Wf(h, t) {\n var e = t, n = h.x, s = h.y, i = -1 / 0, r;\n do {\n if (s <= e.y && s >= e.next.y && e.next.y !== e.y) {\n var o = e.x + (s - e.y) * (e.next.x - e.x) / (e.next.y - e.y);\n if (o <= n && o > i && (i = o, r = e.x < e.next.x ? e : e.next, o === n))\n return r;\n }\n e = e.next;\n } while (e !== t);\n if (!r)\n return null;\n var l = r, u = r.x, d = r.y, m = 1 / 0, f;\n e = r;\n do\n n >= e.x && e.x >= u && n !== e.x && ps(s < d ? n : i, s, u, d, s < d ? i : n, s, e.x, e.y) && (f = Math.abs(s - e.y) / (n - e.x), hi(e, h) && (f < m || f === m && (e.x > r.x || e.x === r.x && Kf(r, e))) && (r = e, m = f)), e = e.next;\n while (e !== l);\n return r;\n}\nfunction Kf(h, t) {\n return We(h.prev, h, t.prev) < 0 && We(t.next, h, h.next) < 0;\n}\nfunction jf(h, t, e, n) {\n var s = h;\n do\n s.z === 0 && (s.z = Ta(s.x, s.y, t, e, n)), s.prevZ = s.prev, s.nextZ = s.next, s = s.next;\n while (s !== h);\n s.prevZ.nextZ = null, s.prevZ = null, Xf(s);\n}\nfunction Xf(h) {\n var t, e, n, s, i, r, o, l, u = 1;\n do {\n for (e = h, h = null, i = null, r = 0; e; ) {\n for (r++, n = e, o = 0, t = 0; t < u && (o++, n = n.nextZ, !!n); t++)\n ;\n for (l = u; o > 0 || l > 0 && n; )\n o !== 0 && (l === 0 || !n || e.z <= n.z) ? (s = e, e = e.nextZ, o--) : (s = n, n = n.nextZ, l--), i ? i.nextZ = s : h = s, s.prevZ = i, i = s;\n e = n;\n }\n i.nextZ = null, u *= 2;\n } while (r > 1);\n return h;\n}\nfunction Ta(h, t, e, n, s) {\n return h = (h - e) * s | 0, t = (t - n) * s | 0, h = (h | h << 8) & 16711935, h = (h | h << 4) & 252645135, h = (h | h << 2) & 858993459, h = (h | h << 1) & 1431655765, t = (t | t << 8) & 16711935, t = (t | t << 4) & 252645135, t = (t | t << 2) & 858993459, t = (t | t << 1) & 1431655765, h | t << 1;\n}\nfunction Zf(h) {\n var t = h, e = h;\n do\n (t.x < e.x || t.x === e.x && t.y < e.y) && (e = t), t = t.next;\n while (t !== h);\n return e;\n}\nfunction ps(h, t, e, n, s, i, r, o) {\n return (s - r) * (t - o) >= (h - r) * (i - o) && (h - r) * (n - o) >= (e - r) * (t - o) && (e - r) * (i - o) >= (s - r) * (n - o);\n}\nfunction Qf(h, t) {\n return h.next.i !== t.i && h.prev.i !== t.i && !qf(h, t) && // dones't intersect other edges\n (hi(h, t) && hi(t, h) && Jf(h, t) && // locally visible\n (We(h.prev, h, t.prev) || We(h, t.prev, t)) || // does not create opposite-facing sectors\n Qr(h, t) && We(h.prev, h, h.next) > 0 && We(t.prev, t, t.next) > 0);\n}\nfunction We(h, t, e) {\n return (t.y - h.y) * (e.x - t.x) - (t.x - h.x) * (e.y - t.y);\n}\nfunction Qr(h, t) {\n return h.x === t.x && h.y === t.y;\n}\nfunction wh(h, t, e, n) {\n var s = gr(We(h, t, e)), i = gr(We(h, t, n)), r = gr(We(e, n, h)), o = gr(We(e, n, t));\n return !!(s !== i && r !== o || s === 0 && mr(h, e, t) || i === 0 && mr(h, n, t) || r === 0 && mr(e, h, n) || o === 0 && mr(e, t, n));\n}\nfunction mr(h, t, e) {\n return t.x <= Math.max(h.x, e.x) && t.x >= Math.min(h.x, e.x) && t.y <= Math.max(h.y, e.y) && t.y >= Math.min(h.y, e.y);\n}\nfunction gr(h) {\n return h > 0 ? 1 : h < 0 ? -1 : 0;\n}\nfunction qf(h, t) {\n var e = h;\n do {\n if (e.i !== h.i && e.next.i !== h.i && e.i !== t.i && e.next.i !== t.i && wh(e, e.next, h, t))\n return !0;\n e = e.next;\n } while (e !== h);\n return !1;\n}\nfunction hi(h, t) {\n return We(h.prev, h, h.next) < 0 ? We(h, t, h.next) >= 0 && We(h, h.prev, t) >= 0 : We(h, t, h.prev) < 0 || We(h, h.next, t) < 0;\n}\nfunction Jf(h, t) {\n var e = h, n = !1, s = (h.x + t.x) / 2, i = (h.y + t.y) / 2;\n do\n e.y > i != e.next.y > i && e.next.y !== e.y && s < (e.next.x - e.x) * (i - e.y) / (e.next.y - e.y) + e.x && (n = !n), e = e.next;\n while (e !== h);\n return n;\n}\nfunction Ch(h, t) {\n var e = new ba(h.i, h.x, h.y), n = new ba(t.i, t.x, t.y), s = h.next, i = t.prev;\n return h.next = t, t.prev = h, e.next = s, s.prev = e, n.next = e, e.prev = n, i.next = n, n.prev = i, n;\n}\nfunction dc(h, t, e, n) {\n var s = new ba(h, t, e);\n return n ? (s.next = n.next, s.prev = n, n.next.prev = s, n.next = s) : (s.prev = s, s.next = s), s;\n}\nfunction ui(h) {\n h.next.prev = h.prev, h.prev.next = h.next, h.prevZ && (h.prevZ.nextZ = h.nextZ), h.nextZ && (h.nextZ.prevZ = h.prevZ);\n}\nfunction ba(h, t, e) {\n this.i = h, this.x = t, this.y = e, this.prev = null, this.next = null, this.z = 0, this.prevZ = null, this.nextZ = null, this.steiner = !1;\n}\nZr.deviation = function(h, t, e, n) {\n var s = t && t.length, i = s ? t[0] * e : h.length, r = Math.abs(xa(h, 0, i, e));\n if (s)\n for (var o = 0, l = t.length; o < l; o++) {\n var u = t[o] * e, d = o < l - 1 ? t[o + 1] * e : h.length;\n r -= Math.abs(xa(h, u, d, e));\n }\n var m = 0;\n for (o = 0; o < n.length; o += 3) {\n var f = n[o] * e, g = n[o + 1] * e, v = n[o + 2] * e;\n m += Math.abs(\n (h[f] - h[v]) * (h[g + 1] - h[f + 1]) - (h[f] - h[g]) * (h[v + 1] - h[f + 1])\n );\n }\n return r === 0 && m === 0 ? 0 : Math.abs((m - r) / r);\n};\nfunction xa(h, t, e, n) {\n for (var s = 0, i = t, r = e - n; i < e; i += n)\n s += (h[r] - h[i]) * (h[i + 1] + h[r + 1]), r = i;\n return s;\n}\nZr.flatten = function(h) {\n for (var t = h[0][0].length, e = { vertices: [], holes: [], dimensions: t }, n = 0, s = 0; s < h.length; s++) {\n for (var i = 0; i < h[s].length; i++)\n for (var r = 0; r < t; r++)\n e.vertices.push(h[s][i][r]);\n s > 0 && (n += h[s - 1].length, e.holes.push(n));\n }\n return e;\n};\nvar $f = Ua.exports;\nconst ep = /* @__PURE__ */ Ih($f), tp = {\n name: \"CopyShader\",\n uniforms: {\n tDiffuse: { value: null },\n opacity: { value: 1 }\n },\n vertexShader: (\n /* glsl */\n `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\n\t\t}`\n )\n};\nclass Is {\n constructor() {\n this.isPass = !0, this.enabled = !0, this.needsSwap = !0, this.clear = !1, this.renderToScreen = !1;\n }\n setSize() {\n }\n render() {\n console.error(\"THREE.Pass: .render() must be implemented in derived pass.\");\n }\n dispose() {\n }\n}\nconst np = new Mc(-1, 1, 1, -1, 0, 1);\nclass sp extends xr {\n constructor() {\n super(), this.setAttribute(\"position\", new Es([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute(\"uv\", new Es([0, 2, 0, 0, 2, 0], 2));\n }\n}\nconst ip = new sp();\nclass Th {\n constructor(t) {\n this._mesh = new fe(ip, t);\n }\n dispose() {\n this._mesh.geometry.dispose();\n }\n render(t) {\n t.render(this._mesh, np);\n }\n get material() {\n return this._mesh.material;\n }\n set material(t) {\n this._mesh.material = t;\n }\n}\nclass bh extends Is {\n constructor(t, e) {\n super(), this.textureID = e !== void 0 ? e : \"tDiffuse\", t instanceof jt ? (this.uniforms = t.uniforms, this.material = t) : t && (this.uniforms = Pa.clone(t.uniforms), this.material = new jt({\n name: t.name !== void 0 ? t.name : \"unspecified\",\n defines: Object.assign({}, t.defines),\n uniforms: this.uniforms,\n vertexShader: t.vertexShader,\n fragmentShader: t.fragmentShader\n })), this.fsQuad = new Th(this.material);\n }\n render(t, e, n) {\n this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = n.texture), this.fsQuad.material = this.material, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), this.fsQuad.render(t));\n }\n dispose() {\n this.material.dispose(), this.fsQuad.dispose();\n }\n}\nclass fc extends Is {\n constructor(t, e) {\n super(), this.scene = t, this.camera = e, this.clear = !0, this.needsSwap = !1, this.inverse = !1;\n }\n render(t, e, n) {\n const s = t.getContext(), i = t.state;\n i.buffers.color.setMask(!1), i.buffers.depth.setMask(!1), i.buffers.color.setLocked(!0), i.buffers.depth.setLocked(!0);\n let r, o;\n this.inverse ? (r = 0, o = 1) : (r = 1, o = 0), i.buffers.stencil.setTest(!0), i.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), i.buffers.stencil.setFunc(s.ALWAYS, r, 4294967295), i.buffers.stencil.setClear(o), i.buffers.stencil.setLocked(!0), t.setRenderTarget(n), this.clear && t.clear(), t.render(this.scene, this.camera), t.setRenderTarget(e), this.clear && t.clear(), t.render(this.scene, this.camera), i.buffers.color.setLocked(!1), i.buffers.depth.setLocked(!1), i.buffers.color.setMask(!0), i.buffers.depth.setMask(!0), i.buffers.stencil.setLocked(!1), i.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), i.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), i.buffers.stencil.setLocked(!0);\n }\n}\nclass rp extends Is {\n constructor() {\n super(), this.needsSwap = !1;\n }\n render(t) {\n t.state.buffers.stencil.setLocked(!1), t.state.buffers.stencil.setTest(!1);\n }\n}\nclass op {\n constructor(t, e) {\n if (this.renderer = t, this._pixelRatio = t.getPixelRatio(), e === void 0) {\n const n = t.getSize(new at());\n this._width = n.width, this._height = n.height, e = new yr(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: Oc }), e.texture.name = \"EffectComposer.rt1\";\n } else\n this._width = e.width, this._height = e.height;\n this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.renderTarget2.texture.name = \"EffectComposer.rt2\", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new bh(tp), this.copyPass.material.blending = fu, this.clock = new pu();\n }\n swapBuffers() {\n const t = this.readBuffer;\n this.readBuffer = this.writeBuffer, this.writeBuffer = t;\n }\n addPass(t) {\n this.passes.push(t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n }\n insertPass(t, e) {\n this.passes.splice(e, 0, t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n }\n removePass(t) {\n const e = this.passes.indexOf(t);\n e !== -1 && this.passes.splice(e, 1);\n }\n isLastEnabledPass(t) {\n for (let e = t + 1; e < this.passes.length; e++)\n if (this.passes[e].enabled)\n return !1;\n return !0;\n }\n render(t) {\n t === void 0 && (t = this.clock.getDelta());\n const e = this.renderer.getRenderTarget();\n let n = !1;\n for (let s = 0, i = this.passes.length; s < i; s++) {\n const r = this.passes[s];\n if (r.enabled !== !1) {\n if (r.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), r.render(this.renderer, this.writeBuffer, this.readBuffer, t, n), r.needsSwap) {\n if (n) {\n const o = this.renderer.getContext(), l = this.renderer.state.buffers.stencil;\n l.setFunc(o.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, t), l.setFunc(o.EQUAL, 1, 4294967295);\n }\n this.swapBuffers();\n }\n fc !== void 0 && (r instanceof fc ? n = !0 : r instanceof rp && (n = !1));\n }\n }\n this.renderer.setRenderTarget(e);\n }\n reset(t) {\n if (t === void 0) {\n const e = this.renderer.getSize(new at());\n this._pixelRatio = this.renderer.getPixelRatio(), this._width = e.width, this._height = e.height, t = this.renderTarget1.clone(), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n }\n this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;\n }\n setSize(t, e) {\n this._width = t, this._height = e;\n const n = this._width * this._pixelRatio, s = this._height * this._pixelRatio;\n this.renderTarget1.setSize(n, s), this.renderTarget2.setSize(n, s);\n for (let i = 0; i < this.passes.length; i++)\n this.passes[i].setSize(n, s);\n }\n setPixelRatio(t) {\n this._pixelRatio = t, this.setSize(this._width, this._height);\n }\n dispose() {\n this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.copyPass.dispose();\n }\n}\nclass ap extends Is {\n constructor(t, e, n = null, s = null, i = null) {\n super(), this.scene = t, this.camera = e, this.overrideMaterial = n, this.clearColor = s, this.clearAlpha = i, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new oa();\n }\n render(t, e, n) {\n const s = t.autoClear;\n t.autoClear = !1;\n let i, r;\n this.overrideMaterial !== null && (r = this.scene.overrideMaterial, this.scene.overrideMaterial = this.overrideMaterial), this.clearColor !== null && (t.getClearColor(this._oldClearColor), t.setClearColor(this.clearColor)), this.clearAlpha !== null && (i = t.getClearAlpha(), t.setClearAlpha(this.clearAlpha)), this.clearDepth == !0 && t.clearDepth(), t.setRenderTarget(this.renderToScreen ? null : n), this.clear === !0 && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), t.render(this.scene, this.camera), this.clearColor !== null && t.setClearColor(this._oldClearColor), this.clearAlpha !== null && t.setClearAlpha(i), this.overrideMaterial !== null && (this.scene.overrideMaterial = r), t.autoClear = s;\n }\n}\nconst mi = new xr();\nmi.setAttribute(\"position\", new Yr(new Float32Array([\n -1,\n -1,\n 3,\n -1,\n -1,\n 3\n]), 2));\nmi.setAttribute(\"uv\", new Yr(new Float32Array([\n 0,\n 0,\n 2,\n 0,\n 0,\n 2\n]), 2));\nmi.boundingSphere = new Gr();\nmi.computeBoundingSphere = function() {\n};\nconst lp = new Mc();\nclass Er {\n constructor(t) {\n this._mesh = new fe(mi, t), this._mesh.frustumCulled = !1;\n }\n render(t) {\n t.render(this._mesh, lp);\n }\n get material() {\n return this._mesh.material;\n }\n set material(t) {\n this._mesh.material = t;\n }\n dispose() {\n this._mesh.material.dispose(), this._mesh.geometry.dispose();\n }\n}\nconst cp = {\n uniforms: {\n sceneDiffuse: {\n value: null\n },\n sceneDepth: {\n value: null\n },\n sceneNormal: {\n value: null\n },\n projMat: {\n value: new Ne()\n },\n viewMat: {\n value: new Ne()\n },\n projViewMat: {\n value: new Ne()\n },\n projectionMatrixInv: {\n value: new Ne()\n },\n viewMatrixInv: {\n value: new Ne()\n },\n cameraPos: {\n value: new te()\n },\n resolution: {\n value: new at()\n },\n time: {\n value: 0\n },\n samples: {\n value: []\n },\n samplesR: {\n value: []\n },\n bluenoise: {\n value: null\n },\n distanceFalloff: {\n value: 1\n },\n radius: {\n value: 5\n },\n near: {\n value: 0.1\n },\n far: {\n value: 1e3\n },\n logDepth: {\n value: !1\n },\n ortho: {\n value: !1\n },\n screenSpaceRadius: {\n value: !1\n }\n },\n vertexShader: (\n /* glsl */\n `\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n}`\n ),\n fragmentShader: (\n /* glsl */\n `\n #define SAMPLES 16\n #define FSAMPLES 16.0\nuniform sampler2D sceneDiffuse;\nuniform sampler2D sceneNormal;\nuniform highp sampler2D sceneDepth;\nuniform mat4 projectionMatrixInv;\nuniform mat4 viewMatrixInv;\nuniform mat4 projMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\nuniform vec3 cameraPos;\nuniform vec2 resolution;\nuniform float time;\nuniform vec3[SAMPLES] samples;\nuniform float[SAMPLES] samplesR;\nuniform float radius;\nuniform float distanceFalloff;\nuniform float near;\nuniform float far;\nuniform bool logDepth;\nuniform bool ortho;\nuniform bool screenSpaceRadius;\nuniform sampler2D bluenoise;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);\n }\n\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = viewMatrixInv * projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n return getWorldPosLog(vec3(coord, depth));\n #endif\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewMatrixInv * viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n\n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n\n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n\n vec3 ce = getWorldPos(c0, vUv).xyz;\n\n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n\n return normalize(cross(dpdx, dpdy));\n}\n\nvoid main() {\n vec4 diffuse = texture2D(sceneDiffuse, vUv);\n float depth = texture2D(sceneDepth, vUv).x;\n if (depth == 1.0) {\n gl_FragColor = vec4(vec3(1.0), 1.0);\n return;\n }\n vec3 worldPos = getWorldPos(depth, vUv);\n // vec3 normal = texture2D(sceneNormal, vUv).rgb;//computeNormal(worldPos, vUv);\n #ifdef HALFRES\n vec3 normal = texture2D(sceneNormal, vUv).rgb;\n #else\n vec3 normal = computeNormal(worldPos, vUv);\n #endif\n vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0);\n vec3 randomVec = normalize(noise.rgb * 2.0 - 1.0);\n vec3 tangent = normalize(randomVec - normal * dot(randomVec, normal));\n vec3 bitangent = cross(normal, tangent);\n mat3 tbn = mat3(tangent, bitangent, normal);\n float occluded = 0.0;\n float totalWeight = 0.0;\n /* float radiusScreen = distance(\n worldPos,\n getWorldPos(depth, vUv + \n vec2(48.0, 0.0) / resolution)\n );/*vUv.x < 0.5 ? radius : min(distance(\n worldPos,\n getWorldPos(depth, vUv + \n vec2(100.0, 0.0) / resolution)\n ), radius);\n float distanceFalloffScreen = radiusScreen * 0.2;*/\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n float bias = (0.1 / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse;\n for(float i = 0.0; i < FSAMPLES; i++) {\n vec3 sampleDirection = \n tbn * \n samples[int(i)];\n ;\n float moveAmt = samplesR[int(mod(i + noise.a * FSAMPLES, FSAMPLES))];\n vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection;\n vec4 offset = projViewMat * vec4(samplePos, 1.0);\n offset.xyz /= offset.w;\n offset.xyz = offset.xyz * 0.5 + 0.5;\n float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x;\n /*float distSample = logDepth ? linearize_depth_log(sampleDepth, near, far) \n (ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far));*/\n #ifdef LOGDEPTH\n float distSample = linearize_depth_log(sampleDepth, near, far);\n #else\n float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far);\n #endif\n float distWorld = ortho ? linearize_depth_ortho(offset.z, near, far) : linearize_depth(offset.z, near, far);\n float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld)));\n vec2 diff = gl_FragCoord.xy - ( offset.xy * resolution);\n float weight = dot(sampleDirection, normal);\n occluded += rangeCheck * weight * \n (distSample + bias\n < distWorld ? 1.0 : 0.0) * (\n (dot(\n diff,\n diff\n \n ) < 1.0 || (sampleDepth == depth) || (\n offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0\n ) ? 0.0 : 1.0)\n );\n totalWeight += weight;\n }\n float occ = clamp(1.0 - occluded / totalWeight, 0.0, 1.0);\n gl_FragColor = vec4(0.5 + 0.5 * normal, occ);\n}`\n )\n}, hp = {\n uniforms: {\n sceneDiffuse: {\n value: null\n },\n sceneDepth: {\n value: null\n },\n tDiffuse: {\n value: null\n },\n projMat: {\n value: new Ne()\n },\n viewMat: {\n value: new Ne()\n },\n projectionMatrixInv: {\n value: new Ne()\n },\n viewMatrixInv: {\n value: new Ne()\n },\n cameraPos: {\n value: new te()\n },\n resolution: {\n value: new at()\n },\n color: {\n value: new te(0, 0, 0)\n },\n blueNoise: {\n value: null\n },\n downsampledDepth: {\n value: null\n },\n time: {\n value: 0\n },\n intensity: {\n value: 10\n },\n renderMode: {\n value: 0\n },\n gammaCorrection: {\n value: !1\n },\n logDepth: {\n value: !1\n },\n ortho: {\n value: !1\n },\n near: {\n value: 0.1\n },\n far: {\n value: 1e3\n },\n screenSpaceRadius: {\n value: !1\n },\n radius: {\n value: 0\n },\n distanceFalloff: {\n value: 1\n }\n },\n vertexShader: (\n /* glsl */\n `\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = vec4(position, 1);\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\t\tuniform sampler2D sceneDiffuse;\n uniform sampler2D sceneDepth;\n uniform sampler2D downsampledDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform vec2 resolution;\n uniform vec3 color;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform float intensity;\n uniform float renderMode;\n uniform float near;\n uniform float far;\n uniform bool gammaCorrection;\n uniform bool logDepth;\n uniform bool ortho;\n uniform bool screenSpaceRadius;\n uniform float radius;\n uniform float distanceFalloff;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = viewMatrixInv * projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n // if (logDepth) {\n #ifdef LOGDEPTH\n return getWorldPosLog(vec3(coord, depth));\n #endif\n // }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewMatrixInv * viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n\n #include \n #include \n void main() {\n //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0);\n vec4 sceneTexel = texture2D(sceneDiffuse, vUv);\n\n #ifdef HALFRES \n float depth = texture2D(\n sceneDepth,\n vUv\n ).x;\n vec4 texel;\n if (depth == 1.0) {\n texel = vec4(0.0, 0.0, 0.0, 1.0);\n } else {\n vec3 worldPos = getWorldPos(depth, vUv);\n vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv);\n // vec4 texel = texture2D(tDiffuse, vUv);\n // Find closest depth;\n float totalWeight = 0.0;\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n for(float x = -1.0; x <= 1.0; x++) {\n for(float y = -1.0; y <= 1.0; y++) {\n vec2 offset = vec2(x, y);\n ivec2 p = ivec2(\n (vUv * resolution * 0.5) + offset\n );\n vec2 pUv = vec2(p) / (resolution * 0.5);\n float sampleDepth = texelFetch(downsampledDepth,p, 0).x;\n vec4 sampleInfo = texelFetch(tDiffuse, p, 0);\n vec3 normalSample = sampleInfo.xyz * 2.0 - 1.0;\n vec3 worldPosSample = getWorldPos(sampleDepth, pUv);\n float tangentPlaneDist = abs(dot(worldPos - worldPosSample, normal));\n float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0);\n float weight = rangeCheck;\n totalWeight += weight;\n texel += sampleInfo * weight;\n }\n }\n if (totalWeight == 0.0) {\n texel = texture2D(tDiffuse, vUv);\n } else {\n texel /= totalWeight;\n }\n }\n #else\n vec4 texel = texture2D(tDiffuse, vUv);\n #endif\n\n \n float finalAo = pow(texel.a, intensity);\n if (renderMode == 0.0) {\n gl_FragColor = vec4( mix(sceneTexel.rgb, color * sceneTexel.rgb, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 1.0) {\n gl_FragColor = vec4( mix(vec3(1.0), color * sceneTexel.rgb, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 2.0) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (renderMode == 3.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(sceneTexel.rgb, color * sceneTexel.rgb, 1.0 - finalAo), sceneTexel.a);\n }\n } else if (renderMode == 4.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(vec3(1.0), color * sceneTexel.rgb, 1.0 - finalAo), sceneTexel.a);\n }\n }\n #include \n if (gammaCorrection) {\n gl_FragColor = LinearTosRGB(gl_FragColor);\n }\n }\n `\n )\n}, up = {\n uniforms: {\n sceneDiffuse: {\n value: null\n },\n sceneDepth: {\n value: null\n },\n tDiffuse: {\n value: null\n },\n projMat: {\n value: new Ne()\n },\n viewMat: {\n value: new Ne()\n },\n projectionMatrixInv: {\n value: new Ne()\n },\n viewMatrixInv: {\n value: new Ne()\n },\n cameraPos: {\n value: new te()\n },\n resolution: {\n value: new at()\n },\n time: {\n value: 0\n },\n r: {\n value: 5\n },\n blueNoise: {\n value: null\n },\n radius: {\n value: 12\n },\n worldRadius: {\n value: 5\n },\n index: {\n value: 0\n },\n poissonDisk: {\n value: []\n },\n distanceFalloff: {\n value: 1\n },\n near: {\n value: 0.1\n },\n far: {\n value: 1e3\n },\n logDepth: {\n value: !1\n },\n screenSpaceRadius: {\n value: !1\n }\n },\n vertexShader: (\n /* glsl */\n `\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = vec4(position, 1.0);\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\t\tuniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform vec2 resolution;\n uniform float r;\n uniform float radius;\n uniform float worldRadius;\n uniform float index;\n uniform float near;\n uniform float far;\n uniform float distanceFalloff;\n uniform bool logDepth;\n uniform bool screenSpaceRadius;\n varying vec2 vUv;\n\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n highp float z_n = 2.0 * d - 1.0;\n return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear));\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return linearize_depth(linDepth, nearZ, farZ);\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = viewMatrixInv * projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n return getWorldPosLog(vec3(coord, depth));\n #endif\n \n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewMatrixInv * viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n #include \n #define NUM_SAMPLES 16\n uniform vec2 poissonDisk[NUM_SAMPLES];\n void main() {\n const float pi = 3.14159;\n vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n vec2 uv = vUv;\n vec4 data = texture2D(tDiffuse, vUv);\n float occlusion = data.a;\n float baseOcc = data.a;\n vec3 normal = data.rgb * 2.0 - 1.0;\n float count = 1.0;\n float d = texture2D(sceneDepth, vUv).x;\n vec3 worldPos = getWorldPos(d, vUv);\n float size = radius;\n float angle;\n if (index == 0.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2;\n } else if (index == 1.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2;\n } else if (index == 2.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2;\n } else {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2;\n }\n\n mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(d, vUv +\n vec2(worldRadius, 0.0) / resolution)\n ) : worldRadius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n\n\n for(int i = 0; i < NUM_SAMPLES; i++) {\n vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size;\n vec4 dataSample = texture2D(tDiffuse, uv + offset);\n float occSample = dataSample.a;\n vec3 normalSample = dataSample.rgb * 2.0 - 1.0;\n float dSample = texture2D(sceneDepth, uv + offset).x;\n vec3 worldPosSample = getWorldPos(dSample, uv + offset);\n float tangentPlaneDist = abs(dot(worldPos - worldPosSample, normal));\n float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0) * (1.0 - abs(occSample - baseOcc));\n occlusion += occSample * rangeCheck;\n count += rangeCheck;\n }\n occlusion /= count;\n gl_FragColor = vec4(0.5 + 0.5 * normal, occlusion);\n }\n `\n )\n}, dp = {\n uniforms: {\n sceneDepth: {\n value: null\n },\n resolution: {\n value: new at()\n },\n near: {\n value: 0.1\n },\n far: {\n value: 1e3\n },\n viewMatrixInv: {\n value: new Ne()\n },\n projectionMatrixInv: {\n value: new Ne()\n },\n logDepth: {\n value: !1\n }\n },\n vertexShader: (\n /* glsl */\n `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }`\n ),\n fragmentShader: (\n /* glsl */\n `\n uniform sampler2D sceneDepth;\n uniform vec2 resolution;\n uniform float near;\n uniform float far;\n uniform bool logDepth;\n uniform mat4 viewMatrixInv;\n uniform mat4 projectionMatrixInv;\n varying vec2 vUv;\n layout(location = 1) out vec4 gNormal;\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = viewMatrixInv * projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n if (logDepth) {\n return getWorldPosLog(vec3(coord, depth));\n }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewMatrixInv * viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n void main() {\n vec2 uv = vUv - vec2(0.5) / resolution;\n vec2 pixelSize = vec2(1.0) / resolution;\n vec2[] uvSamples = vec2[4](\n uv,\n uv + vec2(pixelSize.x, 0.0),\n uv + vec2(0.0, pixelSize.y),\n uv + pixelSize\n );\n float depth00 = texture2D(sceneDepth, uvSamples[0]).r;\n float depth10 = texture2D(sceneDepth, uvSamples[1]).r;\n float depth01 = texture2D(sceneDepth, uvSamples[2]).r;\n float depth11 = texture2D(sceneDepth, uvSamples[3]).r;\n float minDepth = min(min(depth00, depth10), min(depth01, depth11));\n float maxDepth = max(max(depth00, depth10), max(depth01, depth11));\n float targetDepth = minDepth;\n // Checkerboard pattern to avoid artifacts\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { \n targetDepth = maxDepth;\n }\n int chosenIndex = 0;\n float[] samples = float[4](depth00, depth10, depth01, depth11);\n for(int i = 0; i < 4; ++i) {\n if (samples[i] == targetDepth) {\n chosenIndex = i;\n break;\n }\n }\n gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0);\n gNormal = vec4(computeNormal(\n getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex]\n ), 0.0);\n /* float[] samples = float[4](depth00, depth10, depth01, depth11);\n float c = 0.25 * (depth00 + depth10 + depth01 + depth11);\n float[] distances = float[4](depth00, depth10, depth01, depth11);\n float maxDistance = max(max(distances[0], distances[1]), max(distances[2], distances[3]));\n\n int remaining[3];\n int rejected[3];\n int i, j, k;\n\n for(i = 0, j = 0, k = 0; i < 4; ++i) {\n if (distances[i] < maxDistance) {\n remaining[j++] = i;\n } else {\n rejected[k++] = i;\n }\n }\n for(;j < 3;++j) {\n remaining[j] = rejected[--k];\n }\n vec3 s = vec3(\n samples[remaining[0]],\n samples[remaining[1]],\n samples[remaining[2]]\n );\n c = (s.x + s.y + s.z) / 3.0;\n\n distances[0] = abs(c - s.x);\n distances[1] = abs(c - s.y);\n distances[2] = abs(c - s.z);\n\n float minDistance = min(min(distances[0], distances[1]), distances[2]);\n\n for(i = 0; i < 3; ++i) {\n if (distances[i] == minDistance) {\n break;\n }\n }*/\n /* gl_FragColor = vec4(samples[remaining[i]], 0.0, 0.0, 0.0);\n gNormal = vec4(computeNormal(\n getWorldPos(samples[remaining[i]], uvSamples[remaining[i]]), uvSamples[remaining[i]]\n ), 0.0);*/\n }`\n )\n};\nvar xh = \"5L7pP4UXrOIr/VZ1G3f6p89FIWU7lqc7J3DPxKjJUXODJoHQzf/aNVM+ABlvhXeBGN7iC0WkmTjEaAqOItBfBdaK5KSGV1ET5SOKl3x9JOX5w2sAl6+6KjDhVUHgbqq7DZ5EeYzbdSNxtrQLW/KkPJoOTG4u5CBUZkCKHniY9l7DUgjuz708zG1HIC8qfohi1vPjPH9Lq47ksjRrjwXD4MlVCjdAqYFGodQ8tRmHkOfq4wVRIAHvoavPHvN1lpk3X4Y1yzAPGe8S9KBs3crc4GwlU1dEOXiWol/mgQqxkNqB1xd04+0Bmpwj0GcCc4NUi+c731FUxjvaexCkCJ0qhrJJ++htWqetNC4NewClu8aFRSwrqiJEGe+qtTg4CYCHaF1wJI0sy/ZBQAI0qAMyBvVjWZlv2pdkCaro9eWDLK5I4mbb8E4d7hZr9dDJiTJm6Bmb5S+2F7yal/JPdeLUfwq7jmVLaQfhv4tWMJAt7V4sG9LuAv2oPJgSj1nnlBvPibfHM2TrlWHwGCLGxW/5Jm2TotaDL+pHDM5pn1r0UuTZ24N8S5k68bLHW9tfD+2k4zGev23ExJb4YTRKWrj82N5LjJ26lj1BkGZ0CsXLGGELoPaYQomjTqPxYqhfwOwDliNGVqux9ffuybqOKgsbB51B1GbZfG8vHDBE2JQGib1mnCmWOWAMJcHN0cKeDHYTflbDTVXajtr68mwfRje6WueQ/6yWqmZMLWNH7P27zGFhMFqaqfg11Q88g/9UA/FROe9yfq0yOO0pnNAxvepFy2BpEbcgG+mCyjCC01JWlOZlIPdf1TtlyOt7L94ToYGCukoFt4OqwOrofamjECpSgKLLmrRM+sNRAw12eaqk8KtdFk7pn2IcDQiPXCh16t1a+psi+w9towHTKPyQM0StKr61b2BnN1HU+aezFNBLfHTiXwhGTbdxLLmrsAGIVSiNAeCGE8GlB0iOv2v78kP0CTmAPUEqnHYRSDlP+L6m/rYjEK6Q85GRDJi2W20/7NLPpSOaMR++IFvpkcwRuc59j8hh9tYlc1xjdt2jmp9KJczB7U9P43inuxLOv11P5/HYH5d6gLB0CsbGC8APjh+EcCP0zFWqlaACZweLhVfv3yiyd8R3bdVg8sRKsxPvhDaPpiFp9+MN+0Ua0bsPr+lhxfZhMhlevkLbR4ZvcSRP6ApQLy3+eMh9ehCB3z5DVAaN3P6J8pi5Qa88ZQsOuCTWyH6q8yMfBw8y8nm6jaOxJhPH6Hf0I4jmALUBsWKH4gWBnyijHh7z3/1HhQzFLRDRrIQwUtu11yk7U0gDw/FatOIZOJaBx3UqbUxSZ6dboFPm5pAyyXC2wYdSWlpZx/D2C6hDO2sJM4HT9IKWWmDkZIO2si/6BKHruXIEDpfAtz3xDlIdKnnlqnkfCyy6vNOPyuoWsSWBeiN0mcfIrnOtp2j7bxjOkr25skfS/lwOC692cEp7TKSlymbsyzoWg/0AN66SvQYo6BqpNwPpTaUu25zMWlwVUdfu1EEdc0O06TI0JmHk4f6GZQbfOs//OdgtGPO6uLoadJycR8Z80rkd88QoNmimZd8vcpQKScCFkxH1RMTkPlN3K7CL/NSMOiXEvxrn9VyUPFee63uRflgaPMSsafvqMgzTt3T1RaHNLLFatQbD0Vha4YXZ/6Ake7onM65nC9cyLkteYkDfHoJtef7wCrWXTK0+vH38VUBcFJP0+uUXpkiK0gDXNA39HL/qdVcaOA16kd2gzq8aHpNSaKtgMLJC6fdLLS/I/4lUWV2+djY9Rc3QuJOUrlHFQERtXN4xJaAHZERCUQZ9ND2pEtZg8dsnilcnqmqYn3c1sRyK0ziKpHNytEyi2gmzxEFchvT1uBWxZUikkAlWuyqvvhteSG9kFhTLNM97s3X1iS2UbE6cvApgbmeJ/KqtP0NNT3bZiG9TURInCZtVsNZzYus6On0wcdMlVfqo8XLhT5ojaOk4DtCyeoQkBt1mf5luFNaLFjI/1cnPefyCQwcq5ia/4pN4NB+xE/3SEPsliJypS964SI6o5fDVa0IERR8DoeQ+1iyRLU1qGYexB61ph4pkG1rf3c2YD6By1pFCmww9B0r2VjFeaubkIdgWx4RKLQRPLENdGo8ezI5mkNtdCws19aP1uHhenD+HKa8GDeLulb2fiMRhU2xJzzz9e4yOMPvEnGEfbCiQ17nUDpcFDWthr68mhZ4WiHUkRpaVWJNExuULcGkuyVLsQj59pf6OHFR7tofhy9FMrWPCEvX1d5sCVJt8yBFiB6NoOuwMy4wlso9I2G4E5/5B2c6vIZUUY9fFujT3hpkdTuVhbhBwLCtnlIjBpN4cq+waZ0wXSrmebcl+dcrb7sPh9jKxFINkScDTBgjSUfLkC3huJJs/M4M8AOFxbbSIVpBUarYFmLpGsv+V6TJnWNTwI41tubwo7QSI1VOdRKT/Pp8U3oK2ciDbeuWnAGAANvQjGfcewdAdo6H83XzqlK/4yudtFHJSv9Y+qJskwnVToH1I0+tJ3vsLBXtlvMzLIxUj/8LcqZnrNHfVRgabFNXW0qpUvDgxnP3f54KooR3NI+2Q/VHAYFigMkQE5dLH6C6fGs/TKeE6E2jOhZQcP9/rrJjJKcLYdn5cw6XLCUe9F7quk5Yhac+nYL5HOXvp6Q/5qbiQHkuebanX77YSNx34YaWYpcEHuY1u/lEVTCQ7taPaw3oNcn/qJhMzGPZUs3XAq48wj/hCIO2d5aFdfXnS0yg57/jxzDJBwkdOgeVnyyh19Iz1UqiysT4J1eeKwUuWEYln23ydtP7g3R1BnvnxqFPAnOMgOIop2dkXPfUh/9ZKV3ZQbZNactPD4ql5Qg9CxSBnIwzlj/tseQKWRstwNbf17neGwDFFWdm/8f+nDWt/WlKV3MUiAm3ci6xXMDSL5ubPXBg/gKEE7TsZVGUcrIbdXILcMngvGs7unvlPJh6oadeBDqiAviIZ/iyiUMdQZAuf/YBAY0VP1hcgInuWoKbx31AOjyTN2OOHrlthB3ny9JKHOAc8BMvqopikPldcwIQoFxTccKKIeI815GcwaKDLsMbCsxegrzXl8E0bpic/xffU9y1DCgeKZoF2PIY77RIn6kSRdBiGd8NtNwT74dyeFBMkYraPkudN26x9NPuBt4iCOAnBFaNSKVgKiZQruw22kM1fgBKG7cPYAxdHJ8M4V/jzBn2jEJg+jk/jjV4oMmMNOpKB5oVpVh7tK529Z+5vKZ0NSY2A4YdcT0x4BdkoNEDrpsTmekSTjvx9ZBiTHrm9M/n/hGmgpjz4WEjttRfAEy5DYH5vCK/9GuVPa4hoApFaNlrFD/n2PpKOw24iKujKhVIz41p1E0HwsCd/c17OA0H0RjZi1V/rjJLexUzpmXTMIMuzaOBbU4dxvQMgyvxJvR6DyF3BaHkaqT4P3FRYlm+zh8EEGgmkNqD1WRUubDW62VqLoH8UEelIpL7C8CguWWGGCAIDPma9bnh+7IJSt0Cn6ACER2mYk8dLsrN70RUVLiE0ig+08yPY9IOtuqHf/KYsT84BwhMcVq7t8q1WVjpJGNyXdtIPIjhAzabtrX03Itn29QO3TCixE9WpkHIOdAoGvqCrw1D3x9g9Px8u0yZZuulZuGy0veSY34KDSlhsO1zx2ZMrpDBzCHPB4niwApk6NevIvmBxU3+4yaewDvgEQDJ6Of5iRxjAIpp9UO8EzNY4blj4qh8SCSZTqbe/lShE6tNU9Y5IoWHeJxPcHF9KwYQD7lFcIpcscHrcfkHJfL2lL1zczKywEF7BwkjXEirgBcvNWayatqdTVT5oLbzTmED3EOYBSXFyb2VIYk3t0dOZWJdG1nP+W7Qfyeb8MSIyUGKEA57ptPxrPHKYGZPHsuBqQuVSrn0i8KJX+rlzAqo8AawchsJ26FckxTf5+joTcw+2y8c8bushpRYEbgrdr64ltEYPV2AbVgKXV3XACoD1gbs01CExbJALkuItjfYN3+6I8kbiTYmdzBLaNC+xu9z/eXcRQV1Lo8cJoSsKyWJPuTncu5vcmfMUAWmuwhjymK1rhYR8pQMXNQg9X+5ha5fEnap+LhUL1d5SURZz9rGdOWLhrMcMKSaU3LhOQ/6a6qSCwgzQxCW2gFs53fpvfWxhH+xDHdKRV6w29nQ6rNqd9by+zm1OpzYyJwvFyOkrVXQUwt4HaapnweCa7Tj2Mp/tT4YcY3Q/tk1czgkzlV5mpDrdp1spOYB8ionAwxujjdhj5y9qEHu0uc36PAKAYsKLaEoiwPnob0pdluPWdv4sNSlG8GWViI+x/Z4DkW/kSs2iE3ADFjg4TCvgCbX3v0Hz0KZkerrpzEIukAusidDs2g/w0zgmLnZXvVr5kkpwQTLZ0L6uaTHl0LVikIuNIVPmL3fOQJqIdfzymUN0zucIrDintBn6ICl/inj5zteISv5hEMGMqtHc2ghcFJvmH3ZhIZi34vqqTFCb9pltTYz582Y3dwYaHb9khdfve1YryzEwEKbI8qm62qv+NyllC+WxLLAJjz0ZaEF2aTn35qeFmkbP6LDYcbwqWxA0WKsteB7vy8bRHE4r8LhubWDc0pbe90XckSDDAkRej0TQlmWsWwaz18Tx2phykVvwuIRzf4kt9srT8N7gsMjMs0NLAAldabFf2tiMoaaxHcZSX51WPc1BrwApMxih227qTZkcgtkdK1h314XvZKUKh/XysWYnk1ST4kiBI1B9OlfTjB3WHzTAReFLofsGtikwpIXzQBc/gOjz2Thlj36WN0sxyf4RmAFtrYt64fwm+ThjbhlmUTZzebLl4yAkAqzJSfjPBZS2H/IvkkTUdVh0qdB6EuiHEjEil5lk9BTPzxmoW4Jx543hiyy4ASdYA2DNoprsR9iwGFwFG3F2vIROy4L5CZrl230+k733JwboSNBKngsaFPtqo+q3mFFSjC1k0kIAFmKihaYSwaSF7konmYHZWmchuaq15TpneA2ADSRvA07I7US0lTOOfKrgxhzRl0uJihcEZhhYWxObjvNTJ/5sR4Aa5wOQhGClGLb746cJhQ2E6Jie1hbGgWxUH7YSKETptrTeR/xfcMNk2WM12S0XElC9klR8O7jLYekEOZdscP0ypSdoCVZAoK+2ju2PHE869Q9rxCs9DVQco4BriiPbCjN/8tBjsah4IuboR5QbmbyDpcdXVxGMxvWKIjocBuKbjb+B4HvkunbG0wX0IFCjQKoNMFIKcJSJXtkP3EO+J16uh4img0LQlBAOYwBLupu5r1NALMo0g3xkd9b4f7KoCBWHeyk24FmYUCy/PGLv0xErOTyORp8TJ5nnc2k1dOVBTJok7iHye9dwxwRVP3c7eAS8pMmJYHGpzIHz6ii2WJm8HMTPAZdA4q+ugj3PNCL/N45kyglqvQV4f/+ryDDG5RPy5HVoV9FVuJcq2dxF9Y0heVoipV6q1LyfAeuMzbsUV+rsSBmCSV+1CdKlxy0T0Y6Om0X6701URm2Ml6DIQgJ/3KO6kwcMYRrmKsY7TfxWhSXZll+1PfyRXe9HS0t1IKTQMZL7ZqQ8D/o+en57Y9XAQ9C+kZYykNr0xOMxEwu2+Cppm69mQyTm3H7QX6kHvXF201r+KVAf354qypJC5OHSeBU47bM1bTaVmdVEWQ+9CcvvHdu8Ue5UndHM+EeukmR82voQpetZ7WJjyXs+tPS60nk09gymuORoHNtbm0VuvyigiEvOsyHiRBW7V6FyTCppLPEHvesan91SlEh1/QEunq+qgREFXByDwNKcAH5s8/RFg8hP4wcPmFqX0xXGSKY087bqRLsBZe52jThx0XLkhKQUWPvI18WQQS3g2Ra1pzQ1oNFKdfJJjyaH5tJH6w0/upJobwB8KZ5cIs9LnVGxfBaHXBfvLkNpab7dpU6TdcbBIc+A4bqXE/Xt8/xsGQOdoXra4Us5nDAM6v2BNBQaGMmgMfQQV+ikTteSHvyl8wUxULiYRIEKaiDxpBJnyf9OoqQdZVJ8ahqOvuwqq5mnDUAUzUr/Lvs1wLu2F+r4eZMfJPL4gV5mKLkITmozRnTvA7VABaxZmFRtkhvU5iH9RQ1z26ku7aABokvptx7RKZBVL6dveLKOzg0NC7HAxcg5kE1wuyJiEQLOpO0ma3AtWD2Q2Wmn2oPZeDYAwVyEpxuwDy7ivmdUDSL95ol3h2JByTMovOCgxZ1q4E5nwwa7+4WtDAse6bDdr27XgAi5Px3IWbyZ/vRiECKwOMeJSuIl8A4Ds0emI3SgKVVWVO5uyiEUET+ucEq0casA+DQyhzRc8j+Plo0pxKynB/t0uXod1FVV4fX1sC4kDfwFaUDGQ4p9HYgaMqIWX3OF/S8+vcR0JS0bDapWKJwAIIQiRUzvh5YwtzkjccbbrT9Ky/qt5X7MAGA0lzh43mDF9EB6lCGuO/aFCMhdOqNryvd73KdJNy3mxtT8AqgmG4xq7eE1jKu6rV0g8UGyMatzyIMjiOCf4lIJFzAfwDbIfC72TJ/TK+cGsLR8blpjlEILjD8Mxr7IffhbFhgo12CzXRQ2O8JqBJ70+t12385tSmFC8Or+U8svOaoGoojT1/EmjRMT7x2iTUZ7Ny02VGeMZTtGy029tGN1/9k7x3mFu63lYnaWjfJT1m1zpWO3HSXpGkFqVd/m3kDMv4X9rmLOpwEeu8r6TI6C2zUG+MT6v90OU3y5hKqLhpyFLGtkZhDmUg/W1JGSmA8N1TapR4Kny+P6+DuMadZ9+xBbv06nfOjMwkoTsjG0zFmNbvlxEjw+Pl5QYK+V8Qyb+nknZ0Nb/Ofi9+V0eoNtTrtD1/0wzUGGG5u2D/J1ouO/PjXFJVx6LurVnPOyFVbZx7s3ZSjSq+7YN3wzTbFbUvP8GBh7cKieJt56SIowQ2I577+UEXrxUKMFO+XaLLCALuiJWB2vUdpsT+kQ+adoeTfwOulXhd/KZ7ygjj6PhvGT1xzfT7hTwd6dzSB4xV70CesHC0dsg2VyujlMGBKjg5snbrHHX/LNj3SsoLGSX+bZNTDDCNTXh+dCVPlj4K8+hJ/kVddrbtZw26Hx5qYiv3oNNg5blHRSPtmojhZmBQAz8sLC9nAuWNSz1dIofFtlryEKklbdkhBCcx5dhj7pinXDNlCeatCeTCEjYCpZ3HRf5QzUcRR1Tdb3gwtYtpPdgMxmWfJGoZSu1EsCJbIhS16Ed97+8br4Ar1mB1GcnZVx/HPtJl4CgbHXrrDPwlE4od8deRQYLt9IlsvCqgesMmLAVxB+igH7WGTcY/e3lLHJ4rkBgh2p1QpUBRb/cSQsJCbosFDkalbJigimldVK7TIHKSq2w8mezku9hgw8fXJxGdXoL1ggma52kXzjP78l0d0zMwtTVlt0FqnRyGLPGEjmICzgSp7XPFlUr7AeMclQ4opqwBFInziM5F8oJJ8qeuckGOnAcZZOLl1+ZhGF17pfIuujipwFJL7ChIIB2vlo0IQZGTJPNa2YjNcGUw+a/gWYLkCp+bOGIYhWr08UIE709ZEHlUoEbumzgpJv1D0+hWYNEpj+laoZIK5weO2DFwLL6UBYNrXTm9YvvxeN9U9oKsB3zKBwzFFwDgid5ESMhy68xBnVa55sCZd+l5AnzT8etYjIwF/BGwEx1jjzFv32bk6EeJulESARh8RZ48o7rKw67UZpudPa15SDnL8AL8xMV2SC0D1P53p190zhCFkMmEiir2olwxcJppl/kLm6/0QSUQLNaxi1AC3Pg1CTosX2YQr73PjEIxIlg4mJ62vP7ZyoHE55B0SX9YrrrCPtNsrJEwtn6KOSt7nLT3n3DLJTPbLulcqQ1kETP6Huts29oP+JLEqRGWgnrqMD+mhCl1XCZifjgQ39AeudE8pyu2DqnYU3PyPbJhStq1HbP+VxgseWL+hQ+4w1okADlA9WqoaRuoS7IY77Cm40cJiE6FLomUMltT+xO3Upcv5dzSh9F57hodSBnMHukcH1kd9tqlpprBQ/Ij9E+wMQXrZG5PlzwYJ6jmRdnQtRj64wC/7vsDaaMFteBOUDR4ebRrNZJHhwlNEK9Bz3k7jqOV5KJpL74p2sQnd7vLE374Jz+G7H3RUbX17SobYOe9wKkL/Ja/zeiKExOBmPo0X29bURQMxJkN4ddbrHnOkn6+M1zTZHo0efsB23WSSsByfmye2ZuTEZ12J3Y8ffT6Fcv8XVfA/k+p+xJGreKHJRVUIBqfEIlRt987/QXkssXuvLkECSpVEBs+gE1meB6Xn1RWISG6sV3+KOVjiE9wGdRHS8rmTERRnk0mDNU/+kOQYN/6jdeq0IHeh9c6xlSNICo9OcX1MmAiEuvGay43xCZgxHeZqD7etZMigoJI5V2q7xDcXcPort7AEjLwWlEf4ouzy2iPa3lxpcJWdIcHjhLZf1zg/Kv3/yN1voOmCLrI1Fe0MuFbB0TFSUt+t4Wqe2Mj1o2KS0TFQPGRlFm26IvVP9OXKIQkjfueRtMPoqLfVgDhplKvWWJA673+52FgEEgm+HwEgzOjaTuBz639XtCTwaQL/DrCeRdXun0VU3HDmNmTkc6YrNR6tTVWnbqHwykSBswchFLnvouR0KRhDhZiTYYYNWdvXzY+61Jz5IBcTJavGXr9BcHdk/3tqaLbwCbfpwjxCFSUs1xfFcRzRfMAl+QYuCpsYGz9H01poc1LyzhXwmODmUSg/xFq/RosgYikz4Om/ni9QCcr28ZPISaKrY7O+CspM/s+sHtnA9o9WgFWhcBX2LDN2/AL5uB6UxL/RaBp7EI+JHGz6MeLfvSNJnBgI9THFdUwmg1AXb9pvd7ccLqRdmcHLRT1I2VuEAghBduBm7pHNrZIjb2UVrijpZPlGL68hr+SDlC31mdis0BjP4aZFEOcw+uB17y5u7WOnho60Vcy7gRr7BZ9z5zY1uIwo+tW1YKpuQpdR0Vi7AxKmaIa4jXTjUh7MRlNM0W/Ut/CSD7atFd4soMsX7QbcrUZZaWuN0KOVCL9E09UcJlX+esWK56mre/s6UO9ks0owQ+foaVopkuKG+HZYbE1L1e0VwY2J53aCpwC77HqtpyNtoIlBVzOPtFvzBpDV9TjiP3CcTTGqLKh+m7urHvtHSB/+cGuRk4SsTma9sPCVJ19UPvaAv5WB8u57lNeUewwKpXmmKm5XZV91+FqCCT6nVrrrOgXfYmGFlVjqsSn3/yufkGIdtmdD0yVBcYFR3hDx43e3E4iuiEtP3Me9gcsBqveQdKojKR//qD2nEDY0IktMgFvH+SqVWi9mAorym92NEGbY8MeDjp553MiTXCRSASPt+Ga5q7pB9vwFQCTpaoevx0yEfrq9rMs3eU6wclBMJ9Ve8m6QuLYZ58J41YG3jW/khW92h6M/vbFIUPuopZ6VVtpciesU74Ef7ic8iSymDohGeUn4ubT0vRsXmbsjaJaYhL8f+8I5EiD5l680MJbxX/4GYrOg4iPQqpKp0qddSu/HKtznHeVyxgTwhfEORMCwnaqetVSzvidaWN9P+fXtGXfEP9cTdwx2gKVfDdICq7hecgRhIs0qlCt6+5pGlCc6kWoplHa/KjP+FJdXBU/IDoKMxRjFhSYkggIkhvRKiN/b2ud8URPF+lB87AGAwyMjr/Wju2Uj5IrppXZWjI3d14BdKE2fhALyQPmHqqA+AXd2LwvRHcBq4mhOQ4oNRWH7wpzc6Pggfcbv9kqhLxrJKEaJqA6Rxi+TDNOJstd5DoRVCDjmVspCVyHJsFEWPg9+NA8l1e4X2PDvOd5MPZAGw6LRhWqeZoSQcPf9/dGJYAyzCmttlRnx0BfrKQ/G9i5DVJft9fuJwMi3OD/0Dv1bRoxcXAyZ0wMJ6rwk9RjRTF4ZK8JviCCNuVt/BqQYiphOzWCpnbwOZt6qXuiAabQWrS4mNXQ7cEErXR/yJcbdFp5nWE1bPBjD0fmG3ovMxmOq5blpcOs0DtNQpci1t+9DKERWAO53IVV/S4yhMklvIp0j0FIQgwjdUptqmoMYGVWSI5YkTKLHZdXRDv9zs+HdFZt1QVcdlGOgATro3fg6ticCrDQKUJC7bYX50wdvetilEwVenHhlr85HMLRLTD6nDXWId4ORLwwe5IXiOhpuZTVTv+xdkTxJofqeCRM/jcZqQlU0gFVTlYlfwMi6HKR2YG4fQ8TOtgR+yV+BMZb6L5OwDc/28/xdfD7GXFaVA2ZSObiIxBwT2Zev637EuvpM6rxcogdM4FJFa0ZhF7nrqtNsqWg5M7hZMORpjd4szf/wS+Ahs1shY54Ct5J1dOBO4sdEtSnRc0P9PhgyOCt6aQW98R22DpAcNTDe72AHK40vutKTPfpokghRPuGvz0dulBPKfC3O4KVDCyWrJGO7Ikdu06A0keKlVfi0tGcpO0NhzXEh75NHyMysAMV19fq7//sPC0For1k2uFEvq8lwrMAfmP7afR69U2RqaILHe7glpc8HmVf87Qb2ohsw+Di9U+ePdHLecS66MhB/0OwdcXR5WBcWTZLGq/kiAaT+bzkjR8GIpWdv6pfIgQ+Q0xdiKvo+gNB7/Nf9knNJGxnh7LeZEFtMn517tNc74PPS0M4K3I6HHZqNPA+VZcBc/g5a2ARyqKrJ4Z3krsuA+VOJJz2KJpBMgCCWFln3u7k6/q3DETAubKG/pt3ObaNT0NI0Qug90L2ip5dHnZJUjPTvK5E96aX/4mRU2u8n8kh6MKbY7ANBro3huF06U+JvfyELQP25oIaj+n0ITQ4KT9rXZD4EtBIOj95fYNldDN3io/VMIvWNj9P/b95WEMq8UAVfG2XG0N6fSYdnBEC7sUEbatbDICH9qA8TTuW9kEt9DlFOZFP7bdfYLa/khSY8W5K/AkIIAPXtMvyVKyESjKx9nfragssxC0jFMVY94d8lOAwRocdS/l/P43cBGa3IqDa0ihGPcmwS8O8Vj16Uy55rOrnN0shhRJZdW8I7F0Q0KeHc35GFo4aJOFc25gNafBu1V/VO0qS4Qkb6wjRrnlepUWjtYyaDABZceValuOMtoDdeIITWKOJiwGPpB12lQgwkmXh9M86podb0D117mNQ8ElluFvbaS8RTKQ6lyj88dUwoJU/ofOeubhoXWBF8eNumkVJu+As3ED/AvLlrV91UowIWI2m8HBG+a3k247ZKAGYsOcWe7fTWqL8eqwM5ZFuoXbeugPKuMOAtOsN+4dSwkhrSAlfGNTzFwEmCNWtzpa9CgPbYNcmoHtO8pj8qMvlGET6nrkJoQ2lp5MEUV1E2A4ZH70JUlCLXvqTIpZlzyxdr5p/GZiD1/BuFOGbyfFzhuxaC/l3lC2jjt6GNRBa06AqqPlYtdA7kiidYa5Qi0/XpXiMDyMXNOj3kmJEaXufW0GO8+DF8OoMULX1vvjCePKNis4AmxQKLCF+cjf/wyilCJvuiyLVPSdsuRTPZ0AhpdDF/1uFmDwG7iP3qYwNsKzqd3sYdnMolCOuQOIHWy1eQpWhuV+jmSeAC5zCc0/KsOIXkZPdiw8vtB33jEBpezpGDBP4JLY2wH1J7Fzp8y8RICqVd25mDT2tDb/L1mh4fv9TOfDH5dTeATqu+diOZi+/sIt18hiTovPsVQVaqXLPRx/4R/uH/86tBMcF+WBkThKLfblcVCIECc8DgNRVX97KdrsCeIK+CvJZMfwrftcDZDZyp7G8HeKl7bPYnTKX88dXAwAyz66O2chkPDHy/2K2XcT/61XnlAKgPwtI8yP9Vu45yh55KHhJu93mL4nfo8szp/IyDjmFHtSMqqoWsj8WaVhbjXgzZxcqZcyOe7pUK6aXF/Y32LnBOt0WN28UmHRiOpL525C63I2JQPX8vvOU0fz2ij74OeJ1Apgu3JRObfdo9xGDpp7cv3TdULEfNS6Gu3EJu7drBsBsogUqUc6wAUW3ux0/1hLVI/JEKJrAGm8g72C2aJSsGAsKFW4CBvBXVlNIKa5r7HvT1BeGYBfxTR1vhNlFFNN8WQYwr39yT/13XzRGiF2IsfE8HcN0+lN1zN/OnzekVBKkFY11GgrK5CLxrE/2HCEMwQb9yOuP2rTXiZzTEETp/ismFGcTWmbM9G1Sn2D/x3G74uWYZY4rgKB2Zo2bTKS6QnM5x1Yee66Y1L7K44AyiY5K2MH5wrTwxMFh+S8LzNQ25z6sunWZyiRwFIIvSnioltUXNiOr+XMZ6O9h9HcHxZJkfF0tUm6QkU7iJ2ozXARitiL86aqVsMOpmvdIBROhUoanPtCjgft8up3hAaKpw9Qs9MzYtBA2ijHXotzarkV3zKEK0dFFQUwT74NgCmGGuSCEDmFCezXPC9BhyGhmzNa6rQeQQz+r9CmGUZjIQEPsHwe86oCOQhWaHERsv5ia9rZvJ//7UXO7B329YUkLLAiqpLRsVV5XpcfdawlJqi/BVcCqO6dr9YJTFFRMVGhfUbB9YWNvYPY6RyaydAFYq1YIBQxuNAGfYWLMAHtt2XRHoOKCLz+qf5HCVBDOPOktQ3SdJBfxUkaiD585bmTzMwU3oeXUHZ55EC99Kz9kk4ZXMIENwVVpqW2JmGIcUiutIMj2KkpjE2QD+dIZUCxcX57kH7hiuUPnKCTdaw4KN95XPeFRvMcvo5L8LexWqvaJPECzwXCs/4XPAlSMpWUzBBjK3pEnkbueMkMJQrYcnXf7PjbAoJra1VLX4YuscQLpaeYWbT+h24hCFrfcHjxxx6WTSe4AGY/KHRZCQKqTuFWt0D8RmGWmvXSdg1ptIefYPshuIVZT7CV4Ny67fvjJugy0TNYHqoCO45CB88kxrvIsih19DqjD0UqiJsTFPcGW3P/ULOG3nb8CjpgVTIoa5nO9ZYEX4uEHu8hLXrJPjV1lTQ5xTdZVagg+Wj8V0EE4yPsTc345KM6lVXqLiHtm+G6edC4GVEiPgd98g+twSYm18gCsPnjqlLcFm9e72CLJbYD+ocIZOxuVjrX6IKh9fh7WqdIZ66x9PWkDGOVVGkx7jM76Ywe16DX9ng205kg5eq+R2q2MguTJxYv/wWHliD9mOYpzZKNXYC3Wr4iBGkm54hBwkPzFhiX/VBHdVH/KJ1ZIMOHxIN6arKdxrm6EBsgwDt0mPe0MX1HRUMq8ctcmysU6xX0bzM1J07kAvq33jw1q0Pq2cyMWme8F7aVkfhzZEFdyi8fVBQav0YZqvAjZ83WKH726rBx5Bn7GHFthR6H4lFsltu+jWmsAibJ3kpWMG/QbncU7n9skIBL0MuXXtj9sJg+4Dl0XhKJ1LcrMydaIgyrgZgScP4k8YQvcsBmD26X1iYXKLzMYfZn2IfRjznsrJ1e5cnl/3a5xiNoI6n1x1U36FWckJbyx+hiSZg0QqAqeeSvzFYMlZ2REnO/a6yoQhu7PdHMYEPFIvfyGeyCU8e7rpju4DrlOhszj9rOIpNsvCkuD+TLyf5J7D/wsPkBpscFVI1q7oUSU9bN30vH5AqnO7bsf+9rGhtVjOJQ32H9hHSAzR2ape4L0Cz4WxaySm4jvuGXwkFp5NMMLrgZ8LdA+5uLuyxO5SMOmJNDBcbbLefv7z6LyxBwltnfQLd7qqpG1MmNcoLUcx73BkNF/xpdS0cKd6G646ntChXSeTZJJTFYGw39T7fqXDPKoG2cF7/ZcTvME42gXLVjTqzAER1Rt5m7GYsh0X0+XgOeW9MJqE5j/rpGzY6vUu6ACcCTzDMdZHiWELpDnvgE1hmztLcSYz0MtNyUBLqvylUJJnJu79Sku9NMHCTkgqozTnhMFfduV2NLCSYvAI5HUvQp1h/M02vKFD6eosIkGTg6mujUo1W8hy5Knf/erkBQC9LzNqPAYCgR+hczgevta88NNqSlBZryq9QNeUK7RpbvHjoNhUKAAeNYH55LeTW36KyFaXdAkBvyNP9xmRuBokPi2OhqDby6IZ61mwfzG+GmACkS+G80A4WGON5izgJWeeDK91jzusfOi0RmEsVJXwbVUr8u/J2LCQaMnHhi+wJTEPN9tS2b6W4GRGCNmtjAMgPsP357nOeD3H2tcDAPu5xQBKMHf/j4ZhXlkvvy3YmBJsjsd4pSOlfPZCnw5JvzxEXM5JIc+E2mU4CgB0mdJnH4NEsCHYNeVRDXFNuyZUE4nuvaJf1h+11AWLdAZ72D9XNRcxfb2+XHZN/SN48U7yl+sNZhg5gn/PD8wkBtnRj1zBUPIWnoMP6yGUEEzuT+VaX3x2jEIZAZsr3rs9wCfY1Ss0EdIFFzBbyruUup4EPanbSYew5tf16/ZWVup5iykttuqL4xoC/jdZWsAZeSfDSd3fP9kbyAFYXkf0Q2lmxaTkKRZrCo9XCoiUG4yP1URJ5G7+HSOhhJp0Anz0N07QZtyFUye6rcgiOFbtyoO1lkuV0iQ602MTyFK9xLqNHtNy4cJaTO6hjtiwNynVc34ZA6H7k8ai6S6eF6jIG0xJx+JfP97lzuCZr8vU5SIzImaNpiQhyvDbz23//PJcOk7hD4iIvJzfIgOGIR6ZPEJpWHZQoacbF+omeHw8aWHaNOfaIyGeG4lEryMfhtNmWh4RAIpn8dLs7ZE2eTVDwK++xDoSUgh47WDmKlZ/k6OosEUoQjk7Q+Kp7OxwgMFShAv6z4pTW8loVj2+qXLQ0T3hmIue8qHy1o/HXjm089m71t6mrrUyDftqMYtmfvQXKDlZ+K1HR/FkqPSqcjGlcPPIwbMw3wIFKBdVMJ4pFLt+oOIkWZMw8pkoYZ3byw4LmAF+7BdicGXFcb5PWtDw5XNNVc6eB9dv0rAEpgr5J+bLr010bpfGw+IkRoxDbkDFmQdEQUSElP5bViLo1ur/23KN0jEwl+rGC6AUMKxHcv+T9F1Ktpn8jSSrKxJnVkK8UD/tH5DN6nXB8mjUdFU539e9ywLtLYCwmHYVEVqnFmdubduaSd1ivIo4pTsX+mJcOAkrR1D60RIoocCBIdwJhCBM1rOE2XSlPo0U+khALvw+zfxYzwzd4roWlLJkZheFRR8QB8v4USwmAcDswUZ2P/7v7Xa51Fs7orYebYyww4YW5869Y/c6Kq2eTR9HLSjYuChTkXaDygoo8nz/yJ0KzfX8oowaNAwz8HvQdlLU9V9hjqYMURyYvPzZ60G0itmUdZwB+sY6rUkMAZZtWStbDFmnk/dQorhwr3121XQWffrK3as0g29ASwxbsZ3dZAq/96b7/XWckbjmo8+jwdE680DzoEUUivnBgowMuBQxHXoGyp+w/cSGY88rWtmwoyNNIvChs/QsZRnbdV7y8x7t2RkliJV/j8e6qfctrTsMV22zoqgQuTSNFh7U7p/Q49L0kygXNnEYXCBDgi5BeNWxu7VjULcUHI+lGj+OTCEATzWrDmaynq3wT9IAejtvh3esCu6sEu9JOsXxMDpqxm4Tzl+pt2Wa5Bq3TM5TKH4N7KLir8FGIPA569+uJ1VEL3fW8Jyigz/nEUjAVYrdCWq2MnS4hQVgcvXq9aF7Xke/k++rAtIQqckPNwjKrV2t7HCOrA1ps88Y5Rw1Zp+9itnB71j8tNiQc7mV1kUCQXkoi5fOsq1uC6hUPUL7Z69NAM6lg0c/aeiifHoi35v+pVBh7CDM1XfvYpiK5JIbIQFHafmnhHfRTnMagKcjdE7zzgtxkTPKVrObTySTT51g9bB5ro/dzn/sB24fNM2LGJuRQsmC49PLi1jTRfZaLpo8Txxxczij5Pl2vur+S1wQW3W5qyVcIUySZHtFDQHv+EYDoZG1T1J7D91vEIV8dHzUBzW1UyuxRbP+M/CM/vsas6RzmS5traXnQ0Jzv9hYXxKHcs15TQCP744XsLjzFjILYURXFnhM+nnV0iO6nwls9TR4tlz1J9/NvE8FGg5mgpZA4htS05AK0NnU2gxuqf2vjCyWlm3ypKvaX4vxh8Um1MHGB2NTeAFhbDyGm+5w2zqJAWxVlj6dVePb5yR+aMhuz05YubCQJ0BOtoYQ6PoDoW5fCwCtXj5SHvCgL/3B5z2mcXWaRTf8/GsFAfX/ntdWZWFc2xg8MJeenwZ4dZUToce43If4zVb1ex3BMAWGhgkPwR5EgktZhW3Yi+nsnZTUr9FYI160YhAraB0zMV+ouHz6hYm25/ETDM0MTmcypoGgZISSkfwYAQaHGY45yZ91K4A4Mm4fnbMk8GTc4orypT3NLBqAxYdcY/qCH82PpIkmVOEHi1NoYaUymuImLLcib5pmd2MHTB3JR+4rLdRc3gtQ9zeFdciciRiWviu3HkqaLSxJeI2rgc7OKQslItumACQow89elXmi4P3gTZeCauvMH5nF4VrBcLjjwGD+KlKqe/RWIEgT2wGqAgSuL6b+RTTPnQZzxZ5y5HQJkEEKJp5NfoB8hJBM8qn6xbOFtyzBjVBrwSS1zCJR3lEc9ODQ5Wu/xct9/2Q6qLHnmNx6XwZus/i8rEd6UsVxGtoDrm+Br0L5oUojlwdcqyVV4PIMsR60JhZwJtgX7izQWj+GOeF9DA8Wexdmv6DWjgR8LEBp9YuPAM8tJDu3uCumNqHnF2ATYX/tuVO55OgQuiUhmDmJbF9jJyifBRtxOVI9DCNLUY71IXZYTuiYcnILQ/XHuVJ8aHDStL0N+3eYNvXwHi2vEiTPnBqzsC4TsPnFVnYY042j5i7C11AVdBZ1pGSa52jM9dIL119rry0mgGxFzI8xPs+7bmMfYKh37A4HtA081olG1m9S4Zch2hoNCGVvVhd6UL7C2d5hKIBHoB+Uxarq/4aQXhh7IWjSj+ca7Vhqb4+ZwY3nHXh2S9JH4XZxQojbe/eINxYlozTYtT2rpU/xbj+W2hXjFQ+z+dQ8wh9751MP0UpjutQdxz3/FJYAEG5BF400JXWCBs7KrCRf/l+F+d9EuwVk6thOPDB+HNS9iWlLmDgXvY6K0vgiyoeA3An+jWufdAG1suUMBuJT+/w0FNJZbObUT8c5q5WtQxASQF6E+/u8UwVBs1eo8jTamCrcdhZJlADJbqn3crcDHQlBQNGq7btcGKiJXW6q0cn3F0xzf+k1JJS2testB3rx15ZPTDXm8QV5XE2qxBOdM2n6t5YbxyNOmEdsHx+hMp+y9pWkcgw1NikeXuafJvzcjaNwE1Ad6gG79S68aO7jWpKgBETYLmV4ONHhBk7Be8tjf2WVvWMDQvQdOnk448yeMv1tQKU1xev0L171e/qxkMZbmkfKnd29XRCK2hgNNJhwt1qiYWZGKz7Di6K3fGDT7DO2YQ7WU33svE/WKGbWQEvzUV2w+VNYDocI4yxQ6i3i4zU2TjmjCwu5Pk+Ja9HSwLpEoUswq3tFJ1jimthgMXd7KjSl6Qd0K+vxWT8G4/+xITHsWDGSfQTSdFQth5uVVfa8wrkDZHTGVgpJys2ik+3I0dSf6TNo6A/sVptyY/kx1hdAWKPI6t/xj6s+fPMU3hg1vkEB0RRHq/tCy3KUUhzU/d0JKxTyjvUms5iy1GbOFco0NA4t83SK9sBmtLWm4kOLLflyxqgQYP08iyXwYXzKnlQ6VTipuaspSJ9g5H5Lu3eLMnPKbhcwuEg0VZ80ppJWjUnhS3rL35erzysp+fJhxsUs86m28/UwW+IgrS5Y0zWaxlFJ8xML5wk8sg1ragF+eNajyI0Y4mwStxt1RZH2BjaAhvu+SnNNIK88thEgZEsoHv+ii+OMmXJL7dnAiINVDz3tCnqDgpQX9OguNGgZj3axcjq1UgxDw785yNIpqNiLgv57399jVmJ0/RStNswaFIs6FtnkilFZldxj6m562jL4p5g3Y9XCiXRJX6nq2PGJFifFR7EyPG4jDMnBM4t+O8ZpEp3th7TCxEw+ZG4afHl4sNFaqxyLh6+979tt0Aq9BrqI+CS2U7HJoKiGmyVU1lFa3/0O5mNC1bzRgNMy+GXyifLwJP7FwUSUmxmVRpn+gnXWoIuswPutsiciurvN6lsMG7yqEc2Y5ZI3jrPgPq0xEKPZpF7teJa0TQn8BQL4Th+hjv2ByfwKookyXEmj0d1KMcsmfKaeKK3cZZubiYqmSCrnGpYTwgPk5itKucVtjViuswQsDR6TuyGSIHYvlz7wkLg1Rr0K9kV1o8RgABlhbLrN74cVWJW6TnfXN0q12JFMpUbEa8t1+j440FA+17o8qa8PQ9igkctVROVIfB3jU5vtGm5pYYHYSDvU2TEc15pIz19ka1q6c/7WXfF8+POkApdOw7nn7Kqz6V4tru7NXgnA/u0g6+fPRT3hp/QrDQwMsjwNCZxdWrR6pgCBDJNc7/KAlwC0UZ4yWQs0KsuwbbOgcTxQPK54wiXr7s+221hzZ8RVxfoRUKM3e4lpxHC83JllxlrV760tl06f7/65qhE1jhMfivAUXIXfRMe3uY/G2TpWYzDrw5Cm5cS062Bx9lhHq9gtJp8xZwAtSdSuW/Kd7+orEAiswA76N8ezmVGYgNaYlQ/xk930LAWAtKVBC4U6R08L45IohB1kFia7XJs0TcaT2zBZoLFuOGu4iJaoAnfjL3uS6gnRH7G7A+aT6ETlmkYUfgrBuaSLLDJfhPJe01PfN0oqBTeQURasl3N8BZiQSgdr0aDv3hPTiog4NSyfAUyy98WP7dnTDWQTY+Qwzgk1uxwRqHl5MpC/84Cuw1TXfRlgJrwPop10kCHjmffnFdxCe2J3R3J5j+3H/sZn3IUu3Suy+I+dAOMWvzwExNR3RRPVelZAhtarKlXPWNjPRIVP4JsAFSRXs3o/fSYAPaV/zP8q6DltH47/rYhCLdy/LrpOsbaLf09eACcClJosNefetNElkSFSuCgeY7oTAAl+8Y2zOXJb/bgEDpoDXfQqc6lnlBr/WsmVznkBS1M7ufiqpxvKXjwvR4WxLbh5NbMNy8LsnX4UiuAi8XonbSUcVZKQOWBYUecSOMj6jMG8gHu7WNreBHY90lV7FocDprSrSbexkAtMW9KlXcnrOyLnZdodGYdxz8aw71HztIqLhRdCOB6NyzHPoS2hDy6wLk0I5Jr2t+U0A+A7EsgSn/Ih03A5CspHnVF4MOic+Lck3m61Um+GHDEe4DrHBhmgtDlRQl1XJ/V/VumCHtUDDcZCkgjVMBOmVOGYW0Rcdi1ahdjhBcFlfjA+5cRjBop1aNDvdrf7CxkLVgxiCxhRctW8wczM8+kVmIrGtkaHGlr8y2D098HXE23r7fnJFUU68zyeyM265igNOGPzFG0dIgUDWN6S3ZcfMERJdWVvpGhVEHXNLeWqHiTcF3wOt0FbJY4XHEpmkoG9MQPJJ4ueQ01+MB+SR0rCSGzlE8zod19q75LlLWgzogpnJoD4gPxUYcX+Gpc5Ly4nk+Zm8LDXcNR7SNVxLh6NAcx8ekjb/AC7ADlRnfuHaHJaBodZr7RBX9FLTvocY6kY8bavdAkQicE9bbwGLkZu6whTCJ56lOvM39ijehpTOFqR3V53nQx4hfOvwRPU2y2w7UU8yiRbcyaX6jGJ9CRvl9ybV1tebTp5MMuMnwLcx/lven0w9T0atJuiUE2WtYGiVMaP3EchABl5AsyaCpu/BKAWDFvU2vaCL2/fJBKCKLjxG6xzT4Mh4wHhH3/EqsGSoQAHu2wbHmXHj2LvoW19GXDa2oyeKRwGG1PU+S7mE/S+UmjHiDF1oqJ0R5QsdjAZYN1MzpNX5YDqWYfhfdjAXyFQaVyGKkp1oEGTR8MK6jaGfRDFd41u2Ex8ac8jKPYu3pXsk8gu+m9tr1RVzTTuDsACW4S1h32yFHX7qpXSmA0QVEcR8W9j2Juu0pcYqTmdis88VgT3gq7iYue5Hx/3K6hFQa9rZrNSDcjaSQlNn4LSqs20bypnKqpzvnnxjMdz5StbzvoAJKgVZa4DLCVoJW765/KyTF4s4YztmAT1c0pTmKJHTpa106FegDo8p2zD6uOnwpYi0vJlRMDe9wPT6964UfAf6lq3qWypUOx9q6BbKEYt7K3gWMXDNN6wAm1fNnSOnZ4JkbPq7jLQrl0wL1V7QwO/sXneKGfTgUL28I5iPVG9dA2gS7Ki005JUR7Vmw4gX4TJvy1WS74cIXD08LCF5obqcZwamuoZ+FPMJEck0TLHjyH1baPr55/Cy0ptDfRJ7d89pbP48tLMHG5dO11Z8xSSpPGQSgXDWmpsNsmm+MvxJjMCi7OFDHxxpmTtjgnOCq+c7Fi1DybfhAntviKccz+sj+OPKPYOKeYYPLvq6MpUx/chSvBccg9dfbeqetQNCs3eiCFZTU1mrDido/mib64STMgsa+IKLk9PyxGGbVSQB9GsHto6f5prAFIbRDSItDedz3t5+Nn69FFS0nEfmkF7hKBmNVce5xv65USKGBoHYxJyutSGnRIq7vMDsAMvirOEJOzNi5Kt7fypuSU2c2Npo6UH5jMOkePH0TwgpammO3Fb2FX6f11309z/mqRmQ949HHRj/wMzKNx95M9pwKf+UQkMEwisL3YVotvHhCv4y00Ui0Ql8dR7tGqFcSdYtmoAOuAodkBNs4PZSjAAF7S/szwLddFMdCyB/dWPgFUiUE+WmUUCjYrKfJLQfNNpQ4NKaF57w7Kp/isZVwQPUJyjJavN3fQNKU+F74jVBJYQEcEdw0Niinyea0l9PJ1/AcTm/LI91RZjDvLI81pnat7RKU2P4/TnIAa3hIEfeg4iGQ+wTDlURK6YjNpN5s5VkQW9w7sDYKU4XmjyZsCQLxztqd4SDQvLyuPDhURAJXKfR1c7tq3mRu4usFHPqz7HgS0X7kNxiWWR3fb3uVwbgKpmgLYkwKrXKt09COw4MjhxeZlDXKy7nNLHXAIKPtferWQnZLboonQXK81x+BB3oUidBehK1swSXxVbscj/LsfONu/xYEXYPM3aMqIYd+2hAnFvDHbdrJLhGEd3sG5PyxqhzejhQJo9wauFK3xmPYqxB99J8zYU9/yzrEZNzzbvPoR9vUlE3Ha4zspVDzHHffPZMJ1VLZkKqGCf8ZqupqMt6T+NRPfmPm2xeDgvzMrRJEL4/zzlu7Z35smvzbgeC25VP2CUrZkRxEi15A0769ojdO1d7C9OG+swj1ROMM3NgKdeBADoRMeJkRZcZ1FbQu6C0BS9NNSaoxtFzYT4lX7+PQ7BKa84yrN+ujVVef+SgnEie1G0N+eOtbZF/UU+wkeerWjloYqFiqo0vBnmxh+TwNMo9I/8lfU2XTCT0K4OoWE08ipyNHjxHvfhY6qa3x4HzdQ8+jkiO5+j91YkihS5memfpFREHP/2veN5XcRue2zCVuAub8V6vDlOvyP+PBm+owyRhMmng5wwGGIXsOkQekXrXpE/6dFjkHwwoFoj5bIFiqp+4wHpSWRbv2xGrRpd2c87FzMP6Hfj/3LWIBqFiNOAxBw+AAP1XqUBszdZhzOSQrQS4Ein4fyV7MaGsB0VsMF4bPb4lx/foTGQRJv45LpoxDd84xCawHaX7jpXUrOdkFxx2oUvY2xqpgIvcVufwd+zAnaaVTnEyDXD7S/o/xrrk4mgTjXhcjj5Rzrbr23NmuZQvpdNzny5MCR9bwvIRIqzOZZLsstZSCDYa56JTvzxgBs20dYTtTUbe21uljlWqGfSh2bYAzOpf6UguK30ZxNXgLHs6Y6urtxFA5iLYvlue5mDONW0MOtQjhqr8fRbCkYneiDkvzHkQVT4F9v9vxh2SIGPBH8bZb8ugo/BSgXojeSdNXbBAIDsB6DUNSXnwlu/bFLaCqSbvu4+YLplwO1JbtrMf9ZUfsxerAZjB7E/zl3qwgK27FswemUmSM4i37YAVhQSocuV8AcDI/CSeCDNPavESshDQ8A/lVIrAJAMdP/rHXouiNU8RL/TIvfQiuZEb6dkIKMGGOW5kT8vO8pivWnT4v7qmwuJo52AS1r/RyQ2g/7c9ZJgmMIzf0GvJJRfMNu1utRNuLWHOm9JIMcJK3qiDtVpGCDP45W1oTTMUnMC91kYhP0GHjhCW8V38xhjHgFFBfuWMsmSQ9MvNqKXiqtUhDAkIy0PW7YSKaKUv6zctAiIk+Jt17kG6LpNVOeMvJnlVBaJSkKe0HTJJUMvf8R2zna35/yh2wNlWLzIP3BJR5aRNxkV94ICOlycI1/JYRZtzvWMNoIpQrdNvyBuBydhSwhRwPo079Xk/XQZpbhzN/KK4NbdJQV0JIMP+Y5UBIM3TTYlFGYVjcvA5yVozkimco91Fx/eo+ydgAx1gMezTh+bYxCtXPYkMoPdtaElRusxlmdSV9zgF4Np+iylun3LVxCycAFxGCFsmARf6y4I6zXY0tx81aQyalr3/ih+ZjxGNWdhItgNLdEZ/BOIJpPoAveh2bKbEFxU/M0+4xqDo3Ox8MnNn8Lmv15NJigSvJV+y2W/ZogEXNiv0/nuFzZGr0pKujOShzcdkEVlMw8mNZXZCbtM9V+mfawtLxCTvo+enFWhJcFv8LVTFycDjPGBXRQKNN+z68HJtYdpH++g5WdhQpCO+DE7Qdu6TmZgtetrpU2ZlgpslOx+4hb3aXaqbdc92LCh51er8vm1GQ9uWD9+fAPRV50ixhgc5zi2Jsg1xQVxzlaELRWJ5biyF+eCwNV0oFnTbBHr3Glm9qlGVOpoOsQC8hlNG88fxeAekkCGnHFn6i5WzyO7ShDYbZ2KM4eqndyy01v+6TFhmkxgc0dndt7EzRCcEfBxSaWZwcev6MDZcuvSZQ9CNSd4Tx25TY6UAbrhikuP1vNFfPdZhCG1pe6vx4D6Ez3zIb0zDa42FPpxWvIpEeXb7YTcfZOahSpSYaWLH/vq0F3U1KO7ZxliZpoMBBYJs91IE0bOkrPNQ/USYY0qKCO3CU+AFbOYxzKWBkIglrX34377BZ18MKQCv1KWfIHEeguSpvrNH5RQOD4LeiH2gdx1MOAKphlL41F4RpxaU4dy8xERFgqoyICQq9XmQ8WJSokwqvhQM0fLtsvyCO2PAkJ3BZg5IqoR5q/GdTLgOWPFR53Nqw9Ma5vBzZcQ4+iZgetmKg5ZIn+/7Jbi+VlViXuD9CaAUtdEmnwWTS7wZWuskVvc/SDaaKV+Jz6HrZTHo3UrAu0IZDBkXWmL+mTTjdTb1A+MdhKkY/hvFNwXj1FzUngsN58u/kTdJ3Xi0hy7efR6faAOi4SKGaiOty8lxDFkiD9wq2GW1EZEsoWGw/WzxXhWDzYY8CC7WuLFHc+x19jhH+FiLXwDIARRtnkJPF2BUPZ9+grZ3tjqAWhhN3h74w5pooRQUNATy05A9HDLnILGSCtfESoSilqtqAIQ/TV2t3KhOc+teDf5t+DqZDdB8Ob9YXyklrSO73pR0QAxPvQj57c6FIR5dOciqeHZ2LRABMROo8Jk8V6JFewCL8TCd/A5MSbXLky1cW7mXobqgeEXdFDoEydKo5oCuyn+2JYI/7pIGFAzErlHZ5hOaiT17HC3zp2HpJwsIAb4/oIoZ8x8ak43Yp83Ermq55Dg8HxKGHXbXs47sh0PzQELTGFsf5eO3lYAuJjMneoYWk8W/3tW2WLntEKBZEW4hOFgo8K58Rj0vk5KLyezu1d8SO/JcuxpOJqFUM2sxBmbQ/9qqwb90R0WulpR/Ju84bQ5/fTh7po/pbBb7AQaYNdK3fatD3K4TLHAaa66MQzp/+ZGyCjzo5OXRzJ8UHyg/YpNHvvlOpwQIOjakpLHwGV4WsLDPjEIqG23ily3LL0dlkYQxj3Xx0ApCo35zYGoGOtIclYS83MnI5TwVdQ+Hg453WFQN694DaqhGaL/dm0KncXYqXLi5polgT4DOrzD4oSVhrkh8GW2PaXjOFDCLPcn4RQj8dRGIJuV81LxMPZ0UL6zpkaebhbFBxcRJe38UiTbUPDjFWk2jBqzrBvXcKmgdDcmRyJhIpuq+3DQY464AlY42z2EM0yIK0I6b+VgpanMfpdWo7OxKY8RM5tSJv340/qD8SxrYsybMuUkF8fHj7HcvxEPC5YYrH4LW1YKg6QaeFZLvPbrHZHvi4OXLKkN8cGQO8019OKqcv6QnBlj01e7qS5evoGm53rv+VmDxxCXDiOrDg+IaPeMPrn8TJ1oReXYI3yb+4HQbikxP5TQXHk4YXPUv95+KmkxGsRgTwP71YiMpqNXp0loHZeXRp9i3euKrVtxMM0e6XAoACwNtcc6sOuhZVb1htBLudzahrDFt5GkdlwHjZl5y0LbvSHwII+qYeDwRKTTzyXaInHIM+8rc5TrjUlPRVwB5LKFpQnV8e7vLv7T7V/iJTW9h9TnRtNCSGcofBWYm5P7wZcAq3AFamEW/GMbo27ldz0plt5HI53ddWkn9IuCZY+Iy0MATUh3YenRTbVgdLYtu893SuN6EL4e9V4NhlzUjI8nOS6B99ecyC1Ot8sDahQpWHbmt2YvWGyL3S9tEVLKYs+LnghBmmSl2uPWfqPobPwBHNLW21LUjfZb7jfLMTsMp3icGO1npK/rCsUgdBVKVg0Ys+/WKuTmVJoC8Oe5h3PK1TQhbpZ2ytP9nlutQPtLAEt+CVT90DfVkn7lHLOX8AfS6HLzfHeAhu1alnl19RHKV1LI0G7RPzYgVaSpX7th9f06uo2WpxjL86i/2uzK2qj/ClHbGDyQr3F9/axmq4kJ7zZFVXVVwfiFr5bhUGVZeQJHKFAcsnqPKsb8vHyB9SpFpT9U1U7D4aS9vYgqajxhC+hOkolJV2dKAxysCkWBo3SPiPUrSQYZxOWwWCoQzbV0oeaDEcgUtqI3nq9TSmpQ688/+wb26P2CHLY1H7q5lypXSrnwnnztq/jN1o9lyvLmLyGguV0VJnDCREkiUNrZqGG06MsyA+Phd9CuFoM5M1Pyk7S6TJaHdTw0ni3n5ysAup0kyxr65lFc81NcH8xSmpp+iOEtQZrH/y01k1rGMRJAGFhi+nDecpUlnrh+qBOCMZCcSCovOPJrxjZnZJDMLdpMVu+tBSVS1nKxsYjY9Dtq1/++riVfLUVhzofIcIgQQPOqHioELxU3EpCcZMoL9laa5YlOZAMEp5apx7CphrkL+fyKbBAf8ctwVd93FTo7F5Oc/alNsCgK6lHruPROtN2RybiLqx8P5LTUZXU+Aoyz08zYHasR3U8hPDKj+6arWXR9yWdJoMn45prCSURKKy3+JHgvs2Ot6v6GbEtdCumgCttv2VNoU3KOqUwqNIWHqYm4eMijTM9VWB7umEyp7UPOI8fduHJY0W9xSCZdvc2xMjo3Zdu2o/WZKDMOSh9UmLvo45IBppD2dG++HJu8kbfFdlwuIxk2KHhgHQeNKcHhFkYGRzL2VJVMOAb0Co64wvds5CaYl9ZmBm4zuGDeaO2eI1XM4+rD/HmZyRF62SabgAe8TF43VuMutigJJMfbW2UK0azGLFbOfujnHD+GGBYmSmOQbUCOY99HYvswBQA6r9hrc2jtsUUxLVjxnZ4JnIrTwIVdWCTPtpJpvlA7m01/4tbUMyz9mv1jdN1jkiHQCJXXKg8bJ+aqW6rbwbn5yDSHBTcFXIegrhHGAjJOZI1pyP83Z3vMYTAJoo8V9IwyS+U6OVg78+IhSYHDYjRs8FrF8smHQ9h4qAYxp49rRP2d5uxLAuP72GvZaYvfeLOkMrcg0PkPuq7NsXhMFmiZa6PKBH1l+oKHI5DBLdZCvCwTPdXqmnz8gLzVRb/ixLTSdit2nrzt0x+5rDeZT+ac31NKNskQs6noKlQccyD3UxzfVZFmcbpmrfPsZD0Ve34xpKWk/E9Khn4A5yVPVq+dwnv0EyYecPqXGU7R8suTW0A6NJWweLI3iSGDlQXzMYsSWkSMhFTfyA2vTDt/3wXk+mVU6bRNkZvNnyVHYiA4tmnNwdh/RVsk/EgSerfTIf5VBmuAc2IKSeL5Nbrg3acgFj80mI8SWsc3dNAGCBLLMP89gH5UnLTKq78d9SxQH/g7DVnBh/qnBdw5CDrw/uMzcdXSxWqGIFcnQZt/1aOHxUg88MN2w+FPx/V75gy2wzEVe6G51PQIR2tZsxbv62HhgjwtlzrVREw/yzlaAiuXC26cnpvQzWXp2mOgihyPCWqq38nEadX2T7f1Y5zGxEGBaT//IcL/BsquAJX5EDbX8X1p8nLWR2yyjFRvqC/jssoCJBCDJOsZvoBfXqQSEKhNARH1YfueeKBslAwLi24/wAO1BHptlf1kQFNsOPlDvlYednrEp3a4SAz/G7LIVEsZBu0EKWZu/euB/XKdkGonP6t6lgEcCOw8mceuzvEVzyoPnMyzrqoNQXJb9C8ZCXSiedKiCgNwfNkpVlHbUgE2Rb9WFScOeEad+T+jT8XlSc8rcvkIuhAv/gxRu2eb2GonLTyokjcGF1EBpCJbhy2H3lhL0rdZIw1okA5pBg2oRfQceXTPzhuNKorTEF7t1UIgDqIo7/loxyTgbtKu29o9K9KujvCqUGyPY7upcfiZLNBVKh5uXAAZjQjhlhBp0ukmO4Avxu4xAVhCtnsOIA/tAm94U3HEuSr3wq+ZLo8pyoC9EB/q3pOzQRyCTkozmJwo1Ln/2xEbtNnS2S0NUIS3yz3/mBIdxONHxqP9FW+uoGI1F415lI1nZwK0SoPA0+flaokBGEoXgZnO4GOExU7VOjdPns59ekmDxqNhEHeAF5i5N/3W2NC1XGFjTpqLrnCECiwVkOTrLtp2ehUIaejOG6+1336YQSKMSsL4zhUjw6SQKryVRz5Ldn3R5/r8AOi02RJkQXPdvPsl/FMg96E/cJmIFLmEDzr1Gkh9G3zisG4pqM/MV6XIz+CtDUh6hmJB97VzN8jaPSS90vgDjvnaNlKky2/zIhE9ObugwrftI+Oi2a4VVaB/Mwn3VmaWjsU9NOf2usbcN/GLQMjvfeU/YvyEERPKw1leXZWWk1HXzY3P9MUq6MZq1hkEgFzds51mv8mnp1i4pQprPwY0TId1szXwe5TG+R5mMD76nGPQr7/EhQWksjsgGs7Zy5QYvMcGV5tcXJR+6hlHFIAc/M6XjkKYtwm673Bi+K1tNO9i1YBePTur4I+gMsOK7f7980mcJXhgdWdhNzUN2JvFsvXq3zZRG2V30sJtJYxj0aUv1u4/ppVHi1iHnTY3gDHsrQS8YwMX5XwZ2gcFYYe2wd7ZO9swr0gb8zf/fXx8QWKPXcK1UdJk3760B/TMlpWLCbhkqVoSTsOqzgkmFmFteCCTGhNyvFhw1RrTIWzRxq8Tj5FirvKvtkp2GAVhnZ7vnr71pyI0rKwQbVxKZuqM7GAvn2mRBj5p8djlHUsh/r/eBECptpbbjP5nFyuN4mvQLZCaxeTkDUzd/kNGLIzBFv1CElQO+xmf7Dzt1f7GM1Bh+wLDCJZlhcVDXbtPuGssdEie3lZNiWcXMTjZtWAT5MCmpq6JCRuFSHZYGKcSFZ9kOYJfEqLIcWdzpTA+Hmu+ktgSUwXVSwkaa/aHdZXh7IOyrudCBalCZpgXGRNbhN2XpEY60DXXO1Ci5ayZSoxtG0WRCC50+XtgWz7qgX5MRA5S+jzXCYy7O7Nn0ljVxiBxQNCZKZMTqi6mPfy2LZx76uyRUXHjnpJJEimflHDUxyX7fFg7iJvSrsZMH6Uv2xbfQNx5eCbx3oKycUrBY22KPmgfg/w07CDVsw6tb5VxPg5/X38cQtXI47U7MAGGjO28II12T+PjaXHlstPtkUQNn0DKkCYis+kVAkA1wyAJgYKLGnKD3nlVCarYqCkNIZbiVwO2Ydjl7N6iOtvvbAfuq7VKZLo0jEdw1YdsRaHcuJQulgb51JyELzYBkP1hd03IDcZfPg5XmNvYQSOINsCSn3BuLtkCPZRalK7+S97zxvJHiJCZJM9XP785NZ8B8fqDe/Ot0BS3PH1ptErwxBtpgfOj4d/41nrSjJQf9bV1kfdBHJxYbHILxOsWkZvoP/Z4Sl0Yx3bDjTF96xf96+6uIoQ351Ce6DeTwTnkPr20YwATlnhskWIddUohklNITCq/07zkiEc3B58uiBG6d9YAc4h/7s44FN2RG1UuZWeojrOZIhElvDP4KqHcOYbqqS95o7ilQH5ONJfy+aYiB+sPpn35HfHG3duLpNvBjXc+Klf4IKrFHjeVty02xPTNnbdL4gtkqPqMLhSgR/fDXzxJbSScqewiF1wdVoJ/fGL/nGWZfVlDHOQKD+/i/mqwXqvNqxtZeRHwoe/bodk66B9soOnZp36gdzVMRRQsQiBFf+HXjRcrRf9FsGghw3+qoN0JeeMvDJrkSBPsESDai/uVOzn2Ohge+UVdi050fdWpsjP0D/QuTdYs6QyI9xnhU8WT2+KBKzoZ7Bq8fOdKPeLulUhJjT34/EOnUloqus8+pzqNh/UdUOhgTlrbkuTfsaIYDm87u/GNIl3N53uaU8bgaBjpz0jdu1f59K4KFDtwUUeEUoeYx6DEkWKHdi7dtHhQF44lbysk7PqERrsuAQu2D5tDMl7kFoGdI8r/s8rMytJzYBU40wqeFvTl0ZVLdOB6Ya9E/f8VPbGx5MdpYqYMLMyB0QxVdnoJ+tgAQVWfH+jtOHD3PsjuT8dOTSrupuvHWRHQoGI1Qj1Hc6k+Mg84FAZ/gzl3SEzuGWZKFwuo2D3EiG95D2Z1szTqAuFRmT1nEh20tkC4ysmXx6JtN0taK1iRR62s2uNW5rSAvMEJ8yotr3UhJe22brlQn8Gvcq1I0aODaHJucQKVe6SXyfcDWODMw8xf+2C7Zx5a4Qlh7pJs550DictL4OxcDXKvVmLgVWRwb3moxv4kcxzm89EERJXCl7X/BziBkGQWOHPGF+6K5NFJYOFVv4+NyFq+OPMaSWZKoydplufY+CYyL63T8MCMmwqLTmAE8h0prhi174wnx7DHZWYuRJSYZ63uz97AGOzyI3aebclnud77znbZetbWUripe+AadLQeZPtWsF+FNiaXCy/98km137lWewyc7Gamai1Hd3Ls+KMMVh0R3NKTQ08TIClDfMKwUGKy/7YZlJHU3uW60X0r74Afh02v5MJgVOYkjmors6GAaDU7yKHydfkXYd6nEjYc76xws1LDLWCNNKBtUHNyLseOyNDgmHiJ41lXvq638RzDGis8WIniOb/pbTs+HsQVGPi6mxG+CU+oflMR6/qx3pVP+GPgqa0U0lo8MVmI1cBgSnPGgrh+J+m9TVg8nivua0EQP7xai44ruC5gsAVOp9bLsDXfHQujo6IpBmpfbbU8PDavZpTuJtmflVQuOImnRQ5kKoQz2NBFjdiHH3cF9QLgDP5vz/W5trCy22Uk+TCjXjdbCCHB3rJhKYTwiyQUf8xu6yTKtIwrbw4tzFgXDODmWYEnnpDupk3b4AP3qz4AZ2En5wi6aZV287AgCF4vH8TlWLni1E5Hd93vLxSYLBWSuj3eXGFtWyWpBkIeKu+YsBh19VeakA8OePM0ILu6dYYl9DNIK3kU1ybH+A5xYhFI/EqSX3vtNs6V5eQgxYLvu0hYFjiG+n8JzqLQVROiVa8XNQDYJtDAetPFSuEtGI3B8rnbbrNo9TJn/z3lRYq0ecBIe7a03vLESwhKOm1bGTk2kPMv/Sh9wyCOmIore7JhSFT9HIjonBfi+gcdDLfFt7dpShJmW1gkcXmitWwm1cC480CraHm/or2MHphB9Q1bmt/SBXFqXJdcv5GTt3IS2fRgqThhInCjRkh7Dk1iS2vMBLSGtRPppb4FEu762JehUMQxxLQre365CKoJGvJwVde91XQ+bDp5ZsMu/QHmLgITmwGXSpQFQlQBajqquxlwIOe2cyfezaSHIoRNLcwjW+epnmAtmmWA9KU29v/cA2iuWbj9ZV7HR4anhHkjbxnzKPHnIZ7Mm5wAf2o/3xUhnfH++quS20TdhalHgNhusidPKWyKWV8ZjFLgb1fX2r7ifLyUtxuKHHIfCWXQJ/DKeU61vxmPT34MTi2Q9r7/sK1CYuHVqMBsgtfenn31bUzCoyPN89KiO5wHveqnk3uyHnJSUBVTQQ3NyRPmeRKTQvWEBZ4QWcSgMyZF0RQgvUXRcp6KflF056fwahSioP622TdcTVYi4cAwSZLWDvfjoKFLMowPQpzn6ogXHc93fFA5NZmnwslSuesOyNI1EE3RM8kzat6thkmpOiGmm69Yn8yNuxz1YuuPWekoybkee106T9WTPXo44ea9E5QH2Ig6FZn716DBa2FyXHG1B+YfnmhbEpANlOi61BoGO4+G3WMJDokJXj9GhNsFqdaLjA1pkhLP+/mGCZoYsxNI+A+sMvWyoj+PMWeR8koRz+r9pNVEWT70WhiAkNTrojdr0sBLwxIM7D4zT+cVy96ZE+ABi9CqkM9VK7iOfkJVp7AqCqQ9EZ9emn8rB8zfoQZUBrVd6YS2AqiTFt0nJ8HfPGmnBWf3Xi5CgyWoLAmHJp/AfTdHB0+Ns5DlhL6UJ+O/6xys+CWVKtL9S8fVHkpwZZMJn6jVtiUTtXjywmiVXw9a6f/G7Qd4tZtcoS3aytxXYA9aGGmEeBobjiammhUaMDicH3nlOkDvvz19NqWOvHC2SMv7OQHtDIykYerPuoLz6SQNOBtw6oX2Sj3ZLITBDcWNx9CuZYYVaE+vleXnATrwn+PnuQ34jL52tp85aIOk684SUlQ8uyO2t+eIOHndZ3oxD+BcMAba/JVxRYUAUZoEw3D80WWOz0/ul+fYbhFnffx3PgOy2LLiu82D5FMSpi+Pd4EkIFTgfv7p/0vnX1wp0VpNzyXs/5S/4z0RFS21vIF67k1ERTfFuhLM/8fdbKognohMqTNF/+oqvXXLuJB7IHeDdn1X2eParLBEpz8y9CAN2g5VdE7EimekAOhkw+tTzqeEsgyQL4iVDnWrP/RcBd6CDm16/5t+I1SAxCn9wo8knzmpg8DYP8V/vHw8Stu7cliAt+G/VR4XPNZXWF2rZBeQO75os2jFJrbtkfhN9BzHT4HGgXTjyTy8NGsiQdeOw12GjYKCyxP+34kRHZqYsn0pFvVubB0+/emKRgiGXNRWQwMSvAB1xvTprD0Zyt08BjP/4W9HGNfNBcA0Qb9qF5hdQ4dDqpKAFLoIW2gFEVKOganw3M9/4WP9ckP0/g6kaJDRurtxNgT+PjvWYEWlFa80wKYCkd/0ZChV94njjGyg0t98Pz3AL2AFAhvRRiJwdfRcQqqhWkv/o6X45d5w1YLJOye3v7rgta7Ya0jAl/an42ng5Wz4S5we7n2+1W94JnpoGyV8WW2HYjKLkKmp4hBKlNtb5y4W1MrsG/wfq2N5Xrz2kqhdPQL/YoxgCQd6Y2KNkADVu7TxugQRWVuNL0BUj3JRFyWNeCmB74Wsz54OPnbq0GFFxzSkoiJ3Rtq8yEJMKvOMMalFKH7YFHKjb2nwrKVfuUUuRtTfJDiBuaEHHoX+MUrM2bBaAsSdnY5PjqcMBn/wwojQxzt2MoOCC3OEArr09ghhsj2M0mue5ntQcmcC1R/sK3zfShGJuazS+mJUeKxk5u36CYj8+SJCq8ZEv7bNf1+BywGeDQoTDGq6Yh1xW3Suwo2O/ykazTPK/TdVOICyiwK8MuQpK+FX3mqSPzxfLwFJ/iYDjs0WgW2kqXYgm+gkNToB5+jYH83Xlt0cbtEmkkBaVGlHz61rVuWzrK1yjn5nYHKvKCrBPPRth3AKDQQB83fdrbgIeIfB3iHya5NPpEyxbzmtN5Dnk7GqrQ4uu4h3QSoHU+74zs31cWqIx4SZ2bwWLvIxUtR6gufZhNZoMcmSB5z1O9TKvHMORD+VmuiqzsyJKA1OaApB+b9x6u9FTvUkalgl0r7raV+wRqimc2D7B1z/OiSagdd5UME2igLGUcgPlMSX1VsKQp/9yDiYei87KTBA2NPCUmgaLwVdvQFFFxWp2vGCY/KCUvxt3FOu6xIgwS4Vybvbj6feUCkrQPpO/wPHJPhAobSj/aa5YrUvjHMcQkDZwfc9mvghrk/PIPvcJa5InhVBfjh3Xr9vIvA4ac+m+pywS/EqkSX55xgiyj0TB1EE0NT3W2CPFdVD88P72SpdFzHS/6XsmbGtM8JE/m8eojzd4PM1bNADliZ+XG/9hbcKg6PftVKyKKt/8Bz4lGsHyT0VKj2vDGp/qDGBajSHrqzmpEjW5LXsb5kTV6HgbMcnPW2dzQju9N1sI/gPVlgGmk0bHKOX2Ws1q4aPizhcM/XiJ5EZNUK6bZNUeFaUJVTvGxglRUY7vdnoVOe0Raho3huh1XDeTlHpk/2gBjjhUQXe8FN5A4zcRqkNtKpSVq0xyw9j3yQlQxq/Lnqklpz8lXmzHkz8sX9HJjHwyn8UAjblvN0ZFIk4liejx0lVACoKvpsT9+pQoLY4weMHRzcuVC60DUFkaqLfclS4UJti5WK4FE3dYcc0OilX50uscLJomlR6pXriD6ELNNBWOSMt50CJjPkyt3Zn/xj1dlPVP1t6XExK+b3jMoULLPOrEGvjELfAMM1qcuBb0AijkIuFca8f8xapUlkvLjmmJW7RK94r8HaPzvmHHSqX9MXdivNI4A+JHy0VCe79UZZJvzMGzpnsj+Q6k3EItDBiA12fTMlSbEOMAWCdQq9TtyUiAaAqJozMzryEg0k+yVHqCc/DyJcCE2V4WXIhEnsOc5c8f4ChWfUaONhPPWogpDs/lyVCvp3m0NSfrAJKNiVy5aNC9gZ6c9BqwYgj/cDO3kdam6gCjhR+akALFYmt4ixHkWxKhDTGs5K+CwRiKJnvxP9dbxRPCBHbiVa8gsd2GuiNHZD98MNwXMdMC0MubVodd7dnyk3UQFfCIIL1osPxY0ZJ6DvZXwtZ2I0th6aqlTMULVo+lhSIU/5qO63lTSa3MgPRJEOi0AJ8/UlZuvgqLw9dyEDQoHTKWOsq+6fzoAyvIpv14fLaY+braPd6NkSaq0RClMenK1QLH87NZriUaeuCo6SZ7/CfUt2K6VOt0AjIK2jR0vorf6R8+TVzxZb+QdLimH9pU5tQc73xW93QRPMGy/gCK+R+YzmV4fHK52GWBEBL05EEoTY6OYG1WWji66dWnVTg0uPNw839p/yjLxkCfdTaH+v6hVUCd6HlROj6W8Mil6AYGC7NI2+qkZvJh/dAw/iQspXQNwwWHr6slLIp0hBHYTDh/J7Ba7ZR6cp3iU4bSXdmzhTahYDev4yKiIHyN64EANhI5OHYv1G4KXfIOvQizYWchPhzQg5eVGNMxsqrvWVxjtIbkKuHzE+IcA2NZ83GKz0D8z5zmgRnoJGKigseP9TmMS7BgAqtqyixA/SLc1KEUWrhXOQ6kA5ZQRazp3wwSa404cppBnfsS8EsEpbr/gXyW36cZ9pt1RhzyxGxDUmnZeBz/Uf1AP+gyLIg9x04u1fThm2w/H1ZXGvVqsO1VqutV5gUhFkdkwoCjzz3F3FUr1v0njGYT2mSZYvoF/fSd1W11c5VIhkEO06US5wYRmHVPYXmZnbK5YHQ8pkIDJ0yqssqFK34CuHE8RWb+Dr4omk779QOOcYomAMYQ9ILt2KUk2uNlahW/IjGtenuGLxb/t3aFoVz4oNwMZ7iyp4td8mdzgJAfnCcYtklubGAUB9k6bGC5DSkf5VFarnGEBWz600VGR8QywZ+jIYFZbtKT2QdDOYP6k7D8qVgEZByGmRedZRWaQDTggLyNgDD6pQwEeSs82+hTxWypqwU3zuAWqfwil+mytzVnKztyvMFJyJwPFaPr4Z3mTjyxCR2Jv674JVGGMUSWb0l+GtcYtd+NBGChwr8mB2hlyccget9liJhQEb0XgXfgVRlHlbO+jlZ9CcAew0Nw+tRcWgNnz/GL9Kur7RohRhaYZBBmQA6JhvzkazHRcdZDn0zDkfBmYP1PfQjP3d6qqx6gE7vrb3lBKEfK3Y/nCe4COdpr23oZCoIpssGXmqE8CGpO2bEwkSN6uqeqR4UtWR+xsgOzNeR49PTLJpFEAkXha5YaecJ8t/KR+eG7/HKV23zPZAMvHDC1rdxQ0l+6wlIgZbUybjBe6yusL7isRuuYYwg4+8+4lia2ox8RCdvmXlt00ZshBnAIfLkSwIqUzCcsD/d1ZG6Az728L4FCIqBKpbA6bzkJ87lYQpbaHpwPpqu3S0UqNDCwgg3q9MEn02X16E4xibz/rLx7NMDtHcwMOt9r1dVU6Hws9TvJVH7THrnSFESgN5eBy53Nq2Fdb8mySTxz5CitvVE+ZjHaYS3hq9Bax+uS7TxMIT4qJE7HGdsHM1/9uPNBylhP04Lck39JMe8v2dPOSJzyQoy8m/8Fc6h+X+5/mBVA9jAsG4vmx/KdUW+NXxgRt//SS2Ib7aGILsjOz+ZZQu/NMeuAsP1pFRTN90rqIVULbJ20ZJlrjoZD1VxHEoDFFGVWCVOT3jGK+vFD06gc3yDUSnZ7ZHjGmw4ZiAglY2nm78aUpXxI4BfUHqL6YQKFDCazUIryLi53RczlaTh0ry7WN4WpWK9sPJ0J49fu6RGUMYZd3+NrRvEdOrS5n+EJOTkr4lNzo8vawcYnR/n1Dq0rCHu5o2BGBEHABJbsFLi/mlWFO1MjpvUu6UPJjXlXse6MtBROT/mQfyegWGmFRQ7Q/O+rJp471+tQF10+bvkExfBoTQrewd5UwhAUODpyeW+aK6vx2AroUo2bGBZ/ZjcsJFfMYEMsm47LdQSq7T7peI2Ex+4/9oIAJGfhidbXA9UYPNhxigFTg83CETNYfYVkoambj3vv4MZNtE/wrIfTguBNqkQk9ebLPTmY2U4UCzbYqPKO5vjaZXeVksobDAJzhVjoU7p9TdFmNMyLyCQJryBSOcm0hFk/pcwcV15KZ/+IIqeQGPkTbiY1haWSnuQYBeyW5uSPHGtYw28cQS/v3rToNAUGVBSQ6zpBt4CHvaOfEJhuDJYZCcxvPeOStdCzaoSQn9nDe8wDc1MXrJ0+9N9TAKcS6u8ANLCLY4UfHLGf884/LFIn4OLOlRcNl7FS1IJgu1/vLm4INkgHt5ISp2vC3MFJHz1zJnopnKS1AgJtCmhJRZDaW6wis8CJ0KAJW0Yy0+kWI3lJ9N8yqJht68FMNVgkgaAGi5LuKmkZWm+ztKvf9gT8hJrXZkM/QdHI6wy9BqVeWa7g7ZM1YLbUv37YSnLmGsCrl/UVi/tG+fZbzY4bGye0zH08VQpGmyd/v++fS9EtasmbkQEIYnmLZLxO+tNHp3myIGwYBZVXjlWvrCiQcsP/Fu9l0HWmLBu3gvuJ4phtJsXXllJdM8iZIQR8Z6zEMs+cqVL7+TYhxDd0c0l4sbyIEw6N+V0v3ZbUlidyekdcz/aIomGdZtmdI+1QUrrHw7eDXT+G3zbTZMXxpEgJc4zY5bH5az8eHzwoo8QUleUKpVRrsErGmSF6GPJ2OltKYL6/C4zx4rHdcfsrQTcWBmrBWMMiFiU4NGtpYeACqYafRyu8j8x7ltp3nxVbsPO0MSoaR8tv61/q+YCqHX3h4vy4HzjCYEl+4ZDtj2+mawuj4J0rBpcDw+spzuCQ2khFbks09lPGxK8HYJl0Y/lNLUxGLZ+2h6+EFSaD22bYzF7dk/EhCWh6u/v1HUVKC/r/Wl6JHtd1V68J9zdOTgbvJuQug4r4vUV3JJolQQ5tecHKqcNoYjOIs6BZTlfB+yHGfGdxTKsGxbU/4taKuH8Qpd/M7fIG5zebrpiDHV97T4jiUNt7K64/u1e/+erXV34aOjfddcKNO76EzIf1pfD+KivBsRlzlsjj17aDPq/lnKHQCLsD+3TK021HNzhZyuwpLRKS3KE0XH/0TqUOr3VqLMcsSZM6349QJDznPG+sUqeS6wwMWp28TAoDKdmjzW6f+2au71HsOzLIeWencRa5JapKkVTYpvwMIC8u2L+/hYGJmk0588rq6Nnqe041NMzU6lj1K5KmSj0ZRiVpzu2FSTl4PBYHAuhe5dtwnRQwvvNqIELVxKMFWedxxB7UO4zpYRe2x0zH4X6pI2m4g6YdCs08vR9B7omy/goQUYbUZA+wJamq7/c0FhkNm74Mp05NSCK1Dcy1+9qp82p8XVkUB4+SsVRJ/Tqtn8v2esmemr7zjCfjLicMb05JqNoL6zzz0KaYkXeStBrF9+T7EbZTo2Fa/wS5NhJvRoZc8QUfS46HX8HIZ8A6LK8zKtROnakAnEEFoonVlvYR71xYuBAXbjtxfu/bteN8WkArB3//qp+3btpi2SIMyK6rX03iCLnzOd2OrPnD6xqgVT35e6NUMpN7EJSz0DRRzyze1J+Dx3cfx0M577W84qifD51mZG8VNbBf+5PxmGGrGOmkO+Q41YnCkx51D+X3CXsNAjaz/XfcPJUXJ00vaQyfYDtmFq4kU1ZHdnep48T4IskzPsYT9or3rd/ubiYLqeBqjnGbuNWb9ZdPDxkeBmJwYTjsTU+VugQmtz5+C3QBX0piVh3d7BK+Hk4mO3q8qJVQXeIqs4hKuRvBfIwwUyKg9W1x8dv+EwESuk2Bgs1+Zc3wzx4eGasynWs3V360wH3fKXZFTckeHZdgtzTqcQPC2hCHhSXyFMyljvrneLE+c+b/YQ0XcDBam1oAPzvKmmcgER6AqnyC32Ic4HMP4FQN2rh4Y2ntrawByV+9oq/Z8hdwQEPYRYiELBCnuGGXDQbl3ZLuUo0vfKU/AuMwYfNXmNM2vkn/GRrpc5WDP+MEL80tbJDZfDNBRfpfcvVpf75u0LrkIIjnU4adaolZWzB2yjIVwNrF7zF//n4N5xHeaGc7Vh1EYRdc0h2l23qFvLBNQ5kHbmX8Yta2Vj4DU6eBN3XyJBvJf9iL4x+hw1hx/7Ej5U8EZr/Qhgoni5r9PxBfU3fdvXICGW9DzST7GV141bvyMDXblFG5PizNjJUVAWNSxIAStz6+eDAbkYeAKTj6DIR6ysFvZAloBLCgSdMFd3ol/WXDQh3BbBtLqO9hp08BfumZjLpTJGRAIHzDizXZfhbgqejNSS27BIXQLV0muwzgXGqYt9McSvtLWo1Fos3k6Nu2qGyFftqQyDz0/bmgvtZyiFce/SLYnjt2Q9BnlmUVBWOtbDPvUgOSizvJDhdiSkbLLP96MJ7dKO3eUK2nZnpb4s4b2XGF4T6gC4qo9TDv9z2SY4Rffb/RjPs76P0YiWADpPB/nQjC2tDRlxt4sdNCIjmMsLgU+cr8cpyaMSYI9maP4HHww2jTPkGKvF6H6+DFAF+jAZKT9oi23gpZ2zavE0xXPkF7a2FTNJ3bwxvsJV+o0fXZAkmouYq6B2+6ccHhnUIeL10QtZaPoZPJB7/Xry/2Nv+JJFmQ/p2NSiO5bYGA8ej1vh5QlWhaX3JMs5gMBnyyIfXIMf4im0WEUnCPAJzq9q04Tmxzy7nGKKEf31kAp6IFk95aj0AogL7iljLVJlOXNvV7BwZn4dKfuZweSEZBqy+Mvual0TVDHiwHuIuXbvaw+OkU7aeAfck0Hc6H0jgt9g6Rxb6dAuaiKEN1cUYtD88y0b9Arq1q6ML9B20/FunTnZNF+IHgsg641FfllDFpQ+dqrIPKQ8IkLx/2ppx0ivQSrehNaf5dwtBjnPHroRGzG/RWOdiW0COPzepxIqcsWjhfmBXSUD7YCvPm/qTGcSnhcriFKew6a5s0AgK03I1gEifX6y90cJBY9REbQ7yW/XB+zAXN1XZQVEs7r+0ajtx8KvVBKJksKj5YFGdhEennMbwgCJJIMdt/pJD6FIcNVegt2LiQS70DAJeiNNG86dQVNYNZmYEfo8oa002xKLh1+rHlBX40iY8Wlv7FqswQFktpyLn5oSdo1jBRz8V3aRIOmhSnrs2wxGwGBEVEXvRm8RZVvSQ0xlKMVWs9Y7nnmJ9jEVuDL08D2ES3plzvCNP3FpKQeSknFeVBXv5T1Yk0/X5vdj1J1LYa6Ffxxrv90ObLHARkCI+tz6+0i5cZTinvgIYLMVnV/OL+m4RCsTy/+9VQPsYv6X2qSSlVdQ3KM1SOntMNUBpb4C0MsDh10xHQ0cbJK0gsR6X93ru63BDYbRZmPISt1casVwVVE7+u3l55XJGJ0Ev6S+2zpNqOAH66RuzpVskXE6X8x6wHOfp5PAI/7YG3Zozh1U27IXGEEKIm13Rt/nTE3pKWA7i1NFdVQKQ0CNdqEsBkjiuM41dd5rIbR4DMnoDva07v1esxYBGU4JWJUJQyejYbI9p7pqjrpHZUNlz2exX1lTAks+WxY6CExoPlSlNNv6AIsE0VdPmHOj4m0a8bigDelTpIL1WoePLhblmhRlkPDKiZvkzz6eG8vLeJjCGJL1+VFa4QREBVyuhcpZm1ygJm9kuQ+8v4yEMw0VO+TKee6sMFRVc/kS4IirJupnw48LoR2aRk+GuDBZ25xnKFxdSYqZqvWlEcemsbzl7wvQg5z2xKxEUsquyGziyzd/X+XFl/ct9KRLzyyb6ComIL8Wam9x6LPNZXvhO0QQZmQ8T2MFjmRJ42WyRzfyLGkJKft94uO0Yy6Fflo3AoIEon3XBygpi3Je932ToU5EKoikvqkeLFACpsBN5dseemiMdHxOJKrVJDdTS0qCcTzPCyz506oyENFdelskwdghmUnWyXK2WeJX2CBXudNUBON/i8kMdtJm52REvmGqVmxe5aricuTCGLbgZtYvigT++E7xltEh/ZgUoMP+d8vaPU/HdhZaUjsgQ8OoqZeezvNR2JFm2on+IliVyYQ/58LmZ2stgKoBbs4SllwiTpNRw7ecL2WR8bbg05aTN00C8aGWtReWSsYsirJ0K0I97flI2gJRRN717wESryWahXUAFZAdyD08j9SIZQm+wq5GkoUkK5cQ3wk1x01x4fKLPgPIj6D6lZiylqvWGtl6KxCfoSQXlNZIHeDsrIRqhINxdrCinM0iMMkveNxhqrEzhnBn8F6nXVY5zUDLzOXpp338I2HycFa2pueObEof3HQgFEMnHS3/CDKwJAyYl3HyA4X5vXUE8MMa79gYELseTf0IEUJRsfSa873vl6n29lFq+GCqF1I+mB5PSyLFvgHv6hG5Hd14PAHTKhY+xzCgOwwRZxygPwNET0UiO9ynH0p3j7GAFEs+VSjl4ArhHJbySohRLfm6B7FxxYJLJxJlQr5UdD+5Vs0nM6CehSZZNYw4FzcpYoL6nS+wGGSNKLVLXgbgvzAbT4B1J4GMS16IKMlo5S/dzM/NM4NI+a1Fuk4qwaewoHqGp78vgp+SkuhLyAVhI2Or50Id4LlHwRon9o7JT3D2pibchFvFi2VTEx6cLX/qorW2YGSSmnu9+M8teW9DIRH1TfabuDIuLk16NFz3kNr5QLPGAd0JzN2IYFA140yqfi9LfBcZI3aUK/Gt2bfMMk8eqttN8c92OmUYKUaHbB9C9cpEwaOYs49MztuGtI0VMqDDHN8HiRP55BpRIJtIWbSyi0/LOC94XhzqGVyuzaVaBfg0f++sV8wy7ytxlQYA9w1ejE0XaCkpM9zbOrymf4OrEaIyQX84Z9e6wQ1czIvOihnSaq/fcFdkxJcMzE2kWcARwWT1U80dW6B+v6HdclWMyMWLYr49iKWrhm7o1yumJKxVGiv1Rx3Tw61jrh+vuNjikpFRxa0F9G7ZWs57nuhaIeT8ZRjYzuyq4WZBEXs4CyfvmZxGcS4/G2aWon2O/UkjqrfdbBUF0yavSPdNJacaaZxFQNejGDPK7SCF82XxiahbNpwFs/t07gbCJkDUvvKjqaYv1SNJBa21RKsOuGJNKO/F6HTjc1Q5t8lqLL4e83gWTT4aubYGtE+D4e9zdPPo2R3dvG7bDrCQosp62YhTaV3B/kEQGqtzvu59fbgA6lFyGe7urhYr3TWCBFYBmrEpB78fWnXUEd1z0LSzMcWL6vuh4CJYR0tg1jX4H0wkw9mkbM07MXopLJ2Rt7/aL3Hl3MjO8h/1lqNlK74QTbgkurmgd23XflEcMhjO52Y/Wsz+CqwkBCDN8SUcd0hvJ6srikURdDKw75ZZMyms8NdzvzfsXreeCzpVaPKbkgWo0BlD+qWqaXziVa7YTSezNkCD1UBphMwE3IFwG3+Oja0AILbwR+VMjirrIkRPt+DMtp+OKLpkiE15AVv3jn19brZGZkhhAsuT2sTiWSjLvxJkMICAGdQY6CcJ1bmQsycrXCCxoxrME8B5k7aYQkl31h4kmnvmUA1Uo5bGEJkzebQNuMeVIRwKr7shM3Y3iowzuO8Jm833ALhjeDbR9i+ajGdiv5nuQcBDW0PZ0CB/GHvnmE702e3iEmWKin/StmkbfvsVh9mXnjLzZCRfht3g5Fu6OpDSsq1DSVUie4hNThGTSTWkOhTKbARv54Bxp1m/BqW0CfvfUJMQYci+HzQBrAw7lHJI8klNzq1wbwtxf0zzTFIpYQcsU3ddDWDMuciKmN+BHJ47B6FkgX4uR5QSWzLqgN2wQK1aLp2hgMJGqMII4rLK56VcDk89QQhw6cy8PCM19olNpuDwdrQFvP+77wiyyKx8Z4MVJNxV5vJWOwvF+aDouZMW5HNno5d960qcPPO89qYm6Zh6UO7MyFx272aWYtu/0+UZ6eThOP3s/uMGRarrYNGVN2bkl0VbM7ZArP2AnCQLuPoIbkry4nTS/RsIdFmPg98zeYI4R0RY41FQsBym1OXnJcHtmKPjfEXuujVQGfCPrCZsaT+vFbMFWIvUy7OxquIvdi2DVp3+q3E3NGG06d/cz77wgHGWrfcy5LJIzCMZHkk6m2QnZCXYVXwMsVhJI9nJcgG/CrU5lgDb/DlVEsXG06BHIuqVfnTyLdAQZYmJlEEk43pdgF69V12XC+sB9W5Tfm3jPwiHn/VmGszkYx+Er49CLbyk3hDBSKuzDj+nzCo77ZO40EIP4ZROdSwWlf5S8wfYcAzjNdj/aZ8uknw3tur126RfCzMA+cUo5mPaZL9cVp33X0mRTUIS2vgtwDRgsSSX5xcJUWR8gZbdeqyqQEEAeDu3+BMlrgYP2SH/le2u1yfVFn5JX9VQ04X9mmABR/KOd3rAYqR+OQwLWao9MXVS1y+0OKo0FlXuirKuPaY1BQbY3Vo05Gf/+N+u4rDcFBQqiCrYhgRAEjvVW9eNCaOsukcJWEaDuo/pWCYGJLadm4ssTCPvVVEJNBfVXAcTIxH4EFtWFMJUy5of50QNXNZBl+oRuFIkdbt04DeU6j2A3vzzP+IkMahLD6zBVJv+xRBIc5fODvnJMmJRMI8kcyMFqxpeWZAHxC68tGFNyl6yyGN95SwNYXwDSIQCPlL9bzjZaWNWvs5puiP2lbEBlDw5vCHtVmb/sD8QBgOhRassChwM5o5g4lhlD4u86wmdmVmhmEXnCyLeQJ0rRtqYIWRhg72ieDnqmPvOkDTWtKR38TeJwrK/7IRYfbNspygrU6yV9YtJyw3I3uEkDgbPrpcNUpISYvzv3beFg3ZN+swedqf3IVKkcdiAezu/KpHGHPyvX9oT6qzTS342/DenW9ctM197UfFl4rk21KxSma1KnLIWlGGasMF4+G3dxTnqBscul4CqNda6Qy8ita7HCzKlYa86yljm+HQA2B5ArJoZy4LNxeT9izFuQhEoEhUTNJQj2pCc/O44h8GpQX6XgpaAvAQJLVNq0yXGFbzb3O54XQ6sm557+lT3A+VWPyCJn1MLbsssHIdFhJcMtBFQYi0bS+exQ4Rq74xNE2CIRSzi3nj5TNy2AoO0gdyBC0/2iH67UB581jmM92OHqgD4EzAzyxDauPnlIdZu0nWwB4dtxWN+meq/faIuQpK2hoRP/ULwIJ9r3xyxtXxfFwJ3YquXldSEnxoPiYD85u0OAHvKOG6+3eBraUiOgvdfp1EjiroeSLLFutuPPV9XqhAReYPaRy87OAkV5tzSqvyfufCvOMTtkpxApWsJ9n+cNM2uBWu4lj1oDjGasCfCt6cfgCzh6UbZanbL/qCgf/iHjKYaavIiRLJrU2BuzdsP97XHkXLYbbfsHVTlXSohKOXOJ+3LiR6ix9UFLo9qieejYk+P4e5wC64jGQLSxJzYt3cErx1Rtc2+xlJaEBynLN4hLl/qOrgBM7a+yswC0Mh2OieA4SR6MfM9WK/FOWbVyoUBIUAKOhhIZp2LOgukk0/DInn7sF7dRP6Nw77MaAcYg6k0gdjQN9/1wtGVSBm+6LwkI+xfcK9l+JiWepXul+/EEdV7XXp/9lUsW4RQmIkda9H38FJj3EYJTrG4hEU9YWtNd2lKI1683cXFVzSMkh+2nuu9K0JUBoAnrYkKVZpAKF9G7y5n/KMZrP2xPuUFSOaruqriffSEX9Euj/k5dgewEyQCFTif83LhkIjt5qJ1LyI4ynIznWl1SoAdecEp+I5WmKBB2fr5yw33NX94q6HIP0jW3Np2E0r1f7fUjqdxV+iCRULU+yAwPXFvTL7HqfFLj+wCfIbOg+nsW03rGTf1haLvAZA/nC52pSDnC4f0qOiA6WtK20BldZUaA6GO3m5ZOCGyemGK4a12hM3BXnbladA/yTRV+pH7IiT/9WOijGGNXzV+K4wmdmRjU3It+QwUCRat2mGkEHhOcQY06pWeQqBGjHkWcceX8/drkk+tYysHMXVk8hLhLGjUVgivK1Ra4K+RtUcZO5fkVkWQ4W8fyo2tafhGEDSsflUH7yj8wsATBE9YpskR+r7Ac8xqdxtEAfRioGXSprjbLI2DAZZz9HAYR7rUHzvh/UPpFvrLbd/hFf7sF3RimWNpiGsQRZ11RqfZkck9IJu/FPU2DYr/HWUdskJHuLufXCvDbKn0F9sM31Hn3zIuAMTUc+tQsO9ll6jnNnW9Ulo7d32jEQMqJIrWQL5+Se0a8lKRp+XhYp4IfyUaTRC58vFEjKupeFEpU4EOp1AjeALc7vZV0ovza8QSl3ru6xFpY0/ckElMOChkhLWSDHLCKaFK/qC/SIfT50GJZnkCr5SgXZRddXq8Gc6XNjIzSdCF+9YlUFKMiri/sn1Gp/dEMhARah97GidLqitLNBlF+H8XoQmdrM3GXBSCN6izNn2ON0OzpCxOuM917OZCw2ZC0DSvNuTOFCGGYf1TYgUbgK2KKc4zm/25dz3GhVpFqs6x4yhZBbiy/6FD1vXW/aIcDiSUoIhwrUtxuGGZijb47Jz8JfUTblzx4eNPbXeYpygkQo1xXonjeouTuJvAH/zH+FK50zOLAtbN9AO6xjfX09CsjKitMVlHWmmQybLoBHBPkC5IbAZxvs3cH1VAcy2X90WL6y/0SXNsGeLBdr1OWVuYg+/wUNiR7QnP2ec7jNrZZOosT6Olwn02Dh6zSwKoDnMFLfk7lBO0p9mWjex7gEFXNfxFO19qmaoISUZEgdTuy7sHgrD/36o3XeFdzLFoFnOJa4yaENBXdTSmVZacz+5IGdVkEgjQt/TxuhNGHGtQuzNDfM4iNZ28Ly9S9WkUGMNAfDRLr4ipZkJxUA6HnlOi4Yb04/Ze8rB+HEXpDGC5Jpr4fN62LQh8o6kxknE1P5/rNmz43jehFlRUvCyNi3Y5St7lC7a2ogCt3Za6M7AshQdbVV2+R2DuuiLEJz0MLhnn/1/F2Z2U3h560PrnhR0Gc/5GW5DwO/DGrR/4PvL046BKjUp1lfrtKfE4osRTS9/oB0GrNW3cYgvhU8ld61sHhKOf4P94t4n7h9zdRXDaFv4ORPHokkY+NA9QA49RmsGMfJLu1/RXuluq0J4fsUUBoa9dL9T0yDJXvGtuoln8aYrNzoapa7E8cR73/wX6KwBPpwCUUlxsBtOj0rnca7zu5FqJC5W0U8Yt529SAI0S6nmWnS8zguQLRzf/gRLaqSQ6E9T6Q84u1cs56dzBMv2eBG+zAKw2V0x1NJX1gC8M2MYZpScdXEKPG1442UFWTEUlkM9OjbR4FurtJNV4IqEu1htlgltESO0SeZMHZ1JM7bNtYegevwPSCmW+S8uEGj7FTSSV0HbDg1rOnt4Ws8DxqN2T/HOXNd5NGboZ8VTSD6g6rLWcoWOwsyeG08GPG6KHPiLRunEdTPNmY74ObRGT1VCHP7nmBYmjnH+kqK6rDyrEoNjdqc8uG8yZrHWBXU9weqD5rpQ6S/annq7P/GiYepA2ZDdJA/GbdxpHYatPgkXt5sop564gVHZamW6cq/cdADaLCXWt1WgK7y11WaQR90YOen8BECQ56pmJbLvzzfWBhUUJP+dAEEK4o4wZv2+IBAFEdNkNF3mKntsLE5PDLA/IEiV0rziyORzLJsoxRMCQV/HlpCkXsaizcHT/vxU9iadf2hOkKehGum3973fFs7uRlqxz/oDerFL0617PqG+VYIxjeRb2IRLZJGH8vp8ITzF7U7HUg8Crs3WpVY5r8wxn8tzGvUUwY5csVu15Vmm1xcs0UL/lUCkrOXdLtlaa4pHLeQgpd/vu1ZzjMOcgzfQaIwiZK+fMZjRLAHUf83TSCOkovb3xPkD0jElmb4TBqFrwn8G4KWr+RM58qhCnlVimQ390m8YLz+fNHbBRDs7GJgHSK+v5Z9cwZq4glnR2eTjnqTy8Wo7BEg24CL/RT1AKzOIE7muo8oegzn8R6qab08LzTcbb0ippsScfjQoJhsr4jKG2pMVczpCYqptZcGD5rxTHFbL3+NDnEUptRMyARhF2FMiM7pgaB/IpAna1AHa5EPt7oBdzMGg7kOdSOpxrPXbdP3l/+QCfCLMpCsxFd3VAxA/IPVvK8JaenCYCadhyZ6rJeGxTUh11+OOAjrXIJxb/EbIy8rv6h7hywPp9ZhPCcgt9BN808JhGIaKwtL85jO5nipQyAF690xJ9A2DMuCx55TSG88fN6rqBMYDI+I+DtFmoAqJB27B/xxN9xMLnQwLcLCHOx4GIFCq3/6i7gwJePjoG/HKNb0XjhuEQmYFzTgtt/uIo1bBX4C+y1jrb+R0mRj+RyaDkRus8W4WW73qbcjpjIh2tGUY6KJyhEaKiK+LHG5euQeYZO4zXoKbZOWiJTvJNNVrWugpXkIIIE4zK/g4JKATQjtaC1qbJ6khaJHxOTS2goU5zGyjmaPKvVPrBh27E7E2iZ/6omwpBARV/9EKeU1m4Msz8Q7y3MzEF0C8VIIqAxB+Fk8qG970lhV/ZIX6CsxiHqybemqil3Qv/cWKm96fPoMJWSA1dcF03dSwSyNMdvKKBCYVYLuqr2pISKPaNRJJw2R43RNE6avh/TNA1tGJ/ilW/e4LbOvIh7cS2OsbjyXcD6WS0DYaDa+og0lSxehZQiDSt2fVdtF+DO7/cEUAM3uju47Fl17rUPkRPaheA+6/jpSYK5Nh6rSwO8Pbi1y4/L0L5SStva0NcscpH0pw/3Y9+Eqw1SDVvRn2r2d8vRC6YhQywdhKWraKGBMILqjiU2l5d3jb1tnQIwi95QiTJW7MAjJD4Plr9FGRGlM4NQyAiG8wSAKUbRCpmxE+zk9YhXjiC/Rbt983pV0VzovJW+90dH65IOb2VS+Wk+MpsRgZ86uEuxeGPyB++07HlAwqFjq0sm5Lvom/rcHSaLduJrDdabujYJRWbbY2QZptvGwTHAiaqsAafE9NQa2oq6hV8+E2YRbdEcrirxyx9JVWpti7CsFfA/egMevH0MR40/X1jQzMYbw6mr01MI833RiE3EuU79cpspC8tuN6QxFB7ExHF8yrFQ4vRniEkTgKc8kT2tC2HgNJJ+l/FwYXky6qbHj1cMtBGVOw3SFMHn5l5odYVrLqhL6R4DujKq/CEsEj742QjUogvrSb9DOh1Mm5Z7n6MI+YHii3bWp2abi25FJIiX3GM/137MQVr4wwQ5IQETnYx0CoXX1nLeqLjQ2VlOulhy58iVxN5d0Q2TEV6MPr+wA6lluGEC5890db42elDUvTbbMcjHGrT7WA4eEhNLqVT35NhLruSPkwg1UCAUz94Dj23i6dqS1MPh40Oyi0W+wfoWYXIw+siweU3qKdQM/IWLUwDjgMQuiK+CTyRgR/Cg+XmfazCLiF1JChK7C2x+ROCl4t2WjYngGRxBWRQqqrNqx1EesLx8Z8GOimBJK3Ip3O0TWp1z6fhibUBvCtBpCBH7Wz0MrsYEtW/6gd/rLbB2IcMxOrxgW5u+/ZBOjd+9Zg9SRf7ln5tqXgM7wZE2rj4u7BOezWvuyca2TpJkQOR8U/bR+LRjmN6RAS7MCfYSPtJWSbZYnQL8vGmJb39SyiYiER2Via1nlShjJEe3JgCwTOTiIQJ5h+NQeEs7qWkpIDJiQHb7VwcR7T1gLGhKAqUT5DPO5zvGPny/DOh+Lo+Xhxf5wTkF5p5yY0vM1gw2UZQ2nhCedQ+PBxACaAeuBYTyBs9aNWvYATPBLUtXJ3H/+rMIUQ3Xz5MJKdV6OhLEEK73rb9hfjPlA0gKO4j120U6VHh4AJvL3WqjaY/KCbwpCzUCADZmnJdpD4p4U5ry6/YuhcWXcVV4dFm5J8qADBWw9jPITjUtkf0lhIJkzhXLTcXQBZaaunvCCxyWh6ifYzNTTCGJcUD6DyfGam2zj4qdBy7DwBaL2S2IxicF7F2ubPDvx0+DEQVydAIF4Utn+/niyxDQpGlaaG5eRQcfYEHaZeHBOfZ8x6KnSsZnB8YZbLVBcEF3Mv/87cj4r/BYDYAaUWrrm/rWPImSVpvPlB3xQvVG305B+bCj4kIW4ZWzFnX7/nApDibPZxncAV04laDsD872g54z55DZylkUKHXF7Y5iFwsc0HDovYpJ1P+XIAb4pKZnw/e2BrTZn6jCeAAvAt6Z8EdXqS/KoRwK37xhZL7w17n2PYpqnoCtRAvnU/CocUq+el+PFEwM2GkhLBAJXvVbqxBMfPWlA8XMNY1+dfsV9Uy0C+WgSzcXw/ylN23DlELK9DPZ1nzFCvyDWygh1ABv0LXhuVuDEraYOrX0J/NpbYoxjl/mfncXN1DorfumMjOo/dWEk/OvdZ8w/66CtISpGM2htGRpT929qEz+kRM+2XpAqcSS9GOrLWVVUVIm3Ez/yIqAWm019Td/ytbE6eeYJaY+mJpelcp0h+4Y1hmcF9J6cZQEJi7foY8n1psVTCzE0QYMX+ScYxKxb/bU9eproUaSNTxHeNhomtba4y/CfLAZYXndn5ndeIjFIsRWRpwX3HwrIsKxRgd52tRs/iun5uy44w8u2wZgayiPbOTWGXUn/BDqak5EZebXbdQHyE0yEhUO5HcDnE6xlAuZFDSKLDTTZz9bWcfe1wy8KhSOwh15cBRibt+faUQgl7/5na6Nl5d1o7iUWTjOhjQa4z2Pha1PNGSn0hZFeICMKGtHJ6EGQbB+HF6+M2e8YSQjJ2cnG2SVpdzXlnkzxYqwXv0s0WM8nggSh7Viq5joXNiF3RJ0A9637p1HFJd2I7GrQ4ZTOWRi8jcZaL/25Pox9feMT7VDPV6TT++0Ri3a1aLS8IABZh2dWfxnBmXDWPdvrxmBiF3eePVqd2ZM5bI9YAN23/3qVLElDeD61xvgRdjkXkl2tqif3zsX1gGp9mzEm6suh1kWL75XC2kXlrCreiNi2pfI+iWVFJDXPd3MBNp7VSAZRp1jpt3ug1pQEM470lZXwotpDljklvGxuNeKwTuKNJw0EK74nc0d851QXL9P4pxZdM7pkmbA7IU2S2Xa/AJRP2VOz3Kyp9oW6FgoQi4noNkoHeNnprbQod8n+dQSSbMzNRZIuL/riHaxoOHkaGYwROCZwqcbK1tUnU2Qt1J+3UTvklj6wOD/d8lrZG7ucjZiCyHxK5XVtzq9lDJ4N1FvARCTUfnLeOLc5bmrtGvb8mmsr0lDDyR5607k41wzglZH1fExfmsXrEjiNLSzSKGb7FVusl07/BgeCclDsQkds2G654GVeUpX7UHaqQBEmJsIyvfxvz85+WyRaoYuQfSH9WpJLeUoXpUt7+Crnl1Jqz+eARyCmzL59OUUBwBuoQAl5VddIrfG6xvDA/RZBOV5AfwjOrJ2xRo4N42rCSFCcnOY7xfewl6tVLetiM2tGLqRLc9k/owyHriX1A9BnluzfDc5xdEUKyuwzWPG+tZGNDV0WLl1JyHPflzcBpj92G0AR0lGaMSZuKui5/LUMn69X9wPKc6FVkNEHEjHjQKPQjuFCokjN+N/6DlMscpE48IhHIa0Ghrc36GwGEiPRymXWKD/di92yfjZjDM3fdHBdwSxJRSBVKHSwh6Ey1/zWZRZ4kk+KMS8HuroIw1UPa+PDVpsSIKvmqZnZisbfHFWNW/dl9n5+wM4VIzhmrETz3k9WU3s+z84SHh2f7dGT/G5WvoisBYAgwm+pqFS0A8xyhy4PiKfgS+6TgnQD5hDEerpzgFSaMcw3yvDZ0+xfL0yznf0uY8N6APiqHdoJZOWqTPnTIbeBLc5dvFdh+mvD+sDtl8BAWzYR7QkSgnx30Ru7TH5a/g4byacurCNvG0lTgpkj9w42uqBp1zMsKr2riOCQwfCRKkuSX9CGADOYGqCHh1JUsk6RwvI9OvM9fCJoL7Sap8NUQ7mAvdB2ougA01NdqxVo8NeGta0R9C7QybiN4uAtDxw2zLTG9+0we68JkqZrj9tJilUV/f4wOLc83GfstXOVF2bAJ6zf56YworQQEDj6QnC+lqyMkGAr0QuAikm0jqS7fy9bYSBz5hekPILc94b8aUau3Kt69QI1kFEmcb19aFQA4bSegA9/hFi61RDIVQ7iOBqViYdGaK8d3zH5qWIjed0hR9e6o4zELdXWhOVOcPCmZIYYXvgUsAyGUoCszsCiTdwOaPEL2kRnYh0mNSZGb6/kr8XfbyUdbEZ7mDBYy0yTDxhkrpIoJmVutN6FHk/E4cTEolaGnv7x+QxQIKZus8IEygpdtBDxj+lC5M6HaJ313pLDYbjpCA+oYl11ISRJ/fB2oIdDBHFLefQmF1uHk7vtSmIyI7Q9HG0qxu8QRWecP8ipKR1o4bGrAhR2KcGEDE6k8r2F7N9lNUZCswXi/EXaOlPb9fdsaw1Sspku1xrmyADIImEs//XiPqI3Jl8BlrsHf1mAVCBmlqE7usMbDEpilt45ia5CXzVqlIZ95Fesu48LEATS3dyXVEjwQAqVbFBttbLfXvX4LhaGKv6P3XBsKWvqEFfq1rPYdohHtQH03ehlVMpZ/BRCBFV6dffGCrIa7OngRAbORd6wsIcR/gQSxhfrfHFmb9Ws3Pk/SikwIvAIYljNbXbvIpKTROSiPcmBDp4hxLkrjR+MfBFZLV5I4usLY6WYmjhT2kzW9XAxxLYCELLIf6lg6p/GFgpoRTm+yQ6PYtmKVvdTHyBxv28y3vTiy+reYBZqmC7x0TDasiMCcA+TxdKgDY4s61MpZyI1+RUzeMfx1qh9MBXg1tI/HSKpcUj7+qTrwp35J3ezefo6UZiEWMPBtx0/tJyaej7NUmUHVRBJfB1q0bsw4yHfui2ZOPNh/6R2/I0j09t9QGeRxpuJzB6DNbaPTOmER6WTXYEGXq7DhzkvCP247uSz6r7MfaasDs419fVF4RAt4XoxkFRmk3sjrhpNSeuDoG5RpjE4pI3rH/ESPaF6RIIJBiAbVU/ct/nKrDmBQPBYlNob0WmW07GhOvvz0m/BXTsPB8qA8Iesm6PsDuOLEEm5+jbniDFyXfndwIXHgWBB1GCyGV52MU+5iXguncQS8T+WyxaPDqCCXMjwPJxGObdF8mBkG2+SpqaBQkeN+1IL8Cbb72d3ySQUR/uO+N9v36KAiKVEPx8EERU0vfKi53JWN50+LSYqgHmF0UrnnHCNpcwfX8ezokGL4sK/rgFZlXnIqg6a8EJh7DfMOwMgTwRjjZ+TrXsj7SA6EaMRroFgxXRIOGDPYZgkadllrCosfuVZqNQwAY1cDJzuD4ocR7PgZYXbCA3g9Jd1PRx7PyRTNad56qFMVIv/9AYYd32opL/KQOuEa2LIoyMUHWsHVeJEgDnTAizkdfigKSmZVUDrztoGXA+B+9B+MYT2q5BETXJUKRLiEw3upTpXnlh7hkEk8/0D3rV1lUxxSlnDzLfFArxdnXRhBNu085RxiTwTISjItGPuj0MQknBfLTi9AeLTT9QUKRG7bxHm7P2Kei6fVAeNBP31q/OVsTuBJZfKaxLodsCxObxFdyJNLV2tAt+2SCAO5/VWcDOd7Or0wzbVGwbXJr73+/PYn3VfNQ4CSxdqgXNPWDqh9ZFVRQbSeb+bFmOpdkO7C70y6dTSHVuHlIY33/KV1QHDJ226atG4ltS4fk0ZNDrmPZ2Lps6qyMYO+Wkmsyw/ECuxfXcZ0zM7vmLjkk/LsX/XG0vaL3KZb2C51I5TVf8fBJmMxHHzKvaXDwSTGiya0f8ZZ3olqbqcd2cjXM0jicXlX0cJsaB81POyuItwEiYZwsHn4gymrnlD0mfAro2YoSC7KxDdL1DQVO+0a7fN1fLkv8ElaXx46Z8EGJ/W6akIr6uEuiFIQB9fHujgNzIzAgaDEYVITJJO5XQkyimdgaTBvra1hUbw4jb8imqVpd7G9dSoQVNPatqBlbm7NLsdI/einfpw6HdFlo9bpLb/wBxf2BGK/YWhn6LhzEvBuRuBZJTDv7HV9WfnA2SyT3HV/F6f+23aOYC8rxO7QQ1FI4/0m/OAHdCwYedzx6F6TIlSh668B+Id3ZxNP3V+Z82Tt/AHYSzDsxyYC8mxyk+Za4Q6u8y70AKpUm1NPP2WMeSHfqCc5mUcG67RR+sJWZg7P5iG4FPnFmWKv1nwwk+fM0IIA5p7xmHnj1zbj89sN0hc81tzI6enBjIyPd6P5GXzsmp9IRHKS506SAEK7IxfjQLxkNK1x+M8YAYLrD1qWXqo03kTvXgYllmtbguZX1FQGpXYjbZzgqSLxcXTKqQ/GhYqBJzZtvPaYGODBTozt0Rw6/vP+hTUJGOAYcEWWr5Mqy4792lLWmElkf2k2HiF5268DSkEL2oQl+VXl2NXgbfa8xxQoI7lpuNkURcA/pNz/go3LD+w41q4eQy20ecjCwekr0XfODump0XPUm2vvNfk4P/tAVA2PLhl21zoFOrSKjd6D1AiMtz/f41uWlBWCDDY4tDRMhyGsls4GW7P8b0/dGx6VTgC6oCCWxMyJyOgl5RPaFDE/EzGGGL9XUm5X9L3crn0DvEELm/Vx6HwlGWtnfZK7dA8/zJkr9b7PBgLeFlmXyfUBxZHF8kxgW5tcxvkEz0roS70jNLvk3QNCTUIwCHnqk5NRDEaewDCzjTR5lKzNzx1RHHJNiZZJ0lXrAsSM03iKPyYNdJfMwUAvRlKP49yIx7XS9cvseBWVvGNAc2I0PmR6Xc9KjqauqjgG/Q8i16OIPtQ2Ll3qDkunTNq2O65AEFG5qycHaB2/159N4n67iMEpyNowNdkq/ZlDxsX4dRKNvBUJaYqhID70qa2Rgq8+AzqTaJhuYrqrDDO1n/0rWggrBcFsYwo7ujJZblKGamFf+3B5MTAXNUOKn5PW91Gx56gtqTqz1dYMML1dFR/KZUZom7Wky7v9EfKnYbBseAvDuBFBFFCuXnhvWc/JS4ipUIe59Ls/kL+W5lteo1xt5bkJYfug17vGw6cqrOjTG4nQXZ+RbEDCMTf5JZ4DBcuVv+tGPyucc3B6R9NMF/lc4ubulrqcBPhRUjGBILbQ+4uBJ9eUHMAj2ijfMskRMLcV5FdgqIWhiEvxNVlZSRrzTzySfBUjZHCJQtbgDZ8nRWLwk6rQKWD5aSHuJh0vBgvlNTP+a4P7p59l0FYBPtoNpiFl/dOo05KHesQCueTxj7IB6io9sqTWxTu2PK2C3ACiXWNyxs52441hxg3eco87pSRV1NUvQeac35o3tgUpXtmtl2yHh3QO1mQ55wSqIri3PtVxJ57l0nOuyav/0ixzLEq3QlLZmLb8Y2JVlrdQMjhpcC1j0DS+VHrYIB4JgyXacVu9PCRoC5Y2+p8qfeJA3OFreaabxWxz5omyn/l55+ufQkO5e9iODCdLWl2crwLrUpaMCi8EUcVXGb3Z8oBCUdwuuohn1sivwQp1O+DaRFYXIbHQibdPfq4dU8WeiYJ4WKMlNEuQr/BRIGwOrAIM3Ppjmzvh27Lyx6xK14sUHgNy2ggNG57CBbXznFP/0NVrUQef5mMdso3AJ33SJxInqYebzcZ2pEVYHYczXE/+mcptBHb4ANtGohwQabL1xmFHav/wFH/al8TKjzGnYiFLEifJHL7OJD0x/rtzWuCrDToEWPBNtRKXFZqz/kBH6gsxzy/TUzP6R+C/A456FbGm8soK/uYyafgNmX0re6fgXeehUvtDCXdAUJElJt7AMv+VMdIrrOK7TAaHo6E8Khx1rq48yOqMqtC08so9cQh/AV760CiEtSm6PBL7JKCZBV4m7t8Gbbc4TQRawpuwTFyS/vt1JBnAQUBDPdEddlJlVAfbGy+OKkohOw9BB/JY9rDZQK1o/kpfl82umHijUnj0gVqhJCsrzUxYl+ygkRPDEPZqUIo/+AtsGplmBSxL8bUE1iBc8lCtShF2iqMC1DdHIH1DcucbSNtxOF9LY4IMng4T9eTYzDr+gnOPVxWBYMambJUexTzxyvFOneFg3r4FBEHqG3QZRgnKISYUQKv9B23A8vhFRe8uNZpBtiMtXqOQlVEbO/HzkRbqVaGj4s2XRVlhO+ewkvEaTp4pNLXG1OVF6ncxf3Fq94KmGuG29LLsFI1fuX35J0TsRNGo+TCioyTrXLVEjPztNVQL1/q5tGSrMPhfJEaQxHcrnqhVVqN1gfF+JK9Pgcud/lGa+Ig7eKQpJuUN+PYhBYQ/b6ahi4nLNe5+d8rQlfK/gl3OQ3WDGWuUMOt1YlBKoX+99JWlZr6tTAVgDF0NSHs5fqbU0euO7cXKnvVB3taBFHP6/KKZCBfGqzNo6DgZgiAELh1EYOni64dmOWUuwAQCKu+L8tnTFLlL6uKkaNtO8YGlOBVU9mQFYx4aGPgGEI/HTycxYXBClfKbmSErtcsuhalOh73FnzRz/thPjvRJcRwPtZmCHs1nYjivLMWWGprl4fRUOlrCDiwNU+9TZuaVsuCxj/4DzKfcla139igH7Z+0uskWkEq/c0mrsRLlVpl8ln0G77hwK9rLKc+RLeI6KLKy3Um5C6Of3qiKNoY/7ad3EFvdP4VICsuTMTii/bee9efmKAiym0A+l3hS7SofuEJ46In7BEO+Kf597wnd6s5mL1d5zNRBdOEmfNKyPdUuCW3u/SfFQes7nYlfV/B1DOE9p/pmgK+bx+eZdZUMu44uBGlaPvej5wxU9aumiyt/uCCZ4PyO0OYfFAMMqTaYcI8GxYeHO/3tDJsJisLleLpS/gvPLbEksIm3R4OCJ21S4P//uyzQ4EJZyYmWZjtknKJbz0vFEi0zDWnZHl4kvpMSPlVI8cEAG5r0JoNN59joEsMhUcPZ1YtIDYX9cnR711x6SQEnBGgTz6d3b1iebIdotlgqE03w87xlD0+qEykcVizaOB3Z+ocaMGWybZTIdpR4niV9mDm65EzKK8VQq59iMlABk54A7zAlMdkYNmaRuWJN+bLJ7RqEZf8vrpM0+3cwD0NctuwJJA13JIJVFlPStNIXzAW4pp1OnTx3rMZQfF+o4p92WDkF2tx1MUdC14Er9l1RlYsEYnOubj2IotL4tkgKwnE219ZsjXb8PJFkzakaWhRBJAkgbR6myiYFsJgC/lellsN9g1ML0j4HX4rwIzHbq20FDkBdfqN9SUnIbJf0QQr+QxHx4f0kRekXaqKZYUXYMbRKa6OObLPOaKGft7xFAgT2pHuSw7kdfloER91zsJPWQJbkAzyDFkkgUg80kW7n7n+WBN3CMXA3lU6QR23Ipx/98577h2OGkpcp5YiTX/TikBkcza+iwBGNBi/j+GwW8tGbKxpiSNEQqUDdqfscbVMQ+OSYGoeQKSLwREfUGDjR/emc+ZAJsy3sraTZkpHFZAI69dwO1dvsOw/Q+O/2lgghmEsk6NKzmfI+OYuOG2UoagP9Le/y9UABk4VHk54+6fW891qe1yVDT2KUc5hNeePBaQwVb5BQYPt/+2xEpqsHC4GY37hXyRSGvfwYa7DGUDbMKd8vud28h67mpOl7fe4uFRe/HOKf3TFs+9RX+QpL0+C2b4R/8VfkUQOABt4tcaDV34nU/UFXBUDvPYMYe0F24AZPIWphY9bLwt+tWvmuWwhvAgPN1rxvo3hpXvQNSPsVKgFUKENrmSCjWPYCUoQfJFpepI6oqpsVwJt6IlBFGO4soABNOS2KtnF9P7E9sSLK1WWOdGvYNhxKO5/D5ACMSM3oLy6XvjzPe57hP26DKKsIbhLZqcz8tJOcm1zlVKV87cVqDh5iOgGkNIKp7JU8eBp4VRPvv6peu3DR+ROhro3GOnpo6Cdltkq395hUi+pDXzwcONA2YjC4BKvX3JGZi77wJboSzwwPelRCe5297Gau3hHdjkNfDMaoCdfo4BX1IthlFNEHUm2nTsuiPe/rOux7FSlxIwT09NqnvyBmWQYcleqlPEreuoCZRFvXL07v84AxlxNdJM/atDmCjpmzumIoYOf4uVqV/8ZnSwV78WW0S0R7AwI0EDq4B6IaI6AUBwPrNLY0eeSw24zQ6qVAgBGW5aK79Mg+Skj4XxdPl8axMl4x6nwmnAfEBIju1ssp4yr/gdi9kl+ScGW3r5NVqJ1fXRkW9O0A6JBottvWGypQioSH2C46bepNpt5dXRK28XY0hseEnW9fDBaUMHziavWy8Q7jttulrsjOd5WunqGz20rPiwX/3fdKuQgv0g4CDqGBMamo9htCyKqN0qTOxWP5MmZG0lur+eIMwtcrfYqJujT19J3dps8mrCySt1MRdmlNIykG8cIMszw/nMlRV1DmpxNn2zf3gflXm1sXSH00EqrICj29dnyNSbIteQOqjPLqBf2QDDVVCAgcCz7vER9m5X4XkTIeB4ppqaFa2UHE05QSkAhs7FkyPf40UFGlKG8GnrdKq0ZLUk9m5jleTBwhdDsYP8HCDKRE6LS48qLHD4pvSl3XFvmH8KBEmyeyNwwJzAJQd8MqhmKsdandB6Ec1bHOw8agmVGP/vvY2C60X8AnR2r2HhdkUbclW9+ozjmxmipA1AJIZnqxg4aa1Le0RHfU2vkpf68y/rFMYgCXue7eNqxoS0NkOw9a9/WcDFJOh0Grb8zYjPgaSDENIFMCM0H5OlIqq2r2FKGkaQSMzVm87r9L7fysa4xxVMD0h7CIExLBVbCe1/r/WavK3yPhHVe3XBjyVTDOqI4/90N/Cm5KnqxFrVYOHbwMIXa3GwNwVME+38OpXvNwD6l+jN8BDCRDEjGDFC+WObTdm+5/tfm0QeEfVUYFtA7gTobiCnl8rywroMyBHNClofz+W7OhssrGuos+fRhh8kBA+Ni0fYdhKK+qCZaY0LUDpn17UUKCX6dOZccCYzSsD2iSQP74pFnhlkOzACsapdT20zbjF6ZqLgELUPT8IglaX38zP6zfdyBF+NjNf247XNtmIz4QCO5iRy/GcS8jjaWMfTxI3EbUvzrprtgRQDOz/eMnyVQVbbFiTMZfhfQLeu+j6iY0Qs/QYGFdHefwzAYuVpPhVZK/tXsy6DAioLlmNDzAu1eQ5ihCnobO+MOZtSD0+uTpiOAvPwGWf52xDUHj4zbdFtZULPV4c1TmWflDGMkg/Ia6kPHprHErwFTGoBg+1D6oX8lSPdz5srAF0RbktUTmq44+USAYYowZQOVbM3BWMc603Oy9SQD3buNTgzJ7yaMBbo/pjkzVrpW5xYH0Ra11ykiz32vo4nBg9Zvm92KHWhJm7uQJV5DMPA1JHBWBMcjz/uZupwXqjoTffeHZ17N3waXUaR7cZDs94ewlhsbQrmI7/A4zJDUZj0qKiVQhn3f3AneEhDwl6GUdCBdKY14q9n6ay58twW2PRXXPJ6UE6TUs6oqH/0xgDpP3bx/mfcCUy5oo91agCPtpTfowGZ0tyw5mIOsUqvdURDhjuWLX/WIqaPlYx3zmJ3ahTcxtC5xQgKWrQskF57LaOvwYN0lzIwz/joNYkiZwLyB7Joi0CsWWRC6SapEN5TClIisNQtNPmfwKaKYb+Hguo76RtcQMXdRZWjEJNHq8KZKeg/uWWDOW6aygLP9JDrNNW7JfWDyHPR8GL+29zBAD5FY1WZXsmYfdKU1VTLLzAHERJJGTpwKZH5k0uZrDYM8zG9WX+RVDM8bsmN8cI2wKz0Td8GEq9T4DvY6FuhMsqPGHC1tkLdxuwBYP0Lu2RvjXaxodrZhKfkkIwGcfm+lFS4WMFPCz3FwWwuvNLNqv7c85xnk3aXWl49yCW0YTzTqwyKuKWSIFJum5G8BBjvxx2yDOZMh18M2WhRGX5VA0p3eAilBsGa54P+iEat2c0lLnTrXg7fzDLJrjO/213hRmT/92zHwHShntUiR+9KUWKWRcx9OrMWfefEo/p2FR7dbNWoP/P/se7JJUfBzJixcPvTzMvSTQrccDAmpwoLnh6pnsAF37U9Cakvwb0EZzywhYhfUyAZ4oAu4R1X55yrbJifKRbLIC6NaYqZxbpzV9ec4/SFSjJKEvmVGa9tHfUJayAvrPPbVHNaxlbdJOOn7f43GTTdGGufXu/daAhuYtol2y5rFVUxlDpyKCfYRz3fOyJZEjhxizetlF5kpK8kUuEpKNWnSG9VEdmcn7Tu0/U9Pho+IZiTincXepD9zQXGusmr6j19TKRCe4dmbGmRl1cDDNABYeOKT51fHc6+d1Q9T2n1UMmkd+aiSUgNIrogqtnInezaEs7HmtmpjKttWg7ulLhPvEEnGE5TqPY3iCItPzYojGET4V755b+cNmqdG6OBTlbYjDs4AAp+ho1Iq8R/eWa0/FOyB4K5JLQ/WqwpaNPuaoufHcJMEld4peiw/7uIRZ9U4otV2lACBY2PfSUUu7vJ/iZUtvPoJmd8K/BmbnNo2iumTtQxEeARnjsHdzf1JrE1L6NGFsI7t81c5GCgmWILKM5pWDA5HO53I6aju6916JkUl1YcYyk9Hwwf/waKzGbNaeXD2d1jBd+rriDyPgR5p32kxAb41vjMM5QjUrVztISMmbVDBnx2qArnLJ6ECRGZcfK4U6LCAMxRtE+Y32MobWIYqbeJLCsaF4pCXyZjPABVmN36NRAavX8RXO80JuF2m/Snmg2NL0dSW67EVH9I4fcFSjpL73r6ohLh/V+uK3786Tpz4u9p1byZEEFVjn4eK4wBNeQ7DGhdbFbRTt6/9b55EBMfJGakrqZ4U+Fgnh2uIpidUcG+iBjHE5HMRX2ZKkKLyYQElkw/Kbj2w8OvDaxd8rzWoSUnwkiP9DB4L1FBdrrf9anTqNfPehHTBlyG9cgcQLrR8tQEZN9zuxs8BV1Zf+cIk9kSStcCODphQCbZP7NYhgTuqPh967gyo6DhJVEeM/gq2arEo3NkVtX7D7mzM4zzsjwEazeZbygY6xwP5F5NLqPJ0Hxncni2XMn/GdHQmTbQF1zee4LOhZaDlBzMZLsKXcJ3sJsBmPODcSW/FKYiVgzz7wLdz0C3bFpTwedWpIZzG+H0kpS6hOFF5yNj/xUGHEQK75qxYUFuXq2vFITPVf7aaAWUF+eBV5VbBqFcUccHNaTmGaDdRTdXTurKJ8ATxX0DHWz2qNhGP4nrYJRCKI12hvvahdfR6RlR+zca42mjybVuHEEGrU2KvnHy9+mmlQDH4jYHZKC6knkne5Q28ldgrISAF0p2u8YVTy2bGLZqUkIV6zWDXi0DuZMiQhOJwUgZQNnrjzpboxif7CaCAFdxHukA5fPTubF6aLOTWCnS/EP8ZSOIyNGpkn86BVLEgxNoCo5XDdJHdnSB0Zy+5O4NQSsoKdZzikwg0eSvXAE6j6WW27irlXjNHHxiuOY/LaFsSgXv62JfK2/O09r1DMjpxv32Y457Wd8wFBf9V6i6CdLP2Z9qNFsxcP88S7N6b5FAkZAkO78T3f4mpUVnXed/QQC1AAudBr+gg118i202+jHf4m1tBvD2iwt/8PqoAWQSajReU2kDJ91lZ9cqfgKVbzge5mUlKDSh7aeClFOoVz9UEdTQyNyjj+u7JaX9DWyqtt6955fcvBJF1aKEjjPQjYV4+FQr9Fnd8NqWavBRL91OUcILzXVselzvLQtPmmvtdhkUNi8G+O+b/qcVyHvls9lJjRGbe0YWtuq9zXA02yIjtBjoQd1vY0EmEFvb3u3xiPt9Wix6NZ7ljWQVbw229SAPrh/hsIECHTLmxKxWD3/K6TUieQeqJIfpcIoOQcgmvHDyyRUevzKImeikRzg+ly1+qSicz7hh/DCm/39Fyk6M86XNkhcEgJKANNt1matUHBPuMmqkqR0Irsee0uIofjg8efSzC4Ml6OzAV1PuydANODV+SaVqKrg8qTvT2ROpiQHqoOAq3EdFRo1QW+1ak/AYmGEVA4cF99A82GRm5mLHhLHqOSqBVNF5d+tjFko2morW+bAtWqE3Mhi2uYPJEeL+puWOoJaLV9uHtQIj2GvjqEnPiF3gSNk2kq1rb+v31DDwcalu1nsmfE1n7J39uQgliDyyoBoudkZrUtnIUrDsC6iGs/DA1YU+EpC8VYQ4iw91D0O8kJIRK0Zo3YzUzYnm6vxq+9EDAP5SWf+Eyupwlhcyq7rgfu0UcsS/cyy18bZBvpooyg1q0GNkTJ+MwtXBtDoaChHEqMdF/a7GjUgboSb8jHDJrfqRhQ/bbI62r8nHoOa6UgOaJLxxg1EhXpXmkd3Rch7uNxgpPzxP/mBdrGsygnoth1z7Q/YLYJb7LwpuGREdhP+ef4imi3CBmJrq9pWR8/s43S4uxqNYHUv9ha9RBACBhuz+S4xTQTZaCKSoDHnxC8CxGhiHczvJUTlt4rrWQpu9+AvsrR2wMvwqpTTd2ETTsO/P3JJiLBUvcs0TXCPCRY2h9Nx8ZqMz8XSEqa9ByDLoNM8PxxK/62v/Wkztb9dlxfHsl4u4UjIZo5lD7knNDevOZvFRYHhwFE22lXrX+Sffrt3y9R1DKaG/GlAPLQQX/Hetzpmce0TT69U3cFZSUWj1hcJa25OoCXx3O5jXSizjPu68eF6JRu4ly0GPmihJAcdY54LAu+PeTtHdGWaRfb6RVp9zxwP+2PoTSQm+qFhD5LkhsYuT1IwWLIAUjU9P0z7IOUj2QP4sYABt2vX5hJCVUnjOBPVGQTmwyR8LSRc2WvhlmD4DMitovW8AmruHvsuxxMnY/ybXB0f6jgvY+7tMu0sJN5r4DBEBXa37SH5PepbiAlY5L6+09qF9dbg57qZdXr+Lkj+9ODwIdoY9Ogs9QXAMPBK9sNLNDM1mFaODMVpqeBBx3+/X8BkyPofOmxl+kYJsG1PP50FDBXj0A4uVUwSXOnyDvjHd5pupMiy5DyOMVDjPDi22YVTeKKPxtGz5/wLm/x/DzHO4PBKlriUyR2fdazZ8MZwZO2yzm40RwLqezNhsNT7aqhOqWBMfTbYcyVtVzrROKLQ/cw8h9MBYgLQZ5m7RtajLhjAmwWRubbOysVY9+MbTxulvSqQymjxTj0/yGmowXOk8LorLHbyciHZbi5Wipq5e028xOnXPq0SO1Ei/BmXFCr+iw4toQwld1d5KXZJaq1eDPduqLEuVRpKA9CzB7KJsTTpdrYpMaOsIFM7Wgr9Oh/caoRAohQN6A6HSrmbUuxffYlS4ymc4W40QYfauuqpQ/JTXe2l3gW1vBU3Q0CQWi+YnGMAlM7QCe806vIrrgQmejgYb3z21bFn0KNZj8qMbtk0fubcrDYYwmBhjZezZtAK7N3MQKKCODWwtmN/WYEGctudKJzRB3xrBGIXPbh2oyOsQ4psvw2packPl36ulG2AlW5rvS3xsDrZG0jPgcLNOBZVquBKudvtx5EyYnivmLREWPn30cbkfL4RsfTwuJVSFZZJFh6UkofGq/bkz/WqbPwyDk8xppCVNz7JQstijvxEWrb40THMQJebLnzyY2q2jx2SLecaR7/0b676f5ddR3aDQqQxzS6YlPvFcYbw+8vic5SAk75H9CSsEorQCVlJSk7DU5HBRkzDnV2QtTJe9fsfqy1sQNBXqUXzv+3HDVDSjlHNPKEmNGm5+zlEP/Pa0mLR8hxOG5PeuHfsO4YAaC+btxGwKVWC9Se7tv8fBJBx1n+Kox6GyPB1SVukkNQkjh9dl8s6dR8uwRo6Ep3zrpyoDHwNvpGU0zV5/27gpveUjCyrt2ZF4TOPsS/WygLkfE2dbNXsNDXjU0kggbh+REnbrOGVNbeYAoc4ZX0aRdyTYOFzlRKaGo4MoHLkMH9FMwYlY+jItBYVbIzsByLIUmu7xM7N3q4VtOAzdBtYpwYx/5yTIIJ9yh2VZWg/uPZimDRgASUeaIeF/TU+n3NBLOkQvsf4CKuJi9s4FqpE2p0HLaw6yIcFU8mcl8Jx6XPWv+eL9Uv+Eyr1QVYQfaJcVwJ6kjFn9GSZ3uvbIxaZMwi7x+nNLp60sgdzogotqc5oVT+LDsygUDk+S361me7L2BWYFkcDER/Rx+J0tgDZ6wwKRu7kFtxCpqtt19WgsF6LzpqmDlLORvOsY68JnuZgBdo7ozFmFR6uGXxbySNeCvPKl92vkVsYEYjZ70nSsNQz9WiIy0pcd4Cjnd16gHVj3X+IIr+ZH/gTnYy0JQvVtpoQKA3yqTH8ZK5WAWFLSXjNeHCwtYmaan6uJoOWW3ktmR0n9j0uxSEniCHfobcaa4adhh6U65iKCHer9DsvpoFJxkj5jhGLhPSjJ+hLddzatV/1Ocn1CE5uZoZAMtgkhUYN5zk9+VUjJxOTjDsX8kQFan+fCSw0rK8IhXNp3dynfHXSYCNq076Pn60lpsgbLC41pl75UNjAtdkXJ0OFBP9SOFxYd/qxoACmCf2c4BNjgll3P8P77ikGQPLbKe6Bprf5RR7SLTcoLj+WEriYD+XvlnCQ6gwN09MIkc6PH+xS8JfJD7iyBoSsLx/L/1AzaxG7e0eIP2dxroERhpC6jg8arrg7XQBksDHIJZIPRhy16WjWaucMUOLtxrgBU9rezETjoCtMnBYdaOAagkVHdueRkp+p0+SRoZ4ejQaCwhOiYRYYJC7NsV73oO8dwYLioC3qILoo9B/eMud5uERJdTB+L3gaZcXObntZ43fegezhpmSwHyw4dM10xfsXF1MY5XAR1XmGR9Qz8Yrc2BSBiUUf1wSye1tGQLKtmsheBI0zWEKzJu8/tdWQ84lcWgnXo9INPwDU5XiJi0OyBQbwRH1ahR14L10g9kAYWlDK/0N3VzcgYYursjTtw/2wSHmfTGJsx5NOXmMmVliBLLHGu6G0jFBLZtUkH7EzFzorhlKhKRrLqXXlXpO8crQ3CHEcZLu9XzwCc9SvkPe94gxwonijdizLHtGfLLKLF1cdtXMFa7Mf4P/JQHiBZIRXBzCKoqPaIuvh7X4/SQdEJnxbsIECUF90ZnrLUpBjTXiX4XAc3Mse7eTXKyZp8Q3Sf1S3esZyDQl+BBER4PmbGOeQ+K1112FbEeyqQZg56WiQ0jRCUmP+Kew9A1ZxSjutLVOfkpuBwoSkP4RGNoe7WrmyTXKI6nk1Tnz0oe2Vm3PjBDf8Gwhe+fwAYSAjlPra1TtCj1uu1GcdIAm6ViQn9Srqf1ym9fPIxInLxt48mCIl6DSTi4ZJ+XkJrz2dXWQqhpSF4nNWapdIjJH+p1Opedufkw0xHlr4vORb9BCJ3W8vAPdZSqI7VxbNaaOfqhI/8w7L9horVKv7MLnEr2l2XgUM6+i5Ix58xgRlYVxa+ltEdaupD5yktPEOlldMIatEHTM9j7h7hxVvQPEbtQP6BmDdVaPz2u/o7+Aiy4lsXGE+Km2ss6828uqY4y28croxcwQBaemP2+4hEA88WmmXnQTmIMFje/i5qVzP/dynhApy5GEB55hU7+jPdveexxyrULupZB1hjyqISvKscuKXOXZUnp8dPLlTkOIlOhMu9t4Vx5PLPIDK0SdUiZ95AlS0+/1macnq6hXYYejgXigt9NePxN2PY9CC0HftH0q8httvBeLZ48ootbmSIZgK7/Wm1zqq/lUDZBL6CYC5KDyLg/WfRKIQMNyN2X432uLr/f/9AoV132hvDNWvIbdgJKmzFwnqjd8+MjwrCINW480Y/0ve7EpvtXHg4WzJv5MuILg89gjdMk86QRO9Q/YKdmb+HV6eMqRTq/oudO/E6zvH3NzGgHNz/zI4Clc1kXUMDTrnDpBI2KbWe//7iI6d1A8nhX4F+4tGki7hfsA4VOK83fdLmcdAGqQRjtItVXa3J7vhE+x0h3K+fVJpM2FZDdY7gVF9ME1rtQmyQOE+F7b6vQAUregqMnIegpxtIKRhyTvfx+DFWZLf+VUZHUO+CicH8sE+9LpldACFUpG+WMfE56X+8xIB5l+Eu4ij2kBUNYythq4o1kyIEuD1kt9XQ97gS9+waaIHokWae6jm/Y8Govgmk31Z2M0SBZAIeudbA/y6RkBys3zsWVHoPxD73jIs92cougppJ3Uxf/pQcoOw/qt20epdVJgHhT5/Rg5mNf+bvQ4LJnwSxs7VE9Qc/myZF4IFBUAom49bMTIghVW6RJ2gfXkP6ovc0THTEpxZWx4zTkARVTfH75vftaIkZptS+h3ERciwL+zFBfxojqrdRqqdkYWAVmXpf+ueckOfXPrN5b9eEwl8OJWgoXwyPM73RDn5ix09+qYTUbhIRquBAIHnO03H3q5TFdSXzP+sPDF+FV61ALiJwLttts7/NF2qhFJI57p4sixeZfoEtm0Dg5wGwPCH6tc6aqO8oe5R+IkDR8TuyFEN2w2kBdTxxvejaSoap3bQlCW4svakUIjVrpe7zCbbcGL0xSe/T3hysCfb20Xj0oFitmmY1Q+1QAbHJj3MfeeZfxuvYYoF7mLnb9sF2SPQEFrRwt08qapY0ODw4ReEM3TamVg4j3BvgKWWLIeWrMXPSM+I3hBzjUn6TbqMNWIPDWj5FBYrWBwXYB71BOpmX+5iYomjHoQ7LUcQ867QRS3qZXYnBbLy/FO2tEGfzE/rGyNxED2nvMySIIs4Fx3fZIsIZn/tCkocG9krZ5TWha4eDI3zmyCQeBMYsXlRDNsMfjEEBFh6/Qhq12c9IUp606kEY5bwbG/QnU+IAyJhlftn2f8iRL5A7v4R9oAJGU2GYjNHqZUGg2z6az4YMtQyXcV9X9WBRlaYnfVIRsmuVGDhDBIoG6C8AkCK6LdXd0NgeShgVCNpx7iacd6L5r4rVi1Gco6rCBwBfwyIJs4Fhnq8IZrURn9zhkJ2FenUPijnbIom4cDNJT3zqMfvySGt4ko2KqwoGDH25QLfuWMbcuRhuQwYKgCX9VgClxETR6DM5DNjTv7F3ysG0kI8NKZ5AZDzjJnJD4VVPwVR/fNKHpzgM8QQGSapVEbQCuiSw0xjHphp0eDxZeames1Mp9WwQ2puhmhj5ql1Lv0eYJEpN8RFa01yfNY0KZkTpYzcO/Ckhbb36k9esVXSMPl1G/K7/sR9Mcqvz7tEmdFwGaO02c6azfLxlRg6byx5y5aqHXBgH+N8X+0pGSjHsaENs0tEcJU4XtLrRLBJGIFVEe3TvIYkvc3siaU1d3xi9t7TPq1L/+hMRqojqmp8jBLyo7KEuYZeOKHFM3mUkV+XkyhiFhmwxtLgSsGMbh8fE6hCR2rTOIinlmsF74yj7IpViQkLbyCbrvDt5/yX6I7Y1abrFs7QBI3D9QnlxlwbgZHvFTKeaFKcI3NvUQFQURMimQ5M+eF6vwSlYff+7/cWpYmvPrIh9BVONzVYOe2tQdAWWT5fJSYL5Upt0L6Dl/pZObBEdo+FPC4b2+iU09eJ6vb/kc2/uq9CvCUV9KB+C/CPAJdOu7vq8wf/Yxy8081PEnm7VGsIzzoFYnDvfYTUyPhdXV2yICWljxWqkyEe4e1n+SZCRACDyiLTdzj5Dq5ThMdA+CNJhV09iM2iW1Pgf2XiLDkIpNo8ugDtNdVTMEBsO+uHzrqEI+EwMOFr2gevD8TkmyjvrYH9Bw6rkARUFwc7DRpOCIaACn2Edjv7bmiS3MFeVgdj1y0Rv+v1DYqY6EwHst3CNlpq6XBW7Q/fu+F1R20aHUR5Z1LIZ7wvY0E/w99bKzAyUjG7671ZUYF6F5+Ynv4Cm0twLZ+GTrBp8VL/LMeq8XYgzYldrklMglyWJS7iWBhdA5GraO3m3rO2AorN4N62bHcpIhG8kbvIkybnRVTEWt5a5f7iIYJN61OO1gLp+lMKa9CuaUR/y9eoF3/jHgqh6iPSadglFYQ/GTsLkzIXMTFtBelXwJHtvmQtoXItuOsLGvL2IK/M295YD8SaNfSND8zTfgUXGYQRyrzsPYC1cxWOto+YkW9R3EinZBFUy/5HWXF6WeqLcPADGeJH3U642mjV9hMqA/GY+7DcN2bpls25VizlGv+FyH0qhDmmd0gUS8y90rDX+Xk6y6McJ6S7gM/DYcoTHv/2NeKg4rjMw8TqrlL9LBcLKWQxtuJxVX7ObKDCs6fNlfUj6iRrGPFdJD+ziFknCJKgixZ5RJQEQZi2MefRmUYi5crYu3Oh50a5Jf+upvNzFAo7KhxO8WRvoqnLO0wvvdcPsaVUOIcvfZoUierdTyFyoxwnJI91KCBroEodybtBGshuLseewOL8RJP+H2Oqsca/SYdeeRtivXY+FFQeTQ33eeX3DdtS0+wgHXVCCQk/CkG/az4aY+ExO9eyJRmpeKAXose57USPZEoRKo6m3uIY0rsGhjw0xAS7X1DuBTFVuo29v3dChgu70cPjpl5/xQmrPdA36PXNZRWOszr9FtTYYxG7dHUooremnYo1QnUGWsN/xygLq9TDGLLhVH/pc4pD+15uGiALFzU4PINmfD25G8LAsJea1dQlpC1s7rkYJUQqIwFNDY4Eh0dawLn8fCol/rhUCEbEHM1dJlCBpXxKfm7zt/ZpsbXgy68nEkEoLjs9rk0E9GFFZoYLZv/4qZR7nl7qBbeALu0FWvdWoNb4hCvlkME+i5nbMafn9uVxxXlpXBlOxHA7IKvKJLMXQanWkuK9A+2VI1JSDoY06+R0/g5TPJIHfO3roljfhM9ncx6Qrk66xY1H0+2UgF+oQgm28A27u9+T4rGo0sT6suA8Jdwthg1T9gojZro33dFb5pubkZ5ZHchLzsKkibaR3DHxf769V4iImNuKKrpgMMK8vcvF4YgFx9Asca63MVyNPtp5+zXPASns3bwdmsxnn1S54GTdkB4DwX4L7JXMnQGqIaS+mPgWxbIZbFcDNIrMilEIEGFczfvcACtmReTyzqnpITyfsh5QK4RKX9ZWtvUy4bWXjsLYbNV7MrrZsT82c9cmf4f8I0sSYqVIlcUYgI782imxBuEKs3OWcogWDmwlr9TGLtVSSTlyzHUW4PU9f7Wv06gLioBSoAf5esTj3FD9kKtTKQZfTKEIOcCYWcfIk4IkcfoFGKSLqsHhBpBOTfEJ6dxkBJXCSlknDrb8XJYO4/96XFd4ThAg4/Heg3u5p1kP3QG2yMuUrty2cFQaT3cWMABIB2diEu/1KfFFSKbfjTp8aUhb99C/ZA5m7h8JWsGwT5Ml9Uhw6CmNHyRA15TyVwIsOH0I1tFeVqQaoqT7wGjyqrJ9bI+WtpjMv5CAGQfj+k2aPOJZ/zLvxAtkd/Bzh9BZPEwVE0I0DI82uWK72P5+mHKig5zbXYrQE5bSNA9/gHvSND2qLV3hLPnoJp5q/NeZX7mhb2aWf7qkF8iM4HEHQ6YiYA+E+kPmfMGabHq62QBi8sSJ3yb68iTcA4YT6f+gJb6G3adGkY9eeu7XQZiQEi2fXRSKUOj/zLkyh4R3hOAX6xhT1yCvCHT2Jb9tAzSMxe0RFbM3g6b/VHgP8nyZkt45j1ZYBTwOpQIaFU7nU5focNbiclNOds9b6I+FOnBXwyAf1ViJPMKBBofmR8wg+77g5o3CiYUzQ+KdNxUo14XQc58/GKrIq3XSIefM9azql5sX7KlTsU8DGT1HlHIYnd10cJYsAEHoN0mLKcHTySHsjTFesKWsmK+siZFXhlavE6F44mweXOrX6FBoELRrvIrsst4OH+O47VaML4CK/cNrjlTodfRr3u2XZsHCcw9kXLGX/15sm10DYmP3G3387x7LDyVoplrs0pzIvfcy41eb2Ob/wM6tQNLxQKnfSbL0eyYL+RWR09qeHT/lWpCFvcISYlmdF/jMaIWDyxE/LA1tguYOSiQtSqHfgqHr1n/k5nFhnUBnU1J1eys/8qySmWwIplgfD3uNcFHlg6trf2B11Om/f7E9onO53sWHhas4nNuhBJsUn2OjOnOAFZi2dcAvexHytVxIdybjHcEdXUcp0jkab19hwZ0RddTUGjtyulBmpbfGD+4d+oynTEjmMlYS/pfoCyhEk9XbgbBf7wtFs5qleFrCmB0NrUYZLxmw+2wFqYEUy2hYP3ZxY8uhRZeFXZfhOD58zGBx7lo4yMjiBc0zvOGqVQm8d4tk1CRpyGJOGJWVU4EpHPxqgMP6hV7f0IxJugziIEJHavrZauRXe0/THYEOKpl/a4jm/fah+oAzHRBqwetjJBSjNp5LaZ3ZUNQElZJBDOF1e4muumSHF6da394Cvppq45QN1B2wYBfbx4Y9fnq5b+heTNTCmP9XhMQGniDhmdhGzfPUY5YPvTUhEcaaA2ucNDUO/xvaUVhXDIodrM/05R31bnFkjUjn34N7Aiuagl9VB9SjYsu83Ws9eoevaZVwZMC4uiZko2GtNzZCyMHRq6GKhvEGBiM1gLyvMZk3eR2dGcn19YX72JnDBY6RWncG7lGAg0YZR9lyoCyQ13gtnyBi05gPlO9yOeIYGqQrhgRpR+pAvx4czdaBMpVI7SgZMAhMSsdPUEQ9stTtwSabBmrln0uHsOMhDvi0bNRUWUmqnu3eiLgzk2XKGyTaHCe59vZZcmDkk8aOO6pTw5H+DWALBPMcCOmfIz4cF9E5zesXbQkQNDFk7vlnAcetbpid+Ce9MnTb3Clhv0lL7lyusJYCpLpalVXmQ67YNR+IIDh9vW7XeWnU3FFfdnO0yqCON1josSLVMTTaH/T3Q7Y+gOUofDwwXaGyGRB+4GRC2kk7zANlgd7PmE5kXda4IpmTbP2OqUJ/O9EXW4aslQR5PtYy3tNMamtk4Lwzb6WIFll7MVBneG5vPfEGslblvK4unzLLIvceI6WxhiZNc/nr10k9nn8ikKPz5jmA9oC+lWIE8QR4XYTcO6WZ7VMORykmWLBbTE1NQc8/TBpYSaYjlsyOK50EEwZC6/hyMiltFDU/OcVfSs/4s0Rk68qJkU5mIFxzQcySQSzLKmqQzkbb2ZlC8MLMP8Tt/ui2UK3r3IoyOWjDNfAV+2/iYAbaU/gcEuC9PqZbBCpHpobrsMSJpIpAbdk+lZArMaQfdQP2kY9Krk6TsjNb/ad7Ghc/HTlJyxRISEoijGyuLhUJB5Ch35PrR1oibmRE3vvhC5cWj/AFFMlliT5ELHoj9ieMLEG0BOkVRUXKuv2bfaF8AdXORnzTtMfXYqB8UVY5TvybX4Mkg9YXaiDDrp7KV8wVHpmx3MIlmRkznG4Q7DbYNTZBEi2yxQfQW37NrAOyCP8AXP/EHi/BLLFg/ip1tleZLojlnpdzKgSmJyi4IRDWNifCtFxTRjzh2z9DNa3KUZLZnixrksQWHwp2gRkmuu7HYPHYIQrdjih0WnNb7CL7hFDLjbfGaVLQh5Fu7SHtZTqDYzgY4QnM/x2PC8v6+qmCAMbOvWxZOIxjgpUF1ud2/e41K1bJAXPTZ0ctJLsigJDqNH6fNsXGGXNx7cwJPgP6INK3Qxc3ylfv0L1e9m37k+CqkJJTN6MvvQuae8WjO1l0JvBh6yHIrZgf/Bt/DNS1QULgHfUCLdwH6GVXxn8JChzrTEJL4dTZGD6nCwPWD+eeU/jxNc/wph/HYngIZcSTOnA7ZoHemc7pUYXx0Nr45Sbce9CyAvFnCzoIYbXxoDXYVwt/7sf509VEfvoLzjbFrRKr4vntb5dgeDiwRX6neO0yQZsOSoVjVvOOSAuP4PT+ezKgOTL5CMeBFh5fTyCTneXHNexLrs1pBpLHH3kmt/Gi6938ByjJyGR1wM7/rvRQQoS1drQjQ0vefqIJKlavxUAyi0PuILAyGGfaeCzz00DKjY1cowpRuwwf7rYPEZOByjttnqj6EUZ84F5gZp+4HJmTpMjNq0q/lyKFhwHKG0wkVp5h+gESx82VKGR+mbao8YOh23JnEy+eNJ45yos7d1gFc6GC67dt+OzE5TpAYicEpe2YtuuIHNt0hQpdLBdS8eqx9D9RSrya3h16jYIp9Ogfv58USTrQa6bOJgC6Fuw3VSohoUOQpQ/XY+PVKw2eV8Q1N6yxzymT6QIiLizm3kcA+jtFVJVj/IlTTGr7Tj6P8fQmh0ag3AJfRbLs8nmEQ1QHGUtaUv9djTgKNG5hVLyiujHLL77tNlHcYLwqquU6Z2V+WMoDwfBiMDqK39/tNhs7dXQhQTHYkold5VgNmV+WJr8ETyoKTHTS8g1RZL+KCbZw1LZoGTgR6eNleq+XGRggG9pbw1+WcW0jzJpvQle+pDWTA3yPaJogeuohg7EijR/48Se6kjwNpGStelAHWNOtzrfgmNxtH9r1eSRWLz79nRNF5th43Vy+rZ9FcwK7PlfJojQmk6yDIgDVpS2IJtFflHkl2pdrA/ZK4Grks9dfURGUNk54HimplKaYEZX5dE2M9W/60vxTLBE6XeIZ01h4YiHBHGMX+eAHZAHpSk2dFZUbQL/ylbq8VdzyOCnwzB532xAsz2XqmJFNJCZ6YuvEpyZtLa07GuhPki8MeZUI63KN4jC30SSX7/bWpsMyfpqrzmMI+cCYlmRUB0Mu4kG/untuIlFzWG2JnuSThOvNB87WuxDF4K9MPLtApA2nPV+2yMqZtQu/5eBgMzg8/6FBhddJz3kV0onK4Jbo71w6dhI4czF3ksh7/wVe0vAH8B/pVGb1v7xscPIhg6KL+hvTtq6g1+kCPpBURUhkj6yrfPgZ3/Xtc22MaQJp0ouI8smF0IW7P8ZfkCNRlxyoz5rOlXJ2YoBYf+hZJACLpIW6Ecg7s2fptIWtvuAgGvGV7dSNLkYv17ghjkJQx6tLucnApd6V56PAKNj/7Yyi6MOC9uwvXC4HnQSolMT49c6/5ZRIfWauOyw+arQBxET3gqjgZPldHDuhPDdYxffuJ1ityuwa75OUwVzCfQ3DhhKAfuieBFYqqN1i5usxjNFwKad4V39gjt2wLjcS1yX59qz0LCyVW9KbSYU9A28hy5DC7hdtdQxRU9PX4vfg8R4KZzpT7OhJe4Rwnuob88KsYJT3Xdb5uQj/iI2b9k+IAL2RazReg2nxwi3ia771jH8mWcStAs1NJu+cMgx6oarFqLe8b1HSRxQ7za0WtQhVKdhOSo+l5MyUbO7l4rtMf8vOidRDYSBoESyiDirZR/lirb7mNwOHR9B00U3KDHjR+/6/p0FjHCVpWNOzJcWfIRQkZ6XmbdXoGNbYi+/6K31kVQSpEiFHlf0XTAzQKDh03BJv6aoldSXInQfAEINY34mN7TGvaILI1iq1F8qQD9LdUyM1y1GkmIcoViAyaqPmTF6srtanuyTM4L1D0wyuj0tEVAfuycGdwEON4fnsCqlt5T6S1obgnUutprS4s5WpzQgzd4U9TRXJErli2+o2bS7A/uISBZhgh/679K/zLda6gWtuZwAvTGNdCbAN9uwZti3Hk9kKWrIq/zDHz00+fSYLcc5sgjgY5sWd/F9nGirgGojICMTxUzGmVVyjsC+0iZ7i++UKuLA2KCekIgylXj+DAZVKUFgBgXYW5+1bwyASMUltB5MhCcaMuivyyhZw3MJ7OjjmJyH+sH7zwWOwFaztw+KQpl6ETunGZ4wgXDkkep9RDpXHKdERy5R1KfOfi61l4kXklOVi+UvIPbGuKxTqSuKxjgg5aUU0X3V/EKdOugbYyeYKlYTyfe6Py6u2Z+A0k4k2giHiUVqkoC8MKxTXxmChSs68WryAMhUxyo84ORdwTONcLdmrVJbnyH+ugmyyx9iKEPADsMijuo2U3uJDa7Wnfr9gcycQq006VxIwrhk0FV/BDjqzquNOsEJXdrimGw0G+JVU4/5BNk+lE5kSCYz9cOOfNBtbtPUoVHnu1jfPwwGlaTc7GUxPcDFnEgwaHh5znVnSwPAAdXz5o6vI34Epz0NKfx11wmUjfW8nTAn60/CwPV4XjHM2yzXbq/EA9hUimpPyH+gMWQc8fiEpaTtk7l1iADxvDO8EMdlaQ0nXdXnhCuCrsoC+Uvlb9IaXpTbhDyzTzYYUPRsJ1khYU6+UMPk1YHn7mE5V3/F28Yia/wrwDdF+R6TmVzsqudzix7NyUGk46wXs0WaHIURcZDicGiV7SEhoVNTU0zgBoaSd49LNnCcmSgWRMUa0JKdpcVnfovdDcIyEcqOXD4VeP1baW1O5XKi8DuZzNuEL/drafxlkHz2RIla0Jp8ILNn7S3fdeg9UhAx9q0+SKtkZq2KsJrdjjyAjr3GfTjVIDAz98414NxYOtS7EWs2ZaFK7+4WBYoC5Hkeq4b/TVXen2W5sxGUXGVbea0PfIOieEzqtacY9iZH8JBwrLvaO9mQx8S8Xs1qoQA5mRuhLUFIcDGMj1wJK/K+vclB5Bl071Plrpq5+L4WJ77f/haemR3QBDVN+DYo/NMMFkqokI7b1nRwuzDmI5dEx4XMlGANd6UtZZVQ12+CHjwiLfAM9yPWaei6wRjGbxBRZUWxyt/lA3BanlqVbrdSdMBG5p3j4Pa9sSfYjUr77zB9h2qpnC6V8u1+XFmGBTP3y97KCCHykGfB6mbCNng2OYcDfFxSp12MaqtqOwry+xB9gUkHlnfW9DENAGqcYOxFOWwZHAJEeIuPuyLr3pc8euQGkJA6K1rmHJDoeAl370hmHY+Wk02WBNr6bOj8owlbEPXZobBQ/xU4JVN9l2GH0nnIedokXyCvBiq+jOf90wECFhhyXgaKiOos+J5t5i72+cySCooSeyr88ULT2mwUuMCLDw9Pty72PByiEtatpiqNeZF8Kladg4jD+8iY+w8ru/PveAVmrABMft/YevFyzmyB1LNidUz8yrnolKmitwK2bPJrQzSfyMg7RCZtnj801QmxB2Hh1RdODJ04NYCR84mkyeVmLrySQsPfWBiZawIPusj3W803YTrCIFZh55a7RhYSAh5uolGsv0TMC+pfZ8CJFMfhrjIkPX4iPlpoVij0m+1EDPaObMhssohxiQLjAb8un88eH/6Z8SnJxoDDY9JjIkM28xe9G9BMqE8CdRizNqXF+yzFoq+i0JXmGCunk6mGwVz7dw0Aht2yZLXL1jgrrUpP84ikBVljLiJmABWcOUt5aq4e2FLPP4IYwNw6/6kBGhUw92jqGvzzSz2IXFoSGkFThCZ6Hdi95k3hbTR+UyOtNXxKf3qOHtoG1+tO5u2H6XvCe4OZ0IsSdV2C22f4X0XRjnoLI9dkAJcmaPzyLbgrWgj/dizWHsrNz5PzGCCZ7zywhZMyk6RrEJ5ucZ5k4Fosm8+U94ZyJFHYaHthMhJSLgoHd9plpggxNFeaBMx2BdSg8d0qM1P9s3xHTr7n+uvFsfU5qJafAkyfAi/gC+OLxCw0uMl/XJ+id3bpdG4VxQwyKvZaxCWrPaRHIy9KcdR43jv9jfykGUTzB9KjyF1G0SkyMHMeY5wgAmcEp9B8ffD92GR4FQExXAD/Rm70xyf9mrg0HowJ+Y5o1trz3gJx6Em+pGPt0PvCVSXsmyA7BLMqIiL8iKyvmFzR0O7FJPoUD5dZJ1eKn4tDUJJ4Umb72XTHqR1qs8KsHPpu1Bas2jM6FoTMyoX5aScTz2RVJH0xso6SkxxuMBg3uUblz4fj83SnK1GADX8ZJtrY6l5lrbF1/ZuSi1BShVAdFnfBB3Sh1SW4KQz2mL+Y4svWwspzeGp4W6pTFKdMDjOxHzkJHkAfLjLjqf+T1Axa9og+Cl7gRTi70bSWjsQM9F19HqH1IdJOoerLMQTLpuVpFU//G6/hsxG6sFsnzMJ7n73SbIizBrcriqJQot6sKe+uP1gONUVuBIPlDJA49atkvafSdkS4NR+zciAFrwoHjdIsVSJKqDxAVrM15uFJb4cUI1Z5j3Wgo4gLqLZDMdNtYKJ1P7oBTGSBKZGTqguAYXj9FtcQ4sSbuwAvEKj0iSHfGzNYpAzMhIVEl+O5tVLe4s/3uEd9Gsrl6bogS5HKQwX3XK8Vnj7lf+5qIQiTSzRnfkEpdxxgU0LAZG7OSxjiHkVD2gFaZ1GjKhIedce7dFUwac8qA8Ut250wwH7O4rKHFECWEhhPfyyNNFFWeFrcIjCB9QkpXuz0U80DXFirexggv6bCvxlzrpYL2A02HykHogeIIum14ATyzZnKSfKNZqYUHkFr6qN2/mPO1WK01C9CpwXcl3fLEficn+qMiFNH5a/JFJBAF2ZZWJ5EP8mGzPCF9CDlr0z0YHruP+6bAUG47CNw5yDdR0WDTjq/DqDE8W+/fc6iTB4r9945YbHjR76ZqoOFAkp3KnRniRLdWK5iKvLCCH/Jf9vzHnX4LfdHlAiEucOADd6aaTJnMDTB0DnLoW9pvA/TvJPoH2GYOwUyBgDkGv7VLqRPzjz9nIWylnnWqIlm7L9YRAuucHIleKaTQCeUrXP0Wnyp2nmBxzeDiVOPsap6l6MYLHO4xg8HBAK3J1dgvBpIjcYDKZexJV5mf8c0hpw5ODKTwdkKCeeTezcPXh/9nI/FlRcIYy8sH3nKCQ0EEucVi+uinLNXGTmZXSuB5jYC2k1R6X8FYDLSs7G3qg+Wa30/SZZVsN+vbIWPDRqs9HMz/V2eXRrxClGwzMRZTnpwuqrD1GTjLUluOf9uPygJGxe+/EB6Ak5UCCsCWe2GLD5iZX8ywqGyaP9CGKOOsQ504tSVjAMPPpKo7Ex8LT3xYdh4QReijfasLvMKd8/bu689y+WY+S8IO9LXV7KYzmOOycnb7imsjeiBPCZgNd2Hd2fLIQOaLorPkKjFZcGRaNO6lp+pBPTMvw9QIbYuQZBlhu48VmV3i/3Y0m71BChUWR3cdNSS4D96YC5J0Y7ZFqMHBW6G9p9pf1EMvsoq2dzX2wSvNYXqdP47zyePLrk+nreb97cBNao7U34lHDXeFQ+HqT8XvcE26g42SyQZmHFRlH2UZ0kohpcgm7Li2wAo0IHMre/0XfRV0HtarB6og11KC3Z7/RUcqKzEPA7ZEJQgZNgBZE02MFT702HN67p516Nvqkm0Gjx83wQdQMeqxlml8LDK0V5SdTdnatEK7C+bhiQ3CLRBupVuTeGYhJY/BbrqiE1SY1vdXZ2SFuvNbcrI6ErGJV8/qH1acDEtu58Cm9IYXlR4R//8FS+sjKjiIPcuzVQ+9bV25MODrRYTzxFJYbLhp2Um/HKOncgLdKHj7tOrMZfxR6CrV1qRAGh+vD5dMMDkqvh3RtFI8M/B+95gOm4879zLjARkfVycAOqjJdoBfgWjWNsJnafTkmc7B3nIQv/Doeol9zaGW/DlpeEHHLSCVAFpPcoRFbXqIB0NIfCnsKcK8GmaNVe1S1WmDjR9kV2WjYdDpu3d+gX3edjZ363f9jQEbUhFXtuRXOQv+gmYCubqBrqUoagUdP7xj0HIFEZg93/KZ2CrZfN9t0A6WcpUJBI5WLyoLnqf11jJxzi7XP7icTGifXh8HPdPwOvmb7A1BFcfY2H1yrgpQ9LL1WPc8f4dqfuE91BNq8DtcEql3/06rGk4gsNyWI77GnH9IKwUsAFlrpUmA3zzUPojorig8/2Cbd3TjsCKM9wxliCLyKPngKsM1KFkqM6bMFtyxYYrU2eewcxYM6RkLIzuCbt2tjjkrWkSVoIS5lGaeH9ACsgsCD8uBJTg2FG+jOXwTTSCvGIWOiSPmrIKKcqEISVvUcMWhHEeUKjXTMdtBmPl8s4WipwTYa2j7rmaa0RNf7IXAOT77NGep/q0h0KdWRo5UPERTufgAqHgtum1dZEPq6OH8ILA+nokd8MXPhCko+zgkNqNlrLQew5ugiVBI+TSaF0+Nh/0lIpsCoBQWlDacVD+Vx3x3aSXTbkp6URafBo7r4W0YMJYL0MnwFM5mzSBvH459mHAZ0yzT09dEXgjVW9/ggg2LxRO6yGo5FTpGQS5EwMSjG3crtd3U4X4CO+KX5W46TC5B/X/DpEipFhWLaE6rpYO0r44KwsS9Ge9H2dfFY3QNvXA1sWHN6WR25HgQ091u/FmxcmTXpvXerH0b5xRi1MwmGmrK4ZAT1TapoD8+smzXuW4xfFWkVDOL7zk9xNtB53A3+dJrIzc5OTB601UXSFtQkX3hWaSnhB0fIWaxp9w7vGQDYtDAeTTDigrLMhVNfLUpJcIxhrMjO0Amicb+Ubauev6gApJbByzVQRTWq047GGRSYgxukHnlk5+xWTYTi31cQQCJ9ILZRJ3tV05M1AIgNeeDW2H8IBJqkzSl9nnKSajGYOD7eMyjHHWbG4SEV8CvAH8Iew6SodPSlX4spOyb4O8XdYQ2bne98jMMolgBIbc8j1VfPhmdPcqVcmf5qMjZcC2VzGSMF9s4863hYPVGq86Huy5cmg6zBz+qDU3yje9vmEr3yJ6kZhF5z8UdlkJdjq/581O9VuCR2B3lyEAfQoUZot9HdVILawreyRxAy11JlpE3UoO/fi5/5omkUs0A7Gvb5+bsteFVIW+9l+qR2dINow47smAidv0bLLEr/yqKcUanjvixyzAQCM5CVzq0r7rDR9M7wjLxBq9eBWRVmyK9TfSJqXHjL8T3l8phqzWGZrkRC5oiPO6C5Wf59fFDP+ituUaiEqytebX0Feyu7U5Leql5gBMTdDPsmK7KUOyA5TuWxjGc7dN7kJKEYpro0VWRhjMArMIGbutu6vN2OSHb6nvd508S4Q34uCRKu96bSAD7YHASNVhzXv8N8jroYf5Y7E9s4wTpkvo3BZkkWqpF0M1vka3jjUC/JuZvw9V8avX+D9bciICl12vr/bQJxDe+TN9MQwDJwOe5HRWZKtCtH/1/2brHVDE381FF3JIILjZf20UTFL4MLwmZtFv3M88Bv1x6hEyoaAlZ5p5QEWzlw8bJBt8orARhiododtduYtJBSF7octT9JzbeKdozaif0LBWL/u9RjbeVNLZ8UV44Ye6Sz56Vn8QlwftWL01WoPryii3ZZ930Zx6Ins/HGvGQmHAD+2qvuKQAs8Y6ublb+Dvhp3Y2NNMjsuzOvb6m4YtkPzbhlctKadex8tBQuo0zhmSxfDIZm5VnEDdG2vZ6kcykYFxgAz3wrkVyXQnwxyQIeYMIHQYT+257jBWD0yJIiC3PqmohMzTC/65XVgSsowG2kgnlR7pYY18nBQ8aVfJ64D79rH2pymM4xMU1Zk/OS14XiDcldhO0c0RhQxiPSY72XYxpiaKVYmzOcEvI1PzQa7+LVZ6pBIwn8ffWvhqa38b3IskTs4RBkYs9i+i9/AqdAQg2IOeWv2fuo5tEcFyefI9nATJXQchbBEQO2Cj3kaBe2X+81o97B22kYSwjOkgZybf53qZFQ6p/N0dL/VnuL1cYTGi8k6rMpkKGx4j+Mc/fcHUVNXTKhyO10FkvHiN+qSbJGepJ/aLXoLZ8RET0Bshv/4hAQgzeS7yl0n74cedqdnmAeHmQ2CyXvMM0MWpEvA2ezZIKU+WvUSaGpTt1kvMloerqnqxHLfT01Yh2n3iD29EWnrQsyjedi1I5SUgvQKBM9G+oAai15cO1con2QFz3UK7w7ZgzM+vPmbk2QqR87fzlbdTSAhrLXzqVfLnWBA/4+5aC+0BRMZ6iX9lH3QXtKU9D01K3HprdilL456y5lsl38VQaMbz9hk0LgquziMY01Znz2WE4ClHG9cF/e7stVmn89oNFUE9NZ1RAc97KzDEWHLoKwlCG6L20/2Gj7/M6PDhsvhY+FMzYRg+v/0jo2gPT0UTCfaLBDRVvKQgUSYPMG1dr6ox7ohepBUS0msHq/V7A6Y9WfKDgSLatqTzwhOXnuXAoFc1LsdlV/Nv7XHqg5TAohZGa1mOn44SyY1fyPMCxL1QmxvhBC7mxDyj9DUnBpbjdAzrBW0mUzZ51brDVW3f0A8oKL6FYBf0mwK6YxDMJogq94OPgpZyKHKBYvJXMfs6u0pYnEn/jPeTVQMK6uY9Egww5setjqwdQmwi1ea0/uoNw7QKPorCWZohFt4VB+HUy/ObjCDdxryIg/y0wXGMwFyftSyf0v/ESOVaUNOHg1aA0SQ0KOwx/oqBneMvSoxZc7SqvQaHcx3ZLg7I0FQgQ9799KuVGTfGNgWvzIMnHqMNnCyCLJMNoNQK9XA4Wkq+6tVuCUREehKj+szE6KlaSwgAPfb6JeGqIyBrjJK/wNw2yPaYB9wHia3A56M5r4OplAvdVjO1vrsc4I8LAy1zqqpo0yM1hfixHeLNDG6ufXaX/4mWxYpqL3hBHpPbnox49P3jj/wGgdZFaJe1JTer036xd0Xak5qCI6SV86xqAdAChv6sj7ESw0SU7w0leCi/08lfYfucRQHdzjO3JkA7lvHw0ouMCSCweP+ms5HlStT1HLlgQ/pkLQ0HiDkuoPtTY6fDW0UPlH3ebKJKJsiIlEwAnWQ1ExfQhfs1IRdbEO6sgyC7u2YqSye9WFoH3s0+d4P2X78UPcUsRitbiSflMds3+5ixk47wEAbwHOouv3l0AUb9zZIP32hh+8n3fJx3LXT4wqErJXRmufydvyJuKW5IkA+rD7B5y3hJGUFrf+je8x2WEZ93MMZZjKF3R4hY4E82J7y0z9znWEXqtnGce0dejOBkrf6CbP1VCh4ixhRvmOXO9yA0A2XQqeWYNfk1eUkRWlybRDBiE5SOOtjudxOpqC6Hv0XRqdL58/dsrEItVoppvb13l9MrZRKzOe/vtw9JP9aAkOa7ra6MbT/3YE4LlEJ5ticKWKe+rOGibg+N20Vx6Vg7J3byZG9+hIpULnZWH4Tq3LmlMA+oUfgAbbzPl3twbDuQozSElI95KSsXaBWevUxIWPQdY+4eolMlTtLwn+51SP6BWFEiioYy+r2Rza4OqKJPMbx7t0CZCtpMKxYQ5JCowbAH7J4Y3Eh3C04j1H/2a7qH3cVo01mg0KjVVR59qENmLLCnQ4LNMS3i2XshEK7QAIvi4D+egZPpMUywog3s+tqRiaGXIEMFp3rd3TuvLXVT9tpJGxjgQLGMKXmGL1MVjoN97by2NaOn0JoIbOQqeBIHTVbBYNON5DD3XP+rStPIfVbuHd+90TJpGh8BlfV0dLneK2wDMnndVGVvQLhvaQxu6sL3XsvtxmQzeFWUSHLeAlmTc9yNQKkXtOJWS9faewS8yotiXdJQ6EI1vpVOHgh46gljSllVDRx9qlH7i2QFU/dKpaQEbpAFUBI/eSUGbpgT2ORGcUGXXDWjQJQo+nCkQVnIMRUCP367os5Iw4Rb3LDvOi+/mwcBozzUa4WkjVcSIURKO3RTFCiY9j3O6C5MBS6Y0WbBooC0nOzhKxL8xMIIaM/tnyEzIdlABrz3f9XlCiQ0hh+C7/bNp14eUvnjcHWjBOSw8E7BjzeXkRQkpIuZSOriwZ8PiOLZxCkXFOQ4hbXa4Tu69lccJ9Hd0F1lxkg5QnAhhfx5WdcTkBH3SibBUMCLPb/cYypz6s4GGDMV5smYibldp//j9gbCEhqanpxLsoexOMik4SOt879z21iz+8V3wgG8CicQsmxcsqCc5QUqOZhnpO4qAFgzHF+noxN835P4xf5EsOcPvYWwtzK3WEYVGy5tuvxE5WZB246SGIDgeC4sMge0B4p70Tse4b6NjlPHW+90GmqnySqY83r0ilaew46qmwi4RzmOcPehbn4YPCoISjQ44RURV++dfU53vcKhkSj6cWuh75tdSSUNMysFwoP+lN2gGTwxOfrha9wWxDPpimhEBVrt6dcBIvdoUbCLTDQDZuUOVVhZP4sATqq8z7Ai0STnGxzKmAHG+3I+/tvrDN/OOTHwR6W5aWSRj+M5wmS5hfdvimlus2z4pE6RV+l6scSEX3XjFUVgbSuuufln4qZfmgBxNvIZmkPtMh4WHAtuqRVdgDOLksqdhjqc9jrNVpRsYL4L5fXaKhNXYNJfTorxbaoSpoqj6ZEp05xsc4y4Qryx7BRs3iYvuHRbCUsiCPmmGdUPXDn6H7woEjiz1YeriH6NPF5au5aVrtcw0DvEgLLKMuVq6QvzE1mu+x9AFhhIEE3jVvzGWs7x+IBGJ2hfG8Kb57q5sDsPmddrc0s2doavGt3j59SpKkbETAVxcSwwHbpAEsYTNPM1KhVl7EPpQp+gNotyPx7hI11xG47CrYE7+4xlCFpaDwvf9FWescjE9qNrcgCXvSeme0GAOo6QjsttWQcRguwWZb6OG1VPN2xZcfyUeEGLHhPkrziDDf4SHNaCcXXJ9CtFdyRMVueZNWqaoSKhpFI91MMLSXju3pGbSzJlM8FPf/oxZbRADvlZZCyb8fbb4mQVBZZ3GWV4hj4PCrLA1qQvEqs9XLsRnoal9WaSQhWRzLJmCurnGGRc6wxyAAejp0pAR70k0M8R+ziXphTbSz5jU2xp2cFe1EhegrqPqjFAtYWbYwsm9X969oYf76RSVpD5DfI8iDfFILBkfvnZaZtHikQ2tfNY1T0QOYafZ+dfiQjWZxqrDxXDWbc/jYZSbOzpgJ0HvC9wodOgTk5d5d9dmNrnM0LH8bvtI4zgktUZdf/DkYM10EF8yMhbFqvpMTi+TaLBUNd9aLSzSGAqu41xsKxsEYHFPhxozYZMPCafc4U5t8Ja7k34czb9pTsN2JFnwl8AmZSpI39KzBoEcD8fz0CAcio2KlaDIhPF8V0HkEbwc2c0mkpBazhOMI1d4cxnKG15nlJ+haP4D9g/H1z7jIEHS7enL9st+r19iJpqLFuJiKD2NT7LXyBzaAcFxIJ/fo4roeZSvHUyfgqUjSVcPiszEAuk4Fgqjxih+ln6TZW8b5sbDIvrB1Ul++c1B63XbFgHdVJTaRPzIXeh5f5u+QYvfa7pHyQV0ZUIv4SnfFMvTC0g0/fdaaBd9rcpxu/CBpbobKZgCIyVRDZGdPlZs8UGyu7+Hxb64E/k0YIIyG0d7ZSIcU1dOwyAQt25Ow5B4W/oUhgU+Gf+qB/Eqf+V11+GylEkiyGag2sSabnAwgaqTr549u7USX8FH6EnKLv1g9jl2zIU7C6GM3aeDn8kP+9aBM0Agrl165RV4/UHaXPnrBjs3YOHlrMK9jziNkwwt6+rC5FPPvSm2uVuOQouD4+Rk/8X2VoT+8bijB9PNpfsOsNhiSOVgntu7dzfzJItraFExs2ylPt0vanTgZJP3SIxPvZsgaDSBNmxIh0KPLS+EZkJ1Xy0gY8WVOZDbYF9v0GJta6+GUy7ek8lisYumJ1nyw90NF5n7L6H1aFMYqA/WI2COJA7pWaf9Ugf5pniETIJNyNXtonwZOLeCG380p2a2m5Fs4WDJIbVCtkJ77ah+h3HMvJJ0fzW8OXfnZDuzbWB935lP5zr2+vOc7CL44LjNt8p2deJJKd+d8n1mwKwxWxUjkxJRVlpIqwq1a+Sfeu1oNGDaOXyS/LVoiWAi4/RFFK77j8sVBWyTeqc13DCYWKdEbHTgEcIdtBewm3fvU99V8J4gYLJijdis2O/D+3FBz8kG/SwAXwjzKgO1TmXuA3syLPxxfnEUxttkUPpzQJgAzcN6o79tpHr3QWX3TVy4USKZJPX/G7/sFv7TB2RKaM9LvG8518UTl/oNK6/mqMpSOqsv0xRVzNjumgamqz/e3LG3e1lkrW5SquqlrDJIrN90AProjO2hsva2vAv1ZNPbHVfvH6K8KnMmDbXcZImS+YAXafdXLVILS/Q0MSKuRaLPQABT6AsH1SpBlkiSLXyhT/gT5IbfD6Z1Jx0n7l33o2uGW4lgd8BRn8WUeEHBHEn2SCXVQwlREQtvN7iSC2y8qSngF4ytc3vgOucrGccauebyUn9sdKmkhMom+XHRGLg4yr7NW/ZAq8UDCTjimw0unj204NYoihtZTNdXwgmCpqzA6Y4a3S/braI7FEXELgpjVSnB+dqkyFq3Tny2G8lAz1OtN0TZdE3wgbqL8XtsE5Ut1NayTqmPNmEhJVC0f6ZfMop0HP5VawTxA+lq1XoeRAoIGH0ojuV+9O13sh2V2zoxj5jVyNGuZDtqZVlEeSIRI05PVi7nZfKw+EuT5YTkdX/qnx/AmQXABJR8mEbt5A8Oab2RqMdG+P0zvDI0gODnGDSO2w4ZOrD1zi5LnYaIljibbOMhpDWcwsd6Ry5eUmiLQ24OpaErO6a3/sYLybm9xOJLqfn7DNg/5SKBxEfKNyyUYP4KtkSMQI5Xo7dHcIhqH4l3CRK/gB7WtFU6bj0mReNJIitL8grYbUyZpqDuMDT5s5WQsWjOEmRSbMiH7HIkEIPvRu0WxMnRCJKjGFWdlKGqK96T7jlsEHCjsPjk/9VEQ4W5qB2tRAFGJ5YGgbmyYxqxGxduvkNdd3IZKcIbvtEtH4X7aHeyV4Dcn4wkEzUNRRhISM51Av5I1mwi2lj3DP8d6K9iFzNVDCSb+eb9pBu+SEqYrvFC8WKSi8OcZDj50KV871120hgz6n6OZy1KOh8OzKNuCKFt9mVlUfJKzD9gcuL53q+oTHGGIKFz4+4/zLC13N3l3y4Fn9dzM02uGyBGoJXmF3jrwW9OguOsh1FVykE1suM6kC/e005VRngkgcn29tixbfGSx7k8JzTId+5wTXE1HgKXCtGlwA7L6FxS+RUGGP2az1Em91D7THACjjqlVdoDOltQ7Yb4S8n4kG/m/CvtFfQB0e/e/JMgICLGKds6v5THENB7WYOdJ0P5s3GQzdbeXjUAG5Y2WCUBs5LZ6xDZzv1L7jfUHqBbmnHW7U4g+UTYB/tW7B0Ya0JAbpzWFSoVQH6CbY6q9fM8ccelwWdxeWdjZm+TcmBAHpje+emw8T5mUgl7Omvks7D2xk04/HjynzVyBN2dI3dBgxTkB1keL9tMN0WgyjY0ddKI8pigHP9lOa8hb7F2bZIa/FqS6JJPPHnlyPbVl+weIG7j4ocmWH/OkvaT4qtcbnafk2ocwOkjSqUob66ehit1UDMwKXreD2R92MZugTHNe/PWAZesANg9eBbm2p+4kqK52j8MW3AhqaffDN+kK195DUM4FLVYm8BQhOF+OWoM5tTD8LImCNRenutbU6qRxpaMDXCBU37/K3Y7eobcg/IaZaBuw44FteI67Hdgufk5VqCDjlK7jDBUtVq07hpPI9ymWW/m3nNLQlusNGDSBNYXOUBDRWNnHira/1eo9GEwVgpXn2tG1PUUxT15p/fbfGXCvpsj0QlzwErC0ge/Oqlsh7E0QhpqDAcvlBJOiXDD/bv01SkM269rmghWHJPUbmpq4trj7H6cCMXMIwWgOLaTXR0w3tamzJpReC8FXDNwkxSCbmg/ag17JdPyptz7mR3k6KvXor6tFCfEv85TW7CDWLEap1AC12Ym+LK9/CxdKPnXz9Qz4xNXGn3sG1wAfthifQfjDyiCnLo2uhuMzI9yKxH4PUTt52mReMLmnHFrrLpDYcPC+cU7ge55guYhGv/ANB92YzoXrI+Hs6gdXnnfE8GGhfydGwvKBKCtpDecGnu41Mz28j9/LTVtSV9WZEoxANMgPGo4BDbY2p69ixYGQWATdyg9TRDAK7f/Lrlubat60yuVZ9wcwqZ7NBP71mX6NEgdvfK1EgMnkZzsDQl/wWDHdAoOYCo4pKwY5I/V26cKTO4aMYcV/YDdgglOtas2KtIXBJAcgotsV4YfF+CDN4T5WdX808VdXh3/UXLrAdcMDF3QIXj1HyUHIOkXBH7DXICbJt9eNiowRXiuB0d1J/FqjPFe2IlNdXnwFwpRusB5PLSv0Lk/AdI1gQmao8wwLmnoh/L9riMbMMsWAOI+5B71d+lGTKlxx4hQn4ixRfedyZUUsRcpGrgAS1XqCKzggl0/LFuyQpe9BsgvZGkEHQ4ELkl6bcLtiHZ+7uFxmRjnV7v8PP1Whug1igIT3OTMnmb/dGJPuGKY5fRdvWoatxfNU3ABi+fY7eHiPqC0gQDpAC19twVfWBtBur+ST+y7fzmSE5Q0C3mcp8/31XIdqm7sEZJHtFnXBgaTyG+fWRGAY70K10IBvKH2TE6IMzm1k92/Cn2payTupKTtojgP3uaWIgFVgV0lD0WGR0PanqiKtrBFwqznvb/rz2PgpSjWd2BESLQpxY+6tmKXZnjvY9xfR12CQ8o/aKz1t+XxCSzy0uE5f/kaFUCrwxjL8gT7SEUJshp//5/yvPFJHgJlgsvXp+gRQCSzz+vS6rl3BhMsbj/HzwJYz8GsWppOQDGVswlOHEaFE/qhImhDrt2DUfNxtt21GW7KwJRn9/mtYIjlnnwgESPEpwoLyTru3SsVGzRxnZG6x+BiseUs57lTdb3H8KG7UPeH1SSjy9wZHELnar9x5cOtOR7lOvyjWm4Ab18Q+qoMxxLCFit0V8SmOu7AU8XGY3eSXb6Ly+kaQmDkRlOstgmcj+rD34KNz7LTvLL0O1Z9J/nCjp+1flOFgtbd7Yg0t5eNrPuppxYxJfSpnJRNL4S3YTffnV+x+zVsuioseET/On2wNi/TnL2rAQIKswi7Er3Sv48D/+PLsa2WJOSk6DqcCLmusILDiz0FwKEhMewrxtNyM2IAE0/6hiopIQoUgC6U8CLirhWbfVibSnCGZlF5uywIcaUlcEaYP/evokbi1NSquO62XNnWR4+fB3M1N7LaI5pwdHYOKEjg9OaSiTtEDypKGOVxZhdQS0jEvZ46foNS4SBpwZfPn60p6pQldNUmimhWeU5LUnEpZYjPJU6hmAsh4AKaLFfJANrZ9ou428yoEIFuiY9UgOYkqtSUocWxyijxK+NTtuDdbh7NJcyLIl6CUBWQjZiL34Bk0Qe3vmT9tpIKus3r5CvEdEu5Va2Wxm8CQJT9bESzuFBeH0QIRybKFAUVqNa9tCXukd1jwLXYKWsuMuFda8R1UjVG2cvAZ+R3lBV+nLksL4Ti6lubX3hKFcSyFsG5rK9pJt5nlSGIkBLP/HFqLL/KX0S96NdOo4CS+GYPBk+lBZxz6Yie12vvUj8l4t1ik/5PmvbLOTPCcaoPeZ7APUQIKIcxcNUDin3R1okbeAUGwt7Ja3G0ntQokBhlajisyXeqbfPLrTTKpTauclKp+DGdyBsbzFHEYtIqZnlLe5wjluF/UID6EgwWPGj0FVKM59Jom3+0Y1QTb+IKqHZv/0FIEEuVItlJHSixdza2w0UN80Hyc/eUGv6SBybC/EEs9cOcLBR1eeQXXe7p7hfIhtxxBrGhk9n7jom/4LXF125WzPmMCUiNyE8iO7sVSmRf/iSNFBveZWGPeCirfJ8a43fk5jCfA3NPEJyMAamu3Q5im0DKo8aonWXtye9iE8vraixlVTAGSXFMjP3+XiOE9jrnXTDzARnt7+9gvHctQpaAI0za6N7bq9R1lb55jILwmx4Ih4OA0K1/Xx7B9jytPFBRhEO8xqXLhxotsIRjnGRvnkMK/KJ1YhE9T2mNmclLYgMSn+7dzik8BzoHt+EcXstV8yNpTspqsnS96ATq3A66NbF449w9JqViBt4gWi7yVzt3kR4XSJ8iEB5anMqG+EsSyrMQVv0sMeEysGx+yYs6G2xPJw3zqTq4RzDQXPhYra/VMlt7E8zzl4D7L3HS3kkWf4ZkmFmnjcENPQdkmohl6p/gqkOg+8McyzNxxb5Fl19DsSr3MTuSMqhSKDn95ibzYCEdrZXJiKaqu7BFBuju+jSObOPchog2IsE/u/3U/UK2mntvSnD0qNkPYoRTskBnLJ3NJamL0V4sEbryX8NMr7MKMJ0+h2+xMKY4KERpvUrd0c6ABXWHqLdY1QTugC/5dhdoLy3+KwgG5FnL0MZw6qvOvHkKQRoQrcKLuwUld15s05QxurH67A9eAr02a/vUWNBIgP6vOa69ZZuZKElWttIerRDGIAkZ54fw7HBctSZtfspPxaliwbOEH/Laxot3ZQonzvXknSVodzZHA1Jw7BcNRsYvl+KJ0Y6pMRPpIbaN/QSuHtnjUoej+vlVhq5021xMUPKxCK/D8rSRbOmduHG85/JrIimgo5wXWP83lLvRaxwCxeTGVt44fTUqsfUARmQcS3f5DbHR9SZ4nJYIEvcCjIqLezJ3I6S7xBop57j3ZyMQX0Xxr5mc6IUmrlOXM9fJG5iDZQQ9rWsGZ0Y26GzTAEsD6pjPuDa1XAT1MRpxyZ8zN53sl1YEV0E0EHvZqcnBnqMTXRh6zC9PwDXEk3OHs2zLLIjBhY5+7lDxp1X0qcm8XtWorat33mUx+kEDDgaDUdpclQq/ZM6mMYoF433nKbCKDxCozugSPVaRjNPosMDy8FujvIJSb763XuBGBIYLS9x+HZhYiUa9xod0xKV9aRt7yczWWlLgfK8qn4fULHMBSP48m/wTWfDBdTH8uDAKt5WM033+2bCpxDhmZtE+d7XP65yBTOf9/EWaCG+Gs9/5kVbWS0JlfoDH6Si2tVCzCRGfV0XZAUWfXOMJ5F9dkMagbwaeqVqqbVONDQGg8zID5MUV7IkazdAz4JLOXsn1RuZnoZNIGV2Na15+dRKYUAmXFmkWBJpPMBwT8N4bd8VZwBnhm3WzH9S0sbpoP0sgf2OmPvQ6smMyfkVK+OLjXYubmtioAhdwDb5/pLRg3PGwfHEz6v9OOe4AK8iw2cma49tV44In8Rc9jGcqSQlFXPdlC8366ke4U/ITFy0/SQBl1vWvGk40KycwWGaLf8cCtEi/4X2W8961i6lYnpfNQhGcQyC8s2oIOW+Pw545Thq3ZBEyNC8YDr/pzCEmBI8U3A4IiQJoHiD9kUMNd8wfzysC2Kqc4OGeWYsJxmDev4Jn4HV+vqpgN6xxSEMABhRMdTteHiJAgnQEX9BR2V1sNqh5EcMvQNYYa5+bblQn7Rli1UFCtQkP6ECmGkxmPNkg2CGS2mmf0/WEuTZSyPMtbbrnftPgleOmJ3jSm0m1EU9fQHQo1NZti+KczpJ8mSYIVtXzXh4rNJcL3Fm7Bbftpjmj5UnuDpPk8HvqKOj2DGJyk4R0Md1x7umiH0DTOXaLwO0EI94k7n6R8nfqiwekgUQZ1rRek0HViM5YN0JLWp4f4NRE8ErcGNSHZd58+9Kx8lmkc9ogfQmX0rX1kB8QQzNbH+eVDee0jOQNUgQcew3y+0QbifXrtLHXDIxsqsej41Kz7vfcQRE1zUnY2phYNILK8a657zyHNMzPiRhxs28s1JX2kiCMEloubOXnc8BzU+n7LM9wztf63eFWN/eWHXVivSdCWg5DfWsk2CF8aFJrOP277QEPdkWlOlewCVEkLjyd5wUn9ZzaKOJKnDQDLfliiRLTKlU8TOeQj8jOU8FfpM9tayJTDpxw6sVlZuJRAILfxn+QAGIB/W1FGDjuuVu62hFDBdvzVSfge95Ebf9pclp0GrpV3S+gwBWn5J7aGiim/fRyIN7YVVXJsnAnVeq90vDdAV0XearTqjT2Ck/AMkBW6T/ls/6VUVnFWs01wxkahKR0tRwyLRKgHefm3RWie/pTVQpUMZw+/7ozQSW+7vuZd8lsvT1iX5rwlpiaFnOnDbHsr1As6vLETd5HVbcBCGbJHcS7ax9Byd50jdYyagUtjAaHYX8ryyuR/bDkw1o4j8+hXMfbzy+CVmgrfRDyl4dn+5LxrqRAXLoDKpQREAHqdLSsVSJh1s8KnZ/SsUVq27cq+O6LMSBmhT4X3E750rmWwCsoCre6bT//oFWYALjp2SbcxnULBaTvnYDHtfEbO1m/3c9nJk8ZO5KHQTV88ivTWN/S2EXwmisTPdcupMrvI8e48QZdkZu9WHyKron7MKhGFJw6Z0KZ3tleVrvvJo89siUwByPY+Hs4gkKPBQbLQOaedcv/xeM+Ih8rl1eHEC/C65xWVciToVqSGp9HfbhVzFSrO6kBnv7mJwnRLvMEwqiNankVdJJMw4icU3lKyw/ecNSWIUddqlbThYMiq8nHjRRufs+28cq0OI9zhpvxFvFgSZE/eAYvm0x+9lZO+EH9NkBngaqU1NMYhdombNuy3awUN9p0mJQ//e9L65YbShgoc+ZUlNy+c6F6gDEHXV0JrzevPIZFAe2RyRa2dNqzLvihAAMCszYueqszzXRkSyobx5+LTLK2V3lfg3wbS9DzP3QW7VHdHbjZcttQRvtjrGveJnNn2DE2ZDIbvkCrT0H8RzbGDdmIq4P1ey+hoY/W6NuZKOz4dv4HUNznxdKV1Wf3MvqUv35r2jTKvpPWBUWNm5fytX/QJwp6qkIOsSx7Y67BSCbCDVLM8/VcMG+T0j+INrgL9sfT1ICtACH8BI0G6ViUZPVzzCmQHW2oVIwZjAoFl6+meO/pD8teO1E+1y03mCpYfW9S8qhtH2GhlFlebPf4NbezVv9xbXKWz0xezRNQWqUqtYRTUbuzK7KTvjG4rQHfzBpVmK4wDLnSIwdSzTSk1fPNeY0WOpPZTLlvQ59xwgfFrb326vT2hS1JAZ9E6sujFtKTiJ7bxI6o4cBhDaX+adXREThhR+MwA4TqD7rga/o9iY7d6TVRe14CS2S3iSQsD0R6ApnhG/2Wa0A0AY2NtWTjmabdKU+KgIRDP9RQYVjXiF1qC+xyNVG03I9vpmEpY/G/zC4nLOKgXAZ/uTikHI9Afbkhfgfgo9arWbix5eH7WUo9RQygDzwCnVSjbXc7MihEufVj6WGbK963pw8VjY3RS8IH1cy2yZbIcKLO5CgAUcXJfF2+McnDLKtXxyZaf7SPA6KJq+zF2NHyfoeTOwHhGqNcnHVr1hT73pcoyXyfvCYBnG1Bp/aR9t8hoI7CXM3UZOisWGA1SHZ2jf7k9GlRnp3mF/c1AV+JjvUsnZrsybEOQJg/dn/9eJkyykQHjbF56zgcPX6DdMG03WKUMlYz+uOZ+5DZy9E9MZOZ9GMoLFdrIPPQQLjv+GlCMpoyHPXkzIODjHAID2PrnaRpqWVHh0rnieDILKq+Emrd5RnjgE9pDUXWTmHaKuqqYlcgEz4zbi46dbWrAAFBjsQq1rLHIiPJEcwFLCOY4JNlXRXQJqCUKXk2d1RSBGzDP6HDSpo863BhVRFFF6uIpjQV7j5ebFe3UkkO/+coIo2BTAcgBqOtQ134s9a4QJvofuqBYMGOBMsWZ+sn/2AOxDx6SfAnDFGw==\";\nUint8Array.from(atob(xh), (h) => h.charCodeAt(0));\nconst fp = Uint8Array.from(atob(xh), (h) => h.charCodeAt(0));\nfunction Sh(h, t, e) {\n if (t.getQueryParameter(h, t.QUERY_RESULT_AVAILABLE)) {\n const i = t.getQueryParameter(h, t.QUERY_RESULT) / 1e6;\n e.lastTime = i;\n } else\n setTimeout(() => {\n Sh(h, t, e);\n }, 1);\n}\nclass pp extends Is {\n /**\n * \n * @param {THREE.Scene} scene\n * @param {THREE.Camera} camera \n * @param {number} width \n * @param {number} height\n * \n * @property {THREE.Scene} scene\n * @property {THREE.Camera} camera\n * @property {number} width\n * @property {number} height\n */\n constructor(t, e, n = 512, s = 512) {\n super(), this.width = n, this.height = s, this.clear = !0, this.camera = e, this.scene = t, this.configuration = new Proxy({\n aoSamples: 16,\n aoRadius: 5,\n denoiseSamples: 8,\n denoiseRadius: 12,\n distanceFalloff: 1,\n intensity: 5,\n denoiseIterations: 2,\n renderMode: 0,\n color: new oa(0, 0, 0),\n gammaCorrection: !0,\n logarithmicDepthBuffer: !1,\n screenSpaceRadius: !1,\n halfRes: !1,\n depthAwareUpsampling: !0\n }, {\n set: (i, r, o) => {\n const l = i[r];\n return i[r] = o, r === \"aoSamples\" && l !== o && this.configureAOPass(this.configuration.logarithmicDepthBuffer), r === \"denoiseSamples\" && l !== o && this.configureDenoisePass(this.configuration.logarithmicDepthBuffer), r === \"halfRes\" && l !== o && (this.configureAOPass(this.configuration.logarithmicDepthBuffer), this.configureHalfResTargets(), this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer), this.setSize(this.width, this.height)), r === \"depthAwareUpsampling\" && l !== o && this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer), !0;\n }\n }), this.samples = [], this.samplesR = [], this.samplesDenoise = [], this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer), this.configureSampleDependentPasses(), this.configureHalfResTargets(), this.beautyRenderTarget = new yr(this.width, this.height, {\n minFilter: Bs,\n magFilter: Mn\n }), this.beautyRenderTarget.depthTexture = new mu(this.width, this.height, gu), this.beautyRenderTarget.depthTexture.format = Eu, this.writeTargetInternal = new yr(this.width, this.height, {\n minFilter: Bs,\n magFilter: Bs,\n depthBuffer: !1\n }), this.readTargetInternal = new yr(this.width, this.height, {\n minFilter: Bs,\n magFilter: Bs,\n depthBuffer: !1\n }), this.bluenoise = new vu(fp, 128, 128), this.bluenoise.colorSpace = Iu, this.bluenoise.wrapS = vl, this.bluenoise.wrapT = vl, this.bluenoise.minFilter = Mn, this.bluenoise.magFilter = Mn, this.bluenoise.needsUpdate = !0, this.lastTime = 0, this._r = new at(), this._c = new oa();\n }\n configureHalfResTargets() {\n this.configuration.halfRes ? (this.depthDownsampleTarget = /*new THREE.WebGLRenderTarget(this.width / 2, this.height / 2, {\n minFilter: THREE.NearestFilter,\n magFilter: THREE.NearestFilter,\n depthBuffer: false,\n format: THREE.RedFormat,\n type: THREE.FloatType\n });*/\n new yu(this.width / 2, this.height / 2, 2), this.depthDownsampleTarget.texture[0].format = wu, this.depthDownsampleTarget.texture[0].type = Cu, this.depthDownsampleTarget.texture[0].minFilter = Mn, this.depthDownsampleTarget.texture[0].magFilter = Mn, this.depthDownsampleTarget.texture[0].depthBuffer = !1, this.depthDownsampleTarget.texture[1].format = Tu, this.depthDownsampleTarget.texture[1].type = Oc, this.depthDownsampleTarget.texture[1].minFilter = Mn, this.depthDownsampleTarget.texture[1].magFilter = Mn, this.depthDownsampleTarget.texture[1].depthBuffer = !1, this.depthDownsampleQuad = new Er(new jt(dp))) : (this.depthDownsampleTarget && (this.depthDownsampleTarget.dispose(), this.depthDownsampleTarget = null), this.depthDownsampleQuad && (this.depthDownsampleQuad.dispose(), this.depthDownsampleQuad = null));\n }\n configureSampleDependentPasses() {\n this.configureAOPass(this.configuration.logarithmicDepthBuffer), this.configureDenoisePass(this.configuration.logarithmicDepthBuffer);\n }\n configureAOPass(t = !1) {\n this.samples = this.generateHemisphereSamples(this.configuration.aoSamples), this.samplesR = this.generateHemisphereSamplesR(this.configuration.aoSamples);\n const e = {\n ...cp\n };\n e.fragmentShader = e.fragmentShader.replace(\"16\", this.configuration.aoSamples).replace(\"16.0\", this.configuration.aoSamples + \".0\"), t && (e.fragmentShader = `#define LOGDEPTH\n` + e.fragmentShader), this.configuration.halfRes && (e.fragmentShader = `#define HALFRES\n` + e.fragmentShader), this.effectShaderQuad ? (this.effectShaderQuad.material.dispose(), this.effectShaderQuad.material = new jt(e)) : this.effectShaderQuad = new Er(new jt(e));\n }\n configureDenoisePass(t = !1) {\n this.samplesDenoise = this.generateDenoiseSamples(this.configuration.denoiseSamples, 11);\n const e = {\n ...up\n };\n e.fragmentShader = e.fragmentShader.replace(\"16\", this.configuration.denoiseSamples), t && (e.fragmentShader = `#define LOGDEPTH\n` + e.fragmentShader), this.poissonBlurQuad ? (this.poissonBlurQuad.material.dispose(), this.poissonBlurQuad.material = new jt(e)) : this.poissonBlurQuad = new Er(new jt(e));\n }\n configureEffectCompositer(t = !1) {\n const e = {\n ...hp\n };\n t && (e.fragmentShader = `#define LOGDEPTH\n` + e.fragmentShader), this.configuration.halfRes && this.configuration.depthAwareUpsampling && (e.fragmentShader = `#define HALFRES\n` + e.fragmentShader), this.effectCompositerQuad ? (this.effectCompositerQuad.material.dispose(), this.effectCompositerQuad.material = new jt(e)) : this.effectCompositerQuad = new Er(new jt(e));\n }\n /**\n * \n * @param {Number} n \n * @returns {THREE.Vector3[]}\n */\n generateHemisphereSamples(t) {\n const e = [];\n for (let n = 0; n < t; n++) {\n const s = 2.399963 * n, i = Math.sqrt(n + 0.5) / Math.sqrt(t), r = i * Math.cos(s), o = i * Math.sin(s), l = Math.sqrt(1 - (r * r + o * o));\n e.push(new te(r, o, l));\n }\n return e;\n }\n /**\n * \n * @param {number} n \n * @returns {number[]}\n */\n generateHemisphereSamplesR(t) {\n let e = [];\n for (let n = 0; n < t; n++)\n e.push((n + 1) / t);\n return e;\n }\n /**\n * \n * @param {number} numSamples \n * @param {number} numRings \n * @returns {THREE.Vector2[]}\n */\n generateDenoiseSamples(t, e) {\n const n = 2 * Math.PI * e / t, s = 1 / t, i = s, r = [];\n let o = s, l = 0;\n for (let u = 0; u < t; u++)\n r.push(new at(Math.cos(l), Math.sin(l)).multiplyScalar(Math.pow(o, 0.75))), o += i, l += n;\n return r;\n }\n setSize(t, e) {\n this.width = t, this.height = e;\n const n = this.configuration.halfRes ? 0.5 : 1;\n this.beautyRenderTarget.setSize(t, e), this.writeTargetInternal.setSize(t * n, e * n), this.readTargetInternal.setSize(t * n, e * n), this.configuration.halfRes && this.depthDownsampleTarget.setSize(t * n, e * n);\n }\n render(t, e, n, s, i) {\n t.capabilities.logarithmicDepthBuffer !== this.configuration.logarithmicDepthBuffer && (this.configuration.logarithmicDepthBuffer = t.capabilities.logarithmicDepthBuffer, this.configureAOPass(this.configuration.logarithmicDepthBuffer), this.configureDenoisePass(this.configuration.logarithmicDepthBuffer), this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer));\n let r, o, l;\n this.debugMode && (r = t.getContext(), o = r.getExtension(\"EXT_disjoint_timer_query_webgl2\"), o === null && (console.error(\"EXT_disjoint_timer_query_webgl2 not available, disabling debug mode.\"), this.debugMode = !1)), t.setRenderTarget(this.beautyRenderTarget), t.render(this.scene, this.camera), this.debugMode && (l = r.createQuery(), r.beginQuery(o.TIME_ELAPSED_EXT, l));\n const u = t.xr.enabled;\n t.xr.enabled = !1, this.camera.updateMatrixWorld(), this._r.set(this.width, this.height);\n let d = this.configuration.aoRadius;\n this.configuration.halfRes && this.configuration.screenSpaceRadius && (d *= 0.5), this.configuration.halfRes && (t.setRenderTarget(this.depthDownsampleTarget), this.depthDownsampleQuad.material.uniforms.sceneDepth.value = this.beautyRenderTarget.depthTexture, this.depthDownsampleQuad.material.uniforms.resolution.value = this._r, this.depthDownsampleQuad.material.uniforms.near.value = this.camera.near, this.depthDownsampleQuad.material.uniforms.far.value = this.camera.far, this.depthDownsampleQuad.material.uniforms.projectionMatrixInv.value = this.camera.projectionMatrixInverse, this.depthDownsampleQuad.material.uniforms.viewMatrixInv.value = this.camera.matrixWorld, this.depthDownsampleQuad.material.uniforms.logDepth.value = this.configuration.logarithmicDepthBuffer, this.depthDownsampleQuad.render(t)), this.effectShaderQuad.material.uniforms.sceneDiffuse.value = this.beautyRenderTarget.texture, this.effectShaderQuad.material.uniforms.sceneDepth.value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[0] : this.beautyRenderTarget.depthTexture, this.effectShaderQuad.material.uniforms.sceneNormal.value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[1] : null, this.effectShaderQuad.material.uniforms.projMat.value = this.camera.projectionMatrix, this.effectShaderQuad.material.uniforms.viewMat.value = this.camera.matrixWorldInverse, this.effectShaderQuad.material.uniforms.projViewMat.value = this.camera.projectionMatrix.clone().multiply(this.camera.matrixWorldInverse.clone()), this.effectShaderQuad.material.uniforms.projectionMatrixInv.value = this.camera.projectionMatrixInverse, this.effectShaderQuad.material.uniforms.viewMatrixInv.value = this.camera.matrixWorld, this.effectShaderQuad.material.uniforms.cameraPos.value = this.camera.position, this.effectShaderQuad.material.uniforms.resolution.value = this.configuration.halfRes ? this._r.clone().multiplyScalar(0.5).floor() : this._r, this.effectShaderQuad.material.uniforms.time.value = performance.now() / 1e3, this.effectShaderQuad.material.uniforms.samples.value = this.samples, this.effectShaderQuad.material.uniforms.samplesR.value = this.samplesR, this.effectShaderQuad.material.uniforms.bluenoise.value = this.bluenoise, this.effectShaderQuad.material.uniforms.radius.value = d, this.effectShaderQuad.material.uniforms.distanceFalloff.value = this.configuration.distanceFalloff, this.effectShaderQuad.material.uniforms.near.value = this.camera.near, this.effectShaderQuad.material.uniforms.far.value = this.camera.far, this.effectShaderQuad.material.uniforms.logDepth.value = t.capabilities.logarithmicDepthBuffer, this.effectShaderQuad.material.uniforms.ortho.value = this.camera.isOrthographicCamera, this.effectShaderQuad.material.uniforms.screenSpaceRadius.value = this.configuration.screenSpaceRadius, t.setRenderTarget(this.writeTargetInternal), this.effectShaderQuad.render(t);\n for (let m = 0; m < this.configuration.denoiseIterations; m++)\n [this.writeTargetInternal, this.readTargetInternal] = [\n this.readTargetInternal,\n this.writeTargetInternal\n ], this.poissonBlurQuad.material.uniforms.tDiffuse.value = this.readTargetInternal.texture, this.poissonBlurQuad.material.uniforms.sceneDepth.value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[0] : this.beautyRenderTarget.depthTexture, this.poissonBlurQuad.material.uniforms.projMat.value = this.camera.projectionMatrix, this.poissonBlurQuad.material.uniforms.viewMat.value = this.camera.matrixWorldInverse, this.poissonBlurQuad.material.uniforms.projectionMatrixInv.value = this.camera.projectionMatrixInverse, this.poissonBlurQuad.material.uniforms.viewMatrixInv.value = this.camera.matrixWorld, this.poissonBlurQuad.material.uniforms.cameraPos.value = this.camera.position, this.poissonBlurQuad.material.uniforms.resolution.value = this.configuration.halfRes ? this._r.clone().multiplyScalar(0.5).floor() : this._r, this.poissonBlurQuad.material.uniforms.time.value = performance.now() / 1e3, this.poissonBlurQuad.material.uniforms.blueNoise.value = this.bluenoise, this.poissonBlurQuad.material.uniforms.radius.value = this.configuration.denoiseRadius * (this.configuration.halfRes ? 0.5 : 1), this.poissonBlurQuad.material.uniforms.worldRadius.value = d, this.poissonBlurQuad.material.uniforms.distanceFalloff.value = this.configuration.distanceFalloff, this.poissonBlurQuad.material.uniforms.index.value = m, this.poissonBlurQuad.material.uniforms.poissonDisk.value = this.samplesDenoise, this.poissonBlurQuad.material.uniforms.near.value = this.camera.near, this.poissonBlurQuad.material.uniforms.far.value = this.camera.far, this.poissonBlurQuad.material.uniforms.logDepth.value = t.capabilities.logarithmicDepthBuffer, this.poissonBlurQuad.material.uniforms.screenSpaceRadius.value = this.configuration.screenSpaceRadius, t.setRenderTarget(this.writeTargetInternal), this.poissonBlurQuad.render(t);\n this.effectCompositerQuad.material.uniforms.sceneDiffuse.value = this.beautyRenderTarget.texture, this.effectCompositerQuad.material.uniforms.sceneDepth.value = this.beautyRenderTarget.depthTexture, this.effectCompositerQuad.material.uniforms.near.value = this.camera.near, this.effectCompositerQuad.material.uniforms.far.value = this.camera.far, this.effectCompositerQuad.material.uniforms.projectionMatrixInv.value = this.camera.projectionMatrixInverse, this.effectCompositerQuad.material.uniforms.viewMatrixInv.value = this.camera.matrixWorld, this.effectCompositerQuad.material.uniforms.logDepth.value = t.capabilities.logarithmicDepthBuffer, this.effectCompositerQuad.material.uniforms.ortho.value = this.camera.isOrthographicCamera, this.effectCompositerQuad.material.uniforms.downsampledDepth.value = this.configuration.halfRes ? this.depthDownsampleTarget.texture[0] : this.beautyRenderTarget.depthTexture, this.effectCompositerQuad.material.uniforms.resolution.value = this._r, this.effectCompositerQuad.material.uniforms.blueNoise.value = this.bluenoise, this.effectCompositerQuad.material.uniforms.intensity.value = this.configuration.intensity, this.effectCompositerQuad.material.uniforms.renderMode.value = this.configuration.renderMode, this.effectCompositerQuad.material.uniforms.screenSpaceRadius.value = this.configuration.screenSpaceRadius, this.effectCompositerQuad.material.uniforms.radius.value = d, this.effectCompositerQuad.material.uniforms.distanceFalloff.value = this.configuration.distanceFalloff, this.effectCompositerQuad.material.uniforms.gammaCorrection.value = this.configuration.gammaCorrection, this.effectCompositerQuad.material.uniforms.tDiffuse.value = this.writeTargetInternal.texture, this.effectCompositerQuad.material.uniforms.color.value = this._c.copy(this.configuration.color).convertSRGBToLinear(), t.setRenderTarget(this.renderToScreen ? null : e), this.effectCompositerQuad.render(t), this.debugMode && (r.endQuery(o.TIME_ELAPSED_EXT), Sh(l, r, this)), t.xr.enabled = u;\n }\n /**\n * Enables the debug mode of the AO, meaning the lastTime value will be updated.\n */\n enableDebugMode() {\n this.debugMode = !0;\n }\n /**\n * Disables the debug mode of the AO, meaning the lastTime value will not be updated.\n */\n disableDebugMode() {\n this.debugMode = !1;\n }\n /**\n * Sets the display mode of the AO\n * @param {\"Combined\" | \"AO\" | \"No AO\" | \"Split\" | \"Split AO\"} mode - The display mode. \n */\n setDisplayMode(t) {\n this.configuration.renderMode = [\n \"Combined\",\n \"AO\",\n \"No AO\",\n \"Split\",\n \"Split AO\"\n ].indexOf(t);\n }\n /**\n * \n * @param {\"Performance\" | \"Low\" | \"Medium\" | \"High\" | \"Ultra\"} mode \n */\n setQualityMode(t) {\n t === \"Performance\" ? (this.configuration.aoSamples = 8, this.configuration.denoiseSamples = 4, this.configuration.denoiseRadius = 12) : t === \"Low\" ? (this.configuration.aoSamples = 16, this.configuration.denoiseSamples = 4, this.configuration.denoiseRadius = 12) : t === \"Medium\" ? (this.configuration.aoSamples = 16, this.configuration.denoiseSamples = 8, this.configuration.denoiseRadius = 12) : t === \"High\" ? (this.configuration.aoSamples = 64, this.configuration.denoiseSamples = 8, this.configuration.denoiseRadius = 6) : t === \"Ultra\" && (this.configuration.aoSamples = 64, this.configuration.denoiseSamples = 16, this.configuration.denoiseRadius = 6);\n }\n}\nconst mp = {\n name: \"GammaCorrectionShader\",\n uniforms: {\n tDiffuse: { value: null }\n },\n vertexShader: (\n /* glsl */\n `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 tex = texture2D( tDiffuse, vUv );\n\n\t\t\tgl_FragColor = sRGBTransferOETF( tex );\n\n\t\t}`\n )\n};\nfunction gp() {\n return new w.ShaderMaterial({\n side: 2,\n clipping: !0,\n uniforms: {},\n vertexShader: `\n varying vec4 vColor;\n \n #include \n \n void main() {\n #include \n \n vec4 absPosition = vec4(position, 1.0);\n vec3 trueNormal = normal;\n \n #ifdef USE_INSTANCING\n absPosition = instanceMatrix * absPosition;\n trueNormal = (instanceMatrix * vec4(normal, 0.)).xyz;\n #endif\n \n absPosition = modelMatrix * absPosition;\n trueNormal = (normalize(modelMatrix * vec4(trueNormal, 0.))).xyz;\n \n vec3 planePosition = absPosition.xyz / 40.;\n float d = abs(dot(trueNormal, planePosition));\n vColor = vec4(abs(trueNormal), d);\n gl_Position = projectionMatrix * viewMatrix * absPosition;\n \n #include \n #include \n }\n `,\n fragmentShader: `\n varying vec4 vColor;\n \n #include \n \n void main() {\n #include \n gl_FragColor = vColor;\n }\n `\n });\n}\nfunction Ep() {\n return new w.ShaderMaterial({\n side: 2,\n clipping: !0,\n uniforms: {},\n vertexShader: `\n varying vec3 vCameraPosition;\n varying vec3 vPosition;\n varying vec3 vNormal;\n \n #include \n \n void main() {\n #include \n \n vec4 absPosition = vec4(position, 1.0);\n vNormal = normal;\n \n #ifdef USE_INSTANCING\n absPosition = instanceMatrix * absPosition;\n vNormal = (instanceMatrix * vec4(normal, 0.)).xyz;\n #endif\n \n absPosition = modelMatrix * absPosition;\n vNormal = (normalize(modelMatrix * vec4(vNormal, 0.))).xyz;\n \n gl_Position = projectionMatrix * viewMatrix * absPosition;\n \n vCameraPosition = cameraPosition;\n vPosition = absPosition.xyz;\n \n #include \n #include \n }\n `,\n fragmentShader: `\n varying vec3 vCameraPosition;\n varying vec3 vPosition;\n varying vec3 vNormal;\n \n #include \n \n void main() {\n #include \n vec3 cameraPixelVec = normalize(vCameraPosition - vPosition);\n float difference = abs(dot(vNormal, cameraPixelVec));\n \n // This achieves a double gloss effect: when the surface is perpendicular and when it's parallel\n difference = abs((difference * 2.) - 1.);\n \n gl_FragColor = vec4(difference, difference, difference, 1.);\n }\n `\n });\n}\nclass vp extends Is {\n constructor(e, n, s, i, r) {\n super();\n T(this, \"components\");\n T(this, \"resolution\");\n T(this, \"renderScene\");\n T(this, \"renderCamera\");\n T(this, \"fsQuad\");\n T(this, \"normalOverrideMaterial\");\n T(this, \"glossOverrideMaterial\");\n T(this, \"planeBuffer\");\n T(this, \"glossBuffer\");\n T(this, \"outlineBuffer\");\n T(this, \"excludedMeshes\", []);\n T(this, \"outlinedMeshes\", {});\n T(this, \"_outlineScene\", new w.Scene());\n T(this, \"_outlineEnabled\", !1);\n T(this, \"_lineColor\", 10066329);\n T(this, \"_opacity\", 0.4);\n T(this, \"_tolerance\", 3);\n T(this, \"_glossEnabled\", !0);\n T(this, \"_glossExponent\", 1.9);\n T(this, \"_minGloss\", -0.1);\n T(this, \"_maxGloss\", 0.1);\n T(this, \"_outlinesNeedsUpdate\", !1);\n if (!s.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this.components = n, this.renderScene = i, this.renderCamera = r, this.resolution = new w.Vector2(e.x, e.y), this.fsQuad = new Th(), this.fsQuad.material = this.createOutlinePostProcessMaterial(), this.planeBuffer = this.newRenderTarget(), this.glossBuffer = this.newRenderTarget(), this.outlineBuffer = this.newRenderTarget();\n const o = gp();\n o.clippingPlanes = s.renderer.clippingPlanes, this.normalOverrideMaterial = o;\n const l = Ep();\n l.clippingPlanes = s.renderer.clippingPlanes, this.glossOverrideMaterial = l;\n }\n get lineColor() {\n return this._lineColor;\n }\n set lineColor(e) {\n this._lineColor = e, this.fsQuad.material.uniforms.lineColor.value.set(e);\n }\n get tolerance() {\n return this._tolerance;\n }\n set tolerance(e) {\n this._tolerance = e;\n const n = this.fsQuad.material;\n n.uniforms.tolerance.value = e;\n }\n get opacity() {\n return this._opacity;\n }\n set opacity(e) {\n this._opacity = e;\n const n = this.fsQuad.material;\n n.uniforms.opacity.value = e;\n }\n get glossEnabled() {\n return this._glossEnabled;\n }\n set glossEnabled(e) {\n if (e === this._glossEnabled)\n return;\n this._glossEnabled = e;\n const n = this.fsQuad.material;\n n.uniforms.glossEnabled.value = e ? 1 : 0;\n }\n get glossExponent() {\n return this._glossExponent;\n }\n set glossExponent(e) {\n this._glossExponent = e;\n const n = this.fsQuad.material;\n n.uniforms.glossExponent.value = e;\n }\n get minGloss() {\n return this._minGloss;\n }\n set minGloss(e) {\n this._minGloss = e;\n const n = this.fsQuad.material;\n n.uniforms.minGloss.value = e;\n }\n get maxGloss() {\n return new w.MeshBasicMaterial().color.convertLinearToSRGB(), this._maxGloss;\n }\n set maxGloss(e) {\n this._maxGloss = e;\n const n = this.fsQuad.material;\n n.uniforms.maxGloss.value = e;\n }\n get outlineEnabled() {\n return this._outlineEnabled;\n }\n set outlineEnabled(e) {\n if (e === this._outlineEnabled)\n return;\n this._outlineEnabled = e;\n const n = this.fsQuad.material;\n n.uniforms.outlineEnabled.value = e ? 1 : 0;\n }\n async dispose() {\n this.planeBuffer.dispose(), this.glossBuffer.dispose(), this.outlineBuffer.dispose(), this.normalOverrideMaterial.dispose(), this.glossOverrideMaterial.dispose(), this.fsQuad.material.dispose(), this.fsQuad.dispose(), this.excludedMeshes = [], this._outlineScene.children = [];\n const e = this.components.get(rn);\n for (const n in this.outlinedMeshes) {\n const s = this.outlinedMeshes[n];\n for (const i of s.meshes)\n e.destroy(i, !0, !0);\n s.material.dispose();\n }\n }\n setSize(e, n) {\n this.planeBuffer.setSize(e, n), this.glossBuffer.setSize(e, n), this.outlineBuffer.setSize(e, n), this.resolution.set(e, n);\n const s = this.fsQuad.material;\n s.uniforms.screenSize.value.set(\n this.resolution.x,\n this.resolution.y,\n 1 / this.resolution.x,\n 1 / this.resolution.y\n ), s.uniformsNeedUpdate = !0;\n }\n render(e, n, s) {\n const i = n.depthBuffer;\n n.depthBuffer = !1;\n const r = this.renderScene.overrideMaterial, o = this.renderScene.background;\n this.renderScene.background = null;\n for (const u of this.excludedMeshes)\n u.visible = !1;\n if (e.setRenderTarget(this.planeBuffer), this.renderScene.overrideMaterial = this.normalOverrideMaterial, e.render(this.renderScene, this.renderCamera), this._glossEnabled && (e.setRenderTarget(this.glossBuffer), this.renderScene.overrideMaterial = this.glossOverrideMaterial, e.render(this.renderScene, this.renderCamera)), this.renderScene.overrideMaterial = r, this._outlineEnabled) {\n let u = !1;\n for (const d in this.outlinedMeshes) {\n const m = this.outlinedMeshes[d];\n for (const f of m.meshes)\n u = !0, f.userData.materialPreOutline = f.material, f.material = m.material, f.userData.groupsPreOutline = f.geometry.groups, f.geometry.groups = [], f instanceof w.InstancedMesh && (f.userData.colorPreOutline = f.instanceColor, f.instanceColor = null), f.userData.parentPreOutline = f.parent, this._outlineScene.add(f);\n }\n (u || this._outlinesNeedsUpdate) && (e.setRenderTarget(this.outlineBuffer), e.render(this._outlineScene, this.renderCamera), this._outlinesNeedsUpdate = u);\n for (const d in this.outlinedMeshes) {\n const m = this.outlinedMeshes[d];\n for (const f of m.meshes)\n f.material = f.userData.materialPreOutline, f.geometry.groups = f.userData.groupsPreOutline, f instanceof w.InstancedMesh && (f.instanceColor = f.userData.colorPreOutline), f.userData.parentPreOutline && f.userData.parentPreOutline.add(f), f.userData.materialPreOutline = void 0, f.userData.groupsPreOutline = void 0, f.userData.colorPreOutline = void 0, f.userData.parentPreOutline = void 0;\n }\n }\n for (const u of this.excludedMeshes)\n u.visible = !0;\n this.renderScene.background = o;\n const l = this.fsQuad.material;\n l.uniforms.planeBuffer.value = this.planeBuffer.texture, l.uniforms.glossBuffer.value = this.glossBuffer.texture, l.uniforms.outlineBuffer.value = this.outlineBuffer.texture, l.uniforms.sceneColorBuffer.value = s.texture, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(n), this.fsQuad.render(e)), n.depthBuffer = i;\n }\n get vertexShader() {\n return `\n\t varying vec2 vUv;\n\t void main() {\n\t \tvUv = uv;\n\t \tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n\t }\n\t`;\n }\n get fragmentShader() {\n return `\n\t uniform sampler2D sceneColorBuffer;\n\t uniform sampler2D planeBuffer;\n\t uniform sampler2D glossBuffer;\n\t uniform sampler2D outlineBuffer;\n\t uniform vec4 screenSize;\n\t uniform vec3 lineColor;\n\t \n\t uniform float outlineEnabled;\n\t \n uniform int width;\n\t uniform float opacity;\n uniform float tolerance;\n uniform float glossExponent;\n uniform float minGloss;\n uniform float maxGloss;\n uniform float glossEnabled;\n\n\t varying vec2 vUv;\n\n\t vec4 getValue(sampler2D buffer, int x, int y) {\n\t \treturn texture2D(buffer, vUv + screenSize.zw * vec2(x, y));\n\t }\n\n float normalDiff(vec3 normal1, vec3 normal2) {\n return ((dot(normal1, normal2) - 1.) * -1.) / 2.;\n }\n\n // Returns 0 if it's background, 1 if it's not\n float getIsBackground(vec3 normal) {\n float background = 1.0;\n background *= step(normal.x, 0.);\n background *= step(normal.y, 0.);\n background *= step(normal.z, 0.);\n background = (background - 1.) * -1.;\n return background;\n }\n\n\t void main() {\n\t \n\t vec4 sceneColor = getValue(sceneColorBuffer, 0, 0);\n\t vec3 normSceneColor = normalize(sceneColor.rgb);\n \n vec4 plane = getValue(planeBuffer, 0, 0);\n\t vec3 normal = plane.xyz;\n float distance = plane.w;\n \n vec3 normalTop = getValue(planeBuffer, 0, width).rgb;\n vec3 normalBottom = getValue(planeBuffer, 0, -width).rgb;\n vec3 normalRight = getValue(planeBuffer, width, 0).rgb;\n vec3 normalLeft = getValue(planeBuffer, -width, 0).rgb;\n vec3 normalTopRight = getValue(planeBuffer, width, width).rgb;\n vec3 normalTopLeft = getValue(planeBuffer, -width, width).rgb;\n vec3 normalBottomRight = getValue(planeBuffer, width, -width).rgb;\n vec3 normalBottomLeft = getValue(planeBuffer, -width, -width).rgb;\n \n float distanceTop = getValue(planeBuffer, 0, width).a;\n float distanceBottom = getValue(planeBuffer, 0, -width).a;\n float distanceRight = getValue(planeBuffer, width, 0).a;\n float distanceLeft = getValue(planeBuffer, -width, 0).a;\n float distanceTopRight = getValue(planeBuffer, width, width).a;\n float distanceTopLeft = getValue(planeBuffer, -width, width).a;\n float distanceBottomRight = getValue(planeBuffer, width, -width).a;\n float distanceBottomLeft = getValue(planeBuffer, -width, -width).a;\n \n vec3 sceneColorTop = normalize(getValue(sceneColorBuffer, 1, 0).rgb);\n vec3 sceneColorBottom = normalize(getValue(sceneColorBuffer, -1, 0).rgb);\n vec3 sceneColorLeft = normalize(getValue(sceneColorBuffer, 0, -1).rgb);\n vec3 sceneColorRight = normalize(getValue(sceneColorBuffer, 0, 1).rgb);\n vec3 sceneColorTopRight = normalize(getValue(sceneColorBuffer, 1, 1).rgb);\n vec3 sceneColorBottomRight = normalize(getValue(sceneColorBuffer, -1, 1).rgb);\n vec3 sceneColorTopLeft = normalize(getValue(sceneColorBuffer, 1, 1).rgb);\n vec3 sceneColorBottomLeft = normalize(getValue(sceneColorBuffer, -1, 1).rgb);\n\n // Checks if the planes of this texel and the neighbour texels are different\n\n float planeDiff = 0.0;\n\n planeDiff += step(0.001, normalDiff(normal, normalTop));\n planeDiff += step(0.001, normalDiff(normal, normalBottom));\n planeDiff += step(0.001, normalDiff(normal, normalLeft));\n planeDiff += step(0.001, normalDiff(normal, normalRight));\n planeDiff += step(0.001, normalDiff(normal, normalTopRight));\n planeDiff += step(0.001, normalDiff(normal, normalTopLeft));\n planeDiff += step(0.001, normalDiff(normal, normalBottomRight));\n planeDiff += step(0.001, normalDiff(normal, normalBottomLeft));\n \n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorTop));\n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorBottom));\n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorLeft));\n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorRight));\n \tplaneDiff += step(0.001, normalDiff(normSceneColor, sceneColorTopRight));\n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorTopLeft));\n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorBottomRight));\n planeDiff += step(0.001, normalDiff(normSceneColor, sceneColorBottomLeft));\n\n planeDiff += step(0.001, abs(distance - distanceTop));\n planeDiff += step(0.001, abs(distance - distanceBottom));\n planeDiff += step(0.001, abs(distance - distanceLeft));\n planeDiff += step(0.001, abs(distance - distanceRight));\n planeDiff += step(0.001, abs(distance - distanceTopRight));\n planeDiff += step(0.001, abs(distance - distanceTopLeft));\n planeDiff += step(0.001, abs(distance - distanceBottomRight));\n planeDiff += step(0.001, abs(distance - distanceBottomLeft));\n\n // Add extra background outline\n\n int width2 = width + 1;\n vec3 normalTop2 = getValue(planeBuffer, 0, width2).rgb;\n vec3 normalBottom2 = getValue(planeBuffer, 0, -width2).rgb;\n vec3 normalRight2 = getValue(planeBuffer, width2, 0).rgb;\n vec3 normalLeft2 = getValue(planeBuffer, -width2, 0).rgb;\n vec3 normalTopRight2 = getValue(planeBuffer, width2, width2).rgb;\n vec3 normalTopLeft2 = getValue(planeBuffer, -width2, width2).rgb;\n vec3 normalBottomRight2 = getValue(planeBuffer, width2, -width2).rgb;\n vec3 normalBottomLeft2 = getValue(planeBuffer, -width2, -width2).rgb;\n\n planeDiff += -(getIsBackground(normalTop2) - 1.);\n planeDiff += -(getIsBackground(normalBottom2) - 1.);\n planeDiff += -(getIsBackground(normalRight2) - 1.);\n planeDiff += -(getIsBackground(normalLeft2) - 1.);\n planeDiff += -(getIsBackground(normalTopRight2) - 1.);\n planeDiff += -(getIsBackground(normalBottomRight2) - 1.);\n planeDiff += -(getIsBackground(normalBottomRight2) - 1.);\n planeDiff += -(getIsBackground(normalBottomLeft2) - 1.);\n\n // Tolerance sets the minimum amount of differences to consider\n // this texel an edge\n\n float line = step(tolerance, planeDiff);\n\n // Exclude background and apply opacity\n\n float background = getIsBackground(normal);\n line *= background;\n line *= opacity;\n \n // Add gloss\n \n vec3 gloss = getValue(glossBuffer, 0, 0).xyz;\n float diffGloss = abs(maxGloss - minGloss);\n vec3 glossExpVector = vec3(glossExponent,glossExponent,glossExponent);\n gloss = min(pow(gloss, glossExpVector), vec3(1.,1.,1.));\n gloss *= diffGloss;\n gloss += minGloss;\n vec4 glossedColor = sceneColor + vec4(gloss, 1.) * glossEnabled;\n \n vec4 corrected = mix(sceneColor, glossedColor, background);\n \n // Draw lines\n \n corrected = mix(corrected, vec4(lineColor, 1.), line);\n \n // Add outline\n \n vec4 outlinePreview =getValue(outlineBuffer, 0, 0);\n float outlineColorCorrection = 1. / max(0.2, outlinePreview.a);\n vec3 outlineColor = outlinePreview.rgb * outlineColorCorrection;\n \n // thickness between 10 and 2, opacity between 1 and 0.2\n\t int outlineThickness = int(outlinePreview.a * 10.);\n\t \n\t float outlineDiff = 0.;\n \n outlineDiff += step(0.1, getValue(outlineBuffer, 0, 0).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, 1, 0).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, -1, 0).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, 0, -1).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, 0, 1).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, outlineThickness, 0).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, -outlineThickness, 0).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, 0, -outlineThickness).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, 0, outlineThickness).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, outlineThickness, outlineThickness).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, -outlineThickness, outlineThickness).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, -outlineThickness, -outlineThickness).a);\n outlineDiff += step(0.1, getValue(outlineBuffer, outlineThickness, -outlineThickness).a);\n \n float outLine = step(4., outlineDiff) * step(outlineDiff, 12.) * outlineEnabled;\n corrected = mix(corrected, vec4(outlineColor, 1.), outLine);\n \n gl_FragColor = corrected;\n\t}\n\t\t\t`;\n }\n createOutlinePostProcessMaterial() {\n return new w.ShaderMaterial({\n uniforms: {\n opacity: { value: this._opacity },\n debugVisualize: { value: 0 },\n sceneColorBuffer: { value: null },\n tolerance: { value: this._tolerance },\n planeBuffer: { value: null },\n glossBuffer: { value: null },\n outlineBuffer: { value: null },\n glossEnabled: { value: 1 },\n minGloss: { value: this._minGloss },\n maxGloss: { value: this._maxGloss },\n outlineEnabled: { value: 0 },\n glossExponent: { value: this._glossExponent },\n width: { value: 1 },\n lineColor: { value: new w.Color(this._lineColor) },\n screenSize: {\n value: new w.Vector4(\n this.resolution.x,\n this.resolution.y,\n 1 / this.resolution.x,\n 1 / this.resolution.y\n )\n }\n },\n vertexShader: this.vertexShader,\n fragmentShader: this.fragmentShader\n });\n }\n newRenderTarget() {\n const e = new w.WebGLRenderTarget(\n this.resolution.x,\n this.resolution.y\n );\n return e.texture.colorSpace = \"srgb-linear\", e.texture.format = w.RGBAFormat, e.texture.type = w.HalfFloatType, e.texture.minFilter = w.NearestFilter, e.texture.magFilter = w.NearestFilter, e.texture.generateMipmaps = !1, e.stencilBuffer = !1, e;\n }\n}\nclass Ip {\n constructor(t, e, n) {\n /**\n * The EffectComposer instance used for managing the post-processing effects.\n */\n T(this, \"composer\");\n /**\n * Flag indicating whether to override the clipping planes of the renderer.\n * Default: false\n */\n T(this, \"overrideClippingPlanes\", !1);\n T(this, \"_components\");\n T(this, \"_world\");\n T(this, \"_renderTarget\");\n T(this, \"_enabled\", !1);\n T(this, \"_initialized\", !1);\n T(this, \"_n8ao\");\n T(this, \"_customEffects\");\n T(this, \"_basePass\");\n T(this, \"_gammaPass\");\n T(this, \"_depthTexture\");\n T(this, \"_renderer\");\n T(this, \"_settings\", {\n gamma: !0,\n custom: !0,\n ao: !1\n });\n if (!n.renderer)\n throw new Error(\"The given world must have a renderer!\");\n this._components = t, this._renderer = e, this._world = n, this._renderTarget = new w.WebGLRenderTarget(\n window.innerWidth,\n window.innerHeight\n ), this._renderTarget.texture.colorSpace = \"srgb-linear\", this.composer = new op(e, this._renderTarget), this.composer.setSize(window.innerWidth, window.innerHeight);\n }\n /**\n * Getter for the base pass. Throws an error if the custom effects are not initialized.\n */\n get basePass() {\n if (!this._basePass)\n throw new Error(\"Custom effects not initialized!\");\n return this._basePass;\n }\n /**\n * Getter for the gamma pass. Throws an error if the custom effects are not initialized.\n */\n get gammaPass() {\n if (!this._gammaPass)\n throw new Error(\"Custom effects not initialized!\");\n return this._gammaPass;\n }\n /**\n * Getter for the custom effects pass. Throws an error if the custom effects are not initialized.\n */\n get customEffects() {\n if (!this._customEffects)\n throw new Error(\"Custom effects not initialized!\");\n return this._customEffects;\n }\n /**\n * Getter for the N8AO pass. Throws an error if the custom effects are not initialized.\n */\n get n8ao() {\n if (!this._n8ao)\n throw new Error(\"Custom effects not initialized!\");\n return this._n8ao;\n }\n /**\n * Getter for the enabled state of the post-processing effects.\n */\n get enabled() {\n return this._enabled;\n }\n /**\n * Setter for the enabled state of the post-processing effects.\n * If the custom effects are not initialized, it calls the initialize method.\n * @param {boolean} active - The new enabled state.\n */\n set enabled(t) {\n this._initialized || this.initialize(), this._enabled = t;\n }\n /**\n * Getter for the current post-processing settings.\n */\n get settings() {\n return { ...this._settings };\n }\n /**\n * Disposes of the resources held by the post-processing manager.\n * This method should be called when the post-processing manager is no longer needed.\n * It releases the memory occupied by the render target, depth texture, custom effects pass, gamma pass, and N8AO pass.\n */\n dispose() {\n var t, e, n, s;\n this._renderTarget.dispose(), (t = this._depthTexture) == null || t.dispose(), (e = this._customEffects) == null || e.dispose(), (n = this._gammaPass) == null || n.dispose(), (s = this._n8ao) == null || s.dispose();\n }\n /**\n * Sets the post-processing settings and updates the passes accordingly.\n * This method checks if the settings have changed before updating the passes.\n *\n * @param settings - The new post-processing settings.\n * @returns {void}\n */\n setPasses(t) {\n let e = !1;\n for (const n in t) {\n const s = n;\n if (this.settings[s] !== t[s]) {\n e = !0;\n break;\n }\n }\n if (e) {\n for (const n in t) {\n const s = n;\n this._settings[s] !== void 0 && (this._settings[s] = t[s]);\n }\n this.updatePasses();\n }\n }\n /**\n * Sets the size of the render target and all related passes.\n * This method should be called when the window size changes to ensure that the post-processing effects are rendered correctly.\n *\n * @param width - The new width of the render target.\n * @param height - The new height of the render target.\n * @returns {void}\n */\n setSize(t, e) {\n if (this._initialized) {\n const n = this._settings.custom;\n n && this.setPasses({ custom: !1 }), this.setPasses({ custom: !1 }), this.composer.setSize(t, e), this.basePass.setSize(t, e), this.n8ao.setSize(t, e), this.customEffects.setSize(t, e), this.gammaPass.setSize(t, e), n && this.setPasses({ custom: !0 });\n }\n }\n /**\n * Updates the post-processing effects.\n * This method checks if the post-processing effects are enabled before rendering.\n * If the effects are enabled, it calls the `composer.render()` method to apply the effects.\n */\n update() {\n this._enabled && this.composer.render();\n }\n /**\n * Updates the camera settings for the post-processing effects.\n * This method is called whenever the camera settings change.\n * It updates the camera settings for the N8AO pass, custom effects pass, and base pass.\n */\n updateCamera() {\n const t = this._world.camera.three;\n this._n8ao && (this._n8ao.camera = t), this._customEffects && (this._customEffects.renderCamera = t), this._basePass && (this._basePass.camera = t);\n }\n /**\n * Updates the projection of the camera for the post-processing effects.\n * This method iterates over all passes in the EffectComposer and updates the camera property of each pass.\n * After updating the camera, it calls the update method to apply the changes.\n *\n * @param camera - The new camera to use for the post-processing effects.\n * @returns {void}\n */\n updateProjection(t) {\n this.composer.passes.forEach((e) => {\n e.camera = t;\n }), this.update();\n }\n initialize() {\n if (!this._world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const t = this._world.scene.three, e = this._world.camera.three;\n if (!(t instanceof w.Scene))\n throw new Error(\"The given scene must have a THREE.Scene as core!\");\n const n = this._world.camera;\n n.projection && n.projection.onChanged.add(() => {\n this.updateCamera();\n });\n const s = this._world.renderer;\n this.overrideClippingPlanes || (this._renderer.clippingPlanes = s.clippingPlanes), this._renderer.outputColorSpace = \"srgb\", this._renderer.toneMapping = w.NoToneMapping, this.newBasePass(t, e), this.newSaoPass(t, e), this.newGammaPass(), this.newCustomPass(t, e), this._initialized = !0, this.updatePasses();\n }\n updatePasses() {\n for (const t of this.composer.passes)\n this.composer.removePass(t);\n this._basePass && this.composer.addPass(this.basePass), this._settings.gamma && this.composer.addPass(this.gammaPass), this._settings.ao && this.composer.addPass(this.n8ao), this._settings.custom && this.composer.addPass(this.customEffects);\n }\n newCustomPass(t, e) {\n this._customEffects = new vp(\n new w.Vector2(window.innerWidth, window.innerHeight),\n this._components,\n this._world,\n t,\n e\n );\n }\n newGammaPass() {\n this._gammaPass = new bh(mp);\n }\n newSaoPass(t, e) {\n if (!this._world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const { width: n, height: s } = this._world.renderer.getSize();\n this._n8ao = new pp(t, e, n, s);\n const { configuration: i } = this._n8ao;\n i.aoSamples = 16, i.denoiseSamples = 1, i.denoiseRadius = 13, i.aoRadius = 1, i.distanceFalloff = 4, i.aoRadius = 1, i.intensity = 4, i.halfRes = !0, i.color = new w.Color().setHex(13421772, \"srgb-linear\");\n }\n newBasePass(t, e) {\n this._basePass = new ap(t, e);\n }\n}\nclass Sa extends Uf {\n constructor(e, n, s) {\n super(e, n, s);\n T(this, \"_postproduction\");\n this.onResize.add((i) => this.resizePostproduction(i)), this.onWorldChanged.add(() => {\n this.currentWorld && (this._postproduction && this._postproduction.dispose(), this._postproduction = new Ip(\n e,\n this.three,\n this.currentWorld\n ), this.setPostproductionSize());\n });\n }\n /**\n * Getter for the postproduction instance.\n * Throws an error if the postproduction instance is not yet initialized.\n *\n * @returns The initialized Postproduction instance.\n */\n get postproduction() {\n if (!this._postproduction)\n throw new Error(\"Renderer not initialized yet with a world!\");\n return this._postproduction;\n }\n /** {@link Updateable.update} */\n update() {\n if (!this.enabled || !this.currentWorld)\n return;\n this.onBeforeUpdate.trigger();\n const e = this.currentWorld.scene.three, n = this.currentWorld.camera.three;\n this.postproduction.enabled ? this.postproduction.composer.render() : this.three.render(e, n), e instanceof w.Scene && this.three2D.render(e, n), this.onAfterUpdate.trigger();\n }\n /** {@link OBC.Disposable.dispose}. */\n dispose() {\n super.dispose(), this.postproduction.dispose();\n }\n resizePostproduction(e) {\n this.postproduction && this.setPostproductionSize(e);\n }\n setPostproductionSize(e) {\n if (!this.container)\n return;\n const n = e ? e.x : this.container.clientWidth, s = e ? e.y : this.container.clientHeight;\n this.postproduction.setSize(n, s);\n }\n}\nclass yp {\n constructor(t, e, n, s, i) {\n /**\n * The THREE.js mesh representing the fills.\n */\n T(this, \"mesh\", new w.Mesh(new w.BufferGeometry()));\n /**\n * The components instance associated with the clipping fills.\n */\n T(this, \"components\");\n /**\n * The world in which the clipping plane and fills exist.\n */\n T(this, \"world\");\n /**\n * The name of the style associated with this clipping fills.\n */\n T(this, \"styleName\");\n T(this, \"_precission\", 1e4);\n T(this, \"_tempVector\", new w.Vector3());\n T(this, \"_plane\");\n T(this, \"_geometry\");\n // Used to work in the 2D coordinate system of the plane\n T(this, \"_plane2DCoordinateSystem\", new w.Matrix4());\n // Used if the plane is orthogonal to the cartesian planes\n T(this, \"_planeAxis\");\n this.components = t, this.world = e, this.mesh.material = i, this.mesh.frustumCulled = !1, this.mesh.userData.indexFragmentMap = /* @__PURE__ */ new Map(), this._plane = n;\n const { x: r, y: o, z: l } = n.normal;\n Math.abs(r) === 1 ? this._planeAxis = \"x\" : Math.abs(o) === 1 ? this._planeAxis = \"y\" : Math.abs(l) === 1 && (this._planeAxis = \"z\"), this._geometry = s, this.mesh.geometry.attributes.position = s.attributes.position;\n const u = n.normal.clone().multiplyScalar(0.01);\n this.mesh.position.copy(u), this.visible = !0;\n }\n /**\n * Gets the visibility of the clipping fills mesh.\n * @returns {boolean} Returns true if the mesh is visible, false otherwise.\n */\n get visible() {\n return this.mesh.parent !== null;\n }\n /**\n * Sets the visibility of the clipping fills mesh.\n * @param {boolean} value - The new visibility state. If true, the mesh will be added to the scene and the style's meshes set. If false, the mesh will be removed from the scene and the style's meshes set.\n */\n set visible(t) {\n const e = this.getStyle();\n t ? (this.world.scene.three.add(this.mesh), e && e.meshes.add(this.mesh)) : (this.mesh.removeFromParent(), e && e.meshes.delete(this.mesh));\n }\n /**\n * Sets the geometry of the clipping fills mesh.\n * @param {THREE.BufferGeometry} geometry - The new geometry for the mesh. The position attribute of the geometry will be assigned to the mesh's geometry.\n */\n set geometry(t) {\n this._geometry = t, this.mesh.geometry.attributes.position = t.attributes.position;\n }\n /**\n * Disposes of the clipping fills mesh and its associated resources.\n * This method should be called when the clipping fills are no longer needed to free up memory.\n */\n dispose() {\n const t = this.getStyle();\n t && t.meshes.delete(this.mesh), this.mesh.userData.indexFragmentMap.clear(), this.mesh.userData = {}, this.mesh.geometry.dispose(), this.mesh.removeFromParent(), this.mesh.geometry = null, this.mesh = null, this._plane = null, this._geometry = null, this.components = null;\n }\n /**\n * Updates the clipping fills mesh with new indices.\n *\n * @param trianglesIndices - An array of indices representing triangles in the geometry.\n * @param indexFragMap - A map that allows to trace back the original fragment and id from each triangle of the fill mesh.\n *\n */\n update(t, e) {\n const n = this._geometry.attributes.position.array;\n if (!n)\n return;\n this.updatePlane2DCoordinateSystem();\n const { userData: s } = this.mesh, i = s.indexFragmentMap;\n i.clear();\n let r = 0;\n const o = [];\n let l = 0;\n const u = this.components.get(ke);\n for (const [d, m] of e)\n for (const f in m) {\n const g = u.list.get(f);\n g && (g.mesh.userData.fills || (g.mesh.userData.fills = /* @__PURE__ */ new Set()), g.mesh.userData.fills.add(this.mesh));\n }\n for (let d = 0; d < t.length; d++) {\n const m = t[d], f = [];\n for (let x = l; x < m; x += 2)\n f.push(x * 3);\n const g = this.computeFill(f, n), v = e.get(m);\n let y = 0;\n for (const x of g)\n o.push(x), v && y % 3 === 0 && i.set(r++, v), y++;\n l = m;\n }\n this.mesh.geometry.setIndex(o);\n }\n computeFill(t, e) {\n const n = /* @__PURE__ */ new Map(), s = {}, i = /* @__PURE__ */ new Map();\n let r = 0;\n const o = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Set(), d = this._precission;\n for (let f = 0; f < t.length; f++) {\n const g = t[f];\n let v = 0, y = 0, x = 0, A = 0;\n const F = e[g], P = e[g + 1], C = e[g + 2], O = e[g + 3], U = e[g + 4], Y = e[g + 5];\n if (this._tempVector.set(F, P, C), this._tempVector.applyMatrix4(this._plane2DCoordinateSystem), v = Math.trunc(this._tempVector.x * d) / d, y = Math.trunc(this._tempVector.y * d) / d, this._tempVector.set(O, U, Y), this._tempVector.applyMatrix4(this._plane2DCoordinateSystem), x = Math.trunc(this._tempVector.x * d) / d, A = Math.trunc(this._tempVector.y * d) / d, v === x && y === A)\n continue;\n const H = `${v}|${y}`, K = `${x}|${A}`;\n n.has(H) || n.set(H, g / 3), n.has(K) || n.set(K, g / 3 + 1);\n const Z = n.get(H), q = n.get(K);\n s[Z] = [v, y], s[q] = [x, A];\n const ne = l.has(Z), se = o.has(Z), he = l.has(q), me = o.has(q);\n if (!ne && !se && !he && !me)\n l.set(Z, r), o.set(q, r), u.add(r), i.set(r, [Z, q]), r++;\n else if (ne && me) {\n const Ee = l.get(Z), ue = o.get(q);\n if (Ee !== ue) {\n const we = i.get(ue), Ke = i.get(Ee);\n if (!we || !Ke)\n continue;\n i.delete(Ee), u.delete(Ee), o.set(Ke[Ke.length - 1], ue), o.delete(we[we.length - 1]);\n for (const Nt of Ke)\n we.push(Nt);\n } else\n u.delete(ue);\n l.delete(Z), o.delete(q);\n } else if (se && he) {\n const Ee = l.get(q), ue = o.get(Z);\n if (Ee !== ue) {\n const we = i.get(ue), Ke = i.get(Ee);\n if (!we || !Ke)\n continue;\n i.delete(Ee), u.delete(Ee), o.set(Ke[Ke.length - 1], ue), o.delete(we[we.length - 1]);\n for (const Nt of Ke)\n we.push(Nt);\n } else\n u.delete(ue);\n l.delete(q), o.delete(Z);\n } else if (ne && he) {\n const Ee = l.get(q), ue = l.get(Z), Le = i.get(ue), we = i.get(Ee);\n if (!Le || !we)\n continue;\n i.delete(Ee), u.delete(Ee), l.delete(Le[0]), l.delete(we[0]), o.delete(we[we.length - 1]), l.set(we[we.length - 1], ue), we.reverse(), Le.splice(0, 0, ...we);\n } else if (se && me) {\n const Ee = o.get(q), ue = o.get(Z), Le = i.get(ue), we = i.get(Ee);\n if (!Le || !we)\n continue;\n i.delete(Ee), u.delete(Ee), o.delete(Le[Le.length - 1]), o.delete(we[we.length - 1]), l.delete(we[0]), o.set(we[0], ue), we.reverse(), Le.push(...we);\n } else if (ne) {\n const Ee = l.get(Z), ue = i.get(Ee);\n if (!ue)\n continue;\n ue.unshift(q), l.delete(Z), l.set(q, Ee);\n } else if (se) {\n const Ee = o.get(Z), ue = i.get(Ee);\n if (!ue)\n continue;\n ue.push(q), o.delete(Z), o.set(q, Ee);\n } else if (he) {\n const Ee = l.get(q), ue = i.get(Ee);\n if (!ue)\n continue;\n ue.unshift(Z), l.delete(q), l.set(Z, Ee);\n } else if (me) {\n const Ee = o.get(q), ue = i.get(Ee);\n if (!ue)\n continue;\n ue.push(Z), o.delete(q), o.set(Z, Ee);\n }\n }\n const m = [];\n for (const [f, g] of i) {\n if (u.has(f))\n continue;\n const v = [], y = /* @__PURE__ */ new Map();\n let x = 0;\n for (const F of g) {\n const P = s[F];\n v.push(P[0], P[1]), y.set(x++, F);\n }\n const A = ep(v);\n for (const F of A) {\n const P = y.get(F);\n if (P === void 0)\n throw new Error(\"Map error!\");\n m.push(P);\n }\n }\n return m;\n }\n updatePlane2DCoordinateSystem() {\n this._plane2DCoordinateSystem = new w.Matrix4();\n const t = new w.Vector3(1, 0, 0), e = new w.Vector3(0, 1, 0), n = this._plane.normal, s = new w.Vector3();\n this._plane.coplanarPoint(s), this._planeAxis === \"x\" ? t.crossVectors(e, n) : this._planeAxis === \"y\" ? e.crossVectors(n, t) : this._planeAxis === \"z\" || (t.crossVectors(e, n).normalize(), e.crossVectors(n, t)), this._plane2DCoordinateSystem.fromArray([\n t.x,\n t.y,\n t.z,\n 0,\n e.x,\n e.y,\n e.z,\n 0,\n n.x,\n n.y,\n n.z,\n 0,\n s.x,\n s.y,\n s.z,\n 1\n ]), this._plane2DCoordinateSystem.invert();\n }\n getStyle() {\n if (!this.world.renderer)\n return null;\n const t = this.world.renderer instanceof Sa;\n return this.styleName && t ? this.world.renderer.postproduction.customEffects.outlinedMeshes[this.styleName] : null;\n }\n}\nclass wp {\n constructor(t, e, n) {\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Updateable.onAfterUpdate} */\n T(this, \"onAfterUpdate\", new $());\n /** {@link OBC.Updateable.onBeforeUpdate} */\n T(this, \"onBeforeUpdate\", new $());\n /** Indicates whether the component is enabled. */\n T(this, \"enabled\", !0);\n /** Indicates whether the fill needs to be updated. */\n T(this, \"fillNeedsUpdate\", !1);\n /** Reference to the components manager. */\n T(this, \"components\");\n /** Reference to the world. */\n T(this, \"world\");\n T(this, \"_edges\", {});\n T(this, \"_visible\", !0);\n T(this, \"_inverseMatrix\", new w.Matrix4());\n T(this, \"_localPlane\", new w.Plane());\n T(this, \"_tempLine\", new w.Line3());\n T(this, \"_tempVector\", new w.Vector3());\n T(this, \"_plane\");\n this.components = t, this.world = e, this._plane = n;\n }\n /** {@link OBC.Hideable.visible} */\n get visible() {\n return this._visible;\n }\n /** {@link OBC.Hideable.visible} */\n set visible(t) {\n for (const e in this._edges) {\n const n = this._edges[e];\n t ? this.world.scene.three.add(n.mesh) : n.mesh.removeFromParent(), n.fill && (n.fill.visible = t);\n }\n }\n /**\n * Getter that returns an array of THREE.Mesh instances representing the fills of the edges.\n *\n * @returns An array of THREE.Mesh instances representing the fills of the edges.\n */\n get fillMeshes() {\n const t = [];\n for (const e in this._edges) {\n const n = this._edges[e];\n n.fill && t.push(n.fill.mesh);\n }\n return t;\n }\n /** {@link OBC.Updateable.update} */\n update() {\n const e = this.components.get(ms).styles.list;\n this.updateDeletedEdges(e);\n for (const n in e)\n this.drawEdges(n);\n this.fillNeedsUpdate = !1;\n }\n // TODO: Remove?\n get() {\n return this._edges;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n const t = Object.keys(this._edges);\n for (const e of t)\n this.disposeEdge(e);\n this.onDisposed.trigger(), this.onDisposed.reset();\n }\n newEdgesMesh(t) {\n const s = this.components.get(ms).styles.list[t].lineMaterial, i = new w.BufferGeometry(), r = new Float32Array(3e5), o = new w.BufferAttribute(r, 3, !1);\n o.setUsage(w.DynamicDrawUsage), i.setAttribute(\"position\", o);\n const l = new w.LineSegments(i, s);\n return l.frustumCulled = !1, l;\n }\n newFillMesh(t, e) {\n const i = this.components.get(ms).styles.list[t], r = i.fillMaterial;\n if (r) {\n const o = new yp(\n this.components,\n this.world,\n this._plane,\n e,\n r\n );\n return this.newFillOutline(t, o, i), o;\n }\n }\n newFillOutline(t, e, n) {\n if (!n.outlineMaterial || !this.world.renderer)\n return;\n const s = this.world.renderer;\n if (s instanceof Sa) {\n const r = s.postproduction.customEffects.outlinedMeshes;\n r[t] || (r[t] = {\n meshes: /* @__PURE__ */ new Set(),\n material: n.outlineMaterial\n }), e.styleName = t;\n }\n }\n // Source: https://gkjohnson.github.io/three-mesh-bvh/example/bundle/clippedEdges.html\n drawEdges(t) {\n const n = this.components.get(ms).styles.list[t];\n this._edges[t] || this.initializeStyle(t);\n const s = this._edges[t];\n let i = 0;\n const r = s.mesh.geometry.attributes.position;\n r.array.fill(0);\n const o = [];\n let l = 0;\n const u = /* @__PURE__ */ new Map();\n for (const f of n.meshes)\n if (f.geometry) {\n if (!f.geometry.boundsTree)\n throw new Error(\"Bounds tree not found for clipping edges subset.\");\n if (f instanceof w.InstancedMesh) {\n if (f.count === 0)\n continue;\n const g = f;\n for (let v = 0; v < g.count; v++) {\n const y = g instanceof xu, x = g, A = n.fragments[x.fragment.id];\n if (y && A) {\n const C = x.fragment.getItemID(v);\n if (C === null || !A.has(C))\n continue;\n }\n const F = new w.Mesh(f.geometry);\n F.matrix.copy(f.matrix);\n const P = new w.Matrix4();\n if (g.getMatrixAt(v, P), F.applyMatrix4(P), F.applyMatrix4(f.matrix), F.updateMatrix(), F.updateMatrixWorld(), this._inverseMatrix.copy(F.matrixWorld).invert(), this._localPlane.copy(this._plane).applyMatrix4(this._inverseMatrix), i = this.shapecast(F, r, i), i !== l) {\n if (y && A) {\n const C = x.fragment.getItemID(v);\n C !== null && u.set(i, {\n [x.fragment.id]: /* @__PURE__ */ new Set([C])\n });\n }\n o.push(i), l = i;\n }\n }\n } else\n this._inverseMatrix.copy(f.matrixWorld).invert(), this._localPlane.copy(this._plane).applyMatrix4(this._inverseMatrix), i = this.shapecast(f, r, i), i !== l && (o.push(i), l = i);\n }\n s.mesh.geometry.setDrawRange(0, i), s.mesh.position.copy(this._plane.normal).multiplyScalar(1e-4), r.needsUpdate = !0;\n const m = s.mesh.geometry.attributes.position;\n Number.isNaN(m.array[0]) || (s.mesh.parent || this.world.scene.three.add(s.mesh), this.fillNeedsUpdate && s.fill && (s.fill.geometry = s.mesh.geometry, s.fill.update(o, u)));\n }\n initializeStyle(t) {\n const e = this.newEdgesMesh(t), n = e.geometry, s = this.newFillMesh(t, n);\n this._edges[t] = { mesh: e, name: t, fill: s };\n }\n shapecast(t, e, n) {\n return t.geometry.boundsTree.shapecast({\n intersectsBounds: (s) => this._localPlane.intersectsBox(s),\n // @ts-ignore\n intersectsTriangle: (s) => {\n let i = 0;\n if (this._tempLine.start.copy(s.a), this._tempLine.end.copy(s.b), this._localPlane.intersectLine(this._tempLine, this._tempVector)) {\n const r = this._tempVector.applyMatrix4(t.matrixWorld);\n e.setXYZ(n, r.x, r.y, r.z), i++, n++;\n }\n if (this._tempLine.start.copy(s.b), this._tempLine.end.copy(s.c), this._localPlane.intersectLine(this._tempLine, this._tempVector)) {\n const r = this._tempVector.applyMatrix4(t.matrixWorld);\n e.setXYZ(n, r.x, r.y, r.z), i++, n++;\n }\n if (this._tempLine.start.copy(s.c), this._tempLine.end.copy(s.a), this._localPlane.intersectLine(this._tempLine, this._tempVector)) {\n const r = this._tempVector.applyMatrix4(t.matrixWorld);\n e.setXYZ(n, r.x, r.y, r.z), i++, n++;\n }\n i !== 2 && (n -= i);\n }\n }), n;\n }\n updateDeletedEdges(t) {\n const e = Object.keys(this._edges);\n for (const n of e)\n t[n] === void 0 && (this.disposeEdge(n), this.disposeOutline(n));\n }\n disposeOutline(t) {\n if (!this.world.renderer)\n return;\n const e = this.world.renderer;\n if (e instanceof Sa) {\n const n = e.postproduction.customEffects.outlinedMeshes;\n delete n[t];\n }\n }\n disposeEdge(t) {\n const e = this.components.get(rn), n = this._edges[t];\n n.fill && n.fill.dispose(), e.destroy(n.mesh, !1), delete this._edges[t];\n }\n}\nclass di extends jr {\n constructor(e, n, s, i, r, o = 5, l = !0) {\n super(e, n, s, i, r, o, l);\n T(this, \"edges\");\n /**\n * The max rate in milliseconds at which edges can be regenerated.\n * To disable this behaviour set this to 0.\n */\n T(this, \"edgesMaxUpdateRate\", 50);\n T(this, \"_visible\", !0);\n T(this, \"_edgesVisible\", !0);\n /**\n * Updates the fill of the edges.\n * This method sets the `fillNeedsUpdate` flag to true, triggers the `update` method of the `edges`,\n * and sets the visibility of the `edges` to the current value of `_visible`.\n *\n * @returns {void}\n */\n T(this, \"updateFill\", () => {\n this.edges.fillNeedsUpdate = !0, this.edges.update(), this.edges.visible = this._visible;\n });\n this.edges = new wp(e, n, this.three), this.toggleControls(!0), this.edges.visible = !0, this.onDraggingEnded.add(() => {\n this.updateFill();\n }), this.onDraggingStarted.add(() => this.edges.visible = !1);\n }\n /**\n * Getter for the visibility state of the plane.\n * @returns {boolean} The current visibility state.\n */\n get visible() {\n return this._visible;\n }\n /**\n * Setter for the visibility state of the plane.\n * Also toggles the visibility of the controls.\n * @param {boolean} state - The new visibility state.\n */\n set visible(e) {\n super.visible = e, this.toggleControls(e);\n }\n /**\n * Setter for the enabled state of the plane.\n * Also sets the enabled state in the renderer.\n * @param {boolean} state - The new enabled state.\n */\n set enabled(e) {\n this._enabled = e, this.world.renderer && this.world.renderer.setPlane(e, this.three);\n }\n /**\n * Getter for the enabled state of the plane.\n * @returns {boolean} The current enabled state.\n */\n get enabled() {\n return super.enabled;\n }\n /**\n * Disposes of the EdgesPlane and its associated ClippingEdges.\n * This method should be called when the EdgesPlane is no longer needed to free up resources.\n * After calling this method, the EdgesPlane and its ClippingEdges should not be used anymore.\n */\n dispose() {\n super.dispose(), this.edges.dispose();\n }\n}\nclass Cp {\n constructor() {\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * A boolean indicating whether the styles are enabled.\n * Default value is `true`.\n */\n T(this, \"enabled\", !0);\n /**\n * A dictionary of {@link ClipStyle} objects, where the keys are the names of the styles.\n * Default value is an empty object.\n */\n T(this, \"list\", {});\n T(this, \"_defaultLineMaterial\", new Fc({\n color: 0,\n linewidth: 1e-3\n }));\n /** {@link OBC.Updateable.onAfterUpdate} */\n T(this, \"onAfterUpdate\", new $());\n /** {@link OBC.Updateable.onBeforeUpdate} */\n T(this, \"onBeforeUpdate\", new $());\n }\n /** {@link OBC.Updateable.update} */\n update(t) {\n this.onBeforeUpdate.trigger(this.list), this.onAfterUpdate.trigger(this.list);\n }\n // Creates a new style that applies to all clipping edges for generic models\n /**\n * Creates a new style that applies to all clipping edges for generic models.\n *\n * @param name - The name of the style.\n * @param meshes - A set of meshes to apply the style to.\n * @param world - The world where the meshes are located.\n * @param lineMaterial - The material for the lines of the style. If not provided, the default material is used.\n * @param fillMaterial - The material for the fill of the style.\n * @param outlineMaterial - The material for the outline of the style.\n *\n * @returns The newly created style.\n *\n * @throws Will throw an error if the given world doesn't have a renderer.\n */\n create(t, e, n, s, i, r) {\n if (!n.renderer)\n throw new Error(\"The given world doesn't have a renderer!\");\n s || (s = this._defaultLineMaterial);\n for (const u of e)\n u.geometry.boundsTree || u.geometry.computeBoundsTree();\n const o = n.renderer;\n s.clippingPlanes = o.clippingPlanes;\n const l = {\n name: t,\n lineMaterial: s,\n meshes: e,\n fillMaterial: i,\n outlineMaterial: r,\n fragments: {}\n };\n return this.list[t] = l, l;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n const t = Object.keys(this.list);\n for (const e of t)\n this.deleteStyle(e);\n this.list = {}, this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Deletes a style from the list and optionally disposes of its materials.\n *\n * @param id - The id of the style to delete.\n * @param disposeMaterials - A boolean indicating whether to dispose of the materials associated with the style.\n * Default value is `true`.\n *\n * @throws Will throw an error if the style with the given id doesn't exist in the list.\n */\n deleteStyle(t, e = !0) {\n var s, i;\n const n = this.list[t];\n n && (n.meshes.clear(), e && (n.lineMaterial.dispose(), (s = n.fillMaterial) == null || s.dispose(), (i = n.outlineMaterial) == null || i.dispose())), delete this.list[t];\n }\n}\nconst Or = class Or extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * The styling properties for the edges.\n */\n T(this, \"styles\");\n /**\n * A flag indicating whether the fills need to be updated.\n */\n T(this, \"fillsNeedUpdate\", !1);\n T(this, \"_visible\", !0);\n this.components.list.set(Or.uuid, this), this.styles = new Cp();\n }\n /**\n * Gets the visibility state of the edges.\n * @returns {boolean} The current visibility state.\n */\n get visible() {\n return this._visible;\n }\n /**\n * Sets the visibility state of the edges.\n * Updates the visibility of the associated {@link EdgesPlane} instances.\n * @param {boolean} active - The new visibility state.\n */\n set visible(e) {\n this._visible = e;\n const n = this.components.get(li);\n for (const s of n.list)\n s instanceof di && (s.edges.visible = e);\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.styles.dispose(), this.onDisposed.trigger();\n }\n /**\n * Updates all the lines of the component.\n *\n * @param {boolean} [updateFills=false] - If true, the fills will be updated regardless of the `fillsNeedUpdate` flag.\n * @returns {Promise} - A promise that resolves when the update is complete.\n *\n * @remarks\n * This method iterates through all the {@link EdgesPlane} instances associated with the {@link Clipper} component.\n */\n async update(e = !1) {\n if (!this.enabled)\n return;\n const n = this.components.get(li);\n for (const s of n.list)\n s instanceof di && (e || this.fillsNeedUpdate ? s.updateFill() : s.update());\n this.fillsNeedUpdate = !1;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Or, \"uuid\", \"24dfc306-a3c4-410f-8071-babc4afa5e4d\");\nlet ms = Or;\nconst Tp = {\n name: \"HorizontalBlurShader\",\n uniforms: {\n tDiffuse: { value: null },\n h: { value: 1 / 512 }\n },\n vertexShader: (\n /* glsl */\n `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float h;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n )\n}, bp = {\n name: \"VerticalBlurShader\",\n uniforms: {\n tDiffuse: { value: null },\n v: { value: 1 / 512 }\n },\n vertexShader: (\n /* glsl */\n `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n ),\n fragmentShader: (\n /* glsl */\n `\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float v;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n )\n}, vn = class vn extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * Controls how far away the shadow is computed\n */\n T(this, \"cameraHeight\", 10);\n /**\n * The darkness of the shadow.\n * A higher value makes the shadow darker.\n */\n T(this, \"darkness\", 1.2);\n /**\n * The opacity of the shadow.\n * A higher value makes the shadow more opaque.\n */\n T(this, \"opacity\", 1);\n /**\n * The resolution of the shadow texture.\n * A higher value results in a higher-quality shadow.\n */\n T(this, \"resolution\", 512);\n /**\n * The amount of blur applied to the shadow.\n * A higher value makes the shadow more blurred.\n */\n T(this, \"amount\", 3.5);\n /**\n * The color of the shadow plane.\n * This color is used when the ground color plane is enabled.\n */\n T(this, \"planeColor\", 16777215);\n /**\n * The offset of the shadow from the ground.\n * A positive value moves the shadow upwards.\n */\n T(this, \"shadowOffset\", 0);\n /**\n * The extra scale factor applied to the shadow size.\n * A higher value makes the shadow larger.\n */\n T(this, \"shadowExtraScaleFactor\", 1.5);\n /**\n * A collection of shadows, where each shadow is identified by a unique ID.\n */\n T(this, \"list\", {});\n T(this, \"tempMaterial\", new w.MeshBasicMaterial({ visible: !1 }));\n T(this, \"depthMaterial\", new w.MeshDepthMaterial());\n this.components.add(vn.uuid, this), this.initializeDepthMaterial();\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n for (const e in this.list)\n this.deleteShadow(e);\n this.tempMaterial.dispose(), this.depthMaterial.dispose(), this.components = null, this.onDisposed.trigger(vn.uuid), this.onDisposed.reset();\n }\n /**\n * Creates a blurred dropped shadow of the given mesh.\n *\n * @param model - the mesh whose shadow to generate.\n * @param id - the name of this shadow.\n */\n create(e, n, s) {\n if (this.list[n])\n throw new Error(`There is already a shadow with ID ${n}`);\n const { size: i, center: r, min: o } = this.getSizeCenterMin(e), l = this.createShadow(n, i, s);\n return this.initializeShadow(l, r, o), this.createPlanes(l, i), this.bakeShadow(e, l), l.root;\n }\n /**\n * Deletes the specified shadow (if it exists).\n *\n * @param id - the name of this shadow.\n */\n deleteShadow(e) {\n const n = this.components.get(rn), s = this.list[e];\n if (delete this.list[e], !s)\n throw new Error(`No shadow with ID ${e} was found.`);\n n.destroy(s.root), n.destroy(s.blurPlane), s.rt.dispose(), s.rtBlur.dispose();\n }\n createPlanes(e, n) {\n const s = new w.PlaneGeometry(n.x, n.z).rotateX(\n Math.PI / 2\n );\n this.createBasePlane(e, s), vn.createBlurPlane(e, s);\n }\n initializeShadow(e, n, s) {\n this.initializeRoot(e, n, s), vn.initializeRenderTargets(e), vn.initializeCamera(e);\n }\n bakeShadow(e, n) {\n const s = n.world.scene.three;\n if (!(s instanceof w.Scene))\n throw new Error(\"The core of the scene of the world must be a scene!\");\n if (!n.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const i = n.world.renderer.three, r = e.map((d) => !!d.parent);\n for (let d = 0; d < e.length; d++)\n r[d] || s.add(e[d]);\n const o = s.children.filter(\n (d) => !e.includes(d) && d !== n.root\n );\n for (let d = o.length - 1; d >= 0; d--)\n s.remove(o[d]);\n const l = s.background;\n s.background = null, s.overrideMaterial = this.depthMaterial;\n const u = [];\n for (const d of e)\n u.push(d.visible), d.visible = !0;\n i.setRenderTarget(n.rt), i.render(s, n.camera), s.overrideMaterial = null, this.blurShadow(n, this.amount), this.blurShadow(n, this.amount * 0.4), i.setRenderTarget(null), s.background = l;\n for (let d = 0; d < e.length; d++)\n e[d].visible = u[d];\n for (let d = o.length - 1; d >= 0; d--)\n s.add(o[d]);\n for (let d = 0; d < e.length; d++)\n r[d] || s.remove(e[d]);\n }\n static initializeCamera(e) {\n e.camera.rotation.x = Math.PI / 2, e.root.add(e.camera);\n }\n static initializeRenderTargets(e) {\n e.rt.texture.generateMipmaps = !1, e.rtBlur.texture.generateMipmaps = !1;\n }\n initializeRoot(e, n, s) {\n const i = e.world.scene.three;\n e.root.position.set(n.x, s.y - this.shadowOffset, n.z), i.add(e.root);\n }\n // Plane simulating the \"ground\". This is not needed for BIM models generally\n // private createGroundColorPlane(_shadow: Shadow, planeGeometry: BufferGeometry) {\n // const fillPlaneMaterial = new MeshBasicMaterial({\n // color: this.planeColor,\n // opacity: this.opacity,\n // transparent: true,\n // depthWrite: false,\n // clippingPlanes: this.context.getClippingPlanes()\n // });\n // const fillPlane = new Mesh(planeGeometry, fillPlaneMaterial);\n // fillPlane.rotateX(Math.PI);\n // fillPlane.renderOrder = -1;\n // shadow.root.add(fillPlane);\n // }\n createBasePlane(e, n) {\n const s = this.createPlaneMaterial(e), i = new w.Mesh(n, s);\n i.renderOrder = 2, e.root.add(i), i.scale.y = -1;\n }\n static createBlurPlane(e, n) {\n e.blurPlane.geometry = n, e.blurPlane.visible = !1, e.root.add(e.blurPlane);\n }\n createPlaneMaterial(e) {\n if (!e.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const n = e.world.renderer.three;\n return new w.MeshBasicMaterial({\n map: e.rt.texture,\n opacity: this.opacity,\n transparent: !0,\n depthWrite: !1,\n clippingPlanes: n.clippingPlanes\n });\n }\n // like MeshDepthMaterial, but goes from black to transparent\n initializeDepthMaterial() {\n this.depthMaterial.depthTest = !1, this.depthMaterial.depthWrite = !1;\n const e = \"gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\", n = \"gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );\";\n this.depthMaterial.userData.darkness = { value: this.darkness }, this.depthMaterial.onBeforeCompile = (s) => {\n s.uniforms.darkness = this.depthMaterial.userData.darkness, s.fragmentShader = /* glsl */\n `\n\t\t\t\t\t\tuniform float darkness;\n\t\t\t\t\t\t${s.fragmentShader.replace(e, n)}\n\t\t\t\t\t`;\n };\n }\n createShadow(e, n, s) {\n return this.list[e] = {\n root: new w.Group(),\n world: s,\n rt: new w.WebGLRenderTarget(this.resolution, this.resolution),\n rtBlur: new w.WebGLRenderTarget(this.resolution, this.resolution),\n blurPlane: new w.Mesh(),\n camera: this.createCamera(n)\n }, this.list[e];\n }\n createCamera(e) {\n return new w.OrthographicCamera(\n -e.x / 2,\n e.x / 2,\n e.z / 2,\n -e.z / 2,\n 0,\n this.cameraHeight\n );\n }\n getSizeCenterMin(e) {\n const n = e[0].parent, s = new w.Group();\n s.children = e;\n const i = new w.Box3().setFromObject(s);\n n == null || n.add(...e);\n const r = new w.Vector3();\n i.getSize(r), r.x *= this.shadowExtraScaleFactor, r.z *= this.shadowExtraScaleFactor;\n const o = new w.Vector3();\n i.getCenter(o);\n const l = i.min;\n return { size: r, center: o, min: l };\n }\n blurShadow(e, n) {\n if (!e.world.renderer)\n throw new Error(\"The given world must have a renderer!\");\n const s = new w.ShaderMaterial(\n Tp\n );\n s.depthTest = !1;\n const i = new w.ShaderMaterial(bp);\n i.depthTest = !1, e.blurPlane.visible = !0, e.blurPlane.material = s, e.blurPlane.material.uniforms.tDiffuse.value = e.rt.texture, s.uniforms.h.value = n * 1 / 256;\n const r = e.world.renderer.three;\n r.setRenderTarget(e.rtBlur), r.render(e.blurPlane, e.camera), e.blurPlane.material = i, e.blurPlane.material.uniforms.tDiffuse.value = e.rtBlur.texture, i.uniforms.v.value = n * 1 / 256, r.setRenderTarget(e.rt), r.render(e.blurPlane, e.camera), e.blurPlane.visible = !1;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(vn, \"uuid\", \"f833a09a-a3ab-4c58-b03e-da5298c7a1b6\");\nlet pc = vn;\nconst xp = [\n \"Station\",\n \"Radius\",\n \"Length\",\n \"InitialKP\",\n \"FinalKP\",\n \"KP\",\n \"Slope\",\n \"Height\",\n \"InitialKPV\",\n \"FinalKPV\"\n], Dr = class Dr extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * A reference to the 3D world in which the markers will be displayed.\n * This property should be set before using any methods of this component.\n */\n T(this, \"world\", null);\n // TODO: Replace with UUID for the marker key\n T(this, \"_markerKey\", 0);\n T(this, \"_list\", /* @__PURE__ */ new Map());\n T(this, \"type\", \"horizontal\");\n T(this, \"divisionLength\", 100);\n e.add(Dr.uuid, this);\n }\n /**\n * Adds a KP station marker to the world.\n *\n * @param world - The world to add the marker to.\n * @param text - The text to display on the marker.\n * @param mesh - The line representing the KP station.\n *\n * @returns {void}\n */\n addKPStation(e, n, s) {\n const i = this.components.get(nn), r = document.createElement(\"div\"), o = document.createElement(\"div\");\n r.appendChild(o), o.innerHTML = n, o.style.color = i.color, o.style.borderBottom = \"1px dotted white\", o.style.width = \"160px\", o.style.textAlign = \"left\";\n const l = new ft(e, r), u = new w.Vector3();\n u.x = s.geometry.attributes.position.getX(\n s.geometry.attributes.position.count - 1\n ), u.y = s.geometry.attributes.position.getY(\n s.geometry.attributes.position.count - 1\n ), u.z = s.geometry.attributes.position.getZ(\n s.geometry.attributes.position.count - 1\n );\n const d = new w.Vector3();\n d.x = s.geometry.attributes.position.getX(\n s.geometry.attributes.position.count - 2\n ), d.y = s.geometry.attributes.position.getY(\n s.geometry.attributes.position.count - 2\n ), d.z = s.geometry.attributes.position.getZ(\n s.geometry.attributes.position.count - 2\n );\n const m = new w.Vector3();\n m.x = (u.x + d.x) / 2, m.y = (u.y + d.y) / 2, m.z = (u.z + d.z) / 2, l.three.position.copy(m);\n const f = new w.Vector3();\n f.subVectors(u, d).normalize();\n const g = new w.Quaternion();\n g.setFromUnitVectors(new w.Vector3(0, 1, 0), f);\n const v = new w.Euler().setFromQuaternion(g).z, y = w.MathUtils.radToDeg(v);\n o.style.transform = `rotate(${-y - 90}deg) translate(-35%, -50%)`;\n const x = this._markerKey.toString();\n i.setupEvents(e, !0), i.getWorldMarkerList(e).set(x, {\n label: l,\n key: x,\n merged: !1,\n static: !1\n }), this._markerKey++, this.save(x, \"KP\");\n }\n /**\n * Adds a vertical marker to the 3D world based on the given parameters.\n *\n * @param world - The 3D world where the marker will be added.\n * @param text - The text to be displayed on the marker.\n * @param mesh - The mesh data related to the marker.\n * @param type - The type of the marker.\n * @param root - The root object for the marker.\n *\n * @returns The created and added marker.\n */\n addVerticalMarker(e, n, s, i, r) {\n const o = this.components.get(nn), l = document.createElement(\"span\");\n l.innerHTML = n, l.style.color = o.color;\n const u = new ft(e, l, r);\n if (i === \"Height\") {\n const f = document.createElement(\"span\");\n f.innerHTML = n, f.style.color = o.color;\n const { position: g } = s.geometry.attributes, y = (g.array.length / 3 - 1) * 3, x = g.array.slice(y, y + 3);\n u.three.position.set(x[0], x[1] + 10, x[2]);\n } else if (i === \"InitialKPV\") {\n const { position: f } = s.geometry.attributes, g = f.getX(0), v = f.getY(0), y = f.getZ(0);\n u.three.position.set(g - 20, v, y);\n } else if (i === \"FinalKPV\") {\n const { position: f } = s.geometry.attributes, g = f.getX(s.geometry.attributes.position.count - 1), v = f.getY(s.geometry.attributes.position.count - 1), y = f.getZ(s.geometry.attributes.position.count - 1);\n u.three.position.set(g + 20, v, y);\n } else if (i === \"Slope\") {\n l.style.color = \"grey\";\n const { position: f } = s.geometry.attributes, g = new w.Vector3();\n g.x = f.getX(0), g.y = f.getY(0), g.z = f.getZ(0);\n const v = new w.Vector3();\n v.x = f.getX(f.count - 1), v.y = f.getY(f.count - 1), v.z = f.getZ(f.count - 1);\n const y = new w.Vector3();\n y.addVectors(g, v).multiplyScalar(0.5), u.three.position.set(y.x, y.y - 10, y.z);\n }\n const d = this._markerKey.toString();\n return o.setupEvents(e, !0), o.getWorldMarkerList(e).set(d, {\n label: u,\n key: d,\n type: i,\n merged: !1,\n static: !1\n }), this._markerKey++, this.save(d, i), u;\n }\n /**\n * Adds a civil engineering marker to the world based on the given type.\n *\n * @param world - The world to add the marker to.\n * @param text - The text to display on the marker.\n * @param mesh - The mesh related to the marker.\n * @param type - The type of the marker.\n *\n * @returns The created marker.\n */\n addCivilMarker(e, n, s, i) {\n const r = this.components.get(nn), o = document.createElement(\"span\");\n o.innerHTML = n, o.style.color = r.color;\n const l = new ft(e, o);\n if (i === \"InitialKP\") {\n const m = s.geometry.attributes.position.getX(0), f = s.geometry.attributes.position.getY(0), g = s.geometry.attributes.position.getZ(0);\n l.three.position.set(m + 2, f + 2, g);\n } else if (i === \"FinalKP\") {\n const m = s.geometry.attributes.position.getX(\n s.geometry.attributes.position.count - 1\n ), f = s.geometry.attributes.position.getY(\n s.geometry.attributes.position.count - 1\n ), g = s.geometry.attributes.position.getZ(\n s.geometry.attributes.position.count - 1\n );\n l.three.position.set(m + 2, f - 2, g);\n } else if (i === \"Length\") {\n const m = new w.Vector3();\n m.x = s.geometry.attributes.position.getX(0), m.y = s.geometry.attributes.position.getY(0), m.z = s.geometry.attributes.position.getZ(0);\n const f = new w.Vector3();\n f.x = s.geometry.attributes.position.getX(\n s.geometry.attributes.position.count - 1\n ), f.y = s.geometry.attributes.position.getY(\n s.geometry.attributes.position.count - 1\n ), f.z = s.geometry.attributes.position.getZ(\n s.geometry.attributes.position.count - 1\n );\n const g = m.distanceTo(f);\n l.three.element.innerText = g.toFixed(2);\n const v = f.clone().add(m).divideScalar(2);\n l.three.position.copy(v);\n }\n const u = this._markerKey.toString();\n return r.setupEvents(e, !0), r.getWorldMarkerList(e).set(u, {\n label: l,\n key: u,\n type: i,\n merged: !1,\n static: !1\n }), this._markerKey++, this.save(u, i), l;\n }\n /**\n * Shows the KP stations on the given mesh.\n *\n * @param mesh - The mesh to show the KP stations on.\n * @throws Will throw an error if a world is not set for this component.\n * @throws Will throw an error if the type is not set to \"horizontal\".\n */\n showKPStations(e) {\n if (!this.world)\n throw new Error(\"A world is needed for this component to work!\");\n if (this.type === \"horizontal\") {\n const n = this.generateStartAndEndKP(e);\n for (const [, i] of n)\n this.addKPStation(this.world, i.value, i.normal);\n const s = this.generateConstantKP(e);\n for (const [, i] of s)\n this.addKPStation(this.world, i.value, i.normal);\n }\n }\n /**\n * Shows the length of a curve on the world.\n *\n * @param points - The points that make up the curve.\n * @param length - The length of the curve.\n * @throws Will throw an error if a world is not set for this component.\n */\n showCurveLength(e, n) {\n if (!this.world)\n throw new Error(\"A world is needed for this component to work!\");\n const s = this.components.get(nn), i = e.length, r = `${n.toFixed(2)} m`, o = Math.round(i / 2), l = e[o], u = s.create(this.world, r, l, !0);\n u !== void 0 && this.save(u, \"Radius\");\n }\n /**\n * Shows the length of a line on the world.\n *\n * @param line - The line to show the length on.\n * @param length - The length of the line.\n * @throws Will throw an error if a world is not set for this component.\n */\n showLineLength(e, n) {\n if (!this.world)\n throw new Error(\"A world is needed for this component to work!\");\n const s = this.components.get(nn), i = new w.Vector3();\n i.x = e.geometry.getAttribute(\"position\").getX(0), i.y = e.geometry.getAttribute(\"position\").getY(0), i.z = e.geometry.getAttribute(\"position\").getZ(0);\n const r = new w.Vector3();\n r.x = e.geometry.getAttribute(\"position\").getX(1), r.y = e.geometry.getAttribute(\"position\").getY(1), r.z = e.geometry.getAttribute(\"position\").getZ(1);\n const o = `${n.toFixed(2)} m`, l = new w.Vector3();\n l.addVectors(i, r).multiplyScalar(0.5);\n const u = s.create(this.world, o, l, !0);\n u !== void 0 && this.save(u, \"Radius\");\n }\n /**\n * Shows the radius of a curve on the world.\n *\n * @param line - The line to show the radius on.\n * @param radius - The radius of the curve.\n * @throws Will throw an error if a world is not set for this component.\n */\n showCurveRadius(e, n) {\n if (!this.world)\n throw new Error(\"A world is needed for this component to work!\");\n const s = this.components.get(nn), i = new w.Vector3();\n i.x = e.geometry.getAttribute(\"position\").getX(0), i.y = e.geometry.getAttribute(\"position\").getY(0), i.z = e.geometry.getAttribute(\"position\").getZ(0);\n const r = new w.Vector3();\n r.x = e.geometry.getAttribute(\"position\").getX(1), r.y = e.geometry.getAttribute(\"position\").getY(1), r.z = e.geometry.getAttribute(\"position\").getZ(1);\n const o = `R = ${n.toFixed(2)} m`, l = new w.Vector3();\n l.addVectors(i, r).multiplyScalar(0.5);\n const u = s.create(this.world, o, l, !0);\n u !== void 0 && this.save(u, \"Radius\");\n }\n /**\n * Deletes civil engineering markers of the specified types from the world.\n *\n * @param types - The types of markers to delete. If not provided, all types will be deleted.\n * @returns {void}\n */\n deleteByType(e = xp) {\n const n = this.components.get(nn);\n for (const s of e) {\n const i = this._list.get(s);\n if (i) {\n for (const r of i)\n n.delete(r);\n this._list.delete(s);\n }\n }\n }\n generateStartAndEndKP(e) {\n const { alignment: n } = e.curve, s = /* @__PURE__ */ new Map();\n for (const i of n.horizontal) {\n const r = i.getLength();\n if (s.size > 0) {\n const o = i.index - 1, u = s.get(o).distance + r, d = i.mesh.geometry.getAttribute(\"position\"), m = d.count - 1, f = new w.Vector3();\n f.x = d.getX(m), f.y = d.getY(m), f.z = d.getZ(m);\n const g = this.createNormalLine(i.mesh);\n s.set(i.index, {\n value: this.getShortendKPValue(u),\n distance: u,\n point: f,\n normal: g\n });\n } else {\n const o = i.mesh.geometry.getAttribute(\"position\"), l = o.count - 1, u = new w.Vector3();\n u.x = o.getX(l), u.y = o.getY(l), u.z = o.getZ(l);\n const d = this.createNormalLine(i.mesh);\n s.set(i.index, {\n value: this.getShortendKPValue(r),\n distance: r,\n point: u,\n normal: d\n });\n }\n }\n return s;\n }\n createNormalLine(e) {\n const n = e.geometry.attributes.position.count - 1, s = n - 1, i = new w.Vector3();\n i.x = e.geometry.attributes.position.getX(n), i.y = e.geometry.attributes.position.getY(n), i.z = e.geometry.attributes.position.getZ(n);\n const r = new w.Vector3();\n r.x = e.geometry.attributes.position.getX(s), r.y = e.geometry.attributes.position.getY(s), r.z = e.geometry.attributes.position.getZ(s);\n const l = new w.Vector3().subVectors(\n i,\n r\n ).clone().applyAxisAngle(new w.Vector3(0, 0, 1), Math.PI * 0.5).normalize(), u = new w.BufferGeometry().setFromPoints([\n l.clone().setLength(10).add(i),\n l.clone().setLength(-10).add(i)\n ]);\n return new w.Line(u);\n }\n generateConstantKP(e) {\n const { alignment: n } = e.curve, s = /* @__PURE__ */ new Map(), i = n.getLength(\"horizontal\"), r = Math.floor(i / this.divisionLength);\n for (let o = 0; o < r; o++) {\n const l = o / r, u = n.getPointAt(l, \"horizontal\"), d = i * l, m = this.getNormal(n, u);\n s.set(o, {\n value: this.getShortendKPValue(d),\n distance: d,\n point: u,\n normal: m\n });\n }\n return s;\n }\n // TODO: Move Generation of Points to Previous Method Call\n getNormal(e, n) {\n const s = [], i = {\n start: new w.Vector3(),\n end: new w.Vector3()\n };\n for (let d = 0; d < e.horizontal.length; d++) {\n const f = e.horizontal[d].mesh.geometry.attributes.position, g = f.count;\n for (let v = 0; v < g; v++) {\n const y = f.getX(v), x = f.getY(v), A = f.getZ(v);\n s.push(new w.Vector3(y, x, A));\n }\n }\n for (let d = 0; d < s.length - 1; d++) {\n const m = s[d], f = s[d + 1], g = m.distanceTo(n), v = f.distanceTo(n), y = m.distanceTo(f);\n Math.abs(g + v - y) < 1e-5 && (i.start = m, i.end = f);\n }\n const o = new w.Vector3().subVectors(\n i.end,\n i.start\n ).clone().applyAxisAngle(new w.Vector3(0, 0, 1), Math.PI * 0.5).normalize(), l = new w.BufferGeometry().setFromPoints([\n o.clone().setLength(10).add(n),\n o.clone().setLength(-10).add(n)\n ]);\n return new w.Line(\n l,\n new w.LineBasicMaterial({ color: 16711680 })\n );\n }\n getShortendKPValue(e) {\n const n = e.toFixed(2), [s, i] = n.toString().split(\".\"), r = i || \"00\";\n if (parseInt(s, 10) > 1e3 && parseInt(s, 10) < 1e4) {\n const [o, ...l] = s;\n return `${o}+${l.join(\"\")}.${r}`;\n }\n if (parseInt(s, 10) > 1e4) {\n const [o, l, ...u] = s;\n return `${o}${l}+${u.join(\"\")}.${r}`;\n }\n return `0+${s.padStart(3, \"0\")}.${r}`;\n }\n save(e, n) {\n this._list.has(n) || this._list.set(n, /* @__PURE__ */ new Set()), this._list.get(n).add(e);\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Dr, \"uuid\", \"0af12c32-81ee-4100-a030-e9ae546f6170\");\nlet kn = Dr;\nclass Ah extends Re {\n constructor(e) {\n super(e);\n /**\n * Event triggered when a curve is highlighted.\n * Provides the point of intersection and the corresponding curve mesh.\n */\n T(this, \"onHighlight\", new $());\n /**\n * Event triggered when a marker (hover or select) is placed on a curve.\n * Provides the alignment, percentage, type of marker, and the corresponding curve.\n */\n T(this, \"onMarkerChange\", new $());\n /**\n * Event triggered when a marker (hover or select) is hidden.\n * Provides the type of marker.\n */\n T(this, \"onMarkerHidden\", new $());\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * Mouse markers for hover and select actions.\n * They are of type Mark and are optional.\n */\n T(this, \"mouseMarkers\");\n T(this, \"_curves\", []);\n T(this, \"_previousAlignment\", null);\n T(this, \"_highlighter\");\n T(this, \"_world\", null);\n T(this, \"updateLinesResolution\", (e) => {\n var n;\n (n = this._highlighter) == null || n.setResolution(e);\n });\n T(this, \"onMouseMove\", (e) => {\n var o, l, u;\n if (!this._world)\n throw new Error(\"No world was given for this navigator!\");\n if (!this._world.renderer)\n return;\n const s = this._world.renderer.three.domElement.parentElement, i = this._world.camera.three, r = (o = this._highlighter) == null ? void 0 : o.castRay(e, i, s, this._curves);\n if (r) {\n const { object: d } = r;\n (l = this._highlighter) == null || l.hover(d), this.updateMarker(r, \"hover\");\n return;\n }\n this.mouseMarkers && (this.mouseMarkers.hover.visible = !1), (u = this._highlighter) == null || u.unHover(), this.onMarkerHidden.trigger({ type: \"hover\" });\n });\n T(this, \"onClick\", (e) => {\n var o, l;\n if (!this._world)\n throw new Error(\"No world was given for this navigator!\");\n if (!this._world.renderer)\n return;\n const s = this._world.renderer.three.domElement.parentElement, i = this._world.camera.three, r = (o = this._highlighter) == null ? void 0 : o.castRay(e, i, s, this._curves);\n if (r) {\n const u = r, d = u.object;\n if ((l = this._highlighter) == null || l.select(d), this.updateMarker(u, \"select\"), this._world.camera.hasCameraControls() && (d.geometry.boundingBox || d.geometry.computeBoundingBox(), d.geometry.boundingBox)) {\n const m = this.getScaledBox(d.geometry.boundingBox, 2);\n this._world.camera.controls.fitToBox(m, !0);\n }\n this.onHighlight.trigger({ mesh: d, point: u.point }), this._previousAlignment !== d.curve.alignment && (this.components.get(kn).showKPStations(d), this._previousAlignment = d.curve.alignment);\n }\n });\n T(this, \"onControlsUpdated\", () => {\n if (!this._world)\n throw new Error(\"No world was given for this navigator!\");\n if (!(this._world.camera.three instanceof w.OrthographicCamera) || !this._highlighter)\n return;\n const { zoom: e, left: n, right: s, top: i, bottom: r } = this._world.camera.three, o = n - s, l = i - r, d = Math.max(o, l) / e, m = 40, { caster: f } = this._highlighter;\n f.params.Line.threshold = d / m;\n });\n }\n /**\n * Getter for the highlighter instance.\n * Throws an error if the highlighter is not initialized.\n *\n * @returns {CurveHighlighter} The initialized highlighter instance.\n */\n get highlighter() {\n if (!this._highlighter)\n throw new Error(\n \"Highlighter not initialized. You must set a world first!\"\n );\n return this._highlighter;\n }\n /**\n * Getter for the world instance.\n *\n * @returns {OBC.World | null} The current world instance or null if not set.\n */\n get world() {\n return this._world;\n }\n /**\n * Setter for the world instance.\n * If the new world is the same as the current one, it does nothing.\n * If the current world is set, it removes the event listeners.\n * If the new world is not set, it does nothing.\n *\n * @param {OBC.World | null} world - The new world instance or null to unset.\n */\n set world(e) {\n var s, i, r;\n if (e === this._world || (this._world && this.setupEvents(!1), this._world = e, (s = this._highlighter) == null || s.dispose(), (i = this.mouseMarkers) == null || i.hover.dispose(), (r = this.mouseMarkers) == null || r.select.dispose(), !e))\n return;\n const n = e.scene.three;\n this._highlighter = new Fr(n, this.view), this.mouseMarkers = {\n select: this.newMouseMarker(\"#ffffff\", e),\n hover: this.newMouseMarker(\"#575757\", e)\n }, this.setupEvents(!0);\n }\n /**\n * Draws the civil curves from the provided model onto the scene.\n *\n * @param model - The FragmentsGroup containing the civil data to be drawn.\n * @param filter - An optional Iterable of alignments to filter the curves to be drawn.\n *\n * @throws Will throw an error if the provided model doesn't have civil data or if no world was given for this navigator.\n *\n * @returns {Promise} - A promise that resolves when the curves have been drawn onto the scene.\n */\n async draw(e, n) {\n if (!e.civilData)\n throw new Error(\"The provided model doesn't have civil data!\");\n if (!this._world)\n throw new Error(\"No world was given for this navigator!\");\n const { alignments: s } = e.civilData, i = n || s.values(), r = this._world.scene.three, o = new w.Box3();\n o.makeEmpty(), o.min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE), o.max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n for (const u of i) {\n if (!u)\n throw new Error(\"Alignment not found!\");\n for (const d of u[this.view])\n if (r.add(d.mesh), this._curves.push(d.mesh), !o.isEmpty())\n o.expandByObject(d.mesh);\n else {\n d.mesh.geometry.computeBoundingBox();\n const m = d.mesh.geometry.boundingBox;\n m instanceof w.Box3 && o.copy(m).applyMatrix4(d.mesh.matrixWorld);\n }\n }\n const l = this.getScaledBox(o, 1.2);\n this._world.camera.hasCameraControls() && await this._world.camera.controls.fitToBox(l, !1);\n }\n /** {@link OBC.Disposable.dispose} */\n async dispose() {\n var e;\n (e = this._highlighter) == null || e.dispose(), this.clear(), this.onHighlight.reset(), this._curves = [], this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Clears the civil curves from the scene.\n * Removes all the curve meshes from the scene and clears the internal array of curve meshes.\n * Also unselects and unhovers the highlighter.\n */\n clear() {\n var e, n;\n (e = this._highlighter) == null || e.unSelect(), (n = this._highlighter) == null || n.unHover();\n for (const s of this._curves)\n s.removeFromParent();\n this._curves = [];\n }\n /**\n * Sets a marker on a specific curve at a given percentage.\n *\n * @param alignment - The alignment where the marker should be placed.\n * @param percentage - The percentage along the alignment where the marker should be placed.\n * @param type - The type of marker to be placed (hover or select).\n *\n * @throws Will throw an error if there are no curves to place the marker on.\n */\n setMarker(e, n, s) {\n if (!this._curves.length)\n return;\n const i = e.getCurveAt(n, this.view), r = e.getPointAt(n, this.view), { index: o } = i.curve.getSegmentAt(i.percentage);\n this.setMouseMarker(r, i.curve.mesh, o, s);\n }\n /**\n * Sets the definition segments and slope from the provided segments array.\n *\n * @param segmentsArray - An array of segments, where each segment is an array of numbers representing points.\n *\n * @returns An object containing the definition segments and slope.\n *\n * @throws Will throw an error if the segments array is empty or if the points in the segments array are not in the expected format.\n */\n setDefSegments(e) {\n const n = [], s = [], i = (r, o) => {\n const l = o[1] - r[1], u = o[0] - r[0];\n return l / u;\n };\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n let l, u, d, m;\n for (let v = 0; v < Object.keys(o).length / 3; v++)\n if (o[v * 3] !== void 0 && o[v * 3 + 1] !== void 0) {\n l = o[v * 3], u = o[v * 3 + 1];\n break;\n }\n for (let v = Object.keys(o).length / 3 - 1; v >= 0; v--)\n if (o[v * 3] !== void 0 && o[v * 3 + 1] !== void 0) {\n d = o[v * 3], m = o[v * 3 + 1];\n break;\n }\n const g = (i(\n // @ts-ignore\n [l, u],\n // @ts-ignore\n [d, m]\n ) * 100).toFixed(2);\n s.push({ slope: g });\n }\n for (const r of e)\n for (let o = 0; o < r.length - 3; o += 3) {\n const l = r[o], u = r[o + 1], d = r[o + 2], m = r[o + 3], f = r[o + 4], g = r[o + 5];\n n.push({\n start: new w.Vector3(l, u, d),\n end: new w.Vector3(m, f, g)\n });\n }\n return { defSegments: n, slope: s };\n }\n /**\n * Hides the marker of the specified type.\n *\n * @param type - The type of marker to hide. It can be either \"hover\" or \"select\".\n *\n * @throws Will throw an error if the mouse markers are not initialized.\n */\n hideMarker(e) {\n this.mouseMarkers && (this.mouseMarkers[e].visible = !1);\n }\n setupEvents(e) {\n var i, r;\n if (!this._world)\n throw new Error(\"No world was given for this navigator!\");\n if (this._world.isDisposing || !this._world.renderer)\n return;\n const s = this._world.renderer.three.domElement.parentElement;\n (i = this._world.renderer) == null || i.onResize.remove(this.updateLinesResolution), s.removeEventListener(\"pointermove\", this.onMouseMove), s.removeEventListener(\"click\", this.onClick), this._world.camera.hasCameraControls() && this._world.camera.controls.removeEventListener(\"update\", this.onControlsUpdated), e && (s.addEventListener(\"pointermove\", this.onMouseMove), s.addEventListener(\"click\", this.onClick), (r = this._world.renderer) == null || r.onResize.add(this.updateLinesResolution), this._world.camera.hasCameraControls() && this._world.camera.controls.addEventListener(\"update\", this.onControlsUpdated));\n }\n newMouseMarker(e, n) {\n if (!this._world)\n throw new Error(\"No world was given for this navigator!\");\n const s = n.scene.three, i = document.createElement(\"div\"), r = document.createElement(\"div\");\n i.appendChild(r), r.style.backgroundColor = e, r.style.width = \"3rem\", r.style.height = \"3px\";\n const o = new ft(this._world, i, s);\n return o.visible = !1, o;\n }\n setMouseMarker(e, n, s, i) {\n if (s === void 0 || !this.mouseMarkers)\n return;\n this.mouseMarkers[i].visible = !0;\n const r = this.mouseMarkers[i].three;\n r.position.copy(e);\n const o = n, { startPoint: l, endPoint: u } = o.curve.getSegment(s), d = Math.atan2(\n u.y - l.y,\n u.x - l.x\n ), m = r.element.children[0], f = 90 - d / Math.PI * 180;\n m.style.transform = `rotate(${f}deg)`;\n }\n updateMarker(e, n) {\n const { point: s, index: i, object: r } = e, o = r, l = o.curve, u = o.curve.alignment, d = u.getPercentageAt(s, this.view), m = s.clone();\n this.setMouseMarker(m, o, i, n), d !== null && this.onMarkerChange.trigger({ alignment: u, percentage: d, type: n, curve: l });\n }\n getScaledBox(e, n) {\n const s = new w.Box3(), i = new w.Vector3(), r = new w.Vector3();\n return e.getCenter(r), e.getSize(i), i.multiplyScalar(n), s.setFromCenterAndSize(r, i), s;\n }\n}\nclass Sp {\n constructor(t, e, n) {\n T(this, \"components\");\n T(this, \"_scene\");\n T(this, \"_world\");\n T(this, \"offset\", 10);\n T(this, \"markupLines\", []);\n T(this, \"currentCurveMesh\");\n T(this, \"markupMaterial\", new w.LineBasicMaterial({\n color: 6842472\n }));\n this.components = t, this._scene = e, this._world = n;\n }\n showCurveInfo(t) {\n switch (this.disposeMarkups(), this.currentCurveMesh = t, t.curve.data.TYPE) {\n case \"LINE\":\n this.showLineInfo(t, this.offset);\n break;\n case \"CIRCULARARC\":\n this.showCircularArcInfo(t, this.offset);\n break;\n case \"CLOTHOID\":\n this.showClothoidInfo(t, this.offset);\n break;\n default:\n console.log(\"Unknown curve type:\", t.curve.data.TYPE);\n break;\n }\n }\n updateOffset(t, e, n) {\n const i = Math.max(t.height, t.width) / (e * 150);\n i !== this.offset && (this.offset = i, n && this.currentCurveMesh && this.showCurveInfo(this.currentCurveMesh));\n }\n dispose() {\n for (const t of this.markupLines)\n t.removeFromParent();\n this.disposeMarkups(), this.markupMaterial.dispose();\n }\n disposeMarkups() {\n for (const t of this.markupLines)\n t.geometry.dispose(), t.removeFromParent();\n this.markupLines = [];\n }\n unSelect() {\n this.disposeMarkups();\n }\n calculateTangent(t, e) {\n const s = e * 3, i = Math.max(0, s - 3), r = Math.min(\n t.length - 3,\n s + 3\n ), o = new w.Vector3().fromArray(t, i);\n return new w.Vector3().fromArray(t, r).clone().sub(o).normalize();\n }\n calculateParallelCurve(t, e, n) {\n const s = [];\n for (let i = 0; i < e; i++) {\n const o = this.calculateTangent(t, i).clone().applyAxisAngle(new w.Vector3(0, 0, 1), Math.PI / 2);\n o.normalize();\n const l = o.clone().multiplyScalar(n), u = i * 3, d = new w.Vector3().fromArray(t, u).add(l);\n s.push(d);\n }\n return s;\n }\n calculateDimensionLines(t, e) {\n const n = [], s = t.geometry.attributes.position.array, i = e.geometry.attributes.position.array;\n if (s.length < 6 && i.length < 6)\n throw new Error(\"Line must have at least two vertices\");\n const r = new w.Vector3(\n s[0],\n s[1],\n s[2]\n ), o = new w.Vector3(\n i[0],\n i[1],\n i[2]\n ), l = [], u = s.length - 3, d = new w.Vector3(\n s[u],\n s[u + 1],\n s[u + 2]\n ), m = i.length - 3, f = new w.Vector3(\n i[m],\n i[m + 1],\n i[m + 2]\n );\n return n.push(r, o), l.push(d, f), { startDimensionPoints: n, endDimensionPoints: l };\n }\n offsetDimensionLine(t, e) {\n const s = new w.Vector3().copy(t[t.length - 1]).sub(t[0]).normalize().clone().multiplyScalar(e);\n return t.map((r) => r.clone().add(s));\n }\n showLineInfo(t, e) {\n const n = this.components.get(kn);\n n.world = this._world, n.deleteByType([\"Length\", \"Radius\"]);\n const s = t.geometry.attributes.position.array, i = this.calculateParallelCurve(\n s,\n s.length / 3,\n e\n ), r = new w.BufferGeometry().setFromPoints(\n i\n ), o = new w.Line(\n r,\n this.markupMaterial\n );\n n.showLineLength(o, t.curve.getLength()), this._scene.add(o), this.markupLines.push(o);\n const { startDimensionPoints: l, endDimensionPoints: u } = this.calculateDimensionLines(t, o), d = this.offsetDimensionLine(\n l,\n e * 0.1\n ), m = this.offsetDimensionLine(\n u,\n e * 0.1\n ), f = new w.BufferGeometry().setFromPoints(\n d\n ), g = new w.BufferGeometry().setFromPoints(\n m\n ), v = new w.Line(\n f,\n this.markupMaterial\n );\n this._scene.add(v), this.markupLines.push(v);\n const y = new w.Line(\n g,\n this.markupMaterial\n );\n this._scene.add(y), this.markupLines.push(y);\n }\n showClothoidInfo(t, e) {\n const n = this.components.get(kn);\n n.world = this._world, n.deleteByType([\"Length\", \"Radius\"]);\n const s = t.geometry.attributes.position.array, i = this.calculateParallelCurve(\n s,\n s.length / 3,\n e\n ), r = new w.BufferGeometry().setFromPoints(\n i\n );\n n.showCurveLength(i, t.curve.getLength());\n const o = new w.Line(\n r,\n this.markupMaterial\n );\n this._scene.add(o), this.markupLines.push(o);\n const { startDimensionPoints: l, endDimensionPoints: u } = this.calculateDimensionLines(t, o), d = this.offsetDimensionLine(\n l,\n e * 0.1\n ), m = this.offsetDimensionLine(\n u,\n e * 0.1\n ), f = new w.BufferGeometry().setFromPoints(\n d\n ), g = new w.BufferGeometry().setFromPoints(\n m\n ), v = new w.Line(\n f,\n this.markupMaterial\n );\n this._scene.add(v), this.markupLines.push(v);\n const y = new w.Line(\n g,\n this.markupMaterial\n );\n this._scene.add(y), this.markupLines.push(y);\n }\n showCircularArcInfo(t, e) {\n const n = this.components.get(kn);\n n.world = this._world, n.deleteByType([\"Length\", \"Radius\"]);\n const s = t.curve.data.RADIUS, i = t.geometry.attributes.position.array, r = t.geometry.attributes.position.count, o = [], l = new w.Vector3(\n i[0],\n i[1],\n i[2]\n ), u = (r - 1) * 3, d = new w.Vector3(\n i[u],\n i[u + 1],\n i[u + 2]\n ), m = r / 2 * 3, f = new w.Vector3(\n i[m],\n i[m + 1],\n i[m + 2]\n ), g = d.clone().sub(l).normalize(), v = new w.Vector3(\n -g.y,\n g.x,\n 0\n );\n v.multiplyScalar(s);\n const y = f.clone().add(v);\n o.push(f), o.push(y);\n const x = new w.BufferGeometry().setFromPoints(o), A = new w.Line(x, this.markupMaterial);\n n.showCurveRadius(A, Math.abs(s)), this._scene.add(A), this.markupLines.push(A);\n const F = [];\n for (let se = 0; se < r; se++) {\n const he = this.calculateTangent(i, se), me = t.curve.data.RADIUS, Ie = new w.Vector3(\n he.y,\n -he.x,\n 0\n );\n Ie.normalize(), me < 0 && Ie.negate();\n const Ee = Ie.clone().multiplyScalar(e), ue = se * 3, Le = new w.Vector3(\n i[ue] + Ee.x,\n i[ue + 1] + Ee.y,\n i[ue + 2] + Ee.z\n );\n F.push(Le);\n }\n const P = new w.BufferGeometry().setFromPoints(\n F\n );\n n.showCurveLength(F, t.curve.getLength());\n const C = new w.Line(\n P,\n this.markupMaterial\n );\n this._scene.add(C), this.markupLines.push(C);\n const { startDimensionPoints: O, endDimensionPoints: U } = this.calculateDimensionLines(t, C), Y = this.offsetDimensionLine(\n O,\n e * 0.1\n ), H = this.offsetDimensionLine(\n U,\n e * 0.1\n ), K = new w.BufferGeometry().setFromPoints(\n Y\n ), Z = new w.BufferGeometry().setFromPoints(\n H\n ), q = new w.Line(\n K,\n this.markupMaterial\n );\n this._scene.add(q), this.markupLines.push(q);\n const ne = new w.Line(\n Z,\n this.markupMaterial\n );\n this._scene.add(ne), this.markupLines.push(ne);\n }\n}\nconst Lr = class Lr extends Ah {\n constructor(e) {\n super(e);\n /**\n * The view mode of the component.\n * In this case, the view mode is set to \"horizontal\".\n */\n T(this, \"view\", \"horizontal\");\n T(this, \"planHighlighter\");\n this.components.add(Lr.uuid, this), this.onHighlight.add(({ mesh: n }) => {\n !this._highlighter || !this.planHighlighter || this.planHighlighter.showCurveInfo(n);\n });\n }\n /**\n * Getter for the world property.\n * Returns the world associated with the CivilPlanNavigator instance.\n */\n get world() {\n return super.world;\n }\n /**\n * Setter for the world property.\n * Sets the world associated with the CivilPlanNavigator instance.\n * If a new world is provided, the existing PlanHighlighter instance is disposed and a new one is created.\n * @param world - The new world to be associated with the CivilPlanNavigator instance.\n */\n set world(e) {\n var n;\n super.world = e, e && ((n = this.planHighlighter) == null || n.dispose(), this.planHighlighter = new Sp(\n this.components,\n e.scene.three,\n e\n ));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Lr, \"uuid\", \"3096dea0-5bc2-41c7-abce-9089b6c9431b\");\nlet mc = Lr;\nconst Nr = class Nr extends Ah {\n constructor(e) {\n super(e);\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n T(this, \"view\", \"vertical\");\n this.components.add(Nr.uuid, this);\n }\n /**\n * Getter for the world property.\n * This property is used to retrieve the world context for the component.\n *\n * @returns {OBC.World | null} - The current world context for the component.\n * If null, it means the world has not been set yet.\n */\n get world() {\n return super.world;\n }\n /**\n * Sets the world for the CivilElevationNavigator.\n * This property is used to manage the world context for the component.\n * When the world is set, it triggers the addition of elevation markers to the scene.\n *\n * @param world - The world to set for the component. If null, it will not update the world.\n */\n set world(e) {\n this.world !== e && (super.world = e, this._highlighter && this._highlighter.onSelect.add((n) => {\n if (!this.world)\n throw new Error(\"A world is needed to work with this component!\");\n const s = this.components.get(kn);\n s.deleteByType([\"Slope\", \"Height\", \"InitialKPV\", \"FinalKPV\"]);\n const { alignment: i } = n.curve, r = [];\n for (const d of i.vertical) {\n const m = d.mesh.geometry.attributes.position.array;\n r.push(m);\n }\n const { defSegments: o, slope: l } = this.setDefSegments(r), u = this.world.scene.three;\n for (let d = 0; d < i.vertical.length; d++) {\n const m = i.vertical[d];\n s.addVerticalMarker(\n this.world,\n `S: ${l[d].slope}%`,\n m.mesh,\n \"Slope\",\n u\n ), s.addVerticalMarker(\n this.world,\n `H: ${o[d].end.y.toFixed(2)}`,\n m.mesh,\n \"Height\",\n u\n );\n }\n s.addVerticalMarker(\n this.world,\n \"KP: 0\",\n i.vertical[0].mesh,\n \"InitialKPV\",\n u\n ), s.addVerticalMarker(\n this.world,\n `KP: ${i.vertical.length}`,\n i.vertical[i.vertical.length - 1].mesh,\n \"FinalKPV\",\n u\n );\n }));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Nr, \"uuid\", \"097eea29-2d5a-431a-a247-204d44670621\");\nlet gc = Nr;\nconst _r = class _r extends Re {\n constructor(e) {\n super(e);\n /**\n * Event triggered when a curve is highlighted.\n * Provides information about the highlighted curve, point, and index.\n */\n T(this, \"onHighlight\", new $());\n /**\n * Event triggered when a marker (point) on a curve changes.\n * Provides information about the alignment, percentage, type of marker, and the curve.\n */\n T(this, \"onMarkerChange\", new $());\n /**\n * Event triggered when a marker (point) on a curve is hidden.\n * Provides information about the type of marker.\n */\n T(this, \"onMarkerHidden\", new $());\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n T(this, \"mouseMarkers\");\n T(this, \"_highlighter\");\n T(this, \"_curves\", []);\n T(this, \"_world\", null);\n T(this, \"updateLinesResolution\", (e) => {\n var n;\n (n = this.highlighter) == null || n.setResolution(e);\n });\n T(this, \"onClick\", (e) => {\n if (!this.enabled || !this._highlighter)\n return;\n if (!this.world)\n throw new Error(\"No world found!\");\n if (!this.world.renderer)\n return;\n const n = this.world.renderer.three.domElement, s = this.world.camera.three, i = this._highlighter.castRay(e, s, n, this._curves);\n if (i) {\n const r = i.object;\n this._highlighter.select(r), this.updateMarker(i, \"select\");\n const { point: o, index: l } = i;\n l !== void 0 && this.onHighlight.trigger({ curve: r, point: o, index: l });\n return;\n }\n this._highlighter.unSelect(), this.mouseMarkers && (this.mouseMarkers.hover.visible = !1), this.onMarkerHidden.trigger({ type: \"hover\" });\n });\n T(this, \"onMouseMove\", async (e) => {\n if (!this.enabled || !this._highlighter)\n return;\n if (!this.world)\n throw new Error(\"No world found!\");\n if (!this.world.renderer)\n return;\n const n = this.world.renderer.three.domElement, s = this.world.camera.three, i = this._highlighter.castRay(e, s, n, this._curves);\n if (i) {\n this._highlighter.hover(i.object), this.updateMarker(i, \"hover\");\n return;\n }\n this._highlighter.unHover();\n });\n this.components.add(_r.uuid, this);\n }\n /**\n * Getter for the world property.\n * Returns the current world instance.\n * @returns {OBC.World | null} The current world instance or null if not set.\n */\n get world() {\n return this._world;\n }\n /**\n * Setter for the world property.\n * Sets the world instance and initializes the component.\n * @param {OBC.World | null} world - The new world instance or null to clear the current world.\n */\n set world(e) {\n var s, i, r;\n if (e === this._world || (this._world && this.setupEvents(!1), this._world = e, (s = this._highlighter) == null || s.dispose(), (i = this.mouseMarkers) == null || i.hover.dispose(), (r = this.mouseMarkers) == null || r.select.dispose(), !e))\n return;\n const n = e.scene.three;\n this._highlighter = new Fr(n, \"absolute\"), this.mouseMarkers = {\n select: this.newMouseMarker(\"#ffffff\", e),\n hover: this.newMouseMarker(\"#575757\", e)\n }, this.setupEvents(!0);\n }\n /**\n * Getter for the highlighter property.\n * Returns the curve highlighter instance.\n * @returns {CurveHighlighter} The curve highlighter instance.\n * @throws {Error} If the navigator is not initialized.\n */\n get highlighter() {\n if (!this._highlighter)\n throw new Error(\"Navigator not initialized!\");\n return this._highlighter;\n }\n /**\n * Draws the civil engineering data onto the 3D scene.\n *\n * @param model - The FragmentsGroup containing the civil data to be drawn.\n * @throws Will throw an error if the model does not have civil data or if the world is not set.\n */\n draw(e) {\n if (!e.civilData)\n throw new Error(\"Model must have civil data!\");\n if (!this.world)\n throw new Error(\"A world must be given before drawing an alignment!\");\n const n = this.world.scene.three;\n for (const [s, i] of e.civilData.alignments)\n for (const { mesh: r } of i.absolute)\n n.add(r), this._curves.push(r);\n }\n /**\n * Sets a marker at a specific percentage along the given alignment.\n *\n * @param alignment - The alignment on which to place the marker.\n * @param percentage - The percentage along the alignment where the marker should be placed.\n * @param type - The type of marker to be set.\n *\n * @throws Will throw an error if the mouse markers have not been initialized.\n * This can happen if the world has not been set before using this method.\n *\n * @remarks\n * This method calculates the 3D point at the given percentage along the alignment,\n * sets the marker at that point, and makes the marker visible.\n *\n * @example\n * ```typescript\n * const navigator = new Civil3DNavigator(components);\n * navigator.world = world; // Initialize the world\n * const alignment = model.civilData.alignments.get(alignmentId);\n * if (alignment) {\n * navigator.setMarker(alignment, 0.5, \"select\");\n * }\n * ```\n */\n setMarker(e, n, s) {\n if (!this.mouseMarkers)\n throw new Error(\n \"No mouse markers found! Initialize the world before using this.\"\n );\n const i = e.getPointAt(n, \"absolute\");\n this.mouseMarkers[s].visible = !0, this.mouseMarkers[s].three.position.copy(i);\n }\n /**\n * Hides the marker of the specified type.\n *\n * @param type - The type of marker to hide.\n *\n * @throws Will throw an error if the mouse markers have not been initialized.\n * This can happen if the world has not been set before using this method.\n *\n * @remarks\n * This method hides the marker of the specified type by setting its visibility to false.\n *\n * @example\n * ```typescript\n * const navigator = new Civil3DNavigator(components);\n * navigator.world = world; // Initialize the world\n * navigator.hideMarker(\"select\");\n * ```\n */\n hideMarker(e) {\n if (!this.mouseMarkers)\n throw new Error(\n \"No mouse markers found! Initialize the world before using this.\"\n );\n const n = this.mouseMarkers[e].three;\n n.visible = !1;\n }\n newMouseMarker(e, n) {\n const s = n.scene.three, i = document.createElement(\"div\");\n i.style.backgroundColor = e, i.style.width = \"1rem\", i.style.height = \"1rem\", i.style.borderRadius = \"1rem\";\n const r = new ft(n, i, s);\n return r.visible = !1, r;\n }\n setupEvents(e) {\n var s, i;\n if (!this.world)\n throw new Error(\"No world found!\");\n if (this.world.isDisposing || !this.world.renderer)\n return;\n const n = this.world.renderer.three.domElement;\n (s = this.world.renderer) == null || s.onResize.remove(this.updateLinesResolution), n.removeEventListener(\"click\", this.onClick), n.removeEventListener(\"pointermove\", this.onMouseMove), e && (n.addEventListener(\"click\", this.onClick), n.addEventListener(\"pointermove\", this.onMouseMove), (i = this.world.renderer) == null || i.onResize.add(this.updateLinesResolution));\n }\n updateMarker(e, n) {\n if (!this.mouseMarkers)\n return;\n const { point: s, object: i } = e, r = i, o = r.curve, l = r.curve.alignment, u = l.getPercentageAt(s, \"absolute\");\n this.mouseMarkers[n].visible = !0, this.mouseMarkers[n].three.position.copy(s), u !== null && this.onMarkerChange.trigger({ alignment: l, percentage: u, type: n, curve: o });\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(_r, \"uuid\", \"0a59c09e-2b49-474a-9320-99f51f40f182\");\nlet Ec = _r;\nconst Ur = class Ur extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * A property representing the world in which the component operates.\n */\n T(this, \"world\", null);\n /**\n * A property representing the plane used for cross section visualization.\n */\n T(this, \"plane\");\n T(this, \"_world3D\", null);\n this.components.add(Ur.uuid, this);\n }\n /**\n * A getter for the 3D world.\n * @returns The 3D world.\n */\n get world3D() {\n return this._world3D;\n }\n /**\n * A setter for the 3D world.\n * @param world - The new 3D world.\n */\n set world3D(e) {\n var i;\n if (this._world3D = e, (i = this.plane) == null || i.dispose(), !e)\n return;\n const n = this.components.get(li), s = n.Type;\n n.Type = di, this.plane = n.createFromNormalAndCoplanarPoint(\n e,\n new w.Vector3(1, 0, 0),\n new w.Vector3()\n ), n.Type = s, this.plane.visible = !1, this.plane.enabled = !1;\n }\n /**\n * Sets the cross section plane based on the given curve mesh and point.\n *\n * @param curveMesh - The curve mesh to create the cross section from.\n * @param point - The point on the curve mesh where the cross section should be created.\n *\n * @throws Will throw an error if the world or plane is not set before calling this method.\n * @throws Will throw an error if the geometry is not indexed.\n *\n * @returns {Promise}\n */\n async set(e, n) {\n if (!this.world || !this.plane)\n throw new Error(\"You must set a world before using this component\");\n this.plane.enabled = !0;\n const s = e.curve.getPercentageAt(n);\n if (s === null)\n return;\n const { startPoint: i, endPoint: r } = e.curve.getSegmentAt(s);\n if (e.geometry.index === null)\n throw new Error(\"Geometry must be indexed!\");\n const o = new w.Vector3();\n o.subVectors(r, i), o.normalize(), this.plane.setFromNormalAndCoplanarPoint(o, n), this.plane.edges.update();\n const l = this.plane.helper.matrix.clone();\n l.invert();\n const u = this.world.scene.three, d = this.plane.edges.get();\n for (const m in d) {\n const { mesh: f } = d[m];\n f.position.set(0, 0, 0), f.rotation.set(0, 0, 0), f.updateMatrix(), f.applyMatrix4(l), f.parent !== u && u.add(f);\n }\n this.plane.enabled = !1;\n }\n};\n/**\n * A unique identifier for the component. This UUID is used to register the component within the Components system.\n */\nT(Ur, \"uuid\", \"96b2c87e-d90b-4639-8257-8f01136fe324\");\nlet vc = Ur;\nfunction Vn() {\n const h = document.createElement(\"div\");\n return h.style.backgroundColor = \"black\", h.style.color = \"white\", h.style.padding = \"8px\", h.style.borderRadius = \"8px\", h.style.fontFamily = \"sans-serif\", h;\n}\nconst gs = class gs {\n constructor(t, e, n) {\n /**\n * The label for the dimension line.\n */\n T(this, \"label\");\n /**\n * The bounding box for the dimension line.\n */\n T(this, \"boundingBox\", new w.Mesh());\n /**\n * The world in which the dimension line exists.\n */\n T(this, \"world\");\n /**\n * The components used by the dimension line.\n */\n T(this, \"components\");\n T(this, \"_length\");\n T(this, \"_visible\", !0);\n T(this, \"_start\");\n T(this, \"_end\");\n T(this, \"_root\", new w.Group());\n T(this, \"_endpoints\", []);\n T(this, \"_line\");\n this.components = t, this.world = e, this._start = n.start, this._end = n.end, this._length = this.getLength(), this._line = this.createLine(n), this.newEndpointElement(n.endpointElement), this.newEndpointElement(n.endpointElement.cloneNode(!0)), this.label = this.newText(), this._root.renderOrder = 2, this.world.scene.three.add(this._root);\n }\n /**\n * Getter for the visibility of the dimension line.\n * @returns {boolean} The current visibility state.\n */\n get visible() {\n return this._visible;\n }\n /**\n * Setter for the visibility of the dimension line.\n * @param {boolean} value - The new visibility state.\n */\n set visible(t) {\n this._visible = t, this.label.visible = t, this._endpoints[0].visible = t, this._endpoints[1].visible = t;\n const [e, n] = this._endpoints, s = e.three, i = n.three, r = this.label.three;\n t ? (this.world.scene.three.add(this._root), this._root.add(r, s, i)) : (r.removeFromParent(), s.removeFromParent(), i.removeFromParent(), this._root.removeFromParent());\n }\n /**\n * Getter for the end point of the dimension line.\n * @returns {THREE.Vector3} The current end point.\n */\n get endPoint() {\n return this._end;\n }\n /**\n * Setter for the end point of the dimension line.\n * Updates the line geometry and position of the end point marker.\n * @param {THREE.Vector3} point - The new end point.\n */\n set endPoint(t) {\n this._end = t;\n const e = this._line.geometry.attributes.position;\n e.setXYZ(1, t.x, t.y, t.z), e.needsUpdate = !0, this._endpoints[1].three.position.copy(t), this.updateLabel();\n }\n /**\n * Getter for the start point of the dimension line.\n * @returns {THREE.Vector3} The current start point.\n */\n get startPoint() {\n return this._start;\n }\n /**\n * Setter for the start point of the dimension line.\n * Updates the line geometry and position of the start point marker.\n * @param {THREE.Vector3} point - The new start point.\n */\n set startPoint(t) {\n this._start = t;\n const e = this._line.geometry.attributes.position;\n e.setXYZ(0, t.x, t.y, t.z), e.needsUpdate = !0, this._endpoints[0].three.position.copy(t), this.updateLabel();\n }\n get _center() {\n let t = this._end.clone().sub(this._start);\n const e = t.length() * 0.5;\n return t = t.normalize().multiplyScalar(e), this._start.clone().add(t);\n }\n /**\n * Disposes of the dimension line and its associated resources.\n * This method should be called when the dimension line is no longer needed.\n * It removes the dimension line from the world, destroys its components, and frees up memory.\n */\n dispose() {\n const t = this.components.get(rn);\n this.visible = !1, t.destroy(this._root), t.destroy(this._line);\n for (const e of this._endpoints)\n e.dispose();\n this._endpoints.length = 0, this.label.dispose(), this.boundingBox && t.destroy(this.boundingBox), this.components = null;\n }\n /**\n * Creates a bounding box for the dimension line.\n * The bounding box is a 3D box that encloses the dimension line.\n * It is used for collision detection and visibility culling.\n * The bounding box is initially invisible and can be toggled using the `toggleBoundingBox` method.\n */\n createBoundingBox() {\n this.boundingBox.geometry = new w.BoxGeometry(1, 1, this._length), this.boundingBox.position.copy(this._center), this.boundingBox.lookAt(this._end), this.boundingBox.visible = !1, this._root.add(this.boundingBox);\n }\n /**\n * Toggles the visibility of the dimension line's label.\n * The label is a text element that displays the length of the dimension line.\n * This method is used to show or hide the label when needed.\n */\n toggleLabel() {\n this.label.toggleVisibility();\n }\n newEndpointElement(t) {\n const n = this._endpoints.length === 0 ? this._start : this._end, s = new ft(this.world, t);\n s.three.position.copy(n), this._endpoints.push(s), this._root.add(s.three);\n }\n updateLabel() {\n this._length = this.getLength(), this.label.three.element.textContent = this.getTextContent(), this.label.three.position.copy(this._center), this._line.computeLineDistances();\n }\n createLine(t) {\n const e = new w.BufferGeometry();\n e.setFromPoints([t.start, t.end]);\n const n = new w.Line(e, t.lineMaterial);\n return this._root.add(n), n;\n }\n newText() {\n const t = Vn();\n t.textContent = this.getTextContent();\n const e = new ft(this.world, t);\n return e.three.position.copy(this._center), this._root.add(e.three), e;\n }\n getTextContent() {\n return `${this._length / gs.scale} ${gs.units}`;\n }\n getLength() {\n return parseFloat(this._start.distanceTo(this._end).toFixed(2));\n }\n};\n/**\n * The scale factor for the dimension line.\n */\nT(gs, \"scale\", 1), /**\n * The units used for the dimension line.\n */\nT(gs, \"units\", \"m\");\nlet fi = gs;\nclass Ap {\n constructor(t, e, n) {\n T(this, \"enabled\", !0);\n T(this, \"visible\", !0);\n T(this, \"points\", []);\n T(this, \"workingPlane\", null);\n T(this, \"labelMarker\");\n T(this, \"world\");\n T(this, \"components\");\n T(this, \"onDisposed\", new $());\n T(this, \"_rotationMatrix\", null);\n T(this, \"_dimensionLines\", []);\n T(this, \"_defaultLineMaterial\", new w.LineBasicMaterial({ color: \"red\" }));\n T(this, \"onAreaComputed\", new $());\n T(this, \"onWorkingPlaneComputed\", new $());\n T(this, \"onPointAdded\", new $());\n T(this, \"onPointRemoved\", new $());\n this.world = e, this.components = t;\n const s = Vn();\n this.labelMarker = new ft(e, s), this.labelMarker.visible = !1, this.onPointAdded.add((i) => {\n this.points.length === 3 && !this._dimensionLines[2] && (this.addDimensionLine(i, this.points[0]), this.labelMarker.visible = !0);\n }), n == null || n.forEach((i) => this.setPoint(i));\n }\n setPoint(t, e) {\n let n;\n if (e ? n = e : n = this.points.length === 0 ? 0 : this.points.length, n === 0) {\n this.points[0] = t;\n return;\n }\n if (n < 0 || n > this.points.length)\n return;\n const s = this.points.length > n;\n this.points[n] = t, this.onPointAdded.trigger(t), s || this.addDimensionLine(this.points[n - 1], t);\n const { previousLine: i, nextLine: r } = this.getLinesBetweenIndex(n);\n i && (i.endPoint = t), r && (r.startPoint = t);\n }\n removePoint(t) {\n if (this.points.length === 3)\n return;\n this.points.splice(t, 1);\n const { previousLine: e, nextLine: n } = this.getLinesBetweenIndex(t);\n n && (e.endPoint = n.endPoint), n == null || n.dispose(), this._dimensionLines.splice(t, 1), this.onPointRemoved.trigger();\n }\n toggleLabel() {\n this.labelMarker.toggleVisibility();\n }\n addDimensionLine(t, e) {\n const n = document.createElement(\"div\");\n n.className = \"w-2 h-2 bg-red-600 rounded-full\";\n const s = new fi(this.components, this.world, {\n start: t,\n end: e,\n lineMaterial: this._defaultLineMaterial,\n endpointElement: n\n });\n return s.toggleLabel(), this._dimensionLines.length > 1 ? this._dimensionLines.splice(\n this._dimensionLines.length - 1,\n 0,\n s\n ) : this._dimensionLines.push(s), s;\n }\n getLinesBetweenIndex(t) {\n const e = t === 0 ? this._dimensionLines.length - 1 : t - 1, n = this._dimensionLines[e], s = this._dimensionLines[t];\n return { previousLine: n, nextLine: s };\n }\n computeWorkingPlane() {\n this.workingPlane = new w.Plane().setFromCoplanarPoints(\n this.points[0],\n this.points[1],\n this.points[2]\n );\n const t = new w.Vector3(0, 1, 0), e = this.workingPlane.normal.angleTo(t), n = new w.Vector3().crossVectors(this.workingPlane.normal, t).normalize();\n this._rotationMatrix = new w.Matrix4().makeRotationAxis(\n n,\n e\n ), this.onWorkingPlaneComputed.trigger(this.workingPlane);\n }\n computeArea() {\n if (!(this._rotationMatrix && this.workingPlane))\n return this.onAreaComputed.trigger(0), 0;\n let t = 0, e = 0;\n const n = this._rotationMatrix, s = this.points.map((r) => {\n const o = r.clone().applyMatrix4(n), l = new w.Vector2(\n o.x,\n o.z\n );\n return t += l.x, e += l.y, l;\n }), i = Math.abs(w.ShapeUtils.area(s));\n return this.labelMarker.three.element.textContent = `${i.toFixed(2)} m²`, this.labelMarker.three.position.set(\n t / s.length,\n -this.workingPlane.constant,\n e / s.length\n ).applyMatrix4(n.clone().invert()), this.onAreaComputed.trigger(i), i;\n }\n dispose() {\n this.onAreaComputed.reset(), this.onWorkingPlaneComputed.reset(), this.onPointAdded.reset(), this.onPointRemoved.reset();\n for (const t of this._dimensionLines)\n t.dispose();\n this.labelMarker.dispose(), this._dimensionLines = [], this.points = [], this._rotationMatrix = null, this.workingPlane = null, this._defaultLineMaterial.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n get() {\n return {\n points: this.points,\n workingPlane: this.workingPlane,\n area: this.computeArea()\n };\n }\n}\nclass Ba extends Wd {\n constructor(e, n) {\n super(e, n);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** The marker used to indicate the picked vertex. */\n T(this, \"marker\", null);\n this.onEnabled.add((s) => {\n this.marker && (this.marker.visible = s);\n });\n }\n /** {@link OBC.Disposable.onDisposed} */\n dispose() {\n this.marker && this.marker.dispose(), super.dispose();\n }\n /**\n * Retrieves the picked vertex from the world and updates the marker's position.\n * If no vertex is picked, the marker is hidden.\n *\n * @param world - The world in which to pick the vertex.\n * @returns The picked vertex, or null if no vertex was picked.\n */\n get(e) {\n const n = super.get(e);\n return n ? (this.marker || (this.marker = new ft(e)), this.marker.world !== e && (this.marker.world = e, this.marker.three.removeFromParent(), e.scene.three.add(this.marker.three)), this.marker.visible = !0, this.marker.three.position.copy(n)) : this.marker && (this.marker.visible = !1), n;\n }\n}\nconst ni = class ni extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * A list of all the area measurement elements created by this component.\n */\n T(this, \"list\", []);\n /**\n * The world in which the area measurements are performed.\n * This property is optional and can be set to null if no world is available.\n */\n T(this, \"world\");\n T(this, \"_enabled\", !1);\n T(this, \"_vertexPicker\");\n T(this, \"_currentAreaElement\", null);\n T(this, \"_clickCount\", 0);\n /** {@link OBC.Createable.create} */\n T(this, \"create\", () => {\n if (!this.enabled)\n return;\n if (!this.world)\n throw new Error(\"World not defined for the area measurement!\");\n const e = this._vertexPicker.get(this.world);\n if (e) {\n if (!this._currentAreaElement) {\n const n = new Ap(this.components, this.world);\n n.onPointAdded.add(() => {\n this._clickCount === 3 && !n.workingPlane && (n.computeWorkingPlane(), this._vertexPicker.workingPlane = n.workingPlane);\n }), n.onPointRemoved.add(() => this._clickCount--), this._currentAreaElement = n;\n }\n this._currentAreaElement.setPoint(e, this._clickCount), this._currentAreaElement.computeArea(), this._clickCount++;\n }\n });\n T(this, \"onMouseMove\", () => {\n if (!this.world) {\n console.log(\"No world given for the area measurement!\");\n return;\n }\n const e = this._vertexPicker.get(this.world);\n e && this._currentAreaElement && (this._currentAreaElement.setPoint(e, this._clickCount), this._currentAreaElement.computeArea());\n });\n T(this, \"onKeydown\", (e) => {\n this.enabled && (e.key === \"z\" && e.ctrlKey && this._currentAreaElement && this._currentAreaElement.removePoint(this._clickCount - 1), e.key === \"Enter\" && this._currentAreaElement && this.endCreation(), e.key === \"Escape\" && (this._clickCount === 0 && !this._currentAreaElement ? this.enabled = !1 : this.cancelCreation()));\n });\n this.components.add(ni.uuid, this), this._vertexPicker = new Ba(e);\n }\n /** {@link OBC.Component.enabled} */\n set enabled(e) {\n this._enabled = e, this._vertexPicker.enabled = e, this.setupEvents(e), e || this.cancelCreation();\n }\n /** {@link OBC.Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /**\n * Setter for the working plane for the area measurement.\n * Sets the working plane for the vertex picker.\n * @param plane - The new working plane or null if no plane is to be used.\n */\n set workingPlane(e) {\n this._vertexPicker.workingPlane = e;\n }\n /**\n * Getter for the working plane for the area measurement.\n * @returns The current working plane or null if no plane is being used.\n */\n get workingPlane() {\n return this._vertexPicker.workingPlane;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this._vertexPicker.dispose(), this._currentAreaElement && this._currentAreaElement.dispose();\n for (const e of this.list)\n e.dispose();\n this.components = null, this.onDisposed.trigger(ni.uuid), this.onDisposed.reset();\n }\n // TODO: Implement this\n /** {@link OBC.Createable.delete} */\n delete() {\n }\n /** Deletes all the dimensions that have been previously created. */\n deleteAll() {\n for (const e of this.list)\n e.dispose();\n this.list = [];\n }\n /** {@link OBC.Createable.endCreation} */\n endCreation() {\n this._currentAreaElement && (this.list.push(this._currentAreaElement), this._currentAreaElement.removePoint(this._clickCount), this._currentAreaElement.computeWorkingPlane(), this._currentAreaElement.computeArea(), this._currentAreaElement = null), this._vertexPicker.workingPlane = null, this._clickCount = 0;\n }\n /** {@link OBC.Createable.cancelCreation} */\n cancelCreation() {\n this._currentAreaElement && (this._currentAreaElement.dispose(), this._currentAreaElement = null), this._vertexPicker.workingPlane = null, this._clickCount = 0;\n }\n setupEvents(e) {\n if (!this.world)\n throw new Error(\"The area measurement needs a world to work!\");\n if (this.world.isDisposing)\n return;\n if (!this.world.renderer)\n throw new Error(\"The world of the area measurement needs a renderer!\");\n const s = this.world.renderer.three.domElement.parentElement;\n e ? (s.addEventListener(\"pointermove\", this.onMouseMove), window.addEventListener(\"keydown\", this.onKeydown)) : (s.removeEventListener(\"pointermove\", this.onMouseMove), window.removeEventListener(\"keydown\", this.onKeydown));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(ni, \"uuid\", \"c453a99e-f054-4781-9060-33df617db4a5\");\nlet Ic = ni;\nclass Rp {\n constructor(t, e) {\n T(this, \"enabled\", !0);\n T(this, \"visible\", !0);\n T(this, \"points\", []);\n T(this, \"world\");\n T(this, \"onDisposed\", new $());\n T(this, \"_lineMaterial\", new pi({\n color: 6629591,\n linewidth: 2\n }));\n T(this, \"_lineGeometry\", new Rr());\n T(this, \"_line\", new vh(this._lineGeometry, this._lineMaterial));\n T(this, \"_labelMarker\");\n T(this, \"onAngleComputed\", new $());\n T(this, \"onPointAdded\", new $());\n this.world = t;\n const n = Vn();\n this._labelMarker = new ft(t, n), this.labelMarker.visible = !0, this.onPointAdded.add(() => {\n this.points.length === 1 && t.scene.three.add(this._line), this.points.length === 3 && (this.labelMarker.visible = !0);\n }), this.onAngleComputed.add((s) => {\n this.labelMarker.three.element.textContent = `${s.toFixed(2)}°`, this.labelMarker.three.position.copy(\n this.points[1] ?? new w.Vector3()\n );\n }), e == null || e.forEach((s) => this.setPoint(s));\n }\n set lineMaterial(t) {\n this._lineMaterial.dispose(), this._lineMaterial = t, this._line.material = t, this._lineMaterial.resolution.set(window.innerWidth, window.innerHeight);\n }\n get lineMaterial() {\n return this._lineMaterial;\n }\n set labelMarker(t) {\n this._labelMarker.dispose(), this._labelMarker = t;\n }\n get labelMarker() {\n return this._labelMarker;\n }\n get angle() {\n return {\n points: this.points,\n angle: this.computeAngle()\n };\n }\n setPoint(t, e) {\n let n;\n if (e ? n = e : n = this.points.length === 0 ? 0 : this.points.length, ![0, 1, 2].includes(n))\n return;\n this.points[n] = t, this.onPointAdded.trigger(t);\n const s = this.points.map((i) => [i.x, i.y, i.z]);\n this._lineGeometry.setPositions(s.flat());\n }\n toggleLabel() {\n this.labelMarker.toggleVisibility();\n }\n computeAngle() {\n const t = this.points[0], e = this.points[1], n = this.points[2];\n if (!(t && e && n))\n return 0;\n const s = new w.Vector3().subVectors(e, t), i = new w.Vector3().subVectors(e, n), r = w.MathUtils.radToDeg(s.angleTo(i));\n return this.onAngleComputed.trigger(r), r;\n }\n dispose() {\n this.points = [], this.labelMarker.dispose(), this.onAngleComputed.reset(), this.onPointAdded.reset(), this.labelMarker.dispose(), this._line.removeFromParent(), this._lineMaterial.dispose(), this._lineGeometry.dispose(), this.onDisposed.trigger(), this.onDisposed.reset();\n }\n}\nconst si = class si extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * The world in which the angle measurements are performed.\n * This property is optional and can be set to null if no world is available.\n */\n T(this, \"world\");\n /**\n * A list of all the angle measurement elements created by this component.\n */\n T(this, \"list\", []);\n T(this, \"_lineMaterial\");\n T(this, \"_enabled\", !1);\n T(this, \"_vertexPicker\");\n T(this, \"_currentAngleElement\", null);\n T(this, \"_clickCount\", 0);\n /** {@link OBC.Createable.create} */\n T(this, \"create\", () => {\n if (!this.enabled)\n return;\n if (!this.world) {\n console.log(\"No world selected for angle measurement!\");\n return;\n }\n const e = this._vertexPicker.get(this.world);\n if (e) {\n if (!this._currentAngleElement) {\n const n = new Rp(this.world);\n n.lineMaterial = this.lineMaterial, this._currentAngleElement = n;\n }\n this._currentAngleElement.setPoint(e, this._clickCount), this._currentAngleElement.setPoint(\n e,\n this._clickCount + 1\n ), this._currentAngleElement.setPoint(\n e,\n this._clickCount + 2\n ), this._currentAngleElement.computeAngle(), this._clickCount++, this._clickCount === 3 && this.endCreation();\n }\n });\n T(this, \"onMouseMove\", () => {\n if (!this.world) {\n console.log(\"No world selected for angle measurement!\");\n return;\n }\n const e = this._vertexPicker.get(this.world);\n e && this._currentAngleElement && (this._currentAngleElement.setPoint(e, this._clickCount), this._currentAngleElement.computeAngle());\n });\n T(this, \"onKeyDown\", (e) => {\n this.enabled && e.key === \"Escape\" && this.cancelCreation();\n });\n this.components.add(si.uuid, this), this._vertexPicker = new Ba(e), this._lineMaterial = new pi({\n color: 6629591,\n linewidth: 2\n });\n }\n /** {@link OBC.Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link OBC.Component.enabled} */\n set enabled(e) {\n this._enabled = e, this.setupEvents(e), this._vertexPicker.enabled = e, e || this.cancelCreation();\n }\n /**\n * Getter for the line material used for the angle measurement lines.\n */\n get lineMaterial() {\n return this._lineMaterial;\n }\n /**\n * Setter for the line material used for the angle measurement lines.\n * Disposes the old material and sets the new one.\n * Also updates the resolution of the material to match the window size.\n * @param material - The new line material to use.\n */\n set lineMaterial(e) {\n this._lineMaterial.dispose(), this._lineMaterial = e, this._lineMaterial.resolution.set(window.innerWidth, window.innerHeight);\n }\n /**\n * Getter for the working plane for the angle measurement.\n * @returns The current working plane or null if no plane is being used.\n */\n get workingPlane() {\n return this._vertexPicker.workingPlane;\n }\n /**\n * Setter for the working plane for the angle measurement.\n * Sets the working plane for the vertex picker.\n * @param plane - The new working plane or null if no plane is to be used.\n */\n set workingPlane(e) {\n this._vertexPicker.workingPlane = e;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this._lineMaterial.dispose(), this._vertexPicker.dispose();\n for (const e of this.list)\n e.dispose();\n this._currentAngleElement && this._currentAngleElement.dispose(), this.components = null, this.onDisposed.trigger(si.uuid), this.onDisposed.reset();\n }\n // TODO: Implement this\n /** {@link OBC.Createable.delete} */\n delete() {\n }\n /** Deletes all the dimensions that have been previously created. */\n deleteAll() {\n for (const e of this.list)\n e.dispose();\n this.list = [];\n }\n /** {@link OBC.Createable.endCreation} */\n endCreation() {\n this._currentAngleElement && (this.list.push(this._currentAngleElement), this._currentAngleElement.computeAngle(), this._currentAngleElement = null), this._clickCount = 0;\n }\n /** {@link OBC.Createable.cancelCreation} */\n cancelCreation() {\n this._currentAngleElement && (this._currentAngleElement.dispose(), this._currentAngleElement = null), this._clickCount = 0;\n }\n setupEvents(e) {\n if (!this.world)\n throw new Error(\"No world selected for angle measurement!\");\n if (this.world.isDisposing)\n return;\n if (!this.world.renderer)\n throw new Error(\"The given world doesn't have a renderer!\");\n const s = this.world.renderer.three.domElement.parentElement;\n e ? (s.addEventListener(\"pointermove\", this.onMouseMove), window.addEventListener(\"keydown\", this.onKeyDown)) : (s.removeEventListener(\"pointermove\", this.onMouseMove), window.removeEventListener(\"keydown\", this.onKeyDown));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(si, \"uuid\", \"622fb2c9-528c-4b0a-8a0e-6a1375f0a3aa\");\nlet yc = si;\nconst ii = class ii extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Updateable.onBeforeUpdate} */\n T(this, \"onBeforeUpdate\", new $());\n /** {@link OBC.Updateable.onAfterUpdate} */\n T(this, \"onAfterUpdate\", new $());\n /** The minimum distance to force the dimension cursor to a vertex. */\n T(this, \"snapDistance\", 0.25);\n /**\n * A list of all the measurement elements created by this component.\n */\n T(this, \"list\", []);\n /**\n * The world in which the angle measurements are performed.\n * This property is optional and can be set to null if no world is available.\n */\n T(this, \"world\");\n T(this, \"_vertexPicker\");\n T(this, \"_lineMaterial\", new w.LineBasicMaterial({\n color: \"#DC2626\",\n linewidth: 2,\n depthTest: !1\n }));\n T(this, \"_visible\", !0);\n T(this, \"_enabled\", !1);\n /** Temporary variables for internal operations */\n T(this, \"_temp\", {\n isDragging: !1,\n start: new w.Vector3(),\n end: new w.Vector3(),\n dimension: void 0\n });\n // TODO: The data arg needs to be better defined\n /**\n * Starts or finishes drawing a new dimension line.\n *\n * @param data - forces the dimension to be drawn on a plane. Use this if you are drawing\n * dimensions in floor plan navigation.\n */\n T(this, \"create\", (e) => {\n const n = e instanceof w.Object3D ? e : void 0;\n if (this._enabled) {\n if (!this._temp.isDragging) {\n this.drawStart(n);\n return;\n }\n this.endCreation();\n }\n });\n T(this, \"onMouseMove\", () => {\n this.world && this._vertexPicker.get(this.world);\n });\n this.components.add(ii.uuid, this), this._vertexPicker = new Ba(e, {\n previewElement: Vn(),\n snapDistance: this.snapDistance\n });\n }\n /** {@link OBC.Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link OBC.Component.enabled} */\n set enabled(e) {\n e || this.cancelCreation(), this._enabled = e, this._vertexPicker.enabled = e, this.setupEvents(e);\n }\n /** {@link OBC.Hideable.visible} */\n get visible() {\n return this._visible;\n }\n /** {@link OBC.Hideable.visible} */\n set visible(e) {\n this._visible = e;\n for (const n of this.list)\n n.visible = e;\n }\n /**\n * Getter for the color of the dimension lines.\n * Returns the color of the line material used for the dimension lines.\n *\n */\n get color() {\n return this._lineMaterial.color;\n }\n /**\n * Setter for the color of the dimension lines.\n * Sets the color of the line material used for the dimension lines.\n *\n */\n set color(e) {\n this._lineMaterial.color = e;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.enabled = !1;\n for (const e of this.list)\n e.dispose();\n this._lineMaterial.dispose(), this.list = [], this._vertexPicker.dispose(), this.onDisposed.trigger(ii.uuid), this.onDisposed.reset();\n }\n /** {@link OBC.Updateable.update} */\n async update(e) {\n this._enabled && this._temp.isDragging && this.drawInProcess();\n }\n /**\n * Creates a new dimension line between two given points.\n *\n * @param p1 - The start point of the dimension line.\n * @param p2 - The end point of the dimension line.\n *\n */\n createOnPoints(e, n) {\n const s = this.drawDimension();\n s.startPoint = e, s.endPoint = n, s.createBoundingBox(), this.list.push(s);\n }\n /** {@link OBC.Createable.delete} */\n delete() {\n if (!this.world)\n throw new Error(\"World is needed for Length Measurement!\");\n if (!this._enabled || this.list.length === 0)\n return;\n const e = this.getBoundingBoxes(), i = this.components.get(Dt).get(this.world).castRay(e);\n if (!i)\n return;\n const r = this.list.find(\n (o) => o.boundingBox === i.object\n );\n if (r) {\n const o = this.list.indexOf(r);\n this.list.splice(o, 1), r.dispose();\n }\n }\n /**\n * Deletes a specific measurement from the list.\n *\n * @param measurement - The measurement to be deleted.\n *\n * @remarks\n * If the measurement does not exist in the list, no action is taken.\n *\n */\n async deleteMeasurement(e) {\n if (e) {\n const n = this.list.indexOf(e);\n this.list.splice(n, 1), e.dispose();\n }\n }\n /** Deletes all the dimensions that have been previously created. */\n deleteAll() {\n for (const e of this.list)\n e.dispose();\n this.list = [];\n }\n /** {@link OBC.Createable.cancelCreation} */\n cancelCreation() {\n var e;\n this._temp.dimension && (this._temp.isDragging = !1, (e = this._temp.dimension) == null || e.dispose(), this._temp.dimension = void 0);\n }\n /** {@link OBC.Createable.endCreation} */\n endCreation() {\n this._temp.dimension && (this._temp.dimension.createBoundingBox(), this.list.push(this._temp.dimension), this._temp.dimension = void 0, this._temp.isDragging = !1);\n }\n drawStart(e) {\n if (!this.world)\n throw new Error(\"The length measurement needs a world to work!\");\n const n = e ? [e] : void 0, r = this.components.get(Dt).get(this.world).castRay(n), o = this._vertexPicker.get(this.world);\n r && o && (this._temp.isDragging = !0, this._temp.start = e ? r.point : o);\n }\n drawInProcess() {\n if (!this.world)\n throw new Error(\"The length measurement needs a world to work!\");\n if (!this.components.get(Dt).get(this.world).castRay())\n return;\n const i = this._vertexPicker.get(this.world);\n i && (this._temp.end = i, this._temp.dimension || (this._temp.dimension = this.drawDimension()), this._temp.dimension.endPoint = this._temp.end);\n }\n drawDimension() {\n if (!this.world)\n throw new Error(\"The length measurement needs a world to work!\");\n return new fi(this.components, this.world, {\n start: this._temp.start,\n end: this._temp.end,\n lineMaterial: this._lineMaterial,\n endpointElement: Vn()\n });\n }\n getBoundingBoxes() {\n return this.list.map((e) => e.boundingBox).filter((e) => e !== void 0);\n }\n setupEvents(e) {\n if (!this.world)\n throw new Error(\"The length measurement needs a world to work!\");\n if (this.world.isDisposing)\n return;\n if (!this.world.renderer)\n throw new Error(\"The world of the length measurement needs a renderer!\");\n const s = this.world.renderer.three.domElement.parentElement;\n s && (s.removeEventListener(\"pointermove\", this.onMouseMove), e && s.addEventListener(\"pointermove\", this.onMouseMove));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(ii, \"uuid\", \"2f9bcacf-18a9-4be6-a293-e898eae64ea1\");\nlet _n = ii;\nconst Br = class Br extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * Event triggered when a volume is found.\n * The event passes the calculated volume as a parameter.\n */\n T(this, \"onVolumeFound\", new $());\n /**\n * Label used to display the calculated volume.\n * It is initially set to null and will be created when needed.\n */\n T(this, \"label\", null);\n /**\n * The world in which the measurements are performed.\n */\n T(this, \"world\");\n T(this, \"_enabled\", !1);\n /** {@link OBC.Createable.create} */\n T(this, \"create\", () => {\n if (!this.enabled)\n return;\n if (!this.world)\n throw new Error(\"World is needed for Volume Measurement!\");\n const s = this.components.get(Dt).get(this.world).castRay(), i = this.components.get(Un);\n if (!s || !s.object)\n return;\n const { object: r } = s;\n if (r instanceof w.Mesh) {\n const o = i.getVolumeFromMeshes([r]);\n this.onVolumeFound.trigger(o);\n }\n });\n T(this, \"onMouseMove\", () => {\n });\n T(this, \"onKeydown\", (e) => {\n });\n this.components.add(Br.uuid, this);\n }\n /** {@link OBC.Component.enabled} */\n set enabled(e) {\n this._enabled = e, this.setupEvents(e), e || this.cancelCreation();\n }\n /** {@link OBC.Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link OBC.Disposable.dispose} */\n async dispose() {\n var e;\n this.setupEvents(!1), (e = this.label) == null || e.dispose(), this.onDisposed.trigger(), this.onDisposed.reset(), this.components = null;\n }\n /** {@link OBC.Createable.delete} */\n delete() {\n }\n /**\n * Deletes all the measurements created by this component.\n */\n async deleteAll() {\n }\n /** {@link OBC.Createable.endCreation} */\n endCreation() {\n }\n /** {@link OBC.Createable.cancelCreation} */\n cancelCreation() {\n }\n /**\n * Calculates the volume of a set of fragments.\n *\n * @param frags - A map of fragment IDs to their corresponding item IDs.\n * @returns The total volume of the fragments.\n *\n * @remarks\n * This method creates a set of instanced meshes from the given fragments and item IDs.\n * It then calculates the volume of each mesh and returns the total volume.\n *\n * @throws Will throw an error if the world is not set.\n * @throws Will throw an error if the label is not created.\n * @throws Will throw an error if the world's renderer is not set.\n * @throws Will throw an error if the geometry of the meshes is not indexed.\n * @throws Will throw an error if the fragment manager is not available.\n */\n getVolumeFromFragments(e) {\n const s = this.components.get(Un).getVolumeFromFragments(e), i = this.components.get(wa);\n i.reset(), i.addFragmentIdMap(e);\n const r = i.getSphere();\n return this.setLabel(r, s), s;\n }\n /**\n * Calculates the total volume of a set of meshes.\n *\n * @param meshes - An array of meshes or instanced meshes to calculate the volume from.\n * @returns The total volume of the meshes.\n *\n * @throws Will throw an error if the world is not set.\n * @throws Will throw an error if the label is not created.\n *\n * @remarks\n * This method calculates the volume of each mesh in the provided array and returns the total volume.\n * It also handles the creation of a label if it doesn't exist, adds the label to the world's scene,\n * and positions the label at the center of the bounding sphere of the meshes.\n *\n */\n getVolumeFromMeshes(e) {\n const n = this.components.get(Un), s = this.components.get(wa);\n s.reset();\n for (const o of e)\n s.addMesh(o);\n const i = s.getSphere(), r = n.getVolumeFromMeshes(e);\n return this.setLabel(i, r), r;\n }\n /**\n * Clears the label associated with the volume measurement.\n *\n * @remarks\n * This method is used to hide the label when the volume measurement is no longer needed.\n * If the label exists, it sets its visibility to false.\n *\n */\n clear() {\n this.label && (this.label.visible = !1);\n }\n newLabel() {\n if (!this.world)\n throw new Error(\"World is needed for Volume Measurement!\");\n const e = Vn();\n return new ft(this.world, e);\n }\n setupEvents(e) {\n if (!this.world)\n throw new Error(\"The volume measurement needs a world to work!\");\n if (this.world.isDisposing)\n return;\n if (!this.world.renderer)\n throw new Error(\"The world of the volume measurement needs a renderer!\");\n const s = this.world.renderer.three.domElement.parentElement;\n e ? (s.addEventListener(\"click\", this.create), s.addEventListener(\"pointermove\", this.onMouseMove), window.addEventListener(\"keydown\", this.onKeydown)) : (s.removeEventListener(\"click\", this.create), s.removeEventListener(\"pointermove\", this.onMouseMove), window.removeEventListener(\"keydown\", this.onKeydown));\n }\n setLabel(e, n) {\n if (!this.world)\n throw new Error(\"World is needed for Volume Measurement!\");\n this.label || (this.label = this.newLabel(), this.label.three.removeFromParent()), this.label.visible = !0, this.world.scene.three.add(this.label.three), this.label.three.position.copy(e.center);\n const s = Math.trunc(n * 100) / 100;\n this.label.three.element.textContent = s.toString();\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Br, \"uuid\", \"811da532-7af3-4635-b592-1c06ae494af5\");\nlet wc = Br;\nconst kr = class kr extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * An array of AreaSelection objects representing the user's selections.\n * This array is used to store the selected areas, their meshes, and labels.\n */\n T(this, \"selection\", []);\n /**\n * A reference to the preview dimension face.\n * This line is used to visualize the measurement while creating it.\n */\n T(this, \"preview\", new w.Mesh(\n new w.BufferGeometry(),\n new w.MeshBasicMaterial({\n side: 2,\n depthTest: !1,\n transparent: !0,\n opacity: 0.25,\n color: \"#BCF124\"\n })\n ));\n /**\n * Represents the material used for the selected area in the FaceMeasurement component.\n * This material is applied to the 3D mesh representing the selected area.\n */\n T(this, \"selectionMaterial\", new w.MeshBasicMaterial({\n side: 2,\n depthTest: !1,\n transparent: !0,\n color: \"#BCF124\",\n opacity: 0.75\n }));\n /**\n * The world in which the measurements are performed.\n */\n T(this, \"world\");\n T(this, \"_enabled\", !1);\n T(this, \"_currentSelelection\", null);\n /** {@link OBC.Createable.create} */\n T(this, \"create\", () => {\n if (!this.world)\n throw new Error(\"No world given to the face measurement!\");\n if (!this.enabled || !this._currentSelelection)\n return;\n const e = this.world.scene.three, n = new w.BufferGeometry(), s = new w.Mesh(n, this.selectionMaterial);\n n.setAttribute(\n \"position\",\n this.preview.geometry.attributes.position\n ), e.add(s), n.computeBoundingSphere();\n const { area: i, perimeter: r } = this._currentSelelection, o = this.newLabel(n, i);\n s.add(o.three), this.selection.push({ area: i, perimeter: r, mesh: s, label: o });\n });\n T(this, \"onMouseMove\", () => {\n if (!this.world)\n throw new Error(\"The face measurement needs a world to work!\");\n if (!this.enabled) {\n this.unselect();\n return;\n }\n const s = this.components.get(Dt).get(this.world).castRay();\n if (!s || !s.object || s.faceIndex === void 0) {\n this.unselect();\n return;\n }\n const { object: i, faceIndex: r } = s;\n i instanceof w.Mesh || i instanceof w.InstancedMesh ? this.updateSelection(i, r, s.instanceId) : this.unselect();\n });\n T(this, \"onKeydown\", (e) => {\n });\n this.components.add(kr.uuid, this), this.preview.frustumCulled = !1;\n }\n /** {@link OBC.Component.enabled} */\n set enabled(e) {\n if (!this.world)\n throw new Error(\"No world given for the Face measurement!\");\n this._enabled = e, this.setupEvents(e), e ? this.world.scene.three.add(this.preview) : (this.preview.removeFromParent(), this.cancelCreation()), this.setVisibility(e);\n }\n /** {@link OBC.Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.setupEvents(!1), this.deleteAll(), this.preview.removeFromParent(), this.preview.material.dispose(), this.preview.geometry.dispose(), this.selectionMaterial.dispose(), this.onDisposed.trigger(), this.onDisposed.reset(), this.components = null;\n }\n /** {@link OBC.Createable.delete} */\n delete() {\n if (!this.world)\n throw new Error(\"No world given to the face measurement!\");\n const e = this.selection.map((l) => l.mesh), i = this.components.get(Dt).get(this.world).castRay(e);\n if (!i || !i.object)\n return;\n const r = this.selection.find((l) => l.mesh === i.object);\n if (!r)\n return;\n r.mesh.removeFromParent(), r.mesh.geometry.dispose(), r.label.dispose();\n const o = this.selection.indexOf(r);\n this.selection.splice(o, 1);\n }\n /**\n * Deletes all the selections made by the user.\n * It iterates over the `selection` array, removes each mesh and label from the scene,\n * disposes the geometry and material of the mesh, and finally clears the `selection` array.\n */\n deleteAll() {\n for (const e of this.selection)\n e.mesh.removeFromParent(), e.mesh.geometry.dispose(), e.label.dispose();\n this.selection = [];\n }\n /** {@link OBC.Createable.endCreation} */\n endCreation() {\n }\n /** {@link OBC.Createable.cancelCreation} */\n cancelCreation() {\n }\n /**\n * Retrieves the current state of the AreaMeasurement component in a serialized format.\n * This method is used for saving measurements.\n *\n * @returns {SerializedAreaMeasure[]} An array of SerializedAreaMeasure objects,\n * each representing a single selection made by the user.\n */\n get() {\n const e = [];\n for (const n of this.selection) {\n const s = n.mesh.geometry, { area: i, perimeter: r } = n, o = s.attributes.position.array;\n e.push({ position: o, area: i, perimeter: r });\n }\n return e;\n }\n /**\n * Sets the state of the AreaMeasurement component from a serialized format.\n * This method is used for loading measurements.\n *\n * @param serialized - An array of SerializedAreaMeasure objects,\n * each representing a single selection made by the user.\n *\n * @throws Will throw an error if no world is given to the face measurement.\n */\n set(e) {\n if (!this.world)\n throw new Error(\"No world given to the face measurement!\");\n const n = this.world.scene.three;\n for (const s of e) {\n const i = new w.BufferGeometry(), r = new w.Mesh(i, this.selectionMaterial);\n n.add(r);\n const o = new w.BufferAttribute(s.position, 3);\n i.setAttribute(\"position\", o), i.computeBoundingSphere();\n const { area: l, perimeter: u } = s, d = this.newLabel(i, l);\n r.add(d.three), this.selection.push({ area: l, perimeter: u, mesh: r, label: d });\n }\n }\n setupEvents(e) {\n if (!this.world)\n throw new Error(\"The face measurement needs a world to work!\");\n if (this.world.isDisposing)\n return;\n if (!this.world.renderer)\n throw new Error(\"The world of the face measurement needs a renderer!\");\n const s = this.world.renderer.three.domElement.parentElement;\n s.removeEventListener(\"pointermove\", this.onMouseMove), window.removeEventListener(\"keydown\", this.onKeydown), e && (s.addEventListener(\"pointermove\", this.onMouseMove), window.addEventListener(\"keydown\", this.onKeydown));\n }\n setVisibility(e) {\n if (!this.world)\n throw new Error(\"The face measurement needs a world to work!\");\n if (this.world.isDisposing)\n return;\n const n = this.world.scene.three;\n for (const s of this.selection) {\n const i = s.label.three;\n e ? (n.add(s.mesh), s.mesh.add(i)) : (s.mesh.removeFromParent(), i.removeFromParent());\n }\n }\n unselect() {\n this.preview.removeFromParent(), this._currentSelelection = null;\n }\n updateSelection(e, n, s) {\n if (!this.world)\n throw new Error(\"The face measurement needs a world to work!\");\n this.world.scene.three.add(this.preview);\n const o = this.components.get(Un).getFace(e, n, s);\n if (o === null)\n return;\n const l = this.regenerateHighlight(e, o.indices, s);\n let u = 0;\n for (const { distance: d } of o.edges)\n u += d;\n this._currentSelelection = { perimeter: u, area: l };\n }\n newLabel(e, n) {\n if (!e.boundingSphere)\n throw new Error(\"Error computing area geometry\");\n if (!this.world)\n throw new Error(\"The face measurement needs a world to work!\");\n const { center: s } = e.boundingSphere, i = Vn(), r = Math.trunc(n * 100) / 100;\n i.textContent = r.toString();\n const o = new ft(this.world, i);\n return o.three.position.copy(s), o;\n }\n regenerateHighlight(e, n, s) {\n const i = [], r = [];\n let o = 0, l = 0;\n const u = new w.Triangle(), d = this.components.get(Un);\n for (const g of n) {\n const { p1: v, p2: y, p3: x } = d.getVerticesAndNormal(\n e,\n g,\n s\n );\n i.push(v.x, v.y, v.z), i.push(y.x, y.y, y.z), i.push(x.x, x.y, x.z), u.set(v, y, x), l += u.getArea(), r.push(o, o + 1, o + 2), o += 3;\n }\n const m = new Float32Array(i), f = new w.BufferAttribute(m, 3);\n return this.preview.geometry.setAttribute(\"position\", f), this.preview.geometry.setIndex(r), l;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(kr, \"uuid\", \"30279548-1309-44f6-aa97-ce26eed73522\");\nlet Cc = kr;\nconst zr = class zr extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * A reference to the preview dimension line.\n * This line is used to visualize the measurement while creating it.\n */\n T(this, \"preview\");\n /**\n * The tolerance value for edge selection.\n * This value determines the maximum distance from the mouse cursor to an edge for it to be selected.\n */\n T(this, \"tolerance\", 0.3);\n /**\n * The world in which the measurements are performed.\n */\n T(this, \"world\");\n T(this, \"_enabled\", !1);\n T(this, \"_lineMaterial\", new w.LineBasicMaterial({\n color: \"#DC2626\",\n linewidth: 2,\n depthTest: !1,\n transparent: !0\n }));\n /** {@link OBC.Createable.create} */\n T(this, \"create\", async () => {\n if (!this.preview || !this.enabled || !this.preview.visible)\n return;\n const e = this.components.get(_n);\n e.world = this.world;\n const n = this.preview.startPoint.clone(), s = this.preview.endPoint.clone();\n e.createOnPoints(n, s);\n });\n T(this, \"onMouseMove\", () => {\n if (!this.preview)\n return;\n if (!this.world)\n throw new Error(\"The edge measurement needs a world to work!\");\n if (!this.enabled) {\n this.preview.visible = !1;\n return;\n }\n const s = this.components.get(Dt).get(this.world).castRay();\n if (!s || !s.object) {\n this.preview.visible = !1;\n return;\n }\n const { object: i, faceIndex: r, point: o } = s;\n if (r === void 0) {\n this.preview.visible = !1;\n return;\n }\n i instanceof w.Mesh || i instanceof w.InstancedMesh ? this.updateSelection(i, o, r, s.instanceId) : this.preview.visible = !1;\n });\n T(this, \"onKeydown\", (e) => {\n });\n this.components.add(zr.uuid, this);\n }\n /** {@link OBC.Component.enabled} */\n set enabled(e) {\n if (this._enabled = e, this.setupEvents(e), e) {\n if (!this.world)\n throw new Error(\"The edge measurement needs a world to work!\");\n if (!this.preview) {\n const n = document.createElement(\"div\");\n n.className = \"w-2 h-2 bg-red-600 rounded-full\", this.preview = new fi(this.components, this.world, {\n start: new w.Vector3(),\n end: new w.Vector3(),\n lineMaterial: this._lineMaterial,\n endpointElement: n\n }), this.preview.visible = !1;\n }\n } else\n this.cancelCreation();\n }\n /** {@link OBC.Component.enabled} */\n get enabled() {\n return this._enabled;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.preview && this.preview.dispose(), this._lineMaterial.dispose(), this.setupEvents(!1), this.onDisposed.trigger(), this.onDisposed.reset(), this.components = null;\n }\n // TODO: this could be better. Fusion this class with lengthmeasurement?\n /** {@link OBC.Createable.delete} */\n delete() {\n if (!this.enabled)\n return;\n const e = this.components.get(_n), n = e.enabled;\n e.enabled = !0, e.delete(), e.enabled = n;\n }\n /**\n * Deletes all the measurements created by the EdgeMeasurement component.\n */\n deleteAll() {\n this.components.get(_n).deleteAll();\n }\n /** {@link OBC.Createable.endCreation} */\n endCreation() {\n }\n /** {@link OBC.Createable.cancelCreation} */\n cancelCreation() {\n }\n /**\n * Retrieves the current state of the measurements created by the EdgeMeasurement component.\n * The state is serialized as an array of arrays, where each inner array represents a line measurement.\n * Each line measurement is represented by six numbers: the x, y, and z coordinates of the start and end points.\n */\n get() {\n const n = this.components.get(_n).list, s = [];\n for (const i of n) {\n const r = i.startPoint, o = i.endPoint, l = [r.x, r.y, r.z, o.x, o.y, o.z];\n s.push(l);\n }\n return s;\n }\n /**\n * Sets the state of the measurements created by the EdgeMeasurement component.\n * The state is serialized as an array of arrays, where each inner array represents a line measurement.\n * Each line measurement is represented by six numbers: the x, y, and z coordinates of the start and end points.\n *\n * @param dimensions - The serialized state of the measurements.\n * Each inner array should contain six numbers representing the x, y, and z coordinates of the start and end points of a line measurement.\n *\n */\n set(e) {\n const n = this.components.get(_n);\n n.world = this.world;\n for (const s of e) {\n const [i, r, o, l, u, d] = s, m = new w.Vector3(i, r, o), f = new w.Vector3(l, u, d);\n n.createOnPoints(m, f);\n }\n }\n setupEvents(e) {\n if (!this.world)\n throw new Error(\"The edge measurement needs a world to work!\");\n if (this.world.isDisposing)\n return;\n if (!this.world.renderer)\n throw new Error(\"The world of the edge measurement needs a renderer!\");\n const s = this.world.renderer.three.domElement.parentElement;\n e ? (s.addEventListener(\"pointermove\", this.onMouseMove), window.addEventListener(\"keydown\", this.onKeydown)) : (s.removeEventListener(\"pointermove\", this.onMouseMove), window.removeEventListener(\"keydown\", this.onKeydown));\n }\n updateSelection(e, n, s, i) {\n if (!this.preview || !e.geometry.index)\n return;\n const o = this.components.get(Un).getFace(e, s, i);\n if (!o)\n return;\n const { edges: l } = o;\n let u = Number.MAX_VALUE, d = [];\n for (const g of l) {\n const [v, y] = g.points, x = Un.distanceFromPointToLine(\n n,\n v,\n y,\n !0\n );\n x < this.tolerance && x < u && (u = x, d = g.points);\n }\n if (!d.length) {\n this.preview.visible = !1;\n return;\n }\n const [m, f] = d;\n this.preview.startPoint = m, this.preview.endPoint = f, this.preview.visible = !0;\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(zr, \"uuid\", \"e7be5749-89df-4514-8d25-83aa38ce12d8\");\nlet Tc = zr;\nclass Fp extends Zc {\n constructor(e, n, s) {\n super(e, n, s);\n /* Pixels in screen a geometry must occupy to be considered \"seen\". */\n T(this, \"threshold\", 50);\n T(this, \"bboxThreshold\", 200);\n T(this, \"maxLostTime\", 3e4);\n T(this, \"maxHiddenTime\", 5e3);\n T(this, \"boxes\", /* @__PURE__ */ new Map());\n T(this, \"_geometry\");\n T(this, \"_material\", new w.MeshBasicMaterial({\n transparent: !0,\n side: 2,\n opacity: 1\n }));\n T(this, \"onViewUpdated\", new ti());\n T(this, \"_modelIDIndex\", /* @__PURE__ */ new Map());\n T(this, \"_indexModelID\", /* @__PURE__ */ new Map());\n T(this, \"_nextModelID\", 0);\n T(this, \"_geometries\", /* @__PURE__ */ new Map());\n T(this, \"_geometriesGroups\", /* @__PURE__ */ new Map());\n T(this, \"_foundGeometries\", /* @__PURE__ */ new Set());\n T(this, \"_intervalID\", null);\n T(this, \"codes\", /* @__PURE__ */ new Map());\n T(this, \"handleWorkerMessage\", async (e) => {\n const n = e.data.colors, s = {}, i = {}, r = {}, o = {}, l = performance.now();\n let u = !1;\n const d = new Set(this._foundGeometries);\n for (const [m, f] of n) {\n const g = this._geometries.get(m);\n if (!g || !(f > this.threshold))\n continue;\n d.delete(m);\n const { exists: y } = g, x = this._indexModelID.get(g.modelIndex);\n y ? (g.time = l, o[x] || (o[x] = /* @__PURE__ */ new Set()), o[x].add(g.geometryID), this._foundGeometries.add(m), u = !0) : (s[x] || (s[x] = /* @__PURE__ */ new Map()), g.time = l, g.exists = !0, s[x].has(f) || s[x].set(f, /* @__PURE__ */ new Set()), s[x].get(f).add(g.geometryID), this._foundGeometries.add(m), u = !0);\n }\n for (const m of d) {\n const f = this._geometries.get(m);\n f && (this.handleLostGeometries(l, m, f, i, r), u = !0);\n }\n u && await this.onViewUpdated.trigger({ toLoad: s, toRemove: i, toHide: r, toShow: o }), this._isWorkerBusy = !1;\n });\n this.updateInterval = 500, this._geometry = new w.BoxGeometry(1, 1, 1), this._geometry.groups = [], this._geometry.deleteAttribute(\"uv\");\n const i = this._geometry.attributes.position.array;\n for (let r = 0; r < i.length; r++)\n i[r] += 0.5;\n this._geometry.attributes.position.needsUpdate = !0, this.worker.addEventListener(\"message\", this.handleWorkerMessage), this.autoUpdate && (this._intervalID = window.setInterval(\n this.updateVisibility,\n this.updateInterval\n ));\n }\n dispose() {\n super.dispose(), this.onViewUpdated.reset(), this._intervalID !== null && (window.clearInterval(this._intervalID), this._intervalID = null);\n for (const [e, n] of this._geometriesGroups) {\n n.removeFromParent();\n const s = [...n.children];\n for (const i of s)\n i.removeFromParent();\n }\n this._geometriesGroups.clear();\n for (const [e, n] of this.boxes)\n n.dispose(!0);\n this.boxes.clear();\n for (const [e, n] of this._geometries)\n n.fragment && (n.fragment.dispose(!0), n.fragment = void 0);\n this._geometries.clear(), this._geometry.dispose(), this._material.dispose(), this._modelIDIndex.clear(), this._indexModelID.clear(), this.codes.clear();\n }\n add(e, n, s) {\n const i = this.createModelIndex(e), r = w.ColorManagement.enabled;\n w.ColorManagement.enabled = !1;\n const o = /* @__PURE__ */ new Map(), l = new w.Matrix4(), u = new xt.Fragment(this._geometry, this._material, 10);\n this.boxes.set(i, u), this.scene.add(u.mesh);\n const d = new w.Group();\n this.scene.add(d), this._geometriesGroups.set(i, d);\n const m = /* @__PURE__ */ new Map();\n for (const g of n)\n for (const v of g.geometries) {\n const { geometryID: y, transformation: x, color: A } = v, F = new w.Color();\n F.setRGB(A[0], A[1], A[2], \"srgb\");\n const P = this.getInstanceID(g.id, y), C = s[y];\n if (!C) {\n console.log(`Geometry not found: ${y}`);\n continue;\n }\n const { boundingBox: O } = C;\n let U;\n o.has(y) ? U = o.get(y) : (U = this.getAvailableColor(), this.increaseColor(), o.set(y, U));\n const { r: Y, g: H, b: K, code: Z } = U, q = new w.Color();\n q.setRGB(Y / 255, H / 255, K / 255, \"srgb\"), this.codes.has(i) || this.codes.set(i, /* @__PURE__ */ new Map()), this.codes.get(i).set(y, Z);\n const se = new w.Matrix4(), he = Object.values(O);\n if (se.fromArray(x), l.fromArray(he), se.multiply(l), m.has(P)) {\n const me = m.get(P);\n if (me === void 0 || !me.colors)\n throw new Error(\"Malformed item!\");\n me.colors.push(q), me.geometryColors.push(F), me.transforms.push(se);\n } else\n m.set(P, {\n id: P,\n colors: [q],\n geometryColors: [F],\n transforms: [se]\n });\n if (this._geometries.has(Z))\n this._geometries.get(Z).assetIDs.add(g.id);\n else {\n const me = /* @__PURE__ */ new Set([g.id]);\n this._geometries.set(Z, {\n modelIndex: i,\n geometryID: y,\n assetIDs: me,\n exists: !1,\n hidden: !1,\n time: 0\n });\n }\n }\n const f = Array.from(m.values());\n u.add(f), w.ColorManagement.enabled = r;\n }\n remove(e) {\n const n = this._modelIDIndex.get(e);\n if (n === void 0)\n throw new Error(\"Model doesn't exist!\");\n const s = this._geometriesGroups.get(n);\n s.removeFromParent();\n const i = [...s.children];\n for (const l of i)\n l.removeFromParent();\n this._geometriesGroups.delete(n), this.boxes.get(n).dispose(!1), this.boxes.delete(n);\n const o = this.codes.get(n);\n this.codes.delete(n);\n for (const [l, u] of o) {\n const d = this._geometries.get(u);\n d && d.fragment && (d.fragment.dispose(!1), d.fragment = void 0), this._geometries.delete(u);\n }\n this._modelIDIndex.delete(e), this._indexModelID.delete(n), this._foundGeometries.clear();\n }\n addFragment(e, n, s) {\n const i = w.ColorManagement.enabled;\n w.ColorManagement.enabled = !1;\n const r = this._modelIDIndex.get(e), l = this.codes.get(r).get(n), u = this._geometries.get(l);\n if (this.setGeometryVisibility(u, !1, !1), !u.fragment) {\n u.fragment = new xt.Fragment(\n s.mesh.geometry,\n this._material,\n s.capacity\n );\n const v = this._geometriesGroups.get(r);\n if (!v)\n throw new Error(\"Group not found!\");\n v.add(u.fragment.mesh);\n }\n const [d, m, f] = l.split(\"-\").map((v) => parseInt(v, 10)), g = [];\n for (const v of s.ids) {\n const y = s.get(v);\n if (!y.colors)\n throw new Error(\"Malformed fragments!\");\n for (const x of y.colors)\n x.setRGB(d / 255, m / 255, f / 255, \"srgb\");\n g.push(y);\n }\n u.fragment.add(g), w.ColorManagement.enabled = i, this.needsUpdate = !0;\n }\n removeFragment(e, n) {\n const s = this._modelIDIndex.get(e), r = this.codes.get(s).get(n), o = this._geometries.get(r);\n if (o.hidden || this.setGeometryVisibility(o, !0, !1), o.fragment) {\n const { fragment: l } = o;\n l.dispose(!1), o.fragment = void 0;\n }\n }\n // TODO: Is this neccesary anymore?\n setModelTransformation(e, n) {\n const s = this._modelIDIndex.get(e);\n if (s === void 0)\n throw new Error(\"Model not found!\");\n const i = this.boxes.get(s);\n i && (i.mesh.position.set(0, 0, 0), i.mesh.rotation.set(0, 0, 0), i.mesh.scale.set(1, 1, 1), i.mesh.applyMatrix4(n));\n const r = this._geometriesGroups.get(s);\n r && (r.position.set(0, 0, 0), r.rotation.set(0, 0, 0), r.scale.set(1, 1, 1), r.applyMatrix4(n));\n }\n setVisibility(e, n, s) {\n const i = this._modelIDIndex.get(n);\n if (i !== void 0)\n for (const [r, o] of s) {\n const l = this.codes.get(i);\n if (l === void 0)\n throw new Error(\"Map not found!\");\n const u = l.get(r), d = this._geometries.get(u);\n if (d === void 0)\n throw new Error(\"Geometry not found!\");\n d.hidden = !e, this.setGeometryVisibility(d, e, !0, o);\n }\n }\n updateTransformations(e) {\n const n = this._modelIDIndex.get(e);\n if (n === void 0)\n return;\n const i = this.components.get(ke).groups.get(e);\n if (i) {\n i.updateWorldMatrix(!0, !1), i.updateMatrix();\n const r = this.boxes.get(n);\n r && (r.mesh.position.set(0, 0, 0), r.mesh.rotation.set(0, 0, 0), r.mesh.scale.set(1, 1, 1), r.mesh.updateMatrix(), r.mesh.applyMatrix4(i.matrixWorld), r.mesh.updateMatrix());\n const o = this._geometriesGroups.get(n);\n o && (o.position.set(0, 0, 0), o.rotation.set(0, 0, 0), o.scale.set(1, 1, 1), o.updateMatrix(), o.applyMatrix4(i.matrixWorld), o.updateMatrix());\n }\n }\n setGeometryVisibility(e, n, s, i) {\n const { modelIndex: r, geometryID: o, assetIDs: l } = e, u = this.boxes.get(r);\n if (u === void 0)\n throw new Error(\"Model not found!\");\n const d = i || l;\n if (s && e.fragment)\n e.fragment.setVisibility(n, d);\n else {\n const m = /* @__PURE__ */ new Set();\n for (const f of d) {\n const g = this.getInstanceID(f, o);\n m.add(g);\n }\n u.setVisibility(n, m);\n }\n }\n handleLostGeometries(e, n, s, i, r) {\n const o = this._indexModelID.get(s.modelIndex), l = e - s.time;\n l > this.maxLostTime ? (i[o] || (i[o] = /* @__PURE__ */ new Set()), s.exists = !1, i[o].add(s.geometryID), this._foundGeometries.delete(n)) : l > this.maxHiddenTime && (r[o] || (r[o] = /* @__PURE__ */ new Set()), r[o].add(s.geometryID));\n }\n createModelIndex(e) {\n if (this._modelIDIndex.has(e))\n throw new Error(\"Can't load the same model twice!\");\n const n = this._nextModelID;\n return this._nextModelID++, this._modelIDIndex.set(e, n), this._indexModelID.set(n, e), n;\n }\n getInstanceID(e, n) {\n const i = 10 ** (Math.log(n) * Math.LOG10E + 1 | 0);\n return e + n / i;\n }\n}\nvar Rh = { exports: {} };\n(function(h, t) {\n (function(e, n) {\n h.exports = n();\n })(uc, function() {\n var e = function(a, c) {\n return (e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(p, E) {\n p.__proto__ = E;\n } || function(p, E) {\n for (var I in E)\n Object.prototype.hasOwnProperty.call(E, I) && (p[I] = E[I]);\n })(a, c);\n }, n = function() {\n return (n = Object.assign || function(a) {\n for (var c, p = 1, E = arguments.length; p < E; p++)\n for (var I in c = arguments[p])\n Object.prototype.hasOwnProperty.call(c, I) && (a[I] = c[I]);\n return a;\n }).apply(this, arguments);\n };\n function s(a, c, p) {\n for (var E, I = 0, b = c.length; I < b; I++)\n !E && I in c || ((E = E || Array.prototype.slice.call(c, 0, I))[I] = c[I]);\n return a.concat(E || Array.prototype.slice.call(c));\n }\n var i = typeof globalThis < \"u\" ? globalThis : typeof self < \"u\" ? self : typeof window < \"u\" ? window : uc, r = Object.keys, o = Array.isArray;\n function l(a, c) {\n return typeof c != \"object\" || r(c).forEach(function(p) {\n a[p] = c[p];\n }), a;\n }\n typeof Promise > \"u\" || i.Promise || (i.Promise = Promise);\n var u = Object.getPrototypeOf, d = {}.hasOwnProperty;\n function m(a, c) {\n return d.call(a, c);\n }\n function f(a, c) {\n typeof c == \"function\" && (c = c(u(a))), (typeof Reflect > \"u\" ? r : Reflect.ownKeys)(c).forEach(function(p) {\n v(a, p, c[p]);\n });\n }\n var g = Object.defineProperty;\n function v(a, c, p, E) {\n g(a, c, l(p && m(p, \"get\") && typeof p.get == \"function\" ? { get: p.get, set: p.set, configurable: !0 } : { value: p, configurable: !0, writable: !0 }, E));\n }\n function y(a) {\n return { from: function(c) {\n return a.prototype = Object.create(c.prototype), v(a.prototype, \"constructor\", a), { extend: f.bind(null, a.prototype) };\n } };\n }\n var x = Object.getOwnPropertyDescriptor, A = [].slice;\n function F(a, c, p) {\n return A.call(a, c, p);\n }\n function P(a, c) {\n return c(a);\n }\n function C(a) {\n if (!a)\n throw new Error(\"Assertion Failed\");\n }\n function O(a) {\n i.setImmediate ? setImmediate(a) : setTimeout(a, 0);\n }\n function U(a, c) {\n if (typeof c == \"string\" && m(a, c))\n return a[c];\n if (!c)\n return a;\n if (typeof c != \"string\") {\n for (var p = [], E = 0, I = c.length; E < I; ++E) {\n var b = U(a, c[E]);\n p.push(b);\n }\n return p;\n }\n var R = c.indexOf(\".\");\n if (R !== -1) {\n var M = a[c.substr(0, R)];\n return M == null ? void 0 : U(M, c.substr(R + 1));\n }\n }\n function Y(a, c, p) {\n if (a && c !== void 0 && !(\"isFrozen\" in Object && Object.isFrozen(a)))\n if (typeof c != \"string\" && \"length\" in c) {\n C(typeof p != \"string\" && \"length\" in p);\n for (var E = 0, I = c.length; E < I; ++E)\n Y(a, c[E], p[E]);\n } else {\n var b, R, M = c.indexOf(\".\");\n M !== -1 ? (b = c.substr(0, M), (R = c.substr(M + 1)) === \"\" ? p === void 0 ? o(a) && !isNaN(parseInt(b)) ? a.splice(b, 1) : delete a[b] : a[b] = p : Y(M = !(M = a[b]) || !m(a, b) ? a[b] = {} : M, R, p)) : p === void 0 ? o(a) && !isNaN(parseInt(c)) ? a.splice(c, 1) : delete a[c] : a[c] = p;\n }\n }\n function H(a) {\n var c, p = {};\n for (c in a)\n m(a, c) && (p[c] = a[c]);\n return p;\n }\n var K = [].concat;\n function Z(a) {\n return K.apply([], a);\n }\n var Jt = \"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\".split(\",\").concat(Z([8, 16, 32, 64].map(function(a) {\n return [\"Int\", \"Uint\", \"Float\"].map(function(c) {\n return c + a + \"Array\";\n });\n }))).filter(function(a) {\n return i[a];\n }), q = new Set(Jt.map(function(a) {\n return i[a];\n })), ne = null;\n function se(a) {\n return ne = /* @__PURE__ */ new WeakMap(), a = function c(p) {\n if (!p || typeof p != \"object\")\n return p;\n var E = ne.get(p);\n if (E)\n return E;\n if (o(p)) {\n E = [], ne.set(p, E);\n for (var I = 0, b = p.length; I < b; ++I)\n E.push(c(p[I]));\n } else if (q.has(p.constructor))\n E = p;\n else {\n var R, M = u(p);\n for (R in E = M === Object.prototype ? {} : Object.create(M), ne.set(p, E), p)\n m(p, R) && (E[R] = c(p[R]));\n }\n return E;\n }(a), ne = null, a;\n }\n var he = {}.toString;\n function me(a) {\n return he.call(a).slice(8, -1);\n }\n var Ie = typeof Symbol < \"u\" ? Symbol.iterator : \"@@iterator\", Ee = typeof Ie == \"symbol\" ? function(a) {\n var c;\n return a != null && (c = a[Ie]) && c.apply(a);\n } : function() {\n return null;\n };\n function ue(a, c) {\n return c = a.indexOf(c), 0 <= c && a.splice(c, 1), 0 <= c;\n }\n var Le = {};\n function we(a) {\n var c, p, E, I;\n if (arguments.length === 1) {\n if (o(a))\n return a.slice();\n if (this === Le && typeof a == \"string\")\n return [a];\n if (I = Ee(a)) {\n for (p = []; !(E = I.next()).done; )\n p.push(E.value);\n return p;\n }\n if (a == null)\n return [a];\n if (typeof (c = a.length) != \"number\")\n return [a];\n for (p = new Array(c); c--; )\n p[c] = a[c];\n return p;\n }\n for (c = arguments.length, p = new Array(c); c--; )\n p[c] = arguments[c];\n return p;\n }\n var Ke = typeof Symbol < \"u\" ? function(a) {\n return a[Symbol.toStringTag] === \"AsyncFunction\";\n } : function() {\n return !1;\n }, bs = [\"Unknown\", \"Constraint\", \"Data\", \"TransactionInactive\", \"ReadOnly\", \"Version\", \"NotFound\", \"InvalidState\", \"InvalidAccess\", \"Abort\", \"Timeout\", \"QuotaExceeded\", \"Syntax\", \"DataClone\"], It = [\"Modify\", \"Bulk\", \"OpenFailed\", \"VersionChange\", \"Schema\", \"Upgrade\", \"InvalidTable\", \"MissingAPI\", \"NoSuchDatabase\", \"InvalidArgument\", \"SubTransaction\", \"Unsupported\", \"Internal\", \"DatabaseClosed\", \"PrematureCommit\", \"ForeignAwait\"].concat(bs), Nt = { VersionChanged: \"Database version changed by other database connection\", DatabaseClosed: \"Database has been closed\", Abort: \"Transaction aborted\", TransactionInactive: \"Transaction has already completed or failed\", MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\" };\n function vt(a, c) {\n this.name = a, this.message = c;\n }\n function ys(a, c) {\n return a + \". Errors: \" + Object.keys(c).map(function(p) {\n return c[p].toString();\n }).filter(function(p, E, I) {\n return I.indexOf(p) === E;\n }).join(`\n`);\n }\n function Cn(a, c, p, E) {\n this.failures = c, this.failedKeys = E, this.successCount = p, this.message = ys(a, c);\n }\n function Zt(a, c) {\n this.name = \"BulkError\", this.failures = Object.keys(c).map(function(p) {\n return c[p];\n }), this.failuresByPos = c, this.message = ys(a, this.failures);\n }\n y(vt).from(Error).extend({ toString: function() {\n return this.name + \": \" + this.message;\n } }), y(Cn).from(vt), y(Zt).from(vt);\n var Qt = It.reduce(function(a, c) {\n return a[c] = c + \"Error\", a;\n }, {}), je = vt, pe = It.reduce(function(a, c) {\n var p = c + \"Error\";\n function E(I, b) {\n this.name = p, I ? typeof I == \"string\" ? (this.message = \"\".concat(I).concat(b ? `\n ` + b : \"\"), this.inner = b || null) : typeof I == \"object\" && (this.message = \"\".concat(I.name, \" \").concat(I.message), this.inner = I) : (this.message = Nt[c] || p, this.inner = null);\n }\n return y(E).from(je), a[c] = E, a;\n }, {});\n pe.Syntax = SyntaxError, pe.Type = TypeError, pe.Range = RangeError;\n var Ye = bs.reduce(function(a, c) {\n return a[c + \"Error\"] = pe[c], a;\n }, {}), St = It.reduce(function(a, c) {\n return [\"Syntax\", \"Type\", \"Range\"].indexOf(c) === -1 && (a[c + \"Error\"] = pe[c]), a;\n }, {});\n function Oe() {\n }\n function _t(a) {\n return a;\n }\n function qr(a, c) {\n return a == null || a === _t ? c : function(p) {\n return c(a(p));\n };\n }\n function At(a, c) {\n return function() {\n a.apply(this, arguments), c.apply(this, arguments);\n };\n }\n function ws(a, c) {\n return a === Oe ? c : function() {\n var p = a.apply(this, arguments);\n p !== void 0 && (arguments[0] = p);\n var E = this.onsuccess, I = this.onerror;\n this.onsuccess = null, this.onerror = null;\n var b = c.apply(this, arguments);\n return E && (this.onsuccess = this.onsuccess ? At(E, this.onsuccess) : E), I && (this.onerror = this.onerror ? At(I, this.onerror) : I), b !== void 0 ? b : p;\n };\n }\n function Cs(a, c) {\n return a === Oe ? c : function() {\n a.apply(this, arguments);\n var p = this.onsuccess, E = this.onerror;\n this.onsuccess = this.onerror = null, c.apply(this, arguments), p && (this.onsuccess = this.onsuccess ? At(p, this.onsuccess) : p), E && (this.onerror = this.onerror ? At(E, this.onerror) : E);\n };\n }\n function Fh(a, c) {\n return a === Oe ? c : function(p) {\n var E = a.apply(this, arguments);\n l(p, E);\n var I = this.onsuccess, b = this.onerror;\n return this.onsuccess = null, this.onerror = null, p = c.apply(this, arguments), I && (this.onsuccess = this.onsuccess ? At(I, this.onsuccess) : I), b && (this.onerror = this.onerror ? At(b, this.onerror) : b), E === void 0 ? p === void 0 ? void 0 : p : l(E, p);\n };\n }\n function Ph(a, c) {\n return a === Oe ? c : function() {\n return c.apply(this, arguments) !== !1 && a.apply(this, arguments);\n };\n }\n function Jr(a, c) {\n return a === Oe ? c : function() {\n var p = a.apply(this, arguments);\n if (p && typeof p.then == \"function\") {\n for (var E = this, I = arguments.length, b = new Array(I); I--; )\n b[I] = arguments[I];\n return p.then(function() {\n return c.apply(E, b);\n });\n }\n return c.apply(this, arguments);\n };\n }\n St.ModifyError = Cn, St.DexieError = vt, St.BulkError = Zt;\n var Ut = typeof location < \"u\" && /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\n function ka(a) {\n Ut = a;\n }\n var Ts = {}, za = 100, Jt = typeof Promise > \"u\" ? [] : function() {\n var a = Promise.resolve();\n if (typeof crypto > \"u\" || !crypto.subtle)\n return [a, u(a), a];\n var c = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [c, u(c), a];\n }(), bs = Jt[0], It = Jt[1], Jt = Jt[2], It = It && It.then, xs = bs && bs.constructor, $r = !!Jt, Ss = function(a, c) {\n As.push([a, c]), gi && (queueMicrotask(Oh), gi = !1);\n }, eo = !0, gi = !0, Tn = [], Ei = [], to = _t, on = { id: \"global\", global: !0, ref: 0, unhandleds: [], onunhandled: Oe, pgp: !1, env: {}, finalize: Oe }, ge = on, As = [], bn = 0, vi = [];\n function ce(a) {\n if (typeof this != \"object\")\n throw new TypeError(\"Promises must be constructed via new\");\n this._listeners = [], this._lib = !1;\n var c = this._PSD = ge;\n if (typeof a != \"function\") {\n if (a !== Ts)\n throw new TypeError(\"Not a function\");\n return this._state = arguments[1], this._value = arguments[2], void (this._state === !1 && so(this, this._value));\n }\n this._state = null, this._value = null, ++c.ref, function p(E, I) {\n try {\n I(function(b) {\n if (E._state === null) {\n if (b === E)\n throw new TypeError(\"A promise cannot be resolved with itself.\");\n var R = E._lib && Gn();\n b && typeof b.then == \"function\" ? p(E, function(M, _) {\n b instanceof ce ? b._then(M, _) : b.then(M, _);\n }) : (E._state = !0, E._value = b, Ga(E)), R && Yn();\n }\n }, so.bind(null, E));\n } catch (b) {\n so(E, b);\n }\n }(this, a);\n }\n var no = { get: function() {\n var a = ge, c = Ci;\n function p(E, I) {\n var b = this, R = !a.global && (a !== ge || c !== Ci), M = R && !ln(), _ = new ce(function(L, z) {\n io(b, new Va(Ha(E, a, R, M), Ha(I, a, R, M), L, z, a));\n });\n return this._consoleTask && (_._consoleTask = this._consoleTask), _;\n }\n return p.prototype = Ts, p;\n }, set: function(a) {\n v(this, \"then\", a && a.prototype === Ts ? no : { get: function() {\n return a;\n }, set: no.set });\n } };\n function Va(a, c, p, E, I) {\n this.onFulfilled = typeof a == \"function\" ? a : null, this.onRejected = typeof c == \"function\" ? c : null, this.resolve = p, this.reject = E, this.psd = I;\n }\n function so(a, c) {\n var p, E;\n Ei.push(c), a._state === null && (p = a._lib && Gn(), c = to(c), a._state = !1, a._value = c, E = a, Tn.some(function(I) {\n return I._value === E._value;\n }) || Tn.push(E), Ga(a), p && Yn());\n }\n function Ga(a) {\n var c = a._listeners;\n a._listeners = [];\n for (var p = 0, E = c.length; p < E; ++p)\n io(a, c[p]);\n var I = a._PSD;\n --I.ref || I.finalize(), bn === 0 && (++bn, Ss(function() {\n --bn == 0 && ro();\n }, []));\n }\n function io(a, c) {\n if (a._state !== null) {\n var p = a._state ? c.onFulfilled : c.onRejected;\n if (p === null)\n return (a._state ? c.resolve : c.reject)(a._value);\n ++c.psd.ref, ++bn, Ss(Mh, [p, a, c]);\n } else\n a._listeners.push(c);\n }\n function Mh(a, c, p) {\n try {\n var E, I = c._value;\n !c._state && Ei.length && (Ei = []), E = Ut && c._consoleTask ? c._consoleTask.run(function() {\n return a(I);\n }) : a(I), c._state || Ei.indexOf(I) !== -1 || function(b) {\n for (var R = Tn.length; R; )\n if (Tn[--R]._value === b._value)\n return Tn.splice(R, 1);\n }(c), p.resolve(E);\n } catch (b) {\n p.reject(b);\n } finally {\n --bn == 0 && ro(), --p.psd.ref || p.psd.finalize();\n }\n }\n function Oh() {\n xn(on, function() {\n Gn() && Yn();\n });\n }\n function Gn() {\n var a = eo;\n return gi = eo = !1, a;\n }\n function Yn() {\n var a, c, p;\n do\n for (; 0 < As.length; )\n for (a = As, As = [], p = a.length, c = 0; c < p; ++c) {\n var E = a[c];\n E[0].apply(null, E[1]);\n }\n while (0 < As.length);\n gi = eo = !0;\n }\n function ro() {\n var a = Tn;\n Tn = [], a.forEach(function(E) {\n E._PSD.onunhandled.call(null, E._value, E);\n });\n for (var c = vi.slice(0), p = c.length; p; )\n c[--p]();\n }\n function Ii(a) {\n return new ce(Ts, !1, a);\n }\n function Ve(a, c) {\n var p = ge;\n return function() {\n var E = Gn(), I = ge;\n try {\n return cn(p, !0), a.apply(this, arguments);\n } catch (b) {\n c && c(b);\n } finally {\n cn(I, !1), E && Yn();\n }\n };\n }\n f(ce.prototype, { then: no, _then: function(a, c) {\n io(this, new Va(null, null, a, c, ge));\n }, catch: function(a) {\n if (arguments.length === 1)\n return this.then(null, a);\n var c = a, p = arguments[1];\n return typeof c == \"function\" ? this.then(null, function(E) {\n return (E instanceof c ? p : Ii)(E);\n }) : this.then(null, function(E) {\n return (E && E.name === c ? p : Ii)(E);\n });\n }, finally: function(a) {\n return this.then(function(c) {\n return ce.resolve(a()).then(function() {\n return c;\n });\n }, function(c) {\n return ce.resolve(a()).then(function() {\n return Ii(c);\n });\n });\n }, timeout: function(a, c) {\n var p = this;\n return a < 1 / 0 ? new ce(function(E, I) {\n var b = setTimeout(function() {\n return I(new pe.Timeout(c));\n }, a);\n p.then(E, I).finally(clearTimeout.bind(null, b));\n }) : this;\n } }), typeof Symbol < \"u\" && Symbol.toStringTag && v(ce.prototype, Symbol.toStringTag, \"Dexie.Promise\"), on.env = Ya(), f(ce, { all: function() {\n var a = we.apply(null, arguments).map(Ti);\n return new ce(function(c, p) {\n a.length === 0 && c([]);\n var E = a.length;\n a.forEach(function(I, b) {\n return ce.resolve(I).then(function(R) {\n a[b] = R, --E || c(a);\n }, p);\n });\n });\n }, resolve: function(a) {\n return a instanceof ce ? a : a && typeof a.then == \"function\" ? new ce(function(c, p) {\n a.then(c, p);\n }) : new ce(Ts, !0, a);\n }, reject: Ii, race: function() {\n var a = we.apply(null, arguments).map(Ti);\n return new ce(function(c, p) {\n a.map(function(E) {\n return ce.resolve(E).then(c, p);\n });\n });\n }, PSD: { get: function() {\n return ge;\n }, set: function(a) {\n return ge = a;\n } }, totalEchoes: { get: function() {\n return Ci;\n } }, newPSD: an, usePSD: xn, scheduler: { get: function() {\n return Ss;\n }, set: function(a) {\n Ss = a;\n } }, rejectionMapper: { get: function() {\n return to;\n }, set: function(a) {\n to = a;\n } }, follow: function(a, c) {\n return new ce(function(p, E) {\n return an(function(I, b) {\n var R = ge;\n R.unhandleds = [], R.onunhandled = b, R.finalize = At(function() {\n var M, _ = this;\n M = function() {\n _.unhandleds.length === 0 ? I() : b(_.unhandleds[0]);\n }, vi.push(function L() {\n M(), vi.splice(vi.indexOf(L), 1);\n }), ++bn, Ss(function() {\n --bn == 0 && ro();\n }, []);\n }, R.finalize), a();\n }, c, p, E);\n });\n } }), xs && (xs.allSettled && v(ce, \"allSettled\", function() {\n var a = we.apply(null, arguments).map(Ti);\n return new ce(function(c) {\n a.length === 0 && c([]);\n var p = a.length, E = new Array(p);\n a.forEach(function(I, b) {\n return ce.resolve(I).then(function(R) {\n return E[b] = { status: \"fulfilled\", value: R };\n }, function(R) {\n return E[b] = { status: \"rejected\", reason: R };\n }).then(function() {\n return --p || c(E);\n });\n });\n });\n }), xs.any && typeof AggregateError < \"u\" && v(ce, \"any\", function() {\n var a = we.apply(null, arguments).map(Ti);\n return new ce(function(c, p) {\n a.length === 0 && p(new AggregateError([]));\n var E = a.length, I = new Array(E);\n a.forEach(function(b, R) {\n return ce.resolve(b).then(function(M) {\n return c(M);\n }, function(M) {\n I[R] = M, --E || p(new AggregateError(I));\n });\n });\n });\n }));\n var qe = { awaits: 0, echoes: 0, id: 0 }, Dh = 0, yi = [], wi = 0, Ci = 0, Lh = 0;\n function an(a, c, p, E) {\n var I = ge, b = Object.create(I);\n return b.parent = I, b.ref = 0, b.global = !1, b.id = ++Lh, on.env, b.env = $r ? { Promise: ce, PromiseProp: { value: ce, configurable: !0, writable: !0 }, all: ce.all, race: ce.race, allSettled: ce.allSettled, any: ce.any, resolve: ce.resolve, reject: ce.reject } : {}, c && l(b, c), ++I.ref, b.finalize = function() {\n --this.parent.ref || this.parent.finalize();\n }, E = xn(b, a, p, E), b.ref === 0 && b.finalize(), E;\n }\n function Hn() {\n return qe.id || (qe.id = ++Dh), ++qe.awaits, qe.echoes += za, qe.id;\n }\n function ln() {\n return !!qe.awaits && (--qe.awaits == 0 && (qe.id = 0), qe.echoes = qe.awaits * za, !0);\n }\n function Ti(a) {\n return qe.echoes && a && a.constructor === xs ? (Hn(), a.then(function(c) {\n return ln(), c;\n }, function(c) {\n return ln(), Xe(c);\n })) : a;\n }\n function Nh() {\n var a = yi[yi.length - 1];\n yi.pop(), cn(a, !1);\n }\n function cn(a, c) {\n var p, E = ge;\n (c ? !qe.echoes || wi++ && a === ge : !wi || --wi && a === ge) || queueMicrotask(c ? (function(I) {\n ++Ci, qe.echoes && --qe.echoes != 0 || (qe.echoes = qe.awaits = qe.id = 0), yi.push(ge), cn(I, !0);\n }).bind(null, a) : Nh), a !== ge && (ge = a, E === on && (on.env = Ya()), $r && (p = on.env.Promise, c = a.env, (E.global || a.global) && (Object.defineProperty(i, \"Promise\", c.PromiseProp), p.all = c.all, p.race = c.race, p.resolve = c.resolve, p.reject = c.reject, c.allSettled && (p.allSettled = c.allSettled), c.any && (p.any = c.any))));\n }\n function Ya() {\n var a = i.Promise;\n return $r ? { Promise: a, PromiseProp: Object.getOwnPropertyDescriptor(i, \"Promise\"), all: a.all, race: a.race, allSettled: a.allSettled, any: a.any, resolve: a.resolve, reject: a.reject } : {};\n }\n function xn(a, c, p, E, I) {\n var b = ge;\n try {\n return cn(a, !0), c(p, E, I);\n } finally {\n cn(b, !1);\n }\n }\n function Ha(a, c, p, E) {\n return typeof a != \"function\" ? a : function() {\n var I = ge;\n p && Hn(), cn(c, !0);\n try {\n return a.apply(this, arguments);\n } finally {\n cn(I, !1), E && queueMicrotask(ln);\n }\n };\n }\n function oo(a) {\n Promise === xs && qe.echoes === 0 ? wi === 0 ? a() : enqueueNativeMicroTask(a) : setTimeout(a, 0);\n }\n (\"\" + It).indexOf(\"[native code]\") === -1 && (Hn = ln = Oe);\n var Xe = ce.reject, Sn = \"￿\", qt = \"Invalid key provided. Keys must be of type string, number, Date or Array.\", Wa = \"String expected.\", Wn = [], bi = \"__dbnames\", ao = \"readonly\", lo = \"readwrite\";\n function An(a, c) {\n return a ? c ? function() {\n return a.apply(this, arguments) && c.apply(this, arguments);\n } : a : c;\n }\n var Ka = { type: 3, lower: -1 / 0, lowerOpen: !1, upper: [[]], upperOpen: !1 };\n function xi(a) {\n return typeof a != \"string\" || /\\./.test(a) ? function(c) {\n return c;\n } : function(c) {\n return c[a] === void 0 && a in c && delete (c = se(c))[a], c;\n };\n }\n function ja() {\n throw pe.Type();\n }\n function Me(a, c) {\n try {\n var p = Xa(a), E = Xa(c);\n if (p !== E)\n return p === \"Array\" ? 1 : E === \"Array\" ? -1 : p === \"binary\" ? 1 : E === \"binary\" ? -1 : p === \"string\" ? 1 : E === \"string\" ? -1 : p === \"Date\" ? 1 : E !== \"Date\" ? NaN : -1;\n switch (p) {\n case \"number\":\n case \"Date\":\n case \"string\":\n return c < a ? 1 : a < c ? -1 : 0;\n case \"binary\":\n return function(I, b) {\n for (var R = I.length, M = b.length, _ = R < M ? R : M, L = 0; L < _; ++L)\n if (I[L] !== b[L])\n return I[L] < b[L] ? -1 : 1;\n return R === M ? 0 : R < M ? -1 : 1;\n }(Za(a), Za(c));\n case \"Array\":\n return function(I, b) {\n for (var R = I.length, M = b.length, _ = R < M ? R : M, L = 0; L < _; ++L) {\n var z = Me(I[L], b[L]);\n if (z !== 0)\n return z;\n }\n return R === M ? 0 : R < M ? -1 : 1;\n }(a, c);\n }\n } catch {\n }\n return NaN;\n }\n function Xa(a) {\n var c = typeof a;\n return c != \"object\" ? c : ArrayBuffer.isView(a) ? \"binary\" : (a = me(a), a === \"ArrayBuffer\" ? \"binary\" : a);\n }\n function Za(a) {\n return a instanceof Uint8Array ? a : ArrayBuffer.isView(a) ? new Uint8Array(a.buffer, a.byteOffset, a.byteLength) : new Uint8Array(a);\n }\n var Qa = (Be.prototype._trans = function(a, c, p) {\n var E = this._tx || ge.trans, I = this.name, b = Ut && typeof console < \"u\" && console.createTask && console.createTask(\"Dexie: \".concat(a === \"readonly\" ? \"read\" : \"write\", \" \").concat(this.name));\n function R(L, z, D) {\n if (!D.schema[I])\n throw new pe.NotFound(\"Table \" + I + \" not part of transaction\");\n return c(D.idbtrans, D);\n }\n var M = Gn();\n try {\n var _ = E && E.db._novip === this.db._novip ? E === ge.trans ? E._promise(a, R, p) : an(function() {\n return E._promise(a, R, p);\n }, { trans: E, transless: ge.transless || ge }) : function L(z, D, V, N) {\n if (z.idbdb && (z._state.openComplete || ge.letThrough || z._vip)) {\n var k = z._createTransaction(D, V, z._dbSchema);\n try {\n k.create(), z._state.PR1398_maxLoop = 3;\n } catch (G) {\n return G.name === Qt.InvalidState && z.isOpen() && 0 < --z._state.PR1398_maxLoop ? (console.warn(\"Dexie: Need to reopen db\"), z.close({ disableAutoOpen: !1 }), z.open().then(function() {\n return L(z, D, V, N);\n })) : Xe(G);\n }\n return k._promise(D, function(G, B) {\n return an(function() {\n return ge.trans = k, N(G, B, k);\n });\n }).then(function(G) {\n if (D === \"readwrite\")\n try {\n k.idbtrans.commit();\n } catch {\n }\n return D === \"readonly\" ? G : k._completion.then(function() {\n return G;\n });\n });\n }\n if (z._state.openComplete)\n return Xe(new pe.DatabaseClosed(z._state.dbOpenError));\n if (!z._state.isBeingOpened) {\n if (!z._state.autoOpen)\n return Xe(new pe.DatabaseClosed());\n z.open().catch(Oe);\n }\n return z._state.dbReadyPromise.then(function() {\n return L(z, D, V, N);\n });\n }(this.db, a, [this.name], R);\n return b && (_._consoleTask = b, _ = _.catch(function(L) {\n return console.trace(L), Xe(L);\n })), _;\n } finally {\n M && Yn();\n }\n }, Be.prototype.get = function(a, c) {\n var p = this;\n return a && a.constructor === Object ? this.where(a).first(c) : a == null ? Xe(new pe.Type(\"Invalid argument to Table.get()\")) : this._trans(\"readonly\", function(E) {\n return p.core.get({ trans: E, key: a }).then(function(I) {\n return p.hook.reading.fire(I);\n });\n }).then(c);\n }, Be.prototype.where = function(a) {\n if (typeof a == \"string\")\n return new this.db.WhereClause(this, a);\n if (o(a))\n return new this.db.WhereClause(this, \"[\".concat(a.join(\"+\"), \"]\"));\n var c = r(a);\n if (c.length === 1)\n return this.where(c[0]).equals(a[c[0]]);\n var p = this.schema.indexes.concat(this.schema.primKey).filter(function(_) {\n if (_.compound && c.every(function(z) {\n return 0 <= _.keyPath.indexOf(z);\n })) {\n for (var L = 0; L < c.length; ++L)\n if (c.indexOf(_.keyPath[L]) === -1)\n return !1;\n return !0;\n }\n return !1;\n }).sort(function(_, L) {\n return _.keyPath.length - L.keyPath.length;\n })[0];\n if (p && this.db._maxKey !== Sn) {\n var R = p.keyPath.slice(0, c.length);\n return this.where(R).equals(R.map(function(L) {\n return a[L];\n }));\n }\n !p && Ut && console.warn(\"The query \".concat(JSON.stringify(a), \" on \").concat(this.name, \" would benefit from a \") + \"compound index [\".concat(c.join(\"+\"), \"]\"));\n var E = this.schema.idxByName, I = this.db._deps.indexedDB;\n function b(_, L) {\n return I.cmp(_, L) === 0;\n }\n var M = c.reduce(function(V, L) {\n var z = V[0], D = V[1], V = E[L], N = a[L];\n return [z || V, z || !V ? An(D, V && V.multi ? function(k) {\n return k = U(k, L), o(k) && k.some(function(G) {\n return b(N, G);\n });\n } : function(k) {\n return b(N, U(k, L));\n }) : D];\n }, [null, null]), R = M[0], M = M[1];\n return R ? this.where(R.name).equals(a[R.keyPath]).filter(M) : p ? this.filter(M) : this.where(c).equals(\"\");\n }, Be.prototype.filter = function(a) {\n return this.toCollection().and(a);\n }, Be.prototype.count = function(a) {\n return this.toCollection().count(a);\n }, Be.prototype.offset = function(a) {\n return this.toCollection().offset(a);\n }, Be.prototype.limit = function(a) {\n return this.toCollection().limit(a);\n }, Be.prototype.each = function(a) {\n return this.toCollection().each(a);\n }, Be.prototype.toArray = function(a) {\n return this.toCollection().toArray(a);\n }, Be.prototype.toCollection = function() {\n return new this.db.Collection(new this.db.WhereClause(this));\n }, Be.prototype.orderBy = function(a) {\n return new this.db.Collection(new this.db.WhereClause(this, o(a) ? \"[\".concat(a.join(\"+\"), \"]\") : a));\n }, Be.prototype.reverse = function() {\n return this.toCollection().reverse();\n }, Be.prototype.mapToClass = function(a) {\n var c, p = this.db, E = this.name;\n function I() {\n return c !== null && c.apply(this, arguments) || this;\n }\n (this.schema.mappedClass = a).prototype instanceof ja && (function(_, L) {\n if (typeof L != \"function\" && L !== null)\n throw new TypeError(\"Class extends value \" + String(L) + \" is not a constructor or null\");\n function z() {\n this.constructor = _;\n }\n e(_, L), _.prototype = L === null ? Object.create(L) : (z.prototype = L.prototype, new z());\n }(I, c = a), Object.defineProperty(I.prototype, \"db\", { get: function() {\n return p;\n }, enumerable: !1, configurable: !0 }), I.prototype.table = function() {\n return E;\n }, a = I);\n for (var b = /* @__PURE__ */ new Set(), R = a.prototype; R; R = u(R))\n Object.getOwnPropertyNames(R).forEach(function(_) {\n return b.add(_);\n });\n function M(_) {\n if (!_)\n return _;\n var L, z = Object.create(a.prototype);\n for (L in _)\n if (!b.has(L))\n try {\n z[L] = _[L];\n } catch {\n }\n return z;\n }\n return this.schema.readHook && this.hook.reading.unsubscribe(this.schema.readHook), this.schema.readHook = M, this.hook(\"reading\", M), a;\n }, Be.prototype.defineClass = function() {\n return this.mapToClass(function(a) {\n l(this, a);\n });\n }, Be.prototype.add = function(a, c) {\n var p = this, E = this.schema.primKey, I = E.auto, b = E.keyPath, R = a;\n return b && I && (R = xi(b)(a)), this._trans(\"readwrite\", function(M) {\n return p.core.mutate({ trans: M, type: \"add\", keys: c != null ? [c] : null, values: [R] });\n }).then(function(M) {\n return M.numFailures ? ce.reject(M.failures[0]) : M.lastResult;\n }).then(function(M) {\n if (b)\n try {\n Y(a, b, M);\n } catch {\n }\n return M;\n });\n }, Be.prototype.update = function(a, c) {\n return typeof a != \"object\" || o(a) ? this.where(\":id\").equals(a).modify(c) : (a = U(a, this.schema.primKey.keyPath), a === void 0 ? Xe(new pe.InvalidArgument(\"Given object does not contain its primary key\")) : this.where(\":id\").equals(a).modify(c));\n }, Be.prototype.put = function(a, c) {\n var p = this, E = this.schema.primKey, I = E.auto, b = E.keyPath, R = a;\n return b && I && (R = xi(b)(a)), this._trans(\"readwrite\", function(M) {\n return p.core.mutate({ trans: M, type: \"put\", values: [R], keys: c != null ? [c] : null });\n }).then(function(M) {\n return M.numFailures ? ce.reject(M.failures[0]) : M.lastResult;\n }).then(function(M) {\n if (b)\n try {\n Y(a, b, M);\n } catch {\n }\n return M;\n });\n }, Be.prototype.delete = function(a) {\n var c = this;\n return this._trans(\"readwrite\", function(p) {\n return c.core.mutate({ trans: p, type: \"delete\", keys: [a] });\n }).then(function(p) {\n return p.numFailures ? ce.reject(p.failures[0]) : void 0;\n });\n }, Be.prototype.clear = function() {\n var a = this;\n return this._trans(\"readwrite\", function(c) {\n return a.core.mutate({ trans: c, type: \"deleteRange\", range: Ka });\n }).then(function(c) {\n return c.numFailures ? ce.reject(c.failures[0]) : void 0;\n });\n }, Be.prototype.bulkGet = function(a) {\n var c = this;\n return this._trans(\"readonly\", function(p) {\n return c.core.getMany({ keys: a, trans: p }).then(function(E) {\n return E.map(function(I) {\n return c.hook.reading.fire(I);\n });\n });\n });\n }, Be.prototype.bulkAdd = function(a, c, p) {\n var E = this, I = Array.isArray(c) ? c : void 0, b = (p = p || (I ? void 0 : c)) ? p.allKeys : void 0;\n return this._trans(\"readwrite\", function(R) {\n var L = E.schema.primKey, M = L.auto, L = L.keyPath;\n if (L && I)\n throw new pe.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (I && I.length !== a.length)\n throw new pe.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var _ = a.length, L = L && M ? a.map(xi(L)) : a;\n return E.core.mutate({ trans: R, type: \"add\", keys: I, values: L, wantResults: b }).then(function(k) {\n var D = k.numFailures, V = k.results, N = k.lastResult, k = k.failures;\n if (D === 0)\n return b ? V : N;\n throw new Zt(\"\".concat(E.name, \".bulkAdd(): \").concat(D, \" of \").concat(_, \" operations failed\"), k);\n });\n });\n }, Be.prototype.bulkPut = function(a, c, p) {\n var E = this, I = Array.isArray(c) ? c : void 0, b = (p = p || (I ? void 0 : c)) ? p.allKeys : void 0;\n return this._trans(\"readwrite\", function(R) {\n var L = E.schema.primKey, M = L.auto, L = L.keyPath;\n if (L && I)\n throw new pe.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (I && I.length !== a.length)\n throw new pe.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var _ = a.length, L = L && M ? a.map(xi(L)) : a;\n return E.core.mutate({ trans: R, type: \"put\", keys: I, values: L, wantResults: b }).then(function(k) {\n var D = k.numFailures, V = k.results, N = k.lastResult, k = k.failures;\n if (D === 0)\n return b ? V : N;\n throw new Zt(\"\".concat(E.name, \".bulkPut(): \").concat(D, \" of \").concat(_, \" operations failed\"), k);\n });\n });\n }, Be.prototype.bulkUpdate = function(a) {\n var c = this, p = this.core, E = a.map(function(R) {\n return R.key;\n }), I = a.map(function(R) {\n return R.changes;\n }), b = [];\n return this._trans(\"readwrite\", function(R) {\n return p.getMany({ trans: R, keys: E, cache: \"clone\" }).then(function(M) {\n var _ = [], L = [];\n a.forEach(function(D, V) {\n var N = D.key, k = D.changes, G = M[V];\n if (G) {\n for (var B = 0, W = Object.keys(k); B < W.length; B++) {\n var j = W[B], X = k[j];\n if (j === c.schema.primKey.keyPath) {\n if (Me(X, N) !== 0)\n throw new pe.Constraint(\"Cannot update primary key in bulkUpdate()\");\n } else\n Y(G, j, X);\n }\n b.push(V), _.push(N), L.push(G);\n }\n });\n var z = _.length;\n return p.mutate({ trans: R, type: \"put\", keys: _, values: L, updates: { keys: E, changeSpecs: I } }).then(function(D) {\n var V = D.numFailures, N = D.failures;\n if (V === 0)\n return z;\n for (var k = 0, G = Object.keys(N); k < G.length; k++) {\n var B, W = G[k], j = b[Number(W)];\n j != null && (B = N[W], delete N[W], N[j] = B);\n }\n throw new Zt(\"\".concat(c.name, \".bulkUpdate(): \").concat(V, \" of \").concat(z, \" operations failed\"), N);\n });\n });\n });\n }, Be.prototype.bulkDelete = function(a) {\n var c = this, p = a.length;\n return this._trans(\"readwrite\", function(E) {\n return c.core.mutate({ trans: E, type: \"delete\", keys: a });\n }).then(function(R) {\n var I = R.numFailures, b = R.lastResult, R = R.failures;\n if (I === 0)\n return b;\n throw new Zt(\"\".concat(c.name, \".bulkDelete(): \").concat(I, \" of \").concat(p, \" operations failed\"), R);\n });\n }, Be);\n function Be() {\n }\n function Rs(a) {\n function c(R, M) {\n if (M) {\n for (var _ = arguments.length, L = new Array(_ - 1); --_; )\n L[_ - 1] = arguments[_];\n return p[R].subscribe.apply(null, L), a;\n }\n if (typeof R == \"string\")\n return p[R];\n }\n var p = {};\n c.addEventType = b;\n for (var E = 1, I = arguments.length; E < I; ++E)\n b(arguments[E]);\n return c;\n function b(R, M, _) {\n if (typeof R != \"object\") {\n var L;\n M = M || Ph;\n var z = { subscribers: [], fire: _ = _ || Oe, subscribe: function(D) {\n z.subscribers.indexOf(D) === -1 && (z.subscribers.push(D), z.fire = M(z.fire, D));\n }, unsubscribe: function(D) {\n z.subscribers = z.subscribers.filter(function(V) {\n return V !== D;\n }), z.fire = z.subscribers.reduce(M, _);\n } };\n return p[R] = c[R] = z;\n }\n r(L = R).forEach(function(D) {\n var V = L[D];\n if (o(V))\n b(D, L[D][0], L[D][1]);\n else {\n if (V !== \"asap\")\n throw new pe.InvalidArgument(\"Invalid event config\");\n var N = b(D, _t, function() {\n for (var k = arguments.length, G = new Array(k); k--; )\n G[k] = arguments[k];\n N.subscribers.forEach(function(B) {\n O(function() {\n B.apply(null, G);\n });\n });\n });\n }\n });\n }\n }\n function Fs(a, c) {\n return y(c).from({ prototype: a }), c;\n }\n function Kn(a, c) {\n return !(a.filter || a.algorithm || a.or) && (c ? a.justLimit : !a.replayFilter);\n }\n function co(a, c) {\n a.filter = An(a.filter, c);\n }\n function ho(a, c, p) {\n var E = a.replayFilter;\n a.replayFilter = E ? function() {\n return An(E(), c());\n } : c, a.justLimit = p && !E;\n }\n function Si(a, c) {\n if (a.isPrimKey)\n return c.primaryKey;\n var p = c.getIndexByKeyPath(a.index);\n if (!p)\n throw new pe.Schema(\"KeyPath \" + a.index + \" on object store \" + c.name + \" is not indexed\");\n return p;\n }\n function qa(a, c, p) {\n var E = Si(a, c.schema);\n return c.openCursor({ trans: p, values: !a.keysOnly, reverse: a.dir === \"prev\", unique: !!a.unique, query: { index: E, range: a.range } });\n }\n function Ai(a, c, p, E) {\n var I = a.replayFilter ? An(a.filter, a.replayFilter()) : a.filter;\n if (a.or) {\n var b = {}, R = function(M, _, L) {\n var z, D;\n I && !I(_, L, function(V) {\n return _.stop(V);\n }, function(V) {\n return _.fail(V);\n }) || ((D = \"\" + (z = _.primaryKey)) == \"[object ArrayBuffer]\" && (D = \"\" + new Uint8Array(z)), m(b, D) || (b[D] = !0, c(M, _, L)));\n };\n return Promise.all([a.or._iterate(R, p), Ja(qa(a, E, p), a.algorithm, R, !a.keysOnly && a.valueMapper)]);\n }\n return Ja(qa(a, E, p), An(a.algorithm, I), c, !a.keysOnly && a.valueMapper);\n }\n function Ja(a, c, p, E) {\n var I = Ve(E ? function(b, R, M) {\n return p(E(b), R, M);\n } : p);\n return a.then(function(b) {\n if (b)\n return b.start(function() {\n var R = function() {\n return b.continue();\n };\n c && !c(b, function(M) {\n return R = M;\n }, function(M) {\n b.stop(M), R = Oe;\n }, function(M) {\n b.fail(M), R = Oe;\n }) || I(b.value, b, function(M) {\n return R = M;\n }), R();\n });\n });\n }\n var Jt = Symbol(), Ps = ($a.prototype.execute = function(a) {\n if (this.add !== void 0) {\n var c = this.add;\n if (o(c))\n return s(s([], o(a) ? a : [], !0), c).sort();\n if (typeof c == \"number\")\n return (Number(a) || 0) + c;\n if (typeof c == \"bigint\")\n try {\n return BigInt(a) + c;\n } catch {\n return BigInt(0) + c;\n }\n throw new TypeError(\"Invalid term \".concat(c));\n }\n if (this.remove !== void 0) {\n var p = this.remove;\n if (o(p))\n return o(a) ? a.filter(function(E) {\n return !p.includes(E);\n }).sort() : [];\n if (typeof p == \"number\")\n return Number(a) - p;\n if (typeof p == \"bigint\")\n try {\n return BigInt(a) - p;\n } catch {\n return BigInt(0) - p;\n }\n throw new TypeError(\"Invalid subtrahend \".concat(p));\n }\n return c = (c = this.replacePrefix) === null || c === void 0 ? void 0 : c[0], c && typeof a == \"string\" && a.startsWith(c) ? this.replacePrefix[1] + a.substring(c.length) : a;\n }, $a);\n function $a(a) {\n Object.assign(this, a);\n }\n var _h = (Fe.prototype._read = function(a, c) {\n var p = this._ctx;\n return p.error ? p.table._trans(null, Xe.bind(null, p.error)) : p.table._trans(\"readonly\", a).then(c);\n }, Fe.prototype._write = function(a) {\n var c = this._ctx;\n return c.error ? c.table._trans(null, Xe.bind(null, c.error)) : c.table._trans(\"readwrite\", a, \"locked\");\n }, Fe.prototype._addAlgorithm = function(a) {\n var c = this._ctx;\n c.algorithm = An(c.algorithm, a);\n }, Fe.prototype._iterate = function(a, c) {\n return Ai(this._ctx, a, c, this._ctx.table.core);\n }, Fe.prototype.clone = function(a) {\n var c = Object.create(this.constructor.prototype), p = Object.create(this._ctx);\n return a && l(p, a), c._ctx = p, c;\n }, Fe.prototype.raw = function() {\n return this._ctx.valueMapper = null, this;\n }, Fe.prototype.each = function(a) {\n var c = this._ctx;\n return this._read(function(p) {\n return Ai(c, a, p, c.table.core);\n });\n }, Fe.prototype.count = function(a) {\n var c = this;\n return this._read(function(p) {\n var E = c._ctx, I = E.table.core;\n if (Kn(E, !0))\n return I.count({ trans: p, query: { index: Si(E, I.schema), range: E.range } }).then(function(R) {\n return Math.min(R, E.limit);\n });\n var b = 0;\n return Ai(E, function() {\n return ++b, !1;\n }, p, I).then(function() {\n return b;\n });\n }).then(a);\n }, Fe.prototype.sortBy = function(a, c) {\n var p = a.split(\".\").reverse(), E = p[0], I = p.length - 1;\n function b(_, L) {\n return L ? b(_[p[L]], L - 1) : _[E];\n }\n var R = this._ctx.dir === \"next\" ? 1 : -1;\n function M(_, L) {\n return _ = b(_, I), L = b(L, I), _ < L ? -R : L < _ ? R : 0;\n }\n return this.toArray(function(_) {\n return _.sort(M);\n }).then(c);\n }, Fe.prototype.toArray = function(a) {\n var c = this;\n return this._read(function(p) {\n var E = c._ctx;\n if (E.dir === \"next\" && Kn(E, !0) && 0 < E.limit) {\n var I = E.valueMapper, b = Si(E, E.table.core.schema);\n return E.table.core.query({ trans: p, limit: E.limit, values: !0, query: { index: b, range: E.range } }).then(function(M) {\n return M = M.result, I ? M.map(I) : M;\n });\n }\n var R = [];\n return Ai(E, function(M) {\n return R.push(M);\n }, p, E.table.core).then(function() {\n return R;\n });\n }, a);\n }, Fe.prototype.offset = function(a) {\n var c = this._ctx;\n return a <= 0 || (c.offset += a, Kn(c) ? ho(c, function() {\n var p = a;\n return function(E, I) {\n return p === 0 || (p === 1 ? --p : I(function() {\n E.advance(p), p = 0;\n }), !1);\n };\n }) : ho(c, function() {\n var p = a;\n return function() {\n return --p < 0;\n };\n })), this;\n }, Fe.prototype.limit = function(a) {\n return this._ctx.limit = Math.min(this._ctx.limit, a), ho(this._ctx, function() {\n var c = a;\n return function(p, E, I) {\n return --c <= 0 && E(I), 0 <= c;\n };\n }, !0), this;\n }, Fe.prototype.until = function(a, c) {\n return co(this._ctx, function(p, E, I) {\n return !a(p.value) || (E(I), c);\n }), this;\n }, Fe.prototype.first = function(a) {\n return this.limit(1).toArray(function(c) {\n return c[0];\n }).then(a);\n }, Fe.prototype.last = function(a) {\n return this.reverse().first(a);\n }, Fe.prototype.filter = function(a) {\n var c;\n return co(this._ctx, function(p) {\n return a(p.value);\n }), (c = this._ctx).isMatch = An(c.isMatch, a), this;\n }, Fe.prototype.and = function(a) {\n return this.filter(a);\n }, Fe.prototype.or = function(a) {\n return new this.db.WhereClause(this._ctx.table, a, this);\n }, Fe.prototype.reverse = function() {\n return this._ctx.dir = this._ctx.dir === \"prev\" ? \"next\" : \"prev\", this._ondirectionchange && this._ondirectionchange(this._ctx.dir), this;\n }, Fe.prototype.desc = function() {\n return this.reverse();\n }, Fe.prototype.eachKey = function(a) {\n var c = this._ctx;\n return c.keysOnly = !c.isMatch, this.each(function(p, E) {\n a(E.key, E);\n });\n }, Fe.prototype.eachUniqueKey = function(a) {\n return this._ctx.unique = \"unique\", this.eachKey(a);\n }, Fe.prototype.eachPrimaryKey = function(a) {\n var c = this._ctx;\n return c.keysOnly = !c.isMatch, this.each(function(p, E) {\n a(E.primaryKey, E);\n });\n }, Fe.prototype.keys = function(a) {\n var c = this._ctx;\n c.keysOnly = !c.isMatch;\n var p = [];\n return this.each(function(E, I) {\n p.push(I.key);\n }).then(function() {\n return p;\n }).then(a);\n }, Fe.prototype.primaryKeys = function(a) {\n var c = this._ctx;\n if (c.dir === \"next\" && Kn(c, !0) && 0 < c.limit)\n return this._read(function(E) {\n var I = Si(c, c.table.core.schema);\n return c.table.core.query({ trans: E, values: !1, limit: c.limit, query: { index: I, range: c.range } });\n }).then(function(E) {\n return E.result;\n }).then(a);\n c.keysOnly = !c.isMatch;\n var p = [];\n return this.each(function(E, I) {\n p.push(I.primaryKey);\n }).then(function() {\n return p;\n }).then(a);\n }, Fe.prototype.uniqueKeys = function(a) {\n return this._ctx.unique = \"unique\", this.keys(a);\n }, Fe.prototype.firstKey = function(a) {\n return this.limit(1).keys(function(c) {\n return c[0];\n }).then(a);\n }, Fe.prototype.lastKey = function(a) {\n return this.reverse().firstKey(a);\n }, Fe.prototype.distinct = function() {\n var a = this._ctx, a = a.index && a.table.schema.idxByName[a.index];\n if (!a || !a.multi)\n return this;\n var c = {};\n return co(this._ctx, function(I) {\n var E = I.primaryKey.toString(), I = m(c, E);\n return c[E] = !0, !I;\n }), this;\n }, Fe.prototype.modify = function(a) {\n var c = this, p = this._ctx;\n return this._write(function(E) {\n var I, b, R;\n R = typeof a == \"function\" ? a : (I = r(a), b = I.length, function(B) {\n for (var W = !1, j = 0; j < b; ++j) {\n var X = I[j], Q = a[X], ee = U(B, X);\n Q instanceof Ps ? (Y(B, X, Q.execute(ee)), W = !0) : ee !== Q && (Y(B, X, Q), W = !0);\n }\n return W;\n });\n function M(B, X) {\n var j = X.failures, X = X.numFailures;\n k += B - X;\n for (var Q = 0, ee = r(j); Q < ee.length; Q++) {\n var ae = ee[Q];\n N.push(j[ae]);\n }\n }\n var _ = p.table.core, L = _.schema.primaryKey, z = L.outbound, D = L.extractKey, V = c.db._options.modifyChunkSize || 200, N = [], k = 0, G = [];\n return c.clone().primaryKeys().then(function(B) {\n function W(X) {\n var Q = Math.min(V, B.length - X);\n return _.getMany({ trans: E, keys: B.slice(X, X + Q), cache: \"immutable\" }).then(function(ee) {\n for (var ae = [], ie = [], oe = z ? [] : null, le = [], re = 0; re < Q; ++re) {\n var Ce = ee[re], Te = { value: se(Ce), primKey: B[X + re] };\n R.call(Te, Te.value, Te) !== !1 && (Te.value == null ? le.push(B[X + re]) : z || Me(D(Ce), D(Te.value)) === 0 ? (ie.push(Te.value), z && oe.push(B[X + re])) : (le.push(B[X + re]), ae.push(Te.value)));\n }\n return Promise.resolve(0 < ae.length && _.mutate({ trans: E, type: \"add\", values: ae }).then(function(Ae) {\n for (var xe in Ae.failures)\n le.splice(parseInt(xe), 1);\n M(ae.length, Ae);\n })).then(function() {\n return (0 < ie.length || j && typeof a == \"object\") && _.mutate({ trans: E, type: \"put\", keys: oe, values: ie, criteria: j, changeSpec: typeof a != \"function\" && a, isAdditionalChunk: 0 < X }).then(function(Ae) {\n return M(ie.length, Ae);\n });\n }).then(function() {\n return (0 < le.length || j && a === uo) && _.mutate({ trans: E, type: \"delete\", keys: le, criteria: j, isAdditionalChunk: 0 < X }).then(function(Ae) {\n return M(le.length, Ae);\n });\n }).then(function() {\n return B.length > X + Q && W(X + V);\n });\n });\n }\n var j = Kn(p) && p.limit === 1 / 0 && (typeof a != \"function\" || a === uo) && { index: p.index, range: p.range };\n return W(0).then(function() {\n if (0 < N.length)\n throw new Cn(\"Error modifying one or more objects\", N, k, G);\n return B.length;\n });\n });\n });\n }, Fe.prototype.delete = function() {\n var a = this._ctx, c = a.range;\n return Kn(a) && (a.isPrimKey || c.type === 3) ? this._write(function(p) {\n var E = a.table.core.schema.primaryKey, I = c;\n return a.table.core.count({ trans: p, query: { index: E, range: I } }).then(function(b) {\n return a.table.core.mutate({ trans: p, type: \"deleteRange\", range: I }).then(function(R) {\n var M = R.failures;\n if (R.lastResult, R.results, R = R.numFailures, R)\n throw new Cn(\"Could not delete some values\", Object.keys(M).map(function(_) {\n return M[_];\n }), b - R);\n return b - R;\n });\n });\n }) : this.modify(uo);\n }, Fe);\n function Fe() {\n }\n var uo = function(a, c) {\n return c.value = null;\n };\n function Uh(a, c) {\n return a < c ? -1 : a === c ? 0 : 1;\n }\n function Bh(a, c) {\n return c < a ? -1 : a === c ? 0 : 1;\n }\n function mt(a, c, p) {\n return a = a instanceof tl ? new a.Collection(a) : a, a._ctx.error = new (p || TypeError)(c), a;\n }\n function jn(a) {\n return new a.Collection(a, function() {\n return el(\"\");\n }).limit(0);\n }\n function Ri(a, c, p, E) {\n var I, b, R, M, _, L, z, D = p.length;\n if (!p.every(function(k) {\n return typeof k == \"string\";\n }))\n return mt(a, Wa);\n function V(k) {\n I = k === \"next\" ? function(B) {\n return B.toUpperCase();\n } : function(B) {\n return B.toLowerCase();\n }, b = k === \"next\" ? function(B) {\n return B.toLowerCase();\n } : function(B) {\n return B.toUpperCase();\n }, R = k === \"next\" ? Uh : Bh;\n var G = p.map(function(B) {\n return { lower: b(B), upper: I(B) };\n }).sort(function(B, W) {\n return R(B.lower, W.lower);\n });\n M = G.map(function(B) {\n return B.upper;\n }), _ = G.map(function(B) {\n return B.lower;\n }), z = (L = k) === \"next\" ? \"\" : E;\n }\n V(\"next\"), a = new a.Collection(a, function() {\n return hn(M[0], _[D - 1] + E);\n }), a._ondirectionchange = function(k) {\n V(k);\n };\n var N = 0;\n return a._addAlgorithm(function(k, G, B) {\n var W = k.key;\n if (typeof W != \"string\")\n return !1;\n var j = b(W);\n if (c(j, _, N))\n return !0;\n for (var X = null, Q = N; Q < D; ++Q) {\n var ee = function(ae, ie, oe, le, re, Ce) {\n for (var Te = Math.min(ae.length, le.length), Ae = -1, xe = 0; xe < Te; ++xe) {\n var Rt = ie[xe];\n if (Rt !== le[xe])\n return re(ae[xe], oe[xe]) < 0 ? ae.substr(0, xe) + oe[xe] + oe.substr(xe + 1) : re(ae[xe], le[xe]) < 0 ? ae.substr(0, xe) + le[xe] + oe.substr(xe + 1) : 0 <= Ae ? ae.substr(0, Ae) + ie[Ae] + oe.substr(Ae + 1) : null;\n re(ae[xe], Rt) < 0 && (Ae = xe);\n }\n return Te < le.length && Ce === \"next\" ? ae + oe.substr(ae.length) : Te < ae.length && Ce === \"prev\" ? ae.substr(0, oe.length) : Ae < 0 ? null : ae.substr(0, Ae) + le[Ae] + oe.substr(Ae + 1);\n }(W, j, M[Q], _[Q], R, L);\n ee === null && X === null ? N = Q + 1 : (X === null || 0 < R(X, ee)) && (X = ee);\n }\n return G(X !== null ? function() {\n k.continue(X + z);\n } : B), !1;\n }), a;\n }\n function hn(a, c, p, E) {\n return { type: 2, lower: a, upper: c, lowerOpen: p, upperOpen: E };\n }\n function el(a) {\n return { type: 1, lower: a, upper: a };\n }\n var tl = (Object.defineProperty(Je.prototype, \"Collection\", { get: function() {\n return this._ctx.table.db.Collection;\n }, enumerable: !1, configurable: !0 }), Je.prototype.between = function(a, c, p, E) {\n p = p !== !1, E = E === !0;\n try {\n return 0 < this._cmp(a, c) || this._cmp(a, c) === 0 && (p || E) && (!p || !E) ? jn(this) : new this.Collection(this, function() {\n return hn(a, c, !p, !E);\n });\n } catch {\n return mt(this, qt);\n }\n }, Je.prototype.equals = function(a) {\n return a == null ? mt(this, qt) : new this.Collection(this, function() {\n return el(a);\n });\n }, Je.prototype.above = function(a) {\n return a == null ? mt(this, qt) : new this.Collection(this, function() {\n return hn(a, void 0, !0);\n });\n }, Je.prototype.aboveOrEqual = function(a) {\n return a == null ? mt(this, qt) : new this.Collection(this, function() {\n return hn(a, void 0, !1);\n });\n }, Je.prototype.below = function(a) {\n return a == null ? mt(this, qt) : new this.Collection(this, function() {\n return hn(void 0, a, !1, !0);\n });\n }, Je.prototype.belowOrEqual = function(a) {\n return a == null ? mt(this, qt) : new this.Collection(this, function() {\n return hn(void 0, a);\n });\n }, Je.prototype.startsWith = function(a) {\n return typeof a != \"string\" ? mt(this, Wa) : this.between(a, a + Sn, !0, !0);\n }, Je.prototype.startsWithIgnoreCase = function(a) {\n return a === \"\" ? this.startsWith(a) : Ri(this, function(c, p) {\n return c.indexOf(p[0]) === 0;\n }, [a], Sn);\n }, Je.prototype.equalsIgnoreCase = function(a) {\n return Ri(this, function(c, p) {\n return c === p[0];\n }, [a], \"\");\n }, Je.prototype.anyOfIgnoreCase = function() {\n var a = we.apply(Le, arguments);\n return a.length === 0 ? jn(this) : Ri(this, function(c, p) {\n return p.indexOf(c) !== -1;\n }, a, \"\");\n }, Je.prototype.startsWithAnyOfIgnoreCase = function() {\n var a = we.apply(Le, arguments);\n return a.length === 0 ? jn(this) : Ri(this, function(c, p) {\n return p.some(function(E) {\n return c.indexOf(E) === 0;\n });\n }, a, Sn);\n }, Je.prototype.anyOf = function() {\n var a = this, c = we.apply(Le, arguments), p = this._cmp;\n try {\n c.sort(p);\n } catch {\n return mt(this, qt);\n }\n if (c.length === 0)\n return jn(this);\n var E = new this.Collection(this, function() {\n return hn(c[0], c[c.length - 1]);\n });\n E._ondirectionchange = function(b) {\n p = b === \"next\" ? a._ascending : a._descending, c.sort(p);\n };\n var I = 0;\n return E._addAlgorithm(function(b, R, M) {\n for (var _ = b.key; 0 < p(_, c[I]); )\n if (++I === c.length)\n return R(M), !1;\n return p(_, c[I]) === 0 || (R(function() {\n b.continue(c[I]);\n }), !1);\n }), E;\n }, Je.prototype.notEqual = function(a) {\n return this.inAnyRange([[-1 / 0, a], [a, this.db._maxKey]], { includeLowers: !1, includeUppers: !1 });\n }, Je.prototype.noneOf = function() {\n var a = we.apply(Le, arguments);\n if (a.length === 0)\n return new this.Collection(this);\n try {\n a.sort(this._ascending);\n } catch {\n return mt(this, qt);\n }\n var c = a.reduce(function(p, E) {\n return p ? p.concat([[p[p.length - 1][1], E]]) : [[-1 / 0, E]];\n }, null);\n return c.push([a[a.length - 1], this.db._maxKey]), this.inAnyRange(c, { includeLowers: !1, includeUppers: !1 });\n }, Je.prototype.inAnyRange = function(W, c) {\n var p = this, E = this._cmp, I = this._ascending, b = this._descending, R = this._min, M = this._max;\n if (W.length === 0)\n return jn(this);\n if (!W.every(function(j) {\n return j[0] !== void 0 && j[1] !== void 0 && I(j[0], j[1]) <= 0;\n }))\n return mt(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", pe.InvalidArgument);\n var _ = !c || c.includeLowers !== !1, L = c && c.includeUppers === !0, z, D = I;\n function V(j, X) {\n return D(j[0], X[0]);\n }\n try {\n (z = W.reduce(function(j, X) {\n for (var Q = 0, ee = j.length; Q < ee; ++Q) {\n var ae = j[Q];\n if (E(X[0], ae[1]) < 0 && 0 < E(X[1], ae[0])) {\n ae[0] = R(ae[0], X[0]), ae[1] = M(ae[1], X[1]);\n break;\n }\n }\n return Q === ee && j.push(X), j;\n }, [])).sort(V);\n } catch {\n return mt(this, qt);\n }\n var N = 0, k = L ? function(j) {\n return 0 < I(j, z[N][1]);\n } : function(j) {\n return 0 <= I(j, z[N][1]);\n }, G = _ ? function(j) {\n return 0 < b(j, z[N][0]);\n } : function(j) {\n return 0 <= b(j, z[N][0]);\n }, B = k, W = new this.Collection(this, function() {\n return hn(z[0][0], z[z.length - 1][1], !_, !L);\n });\n return W._ondirectionchange = function(j) {\n D = j === \"next\" ? (B = k, I) : (B = G, b), z.sort(V);\n }, W._addAlgorithm(function(j, X, Q) {\n for (var ee, ae = j.key; B(ae); )\n if (++N === z.length)\n return X(Q), !1;\n return !k(ee = ae) && !G(ee) || (p._cmp(ae, z[N][1]) === 0 || p._cmp(ae, z[N][0]) === 0 || X(function() {\n D === I ? j.continue(z[N][0]) : j.continue(z[N][1]);\n }), !1);\n }), W;\n }, Je.prototype.startsWithAnyOf = function() {\n var a = we.apply(Le, arguments);\n return a.every(function(c) {\n return typeof c == \"string\";\n }) ? a.length === 0 ? jn(this) : this.inAnyRange(a.map(function(c) {\n return [c, c + Sn];\n })) : mt(this, \"startsWithAnyOf() only works with strings\");\n }, Je);\n function Je() {\n }\n function Bt(a) {\n return Ve(function(c) {\n return Ms(c), a(c.target.error), !1;\n });\n }\n function Ms(a) {\n a.stopPropagation && a.stopPropagation(), a.preventDefault && a.preventDefault();\n }\n var Os = \"storagemutated\", fo = \"x-storagemutated-1\", un = Rs(null, Os), kh = (kt.prototype._lock = function() {\n return C(!ge.global), ++this._reculock, this._reculock !== 1 || ge.global || (ge.lockOwnerFor = this), this;\n }, kt.prototype._unlock = function() {\n if (C(!ge.global), --this._reculock == 0)\n for (ge.global || (ge.lockOwnerFor = null); 0 < this._blockedFuncs.length && !this._locked(); ) {\n var a = this._blockedFuncs.shift();\n try {\n xn(a[1], a[0]);\n } catch {\n }\n }\n return this;\n }, kt.prototype._locked = function() {\n return this._reculock && ge.lockOwnerFor !== this;\n }, kt.prototype.create = function(a) {\n var c = this;\n if (!this.mode)\n return this;\n var p = this.db.idbdb, E = this.db._state.dbOpenError;\n if (C(!this.idbtrans), !a && !p)\n switch (E && E.name) {\n case \"DatabaseClosedError\":\n throw new pe.DatabaseClosed(E);\n case \"MissingAPIError\":\n throw new pe.MissingAPI(E.message, E);\n default:\n throw new pe.OpenFailed(E);\n }\n if (!this.active)\n throw new pe.TransactionInactive();\n return C(this._completion._state === null), (a = this.idbtrans = a || (this.db.core || p).transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })).onerror = Ve(function(I) {\n Ms(I), c._reject(a.error);\n }), a.onabort = Ve(function(I) {\n Ms(I), c.active && c._reject(new pe.Abort(a.error)), c.active = !1, c.on(\"abort\").fire(I);\n }), a.oncomplete = Ve(function() {\n c.active = !1, c._resolve(), \"mutatedParts\" in a && un.storagemutated.fire(a.mutatedParts);\n }), this;\n }, kt.prototype._promise = function(a, c, p) {\n var E = this;\n if (a === \"readwrite\" && this.mode !== \"readwrite\")\n return Xe(new pe.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return Xe(new pe.TransactionInactive());\n if (this._locked())\n return new ce(function(b, R) {\n E._blockedFuncs.push([function() {\n E._promise(a, c, p).then(b, R);\n }, ge]);\n });\n if (p)\n return an(function() {\n var b = new ce(function(R, M) {\n E._lock();\n var _ = c(R, M, E);\n _ && _.then && _.then(R, M);\n });\n return b.finally(function() {\n return E._unlock();\n }), b._lib = !0, b;\n });\n var I = new ce(function(b, R) {\n var M = c(b, R, E);\n M && M.then && M.then(b, R);\n });\n return I._lib = !0, I;\n }, kt.prototype._root = function() {\n return this.parent ? this.parent._root() : this;\n }, kt.prototype.waitFor = function(a) {\n var c, p = this._root(), E = ce.resolve(a);\n p._waitingFor ? p._waitingFor = p._waitingFor.then(function() {\n return E;\n }) : (p._waitingFor = E, p._waitingQueue = [], c = p.idbtrans.objectStore(p.storeNames[0]), function b() {\n for (++p._spinCount; p._waitingQueue.length; )\n p._waitingQueue.shift()();\n p._waitingFor && (c.get(-1 / 0).onsuccess = b);\n }());\n var I = p._waitingFor;\n return new ce(function(b, R) {\n E.then(function(M) {\n return p._waitingQueue.push(Ve(b.bind(null, M)));\n }, function(M) {\n return p._waitingQueue.push(Ve(R.bind(null, M)));\n }).finally(function() {\n p._waitingFor === I && (p._waitingFor = null);\n });\n });\n }, kt.prototype.abort = function() {\n this.active && (this.active = !1, this.idbtrans && this.idbtrans.abort(), this._reject(new pe.Abort()));\n }, kt.prototype.table = function(a) {\n var c = this._memoizedTables || (this._memoizedTables = {});\n if (m(c, a))\n return c[a];\n var p = this.schema[a];\n if (!p)\n throw new pe.NotFound(\"Table \" + a + \" not part of transaction\");\n return p = new this.db.Table(a, p, this), p.core = this.db.core.table(a), c[a] = p;\n }, kt);\n function kt() {\n }\n function po(a, c, p, E, I, b, R) {\n return { name: a, keyPath: c, unique: p, multi: E, auto: I, compound: b, src: (p && !R ? \"&\" : \"\") + (E ? \"*\" : \"\") + (I ? \"++\" : \"\") + nl(c) };\n }\n function nl(a) {\n return typeof a == \"string\" ? a : a ? \"[\" + [].join.call(a, \"+\") + \"]\" : \"\";\n }\n function mo(a, c, p) {\n return { name: a, primKey: c, indexes: p, mappedClass: null, idxByName: (E = function(I) {\n return [I.name, I];\n }, p.reduce(function(I, b, R) {\n return R = E(b, R), R && (I[R[0]] = R[1]), I;\n }, {})) };\n var E;\n }\n var Ds = function(a) {\n try {\n return a.only([[]]), Ds = function() {\n return [[]];\n }, [[]];\n } catch {\n return Ds = function() {\n return Sn;\n }, Sn;\n }\n };\n function go(a) {\n return a == null ? function() {\n } : typeof a == \"string\" ? (c = a).split(\".\").length === 1 ? function(p) {\n return p[c];\n } : function(p) {\n return U(p, c);\n } : function(p) {\n return U(p, a);\n };\n var c;\n }\n function sl(a) {\n return [].slice.call(a);\n }\n var zh = 0;\n function Ls(a) {\n return a == null ? \":id\" : typeof a == \"string\" ? a : \"[\".concat(a.join(\"+\"), \"]\");\n }\n function Vh(a, c, _) {\n function E(B) {\n if (B.type === 3)\n return null;\n if (B.type === 4)\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var N = B.lower, k = B.upper, G = B.lowerOpen, B = B.upperOpen;\n return N === void 0 ? k === void 0 ? null : c.upperBound(k, !!B) : k === void 0 ? c.lowerBound(N, !!G) : c.bound(N, k, !!G, !!B);\n }\n function I(V) {\n var N, k = V.name;\n return { name: k, schema: V, mutate: function(G) {\n var B = G.trans, W = G.type, j = G.keys, X = G.values, Q = G.range;\n return new Promise(function(ee, ae) {\n ee = Ve(ee);\n var ie = B.objectStore(k), oe = ie.keyPath == null, le = W === \"put\" || W === \"add\";\n if (!le && W !== \"delete\" && W !== \"deleteRange\")\n throw new Error(\"Invalid operation type: \" + W);\n var re, Ce = (j || X || { length: 1 }).length;\n if (j && X && j.length !== X.length)\n throw new Error(\"Given keys array must have same length as given values array.\");\n if (Ce === 0)\n return ee({ numFailures: 0, failures: {}, results: [], lastResult: void 0 });\n function Te(lt) {\n ++Rt, Ms(lt);\n }\n var Ae = [], xe = [], Rt = 0;\n if (W === \"deleteRange\") {\n if (Q.type === 4)\n return ee({ numFailures: Rt, failures: xe, results: [], lastResult: void 0 });\n Q.type === 3 ? Ae.push(re = ie.clear()) : Ae.push(re = ie.delete(E(Q)));\n } else {\n var oe = le ? oe ? [X, j] : [X, null] : [j, null], Se = oe[0], it = oe[1];\n if (le)\n for (var rt = 0; rt < Ce; ++rt)\n Ae.push(re = it && it[rt] !== void 0 ? ie[W](Se[rt], it[rt]) : ie[W](Se[rt])), re.onerror = Te;\n else\n for (rt = 0; rt < Ce; ++rt)\n Ae.push(re = ie[W](Se[rt])), re.onerror = Te;\n }\n function Vi(lt) {\n lt = lt.target.result, Ae.forEach(function(Pn, No) {\n return Pn.error != null && (xe[No] = Pn.error);\n }), ee({ numFailures: Rt, failures: xe, results: W === \"delete\" ? j : Ae.map(function(Pn) {\n return Pn.result;\n }), lastResult: lt });\n }\n re.onerror = function(lt) {\n Te(lt), Vi(lt);\n }, re.onsuccess = Vi;\n });\n }, getMany: function(G) {\n var B = G.trans, W = G.keys;\n return new Promise(function(j, X) {\n j = Ve(j);\n for (var Q, ee = B.objectStore(k), ae = W.length, ie = new Array(ae), oe = 0, le = 0, re = function(Ae) {\n Ae = Ae.target, ie[Ae._pos] = Ae.result, ++le === oe && j(ie);\n }, Ce = Bt(X), Te = 0; Te < ae; ++Te)\n W[Te] != null && ((Q = ee.get(W[Te]))._pos = Te, Q.onsuccess = re, Q.onerror = Ce, ++oe);\n oe === 0 && j(ie);\n });\n }, get: function(G) {\n var B = G.trans, W = G.key;\n return new Promise(function(j, X) {\n j = Ve(j);\n var Q = B.objectStore(k).get(W);\n Q.onsuccess = function(ee) {\n return j(ee.target.result);\n }, Q.onerror = Bt(X);\n });\n }, query: (N = L, function(G) {\n return new Promise(function(B, W) {\n B = Ve(B);\n var j, X, Q, oe = G.trans, ee = G.values, ae = G.limit, re = G.query, ie = ae === 1 / 0 ? void 0 : ae, le = re.index, re = re.range, oe = oe.objectStore(k), le = le.isPrimaryKey ? oe : oe.index(le.name), re = E(re);\n if (ae === 0)\n return B({ result: [] });\n N ? ((ie = ee ? le.getAll(re, ie) : le.getAllKeys(re, ie)).onsuccess = function(Ce) {\n return B({ result: Ce.target.result });\n }, ie.onerror = Bt(W)) : (j = 0, X = !ee && \"openKeyCursor\" in le ? le.openKeyCursor(re) : le.openCursor(re), Q = [], X.onsuccess = function(Ce) {\n var Te = X.result;\n return Te ? (Q.push(ee ? Te.value : Te.primaryKey), ++j === ae ? B({ result: Q }) : void Te.continue()) : B({ result: Q });\n }, X.onerror = Bt(W));\n });\n }), openCursor: function(G) {\n var B = G.trans, W = G.values, j = G.query, X = G.reverse, Q = G.unique;\n return new Promise(function(ee, ae) {\n ee = Ve(ee);\n var le = j.index, ie = j.range, oe = B.objectStore(k), oe = le.isPrimaryKey ? oe : oe.index(le.name), le = X ? Q ? \"prevunique\" : \"prev\" : Q ? \"nextunique\" : \"next\", re = !W && \"openKeyCursor\" in oe ? oe.openKeyCursor(E(ie), le) : oe.openCursor(E(ie), le);\n re.onerror = Bt(ae), re.onsuccess = Ve(function(Ce) {\n var Te, Ae, xe, Rt, Se = re.result;\n Se ? (Se.___id = ++zh, Se.done = !1, Te = Se.continue.bind(Se), Ae = (Ae = Se.continuePrimaryKey) && Ae.bind(Se), xe = Se.advance.bind(Se), Rt = function() {\n throw new Error(\"Cursor not stopped\");\n }, Se.trans = B, Se.stop = Se.continue = Se.continuePrimaryKey = Se.advance = function() {\n throw new Error(\"Cursor not started\");\n }, Se.fail = Ve(ae), Se.next = function() {\n var it = this, rt = 1;\n return this.start(function() {\n return rt-- ? it.continue() : it.stop();\n }).then(function() {\n return it;\n });\n }, Se.start = function(it) {\n function rt() {\n if (re.result)\n try {\n it();\n } catch (lt) {\n Se.fail(lt);\n }\n else\n Se.done = !0, Se.start = function() {\n throw new Error(\"Cursor behind last entry\");\n }, Se.stop();\n }\n var Vi = new Promise(function(lt, Pn) {\n lt = Ve(lt), re.onerror = Bt(Pn), Se.fail = Pn, Se.stop = function(No) {\n Se.stop = Se.continue = Se.continuePrimaryKey = Se.advance = Rt, lt(No);\n };\n });\n return re.onsuccess = Ve(function(lt) {\n re.onsuccess = rt, rt();\n }), Se.continue = Te, Se.continuePrimaryKey = Ae, Se.advance = xe, rt(), Vi;\n }, ee(Se)) : ee(null);\n }, ae);\n });\n }, count: function(G) {\n var B = G.query, W = G.trans, j = B.index, X = B.range;\n return new Promise(function(Q, ee) {\n var ae = W.objectStore(k), ie = j.isPrimaryKey ? ae : ae.index(j.name), ae = E(X), ie = ae ? ie.count(ae) : ie.count();\n ie.onsuccess = Ve(function(oe) {\n return Q(oe.target.result);\n }), ie.onerror = Bt(ee);\n });\n } };\n }\n var b, R, M, z = (R = _, M = sl((b = a).objectStoreNames), { schema: { name: b.name, tables: M.map(function(V) {\n return R.objectStore(V);\n }).map(function(V) {\n var N = V.keyPath, B = V.autoIncrement, k = o(N), G = {}, B = { name: V.name, primaryKey: { name: null, isPrimaryKey: !0, outbound: N == null, compound: k, keyPath: N, autoIncrement: B, unique: !0, extractKey: go(N) }, indexes: sl(V.indexNames).map(function(W) {\n return V.index(W);\n }).map(function(Q) {\n var j = Q.name, X = Q.unique, ee = Q.multiEntry, Q = Q.keyPath, ee = { name: j, compound: o(Q), keyPath: Q, unique: X, multiEntry: ee, extractKey: go(Q) };\n return G[Ls(Q)] = ee;\n }), getIndexByKeyPath: function(W) {\n return G[Ls(W)];\n } };\n return G[\":id\"] = B.primaryKey, N != null && (G[Ls(N)] = B.primaryKey), B;\n }) }, hasGetAll: 0 < M.length && \"getAll\" in R.objectStore(M[0]) && !(typeof navigator < \"u\" && /Safari/.test(navigator.userAgent) && !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) && [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) }), _ = z.schema, L = z.hasGetAll, z = _.tables.map(I), D = {};\n return z.forEach(function(V) {\n return D[V.name] = V;\n }), { stack: \"dbcore\", transaction: a.transaction.bind(a), table: function(V) {\n if (!D[V])\n throw new Error(\"Table '\".concat(V, \"' not found\"));\n return D[V];\n }, MIN_KEY: -1 / 0, MAX_KEY: Ds(c), schema: _ };\n }\n function Gh(a, c, p, E) {\n var I = p.IDBKeyRange;\n return p.indexedDB, { dbcore: (E = Vh(c, I, E), a.dbcore.reduce(function(b, R) {\n return R = R.create, n(n({}, b), R(b));\n }, E)) };\n }\n function Fi(a, E) {\n var p = E.db, E = Gh(a._middlewares, p, a._deps, E);\n a.core = E.dbcore, a.tables.forEach(function(I) {\n var b = I.name;\n a.core.schema.tables.some(function(R) {\n return R.name === b;\n }) && (I.core = a.core.table(b), a[b] instanceof a.Table && (a[b].core = I.core));\n });\n }\n function Pi(a, c, p, E) {\n p.forEach(function(I) {\n var b = E[I];\n c.forEach(function(R) {\n var M = function _(L, z) {\n return x(L, z) || (L = u(L)) && _(L, z);\n }(R, I);\n (!M || \"value\" in M && M.value === void 0) && (R === a.Transaction.prototype || R instanceof a.Transaction ? v(R, I, { get: function() {\n return this.table(I);\n }, set: function(_) {\n g(this, I, { value: _, writable: !0, configurable: !0, enumerable: !0 });\n } }) : R[I] = new a.Table(I, b));\n });\n });\n }\n function Eo(a, c) {\n c.forEach(function(p) {\n for (var E in p)\n p[E] instanceof a.Table && delete p[E];\n });\n }\n function Yh(a, c) {\n return a._cfg.version - c._cfg.version;\n }\n function Hh(a, c, p, E) {\n var I = a._dbSchema;\n p.objectStoreNames.contains(\"$meta\") && !I.$meta && (I.$meta = mo(\"$meta\", rl(\"\")[0], []), a._storeNames.push(\"$meta\"));\n var b = a._createTransaction(\"readwrite\", a._storeNames, I);\n b.create(p), b._completion.catch(E);\n var R = b._reject.bind(b), M = ge.transless || ge;\n an(function() {\n return ge.trans = b, ge.transless = M, c !== 0 ? (Fi(a, p), L = c, ((_ = b).storeNames.includes(\"$meta\") ? _.table(\"$meta\").get(\"version\").then(function(z) {\n return z ?? L;\n }) : ce.resolve(L)).then(function(z) {\n return V = z, N = b, k = p, G = [], z = (D = a)._versions, B = D._dbSchema = Oi(0, D.idbdb, k), (z = z.filter(function(W) {\n return W._cfg.version >= V;\n })).length !== 0 ? (z.forEach(function(W) {\n G.push(function() {\n var j = B, X = W._cfg.dbschema;\n Di(D, j, k), Di(D, X, k), B = D._dbSchema = X;\n var Q = vo(j, X);\n Q.add.forEach(function(le) {\n Io(k, le[0], le[1].primKey, le[1].indexes);\n }), Q.change.forEach(function(le) {\n if (le.recreate)\n throw new pe.Upgrade(\"Not yet support for changing primary key\");\n var re = k.objectStore(le.name);\n le.add.forEach(function(Ce) {\n return Mi(re, Ce);\n }), le.change.forEach(function(Ce) {\n re.deleteIndex(Ce.name), Mi(re, Ce);\n }), le.del.forEach(function(Ce) {\n return re.deleteIndex(Ce);\n });\n });\n var ee = W._cfg.contentUpgrade;\n if (ee && W._cfg.version > V) {\n Fi(D, k), N._memoizedTables = {};\n var ae = H(X);\n Q.del.forEach(function(le) {\n ae[le] = j[le];\n }), Eo(D, [D.Transaction.prototype]), Pi(D, [D.Transaction.prototype], r(ae), ae), N.schema = ae;\n var ie, oe = Ke(ee);\n return oe && Hn(), Q = ce.follow(function() {\n var le;\n (ie = ee(N)) && oe && (le = ln.bind(null, null), ie.then(le, le));\n }), ie && typeof ie.then == \"function\" ? ce.resolve(ie) : Q.then(function() {\n return ie;\n });\n }\n }), G.push(function(j) {\n var X, Q, ee = W._cfg.dbschema;\n X = ee, Q = j, [].slice.call(Q.db.objectStoreNames).forEach(function(ae) {\n return X[ae] == null && Q.db.deleteObjectStore(ae);\n }), Eo(D, [D.Transaction.prototype]), Pi(D, [D.Transaction.prototype], D._storeNames, D._dbSchema), N.schema = D._dbSchema;\n }), G.push(function(j) {\n D.idbdb.objectStoreNames.contains(\"$meta\") && (Math.ceil(D.idbdb.version / 10) === W._cfg.version ? (D.idbdb.deleteObjectStore(\"$meta\"), delete D._dbSchema.$meta, D._storeNames = D._storeNames.filter(function(X) {\n return X !== \"$meta\";\n })) : j.objectStore(\"$meta\").put(W._cfg.version, \"version\"));\n });\n }), function W() {\n return G.length ? ce.resolve(G.shift()(N.idbtrans)).then(W) : ce.resolve();\n }().then(function() {\n il(B, k);\n })) : ce.resolve();\n var D, V, N, k, G, B;\n }).catch(R)) : (r(I).forEach(function(z) {\n Io(p, z, I[z].primKey, I[z].indexes);\n }), Fi(a, p), void ce.follow(function() {\n return a.on.populate.fire(b);\n }).catch(R));\n var _, L;\n });\n }\n function Wh(a, c) {\n il(a._dbSchema, c), c.db.version % 10 != 0 || c.objectStoreNames.contains(\"$meta\") || c.db.createObjectStore(\"$meta\").add(Math.ceil(c.db.version / 10 - 1), \"version\");\n var p = Oi(0, a.idbdb, c);\n Di(a, a._dbSchema, c);\n for (var E = 0, I = vo(p, a._dbSchema).change; E < I.length; E++) {\n var b = function(R) {\n if (R.change.length || R.recreate)\n return console.warn(\"Unable to patch indexes of table \".concat(R.name, \" because it has changes on the type of index or primary key.\")), { value: void 0 };\n var M = c.objectStore(R.name);\n R.add.forEach(function(_) {\n Ut && console.debug(\"Dexie upgrade patch: Creating missing index \".concat(R.name, \".\").concat(_.src)), Mi(M, _);\n });\n }(I[E]);\n if (typeof b == \"object\")\n return b.value;\n }\n }\n function vo(a, c) {\n var p, E = { del: [], add: [], change: [] };\n for (p in a)\n c[p] || E.del.push(p);\n for (p in c) {\n var I = a[p], b = c[p];\n if (I) {\n var R = { name: p, def: b, recreate: !1, del: [], add: [], change: [] };\n if (\"\" + (I.primKey.keyPath || \"\") != \"\" + (b.primKey.keyPath || \"\") || I.primKey.auto !== b.primKey.auto)\n R.recreate = !0, E.change.push(R);\n else {\n var M = I.idxByName, _ = b.idxByName, L = void 0;\n for (L in M)\n _[L] || R.del.push(L);\n for (L in _) {\n var z = M[L], D = _[L];\n z ? z.src !== D.src && R.change.push(D) : R.add.push(D);\n }\n (0 < R.del.length || 0 < R.add.length || 0 < R.change.length) && E.change.push(R);\n }\n } else\n E.add.push([p, b]);\n }\n return E;\n }\n function Io(a, c, p, E) {\n var I = a.db.createObjectStore(c, p.keyPath ? { keyPath: p.keyPath, autoIncrement: p.auto } : { autoIncrement: p.auto });\n return E.forEach(function(b) {\n return Mi(I, b);\n }), I;\n }\n function il(a, c) {\n r(a).forEach(function(p) {\n c.db.objectStoreNames.contains(p) || (Ut && console.debug(\"Dexie: Creating missing table\", p), Io(c, p, a[p].primKey, a[p].indexes));\n });\n }\n function Mi(a, c) {\n a.createIndex(c.name, c.keyPath, { unique: c.unique, multiEntry: c.multi });\n }\n function Oi(a, c, p) {\n var E = {};\n return F(c.objectStoreNames, 0).forEach(function(I) {\n for (var b = p.objectStore(I), R = po(nl(L = b.keyPath), L || \"\", !0, !1, !!b.autoIncrement, L && typeof L != \"string\", !0), M = [], _ = 0; _ < b.indexNames.length; ++_) {\n var z = b.index(b.indexNames[_]), L = z.keyPath, z = po(z.name, L, !!z.unique, !!z.multiEntry, !1, L && typeof L != \"string\", !1);\n M.push(z);\n }\n E[I] = mo(I, R, M);\n }), E;\n }\n function Di(a, c, p) {\n for (var E = p.db.objectStoreNames, I = 0; I < E.length; ++I) {\n var b = E[I], R = p.objectStore(b);\n a._hasGetAll = \"getAll\" in R;\n for (var M = 0; M < R.indexNames.length; ++M) {\n var _ = R.indexNames[M], L = R.index(_).keyPath, z = typeof L == \"string\" ? L : \"[\" + F(L).join(\"+\") + \"]\";\n !c[b] || (L = c[b].idxByName[z]) && (L.name = _, delete c[b].idxByName[z], c[b].idxByName[_] = L);\n }\n }\n typeof navigator < \"u\" && /Safari/.test(navigator.userAgent) && !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) && i.WorkerGlobalScope && i instanceof i.WorkerGlobalScope && [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604 && (a._hasGetAll = !1);\n }\n function rl(a) {\n return a.split(\",\").map(function(c, p) {\n var E = (c = c.trim()).replace(/([&*]|\\+\\+)/g, \"\"), I = /^\\[/.test(E) ? E.match(/^\\[(.*)\\]$/)[1].split(\"+\") : E;\n return po(E, I || null, /\\&/.test(c), /\\*/.test(c), /\\+\\+/.test(c), o(I), p === 0);\n });\n }\n var Kh = (Li.prototype._parseStoresSpec = function(a, c) {\n r(a).forEach(function(p) {\n if (a[p] !== null) {\n var E = rl(a[p]), I = E.shift();\n if (I.unique = !0, I.multi)\n throw new pe.Schema(\"Primary key cannot be multi-valued\");\n E.forEach(function(b) {\n if (b.auto)\n throw new pe.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!b.keyPath)\n throw new pe.Schema(\"Index must have a name and cannot be an empty string\");\n }), c[p] = mo(p, I, E);\n }\n });\n }, Li.prototype.stores = function(p) {\n var c = this.db;\n this._cfg.storesSource = this._cfg.storesSource ? l(this._cfg.storesSource, p) : p;\n var p = c._versions, E = {}, I = {};\n return p.forEach(function(b) {\n l(E, b._cfg.storesSource), I = b._cfg.dbschema = {}, b._parseStoresSpec(E, I);\n }), c._dbSchema = I, Eo(c, [c._allTables, c, c.Transaction.prototype]), Pi(c, [c._allTables, c, c.Transaction.prototype, this._cfg.tables], r(I), I), c._storeNames = r(I), this;\n }, Li.prototype.upgrade = function(a) {\n return this._cfg.contentUpgrade = Jr(this._cfg.contentUpgrade || Oe, a), this;\n }, Li);\n function Li() {\n }\n function yo(a, c) {\n var p = a._dbNamesDB;\n return p || (p = a._dbNamesDB = new $t(bi, { addons: [], indexedDB: a, IDBKeyRange: c })).version(1).stores({ dbnames: \"name\" }), p.table(\"dbnames\");\n }\n function wo(a) {\n return a && typeof a.databases == \"function\";\n }\n function Co(a) {\n return an(function() {\n return ge.letThrough = !0, a();\n });\n }\n function To(a) {\n return !(\"from\" in a);\n }\n var st = function(a, c) {\n if (!this) {\n var p = new st();\n return a && \"d\" in a && l(p, a), p;\n }\n l(this, arguments.length ? { d: 1, from: a, to: 1 < arguments.length ? c : a } : { d: 0 });\n };\n function Ns(a, c, p) {\n var E = Me(c, p);\n if (!isNaN(E)) {\n if (0 < E)\n throw RangeError();\n if (To(a))\n return l(a, { from: c, to: p, d: 1 });\n var I = a.l, E = a.r;\n if (Me(p, a.from) < 0)\n return I ? Ns(I, c, p) : a.l = { from: c, to: p, d: 1, l: null, r: null }, ol(a);\n if (0 < Me(c, a.to))\n return E ? Ns(E, c, p) : a.r = { from: c, to: p, d: 1, l: null, r: null }, ol(a);\n Me(c, a.from) < 0 && (a.from = c, a.l = null, a.d = E ? E.d + 1 : 1), 0 < Me(p, a.to) && (a.to = p, a.r = null, a.d = a.l ? a.l.d + 1 : 1), p = !a.r, I && !a.l && _s(a, I), E && p && _s(a, E);\n }\n }\n function _s(a, c) {\n To(c) || function p(E, _) {\n var b = _.from, R = _.to, M = _.l, _ = _.r;\n Ns(E, b, R), M && p(E, M), _ && p(E, _);\n }(a, c);\n }\n function Ni(a, c) {\n var p = bo(c), E = p.next();\n if (E.done)\n return !1;\n for (var I = E.value, b = bo(a), R = b.next(I.from), M = R.value; !E.done && !R.done; ) {\n if (Me(M.from, I.to) <= 0 && 0 <= Me(M.to, I.from))\n return !0;\n Me(I.from, M.from) < 0 ? I = (E = p.next(M.from)).value : M = (R = b.next(I.from)).value;\n }\n return !1;\n }\n function bo(a) {\n var c = To(a) ? null : { s: 0, n: a };\n return { next: function(p) {\n for (var E = 0 < arguments.length; c; )\n switch (c.s) {\n case 0:\n if (c.s = 1, E)\n for (; c.n.l && Me(p, c.n.from) < 0; )\n c = { up: c, n: c.n.l, s: 1 };\n else\n for (; c.n.l; )\n c = { up: c, n: c.n.l, s: 1 };\n case 1:\n if (c.s = 2, !E || Me(p, c.n.to) <= 0)\n return { value: c.n, done: !1 };\n case 2:\n if (c.n.r) {\n c.s = 3, c = { up: c, n: c.n.r, s: 0 };\n continue;\n }\n case 3:\n c = c.up;\n }\n return { done: !0 };\n } };\n }\n function ol(a) {\n var c, p, E = (((c = a.r) === null || c === void 0 ? void 0 : c.d) || 0) - (((p = a.l) === null || p === void 0 ? void 0 : p.d) || 0), I = 1 < E ? \"r\" : E < -1 ? \"l\" : \"\";\n I && (c = I == \"r\" ? \"l\" : \"r\", p = n({}, a), E = a[I], a.from = E.from, a.to = E.to, a[I] = E[I], p[I] = E[c], (a[c] = p).d = al(p)), a.d = al(a);\n }\n function al(p) {\n var c = p.r, p = p.l;\n return (c ? p ? Math.max(c.d, p.d) : c.d : p ? p.d : 0) + 1;\n }\n function _i(a, c) {\n return r(c).forEach(function(p) {\n a[p] ? _s(a[p], c[p]) : a[p] = function E(I) {\n var b, R, M = {};\n for (b in I)\n m(I, b) && (R = I[b], M[b] = !R || typeof R != \"object\" || q.has(R.constructor) ? R : E(R));\n return M;\n }(c[p]);\n }), a;\n }\n function xo(a, c) {\n return a.all || c.all || Object.keys(a).some(function(p) {\n return c[p] && Ni(c[p], a[p]);\n });\n }\n f(st.prototype, ((It = { add: function(a) {\n return _s(this, a), this;\n }, addKey: function(a) {\n return Ns(this, a, a), this;\n }, addKeys: function(a) {\n var c = this;\n return a.forEach(function(p) {\n return Ns(c, p, p);\n }), this;\n } })[Ie] = function() {\n return bo(this);\n }, It));\n var Rn = {}, So = {}, Ao = !1;\n function Ui(a) {\n _i(So, a), Ao || (Ao = !0, setTimeout(function() {\n Ao = !1, Ro(So, !(So = {}));\n }, 0));\n }\n function Ro(a, c) {\n c === void 0 && (c = !1);\n var p = /* @__PURE__ */ new Set();\n if (a.all)\n for (var E = 0, I = Object.values(Rn); E < I.length; E++)\n ll(R = I[E], a, p, c);\n else\n for (var b in a) {\n var R, M = /^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(b);\n M && (b = M[1], M = M[2], (R = Rn[\"idb://\".concat(b, \"/\").concat(M)]) && ll(R, a, p, c));\n }\n p.forEach(function(_) {\n return _();\n });\n }\n function ll(a, c, p, E) {\n for (var I = [], b = 0, R = Object.entries(a.queries.query); b < R.length; b++) {\n for (var M = R[b], _ = M[0], L = [], z = 0, D = M[1]; z < D.length; z++) {\n var V = D[z];\n xo(c, V.obsSet) ? V.subscribers.forEach(function(B) {\n return p.add(B);\n }) : E && L.push(V);\n }\n E && I.push([_, L]);\n }\n if (E)\n for (var N = 0, k = I; N < k.length; N++) {\n var G = k[N], _ = G[0], L = G[1];\n a.queries.query[_] = L;\n }\n }\n function jh(a) {\n var c = a._state, p = a._deps.indexedDB;\n if (c.isBeingOpened || a.idbdb)\n return c.dbReadyPromise.then(function() {\n return c.dbOpenError ? Xe(c.dbOpenError) : a;\n });\n c.isBeingOpened = !0, c.dbOpenError = null, c.openComplete = !1;\n var E = c.openCanceller, I = Math.round(10 * a.verno), b = !1;\n function R() {\n if (c.openCanceller !== E)\n throw new pe.DatabaseClosed(\"db.open() was cancelled\");\n }\n function M() {\n return new ce(function(V, N) {\n if (R(), !p)\n throw new pe.MissingAPI();\n var k = a.name, G = c.autoSchema || !I ? p.open(k) : p.open(k, I);\n if (!G)\n throw new pe.MissingAPI();\n G.onerror = Bt(N), G.onblocked = Ve(a._fireOnBlocked), G.onupgradeneeded = Ve(function(B) {\n var W;\n z = G.transaction, c.autoSchema && !a._options.allowEmptyDB ? (G.onerror = Ms, z.abort(), G.result.close(), (W = p.deleteDatabase(k)).onsuccess = W.onerror = Ve(function() {\n N(new pe.NoSuchDatabase(\"Database \".concat(k, \" doesnt exist\")));\n })) : (z.onerror = Bt(N), B = B.oldVersion > Math.pow(2, 62) ? 0 : B.oldVersion, D = B < 1, a.idbdb = G.result, b && Wh(a, z), Hh(a, B / 10, z, N));\n }, N), G.onsuccess = Ve(function() {\n z = null;\n var B, W, j, X, Q, ee = a.idbdb = G.result, ae = F(ee.objectStoreNames);\n if (0 < ae.length)\n try {\n var ie = ee.transaction((X = ae).length === 1 ? X[0] : X, \"readonly\");\n if (c.autoSchema)\n W = ee, j = ie, (B = a).verno = W.version / 10, j = B._dbSchema = Oi(0, W, j), B._storeNames = F(W.objectStoreNames, 0), Pi(B, [B._allTables], r(j), j);\n else if (Di(a, a._dbSchema, ie), ((Q = vo(Oi(0, (Q = a).idbdb, ie), Q._dbSchema)).add.length || Q.change.some(function(oe) {\n return oe.add.length || oe.change.length;\n })) && !b)\n return console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\"), ee.close(), I = ee.version + 1, b = !0, V(M());\n Fi(a, ie);\n } catch {\n }\n Wn.push(a), ee.onversionchange = Ve(function(oe) {\n c.vcFired = !0, a.on(\"versionchange\").fire(oe);\n }), ee.onclose = Ve(function(oe) {\n a.on(\"close\").fire(oe);\n }), D && (Q = a._deps, ie = k, ee = Q.indexedDB, Q = Q.IDBKeyRange, wo(ee) || ie === bi || yo(ee, Q).put({ name: ie }).catch(Oe)), V();\n }, N);\n }).catch(function(V) {\n switch (V == null ? void 0 : V.name) {\n case \"UnknownError\":\n if (0 < c.PR1398_maxLoop)\n return c.PR1398_maxLoop--, console.warn(\"Dexie: Workaround for Chrome UnknownError on open()\"), M();\n break;\n case \"VersionError\":\n if (0 < I)\n return I = 0, M();\n }\n return ce.reject(V);\n });\n }\n var _, L = c.dbReadyResolve, z = null, D = !1;\n return ce.race([E, (typeof navigator > \"u\" ? ce.resolve() : !navigator.userAgentData && /Safari\\//.test(navigator.userAgent) && !/Chrom(e|ium)\\//.test(navigator.userAgent) && indexedDB.databases ? new Promise(function(V) {\n function N() {\n return indexedDB.databases().finally(V);\n }\n _ = setInterval(N, 100), N();\n }).finally(function() {\n return clearInterval(_);\n }) : Promise.resolve()).then(M)]).then(function() {\n return R(), c.onReadyBeingFired = [], ce.resolve(Co(function() {\n return a.on.ready.fire(a.vip);\n })).then(function V() {\n if (0 < c.onReadyBeingFired.length) {\n var N = c.onReadyBeingFired.reduce(Jr, Oe);\n return c.onReadyBeingFired = [], ce.resolve(Co(function() {\n return N(a.vip);\n })).then(V);\n }\n });\n }).finally(function() {\n c.openCanceller === E && (c.onReadyBeingFired = null, c.isBeingOpened = !1);\n }).catch(function(V) {\n c.dbOpenError = V;\n try {\n z && z.abort();\n } catch {\n }\n return E === c.openCanceller && a._close(), Xe(V);\n }).finally(function() {\n c.openComplete = !0, L();\n }).then(function() {\n var V;\n return D && (V = {}, a.tables.forEach(function(N) {\n N.schema.indexes.forEach(function(k) {\n k.name && (V[\"idb://\".concat(a.name, \"/\").concat(N.name, \"/\").concat(k.name)] = new st(-1 / 0, [[[]]]));\n }), V[\"idb://\".concat(a.name, \"/\").concat(N.name, \"/\")] = V[\"idb://\".concat(a.name, \"/\").concat(N.name, \"/:dels\")] = new st(-1 / 0, [[[]]]);\n }), un(Os).fire(V), Ro(V, !0)), a;\n });\n }\n function Fo(a) {\n function c(b) {\n return a.next(b);\n }\n var p = I(c), E = I(function(b) {\n return a.throw(b);\n });\n function I(b) {\n return function(_) {\n var M = b(_), _ = M.value;\n return M.done ? _ : _ && typeof _.then == \"function\" ? _.then(p, E) : o(_) ? Promise.all(_).then(p, E) : p(_);\n };\n }\n return I(c)();\n }\n function Bi(a, c, p) {\n for (var E = o(a) ? a.slice() : [a], I = 0; I < p; ++I)\n E.push(c);\n return E;\n }\n var Xh = { stack: \"dbcore\", name: \"VirtualIndexMiddleware\", level: 1, create: function(a) {\n return n(n({}, a), { table: function(c) {\n var p = a.table(c), E = p.schema, I = {}, b = [];\n function R(D, V, N) {\n var k = Ls(D), G = I[k] = I[k] || [], B = D == null ? 0 : typeof D == \"string\" ? 1 : D.length, W = 0 < V, W = n(n({}, N), { name: W ? \"\".concat(k, \"(virtual-from:\").concat(N.name, \")\") : N.name, lowLevelIndex: N, isVirtual: W, keyTail: V, keyLength: B, extractKey: go(D), unique: !W && N.unique });\n return G.push(W), W.isPrimaryKey || b.push(W), 1 < B && R(B === 2 ? D[0] : D.slice(0, B - 1), V + 1, N), G.sort(function(j, X) {\n return j.keyTail - X.keyTail;\n }), W;\n }\n c = R(E.primaryKey.keyPath, 0, E.primaryKey), I[\":id\"] = [c];\n for (var M = 0, _ = E.indexes; M < _.length; M++) {\n var L = _[M];\n R(L.keyPath, 0, L);\n }\n function z(D) {\n var V, N = D.query.index;\n return N.isVirtual ? n(n({}, D), { query: { index: N.lowLevelIndex, range: (V = D.query.range, N = N.keyTail, { type: V.type === 1 ? 2 : V.type, lower: Bi(V.lower, V.lowerOpen ? a.MAX_KEY : a.MIN_KEY, N), lowerOpen: !0, upper: Bi(V.upper, V.upperOpen ? a.MIN_KEY : a.MAX_KEY, N), upperOpen: !0 }) } }) : D;\n }\n return n(n({}, p), { schema: n(n({}, E), { primaryKey: c, indexes: b, getIndexByKeyPath: function(D) {\n return (D = I[Ls(D)]) && D[0];\n } }), count: function(D) {\n return p.count(z(D));\n }, query: function(D) {\n return p.query(z(D));\n }, openCursor: function(D) {\n var V = D.query.index, N = V.keyTail, k = V.isVirtual, G = V.keyLength;\n return k ? p.openCursor(z(D)).then(function(W) {\n return W && B(W);\n }) : p.openCursor(D);\n function B(W) {\n return Object.create(W, { continue: { value: function(j) {\n j != null ? W.continue(Bi(j, D.reverse ? a.MAX_KEY : a.MIN_KEY, N)) : D.unique ? W.continue(W.key.slice(0, G).concat(D.reverse ? a.MIN_KEY : a.MAX_KEY, N)) : W.continue();\n } }, continuePrimaryKey: { value: function(j, X) {\n W.continuePrimaryKey(Bi(j, a.MAX_KEY, N), X);\n } }, primaryKey: { get: function() {\n return W.primaryKey;\n } }, key: { get: function() {\n var j = W.key;\n return G === 1 ? j[0] : j.slice(0, G);\n } }, value: { get: function() {\n return W.value;\n } } });\n }\n } });\n } });\n } };\n function Po(a, c, p, E) {\n return p = p || {}, E = E || \"\", r(a).forEach(function(I) {\n var b, R, M;\n m(c, I) ? (b = a[I], R = c[I], typeof b == \"object\" && typeof R == \"object\" && b && R ? (M = me(b)) !== me(R) ? p[E + I] = c[I] : M === \"Object\" ? Po(b, R, p, E + I + \".\") : b !== R && (p[E + I] = c[I]) : b !== R && (p[E + I] = c[I])) : p[E + I] = void 0;\n }), r(c).forEach(function(I) {\n m(a, I) || (p[E + I] = c[I]);\n }), p;\n }\n function Mo(a, c) {\n return c.type === \"delete\" ? c.keys : c.keys || c.values.map(a.extractKey);\n }\n var Zh = { stack: \"dbcore\", name: \"HooksMiddleware\", level: 2, create: function(a) {\n return n(n({}, a), { table: function(c) {\n var p = a.table(c), E = p.schema.primaryKey;\n return n(n({}, p), { mutate: function(I) {\n var b = ge.trans, R = b.table(c).hook, M = R.deleting, _ = R.creating, L = R.updating;\n switch (I.type) {\n case \"add\":\n if (_.fire === Oe)\n break;\n return b._promise(\"readwrite\", function() {\n return z(I);\n }, !0);\n case \"put\":\n if (_.fire === Oe && L.fire === Oe)\n break;\n return b._promise(\"readwrite\", function() {\n return z(I);\n }, !0);\n case \"delete\":\n if (M.fire === Oe)\n break;\n return b._promise(\"readwrite\", function() {\n return z(I);\n }, !0);\n case \"deleteRange\":\n if (M.fire === Oe)\n break;\n return b._promise(\"readwrite\", function() {\n return function D(V, N, k) {\n return p.query({ trans: V, values: !1, query: { index: E, range: N }, limit: k }).then(function(G) {\n var B = G.result;\n return z({ type: \"delete\", keys: B, trans: V }).then(function(W) {\n return 0 < W.numFailures ? Promise.reject(W.failures[0]) : B.length < k ? { failures: [], numFailures: 0, lastResult: void 0 } : D(V, n(n({}, N), { lower: B[B.length - 1], lowerOpen: !0 }), k);\n });\n });\n }(I.trans, I.range, 1e4);\n }, !0);\n }\n return p.mutate(I);\n function z(D) {\n var V, N, k, G = ge.trans, B = D.keys || Mo(E, D);\n if (!B)\n throw new Error(\"Keys missing\");\n return (D = D.type === \"add\" || D.type === \"put\" ? n(n({}, D), { keys: B }) : n({}, D)).type !== \"delete\" && (D.values = s([], D.values)), D.keys && (D.keys = s([], D.keys)), V = p, k = B, ((N = D).type === \"add\" ? Promise.resolve([]) : V.getMany({ trans: N.trans, keys: k, cache: \"immutable\" })).then(function(W) {\n var j = B.map(function(X, Q) {\n var ee, ae, ie, oe = W[Q], le = { onerror: null, onsuccess: null };\n return D.type === \"delete\" ? M.fire.call(le, X, oe, G) : D.type === \"add\" || oe === void 0 ? (ee = _.fire.call(le, X, D.values[Q], G), X == null && ee != null && (D.keys[Q] = X = ee, E.outbound || Y(D.values[Q], E.keyPath, X))) : (ee = Po(oe, D.values[Q]), (ae = L.fire.call(le, ee, X, oe, G)) && (ie = D.values[Q], Object.keys(ae).forEach(function(re) {\n m(ie, re) ? ie[re] = ae[re] : Y(ie, re, ae[re]);\n }))), le;\n });\n return p.mutate(D).then(function(X) {\n for (var Q = X.failures, ee = X.results, ae = X.numFailures, X = X.lastResult, ie = 0; ie < B.length; ++ie) {\n var oe = (ee || B)[ie], le = j[ie];\n oe == null ? le.onerror && le.onerror(Q[ie]) : le.onsuccess && le.onsuccess(D.type === \"put\" && W[ie] ? D.values[ie] : oe);\n }\n return { failures: Q, results: ee, numFailures: ae, lastResult: X };\n }).catch(function(X) {\n return j.forEach(function(Q) {\n return Q.onerror && Q.onerror(X);\n }), Promise.reject(X);\n });\n });\n }\n } });\n } });\n } };\n function cl(a, c, p) {\n try {\n if (!c || c.keys.length < a.length)\n return null;\n for (var E = [], I = 0, b = 0; I < c.keys.length && b < a.length; ++I)\n Me(c.keys[I], a[b]) === 0 && (E.push(p ? se(c.values[I]) : c.values[I]), ++b);\n return E.length === a.length ? E : null;\n } catch {\n return null;\n }\n }\n var Qh = { stack: \"dbcore\", level: -1, create: function(a) {\n return { table: function(c) {\n var p = a.table(c);\n return n(n({}, p), { getMany: function(E) {\n if (!E.cache)\n return p.getMany(E);\n var I = cl(E.keys, E.trans._cache, E.cache === \"clone\");\n return I ? ce.resolve(I) : p.getMany(E).then(function(b) {\n return E.trans._cache = { keys: E.keys, values: E.cache === \"clone\" ? se(b) : b }, b;\n });\n }, mutate: function(E) {\n return E.type !== \"add\" && (E.trans._cache = null), p.mutate(E);\n } });\n } };\n } };\n function hl(a, c) {\n return a.trans.mode === \"readonly\" && !!a.subscr && !a.trans.explicit && a.trans.db._options.cache !== \"disabled\" && !c.schema.primaryKey.outbound;\n }\n function ul(a, c) {\n switch (a) {\n case \"query\":\n return c.values && !c.unique;\n case \"get\":\n case \"getMany\":\n case \"count\":\n case \"openCursor\":\n return !1;\n }\n }\n var qh = { stack: \"dbcore\", level: 0, name: \"Observability\", create: function(a) {\n var c = a.schema.name, p = new st(a.MIN_KEY, a.MAX_KEY);\n return n(n({}, a), { transaction: function(E, I, b) {\n if (ge.subscr && I !== \"readonly\")\n throw new pe.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(ge.querier));\n return a.transaction(E, I, b);\n }, table: function(E) {\n var I = a.table(E), b = I.schema, R = b.primaryKey, D = b.indexes, M = R.extractKey, _ = R.outbound, L = R.autoIncrement && D.filter(function(N) {\n return N.compound && N.keyPath.includes(R.keyPath);\n }), z = n(n({}, I), { mutate: function(N) {\n function k(re) {\n return re = \"idb://\".concat(c, \"/\").concat(E, \"/\").concat(re), X[re] || (X[re] = new st());\n }\n var G, B, W, j = N.trans, X = N.mutatedParts || (N.mutatedParts = {}), Q = k(\"\"), ee = k(\":dels\"), ae = N.type, le = N.type === \"deleteRange\" ? [N.range] : N.type === \"delete\" ? [N.keys] : N.values.length < 50 ? [Mo(R, N).filter(function(re) {\n return re;\n }), N.values] : [], ie = le[0], oe = le[1], le = N.trans._cache;\n return o(ie) ? (Q.addKeys(ie), (le = ae === \"delete\" || ie.length === oe.length ? cl(ie, le) : null) || ee.addKeys(ie), (le || oe) && (G = k, B = le, W = oe, b.indexes.forEach(function(re) {\n var Ce = G(re.name || \"\");\n function Te(xe) {\n return xe != null ? re.extractKey(xe) : null;\n }\n function Ae(xe) {\n return re.multiEntry && o(xe) ? xe.forEach(function(Rt) {\n return Ce.addKey(Rt);\n }) : Ce.addKey(xe);\n }\n (B || W).forEach(function(xe, it) {\n var Se = B && Te(B[it]), it = W && Te(W[it]);\n Me(Se, it) !== 0 && (Se != null && Ae(Se), it != null && Ae(it));\n });\n }))) : ie ? (oe = { from: ie.lower, to: ie.upper }, ee.add(oe), Q.add(oe)) : (Q.add(p), ee.add(p), b.indexes.forEach(function(re) {\n return k(re.name).add(p);\n })), I.mutate(N).then(function(re) {\n return !ie || N.type !== \"add\" && N.type !== \"put\" || (Q.addKeys(re.results), L && L.forEach(function(Ce) {\n var Te = N.values.map(function(xe) {\n return Ce.extractKey(xe);\n }), Ae = Ce.keyPath.findIndex(function(xe) {\n return xe === R.keyPath;\n });\n re.results.forEach(function(xe) {\n return Te[Ae] = xe;\n }), k(Ce.name).addKeys(Te);\n })), j.mutatedParts = _i(j.mutatedParts || {}, X), re;\n });\n } }), D = function(k) {\n var G = k.query, k = G.index, G = G.range;\n return [k, new st((k = G.lower) !== null && k !== void 0 ? k : a.MIN_KEY, (G = G.upper) !== null && G !== void 0 ? G : a.MAX_KEY)];\n }, V = { get: function(N) {\n return [R, new st(N.key)];\n }, getMany: function(N) {\n return [R, new st().addKeys(N.keys)];\n }, count: D, query: D, openCursor: D };\n return r(V).forEach(function(N) {\n z[N] = function(k) {\n var G = ge.subscr, B = !!G, W = hl(ge, I) && ul(N, k) ? k.obsSet = {} : G;\n if (B) {\n var j = function(oe) {\n return oe = \"idb://\".concat(c, \"/\").concat(E, \"/\").concat(oe), W[oe] || (W[oe] = new st());\n }, X = j(\"\"), Q = j(\":dels\"), G = V[N](k), B = G[0], G = G[1];\n if ((N === \"query\" && B.isPrimaryKey && !k.values ? Q : j(B.name || \"\")).add(G), !B.isPrimaryKey) {\n if (N !== \"count\") {\n var ee = N === \"query\" && _ && k.values && I.query(n(n({}, k), { values: !1 }));\n return I[N].apply(this, arguments).then(function(oe) {\n if (N === \"query\") {\n if (_ && k.values)\n return ee.then(function(Te) {\n return Te = Te.result, X.addKeys(Te), oe;\n });\n var le = k.values ? oe.result.map(M) : oe.result;\n (k.values ? X : Q).addKeys(le);\n } else if (N === \"openCursor\") {\n var re = oe, Ce = k.values;\n return re && Object.create(re, { key: { get: function() {\n return Q.addKey(re.primaryKey), re.key;\n } }, primaryKey: { get: function() {\n var Te = re.primaryKey;\n return Q.addKey(Te), Te;\n } }, value: { get: function() {\n return Ce && X.addKey(re.primaryKey), re.value;\n } } });\n }\n return oe;\n });\n }\n Q.add(p);\n }\n }\n return I[N].apply(this, arguments);\n };\n }), z;\n } });\n } };\n function dl(a, c, p) {\n if (p.numFailures === 0)\n return c;\n if (c.type === \"deleteRange\")\n return null;\n var E = c.keys ? c.keys.length : \"values\" in c && c.values ? c.values.length : 1;\n return p.numFailures === E ? null : (c = n({}, c), o(c.keys) && (c.keys = c.keys.filter(function(I, b) {\n return !(b in p.failures);\n })), \"values\" in c && o(c.values) && (c.values = c.values.filter(function(I, b) {\n return !(b in p.failures);\n })), c);\n }\n function Oo(a, c) {\n return p = a, ((E = c).lower === void 0 || (E.lowerOpen ? 0 < Me(p, E.lower) : 0 <= Me(p, E.lower))) && (a = a, (c = c).upper === void 0 || (c.upperOpen ? Me(a, c.upper) < 0 : Me(a, c.upper) <= 0));\n var p, E;\n }\n function fl(a, c, V, E, I, b) {\n if (!V || V.length === 0)\n return a;\n var R = c.query.index, M = R.multiEntry, _ = c.query.range, L = E.schema.primaryKey.extractKey, z = R.extractKey, D = (R.lowLevelIndex || R).extractKey, V = V.reduce(function(N, k) {\n var G = N, B = k.type === \"add\" || k.type === \"put\" ? k.values.filter(function(Q) {\n return Q = z(Q), M && o(Q) ? Q.some(function(ee) {\n return Oo(ee, _);\n }) : Oo(Q, _);\n }).map(function(Q) {\n return Q = se(Q), b && Object.freeze(Q), Q;\n }) : [];\n switch (k.type) {\n case \"add\":\n G = N.concat(c.values ? B : B.map(function(ee) {\n return L(ee);\n }));\n break;\n case \"put\":\n var W = new st().addKeys(k.values.map(function(ee) {\n return L(ee);\n })), G = N.filter(function(ee) {\n return ee = c.values ? L(ee) : ee, !Ni(new st(ee), W);\n }).concat(c.values ? B : B.map(function(ee) {\n return L(ee);\n }));\n break;\n case \"delete\":\n var j = new st().addKeys(k.keys);\n G = N.filter(function(ee) {\n return ee = c.values ? L(ee) : ee, !Ni(new st(ee), j);\n });\n break;\n case \"deleteRange\":\n var X = k.range;\n G = N.filter(function(ee) {\n return !Oo(L(ee), X);\n });\n }\n return G;\n }, a);\n return V === a ? a : (V.sort(function(N, k) {\n return Me(D(N), D(k)) || Me(L(N), L(k));\n }), c.limit && c.limit < 1 / 0 && (V.length > c.limit ? V.length = c.limit : a.length === c.limit && V.length < c.limit && (I.dirty = !0)), b ? Object.freeze(V) : V);\n }\n function pl(a, c) {\n return Me(a.lower, c.lower) === 0 && Me(a.upper, c.upper) === 0 && !!a.lowerOpen == !!c.lowerOpen && !!a.upperOpen == !!c.upperOpen;\n }\n function Jh(a, c) {\n return function(p, E, I, b) {\n if (p === void 0)\n return E !== void 0 ? -1 : 0;\n if (E === void 0)\n return 1;\n if ((E = Me(p, E)) === 0) {\n if (I && b)\n return 0;\n if (I)\n return 1;\n if (b)\n return -1;\n }\n return E;\n }(a.lower, c.lower, a.lowerOpen, c.lowerOpen) <= 0 && 0 <= function(p, E, I, b) {\n if (p === void 0)\n return E !== void 0 ? 1 : 0;\n if (E === void 0)\n return -1;\n if ((E = Me(p, E)) === 0) {\n if (I && b)\n return 0;\n if (I)\n return -1;\n if (b)\n return 1;\n }\n return E;\n }(a.upper, c.upper, a.upperOpen, c.upperOpen);\n }\n function $h(a, c, p, E) {\n a.subscribers.add(p), E.addEventListener(\"abort\", function() {\n var I, b;\n a.subscribers.delete(p), a.subscribers.size === 0 && (I = a, b = c, setTimeout(function() {\n I.subscribers.size === 0 && ue(b, I);\n }, 3e3));\n });\n }\n var eu = { stack: \"dbcore\", level: 0, name: \"Cache\", create: function(a) {\n var c = a.schema.name;\n return n(n({}, a), { transaction: function(p, E, I) {\n var b, R, M = a.transaction(p, E, I);\n return E === \"readwrite\" && (R = (b = new AbortController()).signal, I = function(_) {\n return function() {\n if (b.abort(), E === \"readwrite\") {\n for (var L = /* @__PURE__ */ new Set(), z = 0, D = p; z < D.length; z++) {\n var V = D[z], N = Rn[\"idb://\".concat(c, \"/\").concat(V)];\n if (N) {\n var k = a.table(V), G = N.optimisticOps.filter(function(Ce) {\n return Ce.trans === M;\n });\n if (M._explicit && _ && M.mutatedParts)\n for (var B = 0, W = Object.values(N.queries.query); B < W.length; B++)\n for (var j = 0, X = (ae = W[B]).slice(); j < X.length; j++)\n xo((ie = X[j]).obsSet, M.mutatedParts) && (ue(ae, ie), ie.subscribers.forEach(function(Ce) {\n return L.add(Ce);\n }));\n else if (0 < G.length) {\n N.optimisticOps = N.optimisticOps.filter(function(Ce) {\n return Ce.trans !== M;\n });\n for (var Q = 0, ee = Object.values(N.queries.query); Q < ee.length; Q++)\n for (var ae, ie, oe, le = 0, re = (ae = ee[Q]).slice(); le < re.length; le++)\n (ie = re[le]).res != null && M.mutatedParts && (_ && !ie.dirty ? (oe = Object.isFrozen(ie.res), oe = fl(ie.res, ie.req, G, k, ie, oe), ie.dirty ? (ue(ae, ie), ie.subscribers.forEach(function(Ce) {\n return L.add(Ce);\n })) : oe !== ie.res && (ie.res = oe, ie.promise = ce.resolve({ result: oe }))) : (ie.dirty && ue(ae, ie), ie.subscribers.forEach(function(Ce) {\n return L.add(Ce);\n })));\n }\n }\n }\n L.forEach(function(Ce) {\n return Ce();\n });\n }\n };\n }, M.addEventListener(\"abort\", I(!1), { signal: R }), M.addEventListener(\"error\", I(!1), { signal: R }), M.addEventListener(\"complete\", I(!0), { signal: R })), M;\n }, table: function(p) {\n var E = a.table(p), I = E.schema.primaryKey;\n return n(n({}, E), { mutate: function(b) {\n var R = ge.trans;\n if (I.outbound || R.db._options.cache === \"disabled\" || R.explicit)\n return E.mutate(b);\n var M = Rn[\"idb://\".concat(c, \"/\").concat(p)];\n return M ? (R = E.mutate(b), b.type !== \"add\" && b.type !== \"put\" || !(50 <= b.values.length || Mo(I, b).some(function(_) {\n return _ == null;\n })) ? (M.optimisticOps.push(b), b.mutatedParts && Ui(b.mutatedParts), R.then(function(_) {\n 0 < _.numFailures && (ue(M.optimisticOps, b), (_ = dl(0, b, _)) && M.optimisticOps.push(_), b.mutatedParts && Ui(b.mutatedParts));\n }), R.catch(function() {\n ue(M.optimisticOps, b), b.mutatedParts && Ui(b.mutatedParts);\n })) : R.then(function(_) {\n var L = dl(0, n(n({}, b), { values: b.values.map(function(N, D) {\n var V, N = (V = I.keyPath) !== null && V !== void 0 && V.includes(\".\") ? se(N) : n({}, N);\n return Y(N, I.keyPath, _.results[D]), N;\n }) }), _);\n M.optimisticOps.push(L), queueMicrotask(function() {\n return b.mutatedParts && Ui(b.mutatedParts);\n });\n }), R) : E.mutate(b);\n }, query: function(b) {\n if (!hl(ge, E) || !ul(\"query\", b))\n return E.query(b);\n var R = ((L = ge.trans) === null || L === void 0 ? void 0 : L.db._options.cache) === \"immutable\", D = ge, M = D.requery, _ = D.signal, L = function(k, G, B, W) {\n var j = Rn[\"idb://\".concat(k, \"/\").concat(G)];\n if (!j)\n return [];\n if (!(G = j.queries[B]))\n return [null, !1, j, null];\n var X = G[(W.query ? W.query.index.name : null) || \"\"];\n if (!X)\n return [null, !1, j, null];\n switch (B) {\n case \"query\":\n var Q = X.find(function(ee) {\n return ee.req.limit === W.limit && ee.req.values === W.values && pl(ee.req.query.range, W.query.range);\n });\n return Q ? [Q, !0, j, X] : [X.find(function(ee) {\n return (\"limit\" in ee.req ? ee.req.limit : 1 / 0) >= W.limit && (!W.values || ee.req.values) && Jh(ee.req.query.range, W.query.range);\n }), !1, j, X];\n case \"count\":\n return Q = X.find(function(ee) {\n return pl(ee.req.query.range, W.query.range);\n }), [Q, !!Q, j, X];\n }\n }(c, p, \"query\", b), z = L[0], D = L[1], V = L[2], N = L[3];\n return z && D ? z.obsSet = b.obsSet : (D = E.query(b).then(function(k) {\n var G = k.result;\n if (z && (z.res = G), R) {\n for (var B = 0, W = G.length; B < W; ++B)\n Object.freeze(G[B]);\n Object.freeze(G);\n } else\n k.result = se(G);\n return k;\n }).catch(function(k) {\n return N && z && ue(N, z), Promise.reject(k);\n }), z = { obsSet: b.obsSet, promise: D, subscribers: /* @__PURE__ */ new Set(), type: \"query\", req: b, dirty: !1 }, N ? N.push(z) : (N = [z], (V = V || (Rn[\"idb://\".concat(c, \"/\").concat(p)] = { queries: { query: {}, count: {} }, objs: /* @__PURE__ */ new Map(), optimisticOps: [], unsignaledParts: {} })).queries.query[b.query.index.name || \"\"] = N)), $h(z, N, M, _), z.promise.then(function(k) {\n return { result: fl(k.result, b, V == null ? void 0 : V.optimisticOps, E, z, R) };\n });\n } });\n } });\n } };\n function ki(a, c) {\n return new Proxy(a, { get: function(p, E, I) {\n return E === \"db\" ? c : Reflect.get(p, E, I);\n } });\n }\n var $t = (Ze.prototype.version = function(a) {\n if (isNaN(a) || a < 0.1)\n throw new pe.Type(\"Given version is not a positive number\");\n if (a = Math.round(10 * a) / 10, this.idbdb || this._state.isBeingOpened)\n throw new pe.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, a);\n var c = this._versions, p = c.filter(function(E) {\n return E._cfg.version === a;\n })[0];\n return p || (p = new this.Version(a), c.push(p), c.sort(Yh), p.stores({}), this._state.autoSchema = !1, p);\n }, Ze.prototype._whenReady = function(a) {\n var c = this;\n return this.idbdb && (this._state.openComplete || ge.letThrough || this._vip) ? a() : new ce(function(p, E) {\n if (c._state.openComplete)\n return E(new pe.DatabaseClosed(c._state.dbOpenError));\n if (!c._state.isBeingOpened) {\n if (!c._state.autoOpen)\n return void E(new pe.DatabaseClosed());\n c.open().catch(Oe);\n }\n c._state.dbReadyPromise.then(p, E);\n }).then(a);\n }, Ze.prototype.use = function(a) {\n var c = a.stack, p = a.create, E = a.level, I = a.name;\n return I && this.unuse({ stack: c, name: I }), a = this._middlewares[c] || (this._middlewares[c] = []), a.push({ stack: c, create: p, level: E ?? 10, name: I }), a.sort(function(b, R) {\n return b.level - R.level;\n }), this;\n }, Ze.prototype.unuse = function(a) {\n var c = a.stack, p = a.name, E = a.create;\n return c && this._middlewares[c] && (this._middlewares[c] = this._middlewares[c].filter(function(I) {\n return E ? I.create !== E : !!p && I.name !== p;\n })), this;\n }, Ze.prototype.open = function() {\n var a = this;\n return xn(on, function() {\n return jh(a);\n });\n }, Ze.prototype._close = function() {\n var a = this._state, c = Wn.indexOf(this);\n if (0 <= c && Wn.splice(c, 1), this.idbdb) {\n try {\n this.idbdb.close();\n } catch {\n }\n this.idbdb = null;\n }\n a.isBeingOpened || (a.dbReadyPromise = new ce(function(p) {\n a.dbReadyResolve = p;\n }), a.openCanceller = new ce(function(p, E) {\n a.cancelOpen = E;\n }));\n }, Ze.prototype.close = function(p) {\n var c = (p === void 0 ? { disableAutoOpen: !0 } : p).disableAutoOpen, p = this._state;\n c ? (p.isBeingOpened && p.cancelOpen(new pe.DatabaseClosed()), this._close(), p.autoOpen = !1, p.dbOpenError = new pe.DatabaseClosed()) : (this._close(), p.autoOpen = this._options.autoOpen || p.isBeingOpened, p.openComplete = !1, p.dbOpenError = null);\n }, Ze.prototype.delete = function(a) {\n var c = this;\n a === void 0 && (a = { disableAutoOpen: !0 });\n var p = 0 < arguments.length && typeof arguments[0] != \"object\", E = this._state;\n return new ce(function(I, b) {\n function R() {\n c.close(a);\n var M = c._deps.indexedDB.deleteDatabase(c.name);\n M.onsuccess = Ve(function() {\n var _, L, z;\n _ = c._deps, L = c.name, z = _.indexedDB, _ = _.IDBKeyRange, wo(z) || L === bi || yo(z, _).delete(L).catch(Oe), I();\n }), M.onerror = Bt(b), M.onblocked = c._fireOnBlocked;\n }\n if (p)\n throw new pe.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");\n E.isBeingOpened ? E.dbReadyPromise.then(R) : R();\n });\n }, Ze.prototype.backendDB = function() {\n return this.idbdb;\n }, Ze.prototype.isOpen = function() {\n return this.idbdb !== null;\n }, Ze.prototype.hasBeenClosed = function() {\n var a = this._state.dbOpenError;\n return a && a.name === \"DatabaseClosed\";\n }, Ze.prototype.hasFailed = function() {\n return this._state.dbOpenError !== null;\n }, Ze.prototype.dynamicallyOpened = function() {\n return this._state.autoSchema;\n }, Object.defineProperty(Ze.prototype, \"tables\", { get: function() {\n var a = this;\n return r(this._allTables).map(function(c) {\n return a._allTables[c];\n });\n }, enumerable: !1, configurable: !0 }), Ze.prototype.transaction = function() {\n var a = (function(c, p, E) {\n var I = arguments.length;\n if (I < 2)\n throw new pe.InvalidArgument(\"Too few arguments\");\n for (var b = new Array(I - 1); --I; )\n b[I - 1] = arguments[I];\n return E = b.pop(), [c, Z(b), E];\n }).apply(this, arguments);\n return this._transaction.apply(this, a);\n }, Ze.prototype._transaction = function(a, c, p) {\n var E = this, I = ge.trans;\n I && I.db === this && a.indexOf(\"!\") === -1 || (I = null);\n var b, R, M = a.indexOf(\"?\") !== -1;\n a = a.replace(\"!\", \"\").replace(\"?\", \"\");\n try {\n if (R = c.map(function(L) {\n if (L = L instanceof E.Table ? L.name : L, typeof L != \"string\")\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return L;\n }), a == \"r\" || a === ao)\n b = ao;\n else {\n if (a != \"rw\" && a != lo)\n throw new pe.InvalidArgument(\"Invalid transaction mode: \" + a);\n b = lo;\n }\n if (I) {\n if (I.mode === ao && b === lo) {\n if (!M)\n throw new pe.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n I = null;\n }\n I && R.forEach(function(L) {\n if (I && I.storeNames.indexOf(L) === -1) {\n if (!M)\n throw new pe.SubTransaction(\"Table \" + L + \" not included in parent transaction.\");\n I = null;\n }\n }), M && I && !I.active && (I = null);\n }\n } catch (L) {\n return I ? I._promise(null, function(z, D) {\n D(L);\n }) : Xe(L);\n }\n var _ = (function L(z, D, V, N, k) {\n return ce.resolve().then(function() {\n var G = ge.transless || ge, B = z._createTransaction(D, V, z._dbSchema, N);\n if (B.explicit = !0, G = { trans: B, transless: G }, N)\n B.idbtrans = N.idbtrans;\n else\n try {\n B.create(), B.idbtrans._explicit = !0, z._state.PR1398_maxLoop = 3;\n } catch (X) {\n return X.name === Qt.InvalidState && z.isOpen() && 0 < --z._state.PR1398_maxLoop ? (console.warn(\"Dexie: Need to reopen db\"), z.close({ disableAutoOpen: !1 }), z.open().then(function() {\n return L(z, D, V, null, k);\n })) : Xe(X);\n }\n var W, j = Ke(k);\n return j && Hn(), G = ce.follow(function() {\n var X;\n (W = k.call(B, B)) && (j ? (X = ln.bind(null, null), W.then(X, X)) : typeof W.next == \"function\" && typeof W.throw == \"function\" && (W = Fo(W)));\n }, G), (W && typeof W.then == \"function\" ? ce.resolve(W).then(function(X) {\n return B.active ? X : Xe(new pe.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\"));\n }) : G.then(function() {\n return W;\n })).then(function(X) {\n return N && B._resolve(), B._completion.then(function() {\n return X;\n });\n }).catch(function(X) {\n return B._reject(X), Xe(X);\n });\n });\n }).bind(null, this, b, R, I, p);\n return I ? I._promise(b, _, \"lock\") : ge.trans ? xn(ge.transless, function() {\n return E._whenReady(_);\n }) : this._whenReady(_);\n }, Ze.prototype.table = function(a) {\n if (!m(this._allTables, a))\n throw new pe.InvalidTable(\"Table \".concat(a, \" does not exist\"));\n return this._allTables[a];\n }, Ze);\n function Ze(a, c) {\n var p = this;\n this._middlewares = {}, this.verno = 0;\n var E = Ze.dependencies;\n this._options = c = n({ addons: Ze.addons, autoOpen: !0, indexedDB: E.indexedDB, IDBKeyRange: E.IDBKeyRange, cache: \"cloned\" }, c), this._deps = { indexedDB: c.indexedDB, IDBKeyRange: c.IDBKeyRange }, E = c.addons, this._dbSchema = {}, this._versions = [], this._storeNames = [], this._allTables = {}, this.idbdb = null, this._novip = this;\n var I, b, R, M, _, L = { dbOpenError: null, isBeingOpened: !1, onReadyBeingFired: null, openComplete: !1, dbReadyResolve: Oe, dbReadyPromise: null, cancelOpen: Oe, openCanceller: null, autoSchema: !0, PR1398_maxLoop: 3, autoOpen: c.autoOpen };\n L.dbReadyPromise = new ce(function(D) {\n L.dbReadyResolve = D;\n }), L.openCanceller = new ce(function(D, V) {\n L.cancelOpen = V;\n }), this._state = L, this.name = a, this.on = Rs(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { ready: [Jr, Oe] }), this.on.ready.subscribe = P(this.on.ready.subscribe, function(D) {\n return function(V, N) {\n Ze.vip(function() {\n var k, G = p._state;\n G.openComplete ? (G.dbOpenError || ce.resolve().then(V), N && D(V)) : G.onReadyBeingFired ? (G.onReadyBeingFired.push(V), N && D(V)) : (D(V), k = p, N || D(function B() {\n k.on.ready.unsubscribe(V), k.on.ready.unsubscribe(B);\n }));\n });\n };\n }), this.Collection = (I = this, Fs(_h.prototype, function(W, B) {\n this.db = I;\n var N = Ka, k = null;\n if (B)\n try {\n N = B();\n } catch (j) {\n k = j;\n }\n var G = W._ctx, B = G.table, W = B.hook.reading.fire;\n this._ctx = { table: B, index: G.index, isPrimKey: !G.index || B.schema.primKey.keyPath && G.index === B.schema.primKey.name, range: N, keysOnly: !1, dir: \"next\", unique: \"\", algorithm: null, filter: null, replayFilter: null, justLimit: !0, isMatch: null, offset: 0, limit: 1 / 0, error: k, or: G.or, valueMapper: W !== _t ? W : null };\n })), this.Table = (b = this, Fs(Qa.prototype, function(D, V, N) {\n this.db = b, this._tx = N, this.name = D, this.schema = V, this.hook = b._allTables[D] ? b._allTables[D].hook : Rs(null, { creating: [ws, Oe], reading: [qr, _t], updating: [Fh, Oe], deleting: [Cs, Oe] });\n })), this.Transaction = (R = this, Fs(kh.prototype, function(D, V, N, k, G) {\n var B = this;\n this.db = R, this.mode = D, this.storeNames = V, this.schema = N, this.chromeTransactionDurability = k, this.idbtrans = null, this.on = Rs(this, \"complete\", \"error\", \"abort\"), this.parent = G || null, this.active = !0, this._reculock = 0, this._blockedFuncs = [], this._resolve = null, this._reject = null, this._waitingFor = null, this._waitingQueue = null, this._spinCount = 0, this._completion = new ce(function(W, j) {\n B._resolve = W, B._reject = j;\n }), this._completion.then(function() {\n B.active = !1, B.on.complete.fire();\n }, function(W) {\n var j = B.active;\n return B.active = !1, B.on.error.fire(W), B.parent ? B.parent._reject(W) : j && B.idbtrans && B.idbtrans.abort(), Xe(W);\n });\n })), this.Version = (M = this, Fs(Kh.prototype, function(D) {\n this.db = M, this._cfg = { version: D, storesSource: null, dbschema: {}, tables: {}, contentUpgrade: null };\n })), this.WhereClause = (_ = this, Fs(tl.prototype, function(D, V, N) {\n if (this.db = _, this._ctx = { table: D, index: V === \":id\" ? null : V, or: N }, this._cmp = this._ascending = Me, this._descending = function(k, G) {\n return Me(G, k);\n }, this._max = function(k, G) {\n return 0 < Me(k, G) ? k : G;\n }, this._min = function(k, G) {\n return Me(k, G) < 0 ? k : G;\n }, this._IDBKeyRange = _._deps.IDBKeyRange, !this._IDBKeyRange)\n throw new pe.MissingAPI();\n })), this.on(\"versionchange\", function(D) {\n 0 < D.newVersion ? console.warn(\"Another connection wants to upgrade database '\".concat(p.name, \"'. Closing db now to resume the upgrade.\")) : console.warn(\"Another connection wants to delete database '\".concat(p.name, \"'. Closing db now to resume the delete request.\")), p.close({ disableAutoOpen: !1 });\n }), this.on(\"blocked\", function(D) {\n !D.newVersion || D.newVersion < D.oldVersion ? console.warn(\"Dexie.delete('\".concat(p.name, \"') was blocked\")) : console.warn(\"Upgrade '\".concat(p.name, \"' blocked by other connection holding version \").concat(D.oldVersion / 10));\n }), this._maxKey = Ds(c.IDBKeyRange), this._createTransaction = function(D, V, N, k) {\n return new p.Transaction(D, V, N, p._options.chromeTransactionDurability, k);\n }, this._fireOnBlocked = function(D) {\n p.on(\"blocked\").fire(D), Wn.filter(function(V) {\n return V.name === p.name && V !== p && !V._state.vcFired;\n }).map(function(V) {\n return V.on(\"versionchange\").fire(D);\n });\n }, this.use(Qh), this.use(eu), this.use(qh), this.use(Xh), this.use(Zh);\n var z = new Proxy(this, { get: function(D, V, N) {\n if (V === \"_vip\")\n return !0;\n if (V === \"table\")\n return function(G) {\n return ki(p.table(G), z);\n };\n var k = Reflect.get(D, V, N);\n return k instanceof Qa ? ki(k, z) : V === \"tables\" ? k.map(function(G) {\n return ki(G, z);\n }) : V === \"_createTransaction\" ? function() {\n return ki(k.apply(this, arguments), z);\n } : k;\n } });\n this.vip = z, E.forEach(function(D) {\n return D(p);\n });\n }\n var zi, It = typeof Symbol < \"u\" && \"observable\" in Symbol ? Symbol.observable : \"@@observable\", tu = (Do.prototype.subscribe = function(a, c, p) {\n return this._subscribe(a && typeof a != \"function\" ? a : { next: a, error: c, complete: p });\n }, Do.prototype[It] = function() {\n return this;\n }, Do);\n function Do(a) {\n this._subscribe = a;\n }\n try {\n zi = { indexedDB: i.indexedDB || i.mozIndexedDB || i.webkitIndexedDB || i.msIndexedDB, IDBKeyRange: i.IDBKeyRange || i.webkitIDBKeyRange };\n } catch {\n zi = { indexedDB: null, IDBKeyRange: null };\n }\n function ml(a) {\n var c, p = !1, E = new tu(function(I) {\n var b = Ke(a), R, M = !1, _ = {}, L = {}, z = { get closed() {\n return M;\n }, unsubscribe: function() {\n M || (M = !0, R && R.abort(), D && un.storagemutated.unsubscribe(N));\n } };\n I.start && I.start(z);\n var D = !1, V = function() {\n return oo(k);\n }, N = function(G) {\n _i(_, G), xo(L, _) && V();\n }, k = function() {\n var G, B, W;\n !M && zi.indexedDB && (_ = {}, G = {}, R && R.abort(), R = new AbortController(), W = function(j) {\n var X = Gn();\n try {\n b && Hn();\n var Q = an(a, j);\n return Q = b ? Q.finally(ln) : Q;\n } finally {\n X && Yn();\n }\n }(B = { subscr: G, signal: R.signal, requery: V, querier: a, trans: null }), Promise.resolve(W).then(function(j) {\n p = !0, c = j, M || B.signal.aborted || (_ = {}, function(X) {\n for (var Q in X)\n if (m(X, Q))\n return;\n return 1;\n }(L = G) || D || (un(Os, N), D = !0), oo(function() {\n return !M && I.next && I.next(j);\n }));\n }, function(j) {\n p = !1, [\"DatabaseClosedError\", \"AbortError\"].includes(j == null ? void 0 : j.name) || M || oo(function() {\n M || I.error && I.error(j);\n });\n }));\n };\n return setTimeout(V, 0), z;\n });\n return E.hasValue = function() {\n return p;\n }, E.getValue = function() {\n return c;\n }, E;\n }\n var Fn = $t;\n function Lo(a) {\n var c = dn;\n try {\n dn = !0, un.storagemutated.fire(a), Ro(a, !0);\n } finally {\n dn = c;\n }\n }\n f(Fn, n(n({}, St), { delete: function(a) {\n return new Fn(a, { addons: [] }).delete();\n }, exists: function(a) {\n return new Fn(a, { addons: [] }).open().then(function(c) {\n return c.close(), !0;\n }).catch(\"NoSuchDatabaseError\", function() {\n return !1;\n });\n }, getDatabaseNames: function(a) {\n try {\n return c = Fn.dependencies, p = c.indexedDB, c = c.IDBKeyRange, (wo(p) ? Promise.resolve(p.databases()).then(function(E) {\n return E.map(function(I) {\n return I.name;\n }).filter(function(I) {\n return I !== bi;\n });\n }) : yo(p, c).toCollection().primaryKeys()).then(a);\n } catch {\n return Xe(new pe.MissingAPI());\n }\n var c, p;\n }, defineClass: function() {\n return function(a) {\n l(this, a);\n };\n }, ignoreTransaction: function(a) {\n return ge.trans ? xn(ge.transless, a) : a();\n }, vip: Co, async: function(a) {\n return function() {\n try {\n var c = Fo(a.apply(this, arguments));\n return c && typeof c.then == \"function\" ? c : ce.resolve(c);\n } catch (p) {\n return Xe(p);\n }\n };\n }, spawn: function(a, c, p) {\n try {\n var E = Fo(a.apply(p, c || []));\n return E && typeof E.then == \"function\" ? E : ce.resolve(E);\n } catch (I) {\n return Xe(I);\n }\n }, currentTransaction: { get: function() {\n return ge.trans || null;\n } }, waitFor: function(a, c) {\n return c = ce.resolve(typeof a == \"function\" ? Fn.ignoreTransaction(a) : a).timeout(c || 6e4), ge.trans ? ge.trans.waitFor(c) : c;\n }, Promise: ce, debug: { get: function() {\n return Ut;\n }, set: function(a) {\n ka(a);\n } }, derive: y, extend: l, props: f, override: P, Events: Rs, on: un, liveQuery: ml, extendObservabilitySet: _i, getByKeyPath: U, setByKeyPath: Y, delByKeyPath: function(a, c) {\n typeof c == \"string\" ? Y(a, c, void 0) : \"length\" in c && [].map.call(c, function(p) {\n Y(a, p, void 0);\n });\n }, shallowClone: H, deepClone: se, getObjectDiff: Po, cmp: Me, asap: O, minKey: -1 / 0, addons: [], connections: Wn, errnames: Qt, dependencies: zi, cache: Rn, semVer: \"4.0.7\", version: \"4.0.7\".split(\".\").map(function(a) {\n return parseInt(a);\n }).reduce(function(a, c, p) {\n return a + c / Math.pow(10, 2 * p);\n }) })), Fn.maxKey = Ds(Fn.dependencies.IDBKeyRange), typeof dispatchEvent < \"u\" && typeof addEventListener < \"u\" && (un(Os, function(a) {\n dn || (a = new CustomEvent(fo, { detail: a }), dn = !0, dispatchEvent(a), dn = !1);\n }), addEventListener(fo, function(a) {\n a = a.detail, dn || Lo(a);\n }));\n var Xn, dn = !1, gl = function() {\n };\n return typeof BroadcastChannel < \"u\" && ((gl = function() {\n (Xn = new BroadcastChannel(fo)).onmessage = function(a) {\n return a.data && Lo(a.data);\n };\n })(), typeof Xn.unref == \"function\" && Xn.unref(), un(Os, function(a) {\n dn || Xn.postMessage(a);\n })), typeof addEventListener < \"u\" && (addEventListener(\"pagehide\", function(a) {\n if (!$t.disableBfCache && a.persisted) {\n Ut && console.debug(\"Dexie: handling persisted pagehide\"), Xn != null && Xn.close();\n for (var c = 0, p = Wn; c < p.length; c++)\n p[c].close({ disableAutoOpen: !1 });\n }\n }), addEventListener(\"pageshow\", function(a) {\n !$t.disableBfCache && a.persisted && (Ut && console.debug(\"Dexie: handling persisted pageshow\"), gl(), Lo({ all: new st(-1 / 0, [[]]) }));\n })), ce.rejectionMapper = function(a, c) {\n return !a || a instanceof vt || a instanceof TypeError || a instanceof SyntaxError || !a.name || !Ye[a.name] ? a : (c = new Ye[a.name](c || a.message, a), \"stack\" in a && v(c, \"stack\", { get: function() {\n return this.inner.stack;\n } }), c);\n }, ka(Ut), n($t, Object.freeze({ __proto__: null, Dexie: $t, liveQuery: ml, Entity: ja, cmp: Me, PropModSymbol: Jt, PropModification: Ps, replacePrefix: function(a, c) {\n return new Ps({ replacePrefix: [a, c] });\n }, add: function(a) {\n return new Ps({ add: a });\n }, remove: function(a) {\n return new Ps({ remove: a });\n }, default: $t, RangeSet: st, mergeRanges: _s, rangesOverlap: Ni }), { default: $t }), $t;\n });\n})(Rh);\nvar Pp = Rh.exports;\nconst Aa = /* @__PURE__ */ Ih(Pp), bc = Symbol.for(\"Dexie\"), Ra = globalThis[bc] || (globalThis[bc] = Aa);\nif (Aa.semVer !== Ra.semVer)\n throw new Error(`Two different versions of Dexie loaded in the same app: ${Aa.semVer} and ${Ra.semVer}`);\nclass Mp extends Ra {\n // number = type of the primkey\n constructor() {\n super(\"MyAppDatabase\");\n /**\n * Declare implicit table properties.\n * (Just to inform Typescript. Instantiated by Dexie in stores() method)\n * @type {Dexie.Table}\n */\n T(this, \"files\");\n this.version(1).stores({\n files: \"id, file\"\n });\n }\n}\nclass Op {\n constructor(t) {\n T(this, \"interval\", 1e4);\n T(this, \"maxTime\", 6e4);\n T(this, \"list\", /* @__PURE__ */ new Map());\n T(this, \"_enabled\", !1);\n T(this, \"_intervalId\", null);\n T(this, \"_fileCache\");\n this._fileCache = t;\n }\n get enabled() {\n return this._enabled;\n }\n set enabled(t) {\n if (this._enabled !== t) {\n if (this._enabled = t, !t) {\n this._intervalId !== null && clearInterval(this._intervalId), this._intervalId = null;\n return;\n }\n this._intervalId = setInterval(() => {\n const e = performance.now();\n for (const [n, s] of this.list)\n e - s > this.maxTime && this.clean(n);\n }, this.interval);\n }\n }\n update(t) {\n this.enabled && this.list.set(t, performance.now());\n }\n async clear() {\n for (const [t] of this.list)\n this.clean(t);\n }\n clean(t) {\n try {\n this._fileCache.files.delete(t);\n } catch {\n console.log(`File not found in indexedDB: ${t}`);\n }\n this.list.delete(t);\n }\n}\nconst ri = class ri extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /**\n * Event triggered when fragments are deleted.\n */\n T(this, \"onFragmentsDeleted\", new $());\n /**\n * Event triggered when fragments are loaded.\n */\n T(this, \"onFragmentsLoaded\", new $());\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * The data of the streamed models. It defines the geometries, their instances, its bounding box (OBB) and the assets to which they belong.\n */\n T(this, \"models\", {});\n /**\n * Importer of binary IFC data previously converted to fragment tiles.\n */\n T(this, \"serializer\", new xt.StreamSerializer());\n /**\n * Maximum time in milliseconds for a geometry to stay in the RAM cache.\n */\n T(this, \"maxRamTime\", 5e3);\n /**\n * Flag indicating whether to use the local cache for storing geometry files.\n */\n T(this, \"useCache\", !0);\n T(this, \"dbCleaner\");\n T(this, \"_culler\", null);\n T(this, \"_world\", null);\n T(this, \"_ramCache\", /* @__PURE__ */ new Map());\n T(this, \"_fileCache\", new Mp());\n T(this, \"_url\", null);\n T(this, \"_isDisposing\", !1);\n T(this, \"_geometryInstances\", {});\n T(this, \"_loadedFragments\", {});\n T(this, \"fragIDData\", /* @__PURE__ */ new Map());\n T(this, \"_baseMaterial\", new w.MeshLambertMaterial());\n T(this, \"_baseMaterialT\", new w.MeshLambertMaterial({\n transparent: !0,\n opacity: 0.5\n }));\n this.components.add(ri.uuid, this), this.dbCleaner = new Op(this._fileCache);\n }\n /**\n * The URL of the data source for the streaming service.\n * It must be set before using the streaming service.\n * If not set, an error will be thrown when trying to access the URL.\n */\n get url() {\n if (!this._url)\n throw new Error(\"url must be set before using the streaming service!\");\n return this._url;\n }\n /**\n * Sets the URL of the data source for the streaming service.\n * @param value - The new URL to be set.\n */\n set url(e) {\n this._url = e;\n }\n /**\n * The world in which the fragments will be displayed.\n * It must be set before using the streaming service.\n * If not set, an error will be thrown when trying to access the world.\n */\n get world() {\n if (!this._world)\n throw new Error(\"You must set a world before using the streamer!\");\n return this._world;\n }\n /**\n * Sets the world in which the fragments will be displayed.\n * @param world - The new world to be set.\n */\n set world(e) {\n var n;\n this._world = e, (n = this._culler) == null || n.dispose(), this._culler = new Fp(this.components, e), this._culler.onViewUpdated.add(\n async ({ toLoad: s, toRemove: i, toShow: r, toHide: o }) => {\n await this.loadFoundGeometries(s), await this.unloadLostGeometries(i), this.setMeshVisibility(r, !0), this.setMeshVisibility(o, !1);\n }\n );\n }\n /**\n * The culler used for managing and rendering the fragments.\n * It is automatically created when the world is set.\n */\n get culler() {\n if (!this._culler)\n throw new Error(\"You must set a world before using the streamer!\");\n return this._culler;\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n var e;\n this._isDisposing = !0, this.onFragmentsLoaded.reset(), this.onFragmentsDeleted.reset(), this._ramCache.clear(), this.models = {}, this._geometryInstances = {}, this._loadedFragments = {}, this.fragIDData.clear(), this._baseMaterial.dispose(), this._baseMaterialT.dispose(), (e = this._culler) == null || e.dispose(), this.onDisposed.trigger(ri.uuid), this.onDisposed.reset(), this._isDisposing = !1;\n }\n /**\n * Loads a new fragment group into the scene using streaming.\n *\n * @param settings - The settings for the new fragment group.\n * @param coordinate - Whether to federate this model with the rest.\n * @param properties - Optional properties for the new fragment group.\n * @returns The newly loaded fragment group.\n */\n async load(e, n, s) {\n const { assets: i, geometries: r, globalDataFileId: o } = e, l = this.url + o, d = await (await fetch(l)).arrayBuffer(), m = new Uint8Array(d), g = this.components.get(ke).load(m, { coordinate: n });\n this.world.scene.three.add(g);\n const { opaque: v, transparent: y } = g.geometryIDs;\n for (const [A, F] of v) {\n const P = g.keyFragments.get(F);\n if (P === void 0)\n throw new Error(\"Malformed fragments group!\");\n this.fragIDData.set(P, [g, A, /* @__PURE__ */ new Set()]);\n }\n for (const [A, F] of y) {\n const P = g.keyFragments.get(F);\n if (P === void 0)\n throw new Error(\"Malformed fragments group!\");\n this.fragIDData.set(P, [g, Math.abs(A), /* @__PURE__ */ new Set()]);\n }\n this.culler.add(g.uuid, i, r), this.models[g.uuid] = { assets: i, geometries: r };\n const x = /* @__PURE__ */ new Map();\n for (const A of i) {\n const F = A.id;\n for (const { transformation: P, geometryID: C, color: O } of A.geometries) {\n x.has(C) || x.set(C, []);\n const U = x.get(C);\n if (!U)\n throw new Error(\"Malformed instances\");\n U.push({ id: F, transformation: P, color: O });\n }\n }\n if (this._geometryInstances[g.uuid] = x, s) {\n const A = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map();\n for (const H in s.ids) {\n const K = s.ids[H], Z = parseInt(H, 10);\n A.set(Z, K);\n }\n for (const H in s.types) {\n const K = s.types[H], Z = parseInt(H, 10);\n F.set(Z, K);\n }\n const P = o.replace(\n \"-global\",\n \"-properties\"\n );\n g.streamSettings = {\n baseUrl: this.url,\n baseFileName: P,\n ids: A,\n types: F\n };\n const { indexesFile: C } = s, U = await (await fetch(this.url + C)).text(), Y = this.components.get(Xr);\n Y.setRelationMap(g, Y.getRelationsMapFromJSON(U));\n }\n return this.culler.updateTransformations(g.uuid), this.culler.needsUpdate = !0, g;\n }\n /**\n * Removes a fragment group from the scene.\n *\n * @param modelID - The unique identifier of the fragment group to remove.\n */\n remove(e) {\n this._isDisposing = !0;\n const s = this.components.get(ke).groups.get(e);\n if (s === void 0) {\n console.log(\"Group to delete not found.\");\n return;\n }\n delete this.models[e], delete this._geometryInstances[e], delete this._loadedFragments[e];\n const i = s.keyFragments.values();\n for (const r of i)\n this.fragIDData.delete(r);\n this.culler.remove(e), this._isDisposing = !1;\n }\n /**\n * Sets the visibility of items in fragments based on the provided filter.\n *\n * @param visible - The visibility state to set.\n * @param filter - A map of fragment IDs to arrays of item IDs.\n * Only items with IDs present in the arrays will be visible.\n */\n setVisibility(e, n) {\n const s = /* @__PURE__ */ new Map();\n for (const i in n) {\n const r = this.fragIDData.get(i);\n if (r === void 0)\n throw new Error(\"Geometry not found!\");\n const [o, l, u] = r, d = o.uuid;\n s.has(d) || s.set(d, /* @__PURE__ */ new Map());\n const m = s.get(d), f = n[i];\n for (const v of f)\n e ? u.delete(v) : u.add(v);\n m.get(l) || m.set(l, /* @__PURE__ */ new Set());\n const g = m.get(l);\n for (const v of f)\n g.add(v);\n }\n for (const [i, r] of s) {\n this.culler.setVisibility(e, i, r);\n for (const [o] of r) {\n const l = this._loadedFragments[i];\n if (!l)\n continue;\n const u = l[o];\n if (u)\n for (const d of u) {\n const m = n[d.id];\n m && d.setVisibility(e, m);\n }\n }\n }\n this.culler.needsUpdate = !0;\n }\n /**\n * Clears the local cache used for storing downloaded fragment files.\n *\n * @returns A Promise that resolves when the cache is cleared.\n */\n async clearCache() {\n await this._fileCache.delete();\n }\n async loadFoundGeometries(e) {\n for (const n in e) {\n if (this._isDisposing)\n return;\n const i = this.components.get(ke).groups.get(n);\n if (!i)\n return;\n const { geometries: r } = this.models[n], o = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Set();\n for (const [f, g] of e[n])\n for (const v of g) {\n l.add(v);\n const y = r[v];\n if (!y)\n throw new Error(\"Geometry not found\");\n if (y.geometryFile) {\n const x = y.geometryFile, A = o.get(x) || 0;\n o.set(x, A + f);\n }\n }\n const u = Array.from(o).sort((f, g) => g[1] - f[1]);\n for (const [f] of u) {\n const g = this.url + f;\n if (!this._ramCache.has(g)) {\n let x = new Uint8Array();\n if (this.useCache) {\n this.dbCleaner.update(g);\n const F = await this._fileCache.files.get(g);\n if (F)\n x = F.file;\n else {\n const C = await (await fetch(g)).arrayBuffer();\n x = new Uint8Array(C), this._fileCache.files.add({ file: x, id: g });\n }\n } else {\n const P = await (await fetch(g)).arrayBuffer();\n x = new Uint8Array(P);\n }\n const A = this.serializer.import(x);\n this._ramCache.set(g, { data: A, time: performance.now() });\n }\n const v = this._ramCache.get(g);\n if (!v)\n continue;\n v.time = performance.now();\n const y = [];\n if (v)\n for (const [x, { position: A, index: F, normal: P }] of v.data) {\n if (this._isDisposing)\n return;\n if (!l.has(x) || !this._geometryInstances[n] || !this._geometryInstances[n].has(x))\n continue;\n const O = this._geometryInstances[n].get(x);\n if (!O)\n throw new Error(\"Instances not found!\");\n const U = new w.BufferGeometry(), Y = new w.BufferAttribute(A, 3), H = new w.BufferAttribute(P, 3);\n U.setAttribute(\"position\", Y), U.setAttribute(\"normal\", H), U.setIndex(Array.from(F));\n const K = [], Z = [];\n for (const q of O)\n q.color[3] === 1 ? Z.push(q) : K.push(q);\n this.newFragment(i, x, U, K, !0, y), this.newFragment(i, x, U, Z, !1, y);\n }\n y.length && !this._isDisposing && this.onFragmentsLoaded.trigger(y);\n }\n const d = /* @__PURE__ */ new Set(), m = performance.now();\n for (const [f, { time: g }] of this._ramCache)\n m - g > this.maxRamTime && d.add(f);\n for (const f of d)\n this._ramCache.delete(f);\n }\n }\n async unloadLostGeometries(e) {\n if (this._isDisposing)\n return;\n const n = [], s = this.components.get(ke);\n for (const i in e) {\n const r = s.groups.get(i);\n if (!r)\n throw new Error(\"Fragment group not found!\");\n if (!this._loadedFragments[i])\n continue;\n const o = this._loadedFragments[i], l = e[i];\n for (const u of l) {\n if (this.culler.removeFragment(r.uuid, u), !o[u])\n continue;\n const d = o[u];\n for (const m of d)\n r.items.splice(r.items.indexOf(m), 1), n.push(m);\n delete o[u];\n }\n }\n n.length && this.onFragmentsDeleted.trigger(n);\n for (const i of n)\n s.list.delete(i.id), this.world.meshes.delete(i.mesh), i.mesh.material = [], i.dispose(!0);\n }\n setMeshVisibility(e, n) {\n for (const s in e)\n for (const i of e[s]) {\n const r = this._loadedFragments[s];\n if (!r)\n continue;\n const o = r[i];\n if (o)\n for (const l of o)\n l.mesh.visible = n;\n }\n }\n newFragment(e, n, s, i, r, o) {\n if (i.length === 0 || this._isDisposing)\n return;\n const l = e.geometryIDs, u = r ? l.transparent : l.opaque, m = n * (r ? -1 : 1), f = u.get(m);\n if (f === void 0)\n return;\n const g = e.keyFragments.get(f);\n if (g === void 0)\n return;\n const v = this.components.get(ke);\n if (v.list.has(g))\n return;\n const x = r ? this._baseMaterialT : this._baseMaterial, A = new xt.Fragment(s, x, i.length);\n A.id = g, A.mesh.uuid = g, A.group = e, e.add(A.mesh), e.items.push(A), v.list.set(A.id, A), this.world.meshes.add(A.mesh), this._loadedFragments[e.uuid] || (this._loadedFragments[e.uuid] = {});\n const F = this._loadedFragments[e.uuid];\n F[n] || (F[n] = []), F[n].push(A);\n const P = /* @__PURE__ */ new Map();\n for (let Y = 0; Y < i.length; Y++) {\n const H = new w.Matrix4(), K = new w.Color(), { id: Z, transformation: q, color: ne } = i[Y];\n H.fromArray(q);\n const [se, he, me] = ne;\n if (K.setRGB(se, he, me, \"srgb\"), P.has(Z)) {\n const Ie = P.get(Z);\n if (!Ie)\n continue;\n Ie.transforms.push(H), Ie.colors && Ie.colors.push(K);\n } else\n P.set(Z, { id: Z, colors: [K], transforms: [H] });\n }\n const C = Array.from(P.values());\n A.add(C);\n const O = this.fragIDData.get(A.id);\n if (!O)\n throw new Error(\"Fragment data not found!\");\n const U = O[2];\n U.size && A.setVisibility(!1, U), this.culler.addFragment(e.uuid, n, A), o.push(A);\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(ri, \"uuid\", \"22437e8d-9dbc-4b99-a04f-d2da280d50c8\");\nlet xc = ri;\nclass Dp {\n constructor() {\n T(this, \"_meshes\", /* @__PURE__ */ new Map());\n }\n /**\n * Highlights edges fill meshes based on selected fragments.\n */\n highlight(t, e, n, s) {\n if (!e.userData.indexFragmentMap || !e.geometry.index)\n return;\n const { userData: i } = e, r = i.indexFragmentMap, o = [], l = e.geometry.index.array;\n for (const [m, f] of r)\n for (const g in f)\n if (s[g]) {\n for (const v of f[g])\n if (s[g].has(v)) {\n const y = l[m * 3], x = l[m * 3 + 1], A = l[m * 3 + 2];\n o.push(y, x, A);\n }\n }\n this._meshes.has(t) || this._meshes.set(t, /* @__PURE__ */ new Map());\n const u = this._meshes.get(t);\n if (!u.has(e.uuid)) {\n const m = new w.MeshBasicMaterial({\n depthTest: !1,\n side: 2,\n color: n\n }), f = new w.BufferGeometry();\n f.attributes = e.geometry.attributes;\n const g = new w.Mesh(f, m);\n g.frustumCulled = !1, u.set(e.uuid, g);\n }\n const d = u.get(e.uuid);\n d.position.copy(e.position), e.parent && e.parent !== d.parent && e.parent.add(d), d.geometry.setIndex(o), d.material.color.copy(n);\n }\n /**\n * Clears the highlighted meshes for a specific style or all styles.\n *\n * @param name - The name of the style to clear. If not provided, clears all styles.\n *\n */\n clear(t) {\n for (const [e, n] of this._meshes)\n if (!(t && t !== e))\n for (const [s, i] of n)\n i.removeFromParent();\n }\n dispose() {\n for (const [t, e] of this._meshes)\n for (const [n, s] of e)\n s.removeFromParent(), s.geometry.attributes = {}, s.geometry.dispose(), s.material.dispose();\n this._meshes.clear();\n }\n}\nconst oi = class oi extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /** {@link OBC.Updateable.onBeforeUpdate} */\n T(this, \"onBeforeUpdate\", new $());\n /** {@link OBC.Updateable.onAfterUpdate} */\n T(this, \"onAfterUpdate\", new $());\n /** Event triggered when the Highlighter is setup. */\n T(this, \"onSetup\", new $());\n /** Indicates whether the Highlighter is setup. */\n T(this, \"isSetup\", !1);\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !0);\n /** Stores the events triggered by the Highlighter. */\n T(this, \"events\", {});\n /** Determines the multiple selection behavior. */\n T(this, \"multiple\", \"ctrlKey\");\n /** Zoom factor applied when zooming to selection. */\n T(this, \"zoomFactor\", 1.5);\n /** Indicates whether to zoom to the selection when highlighting. */\n T(this, \"zoomToSelection\", !1);\n /** Stores the backup color before selection. */\n T(this, \"backupColor\", null);\n /** Stores the current selection. */\n T(this, \"selection\", {});\n /** Stores the configuration options for the Highlighter. */\n T(this, \"config\", {\n selectName: \"select\",\n hoverName: \"hover\",\n selectionColor: new w.Color(\"#BCF124\"),\n hoverColor: new w.Color(\"#6528D7\"),\n autoHighlightOnClick: !0,\n world: null\n });\n /** Stores the colors used for highlighting selections. */\n T(this, \"colors\", /* @__PURE__ */ new Map());\n // Highlights the clipping fills of the fragments, if any\n T(this, \"_fills\", new Dp());\n T(this, \"_mouseState\", {\n down: !1,\n moved: !1\n });\n T(this, \"_colorsBeforeSelect\", {});\n T(this, \"saveHighlightersBeforeSelect\", (e) => {\n var s;\n const n = this.components.get(ke);\n for (const i in e) {\n const r = n.list.get(i);\n if (!r)\n continue;\n const o = (s = r.group) == null ? void 0 : s.uuid;\n if (o)\n for (const l in this.selection) {\n if (l === this.config.selectName || l === this.config.hoverName)\n continue;\n const u = this.selection[l][i];\n if (u) {\n l in this._colorsBeforeSelect || (this._colorsBeforeSelect[l] = {}), o in this._colorsBeforeSelect[l] || (this._colorsBeforeSelect[l] = { [o]: /* @__PURE__ */ new Set() });\n for (const d of u)\n this._colorsBeforeSelect[l][o].add(d);\n }\n }\n }\n });\n T(this, \"restoreHighlightersAfterDeselect\", () => {\n const e = this.components.get(ke);\n for (const n in this._colorsBeforeSelect) {\n let s = {};\n const i = this._colorsBeforeSelect[n];\n for (const r in i) {\n const o = e.groups.get(r);\n if (!o)\n continue;\n const l = o.getFragmentMap(i[r]);\n s = { ...s, ...l };\n }\n this.highlightByID(n, s, !1, !1);\n }\n this._colorsBeforeSelect = {};\n });\n T(this, \"clearHover\", () => {\n this.selection[this.config.hoverName] = {};\n });\n T(this, \"onMouseDown\", () => {\n this.enabled && (this._mouseState.down = !0);\n });\n T(this, \"onMouseUp\", async (e) => {\n const n = this.config.world;\n if (!n)\n throw new Error(\"No world found!\");\n if (!n.renderer)\n throw new Error(\"This world doesn't have a renderer!\");\n if (this.enabled && e.target === n.renderer.three.domElement) {\n if (this._mouseState.down = !1, this._mouseState.moved || e.button !== 0) {\n this._mouseState.moved = !1;\n return;\n }\n if (this._mouseState.moved = !1, this.config.autoHighlightOnClick) {\n const s = this.multiple === \"none\" ? !0 : !e[this.multiple];\n await this.highlight(this.config.selectName, s, this.zoomToSelection);\n }\n }\n });\n T(this, \"onMouseMove\", async () => {\n if (!this.enabled)\n return;\n if (this._mouseState.moved) {\n this.clear(this.config.hoverName);\n return;\n }\n this._mouseState.moved = this._mouseState.down;\n const e = {};\n for (const n in this.selection) {\n if (n === this.config.hoverName)\n continue;\n const s = this.selection[n];\n for (const i in s) {\n i in e || (e[i] = /* @__PURE__ */ new Set());\n const r = s[i];\n for (const o of r)\n e[i].add(o);\n }\n }\n await this.highlight(this.config.hoverName, !0, !1, e);\n });\n this.components.add(oi.uuid, this);\n }\n /** {@link Disposable.dispose} */\n async dispose() {\n this.setupEvents(!1), this._fills.dispose(), this.onBeforeUpdate.reset(), this.onAfterUpdate.reset(), this.selection = {};\n for (const e in this.events)\n this.events[e].onClear.reset(), this.events[e].onHighlight.reset();\n this.onSetup.reset(), this.events = {}, this.onDisposed.trigger(oi.uuid), this.onDisposed.reset();\n }\n /**\n * Adds a new selection with the given name and color.\n * Throws an error if a selection with the same name already exists.\n *\n * @param name - The name of the new selection.\n * @param color - The color to be used for highlighting the selection.\n *\n * @throws Will throw an error if a selection with the same name already exists.\n */\n add(e, n) {\n if (this.selection[e] || this.colors.has(e))\n throw new Error(\"A selection with that name already exists!\");\n this.colors.set(e, n), this.selection[e] = {}, this.events[e] = {\n onHighlight: new $(),\n onClear: new $()\n };\n }\n /**\n * Highlights a fragment based on a raycast from the mouse position.\n *\n * @param name - The name of the selection.\n * @param removePrevious - Whether to remove previous highlights.\n * @param zoomToSelection - Whether to zoom to the highlighted selection.\n * @param exclude - Fragments to exclude from the highlight.\n *\n * @returns The highlighted fragment and its ID, or null if no fragment was highlighted.\n *\n * @throws Will throw an error if the world or a required component is not found.\n * @throws Will throw an error if the selection does not exist.\n * @throws Will throw an error if the fragment or its geometry is not found.\n * @throws Will throw an error if the item ID is not found.\n * @throws Will throw an error if the fragment does not belong to a FragmentsGroup.\n */\n async highlight(e, n = !0, s = this.zoomToSelection, i = {}) {\n if (!this.enabled)\n return null;\n if (!this.config.world)\n throw new Error(\"No world found in config!\");\n const r = this.config.world;\n if (!this.selection[e])\n throw new Error(`Selection ${e} does not exist.`);\n const o = [], u = this.components.get(ke).meshes;\n for (const C of u)\n o.push(C);\n const d = this.components.get(li);\n for (const C of d.list) {\n const O = C;\n if (O.edges) {\n const U = O.edges.fillMeshes;\n for (const Y of U)\n o.push(Y);\n }\n }\n const g = this.components.get(Dt).get(r).castRay(o);\n if (!g || !g.face)\n return this.clear(e), null;\n const v = g.object;\n if (!v.fragment && v.userData.indexFragmentMap) {\n if (g.faceIndex === void 0 || !v.geometry.index)\n return null;\n const { userData: C } = v, U = C.indexFragmentMap.get(g.faceIndex);\n if (U) {\n await this.highlightByID(\n e,\n U,\n n,\n s,\n i,\n v\n );\n const Y = Object.keys(U)[0];\n return { id: Array.from(U[Y])[0], fragments: U };\n }\n return null;\n }\n const y = v.geometry, x = g.instanceId;\n if (!y || x === void 0)\n return null;\n const A = v.fragment.getItemID(x);\n if (A === null)\n throw new Error(\"Item ID not found!\");\n const F = v.fragment.group;\n if (!F)\n throw new Error(\"Fragment must belong to a FragmentsGroup!\");\n const P = F.getFragmentMap([A]);\n return await this.highlightByID(\n e,\n P,\n n,\n s,\n i\n ), { id: A, fragments: P };\n }\n /**\n * Highlights a fragment based on a given fragment ID map.\n *\n * @param name - The name of the selection.\n * @param fragmentIdMap - The fragment ID map to highlight.\n * @param removePrevious - Whether to remove previous highlights.\n * @param zoomToSelection - Whether to zoom to the highlighted selection.\n * @param exclude - Fragments to exclude from the highlight.\n * @param fillMesh - The fill mesh to also highlight, if any.\n *\n * @returns Promise that resolves when the highlighting is complete.\n *\n * @throws Will throw an error if the selection does not exist.\n * @throws Will throw an error if the fragment or its geometry is not found.\n * @throws Will throw an error if the item ID is not found.\n * @throws Will throw an error if the fragment does not belong to a FragmentsGroup.\n */\n async highlightByID(e, n, s = !0, i = this.zoomToSelection, r = {}, o = void 0) {\n if (!this.enabled)\n return;\n s && this.clear(e);\n const l = this.components.get(ke), u = this.colors.get(e);\n if (!u)\n throw new Error(\"Color for selection not found!\");\n const d = {};\n for (const m in n) {\n const f = n[m], g = r[m];\n for (const v of f)\n (!g || !g.has(v)) && (d[m] || (d[m] = /* @__PURE__ */ new Set()), d[m].add(v));\n }\n for (const m in d) {\n const f = l.list.get(m);\n if (!f)\n continue;\n this.selection[e][m] || (this.selection[e][m] = /* @__PURE__ */ new Set());\n const g = n[m];\n for (const v of g)\n this.selection[e][m].add(v), f.setColor(u, [v]);\n if (f.mesh.userData.fills)\n for (const v of f.mesh.userData.fills)\n this._fills.highlight(e, v, u, n);\n }\n this.events[e].onHighlight.trigger(this.selection[e]), o && this._fills.highlight(e, o, u, n), i && await this.zoomSelection(e);\n }\n /**\n * Clears the selection for the given name or all selections if no name is provided.\n *\n * @param name - The name of the selection to clear. If not provided, clears all selections.\n *\n * @throws Will throw an error if the FragmentsManager is not found.\n * @throws Will throw an error if the fragment or its geometry is not found.\n * @throws Will throw an error if the item ID is not found.\n * @throws Will throw an error if the fragment does not belong to a FragmentsGroup.\n */\n clear(e) {\n const n = e ? [e] : Object.keys(this.selection);\n for (const s of n) {\n this._fills.clear(s);\n const i = this.components.get(ke), r = this.selection[s];\n for (const o in this.selection[s]) {\n const l = i.list.get(o);\n if (!l)\n continue;\n const u = r[o];\n u && (this.backupColor ? l.setColor(this.backupColor) : l.resetColor(u));\n }\n this.events[s].onClear.trigger(null), this.selection[s] = {};\n }\n }\n /**\n * Sets up the Highlighter with the provided configuration.\n *\n * @param config - Optional configuration for the Highlighter.\n * If not provided, the Highlighter will use the default configuration.\n *\n * @throws Will throw an error if the world or a required component is not found.\n * @throws Will throw an error if the selection already exists.\n * @throws Will throw an error if the fragment or its geometry is not found.\n * @throws Will throw an error if the item ID is not found.\n * @throws Will throw an error if the fragment does not belong to a FragmentsGroup.\n */\n setup(e) {\n this.config = { ...this.config, ...e }, this.add(this.config.selectName, this.config.selectionColor), this.add(this.config.hoverName, this.config.hoverColor), this.setupEvents(!0), this.enabled = !0, this.isSetup = !0, this.onSetup.trigger(this);\n }\n async zoomSelection(e) {\n if (!this.config.world)\n throw new Error(\"No world found in config!\");\n const n = this.config.world;\n if (!n.camera.hasCameraControls())\n return;\n const s = this.components.get(wa), i = this.components.get(ke);\n s.reset();\n const r = this.selection[e];\n if (!Object.keys(r).length)\n return;\n for (const A in r) {\n const F = i.list.get(A);\n if (!F)\n continue;\n const P = r[A];\n s.addMesh(F.mesh, P);\n }\n const o = s.getSphere(), l = 1 / 0, u = -1 / 0, { x: d, y: m, z: f } = o.center, g = o.radius === l || d === l || m === l || f === l, v = o.radius === u || d === u || m === u || f === u, y = o.radius === 0;\n if (g || v || y)\n return;\n o.radius *= this.zoomFactor, await n.camera.controls.fitToSphere(o, !0);\n }\n setupEvents(e) {\n if (!this.config.world)\n throw new Error(\"No world found while setting up events!\");\n if (this.config.world.isDisposing)\n return;\n if (!this.config.world.renderer)\n throw new Error(\"The given world doesn't have a renderer!\");\n const n = this.config.world.renderer.three.domElement, s = this.events[this.config.selectName].onHighlight;\n s.remove(this.clearHover), s.remove(this.saveHighlightersBeforeSelect);\n const i = this.events[this.config.selectName].onClear;\n i.remove(this.restoreHighlightersAfterDeselect), n.removeEventListener(\"mousedown\", this.onMouseDown), n.removeEventListener(\"mouseup\", this.onMouseUp), n.removeEventListener(\"pointermove\", this.onMouseMove), e && (s.add(this.clearHover), s.add(this.saveHighlightersBeforeSelect), i.add(this.restoreHighlightersAfterDeselect), n.addEventListener(\"mousedown\", this.onMouseDown), n.addEventListener(\"mouseup\", this.onMouseUp), n.addEventListener(\"pointermove\", this.onMouseMove));\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(oi, \"uuid\", \"cb8a76f2-654a-4b50-80c6-66fd83cafd77\");\nlet Sc = oi;\nconst Vr = class Vr extends Re {\n constructor(e) {\n super(e);\n /** {@link OBC.Disposable.onDisposed} */\n T(this, \"onDisposed\", new $());\n /**\n * Event triggered when the user navigates to a different floor plan.\n * The event provides the id of the floor plan the user navigated to.\n */\n T(this, \"onNavigated\", new $());\n /**\n * Event triggered when the user exits the floor plan view.\n */\n T(this, \"onExited\", new $());\n /** {@link OBC.Component.enabled} */\n T(this, \"enabled\", !1);\n /** The floorplan that is currently selected. */\n T(this, \"currentPlan\", null);\n /** The offset from the clipping planes to their respective floor plan elevation. */\n T(this, \"defaultSectionOffset\", 1.5);\n /** The offset of the 2D camera to the floor plan elevation. */\n T(this, \"defaultCameraOffset\", 30);\n /**\n * A list of all the floor plans created.\n * Each floor plan is represented by a {@link PlanView} object.\n */\n T(this, \"list\", []);\n /**\n * A reference to the world in which the floor plans are displayed.\n * This is used to access the camera and other relevant components.\n */\n T(this, \"world\");\n T(this, \"_floorPlanViewCached\", !1);\n T(this, \"_previousCamera\", new w.Vector3());\n T(this, \"_previousTarget\", new w.Vector3());\n T(this, \"_previousProjection\", \"Perspective\");\n this.components.add(Vr.uuid, this);\n }\n /** {@link OBC.Disposable.dispose} */\n dispose() {\n this.onExited.reset(), this.onNavigated.reset(), this.list = [], this.onDisposed.trigger(), this.onDisposed.reset();\n }\n /**\n * Generates floor plans from the provided IFC model.\n * @param model - The IFC model from which to generate floor plans.\n * @throws Will throw an error if the model does not have properties or if floor plans are not found.\n */\n async generate(e) {\n if (!e.hasProperties)\n throw new Error(\"Properties are needed to compute plan views!\");\n const n = await e.getAllPropertiesOfType(\n de.IFCBUILDINGSTOREY\n );\n if (!n)\n throw new Error(\"Floorplans not found!\");\n const s = e.coordinationMatrix.elements[13], i = await yn.getUnits(e);\n for (const r of Object.values(n)) {\n const o = { value: 0 };\n this.getAbsoluteFloorHeight(r.ObjectPlacement, o);\n const l = o.value * i + s;\n this.create({\n name: r.Name.value,\n id: r.GlobalId.value,\n normal: new w.Vector3(0, -1, 0),\n point: new w.Vector3(0, l, 0),\n ortho: !0,\n offset: this.defaultSectionOffset\n });\n }\n }\n /**\n * Creates a new floor plan based on the provided configuration.\n *\n * @param config - The configuration object for the new floor plan.\n * @throws Will throw an error if the world is not set before creating the clipping planes.\n * @throws Will throw a warning if a floor plan with the same id already exists.\n */\n create(e) {\n if (!this.world)\n throw new Error(\n \"You must set a world before creating the clipping planes!\"\n );\n if (this.list.find((r) => r.id === e.id)) {\n console.warn(`There's already a plan with the id: ${e.id}`);\n return;\n }\n const s = this.createClippingPlane(e), i = { ...e, plane: s };\n this.list.push(i);\n }\n /**\n * Navigates to the floor plan with the specified id.\n *\n * @param id - The id of the floor plan to navigate to.\n * @param animate - Whether to animate the camera movement. Default is false.\n */\n async goTo(e, n = !1) {\n var s;\n ((s = this.currentPlan) == null ? void 0 : s.id) !== e && (this.onNavigated.trigger({ id: e }), this.storeCameraPosition(), await this.hidePreviousClippingPlane(), this.updateCurrentPlan(e), await this.activateCurrentPlan(), this.enabled || (await this.moveCameraTo2DPlanPosition(n), this.enabled = !0));\n }\n /**\n * Exits the floor plan view and returns to the 3D view.\n *\n * @param animate - Whether to animate the camera movement. Default is false.\n * @returns {Promise}\n */\n async exitPlanView(e = !1) {\n if (!this.enabled || !this.world)\n return;\n this.enabled = !1, this.onExited.trigger(), this.cacheFloorplanView();\n const n = this.world.camera;\n n.set(\"Orbit\"), await n.projection.set(this._previousProjection), this.currentPlan && this.currentPlan.plane && (this.currentPlan.plane.enabled = !1, this.currentPlan.plane.edges.enabled = !1, this.currentPlan.plane.edges.visible = !1), this.currentPlan = null, await n.controls.setLookAt(\n this._previousCamera.x,\n this._previousCamera.y,\n this._previousCamera.z,\n this._previousTarget.x,\n this._previousTarget.y,\n this._previousTarget.z,\n e\n );\n }\n storeCameraPosition() {\n this.enabled ? this.cacheFloorplanView() : this.store3dCameraPosition();\n }\n createClippingPlane(e) {\n if (!this.world)\n throw new Error(\"World is needed to create clipping planes!\");\n const { normal: n, point: s } = e, i = s.clone();\n e.offset && (i.y += e.offset);\n const r = this.components.get(li), o = r.Type;\n r.Type = di;\n const l = r.createFromNormalAndCoplanarPoint(\n this.world,\n n,\n i\n );\n return l.edges.update(), l.visible = !1, l.enabled = !1, l.edges.enabled = !1, l.edges.visible = !1, r.Type = o, l;\n }\n cacheFloorplanView() {\n if (!this.world)\n throw new Error(\"World is needed to create clipping planes!\");\n this._floorPlanViewCached = !0, this.world.camera.controls.saveState();\n }\n async moveCameraTo2DPlanPosition(e) {\n if (!this.world)\n throw new Error(\"World is needed to create clipping planes!\");\n const n = this.world.camera;\n this._floorPlanViewCached ? await n.controls.reset(e) : await n.controls.setLookAt(0, 100, 0, 0, 0, 0, e);\n }\n async activateCurrentPlan() {\n if (!this.world)\n throw new Error(\"World is needed to create clipping planes!\");\n if (!this.currentPlan)\n throw new Error(\"Current plan is not defined.\");\n const e = this.world.camera;\n this.currentPlan.plane && (this.currentPlan.plane.enabled = !0, this.currentPlan.plane.edges.fillNeedsUpdate = !0, this.currentPlan.plane.edges.visible = !0), e.set(\"Plan\");\n const n = this.currentPlan.ortho ? \"Orthographic\" : \"Perspective\";\n await e.projection.set(n);\n }\n store3dCameraPosition() {\n if (!this.world)\n throw new Error(\"World is needed to create clipping planes!\");\n const e = this.world.camera;\n e.three.getWorldPosition(this._previousCamera), e.controls.getTarget(this._previousTarget), this._previousProjection = e.projection.current;\n }\n updateCurrentPlan(e) {\n const n = this.list.find((s) => s.id === e);\n if (!n)\n throw new Error(\"The specified plan is undefined!\");\n this.currentPlan = n;\n }\n async hidePreviousClippingPlane() {\n if (this.currentPlan) {\n const e = this.currentPlan.plane;\n e && (e.enabled = !1), this.currentPlan.plane instanceof di && (this.currentPlan.plane.edges.visible = !1);\n }\n }\n getAbsoluteFloorHeight(e, n) {\n const s = e.RelativePlacement.Location.Coordinates;\n n.value += s[2].value, e.PlacementRelTo && this.getAbsoluteFloorHeight(e.PlacementRelTo, n);\n }\n};\n/**\n * A unique identifier for the component.\n * This UUID is used to register the component within the Components system.\n */\nT(Vr, \"uuid\", \"a80874aa-1c93-43a4-80f2-df346da086b1\");\nlet Ac = Vr;\nexport {\n yc as AngleMeasurement,\n Ic as AreaMeasurement,\n Ec as Civil3DNavigator,\n vc as CivilCrossSectionNavigator,\n gc as CivilElevationNavigator,\n Ah as CivilNavigator,\n mc as CivilPlanNavigator,\n ms as ClipEdges,\n wp as ClippingEdges,\n yp as ClippingFills,\n Tc as EdgeMeasurement,\n di as EdgesPlane,\n Cp as EdgesStyles,\n Cc as FaceMeasurement,\n Fp as GeometryCullerRenderer,\n Ba as GraphicVertexPicker,\n Sc as Highlighter,\n xc as IfcStreamer,\n _n as LengthMeasurement,\n ft as Mark,\n nn as Marker,\n Ac as Plans,\n Ip as Postproduction,\n Sa as PostproductionRenderer,\n Uf as RendererWith2D,\n pc as ShadowDropper,\n fi as SimpleDimensionLine,\n Mp as StreamFileDatabase,\n Op as StreamerDbCleaner,\n wc as VolumeMeasurement\n};\n"],"names":["nu","Object","defineProperty","T","h","t","e","enumerable","configurable","writable","value","su","Su","S","Au","Dc","Ru","Fu","Il","_o","yl","Wr","Pu","Math","pow","Uo","Symbol","vs","index","count","attributes","position","Mu","Lc","drawRange","n","start","s","i","max","r","min","offset","floor","Nc","groups","length","Set","o","l","u","add","Array","from","values","sort","push","He","x","y","z","wl","Cl","set","Tl","Yi","ks","Bo","d","m","f","g","v","A","F","P","C","O","U","Y","H","K","Z","q","ne","se","he","me","en","Bu","candidate","pn","fill","map","bounds","Float32Array","rightCacheBounds","leftCacheBounds","Hi","Wi","constructor","Vu","pos","axis","Gu","Wu","geometry","indirect","_indirectBuffer","SharedArrayBuffer","ArrayBuffer","Uint32Array","Uint16Array","Yu","useSharedArrayBuffer","forEach","Lu","verbose","console","warn","Ou","setIndex","Du","array","maxDepth","maxLeafTris","strategy","onProgress","Nu","normalized","isInterleavedBufferAttribute","data","stride","abs","Uu","boundingData","_u","zu","splice","ku","splitAxis","left","Ie","right","Hu","_roots","Error","sn","this","setFromPointsField","setFromPoints","dot","isSeparated","prototype","setFromBox","Ku","subVectors","end","Ma","at","closestPointToPoint","distanceToSquared","copy","ju","radius","center","a","b","c","distanceTo","getPlane","distanceToPoint","projectPoint","containsPoint","ko","Lt","super","isExtendedTriangle","satAxes","satBounds","points","sphere","plane","needsUpdate","intersectsSphere","update","getNormal","setFromNormalAndCoplanarPoint","closestPointToSegment","sqrt","intersectsTriangle","delta","normal","intersectLine","crossVectors","distanceToTriangle","getCenter","ht","isOrientedBox","matrix","invMatrix","alignedSatBounds","applyMatrix4","invert","intersectsBox","clamp","distanceToBox","Oa","_getNewPrimitive","_primitives","getPrimitive","pop","releasePrimitive","Zu","wt","gt","Et","Ct","Tt","bt","_c","ze","float32Array","uint16Array","uint32Array","setBuffer","clearBuffer","In","fs","Zn","Ki","qu","aa","zs","zo","Qn","qn","Jn","ji","Xi","Zi","bl","xl","Sl","Qi","Kr","getX","uv","uv1","fromBufferAttribute","intersectTriangle","distance","origin","point","clone","$u","getInterpolation","direction","multiplyScalar","materialIndex","face","faceIndex","ed","Qe","getY","getZ","sd","id","isArray","byteLength","has","Ee","ue","Al","wn","intersectBox","ad","resolveTriangleIndex","Rl","ld","la","td","Fl","cd","hd","ca","nd","qi","$n","es","Vs","Pl","Ji","ud","ha","boundingBox","computeBoundingBox","boundsTree","shapecast","intersectsBounds","$i","Vo","Gs","dd","fd","pd","md","gd","boundsTraverseOrder","intersectsRange","sub","Ed","Ml","vd","ua","rd","Ol","Id","yd","da","od","er","ts","ns","Ys","Dl","tr","wd","fa","nr","Go","Hs","Cd","Td","bd","xd","Sd","ei","Sr","En","ss","is","Yo","Ho","Wo","Ft","sr","Ll","Da","serialize","cloneBuffers","getIndex","roots","slice","indirectBuffer","deserialize","isBufferGeometry","assign","setBoundingBox","getBoundingBox","refit","traverse","wr","raycast","isMaterial","side","raycastFirst","intersectsGeometry","bvhcast","intersectsRanges","intersectsTriangles","Rd","closestPointToGeometry","Ju","makeEmpty","union","Nl","matrixWorld","ray","object","near","far","Ko","_l","Fd","Pd","material","firstHitOnly","call","Md","Od","$","handlers","remove","filter","reset","ti","async","La","components","Re","Uc","Map","onWorldChanged","world","action","worlds","delete","uuid","Dd","arguments","Ld","updateClippingPlanes","onClippingPlanesUpdated","trigger","setPlane","isLocal","clippingPlanes","indexOf","three","Bc","pa","get","_disposedComponents","destroy","removeFromParent","dispose","disposeGeometryAndMaterials","children","disposeChildren","disposeGeometry","disposeBoundsTree","disposeMaterial","rn","_d","Ul","jo","Bl","ir","Ud","tolerance","faces","newFaces","assigned","kl","unassigned","vertices","Bd","compute","setFromObject","updateMatrixWorld","intersectRay","intersectsRay","addVertexToFace","outside","append","insertBefore","removeVertexFromFace","next","removeAllVerticesFromFace","removeSubList","prev","deleteFaceVertices","appendChain","resolveUnassignedPoints","isEmpty","first","mark","computeExtremes","getComponent","setComponent","Number","EPSILON","computeInitialHull","setFromCoplanarPoints","Mt","create","getEdge","setTwin","reindexFaces","nextVertexToAdd","computeHorizon","twin","addAdjoiningFace","tail","head","addNewFaces","addVertexToHull","clear","cleanup","midpoint","area","constant","edge","Xo","getMidpoint","getArea","vertex","lengthSquared","last","insertAfter","ma","ga","Wt","zd","elements","Vd","identity","Hd","zl","isTransparent","transparent","opacity","Ea","$e","random","_lut","toLowerCase","validate","_pattern","test","Na","Wd","config","snapDistance","showOnlyVertex","enabled","_enabled","_pickedPoint","onEnabled","_config","onVertexFound","onVertexLost","onDisposed","Dt","castRay","getClosestVertex","workingPlane","equals","MAX_SAFE_INTEGER","getVertices","instanceId","getMatrixAt","getVertex","kc","zc","_clock","getDelta","list","isUpdateable","requestAnimationFrame","setupBVH","init","isDisposeable","stop","computeBoundsTree","Kd","jd","_event","dom","setupEvents","getBoundingClientRect","_position","getPositionX","getPositionY","clientY","top","bottom","clientX","addEventListener","updateMouseInfo","removeEventListener","Xd","renderer","mouse","domElement","meshes","camera","setFromCamera","intersect","castRayFromVector","intersectObjects","filterClippingPlanes","every","Vc","Gc","Zd","scene","_scene","currentWorld","_camera","_renderer","onBeforeUpdate","onAfterUpdate","isDisposing","Qd","_resizing","onContainerUpdated","container","clientWidth","clientHeight","setSize","onResize","resize","preventDefault","setRenderTarget","canvas","_canvas","antialias","alpha","_parameters","setPixelRatio","window","devicePixelRatio","setupRenderer","getContext","onContextLost","onContextBack","render","getSize","parentElement","_resizeObserver","disconnect","resizeEvent","ResizeObserver","observe","localClippingEnabled","appendChild","J","freeze","NONE","ROTATE","TRUCK","OFFSET","DOLLY","ZOOM","TOUCH_ROTATE","TOUCH_TRUCK","TOUCH_OFFSET","TOUCH_DOLLY","TOUCH_ZOOM","TOUCH_DOLLY_TRUCK","TOUCH_DOLLY_OFFSET","TOUCH_DOLLY_ROTATE","TOUCH_ZOOM_TRUCK","TOUCH_ZOOM_OFFSET","TOUCH_ZOOM_ROTATE","On","isPerspectiveCamera","gn","isOrthographicCamera","os","PI","Vl","Yc","Ws","Pt","Ue","De","Gl","round","Ks","isFinite","MAX_VALUE","js","rr","Yl","Zo","Qo","qd","_listeners","hasEventListener","removeAllEventListeners","dispatchEvent","type","target","or","Hc","$d","navigator","platform","ef","ve","Hl","ar","qo","dt","be","Pe","as","Xs","zt","Vt","Dn","Wl","Kl","yt","Zs","ls","jl","Jo","Xl","$o","ea","lr","ai","install","THREE","Vector3","Vector2","Spherical","Box3","Sphere","Quaternion","Matrix4","Raycaster","ACTION","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","minDistance","maxDistance","infinityDolly","minZoom","maxZoom","smoothTime","draggingSmoothTime","maxSpeed","azimuthRotateSpeed","polarRotateSpeed","dollySpeed","dollyDragInverted","truckSpeed","dollyToCursor","dragToOffset","verticalDragToForward","boundaryFriction","restThreshold","colliderMeshes","cancel","_state","_viewport","_changedDolly","_changedZoom","_hasRested","_boundaryEnclosesCamera","_needsUpdate","_updatedLastTime","_elementRect","DOMRect","_isDragging","_dragNeedsUpdate","_activePointers","_lockedPointer","_interactiveArea","_isUserControllingRotate","_isUserControllingDolly","_isUserControllingTruck","_isUserControllingOffset","_isUserControllingZoom","_lastDollyDirection","_thetaVelocity","_phiVelocity","_radiusVelocity","_targetVelocity","_focalOffsetVelocity","_zoomVelocity","_truckInternal","_target","getEffectiveFOV","tan","height","zoom","width","setFocalOffset","_focalOffsetEnd","truck","forward","_rotateInternal","rotate","_dollyInternal","_sphericalEnd","_dollyToNoClamp","dollyInFixed","_dollyControlCoord","sign","_zoomInternal","_zoom","zoomTo","error","_yAxisUpSpace","setFromUnitVectors","up","_yAxisUpSpaceInverse","_targetEnd","_focalOffset","_spherical","setFromVector3","applyQuaternion","_lastDistance","_zoomEnd","_lastZoom","_nearPlaneCorners","_updateNearPlaneCorners","_boundary","_cameraUp0","_target0","_position0","_zoom0","_focalOffset0","mouseButtons","middle","wheel","touches","one","two","_domElement","pointerType","buttons","_findPointerByMouseButton","_disposePointer","pointerId","deltaX","deltaY","mouseButton","ownerDocument","passive","cancelable","_findPointerById","movementX","movementY","performance","now","_getClientRect","deltaMode","PointerEvent","theta","phi","document","pointerLockElement","lockPointer","requestPointerLock","unlockPointer","exitPointerLock","_addAllEventListeners","style","touchAction","userSelect","webkitUserSelect","_removeAllEventListeners","connect","updateCameraUp","updateProjectionMatrix","active","currentAction","azimuthAngle","polarAngle","boundaryEnclosesCamera","interactiveArea","rotateTo","rotateAzimuthTo","rotatePolarTo","makeSafe","_createOnRestPromise","dolly","dollyTo","_collisionTest","Promise","resolve","_getCameraDirection","pan","updateMatrix","setFromMatrixColumn","moveTo","elevate","_encloseToBoundary","lookInDirectionOf","normalize","setPosition","fitToBox","cover","paddingLeft","paddingRight","paddingBottom","paddingTop","isBox3","setFromSpherical","multiply","setFromAxisAngle","expandByPoint","setX","setY","setZ","premultiply","getDistanceToFitBox","all","fitToSphere","createBoundingSphere","getDistanceToFitSphere","setLookAt","normalizeRotations","lerpLookAt","lerp","setTarget","getPosition","setOrbitPoint","matrixWorldInverse","setBoundary","clampPoint","setViewport","Vector4","aspect","atan","sin","getTarget","isVector3","getSpherical","getFocalOffset","saveState","applyCameraUp","cross","lengthSq","unproject","quaternion","lookAt","toJSON","JSON","stringify","toArray","focalOffset","target0","position0","zoom0","focalOffset0","fromJSON","parse","fromArray","setAttribute","removeAttribute","_getTargetDirection","divideScalar","negate","find","addVectors","w","dampingFactor","draggingDampingFactor","traverseVisible","isMesh","expandByObject","Ar","onAspectUpdated","isResizeable","setupCamera","newCameraControls","_allControls","controls","innerWidth","innerHeight","getSubsetOfThree","updateAspect","MOUSE","MathUtils","Wc","Kc","onWorldCreated","onWorldDeleted","tf","nf","uniforms","uZoom","color","size1","size2","uSize1","uSize2","uColor","uDistance","uFade","_fade","vertexShader","fragmentShader","extensions","derivatives","frustumCulled","visible","fade","updateZoom","jc","Ln","ot","mn","Ge","Zl","X","ta","Ql","ql","mode","Jl","rf","isTransformControls","uf","_gizmo","df","_plane","_offset","_startNorm","_endNorm","_cameraScale","_parentPosition","_parentQuaternion","_parentQuaternionInv","_parentScale","_worldScaleStart","_worldQuaternionInv","_worldScale","_positionStart","_quaternionStart","_scaleStart","_getPointer","of","bind","_onPointerDown","lf","_onPointerHover","af","_onPointerMove","cf","_onPointerUp","hf","parent","decompose","worldPosition","worldQuaternion","cameraPosition","cameraQuaternion","getWorldDirection","eye","pointerHover","dragging","na","picker","name","pointerDown","button","scale","worldPositionStart","worldQuaternionStart","pointStart","pointerMove","space","pointEnd","divide","translationSnap","search","setFromMatrixPosition","scaleSnap","rotationAxis","rotationAngle","angleTo","rotationSnap","pointerUp","attach","detach","getRaycaster","getMode","setMode","setTranslationSnap","setRotationSnap","setScaleSnap","size","setSpace","setPointerCapture","releasePointerCapture","intersectObject","cr","_e","$l","ec","hr","Tr","Gt","tc","Js","Nn","$s","ur","Qs","qs","isTransformControlsGizmo","depthTest","depthWrite","fog","toneMapped","setHex","translate","rotateY","rotateX","XYZ","XY","YZ","XZ","START","END","DELTA","XYZE","E","AXIS","Le","we","Ke","Nt","tag","rotation","vt","renderOrder","gizmo","helper","concat","fov","setFromRotationMatrix","atan2","multiplyQuaternions","showX","showY","showZ","_color","_opacity","split","some","setFromEuler","wireframe","isTransformControlsPlane","jr","_helper","_visible","preventCameraMovement","notifyDraggingChanged","_planeMesh","newPlaneMesh","newHelper","_controls","newTransformControls","toggleControls","_arrowBoundBox","planeMaterial","onDraggingStarted","onDraggingEnded","_controlsActive","changeDrag","initializeControls","createArrowBoundingBox","_hiddenMaterial","Xc","va","onBeforeDrag","onAfterDrag","updateMaterialsAndPlanes","_material","_size","onBeforeCreate","onBeforeCancel","onBeforeDelete","onAfterCreate","onAfterCancel","onAfterDelete","createPlaneFromIntersection","createFromNormalAndCoplanarPoint","newPlane","pickPlane","deletePlane","deleteAll","getAllPlaneMeshes","includes","getWorldNormal","getNormalMatrix","applyMatrix3","normalizePlaneDirectionY","orthogonalY","toleranceOrthogonalY","Type","_onStartDragging","_onEndDragging","li","Zc","_isWorkerBusy","_width","_height","renderTarget","createBuffer","bindBuffer","PIXEL_PACK_BUFFER","bufferData","STREAM_READ","readPixels","fenceSync","SYNC_GPU_COMMANDS_COMPLETE","flush","clientWaitSync","WAIT_FAILED","TIMEOUT_EXPIRED","setTimeout","ff","deleteSync","getBufferSubData","pf","deleteBuffer","mf","RGBA","UNSIGNED_BYTE","_buffer","renderDebugFrame","worker","postMessage","buffer","applySettings","bufferSize","Uint8Array","Blob","Worker","URL","createObjectURL","onViewUpdated","terminate","getAvailableColor","BigInt","_availableColor","toString","unshift","code","increaseColor","decreaseColor","updateInterval","autoUpdate","gf","isProcessing","colors","_recentlyHiddenMeshes","_currentVisibleMeshes","threshold","_colorCodeMeshMap","seen","unseen","handleWorkerMessage","setInterval","updateVisibility","_intervalID","clearInterval","_meshIDColorCodeMap","_transparentMat","colorMeshes","log","colorMaterial","getAvailableMaterial","instanceMatrix","setMatrixAt","updateWorldMatrix","Qc","Ia","Ef","vf","updatePlanes","down","lockRotation","_lockRotation","overrideMaterial","hasCameraControls","_tempVector1","frontOffset","_tempVector2","_tempTarget","background","backgroundColor","qc","yf","forRelating","forRelated","Jc","ya","relationMaps","groupID","ke","onFragmentsDisposed","indexRelations","keys","startsWith","_inverseAttributes","setRelationMap","onRelationsIndexed","modelID","relationsMap","process","hasProperties","_ifcRels","getAllPropertiesOfType","_relToAttributesMap","processFromWebIfc","GetLineIDsWithType","properties","getItemProperties","getEntityRelations","serializeRelations","entries","serializeModelRelations","serializeAllRelations","getRelationsMapFromJSON","Xr","$c","eh","mesh","baseCoordinationModel","onFragmentsLoaded","disposeGroup","items","fragmentIDs","load","coordinate","_loader","import","group","setLocalProperties","export","getModelIdMap","modelIdToFragmentIdMap","getFragmentMap","coordinationMatrix","th","tn","_absoluteMin","newBound","_absoluteMax","getDimensions","depth","getBounds","_meshes","getSphere","getMesh","addMesh","getFragmentBounds","fragment","getInstancesIDs","addFragmentIdMap","wa","nh","sh","ih","GetIfcEntityList","GetLine","expressID","wf","rh","yn","getUnits","IFCUNITASSIGNMENT","parseInt","Units","getProperties","UnitType","Name","Prefix","findItemByGuid","getAllPropertiesIDs","GlobalId","getRelationMap","getQsetQuantities","Quantities","getPsetProps","HasProperties","getPsetRel","RelatingPropertyDefinition","getQsetRel","getEntityName","key","endsWith","getQuantityValue","isRel","attributeExists","groupEntitiesByType","Cf","apply","getScaleMatrix","setUp","factor","getLengthUnits","complement","oh","_units","cleanUp","RelatingObject","RelatedObjects","itemsByFloor","RelatingStructure","RelatedElements","_a","path","absolute","logLevel","LOG_LEVEL_OFF","COORDINATE_TO_ORIGIN","ah","read","IfcAlignment","GetAllAlignments","IfcCrossSection2D","GetAllCrossSections2D","IfcCrossSection3D","GetAllCrossSections3D","getCurves","curve3D","horizontal","vertical","alignments","parseFloat","defLineMat","curve","lh","getNameInfo","GetHeaderLine","creationDate","Date","author","email","organization","preprocessorVersion","originatingSystem","authorization","getDescriptionInfo","match","viewDefinition","implementationLevel","ch","Ca","settings","excludedCategories","webIfc","setup","autoSetWasm","onSetup","onIfcStartedLoading","readIfcFile","getAllGeometries","globalToExpressIDs","wasm","SetWasmPath","Init","SetLogLevel","OpenModel","_visitedFragments","_fragmentInstances","_spatialTree","ifcMetadata","description","_metaData","schema","GetModelSchema","maxExpressID","GetMaxExpressID","IsIfcElement","StreamMeshes","keyFragments","GetCoordinationMatrix","civilData","_civil","geometries","geometryExpressID","getGeometry","_materialT","setRGB","flatTransformation","transforms","GetGeometry","GetIndexArray","GetIndexData","GetIndexDataSize","GetVertexArray","GetVertexData","GetVertexDataSize","fetch","release","ok","json","peerDependencies","Tf","hs","selectedModel","attributeListeners","changeMap","onElementToPset","onPropToPset","onPsetRemoved","onDataChanged","getIFCSchema","setData","setProperties","registerChange","newPset","ownerHistoryHandle","getOwnerHistory","newGUID","IfcLabel","IfcText","IfcPropertySet","increaseMaxID","IfcRelDefinesByProperties","pset","rel","removePset","model","psetID","newSingleStringProperty","newSingleProperty","newSingleNumericProperty","newSingleBooleanProperty","removePsetProp","addElementToPset","elementID","addPropToPset","propID","saveToIfc","WriteLine","DeleteLine","SaveModel","CloseModel","setAttributeListener","_value","IfcGloballyUniqueId","ownerHistory","IfcIdentifier","IfcPropertySingleValue","hh","uh","ids","byModel","models","byPredefinedType","predefinedTypes","String","PredefinedType","toUpperCase","byEntity","entities","saveItem","byIfcRel","bySpatialStructure","setColor","resetColor","xf","dh","groupName","applyTransform","fh","setVisibility","updateCulledVisibility","isolate","Rf","ph","onIfcLoaded","onGeometryStreamed","onAssetStreamed","streamFromBuffer","streamAllGeometries","streamFromCallBack","streamIfcFile","OpenModelFromCallback","minGeometrySize","minAssetsSize","_geometryCount","streamGeometries","_assets","streamAssets","opaque","geometryIDs","_visitedGeometries","_groupSerializer","_geometries","_meshesWithHoles","generateUUID","geometryID","transformation","je","pe","Ye","St","unitary","diagonal","_t","qr","At","ws","Cs","kd","transpose","Gd","extractBasis","makeScale","ys","makeTranslation","Cn","Zt","setFromMatrix3","Qt","halfSizes","Yd","hasHoles","_streamSerializer","Pf","onIndicesStreamed","onPropertiesStreamed","streamAllProperties","propertiesSize","mh","gh","distanceFromPointToLine","getFace","getFaceData","edges","indices","getVerticesAndNormal","extractRotation","p1","p2","p3","faceNormal","trunc","getVolumeFromFragments","getVolumeFromMeshes","getVolumeOfMesh","getSignedVolumeOfTriangle","Un","nc","dr","Eh","isLineSegmentsGeometry","instanceStart","instanceEnd","boundingSphere","computeBoundingSphere","setPositions","setColors","fromWireframeGeometry","fromEdgesGeometry","fromMesh","fromLineSegments","setFromBufferAttribute","isNaN","applyMatrix","line","worldUnits","linewidth","resolution","dashOffset","dashScale","dashSize","gapSize","merge","common","pi","clipping","isLineMaterial","setValues","diffuse","defines","WORLD_UNITS","dashed","USE_DASH","alphaToCoverage","USE_ALPHA_TO_COVERAGE","sc","ic","et","tt","Yt","sa","ia","nt","rc","fr","pr","Ht","Xt","Bn","oc","projectionMatrix","projectionMatrixInverse","Lf","isLineSegments2","computeLineDistances","params","Line2","expandByScalar","instanceCount","distanceSqToSegment","pointOnLine","Of","multiplyMatrices","closestPointToPointParameter","Df","Rr","isLineGeometry","fromLine","vh","isLine2","Pr","hoverCurve","newCurve","hoverPoints","newPoints","selectCurve","selectPoints","caster","select","highlight","onSelect","unSelect","hover","unHover","setResolution","alignment","TYPE","vertexColors","sizeAttenuation","LINE","CIRCULARARC","CLOTHOID","PARABOLICARC","CONSTANTGRADIENT","Fr","Nf","createElement","isCSS2DObject","element","Element","parentNode","removeChild","cloneNode","cs","ac","lc","cc","hc","_f","objects","WeakMap","layers","display","onBeforeRender","transform","onAfterRender","distanceToCameraSquared","overflow","matrixWorldAutoUpdate","zIndex","ft","border","toggleVisibility","Uf","three2D","setupHtmlRenderer","pointerEvents","Mr","label","_markerKey","getWorldMarkerList","innerHTML","merged","static","clusterLabels","_clusterKey","currentKeys","_setupWorlds","getWorldEvent","cluster","autoCluster","resetMarkers","getAveragePositionFromLabels","createClusterElement","textContent","markerKeys","removeMergeMarkers","_worldEvents","reduce","fontSize","fontWeight","borderRadius","padding","textAlign","cursor","navigateToCluster","getScreenPosition","project","nn","uc","globalThis","global","self","Ih","__esModule","hasOwnProperty","default","Ua","exports","Zr","yh","steiner","Zf","Yf","Hf","Gf","ci","xa","dc","Qr","ui","zn","We","Ta","prevZ","nextZ","Xf","jf","kf","Bf","zf","Vf","ps","wh","hi","Qf","Ch","Kf","Wf","qf","Jf","gr","mr","ba","deviation","flatten","holes","dimensions","ep","tp","tDiffuse","Is","isPass","needsSwap","renderToScreen","np","sp","ip","Th","_mesh","bh","textureID","fsQuad","texture","autoClearColor","autoClearDepth","autoClearStencil","fc","inverse","state","buffers","setMask","setLocked","stencil","setTest","setOp","REPLACE","setFunc","ALWAYS","setClear","EQUAL","KEEP","rp","op","_pixelRatio","getPixelRatio","renderTarget1","renderTarget2","writeBuffer","readBuffer","passes","copyPass","blending","clock","swapBuffers","addPass","insertPass","removePass","isLastEnabledPass","getRenderTarget","NOTEQUAL","ap","clearColor","clearAlpha","clearDepth","_oldClearColor","autoClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","mi","lp","Er","cp","sceneDiffuse","sceneDepth","sceneNormal","projMat","viewMat","projViewMat","projectionMatrixInv","viewMatrixInv","cameraPos","time","samples","samplesR","bluenoise","distanceFalloff","logDepth","ortho","screenSpaceRadius","hp","blueNoise","downsampledDepth","intensity","renderMode","gammaCorrection","worldRadius","poissonDisk","dp","xh","atob","charCodeAt","fp","Sh","getQueryParameter","QUERY_RESULT_AVAILABLE","QUERY_RESULT","lastTime","pp","configuration","Proxy","aoSamples","aoRadius","denoiseSamples","denoiseRadius","denoiseIterations","logarithmicDepthBuffer","halfRes","depthAwareUpsampling","configureAOPass","configureDenoisePass","configureHalfResTargets","configureEffectCompositer","samplesDenoise","configureSampleDependentPasses","beautyRenderTarget","minFilter","magFilter","depthTexture","format","writeTargetInternal","depthBuffer","readTargetInternal","colorSpace","wrapS","wrapT","_r","depthDownsampleTarget","depthDownsampleQuad","generateHemisphereSamples","generateHemisphereSamplesR","replace","effectShaderQuad","generateDenoiseSamples","poissonBlurQuad","effectCompositerQuad","cos","capabilities","debugMode","getExtension","createQuery","beginQuery","TIME_ELAPSED_EXT","xr","convertSRGBToLinear","endQuery","enableDebugMode","disableDebugMode","setDisplayMode","setQualityMode","mp","vp","renderScene","renderCamera","createOutlinePostProcessMaterial","planeBuffer","newRenderTarget","glossBuffer","outlineBuffer","normalOverrideMaterial","glossOverrideMaterial","lineColor","_lineColor","_tolerance","glossEnabled","_glossEnabled","glossExponent","_glossExponent","minGloss","_minGloss","maxGloss","convertLinearToSRGB","_maxGloss","outlineEnabled","_outlineEnabled","excludedMeshes","_outlineScene","outlinedMeshes","screenSize","uniformsNeedUpdate","userData","materialPreOutline","groupsPreOutline","colorPreOutline","instanceColor","parentPreOutline","_outlinesNeedsUpdate","sceneColorBuffer","debugVisualize","generateMipmaps","stencilBuffer","Ip","gamma","custom","ao","_components","_world","_renderTarget","composer","basePass","_basePass","gammaPass","_gammaPass","customEffects","_customEffects","n8ao","_n8ao","_initialized","initialize","_settings","_depthTexture","setPasses","updatePasses","updateCamera","updateProjection","projection","onChanged","overrideClippingPlanes","outputColorSpace","toneMapping","newBasePass","newSaoPass","newGammaPass","newCustomPass","Sa","resizePostproduction","_postproduction","setPostproductionSize","postproduction","yp","indexFragmentMap","_planeAxis","_geometry","getStyle","updatePlane2DCoordinateSystem","fills","computeFill","_precission","_tempVector","_plane2DCoordinateSystem","reverse","coplanarPoint","styleName","wp","_edges","fillMeshes","ms","styles","updateDeletedEdges","drawEdges","fillNeedsUpdate","disposeEdge","newEdgesMesh","lineMaterial","setUsage","newFillMesh","fillMaterial","newFillOutline","outlineMaterial","initializeStyle","fragments","getItemID","_inverseMatrix","_localPlane","setDrawRange","_tempLine","setXYZ","disposeOutline","di","updateFill","Cp","_defaultLineMaterial","deleteStyle","Or","fillsNeedUpdate","Tp","bp","vn","initializeDepthMaterial","deleteShadow","tempMaterial","depthMaterial","getSizeCenterMin","createShadow","initializeShadow","createPlanes","bakeShadow","root","blurPlane","rt","rtBlur","createBasePlane","createBlurPlane","initializeRoot","initializeRenderTargets","initializeCamera","blurShadow","amount","shadowOffset","createPlaneMaterial","darkness","onBeforeCompile","createCamera","cameraHeight","shadowExtraScaleFactor","xp","Dr","addKPStation","borderBottom","setFromQuaternion","radToDeg","save","addVerticalMarker","addCivilMarker","innerText","toFixed","showKPStations","generateStartAndEndKP","generateConstantKP","showCurveLength","showLineLength","getAttribute","showCurveRadius","deleteByType","_list","getLength","createNormalLine","getShortendKPValue","applyAxisAngle","setLength","divisionLength","getPointAt","join","padStart","kn","Ah","_highlighter","_curves","updateMarker","mouseMarkers","onMarkerHidden","getScaledBox","onHighlight","_previousAlignment","Line","highlighter","view","newMouseMarker","draw","setMarker","getCurveAt","getSegmentAt","percentage","setMouseMarker","setDefSegments","slope","defSegments","hideMarker","updateLinesResolution","onMouseMove","onClick","onControlsUpdated","startPoint","endPoint","getSegment","getPercentageAt","onMarkerChange","setFromCenterAndSize","Sp","showCurveInfo","disposeMarkups","currentCurveMesh","showLineInfo","showCircularArcInfo","showClothoidInfo","updateOffset","markupLines","markupMaterial","calculateTangent","calculateParallelCurve","calculateDimensionLines","startDimensionPoints","endDimensionPoints","offsetDimensionLine","RADIUS","Lr","planHighlighter","Nr","Vn","fontFamily","Ur","world3D","_world3D","gs","_start","_end","_length","_line","createLine","newEndpointElement","endpointElement","newText","_root","_endpoints","updateLabel","_center","createBoundingBox","toggleLabel","getTextContent","units","fi","Ap","labelMarker","onPointAdded","_dimensionLines","addDimensionLine","setPoint","previousLine","nextLine","getLinesBetweenIndex","removePoint","onPointRemoved","className","computeWorkingPlane","_rotationMatrix","makeRotationAxis","onWorkingPlaneComputed","computeArea","onAreaComputed","Ba","marker","ni","_vertexPicker","_currentAreaElement","_clickCount","ctrlKey","endCreation","cancelCreation","onKeydown","Ic","Rp","_lineGeometry","_lineMaterial","_labelMarker","onAngleComputed","angle","computeAngle","flat","si","_currentAngleElement","onKeyDown","ii","isDragging","dimension","_temp","drawStart","previewElement","drawInProcess","createOnPoints","drawDimension","getBoundingBoxes","deleteMeasurement","_n","Br","onVolumeFound","setLabel","newLabel","kr","_currentSelelection","selectionMaterial","preview","perimeter","selection","unselect","updateSelection","regenerateHighlight","zr","Fp","_foundGeometries","exists","_indexModelID","modelIndex","handleLostGeometries","toLoad","toRemove","toHide","toShow","deleteAttribute","_geometriesGroups","boxes","_modelIDIndex","codes","createModelIndex","getInstanceID","geometryColors","assetIDs","hidden","addFragment","setGeometryVisibility","capacity","removeFragment","setModelTransformation","updateTransformations","maxLostTime","maxHiddenTime","_nextModelID","LOG10E","Rh","setPrototypeOf","__proto__","p","I","getPrototypeOf","Reflect","ownKeys","extend","getOwnPropertyDescriptor","setImmediate","R","M","substr","isFrozen","Jt","iterator","done","toStringTag","It","bs","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","message","failures","failedKeys","successCount","failuresByPos","inner","Syntax","SyntaxError","TypeError","Range","RangeError","Oe","onsuccess","onerror","Fh","Ph","Jr","then","ModifyError","DexieError","BulkError","Ut","location","href","ka","Ts","za","crypto","subtle","digest","xs","$r","Ss","As","gi","queueMicrotask","Oh","eo","Tn","Ei","to","on","ref","unhandleds","onunhandled","pgp","env","finalize","ge","bn","vi","ce","_lib","_PSD","so","Gn","_","_then","Ga","Yn","no","Ci","ln","L","io","Va","Ha","_consoleTask","onFulfilled","onRejected","reject","psd","ro","Mh","run","xn","Ii","Ve","cn","catch","finally","timeout","Timeout","clearTimeout","Ya","Ti","race","PSD","totalEchoes","newPSD","an","usePSD","scheduler","rejectionMapper","follow","allSettled","status","reason","any","AggregateError","qe","awaits","echoes","Dh","yi","wi","Lh","PromiseProp","Hn","Xe","Nh","oo","enqueueNativeMicroTask","Sn","qt","Wa","Wn","bi","lo","An","Ka","lower","lowerOpen","upper","upperOpen","xi","ja","Me","Xa","NaN","Za","isView","byteOffset","Qa","Be","_trans","_tx","trans","createTask","D","NotFound","idbtrans","db","_novip","_promise","transless","V","N","idbdb","openComplete","letThrough","_vip","k","_createTransaction","_dbSchema","PR1398_maxLoop","G","InvalidState","isOpen","close","disableAutoOpen","open","B","commit","_completion","dbOpenError","isBeingOpened","autoOpen","dbReadyPromise","trace","where","core","hook","reading","fire","WhereClause","indexes","primKey","compound","keyPath","_maxKey","idxByName","_deps","indexedDB","cmp","multi","toCollection","and","limit","each","Collection","orderBy","mapToClass","mappedClass","table","getOwnPropertyNames","readHook","unsubscribe","defineClass","auto","mutate","numFailures","lastResult","modify","InvalidArgument","put","range","bulkGet","getMany","bulkAdd","allKeys","wantResults","results","bulkPut","bulkUpdate","changes","cache","W","j","Constraint","updates","changeSpecs","bulkDelete","Rs","subscribe","addEventType","subscribers","Fs","Kn","algorithm","justLimit","replayFilter","co","ho","Si","isPrimKey","primaryKey","getIndexByKeyPath","Schema","qa","openCursor","keysOnly","dir","unique","query","Ai","fail","_iterate","Ja","valueMapper","continue","Ps","$a","execute","replacePrefix","substring","_h","Fe","_read","_ctx","_write","_addAlgorithm","raw","sortBy","result","advance","until","isMatch","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","Q","ee","ae","outbound","extractKey","_options","modifyChunkSize","uo","ie","oe","le","re","Ce","Te","Ae","xe","criteria","changeSpec","isAdditionalChunk","Uh","Bh","mt","tl","jn","el","Ri","hn","Rt","Je","between","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","_min","_max","startsWithAnyOf","Bt","Ms","stopPropagation","Os","fo","un","kh","kt","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","shift","OpenFailed","transaction","storeNames","durability","chromeTransactionDurability","_reject","onabort","oncomplete","_resolve","storagemutated","mutatedParts","ReadOnly","waitFor","_waitingFor","_waitingQueue","objectStore","_spinCount","abort","_memoizedTables","Table","po","src","nl","mo","Ds","only","go","sl","zh","Ls","Vh","upperBound","lowerBound","bound","objectStoreNames","tables","autoIncrement","isPrimaryKey","indexNames","multiEntry","hasGetAll","userAgent","lt","Se","it","Vi","Pn","No","_pos","getAll","getAllKeys","openKeyCursor","___id","continuePrimaryKey","stack","MIN_KEY","MAX_KEY","Fi","IDBKeyRange","dbcore","Gh","_middlewares","Pi","Transaction","Eo","Yh","_cfg","version","vo","del","change","def","recreate","Io","createObjectStore","Mi","il","contains","debug","createIndex","Oi","Di","_hasGetAll","WorkerGlobalScope","rl","trim","Kh","Li","_parseStoresSpec","stores","storesSource","_versions","dbschema","_allTables","_storeNames","upgrade","contentUpgrade","yo","_dbNamesDB","$t","addons","dbnames","wo","databases","Co","To","st","Ns","ol","_s","Ni","bo","al","_i","xo","addKey","addKeys","Rn","So","Ao","Ui","Ro","ll","exec","queries","obsSet","jh","openCanceller","verno","dbReadyResolve","userAgentData","autoSchema","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","deleteDatabase","NoSuchDatabase","oldVersion","ceil","Wh","$meta","Upgrade","deleteIndex","deleteObjectStore","populate","Hh","onversionchange","vcFired","onclose","onReadyBeingFired","ready","vip","_close","Fo","throw","Bi","Xh","level","lowLevelIndex","isVirtual","keyTail","keyLength","Po","Mo","Zh","deleting","creating","updating","cl","Qh","_cache","hl","subscr","explicit","ul","qh","querier","findIndex","dl","Oo","fl","dirty","pl","eu","AbortController","signal","optimisticOps","_explicit","res","req","promise","requery","Jh","objs","unsignaledParts","$h","ki","Ze","Version","_whenReady","use","unuse","cancelOpen","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","SubTransaction","PrematureCommit","InvalidTable","dependencies","complete","_IDBKeyRange","newVersion","observable","zi","tu","Do","_subscribe","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","ml","closed","aborted","hasValue","getValue","Fn","Lo","dn","getDatabaseNames","ignoreTransaction","spawn","currentTransaction","derive","props","override","Events","liveQuery","extendObservabilitySet","getByKeyPath","setByKeyPath","delByKeyPath","shallowClone","deepClone","getObjectDiff","asap","minKey","connections","errnames","semVer","maxKey","CustomEvent","detail","Xn","gl","BroadcastChannel","onmessage","unref","disableBfCache","persisted","Dexie","Entity","PropModSymbol","PropModification","RangeSet","mergeRanges","rangesOverlap","Aa","bc","for","Ra","Mp","files","Op","_fileCache","_intervalId","maxTime","clean","interval","ri","dbCleaner","url","_url","_culler","loadFoundGeometries","unloadLostGeometries","setMeshVisibility","culler","_isDisposing","onFragmentsDeleted","_ramCache","_geometryInstances","_loadedFragments","fragIDData","_baseMaterial","_baseMaterialT","assets","globalDataFileId","arrayBuffer","types","streamSettings","baseUrl","baseFileName","indexesFile","text","clearCache","geometryFile","useCache","file","serializer","newFragment","maxRamTime","Dp","oi","selectName","hoverName","selectionColor","hoverColor","autoHighlightOnClick","moved","_colorsBeforeSelect","highlightByID","_mouseState","multiple","zoomToSelection","_fills","events","onClear","zoomSelection","backupColor","isSetup","zoomFactor","clearHover","saveHighlightersBeforeSelect","restoreHighlightersAfterDeselect","onMouseDown","onMouseUp","Sc","Vr","onExited","onNavigated","generate","getAbsoluteFloorHeight","ObjectPlacement","defaultSectionOffset","createClippingPlane","goTo","currentPlan","storeCameraPosition","hidePreviousClippingPlane","updateCurrentPlan","activateCurrentPlan","moveCameraTo2DPlanPosition","exitPlanView","cacheFloorplanView","_previousProjection","_previousCamera","_previousTarget","store3dCameraPosition","_floorPlanViewCached","getWorldPosition","current","RelativePlacement","Location","Coordinates","PlacementRelTo"],"sourceRoot":""}