@splinetool/viewer 0.0.27 → 0.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/spline-viewer.cjs
CHANGED
|
@@ -3134,7 +3134,7 @@ void main() {
|
|
|
3134
3134
|
squared_mean = squared_mean / samples;
|
|
3135
3135
|
float std_dev = sqrt( squared_mean - mean * mean );
|
|
3136
3136
|
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
|
|
3137
|
-
}`;function cP(e,t,i){let r=new qm,s=new H,n=new H,a=new tt,o=new $b({depthPacking:kb}),l=new oP,h={},u=i.maxTextureSize,c={0:pi,1:mn,2:Er},d=new Qt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new H},radius:{value:4}},vertexShader:lP,fragmentShader:hP}),p=d.clone();p.defines.HORIZONTAL_PASS=1;let m=new ke;m.setAttribute("position",new Qe(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new Xi(m,d),f=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Vm,this.render=function(x,w,_){if(f.enabled===!1||f.autoUpdate===!1&&f.needsUpdate===!1||x.length===0)return;let A=e.getRenderTarget(),S=e.getActiveCubeFace(),E=e.getActiveMipmapLevel(),C=e.state;C.setBlending(si),C.buffers.color.setClear(1,1,1,1),C.buffers.depth.setTest(!0),C.setScissorTest(!1);for(let T=0,P=x.length;T<P;T++){let R=x[T],O=R.shadow;if(O===void 0){console.warn("THREE.WebGLShadowMap:",R,"has no shadow.");continue}if(O.autoUpdate===!1&&O.needsUpdate===!1)continue;s.copy(O.mapSize);let U=O.getFrameExtents();if(s.multiply(U),n.copy(O.mapSize),(s.x>u||s.y>u)&&(s.x>u&&(n.x=Math.floor(u/U.x),s.x=n.x*U.x,O.mapSize.x=n.x),s.y>u&&(n.y=Math.floor(u/U.y),s.y=n.y*U.y,O.mapSize.y=n.y)),O.map===null){let z=this.type!==Cl?{minFilter:Lt,magFilter:Lt}:{};O.map=new Ut(s.x,s.y,z),O.map.texture.name=R.name+".shadowMap",O.camera.updateProjectionMatrix()}e.setRenderTarget(O.map),e.clear();let j=O.getViewportCount();for(let z=0;z<j;z++){let L=O.getViewport(z);a.set(n.x*L.x,n.y*L.y,n.x*L.z,n.y*L.w),C.viewport(a),O.updateMatrices(R,z),r=O.getFrustum(),b(w,_,O.camera,R,this.type)}O.isPointLightShadow!==!0&&this.type===Cl&&v(O,_),O.needsUpdate=!1}f.needsUpdate=!1,e.setRenderTarget(A,S,E)};function v(x,w){let _=t.update(g);d.defines.VSM_SAMPLES!==x.blurSamples&&(d.defines.VSM_SAMPLES=x.blurSamples,p.defines.VSM_SAMPLES=x.blurSamples,d.needsUpdate=!0,p.needsUpdate=!0),x.mapPass===null&&(x.mapPass=new Ut(s.x,s.y)),d.uniforms.shadow_pass.value=x.map.texture,d.uniforms.resolution.value=x.mapSize,d.uniforms.radius.value=x.radius,e.setRenderTarget(x.mapPass),e.clear(),e.renderBufferDirect(w,null,_,d,g,null),p.uniforms.shadow_pass.value=x.mapPass.texture,p.uniforms.resolution.value=x.mapSize,p.uniforms.radius.value=x.radius,e.setRenderTarget(x.map),e.clear(),e.renderBufferDirect(w,null,_,p,g,null)}function y(x,w,_,A,S,E){let C=null,T=_.isPointLight===!0?x.customDistanceMaterial:x.customDepthMaterial;if(T!==void 0?C=T:C=_.isPointLight===!0?l:o,e.localClippingEnabled&&w.clipShadows===!0&&Array.isArray(w.clippingPlanes)&&w.clippingPlanes.length!==0||w.displacementMap&&w.displacementScale!==0||w.alphaMap&&w.alphaTest>0){let P=C.uuid,R=w.uuid,O=h[P];O===void 0&&(O={},h[P]=O);let U=O[R];U===void 0&&(U=C.clone(),O[R]=U),C=U}return C.visible=w.visible,C.wireframe=w.wireframe,E===Cl?C.side=w.shadowSide!==null?w.shadowSide:w.side:C.side=w.shadowSide!==null?w.shadowSide:c[w.side],C.alphaMap=w.alphaMap,C.alphaTest=w.alphaTest,C.clipShadows=w.clipShadows,C.clippingPlanes=w.clippingPlanes,C.clipIntersection=w.clipIntersection,C.displacementMap=w.displacementMap,C.displacementScale=w.displacementScale,C.displacementBias=w.displacementBias,C.wireframeLinewidth=w.wireframeLinewidth,C.linewidth=w.linewidth,_.isPointLight===!0&&C.isMeshDistanceMaterial===!0&&(C.referencePosition.setFromMatrixPosition(_.matrixWorld),C.nearDistance=A,C.farDistance=S),C}function b(x,w,_,A,S){if(x.visible===!1)return;if(x.layers.test(w.layers)&&(x.isMesh||x.isLine||x.isPoints)&&(x.castShadow||x.receiveShadow&&S===Cl)&&(!x.frustumCulled||r.intersectsObject(x))){x.modelViewMatrix.multiplyMatrices(_.matrixWorldInverse,x.matrixWorld);let C=t.update(x),T=x.material;if(Array.isArray(T)){let P=C.groups;for(let R=0,O=P.length;R<O;R++){let U=P[R],j=T[U.materialIndex];if(j&&j.visible){let z=y(x,j,A,_.near,_.far,S);e.renderBufferDirect(_,null,C,z,x,U)}}}else if(T.visible){let P=y(x,T,A,_.near,_.far,S);e.renderBufferDirect(_,null,C,P,x,null)}}let E=x.children;for(let C=0,T=E.length;C<T;C++)b(E[C],w,_,A,S)}}function dP(e,t,i){let r=i.isWebGL2;function s(){let k=!1,me=new tt,be=null,He=new tt(0,0,0,0);return{setMask:function(Te){be!==Te&&!k&&(e.colorMask(Te,Te,Te,Te),be=Te)},setLocked:function(Te){k=Te},setClear:function(Te,Ge,ye,Ve,Xe){Xe===!0&&(Te*=Ve,Ge*=Ve,ye*=Ve),me.set(Te,Ge,ye,Ve),He.equals(me)===!1&&(e.clearColor(Te,Ge,ye,Ve),He.copy(me))},reset:function(){k=!1,be=null,He.set(-1,0,0,0)}}}function n(){let k=!1,me=null,be=null,He=null;return{setTest:function(Te){Te?ee(2929):W(2929)},setMask:function(Te){me!==Te&&!k&&(e.depthMask(Te),me=Te)},setFunc:function(Te){if(be!==Te){if(Te)switch(Te){case D2:e.depthFunc(512);break;case O2:e.depthFunc(519);break;case L2:e.depthFunc(513);break;case wf:e.depthFunc(515);break;case I2:e.depthFunc(514);break;case B2:e.depthFunc(518);break;case R2:e.depthFunc(516);break;case N2:e.depthFunc(517);break;default:e.depthFunc(515)}else e.depthFunc(515);be=Te}},setLocked:function(Te){k=Te},setClear:function(Te){He!==Te&&(e.clearDepth(Te),He=Te)},reset:function(){k=!1,me=null,be=null,He=null}}}function a(){let k=!1,me=null,be=null,He=null,Te=null,Ge=null,ye=null,Ve=null,Xe=null;return{setTest:function(St){k||(St?ee(2960):W(2960))},setMask:function(St){me!==St&&!k&&(e.stencilMask(St),me=St)},setFunc:function(St,dt,Pi){(be!==St||He!==dt||Te!==Pi)&&(e.stencilFunc(St,dt,Pi),be=St,He=dt,Te=Pi)},setOp:function(St,dt,Pi){(Ge!==St||ye!==dt||Ve!==Pi)&&(e.stencilOp(St,dt,Pi),Ge=St,ye=dt,Ve=Pi)},setLocked:function(St){k=St},setClear:function(St){Xe!==St&&(e.clearStencil(St),Xe=St)},reset:function(){k=!1,me=null,be=null,He=null,Te=null,Ge=null,ye=null,Ve=null,Xe=null}}}let o=new s,l=new n,h=new a,u={},c={},d=new WeakMap,p=[],m=null,g=!1,f=null,v=null,y=null,b=null,x=null,w=null,_=null,A=!1,S=null,E=null,C=null,T=null,P=null,R=e.getParameter(35661),O=!1,U=0,j=e.getParameter(7938);j.indexOf("WebGL")!==-1?(U=parseFloat(/^WebGL (\d)/.exec(j)[1]),O=U>=1):j.indexOf("OpenGL ES")!==-1&&(U=parseFloat(/^OpenGL ES (\d)/.exec(j)[1]),O=U>=2);let z=null,L={},G=e.getParameter(3088),F=e.getParameter(2978),V=new tt().fromArray(G),N=new tt().fromArray(F);function X(k,me,be){let He=new Uint8Array(4),Te=e.createTexture();e.bindTexture(k,Te),e.texParameteri(k,10241,9728),e.texParameteri(k,10240,9728);for(let Ge=0;Ge<be;Ge++)e.texImage2D(me+Ge,0,6408,1,1,0,6408,5121,He);return Te}let Z={};Z[3553]=X(3553,3553,1),Z[34067]=X(34067,34069,6),o.setClear(0,0,0,1),l.setClear(1),h.setClear(0),ee(2929),l.setFunc(wf),ue(!1),pe(Lv),ee(2884),oe(si);function ee(k){u[k]!==!0&&(e.enable(k),u[k]=!0)}function W(k){u[k]!==!1&&(e.disable(k),u[k]=!1)}function ne(k,me){return c[k]!==me?(e.bindFramebuffer(k,me),c[k]=me,r&&(k===36009&&(c[36160]=me),k===36160&&(c[36009]=me)),!0):!1}function q(k,me){let be=p,He=!1;if(k)if(be=d.get(me),be===void 0&&(be=[],d.set(me,be)),k.isWebGLMultipleRenderTargets){let Te=k.texture;if(be.length!==Te.length||be[0]!==36064){for(let Ge=0,ye=Te.length;Ge<ye;Ge++)be[Ge]=36064+Ge;be.length=Te.length,He=!0}}else be[0]!==36064&&(be[0]=36064,He=!0);else be[0]!==1029&&(be[0]=1029,He=!0);He&&(i.isWebGL2?e.drawBuffers(be):t.get("WEBGL_draw_buffers").drawBuffersWEBGL(be))}function Q(k){return m!==k?(e.useProgram(k),m=k,!0):!1}let K={[Wa]:32774,[x2]:32778,[b2]:32779};if(r)K[Nv]=32775,K[zv]=32776;else{let k=t.get("EXT_blend_minmax");k!==null&&(K[Nv]=k.MIN_EXT,K[zv]=k.MAX_EXT)}let de={[w2]:0,[_2]:1,[S2]:768,[Rb]:770,[P2]:776,[C2]:774,[M2]:772,[A2]:769,[Nb]:771,[T2]:775,[E2]:773};function oe(k,me,be,He,Te,Ge,ye,Ve){if(k===si){g===!0&&(W(3042),g=!1);return}if(g===!1&&(ee(3042),g=!0),k!==y2){if(k!==f||Ve!==A){if((v!==Wa||x!==Wa)&&(e.blendEquation(32774),v=Wa,x=Wa),Ve)switch(k){case lo:e.blendFuncSeparate(1,771,1,771);break;case Iv:e.blendFunc(1,1);break;case Bv:e.blendFuncSeparate(0,769,0,1);break;case Rv:e.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}else switch(k){case lo:e.blendFuncSeparate(770,771,1,771);break;case Iv:e.blendFunc(770,1);break;case Bv:e.blendFuncSeparate(0,769,0,1);break;case Rv:e.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}y=null,b=null,w=null,_=null,f=k,A=Ve}return}Te=Te||me,Ge=Ge||be,ye=ye||He,(me!==v||Te!==x)&&(e.blendEquationSeparate(K[me],K[Te]),v=me,x=Te),(be!==y||He!==b||Ge!==w||ye!==_)&&(e.blendFuncSeparate(de[be],de[He],de[Ge],de[ye]),y=be,b=He,w=Ge,_=ye),f=k,A=null}function le(k,me){k.side===Er?W(2884):ee(2884);let be=k.side===pi;me&&(be=!be),ue(be),k.blending===lo&&k.transparent===!1?oe(si):oe(k.blending,k.blendEquation,k.blendSrc,k.blendDst,k.blendEquationAlpha,k.blendSrcAlpha,k.blendDstAlpha,k.premultipliedAlpha),l.setFunc(k.depthFunc),l.setTest(k.depthTest),l.setMask(k.depthWrite),o.setMask(k.colorWrite);let He=k.stencilWrite;h.setTest(He),He&&(h.setMask(k.stencilWriteMask),h.setFunc(k.stencilFunc,k.stencilRef,k.stencilFuncMask),h.setOp(k.stencilFail,k.stencilZFail,k.stencilZPass)),De(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits),k.alphaToCoverage===!0?ee(32926):W(32926)}function ue(k){S!==k&&(k?e.frontFace(2304):e.frontFace(2305),S=k)}function pe(k){k!==m2?(ee(2884),k!==E&&(k===Lv?e.cullFace(1029):k===g2?e.cullFace(1028):e.cullFace(1032))):W(2884),E=k}function ge(k){k!==C&&(O&&e.lineWidth(k),C=k)}function De(k,me,be){k?(ee(32823),(T!==me||P!==be)&&(e.polygonOffset(me,be),T=me,P=be)):W(32823)}function Ae(k){k?ee(3089):W(3089)}function we(k){k===void 0&&(k=33984+R-1),z!==k&&(e.activeTexture(k),z=k)}function bt(k,me){z===null&&we();let be=L[z];be===void 0&&(be={type:void 0,texture:void 0},L[z]=be),(be.type!==k||be.texture!==me)&&(e.bindTexture(k,me||Z[k]),be.type=k,be.texture=me)}function Ke(){let k=L[z];k!==void 0&&k.type!==void 0&&(e.bindTexture(k.type,null),k.type=void 0,k.texture=void 0)}function B(){try{e.compressedTexImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function D(){try{e.texSubImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function ie(){try{e.texSubImage3D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function ce(){try{e.compressedTexSubImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function fe(){try{e.texStorage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function _e(){try{e.texStorage3D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function je(){try{e.texImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function re(){try{e.texImage3D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Be(k){V.equals(k)===!1&&(e.scissor(k.x,k.y,k.z,k.w),V.copy(k))}function Pe(k){N.equals(k)===!1&&(e.viewport(k.x,k.y,k.z,k.w),N.copy(k))}function ve(){e.disable(3042),e.disable(2884),e.disable(2929),e.disable(32823),e.disable(3089),e.disable(2960),e.disable(32926),e.blendEquation(32774),e.blendFunc(1,0),e.blendFuncSeparate(1,0,1,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(513),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(519,0,4294967295),e.stencilOp(7680,7680,7680),e.clearStencil(0),e.cullFace(1029),e.frontFace(2305),e.polygonOffset(0,0),e.activeTexture(33984),e.bindFramebuffer(36160,null),r===!0&&(e.bindFramebuffer(36009,null),e.bindFramebuffer(36008,null)),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),u={},z=null,L={},c={},d=new WeakMap,p=[],m=null,g=!1,f=null,v=null,y=null,b=null,x=null,w=null,_=null,A=!1,S=null,E=null,C=null,T=null,P=null,V.set(0,0,e.canvas.width,e.canvas.height),N.set(0,0,e.canvas.width,e.canvas.height),o.reset(),l.reset(),h.reset()}return{buffers:{color:o,depth:l,stencil:h},enable:ee,disable:W,bindFramebuffer:ne,drawBuffers:q,useProgram:Q,setBlending:oe,setMaterial:le,setFlipSided:ue,setCullFace:pe,setLineWidth:ge,setPolygonOffset:De,setScissorTest:Ae,activeTexture:we,bindTexture:bt,unbindTexture:Ke,compressedTexImage2D:B,texImage2D:je,texImage3D:re,texStorage2D:fe,texStorage3D:_e,texSubImage2D:D,texSubImage3D:ie,compressedTexSubImage2D:ce,scissor:Be,viewport:Pe,reset:ve}}function uP(e,t,i,r,s,n,a){let o=s.isWebGL2,l=s.maxTextures,h=s.maxCubemapSize,u=s.maxTextureSize,c=s.maxSamples,d=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,p=/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap,g,f=new WeakMap,v=!1;try{v=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function y(B,D){return v?new OffscreenCanvas(B,D):od("canvas")}function b(B,D,ie,ce){let fe=1;if((B.width>ce||B.height>ce)&&(fe=ce/Math.max(B.width,B.height)),fe<1||D===!0)if(typeof HTMLImageElement<"u"&&B instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&B instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&B instanceof ImageBitmap){let _e=D?ad:Math.floor,je=_e(fe*B.width),re=_e(fe*B.height);g===void 0&&(g=y(je,re));let Be=ie?y(je,re):g;return Be.width=je,Be.height=re,Be.getContext("2d").drawImage(B,0,0,je,re),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+B.width+"x"+B.height+") to ("+je+"x"+re+")."),Be}else return"data"in B&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+B.width+"x"+B.height+")."),B;return B}function x(B){return Cf(B.width)&&Cf(B.height)}function w(B){return o?!1:B.wrapS!==Gi||B.wrapT!==Gi||B.minFilter!==Lt&&B.minFilter!==ft}function _(B,D){return B.generateMipmaps&&D&&B.minFilter!==Lt&&B.minFilter!==ft}function A(B){e.generateMipmap(B)}function S(B,D,ie,ce,fe=!1){if(o===!1)return D;if(B!==null){if(e[B]!==void 0)return e[B];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+B+"'")}let _e=D;return D===6403&&(ie===5126&&(_e=33326),ie===5131&&(_e=33325),ie===5121&&(_e=33321)),D===33319&&(ie===5126&&(_e=33328),ie===5131&&(_e=33327),ie===5121&&(_e=33323)),D===6408&&(ie===5126&&(_e=34836),ie===5131&&(_e=34842),ie===5121&&(_e=ce===et&&fe===!1?35907:32856),ie===32819&&(_e=32854),ie===32820&&(_e=32855)),(_e===33325||_e===33326||_e===33327||_e===33328||_e===34842||_e===34836)&&t.get("EXT_color_buffer_float"),_e}function E(B,D,ie){return _(B,ie)===!0||B.isFramebufferTexture&&B.minFilter!==Lt&&B.minFilter!==ft?Math.log2(Math.max(D.width,D.height))+1:B.mipmaps!==void 0&&B.mipmaps.length>0?B.mipmaps.length:B.isCompressedTexture&&Array.isArray(B.image)?D.mipmaps.length:1}function C(B){return B===Lt||B===Fv||B===Uv?9728:9729}function T(B){let D=B.target;D.removeEventListener("dispose",T),R(D),D.isVideoTexture&&m.delete(D)}function P(B){let D=B.target;D.removeEventListener("dispose",P),U(D)}function R(B){let D=r.get(B);if(D.__webglInit===void 0)return;let ie=B.source,ce=f.get(ie);if(ce){let fe=ce[D.__cacheKey];fe.usedTimes--,fe.usedTimes===0&&O(B),Object.keys(ce).length===0&&f.delete(ie)}r.remove(B)}function O(B){let D=r.get(B);e.deleteTexture(D.__webglTexture);let ie=B.source,ce=f.get(ie);delete ce[D.__cacheKey],a.memory.textures--}function U(B){let D=B.texture,ie=r.get(B),ce=r.get(D);if(ce.__webglTexture!==void 0&&(e.deleteTexture(ce.__webglTexture),a.memory.textures--),B.depthTexture&&B.depthTexture.dispose(),B.isWebGLCubeRenderTarget)for(let fe=0;fe<6;fe++)e.deleteFramebuffer(ie.__webglFramebuffer[fe]),ie.__webglDepthbuffer&&e.deleteRenderbuffer(ie.__webglDepthbuffer[fe]);else{if(e.deleteFramebuffer(ie.__webglFramebuffer),ie.__webglDepthbuffer&&e.deleteRenderbuffer(ie.__webglDepthbuffer),ie.__webglMultisampledFramebuffer&&e.deleteFramebuffer(ie.__webglMultisampledFramebuffer),ie.__webglColorRenderbuffer)for(let fe=0;fe<ie.__webglColorRenderbuffer.length;fe++)ie.__webglColorRenderbuffer[fe]&&e.deleteRenderbuffer(ie.__webglColorRenderbuffer[fe]);ie.__webglDepthRenderbuffer&&e.deleteRenderbuffer(ie.__webglDepthRenderbuffer)}if(B.isWebGLMultipleRenderTargets)for(let fe=0,_e=D.length;fe<_e;fe++){let je=r.get(D[fe]);je.__webglTexture&&(e.deleteTexture(je.__webglTexture),a.memory.textures--),r.remove(D[fe])}r.remove(D),r.remove(B)}let j=0;function z(){j=0}function L(){let B=j;return B>=l&&console.warn("THREE.WebGLTextures: Trying to use "+B+" texture units while this GPU supports only "+l),j+=1,B}function G(B){let D=[];return D.push(B.wrapS),D.push(B.wrapT),D.push(B.magFilter),D.push(B.minFilter),D.push(B.anisotropy),D.push(B.internalFormat),D.push(B.format),D.push(B.type),D.push(B.generateMipmaps),D.push(B.premultiplyAlpha),D.push(B.flipY),D.push(B.unpackAlignment),D.push(B.encoding),D.join()}function F(B,D){let ie=r.get(B);if(B.isVideoTexture&&bt(B),B.isRenderTargetTexture===!1&&B.version>0&&ie.__version!==B.version){let ce=B.image;if(ce===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(ce.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{q(ie,B,D);return}}i.activeTexture(33984+D),i.bindTexture(3553,ie.__webglTexture)}function V(B,D){let ie=r.get(B);if(B.version>0&&ie.__version!==B.version){q(ie,B,D);return}i.activeTexture(33984+D),i.bindTexture(35866,ie.__webglTexture)}function N(B,D){let ie=r.get(B);if(B.version>0&&ie.__version!==B.version){q(ie,B,D);return}i.activeTexture(33984+D),i.bindTexture(32879,ie.__webglTexture)}function X(B,D){let ie=r.get(B);if(B.version>0&&ie.__version!==B.version){Q(ie,B,D);return}i.activeTexture(33984+D),i.bindTexture(34067,ie.__webglTexture)}let Z={[ql]:10497,[Gi]:33071,[Af]:33648},ee={[Lt]:9728,[Fv]:9984,[Uv]:9986,[ft]:9729,[V2]:9985,[fh]:9987};function W(B,D,ie){if(ie?(e.texParameteri(B,10242,Z[D.wrapS]),e.texParameteri(B,10243,Z[D.wrapT]),(B===32879||B===35866)&&e.texParameteri(B,32882,Z[D.wrapR]),e.texParameteri(B,10240,ee[D.magFilter]),e.texParameteri(B,10241,ee[D.minFilter])):(e.texParameteri(B,10242,33071),e.texParameteri(B,10243,33071),(B===32879||B===35866)&&e.texParameteri(B,32882,33071),(D.wrapS!==Gi||D.wrapT!==Gi)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(B,10240,C(D.magFilter)),e.texParameteri(B,10241,C(D.minFilter)),D.minFilter!==Lt&&D.minFilter!==ft&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let ce=t.get("EXT_texture_filter_anisotropic");if(D.type===sn&&t.has("OES_texture_float_linear")===!1||o===!1&&D.type===Ql&&t.has("OES_texture_half_float_linear")===!1)return;(D.anisotropy>1||r.get(D).__currentAnisotropy)&&(e.texParameterf(B,ce.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(D.anisotropy,s.getMaxAnisotropy())),r.get(D).__currentAnisotropy=D.anisotropy)}}function ne(B,D){let ie=!1;B.__webglInit===void 0&&(B.__webglInit=!0,D.addEventListener("dispose",T));let ce=D.source,fe=f.get(ce);fe===void 0&&(fe={},f.set(ce,fe));let _e=G(D);if(_e!==B.__cacheKey){fe[_e]===void 0&&(fe[_e]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,ie=!0),fe[_e].usedTimes++;let je=fe[B.__cacheKey];je!==void 0&&(fe[B.__cacheKey].usedTimes--,je.usedTimes===0&&O(D)),B.__cacheKey=_e,B.__webglTexture=fe[_e].texture}return ie}function q(B,D,ie){let ce=3553;D.isDataArrayTexture&&(ce=35866),D.isData3DTexture&&(ce=32879);let fe=ne(B,D),_e=D.source;if(i.activeTexture(33984+ie),i.bindTexture(ce,B.__webglTexture),_e.version!==_e.__currentVersion||fe===!0){e.pixelStorei(37440,D.flipY),e.pixelStorei(37441,D.premultiplyAlpha),e.pixelStorei(3317,D.unpackAlignment),e.pixelStorei(37443,0);let je=w(D)&&x(D.image)===!1,re=b(D.image,je,!1,u);re=Ke(D,re);let Be=x(re)||o,Pe=n.convert(D.format,D.encoding),ve=n.convert(D.type),k=S(D.internalFormat,Pe,ve,D.encoding,D.isVideoTexture);W(ce,D,Be);let me,be=D.mipmaps,He=o&&D.isVideoTexture!==!0,Te=_e.__currentVersion===void 0||fe===!0,Ge=E(D,re,Be);if(D.isDepthTexture)k=6402,o?D.type===sn?k=36012:D.type===rn?k=33190:D.type===qn?k=35056:k=33189:D.type===sn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),D.format===Qn&&k===6402&&D.type!==Ub&&D.type!==rn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),D.type=rn,ve=n.convert(D.type)),D.format===sa&&k===6402&&(k=34041,D.type!==qn&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),D.type=qn,ve=n.convert(D.type))),Te&&(He?i.texStorage2D(3553,1,k,re.width,re.height):i.texImage2D(3553,0,k,re.width,re.height,0,Pe,ve,null));else if(D.isDataTexture)if(be.length>0&&Be){He&&Te&&i.texStorage2D(3553,Ge,k,be[0].width,be[0].height);for(let ye=0,Ve=be.length;ye<Ve;ye++)me=be[ye],He?i.texSubImage2D(3553,ye,0,0,me.width,me.height,Pe,ve,me.data):i.texImage2D(3553,ye,k,me.width,me.height,0,Pe,ve,me.data);D.generateMipmaps=!1}else He?(Te&&i.texStorage2D(3553,Ge,k,re.width,re.height),i.texSubImage2D(3553,0,0,0,re.width,re.height,Pe,ve,re.data)):i.texImage2D(3553,0,k,re.width,re.height,0,Pe,ve,re.data);else if(D.isCompressedTexture){He&&Te&&i.texStorage2D(3553,Ge,k,be[0].width,be[0].height);for(let ye=0,Ve=be.length;ye<Ve;ye++)me=be[ye],D.format!==Jr?Pe!==null?He?i.compressedTexSubImage2D(3553,ye,0,0,me.width,me.height,Pe,me.data):i.compressedTexImage2D(3553,ye,k,me.width,me.height,0,me.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):He?i.texSubImage2D(3553,ye,0,0,me.width,me.height,Pe,ve,me.data):i.texImage2D(3553,ye,k,me.width,me.height,0,Pe,ve,me.data)}else if(D.isDataArrayTexture)He?(Te&&i.texStorage3D(35866,Ge,k,re.width,re.height,re.depth),i.texSubImage3D(35866,0,0,0,0,re.width,re.height,re.depth,Pe,ve,re.data)):i.texImage3D(35866,0,k,re.width,re.height,re.depth,0,Pe,ve,re.data);else if(D.isData3DTexture)He?(Te&&i.texStorage3D(32879,Ge,k,re.width,re.height,re.depth),i.texSubImage3D(32879,0,0,0,0,re.width,re.height,re.depth,Pe,ve,re.data)):i.texImage3D(32879,0,k,re.width,re.height,re.depth,0,Pe,ve,re.data);else if(D.isFramebufferTexture){if(Te)if(He)i.texStorage2D(3553,Ge,k,re.width,re.height);else{let ye=re.width,Ve=re.height;for(let Xe=0;Xe<Ge;Xe++)i.texImage2D(3553,Xe,k,ye,Ve,0,Pe,ve,null),ye>>=1,Ve>>=1}}else if(be.length>0&&Be){He&&Te&&i.texStorage2D(3553,Ge,k,be[0].width,be[0].height);for(let ye=0,Ve=be.length;ye<Ve;ye++)me=be[ye],He?i.texSubImage2D(3553,ye,0,0,Pe,ve,me):i.texImage2D(3553,ye,k,Pe,ve,me);D.generateMipmaps=!1}else He?(Te&&i.texStorage2D(3553,Ge,k,re.width,re.height),i.texSubImage2D(3553,0,0,0,Pe,ve,re)):i.texImage2D(3553,0,k,Pe,ve,re);_(D,Be)&&A(ce),_e.__currentVersion=_e.version,D.onUpdate&&D.onUpdate(D)}B.__version=D.version}function Q(B,D,ie){if(D.image.length!==6)return;let ce=ne(B,D),fe=D.source;if(i.activeTexture(33984+ie),i.bindTexture(34067,B.__webglTexture),fe.version!==fe.__currentVersion||ce===!0){e.pixelStorei(37440,D.flipY),e.pixelStorei(37441,D.premultiplyAlpha),e.pixelStorei(3317,D.unpackAlignment),e.pixelStorei(37443,0);let _e=D.isCompressedTexture||D.image[0].isCompressedTexture,je=D.image[0]&&D.image[0].isDataTexture,re=[];for(let ye=0;ye<6;ye++)!_e&&!je?re[ye]=b(D.image[ye],!1,!0,h):re[ye]=je?D.image[ye].image:D.image[ye],re[ye]=Ke(D,re[ye]);let Be=re[0],Pe=x(Be)||o,ve=n.convert(D.format,D.encoding),k=n.convert(D.type),me=S(D.internalFormat,ve,k,D.encoding),be=o&&D.isVideoTexture!==!0,He=fe.__currentVersion===void 0||ce===!0,Te=E(D,Be,Pe);W(34067,D,Pe);let Ge;if(_e){be&&He&&i.texStorage2D(34067,Te,me,Be.width,Be.height);for(let ye=0;ye<6;ye++){Ge=re[ye].mipmaps;for(let Ve=0;Ve<Ge.length;Ve++){let Xe=Ge[Ve];D.format!==Jr?ve!==null?be?i.compressedTexSubImage2D(34069+ye,Ve,0,0,Xe.width,Xe.height,ve,Xe.data):i.compressedTexImage2D(34069+ye,Ve,me,Xe.width,Xe.height,0,Xe.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):be?i.texSubImage2D(34069+ye,Ve,0,0,Xe.width,Xe.height,ve,k,Xe.data):i.texImage2D(34069+ye,Ve,me,Xe.width,Xe.height,0,ve,k,Xe.data)}}}else{Ge=D.mipmaps,be&&He&&(Ge.length>0&&Te++,i.texStorage2D(34067,Te,me,re[0].width,re[0].height));for(let ye=0;ye<6;ye++)if(je){be?i.texSubImage2D(34069+ye,0,0,0,re[ye].width,re[ye].height,ve,k,re[ye].data):i.texImage2D(34069+ye,0,me,re[ye].width,re[ye].height,0,ve,k,re[ye].data);for(let Ve=0;Ve<Ge.length;Ve++){let Xe=Ge[Ve].image[ye].image;be?i.texSubImage2D(34069+ye,Ve+1,0,0,Xe.width,Xe.height,ve,k,Xe.data):i.texImage2D(34069+ye,Ve+1,me,Xe.width,Xe.height,0,ve,k,Xe.data)}}else{be?i.texSubImage2D(34069+ye,0,0,0,ve,k,re[ye]):i.texImage2D(34069+ye,0,me,ve,k,re[ye]);for(let Ve=0;Ve<Ge.length;Ve++){let Xe=Ge[Ve];be?i.texSubImage2D(34069+ye,Ve+1,0,0,ve,k,Xe.image[ye]):i.texImage2D(34069+ye,Ve+1,me,ve,k,Xe.image[ye])}}}_(D,Pe)&&A(34067),fe.__currentVersion=fe.version,D.onUpdate&&D.onUpdate(D)}B.__version=D.version}function K(B,D,ie,ce,fe){let _e=n.convert(ie.format,ie.encoding),je=n.convert(ie.type),re=S(ie.internalFormat,_e,je,ie.encoding);r.get(D).__hasExternalTextures||(fe===32879||fe===35866?i.texImage3D(fe,0,re,D.width,D.height,D.depth,0,_e,je,null):i.texImage2D(fe,0,re,D.width,D.height,0,_e,je,null)),i.bindFramebuffer(36160,B),we(D)?d.framebufferTexture2DMultisampleEXT(36160,ce,fe,r.get(ie).__webglTexture,0,Ae(D)):e.framebufferTexture2D(36160,ce,fe,r.get(ie).__webglTexture,0),i.bindFramebuffer(36160,null)}function de(B,D,ie){if(e.bindRenderbuffer(36161,B),D.depthBuffer&&!D.stencilBuffer){let ce=33189;if(ie||we(D)){let fe=D.depthTexture;fe&&fe.isDepthTexture&&(fe.type===sn?ce=36012:fe.type===rn&&(ce=33190));let _e=Ae(D);we(D)?d.renderbufferStorageMultisampleEXT(36161,_e,ce,D.width,D.height):e.renderbufferStorageMultisample(36161,_e,ce,D.width,D.height)}else e.renderbufferStorage(36161,ce,D.width,D.height);e.framebufferRenderbuffer(36160,36096,36161,B)}else if(D.depthBuffer&&D.stencilBuffer){let ce=Ae(D);ie&&we(D)===!1?e.renderbufferStorageMultisample(36161,ce,35056,D.width,D.height):we(D)?d.renderbufferStorageMultisampleEXT(36161,ce,35056,D.width,D.height):e.renderbufferStorage(36161,34041,D.width,D.height),e.framebufferRenderbuffer(36160,33306,36161,B)}else{let ce=D.isWebGLMultipleRenderTargets===!0?D.texture:[D.texture];for(let fe=0;fe<ce.length;fe++){let _e=ce[fe],je=n.convert(_e.format,_e.encoding),re=n.convert(_e.type),Be=S(_e.internalFormat,je,re,_e.encoding),Pe=Ae(D);ie&&we(D)===!1?e.renderbufferStorageMultisample(36161,Pe,Be,D.width,D.height):we(D)?d.renderbufferStorageMultisampleEXT(36161,Pe,Be,D.width,D.height):e.renderbufferStorage(36161,Be,D.width,D.height)}}e.bindRenderbuffer(36161,null)}function oe(B,D){if(D&&D.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(i.bindFramebuffer(36160,B),!(D.depthTexture&&D.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!r.get(D.depthTexture).__webglTexture||D.depthTexture.image.width!==D.width||D.depthTexture.image.height!==D.height)&&(D.depthTexture.image.width=D.width,D.depthTexture.image.height=D.height,D.depthTexture.needsUpdate=!0),F(D.depthTexture,0);let ie=r.get(D.depthTexture).__webglTexture,ce=Ae(D);if(D.depthTexture.format===Qn)we(D)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,ie,0,ce):e.framebufferTexture2D(36160,36096,3553,ie,0);else if(D.depthTexture.format===sa)we(D)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,ie,0,ce):e.framebufferTexture2D(36160,33306,3553,ie,0);else throw new Error("Unknown depthTexture format")}function le(B){let D=r.get(B),ie=B.isWebGLCubeRenderTarget===!0;if(B.depthTexture&&!D.__autoAllocateDepthBuffer){if(ie)throw new Error("target.depthTexture not supported in Cube render targets");oe(D.__webglFramebuffer,B)}else if(ie){D.__webglDepthbuffer=[];for(let ce=0;ce<6;ce++)i.bindFramebuffer(36160,D.__webglFramebuffer[ce]),D.__webglDepthbuffer[ce]=e.createRenderbuffer(),de(D.__webglDepthbuffer[ce],B,!1)}else i.bindFramebuffer(36160,D.__webglFramebuffer),D.__webglDepthbuffer=e.createRenderbuffer(),de(D.__webglDepthbuffer,B,!1);i.bindFramebuffer(36160,null)}function ue(B,D,ie){let ce=r.get(B);D!==void 0&&K(ce.__webglFramebuffer,B,B.texture,36064,3553),ie!==void 0&&le(B)}function pe(B){let D=B.texture,ie=r.get(B),ce=r.get(D);B.addEventListener("dispose",P),B.isWebGLMultipleRenderTargets!==!0&&(ce.__webglTexture===void 0&&(ce.__webglTexture=e.createTexture()),ce.__version=D.version,a.memory.textures++);let fe=B.isWebGLCubeRenderTarget===!0,_e=B.isWebGLMultipleRenderTargets===!0,je=x(B)||o;if(fe){ie.__webglFramebuffer=[];for(let re=0;re<6;re++)ie.__webglFramebuffer[re]=e.createFramebuffer()}else{if(ie.__webglFramebuffer=e.createFramebuffer(),_e)if(s.drawBuffers){let re=B.texture;for(let Be=0,Pe=re.length;Be<Pe;Be++){let ve=r.get(re[Be]);ve.__webglTexture===void 0&&(ve.__webglTexture=e.createTexture(),a.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(o&&B.samples>0&&we(B)===!1){let re=_e?D:[D];ie.__webglMultisampledFramebuffer=e.createFramebuffer(),ie.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,ie.__webglMultisampledFramebuffer);for(let Be=0;Be<re.length;Be++){let Pe=re[Be];ie.__webglColorRenderbuffer[Be]=e.createRenderbuffer(),e.bindRenderbuffer(36161,ie.__webglColorRenderbuffer[Be]);let ve=n.convert(Pe.format,Pe.encoding),k=n.convert(Pe.type),me=S(Pe.internalFormat,ve,k,Pe.encoding),be=Ae(B);e.renderbufferStorageMultisample(36161,be,me,B.width,B.height),e.framebufferRenderbuffer(36160,36064+Be,36161,ie.__webglColorRenderbuffer[Be])}e.bindRenderbuffer(36161,null),B.depthBuffer&&(ie.__webglDepthRenderbuffer=e.createRenderbuffer(),de(ie.__webglDepthRenderbuffer,B,!0)),i.bindFramebuffer(36160,null)}}if(fe){i.bindTexture(34067,ce.__webglTexture),W(34067,D,je);for(let re=0;re<6;re++)K(ie.__webglFramebuffer[re],B,D,36064,34069+re);_(D,je)&&A(34067),i.unbindTexture()}else if(_e){let re=B.texture;for(let Be=0,Pe=re.length;Be<Pe;Be++){let ve=re[Be],k=r.get(ve);i.bindTexture(3553,k.__webglTexture),W(3553,ve,je),K(ie.__webglFramebuffer,B,ve,36064+Be,3553),_(ve,je)&&A(3553)}i.unbindTexture()}else{let re=3553;(B.isWebGL3DRenderTarget||B.isWebGLArrayRenderTarget)&&(o?re=B.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),i.bindTexture(re,ce.__webglTexture),W(re,D,je),K(ie.__webglFramebuffer,B,D,36064,re),_(D,je)&&A(re),i.unbindTexture()}B.depthBuffer&&le(B)}function ge(B){let D=x(B)||o,ie=B.isWebGLMultipleRenderTargets===!0?B.texture:[B.texture];for(let ce=0,fe=ie.length;ce<fe;ce++){let _e=ie[ce];if(_(_e,D)){let je=B.isWebGLCubeRenderTarget?34067:3553,re=r.get(_e).__webglTexture;i.bindTexture(je,re),A(je),i.unbindTexture()}}}function De(B){if(o&&B.samples>0&&we(B)===!1){let D=B.isWebGLMultipleRenderTargets?B.texture:[B.texture],ie=B.width,ce=B.height,fe=16384,_e=[],je=B.stencilBuffer?33306:36096,re=r.get(B),Be=B.isWebGLMultipleRenderTargets===!0;if(Be)for(let Pe=0;Pe<D.length;Pe++)i.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+Pe,36161,null),i.bindFramebuffer(36160,re.__webglFramebuffer),e.framebufferTexture2D(36009,36064+Pe,3553,null,0);i.bindFramebuffer(36008,re.__webglMultisampledFramebuffer),i.bindFramebuffer(36009,re.__webglFramebuffer);for(let Pe=0;Pe<D.length;Pe++){_e.push(36064+Pe),B.depthBuffer&&_e.push(je);let ve=re.__ignoreDepthValues!==void 0?re.__ignoreDepthValues:!1;if(ve===!1&&(B.depthBuffer&&(fe|=256),B.stencilBuffer&&(fe|=1024)),Be&&e.framebufferRenderbuffer(36008,36064,36161,re.__webglColorRenderbuffer[Pe]),ve===!0&&(e.invalidateFramebuffer(36008,[je]),e.invalidateFramebuffer(36009,[je])),Be){let k=r.get(D[Pe]).__webglTexture;e.framebufferTexture2D(36009,36064,3553,k,0)}e.blitFramebuffer(0,0,ie,ce,0,0,ie,ce,fe,9728),p&&e.invalidateFramebuffer(36008,_e)}if(i.bindFramebuffer(36008,null),i.bindFramebuffer(36009,null),Be)for(let Pe=0;Pe<D.length;Pe++){i.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+Pe,36161,re.__webglColorRenderbuffer[Pe]);let ve=r.get(D[Pe]).__webglTexture;i.bindFramebuffer(36160,re.__webglFramebuffer),e.framebufferTexture2D(36009,36064+Pe,3553,ve,0)}i.bindFramebuffer(36009,re.__webglMultisampledFramebuffer)}}function Ae(B){return Math.min(c,B.samples)}function we(B){let D=r.get(B);return o&&B.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&D.__useRenderToTexture!==!1}function bt(B){let D=a.render.frame;m.get(B)!==D&&(m.set(B,D),B.update())}function Ke(B,D){let ie=B.encoding,ce=B.format,fe=B.type;return B.isCompressedTexture===!0||B.isVideoTexture===!0||B.format===Ef||ie!==as&&(ie===et?o===!1?t.has("EXT_sRGB")===!0&&ce===Jr?(B.format=Ef,B.minFilter=ft,B.generateMipmaps=!1):D=Gb.sRGBToLinear(D):(ce!==Jr||fe!==mi)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",ie)),D}this.allocateTextureUnit=L,this.resetTextureUnits=z,this.setTexture2D=F,this.setTexture2DArray=V,this.setTexture3D=N,this.setTextureCube=X,this.rebindTextures=ue,this.setupRenderTarget=pe,this.updateRenderTargetMipmap=ge,this.updateMultisampleRenderTarget=De,this.setupDepthRenderbuffer=le,this.setupFrameBufferTexture=K,this.useMultisampledRTT=we}function pP(e,t,i){let r=i.isWebGL2;function s(n,a=null){let o;if(n===mi)return 5121;if(n===q2)return 32819;if(n===Q2)return 32820;if(n===W2)return 5120;if(n===X2)return 5122;if(n===Ub)return 5123;if(n===Y2)return 5124;if(n===rn)return 5125;if(n===sn)return 5126;if(n===Ql)return r?5131:(o=t.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(n===Z2)return 6406;if(n===Jr)return 6408;if(n===J2)return 6409;if(n===$2)return 6410;if(n===Qn)return 6402;if(n===sa)return 34041;if(n===eM)return 6403;if(n===K2)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(n===Ef)return o=t.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(n===tM)return 36244;if(n===iM)return 33319;if(n===rM)return 33320;if(n===sM)return 36249;if(n===Nu||n===zu||n===Fu||n===Uu)if(a===et)if(o=t.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(n===Nu)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===zu)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Fu)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Uu)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=t.get("WEBGL_compressed_texture_s3tc"),o!==null){if(n===Nu)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===zu)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Fu)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Uu)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===kv||n===jv||n===Hv||n===Gv)if(o=t.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(n===kv)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===jv)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Hv)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Gv)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===nM)return o=t.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(n===Vv||n===Wv)if(o=t.get("WEBGL_compressed_texture_etc"),o!==null){if(n===Vv)return a===et?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(n===Wv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Xv||n===Yv||n===qv||n===Qv||n===Zv||n===Kv||n===Jv||n===$v||n===e0||n===t0||n===i0||n===r0||n===s0||n===n0)if(o=t.get("WEBGL_compressed_texture_astc"),o!==null){if(n===Xv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Yv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===qv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Qv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Zv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Kv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Jv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===$v)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===e0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===t0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===i0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===r0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===s0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===n0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===a0)if(o=t.get("EXT_texture_compression_bptc"),o!==null){if(n===a0)return a===et?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return n===qn?r?34042:(o=t.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):e[n]!==void 0?e[n]:null}return{convert:s}}var fP=class extends di{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},Ja=class extends _t{constructor(){super(),this.isGroup=!0,this.type="Group"}},mP={type:"move"},pp=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ja,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Ja,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new M,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new M),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ja,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new M,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new M),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,s=null,n=null,a=this._targetRay,o=this._grip,l=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(l&&e.hand){n=!0;for(let m of e.hand.values()){let g=t.getJointPose(m,i);if(l.joints[m.jointName]===void 0){let v=new Ja;v.matrixAutoUpdate=!1,v.visible=!1,l.joints[m.jointName]=v,l.add(v)}let f=l.joints[m.jointName];g!==null&&(f.matrix.fromArray(g.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.jointRadius=g.radius),f.visible=g!==null}let h=l.joints["index-finger-tip"],u=l.joints["thumb-tip"],c=h.position.distanceTo(u.position),d=.02,p=.005;l.inputState.pinching&&c>d+p?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&c<=d-p&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else o!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(o.matrix.fromArray(s.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),s.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(s.linearVelocity)):o.hasLinearVelocity=!1,s.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(s.angularVelocity)):o.hasAngularVelocity=!1));a!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(mP)))}return a!==null&&(a.visible=r!==null),o!==null&&(o.visible=s!==null),l!==null&&(l.visible=n!==null),this}},Zm=class extends gi{constructor(e,t,i,r,s,n,a,o,l,h){if(h=h!==void 0?h:Qn,h!==Qn&&h!==sa)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&h===Qn&&(i=rn),i===void 0&&h===sa&&(i=qn),super(null,r,s,n,a,o,h,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:Lt,this.minFilter=o!==void 0?o:Lt,this.flipY=!1,this.generateMipmaps=!1}},gP=class extends zi{constructor(e,t){super();let i=this,r=null,s=1,n=null,a="local-floor",o=null,l=null,h=null,u=null,c=null,d=null,p=t.getContextAttributes(),m=null,g=null,f=[],v=[],y=new di;y.layers.enable(1),y.viewport=new tt;let b=new di;b.layers.enable(2),b.viewport=new tt;let x=[y,b],w=new fP;w.layers.enable(1),w.layers.enable(2);let _=null,A=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(L){let G=f[L];return G===void 0&&(G=new pp,f[L]=G),G.getTargetRaySpace()},this.getControllerGrip=function(L){let G=f[L];return G===void 0&&(G=new pp,f[L]=G),G.getGripSpace()},this.getHand=function(L){let G=f[L];return G===void 0&&(G=new pp,f[L]=G),G.getHandSpace()};function S(L){let G=v.indexOf(L.inputSource);if(G===-1)return;let F=f[G];F!==void 0&&F.dispatchEvent({type:L.type,data:L.inputSource})}function E(){r.removeEventListener("select",S),r.removeEventListener("selectstart",S),r.removeEventListener("selectend",S),r.removeEventListener("squeeze",S),r.removeEventListener("squeezestart",S),r.removeEventListener("squeezeend",S),r.removeEventListener("end",E),r.removeEventListener("inputsourceschange",C);for(let L=0;L<f.length;L++){let G=v[L];G!==null&&(v[L]=null,f[L].disconnect(G))}_=null,A=null,e.setRenderTarget(m),c=null,u=null,h=null,r=null,g=null,z.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(L){s=L,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(L){a=L,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return o||n},this.setReferenceSpace=function(L){o=L},this.getBaseLayer=function(){return u!==null?u:c},this.getBinding=function(){return h},this.getFrame=function(){return d},this.getSession=function(){return r},this.setSession=async function(L){if(r=L,r!==null){if(m=e.getRenderTarget(),r.addEventListener("select",S),r.addEventListener("selectstart",S),r.addEventListener("selectend",S),r.addEventListener("squeeze",S),r.addEventListener("squeezestart",S),r.addEventListener("squeezeend",S),r.addEventListener("end",E),r.addEventListener("inputsourceschange",C),p.xrCompatible!==!0&&await t.makeXRCompatible(),r.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let G={antialias:r.renderState.layers===void 0?p.antialias:!0,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:s};c=new XRWebGLLayer(r,t,G),r.updateRenderState({baseLayer:c}),g=new Ut(c.framebufferWidth,c.framebufferHeight,{format:Jr,type:mi,encoding:e.outputEncoding})}else{let G=null,F=null,V=null;p.depth&&(V=p.stencil?35056:33190,G=p.stencil?sa:Qn,F=p.stencil?qn:rn);let N={colorFormat:32856,depthFormat:V,scaleFactor:s};h=new XRWebGLBinding(r,t),u=h.createProjectionLayer(N),r.updateRenderState({layers:[u]}),g=new Ut(u.textureWidth,u.textureHeight,{format:Jr,type:mi,depthTexture:new Zm(u.textureWidth,u.textureHeight,F,void 0,void 0,void 0,void 0,void 0,void 0,G),stencilBuffer:p.stencil,encoding:e.outputEncoding,samples:p.antialias?4:0});let X=e.properties.get(g);X.__ignoreDepthValues=u.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(1),o=null,n=await r.requestReferenceSpace(a),z.setContext(r),z.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};function C(L){for(let G=0;G<L.removed.length;G++){let F=L.removed[G],V=v.indexOf(F);V>=0&&(v[V]=null,f[V].dispatchEvent({type:"disconnected",data:F}))}for(let G=0;G<L.added.length;G++){let F=L.added[G],V=v.indexOf(F);if(V===-1){for(let X=0;X<f.length;X++)if(X>=v.length){v.push(F),V=X;break}else if(v[X]===null){v[X]=F,V=X;break}if(V===-1)break}let N=f[V];N&&N.dispatchEvent({type:"connected",data:F})}}let T=new M,P=new M;function R(L,G,F){T.setFromMatrixPosition(G.matrixWorld),P.setFromMatrixPosition(F.matrixWorld);let V=T.distanceTo(P),N=G.projectionMatrix.elements,X=F.projectionMatrix.elements,Z=N[14]/(N[10]-1),ee=N[14]/(N[10]+1),W=(N[9]+1)/N[5],ne=(N[9]-1)/N[5],q=(N[8]-1)/N[0],Q=(X[8]+1)/X[0],K=Z*q,de=Z*Q,oe=V/(-q+Q),le=oe*-q;G.matrixWorld.decompose(L.position,L.quaternion,L.scale),L.translateX(le),L.translateZ(oe),L.matrixWorld.compose(L.position,L.quaternion,L.scale),L.matrixWorldInverse.copy(L.matrixWorld).invert();let ue=Z+oe,pe=ee+oe,ge=K-le,De=de+(V-le),Ae=W*ee/pe*ue,we=ne*ee/pe*ue;L.projectionMatrix.makePerspective(ge,De,Ae,we,ue,pe)}function O(L,G){G===null?L.matrixWorld.copy(L.matrix):L.matrixWorld.multiplyMatrices(G.matrixWorld,L.matrix),L.matrixWorldInverse.copy(L.matrixWorld).invert()}this.updateCamera=function(L){if(r===null)return;w.near=b.near=y.near=L.near,w.far=b.far=y.far=L.far,(_!==w.near||A!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),_=w.near,A=w.far);let G=L.parent,F=w.cameras;O(w,G);for(let N=0;N<F.length;N++)O(F[N],G);w.matrixWorld.decompose(w.position,w.quaternion,w.scale),L.position.copy(w.position),L.quaternion.copy(w.quaternion),L.scale.copy(w.scale),L.matrix.copy(w.matrix),L.matrixWorld.copy(w.matrixWorld);let V=L.children;for(let N=0,X=V.length;N<X;N++)V[N].updateMatrixWorld(!0);F.length===2?R(w,y,b):w.projectionMatrix.copy(y.projectionMatrix)},this.getCamera=function(){return w},this.getFoveation=function(){if(u!==null)return u.fixedFoveation;if(c!==null)return c.fixedFoveation},this.setFoveation=function(L){u!==null&&(u.fixedFoveation=L),c!==null&&c.fixedFoveation!==void 0&&(c.fixedFoveation=L)};let U=null;function j(L,G){if(l=G.getViewerPose(o||n),d=G,l!==null){let F=l.views;c!==null&&(e.setRenderTargetFramebuffer(g,c.framebuffer),e.setRenderTarget(g));let V=!1;F.length!==w.cameras.length&&(w.cameras.length=0,V=!0);for(let N=0;N<F.length;N++){let X=F[N],Z=null;if(c!==null)Z=c.getViewport(X);else{let W=h.getViewSubImage(u,X);Z=W.viewport,N===0&&(e.setRenderTargetTextures(g,W.colorTexture,u.ignoreDepthValues?void 0:W.depthStencilTexture),e.setRenderTarget(g))}let ee=x[N];ee===void 0&&(ee=new di,ee.layers.enable(N),ee.viewport=new tt,x[N]=ee),ee.matrix.fromArray(X.transform.matrix),ee.projectionMatrix.fromArray(X.projectionMatrix),ee.viewport.set(Z.x,Z.y,Z.width,Z.height),N===0&&w.matrix.copy(ee.matrix),V===!0&&w.cameras.push(ee)}}for(let F=0;F<f.length;F++){let V=v[F],N=f[F];V!==null&&N!==void 0&&N.update(V,G,o||n)}U&&U(L,G),d=null}let z=new Yb;z.setAnimationLoop(j),this.setAnimationLoop=function(L){U=L},this.dispose=function(){}}};function vP(e,t){function i(g,f){g.fogColor.value.copy(f.color),f.isFog?(g.fogNear.value=f.near,g.fogFar.value=f.far):f.isFogExp2&&(g.fogDensity.value=f.density)}function r(g,f,v,y,b){f.isMeshBasicMaterial||f.isMeshLambertMaterial?s(g,f):f.isMeshToonMaterial?(s(g,f),u(g,f)):f.isMeshPhongMaterial?(s(g,f),h(g,f)):f.isMeshStandardMaterial?(s(g,f),c(g,f),f.isMeshPhysicalMaterial&&d(g,f,b)):f.isMeshMatcapMaterial?(s(g,f),p(g,f)):f.isMeshDepthMaterial?s(g,f):f.isMeshDistanceMaterial?(s(g,f),m(g,f)):f.isMeshNormalMaterial?s(g,f):f.isLineBasicMaterial?(n(g,f),f.isLineDashedMaterial&&a(g,f)):f.isPointsMaterial?o(g,f,v,y):f.isSpriteMaterial?l(g,f):f.isShadowMaterial?(g.color.value.copy(f.color),g.opacity.value=f.opacity):f.isShaderMaterial&&(f.uniformsNeedUpdate=!1)}function s(g,f){g.opacity.value=f.opacity,f.color&&g.diffuse.value.copy(f.color),f.emissive&&g.emissive.value.copy(f.emissive).multiplyScalar(f.emissiveIntensity),f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===pi&&(g.bumpScale.value*=-1)),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===pi&&g.normalScale.value.negate()),f.specularMap&&(g.specularMap.value=f.specularMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let v=t.get(f).envMap;if(v&&(g.envMap.value=v,g.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=f.reflectivity,g.ior.value=f.ior,g.refractionRatio.value=f.refractionRatio),f.lightMap){g.lightMap.value=f.lightMap;let x=e.physicallyCorrectLights!==!0?Math.PI:1;g.lightMapIntensity.value=f.lightMapIntensity*x}f.aoMap&&(g.aoMap.value=f.aoMap,g.aoMapIntensity.value=f.aoMapIntensity);let y;f.map?y=f.map:f.specularMap?y=f.specularMap:f.displacementMap?y=f.displacementMap:f.normalMap?y=f.normalMap:f.bumpMap?y=f.bumpMap:f.roughnessMap?y=f.roughnessMap:f.metalnessMap?y=f.metalnessMap:f.alphaMap?y=f.alphaMap:f.emissiveMap?y=f.emissiveMap:f.clearcoatMap?y=f.clearcoatMap:f.clearcoatNormalMap?y=f.clearcoatNormalMap:f.clearcoatRoughnessMap?y=f.clearcoatRoughnessMap:f.iridescenceMap?y=f.iridescenceMap:f.iridescenceThicknessMap?y=f.iridescenceThicknessMap:f.specularIntensityMap?y=f.specularIntensityMap:f.specularColorMap?y=f.specularColorMap:f.transmissionMap?y=f.transmissionMap:f.thicknessMap?y=f.thicknessMap:f.sheenColorMap?y=f.sheenColorMap:f.sheenRoughnessMap&&(y=f.sheenRoughnessMap),y!==void 0&&(y.isWebGLRenderTarget&&(y=y.texture),y.matrixAutoUpdate===!0&&y.updateMatrix(),g.uvTransform.value.copy(y.matrix));let b;f.aoMap?b=f.aoMap:f.lightMap&&(b=f.lightMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),g.uv2Transform.value.copy(b.matrix))}function n(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity}function a(g,f){g.dashSize.value=f.dashSize,g.totalSize.value=f.dashSize+f.gapSize,g.scale.value=f.scale}function o(g,f,v,y){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.size.value=f.size*v,g.scale.value=y*.5,f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let b;f.map?b=f.map:f.alphaMap&&(b=f.alphaMap),b!==void 0&&(b.matrixAutoUpdate===!0&&b.updateMatrix(),g.uvTransform.value.copy(b.matrix))}function l(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.rotation.value=f.rotation,f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let v;f.map?v=f.map:f.alphaMap&&(v=f.alphaMap),v!==void 0&&(v.matrixAutoUpdate===!0&&v.updateMatrix(),g.uvTransform.value.copy(v.matrix))}function h(g,f){g.specular.value.copy(f.specular),g.shininess.value=Math.max(f.shininess,1e-4)}function u(g,f){f.gradientMap&&(g.gradientMap.value=f.gradientMap)}function c(g,f){g.roughness.value=f.roughness,g.metalness.value=f.metalness,f.roughnessMap&&(g.roughnessMap.value=f.roughnessMap),f.metalnessMap&&(g.metalnessMap.value=f.metalnessMap),t.get(f).envMap&&(g.envMapIntensity.value=f.envMapIntensity)}function d(g,f,v){g.ior.value=f.ior,f.sheen>0&&(g.sheenColor.value.copy(f.sheenColor).multiplyScalar(f.sheen),g.sheenRoughness.value=f.sheenRoughness,f.sheenColorMap&&(g.sheenColorMap.value=f.sheenColorMap),f.sheenRoughnessMap&&(g.sheenRoughnessMap.value=f.sheenRoughnessMap)),f.clearcoat>0&&(g.clearcoat.value=f.clearcoat,g.clearcoatRoughness.value=f.clearcoatRoughness,f.clearcoatMap&&(g.clearcoatMap.value=f.clearcoatMap),f.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=f.clearcoatRoughnessMap),f.clearcoatNormalMap&&(g.clearcoatNormalScale.value.copy(f.clearcoatNormalScale),g.clearcoatNormalMap.value=f.clearcoatNormalMap,f.side===pi&&g.clearcoatNormalScale.value.negate())),f.iridescence>0&&(g.iridescence.value=f.iridescence,g.iridescenceIOR.value=f.iridescenceIOR,g.iridescenceThicknessMinimum.value=f.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=f.iridescenceThicknessRange[1],f.iridescenceMap&&(g.iridescenceMap.value=f.iridescenceMap),f.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=f.iridescenceThicknessMap)),f.transmission>0&&(g.transmission.value=f.transmission,g.transmissionSamplerMap.value=v.texture,g.transmissionSamplerSize.value.set(v.width,v.height),f.transmissionMap&&(g.transmissionMap.value=f.transmissionMap),g.thickness.value=f.thickness,f.thicknessMap&&(g.thicknessMap.value=f.thicknessMap),g.attenuationDistance.value=f.attenuationDistance,g.attenuationColor.value.copy(f.attenuationColor)),g.specularIntensity.value=f.specularIntensity,g.specularColor.value.copy(f.specularColor),f.specularIntensityMap&&(g.specularIntensityMap.value=f.specularIntensityMap),f.specularColorMap&&(g.specularColorMap.value=f.specularColorMap)}function p(g,f){f.matcap&&(g.matcap.value=f.matcap)}function m(g,f){g.referencePosition.value.copy(f.referencePosition),g.nearDistance.value=f.nearDistance,g.farDistance.value=f.farDistance}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function yP(){let e=od("canvas");return e.style.display="block",e}function ew(e={}){this.isWebGLRenderer=!0;let t=e.canvas!==void 0?e.canvas:yP(),i=e.context!==void 0?e.context:null,r=e.depth!==void 0?e.depth:!0,s=e.stencil!==void 0?e.stencil:!0,n=e.antialias!==void 0?e.antialias:!1,a=e.premultipliedAlpha!==void 0?e.premultipliedAlpha:!0,o=e.preserveDrawingBuffer!==void 0?e.preserveDrawingBuffer:!1,l=e.powerPreference!==void 0?e.powerPreference:"default",h=e.failIfMajorPerformanceCaveat!==void 0?e.failIfMajorPerformanceCaveat:!1,u;i!==null?u=i.getContextAttributes().alpha:u=e.alpha!==void 0?e.alpha:!1;let c=null,d=null,p=[],m=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=as,this.physicallyCorrectLights=!1,this.toneMapping=Cs,this.toneMappingExposure=1,Object.defineProperties(this,{gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});let g=this,f=!1,v=0,y=0,b=null,x=-1,w=null,_=new tt,A=new tt,S=null,E=t.width,C=t.height,T=1,P=null,R=null,O=new tt(0,0,E,C),U=new tt(0,0,E,C),j=!1,z=new qm,L=!1,G=!1,F=null,V=new Se,N=new H,X=new M,Z={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ee(){return b===null?T:1}let W=i;function ne(I,J){for(let se=0;se<I.length;se++){let te=I[se],he=t.getContext(te,J);if(he!==null)return he}return null}try{let I={alpha:!0,depth:r,stencil:s,antialias:n,premultipliedAlpha:a,preserveDrawingBuffer:o,powerPreference:l,failIfMajorPerformanceCaveat:h};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${uh}`),t.addEventListener("webglcontextlost",k,!1),t.addEventListener("webglcontextrestored",me,!1),t.addEventListener("webglcontextcreationerror",be,!1),W===null){let J=["webgl2","webgl","experimental-webgl"];if(g.isWebGL1Renderer===!0&&J.shift(),W=ne(J,I),W===null)throw ne(J)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}W.getShaderPrecisionFormat===void 0&&(W.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(I){throw console.error("THREE.WebGLRenderer: "+I.message),I}let q,Q,K,de,oe,le,ue,pe,ge,De,Ae,we,bt,Ke,B,D,ie,ce,fe,_e,je,re,Be;function Pe(){q=new OT(W),Q=new MT(W,q,e),q.init(Q),re=new pP(W,q,Q),K=new dP(W,q,Q),de=new BT,oe=new J3,le=new uP(W,q,K,oe,Q,re,de),ue=new CT(g),pe=new DT(g),ge=new XM(W,Q),Be=new ST(W,q,ge,Q),De=new LT(W,ge,de,Be),Ae=new FT(W,De,ge,de),fe=new zT(W,Q,le),D=new ET(oe),we=new K3(g,ue,pe,q,Q,Be,D),bt=new vP(g,oe),Ke=new eP,B=new aP(q,Q),ce=new _T(g,ue,K,Ae,u,a),ie=new cP(g,Ae,Q),_e=new AT(W,q,de,Q),je=new IT(W,q,de,Q),de.programs=we.programs,g.capabilities=Q,g.extensions=q,g.properties=oe,g.renderLists=Ke,g.shadowMap=ie,g.state=K,g.info=de}Pe();let ve=new gP(g,W);this.xr=ve,this.getContext=function(){return W},this.getContextAttributes=function(){return W.getContextAttributes()},this.forceContextLoss=function(){let I=q.get("WEBGL_lose_context");I&&I.loseContext()},this.forceContextRestore=function(){let I=q.get("WEBGL_lose_context");I&&I.restoreContext()},this.getPixelRatio=function(){return T},this.setPixelRatio=function(I){I!==void 0&&(T=I,this.setSize(E,C,!1))},this.getSize=function(I){return I.set(E,C)},this.setSize=function(I,J,se){if(ve.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}E=I,C=J,t.width=Math.floor(I*T),t.height=Math.floor(J*T),se!==!1&&(t.style.width=I+"px",t.style.height=J+"px"),this.setViewport(0,0,I,J)},this.getDrawingBufferSize=function(I){return I.set(E*T,C*T).floor()},this.setDrawingBufferSize=function(I,J,se){E=I,C=J,T=se,t.width=Math.floor(I*se),t.height=Math.floor(J*se),this.setViewport(0,0,I,J)},this.getCurrentViewport=function(I){return I.copy(_)},this.getViewport=function(I){return I.copy(O)},this.setViewport=function(I,J,se,te){I.isVector4?O.set(I.x,I.y,I.z,I.w):O.set(I,J,se,te),K.viewport(_.copy(O).multiplyScalar(T).floor())},this.getScissor=function(I){return I.copy(U)},this.setScissor=function(I,J,se,te){I.isVector4?U.set(I.x,I.y,I.z,I.w):U.set(I,J,se,te),K.scissor(A.copy(U).multiplyScalar(T).floor())},this.getScissorTest=function(){return j},this.setScissorTest=function(I){K.setScissorTest(j=I)},this.setOpaqueSort=function(I){P=I},this.setTransparentSort=function(I){R=I},this.getClearColor=function(I){return I.copy(ce.getClearColor())},this.setClearColor=function(){ce.setClearColor.apply(ce,arguments)},this.getClearAlpha=function(){return ce.getClearAlpha()},this.setClearAlpha=function(){ce.setClearAlpha.apply(ce,arguments)},this.clear=function(I=!0,J=!0,se=!0){let te=0;I&&(te|=16384),J&&(te|=256),se&&(te|=1024),W.clear(te)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",k,!1),t.removeEventListener("webglcontextrestored",me,!1),t.removeEventListener("webglcontextcreationerror",be,!1),Ke.dispose(),B.dispose(),oe.dispose(),ue.dispose(),pe.dispose(),Ae.dispose(),Be.dispose(),we.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",Xe),ve.removeEventListener("sessionend",St),F&&(F.dispose(),F=null),dt.stop()};function k(I){I.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),f=!0}function me(){console.log("THREE.WebGLRenderer: Context Restored."),f=!1;let I=de.autoReset,J=ie.enabled,se=ie.autoUpdate,te=ie.needsUpdate,he=ie.type;Pe(),de.autoReset=I,ie.enabled=J,ie.autoUpdate=se,ie.needsUpdate=te,ie.type=he}function be(I){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",I.statusMessage)}function He(I){let J=I.target;J.removeEventListener("dispose",He),Te(J)}function Te(I){Ge(I),oe.remove(I)}function Ge(I){let J=oe.get(I).programs;J!==void 0&&(J.forEach(function(se){we.releaseProgram(se)}),I.isShaderMaterial&&we.releaseShaderCache(I))}this.renderBufferDirect=function(I,J,se,te,he,Ne){J===null&&(J=Z);let Je=he.isMesh&&he.matrixWorld.determinant()<0,$e=KA(I,J,se,te,he);K.setMaterial(te,Je);let at=se.index,Pt=se.attributes.position;if(at===null){if(Pt===void 0||Pt.count===0)return}else if(at.count===0)return;let ot=1;te.wireframe===!0&&(at=De.getWireframeAttribute(se),ot=2),Be.setup(he,te,$e,se,at);let lt,Kt=_e;at!==null&&(lt=ge.get(at),Kt=je,Kt.setIndex(lt));let Mn=at!==null?at.count:Pt.count,xa=se.drawRange.start*ot,ba=se.drawRange.count*ot,Br=Ne!==null?Ne.start*ot:0,ut=Ne!==null?Ne.count*ot:1/0,wa=Math.max(xa,Br),Qo=Math.min(Mn,xa+ba,Br+ut)-1,Rr=Math.max(0,Qo-wa+1);if(Rr!==0){if(he.isMesh)te.wireframe===!0?(K.setLineWidth(te.wireframeLinewidth*ee()),Kt.setMode(1)):Kt.setMode(4);else if(he.isLine){let zs=te.linewidth;zs===void 0&&(zs=1),K.setLineWidth(zs*ee()),he.isLineSegments?Kt.setMode(1):he.isLineLoop?Kt.setMode(2):Kt.setMode(3)}else he.isPoints?Kt.setMode(0):he.isSprite&&Kt.setMode(4);if(he.isInstancedMesh)Kt.renderInstances(wa,Rr,he.count);else if(se.isInstancedBufferGeometry){let zs=Math.min(se.instanceCount,se._maxInstanceCount);Kt.renderInstances(wa,Rr,zs)}else Kt.render(wa,Rr)}},this.compile=function(I,J){d=B.get(I),d.init(),m.push(d),I.traverseVisible(function(se){se.isLight&&se.layers.test(J.layers)&&(d.pushLight(se),se.castShadow&&d.pushShadow(se))}),d.setupLights(g.physicallyCorrectLights),I.traverse(function(se){let te=se.material;if(te)if(Array.isArray(te))for(let he=0;he<te.length;he++){let Ne=te[he];Iu(Ne,I,se)}else Iu(te,I,se)}),m.pop(),d=null};let ye=null;function Ve(I){ye&&ye(I)}function Xe(){dt.stop()}function St(){dt.start()}let dt=new Yb;dt.setAnimationLoop(Ve),typeof self<"u"&&dt.setContext(self),this.setAnimationLoop=function(I){ye=I,ve.setAnimationLoop(I),I===null?dt.stop():dt.start()},ve.addEventListener("sessionstart",Xe),ve.addEventListener("sessionend",St),this.render=function(I,J){if(J!==void 0&&J.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(f===!0)return;I.autoUpdate===!0&&I.updateMatrixWorld(),J.parent===null&&J.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(J),J=ve.getCamera()),I.isScene===!0&&I.onBeforeRender(g,I,J,b),d=B.get(I,m.length),d.init(),m.push(d),V.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),z.setFromProjectionMatrix(V),G=this.localClippingEnabled,L=D.init(this.clippingPlanes,G,J),c=Ke.get(I,p.length),c.init(),p.push(c),Pi(I,J,0,g.sortObjects),c.finish(),g.sortObjects===!0&&c.sort(P,R),L===!0&&D.beginShadows();let se=d.state.shadowsArray;if(ie.render(se,I,J),L===!0&&D.endShadows(),this.info.autoReset===!0&&this.info.reset(),ce.render(c,I),d.setupLights(g.physicallyCorrectLights),J.isArrayCamera){let te=J.cameras;for(let he=0,Ne=te.length;he<Ne;he++){let Je=te[he];Lh(c,I,Je,Je.viewport)}}else Lh(c,I,J);b!==null&&(le.updateMultisampleRenderTarget(b),le.updateRenderTargetMipmap(b)),I.isScene===!0&&I.onAfterRender(g,I,J),Be.resetDefaultState(),x=-1,w=null,m.pop(),m.length>0?d=m[m.length-1]:d=null,p.pop(),p.length>0?c=p[p.length-1]:c=null};function Pi(I,J,se,te){if(I.visible===!1)return;if(I.layers.test(J.layers)){if(I.isGroup)se=I.renderOrder;else if(I.isLOD)I.autoUpdate===!0&&I.update(J);else if(I.isLight)d.pushLight(I),I.castShadow&&d.pushShadow(I);else if(I.isSprite){if(!I.frustumCulled||z.intersectsSprite(I)){te&&X.setFromMatrixPosition(I.matrixWorld).applyMatrix4(V);let Ne=Ae.update(I),Je=I.material;Je.visible&&c.push(I,Ne,Je,se,X.z,null)}}else if((I.isMesh||I.isLine||I.isPoints)&&(I.isSkinnedMesh&&I.skeleton.frame!==de.render.frame&&(I.skeleton.update(),I.skeleton.frame=de.render.frame),!I.frustumCulled||z.intersectsObject(I))){te&&X.setFromMatrixPosition(I.matrixWorld).applyMatrix4(V);let Ne=Ae.update(I),Je=I.material;if(Array.isArray(Je)){let $e=Ne.groups;for(let at=0,Pt=$e.length;at<Pt;at++){let ot=$e[at],lt=Je[ot.materialIndex];lt&<.visible&&c.push(I,Ne,lt,se,X.z,ot)}}else Je.visible&&c.push(I,Ne,Je,se,X.z,null)}}let he=I.children;for(let Ne=0,Je=he.length;Ne<Je;Ne++)Pi(he[Ne],J,se,te)}function Lh(I,J,se,te){let he=I.opaque,Ne=I.transmissive,Je=I.transparent;d.setupLightsView(se),Ne.length>0&&ya(he,J,se),te&&K.viewport(_.copy(te)),he.length>0&&Ih(he,J,se),Ne.length>0&&Ih(Ne,J,se),Je.length>0&&Ih(Je,J,se),K.buffers.depth.setTest(!0),K.buffers.depth.setMask(!0),K.buffers.color.setMask(!0),K.setPolygonOffset(!1)}function ya(I,J,se){let te=Q.isWebGL2;F===null&&(F=new Ut(1,1,{generateMipmaps:!0,type:q.has("EXT_color_buffer_half_float")?Ql:mi,minFilter:fh,samples:te&&n===!0?4:0})),g.getDrawingBufferSize(N),te?F.setSize(N.x,N.y):F.setSize(ad(N.x),ad(N.y));let he=g.getRenderTarget();g.setRenderTarget(F),g.clear();let Ne=g.toneMapping;g.toneMapping=Cs,Ih(I,J,se),g.toneMapping=Ne,le.updateMultisampleRenderTarget(F),le.updateRenderTargetMipmap(F),g.setRenderTarget(he)}function Ih(I,J,se){let te=J.isScene===!0?J.overrideMaterial:null;for(let he=0,Ne=I.length;he<Ne;he++){let Je=I[he],$e=Je.object,at=Je.geometry,Pt=te===null?Je.material:te,ot=Je.group;$e.layers.test(se.layers)&&ZA($e,J,se,at,Pt,ot)}}function ZA(I,J,se,te,he,Ne){I.onBeforeRender(g,J,se,te,he,Ne),I.modelViewMatrix.multiplyMatrices(se.matrixWorldInverse,I.matrixWorld),I.normalMatrix.getNormalMatrix(I.modelViewMatrix),he.onBeforeRender(g,J,se,te,I,Ne),he.transparent===!0&&he.side===Er?(he.side=pi,he.needsUpdate=!0,g.renderBufferDirect(se,J,te,he,I,Ne),he.side=mn,he.needsUpdate=!0,g.renderBufferDirect(se,J,te,he,I,Ne),he.side=Er):g.renderBufferDirect(se,J,te,he,I,Ne),I.onAfterRender(g,J,se,te,he,Ne)}function Iu(I,J,se){J.isScene!==!0&&(J=Z);let te=oe.get(I),he=d.state.lights,Ne=d.state.shadowsArray,Je=he.state.version,$e=we.getParameters(I,he.state,Ne,J,se),at=we.getProgramCacheKey($e),Pt=te.programs;te.environment=I.isMeshStandardMaterial?J.environment:null,te.fog=J.fog,te.envMap=(I.isMeshStandardMaterial?pe:ue).get(I.envMap||te.environment),Pt===void 0&&(I.addEventListener("dispose",He),Pt=new Map,te.programs=Pt);let ot=Pt.get(at);if(ot!==void 0){if(te.currentProgram===ot&&te.lightsStateVersion===Je)return Pv(I,$e),ot}else $e.uniforms=we.getUniforms(I),I.onBuild(se,$e,g),I.onBeforeCompile($e,g),ot=we.acquireProgram($e,at),Pt.set(at,ot),te.uniforms=$e.uniforms;let lt=te.uniforms;(!I.isShaderMaterial&&!I.isRawShaderMaterial||I.clipping===!0)&&(lt.clippingPlanes=D.uniform),Pv(I,$e),te.needsLights=$A(I),te.lightsStateVersion=Je,te.needsLights&&(lt.ambientLightColor.value=he.state.ambient,lt.lightProbe.value=he.state.probe,lt.directionalLights.value=he.state.directional,lt.directionalLightShadows.value=he.state.directionalShadow,lt.spotLights.value=he.state.spot,lt.spotLightShadows.value=he.state.spotShadow,lt.rectAreaLights.value=he.state.rectArea,lt.ltc_1.value=he.state.rectAreaLTC1,lt.ltc_2.value=he.state.rectAreaLTC2,lt.pointLights.value=he.state.point,lt.pointLightShadows.value=he.state.pointShadow,lt.hemisphereLights.value=he.state.hemi,lt.directionalShadowMap.value=he.state.directionalShadowMap,lt.directionalShadowMatrix.value=he.state.directionalShadowMatrix,lt.spotShadowMap.value=he.state.spotShadowMap,lt.spotShadowMatrix.value=he.state.spotShadowMatrix,lt.pointShadowMap.value=he.state.pointShadowMap,lt.pointShadowMatrix.value=he.state.pointShadowMatrix);let Kt=ot.getUniforms(),Mn=Yc.seqWithValue(Kt.seq,lt);return te.currentProgram=ot,te.uniformsList=Mn,ot}function Pv(I,J){let se=oe.get(I);se.outputEncoding=J.outputEncoding,se.instancing=J.instancing,se.skinning=J.skinning,se.morphTargets=J.morphTargets,se.morphNormals=J.morphNormals,se.morphColors=J.morphColors,se.morphTargetsCount=J.morphTargetsCount,se.numClippingPlanes=J.numClippingPlanes,se.numIntersection=J.numClipIntersection,se.vertexAlphas=J.vertexAlphas,se.vertexTangents=J.vertexTangents,se.toneMapping=J.toneMapping}function KA(I,J,se,te,he){J.isScene!==!0&&(J=Z),le.resetTextureUnits();let Ne=J.fog,Je=te.isMeshStandardMaterial?J.environment:null,$e=b===null?g.outputEncoding:b.isXRRenderTarget===!0?b.texture.encoding:as,at=(te.isMeshStandardMaterial?pe:ue).get(te.envMap||Je),Pt=te.vertexColors===!0&&!!se.attributes.color&&se.attributes.color.itemSize===4,ot=!!te.normalMap&&!!se.attributes.tangent,lt=!!se.morphAttributes.position,Kt=!!se.morphAttributes.normal,Mn=!!se.morphAttributes.color,xa=te.toneMapped?g.toneMapping:Cs,ba=se.morphAttributes.position||se.morphAttributes.normal||se.morphAttributes.color,Br=ba!==void 0?ba.length:0,ut=oe.get(te),wa=d.state.lights;if(L===!0&&(G===!0||I!==w)){let Nr=I===w&&te.id===x;D.setState(te,I,Nr)}let Qo=!1;te.version===ut.__version?(ut.needsLights&&ut.lightsStateVersion!==wa.state.version||ut.outputEncoding!==$e||he.isInstancedMesh&&ut.instancing===!1||!he.isInstancedMesh&&ut.instancing===!0||he.isSkinnedMesh&&ut.skinning===!1||!he.isSkinnedMesh&&ut.skinning===!0||ut.envMap!==at||te.fog===!0&&ut.fog!==Ne||ut.numClippingPlanes!==void 0&&(ut.numClippingPlanes!==D.numPlanes||ut.numIntersection!==D.numIntersection)||ut.vertexAlphas!==Pt||ut.vertexTangents!==ot||ut.morphTargets!==lt||ut.morphNormals!==Kt||ut.morphColors!==Mn||ut.toneMapping!==xa||Q.isWebGL2===!0&&ut.morphTargetsCount!==Br)&&(Qo=!0):(Qo=!0,ut.__version=te.version);let Rr=ut.currentProgram;Qo===!0&&(Rr=Iu(te,J,he));let zs=!1,Zo=!1,Bu=!1,vi=Rr.getUniforms(),Ko=ut.uniforms;if(K.useProgram(Rr.program)&&(zs=!0,Zo=!0,Bu=!0),te.id!==x&&(x=te.id,Zo=!0),zs||w!==I){if(vi.setValue(W,"projectionMatrix",I.projectionMatrix),Q.logarithmicDepthBuffer&&vi.setValue(W,"logDepthBufFC",2/(Math.log(I.far+1)/Math.LN2)),w!==I&&(w=I,Zo=!0,Bu=!0),te.isShaderMaterial||te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshStandardMaterial||te.envMap){let Nr=vi.map.cameraPosition;Nr!==void 0&&Nr.setValue(W,X.setFromMatrixPosition(I.matrixWorld))}(te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshLambertMaterial||te.isMeshBasicMaterial||te.isMeshStandardMaterial||te.isShaderMaterial)&&vi.setValue(W,"isOrthographic",I.isOrthographicCamera===!0),(te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshLambertMaterial||te.isMeshBasicMaterial||te.isMeshStandardMaterial||te.isShaderMaterial||te.isShadowMaterial||he.isSkinnedMesh)&&vi.setValue(W,"viewMatrix",I.matrixWorldInverse)}if(he.isSkinnedMesh){vi.setOptional(W,he,"bindMatrix"),vi.setOptional(W,he,"bindMatrixInverse");let Nr=he.skeleton;Nr&&(Q.floatVertexTextures?(Nr.boneTexture===null&&Nr.computeBoneTexture(),vi.setValue(W,"boneTexture",Nr.boneTexture,le),vi.setValue(W,"boneTextureSize",Nr.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let Ru=se.morphAttributes;return(Ru.position!==void 0||Ru.normal!==void 0||Ru.color!==void 0&&Q.isWebGL2===!0)&&fe.update(he,se,te,Rr),(Zo||ut.receiveShadow!==he.receiveShadow)&&(ut.receiveShadow=he.receiveShadow,vi.setValue(W,"receiveShadow",he.receiveShadow)),Zo&&(vi.setValue(W,"toneMappingExposure",g.toneMappingExposure),ut.needsLights&&JA(Ko,Bu),Ne&&te.fog===!0&&bt.refreshFogUniforms(Ko,Ne),bt.refreshMaterialUniforms(Ko,te,T,C,F),Yc.upload(W,ut.uniformsList,Ko,le)),te.isShaderMaterial&&te.uniformsNeedUpdate===!0&&(Yc.upload(W,ut.uniformsList,Ko,le),te.uniformsNeedUpdate=!1),te.isSpriteMaterial&&vi.setValue(W,"center",he.center),vi.setValue(W,"modelViewMatrix",he.modelViewMatrix),vi.setValue(W,"normalMatrix",he.normalMatrix),vi.setValue(W,"modelMatrix",he.matrixWorld),Rr}function JA(I,J){I.ambientLightColor.needsUpdate=J,I.lightProbe.needsUpdate=J,I.directionalLights.needsUpdate=J,I.directionalLightShadows.needsUpdate=J,I.pointLights.needsUpdate=J,I.pointLightShadows.needsUpdate=J,I.spotLights.needsUpdate=J,I.spotLightShadows.needsUpdate=J,I.rectAreaLights.needsUpdate=J,I.hemisphereLights.needsUpdate=J}function $A(I){return I.isMeshLambertMaterial||I.isMeshToonMaterial||I.isMeshPhongMaterial||I.isMeshStandardMaterial||I.isShadowMaterial||I.isShaderMaterial&&I.lights===!0}this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return y},this.getRenderTarget=function(){return b},this.setRenderTargetTextures=function(I,J,se){oe.get(I.texture).__webglTexture=J,oe.get(I.depthTexture).__webglTexture=se;let te=oe.get(I);te.__hasExternalTextures=!0,te.__hasExternalTextures&&(te.__autoAllocateDepthBuffer=se===void 0,te.__autoAllocateDepthBuffer||q.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),te.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(I,J){let se=oe.get(I);se.__webglFramebuffer=J,se.__useDefaultFramebuffer=J===void 0},this.setRenderTarget=function(I,J=0,se=0){b=I,v=J,y=se;let te=!0;if(I){let $e=oe.get(I);$e.__useDefaultFramebuffer!==void 0?(K.bindFramebuffer(36160,null),te=!1):$e.__webglFramebuffer===void 0?le.setupRenderTarget(I):$e.__hasExternalTextures&&le.rebindTextures(I,oe.get(I.texture).__webglTexture,oe.get(I.depthTexture).__webglTexture)}let he=null,Ne=!1,Je=!1;if(I){let $e=I.texture;($e.isData3DTexture||$e.isDataArrayTexture)&&(Je=!0);let at=oe.get(I).__webglFramebuffer;I.isWebGLCubeRenderTarget?(he=at[J],Ne=!0):Q.isWebGL2&&I.samples>0&&le.useMultisampledRTT(I)===!1?he=oe.get(I).__webglMultisampledFramebuffer:he=at,_.copy(I.viewport),A.copy(I.scissor),S=I.scissorTest}else _.copy(O).multiplyScalar(T).floor(),A.copy(U).multiplyScalar(T).floor(),S=j;if(K.bindFramebuffer(36160,he)&&Q.drawBuffers&&te&&K.drawBuffers(I,he),K.viewport(_),K.scissor(A),K.setScissorTest(S),Ne){let $e=oe.get(I.texture);W.framebufferTexture2D(36160,36064,34069+J,$e.__webglTexture,se)}else if(Je){let $e=oe.get(I.texture),at=J||0;W.framebufferTextureLayer(36160,36064,$e.__webglTexture,se||0,at)}x=-1},this.readRenderTargetPixels=function(I,J,se,te,he,Ne,Je){if(!(I&&I.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let $e=oe.get(I).__webglFramebuffer;if(I.isWebGLCubeRenderTarget&&Je!==void 0&&($e=$e[Je]),$e){K.bindFramebuffer(36160,$e);try{let at=I.texture,Pt=at.format,ot=at.type;if(Pt!==Jr&&re.convert(Pt)!==W.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let lt=ot===Ql&&(q.has("EXT_color_buffer_half_float")||Q.isWebGL2&&q.has("EXT_color_buffer_float"));if(ot!==mi&&re.convert(ot)!==W.getParameter(35738)&&!(ot===sn&&(Q.isWebGL2||q.has("OES_texture_float")||q.has("WEBGL_color_buffer_float")))&&!lt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=I.width-te&&se>=0&&se<=I.height-he&&W.readPixels(J,se,te,he,re.convert(Pt),re.convert(ot),Ne)}finally{let at=b!==null?oe.get(b).__webglFramebuffer:null;K.bindFramebuffer(36160,at)}}},this.copyFramebufferToTexture=function(I,J,se=0){let te=Math.pow(2,-se),he=Math.floor(J.image.width*te),Ne=Math.floor(J.image.height*te);le.setTexture2D(J,0),W.copyTexSubImage2D(3553,se,0,0,I.x,I.y,he,Ne),K.unbindTexture()},this.copyTextureToTexture=function(I,J,se,te=0){let he=J.image.width,Ne=J.image.height,Je=re.convert(se.format),$e=re.convert(se.type);le.setTexture2D(se,0),W.pixelStorei(37440,se.flipY),W.pixelStorei(37441,se.premultiplyAlpha),W.pixelStorei(3317,se.unpackAlignment),J.isDataTexture?W.texSubImage2D(3553,te,I.x,I.y,he,Ne,Je,$e,J.image.data):J.isCompressedTexture?W.compressedTexSubImage2D(3553,te,I.x,I.y,J.mipmaps[0].width,J.mipmaps[0].height,Je,J.mipmaps[0].data):W.texSubImage2D(3553,te,I.x,I.y,Je,$e,J.image),te===0&&se.generateMipmaps&&W.generateMipmap(3553),K.unbindTexture()},this.copyTextureToTexture3D=function(I,J,se,te,he=0){if(g.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Ne=I.max.x-I.min.x+1,Je=I.max.y-I.min.y+1,$e=I.max.z-I.min.z+1,at=re.convert(te.format),Pt=re.convert(te.type),ot;if(te.isData3DTexture)le.setTexture3D(te,0),ot=32879;else if(te.isDataArrayTexture)le.setTexture2DArray(te,0),ot=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}W.pixelStorei(37440,te.flipY),W.pixelStorei(37441,te.premultiplyAlpha),W.pixelStorei(3317,te.unpackAlignment);let lt=W.getParameter(3314),Kt=W.getParameter(32878),Mn=W.getParameter(3316),xa=W.getParameter(3315),ba=W.getParameter(32877),Br=se.isCompressedTexture?se.mipmaps[0]:se.image;W.pixelStorei(3314,Br.width),W.pixelStorei(32878,Br.height),W.pixelStorei(3316,I.min.x),W.pixelStorei(3315,I.min.y),W.pixelStorei(32877,I.min.z),se.isDataTexture||se.isData3DTexture?W.texSubImage3D(ot,he,J.x,J.y,J.z,Ne,Je,$e,at,Pt,Br.data):se.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),W.compressedTexSubImage3D(ot,he,J.x,J.y,J.z,Ne,Je,$e,at,Br.data)):W.texSubImage3D(ot,he,J.x,J.y,J.z,Ne,Je,$e,at,Pt,Br),W.pixelStorei(3314,lt),W.pixelStorei(32878,Kt),W.pixelStorei(3316,Mn),W.pixelStorei(3315,xa),W.pixelStorei(32877,ba),he===0&&te.generateMipmaps&&W.generateMipmap(ot),K.unbindTexture()},this.initTexture=function(I){I.isCubeTexture?le.setTextureCube(I,0):I.isData3DTexture?le.setTexture3D(I,0):I.isDataArrayTexture?le.setTexture2DArray(I,0):le.setTexture2D(I,0),K.unbindTexture()},this.resetState=function(){v=0,y=0,b=null,K.reset(),Be.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var xP=class extends ew{};xP.prototype.isWebGL1Renderer=!0;var tw=class{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Ue(e),this.near=t,this.far=i}clone(){return new tw(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},Kn=class extends _t{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}},bP=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Mf,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=rs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,s=this.stride;r<s;r++)this.array[e+r]=t.array[i+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=rs()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(t,this.stride);return i.setUsage(this.usage),i}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=rs()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},yi=new M,Pf=class{constructor(e,t,i,r=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=i,this.normalized=r===!0}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,i=this.data.count;t<i;t++)yi.fromBufferAttribute(this,t),yi.applyMatrix4(e),this.setXYZ(t,yi.x,yi.y,yi.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)yi.fromBufferAttribute(this,t),yi.applyNormalMatrix(e),this.setXYZ(t,yi.x,yi.y,yi.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)yi.fromBufferAttribute(this,t),yi.transformDirection(e),this.setXYZ(t,yi.x,yi.y,yi.z);return this}setX(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){return this.data.array[e*this.data.stride+this.offset]}getY(e){return this.data.array[e*this.data.stride+this.offset+1]}getZ(e){return this.data.array[e*this.data.stride+this.offset+2]}getW(e){return this.data.array[e*this.data.stride+this.offset+3]}setXY(e,t,i){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=i,this}setXYZ(e,t,i,r){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=r,this}setXYZW(e,t,i,r,s){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=r,this.data.array[e+3]=s,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let i=0;i<this.count;i++){let r=i*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return new Qe(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new Pf(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let i=0;i<this.count;i++){let r=i*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}},wP=class extends Qe{constructor(e,t,i,r=1){typeof i=="number"&&(r=i,i=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),super(e,t,i),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}},bn=class extends mh{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ue(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},W0=new M,X0=new M,Y0=new Se,fp=new Do,ic=new pr,hd=class extends _t{constructor(e=new ke,t=new bn){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[0];for(let r=1,s=t.count;r<s;r++)W0.fromBufferAttribute(t,r-1),X0.fromBufferAttribute(t,r),i[r]=i[r-1],i[r]+=W0.distanceTo(X0);e.setAttribute("lineDistance",new Ee(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){let i=this.geometry,r=this.matrixWorld,s=e.params.Line.threshold,n=i.drawRange;if(i.boundingSphere===null&&i.computeBoundingSphere(),ic.copy(i.boundingSphere),ic.applyMatrix4(r),ic.radius+=s,e.ray.intersectsSphere(ic)===!1)return;Y0.copy(r).invert(),fp.copy(e.ray).applyMatrix4(Y0);let a=s/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,l=new M,h=new M,u=new M,c=new M,d=this.isLineSegments?2:1,p=i.index,m=i.attributes.position;if(p!==null){let g=Math.max(0,n.start),f=Math.min(p.count,n.start+n.count);for(let v=g,y=f-1;v<y;v+=d){let b=p.getX(v),x=p.getX(v+1);if(l.fromBufferAttribute(m,b),h.fromBufferAttribute(m,x),fp.distanceSqToSegment(l,h,c,u)>o)continue;c.applyMatrix4(this.matrixWorld);let w=e.ray.origin.distanceTo(c);w<e.near||w>e.far||t.push({distance:w,point:u.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}else{let g=Math.max(0,n.start),f=Math.min(m.count,n.start+n.count);for(let v=g,y=f-1;v<y;v+=d){if(l.fromBufferAttribute(m,v),h.fromBufferAttribute(m,v+1),fp.distanceSqToSegment(l,h,c,u)>o)continue;c.applyMatrix4(this.matrixWorld);let b=e.ray.origin.distanceTo(c);b<e.near||b>e.far||t.push({distance:b,point:u.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){let n=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[n]=r}}}}},q0=new M,Q0=new M,vh=class extends hd{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[];for(let r=0,s=t.count;r<s;r+=2)q0.fromBufferAttribute(t,r),Q0.fromBufferAttribute(t,r+1),i[r]=r===0?0:i[r-1],i[r+1]=i[r]+q0.distanceTo(Q0);e.setAttribute("lineDistance",new Ee(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}},_P=class extends gi{constructor(e,t,i,r,s,n,a,o,l){super(e,t,i,r,s,n,a,o,l),this.isVideoTexture=!0,this.minFilter=n!==void 0?n:ft,this.magFilter=s!==void 0?s:ft,this.generateMipmaps=!1;let h=this;function u(){h.needsUpdate=!0,e.requestVideoFrameCallback(u)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(u)}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!("requestVideoFrameCallback"in e)&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},us=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],i,r=this.getPoint(0),s=0;t.push(0);for(let n=1;n<=e;n++)i=this.getPoint(n/e),s+=i.distanceTo(r),t.push(s),r=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let i=this.getLengths(),r=0,s=i.length,n;t?n=t:n=e*i[s-1];let a=0,o=s-1,l;for(;a<=o;)if(r=Math.floor(a+(o-a)/2),l=i[r]-n,l<0)a=r+1;else if(l>0)o=r-1;else{o=r;break}if(r=o,i[r]===n)return r/(s-1);let h=i[r],u=i[r+1]-h,c=(n-h)/u;return(r+c)/(s-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let s=this.getPoint(i),n=this.getPoint(r),a=t||(s.isVector2?new H:new M);return a.copy(n).sub(s).normalize(),a}getTangentAt(e,t){let i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){let i=new M,r=[],s=[],n=[],a=new M,o=new Se;for(let d=0;d<=e;d++){let p=d/e;r[d]=this.getTangentAt(p,new M)}s[0]=new M,n[0]=new M;let l=Number.MAX_VALUE,h=Math.abs(r[0].x),u=Math.abs(r[0].y),c=Math.abs(r[0].z);h<=l&&(l=h,i.set(1,0,0)),u<=l&&(l=u,i.set(0,1,0)),c<=l&&i.set(0,0,1),a.crossVectors(r[0],i).normalize(),s[0].crossVectors(r[0],a),n[0].crossVectors(r[0],s[0]);for(let d=1;d<=e;d++){if(s[d]=s[d-1].clone(),n[d]=n[d-1].clone(),a.crossVectors(r[d-1],r[d]),a.length()>Number.EPSILON){a.normalize();let p=Math.acos(qt(r[d-1].dot(r[d]),-1,1));s[d].applyMatrix4(o.makeRotationAxis(a,p))}n[d].crossVectors(r[d],s[d])}if(t===!0){let d=Math.acos(qt(s[0].dot(s[e]),-1,1));d/=e,r[0].dot(a.crossVectors(s[0],s[e]))>0&&(d=-d);for(let p=1;p<=e;p++)s[p].applyMatrix4(o.makeRotationAxis(r[p],d*p)),n[p].crossVectors(r[p],s[p])}return{tangents:r,normals:s,binormals:n}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},tu=class extends us{constructor(e=0,t=0,i=1,r=1,s=0,n=Math.PI*2,a=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=s,this.aEndAngle=n,this.aClockwise=a,this.aRotation=o}getPoint(e,t){let i=t||new H,r=Math.PI*2,s=this.aEndAngle-this.aStartAngle,n=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=r;for(;s>r;)s-=r;s<Number.EPSILON&&(n?s=0:s=r),this.aClockwise===!0&&!n&&(s===r?s=-r:s=s-r);let a=this.aStartAngle+e*s,o=this.aX+this.xRadius*Math.cos(a),l=this.aY+this.yRadius*Math.sin(a);if(this.aRotation!==0){let h=Math.cos(this.aRotation),u=Math.sin(this.aRotation),c=o-this.aX,d=l-this.aY;o=c*h-d*u+this.aX,l=c*u+d*h+this.aY}return i.set(o,l)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},SP=class extends tu{constructor(e,t,i,r,s,n){super(e,t,i,i,r,s,n),this.isArcCurve=!0,this.type="ArcCurve"}};function Km(){let e=0,t=0,i=0,r=0;function s(n,a,o,l){e=n,t=o,i=-3*n+3*a-2*o-l,r=2*n-2*a+o+l}return{initCatmullRom:function(n,a,o,l,h){s(a,o,h*(o-n),h*(l-a))},initNonuniformCatmullRom:function(n,a,o,l,h,u,c){let d=(a-n)/h-(o-n)/(h+u)+(o-a)/u,p=(o-a)/u-(l-a)/(u+c)+(l-o)/c;d*=u,p*=u,s(a,o,d,p)},calc:function(n){let a=n*n,o=a*n;return e+t*n+i*a+r*o}}}var rc=new M,mp=new Km,gp=new Km,vp=new Km,AP=class extends us{constructor(e=[],t=!1,i="centripetal",r=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=i,this.tension=r}getPoint(e,t=new M){let i=t,r=this.points,s=r.length,n=(s-(this.closed?0:1))*e,a=Math.floor(n),o=n-a;this.closed?a+=a>0?0:(Math.floor(Math.abs(a)/s)+1)*s:o===0&&a===s-1&&(a=s-2,o=1);let l,h;this.closed||a>0?l=r[(a-1)%s]:(rc.subVectors(r[0],r[1]).add(r[0]),l=rc);let u=r[a%s],c=r[(a+1)%s];if(this.closed||a+2<s?h=r[(a+2)%s]:(rc.subVectors(r[s-1],r[s-2]).add(r[s-1]),h=rc),this.curveType==="centripetal"||this.curveType==="chordal"){let d=this.curveType==="chordal"?.5:.25,p=Math.pow(l.distanceToSquared(u),d),m=Math.pow(u.distanceToSquared(c),d),g=Math.pow(c.distanceToSquared(h),d);m<1e-4&&(m=1),p<1e-4&&(p=m),g<1e-4&&(g=m),mp.initNonuniformCatmullRom(l.x,u.x,c.x,h.x,p,m,g),gp.initNonuniformCatmullRom(l.y,u.y,c.y,h.y,p,m,g),vp.initNonuniformCatmullRom(l.z,u.z,c.z,h.z,p,m,g)}else this.curveType==="catmullrom"&&(mp.initCatmullRom(l.x,u.x,c.x,h.x,this.tension),gp.initCatmullRom(l.y,u.y,c.y,h.y,this.tension),vp.initCatmullRom(l.z,u.z,c.z,h.z,this.tension));return i.set(mp.calc(o),gp.calc(o),vp.calc(o)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(r.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];e.points.push(r.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(new M().fromArray(r))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function Z0(e,t,i,r,s){let n=(r-t)*.5,a=(s-i)*.5,o=e*e,l=e*o;return(2*i-2*r+n+a)*l+(-3*i+3*r-2*n-a)*o+n*e+i}function MP(e,t){let i=1-e;return i*i*t}function EP(e,t){return 2*(1-e)*e*t}function CP(e,t){return e*e*t}function Ul(e,t,i,r){return MP(e,t)+EP(e,i)+CP(e,r)}function TP(e,t){let i=1-e;return i*i*i*t}function PP(e,t){let i=1-e;return 3*i*i*e*t}function DP(e,t){return 3*(1-e)*e*e*t}function OP(e,t){return e*e*e*t}function kl(e,t,i,r,s){return TP(e,t)+PP(e,i)+DP(e,r)+OP(e,s)}var Cr=class extends us{constructor(e=new H,t=new H,i=new H,r=new H){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=i,this.v3=r}getPoint(e,t=new H){let i=t,r=this.v0,s=this.v1,n=this.v2,a=this.v3;return i.set(kl(e,r.x,s.x,n.x,a.x),kl(e,r.y,s.y,n.y,a.y)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},LP=class extends us{constructor(e=new M,t=new M,i=new M,r=new M){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=i,this.v3=r}getPoint(e,t=new M){let i=t,r=this.v0,s=this.v1,n=this.v2,a=this.v3;return i.set(kl(e,r.x,s.x,n.x,a.x),kl(e,r.y,s.y,n.y,a.y),kl(e,r.z,s.z,n.z,a.z)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Dr=class extends us{constructor(e=new H,t=new H){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new H){let i=t;return e===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(e).add(this.v1)),i}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t){let i=t||new H;return i.copy(this.v2).sub(this.v1).normalize(),i}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},iw=class extends us{constructor(e=new M,t=new M){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new M){let i=t;return e===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(e).add(this.v1)),i}getPointAt(e,t){return this.getPoint(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},gn=class extends us{constructor(e=new H,t=new H,i=new H){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=i}getPoint(e,t=new H){let i=t,r=this.v0,s=this.v1,n=this.v2;return i.set(Ul(e,r.x,s.x,n.x),Ul(e,r.y,s.y,n.y)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},IP=class extends us{constructor(e=new M,t=new M,i=new M){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=i}getPoint(e,t=new M){let i=t,r=this.v0,s=this.v1,n=this.v2;return i.set(Ul(e,r.x,s.x,n.x),Ul(e,r.y,s.y,n.y),Ul(e,r.z,s.z,n.z)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Jm=class extends us{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new H){let i=t,r=this.points,s=(r.length-1)*e,n=Math.floor(s),a=s-n,o=r[n===0?n:n-1],l=r[n],h=r[n>r.length-2?r.length-1:n+1],u=r[n>r.length-3?r.length-1:n+2];return i.set(Z0(a,o.x,l.x,h.x,u.x),Z0(a,o.y,l.y,h.y,u.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(r.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];e.points.push(r.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(new H().fromArray(r))}return this}},BP=Object.freeze({__proto__:null,ArcCurve:SP,CatmullRomCurve3:AP,CubicBezierCurve:Cr,CubicBezierCurve3:LP,EllipseCurve:tu,LineCurve:Dr,LineCurve3:iw,QuadraticBezierCurve:gn,QuadraticBezierCurve3:IP,SplineCurve:Jm}),RP=class extends us{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new Dr(t,e))}getPoint(e,t){let i=e*this.getLength(),r=this.getCurveLengths(),s=0;for(;s<r.length;){if(r[s]>=i){let n=r[s]-i,a=this.curves[s],o=a.getLength(),l=o===0?0:1-n/o;return a.getPointAt(l,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let i=0,r=this.curves.length;i<r;i++)t+=this.curves[i].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],i;for(let r=0,s=this.curves;r<s.length;r++){let n=s[r],a=n.isEllipseCurve?e*2:n.isLineCurve||n.isLineCurve3?1:n.isSplineCurve?e*n.points.length:e,o=n.getPoints(a);for(let l=0;l<o.length;l++){let h=o[l];i&&i.equals(h)||(t.push(h),i=h)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t<i;t++){let r=e.curves[t];this.curves.push(r.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,i=this.curves.length;t<i;t++){let r=this.curves[t];e.curves.push(r.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,i=e.curves.length;t<i;t++){let r=e.curves[t];this.curves.push(new BP[r.type]().fromJSON(r))}return this}},cd=class extends RP{constructor(e){super(),this.type="Path",this.currentPoint=new H,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,i=e.length;t<i;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let i=new Dr(this.currentPoint.clone(),new H(e,t));return this.curves.push(i),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,i,r){let s=new gn(this.currentPoint.clone(),new H(e,t),new H(i,r));return this.curves.push(s),this.currentPoint.set(i,r),this}bezierCurveTo(e,t,i,r,s,n){let a=new Cr(this.currentPoint.clone(),new H(e,t),new H(i,r),new H(s,n));return this.curves.push(a),this.currentPoint.set(s,n),this}splineThru(e){let t=[this.currentPoint.clone()].concat(e),i=new Jm(t);return this.curves.push(i),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,i,r,s,n){let a=this.currentPoint.x,o=this.currentPoint.y;return this.absarc(e+a,t+o,i,r,s,n),this}absarc(e,t,i,r,s,n){return this.absellipse(e,t,i,i,r,s,n),this}ellipse(e,t,i,r,s,n,a,o){let l=this.currentPoint.x,h=this.currentPoint.y;return this.absellipse(e+l,t+h,i,r,s,n,a,o),this}absellipse(e,t,i,r,s,n,a,o){let l=new tu(e,t,i,r,s,n,a,o);if(this.curves.length>0){let u=l.getPoint(0);u.equals(this.currentPoint)||this.lineTo(u.x,u.y)}this.curves.push(l);let h=l.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},rw=class extends ke{constructor(e=[new H(0,.5),new H(.5,0),new H(0,-.5)],t=12,i=0,r=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=qt(r,0,Math.PI*2);let s=[],n=[],a=[],o=[],l=[],h=1/t,u=new M,c=new H,d=new M,p=new M,m=new M,g=0,f=0;for(let v=0;v<=e.length-1;v++)switch(v){case 0:g=e[v+1].x-e[v].x,f=e[v+1].y-e[v].y,d.x=f*1,d.y=-g,d.z=f*0,m.copy(d),d.normalize(),o.push(d.x,d.y,d.z);break;case e.length-1:o.push(m.x,m.y,m.z);break;default:g=e[v+1].x-e[v].x,f=e[v+1].y-e[v].y,d.x=f*1,d.y=-g,d.z=f*0,p.copy(d),d.x+=m.x,d.y+=m.y,d.z+=m.z,d.normalize(),o.push(d.x,d.y,d.z),m.copy(p)}for(let v=0;v<=t;v++){let y=i+v*h*r,b=Math.sin(y),x=Math.cos(y);for(let w=0;w<=e.length-1;w++){u.x=e[w].x*b,u.y=e[w].y,u.z=e[w].x*x,n.push(u.x,u.y,u.z),c.x=v/t,c.y=w/(e.length-1),a.push(c.x,c.y);let _=o[3*w+0]*b,A=o[3*w+1],S=o[3*w+0]*x;l.push(_,A,S)}}for(let v=0;v<t;v++)for(let y=0;y<e.length-1;y++){let b=y+v*e.length,x=b,w=b+e.length,_=b+e.length+1,A=b+1;s.push(x,w,A),s.push(_,A,w)}this.setIndex(s),this.setAttribute("position",new Ee(n,3)),this.setAttribute("uv",new Ee(a,2)),this.setAttribute("normal",new Ee(l,3))}static fromJSON(e){return new rw(e.points,e.segments,e.phiStart,e.phiLength)}},$m=class extends ke{constructor(e=1,t=1,i=1,r=8,s=1,n=!1,a=0,o=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:i,radialSegments:r,heightSegments:s,openEnded:n,thetaStart:a,thetaLength:o};let l=this;r=Math.floor(r),s=Math.floor(s);let h=[],u=[],c=[],d=[],p=0,m=[],g=i/2,f=0;v(),n===!1&&(e>0&&y(!0),t>0&&y(!1)),this.setIndex(h),this.setAttribute("position",new Ee(u,3)),this.setAttribute("normal",new Ee(c,3)),this.setAttribute("uv",new Ee(d,2));function v(){let b=new M,x=new M,w=0,_=(t-e)/i;for(let A=0;A<=s;A++){let S=[],E=A/s,C=E*(t-e)+e;for(let T=0;T<=r;T++){let P=T/r,R=P*o+a,O=Math.sin(R),U=Math.cos(R);x.x=C*O,x.y=-E*i+g,x.z=C*U,u.push(x.x,x.y,x.z),b.set(O,_,U).normalize(),c.push(b.x,b.y,b.z),d.push(P,1-E),S.push(p++)}m.push(S)}for(let A=0;A<r;A++)for(let S=0;S<s;S++){let E=m[S][A],C=m[S+1][A],T=m[S+1][A+1],P=m[S][A+1];h.push(E,C,P),h.push(C,T,P),w+=6}l.addGroup(f,w,0),f+=w}function y(b){let x=p,w=new H,_=new M,A=0,S=b===!0?e:t,E=b===!0?1:-1;for(let T=1;T<=r;T++)u.push(0,g*E,0),c.push(0,E,0),d.push(.5,.5),p++;let C=p;for(let T=0;T<=r;T++){let P=T/r*o+a,R=Math.cos(P),O=Math.sin(P);_.x=S*O,_.y=g*E,_.z=S*R,u.push(_.x,_.y,_.z),c.push(0,E,0),w.x=R*.5+.5,w.y=O*.5*E+.5,d.push(w.x,w.y),p++}for(let T=0;T<r;T++){let P=x+T,R=C+T;b===!0?h.push(R,R+1,P):h.push(R+1,R,P),A+=3}l.addGroup(f,A,b===!0?1:2),f+=A}}static fromJSON(e){return new $m(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},sw=class extends $m{constructor(e=1,t=1,i=8,r=1,s=!1,n=0,a=Math.PI*2){super(0,e,t,i,r,s,n,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:i,heightSegments:r,openEnded:s,thetaStart:n,thetaLength:a}}static fromJSON(e){return new sw(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},eg=class extends ke{constructor(e=[],t=[],i=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:r};let s=[],n=[];a(r),l(i),h(),this.setAttribute("position",new Ee(s,3)),this.setAttribute("normal",new Ee(s.slice(),3)),this.setAttribute("uv",new Ee(n,2)),r===0?this.computeVertexNormals():this.normalizeNormals();function a(v){let y=new M,b=new M,x=new M;for(let w=0;w<t.length;w+=3)d(t[w+0],y),d(t[w+1],b),d(t[w+2],x),o(y,b,x,v)}function o(v,y,b,x){let w=x+1,_=[];for(let A=0;A<=w;A++){_[A]=[];let S=v.clone().lerp(b,A/w),E=y.clone().lerp(b,A/w),C=w-A;for(let T=0;T<=C;T++)T===0&&A===w?_[A][T]=S:_[A][T]=S.clone().lerp(E,T/C)}for(let A=0;A<w;A++)for(let S=0;S<2*(w-A)-1;S++){let E=Math.floor(S/2);S%2===0?(c(_[A][E+1]),c(_[A+1][E]),c(_[A][E])):(c(_[A][E+1]),c(_[A+1][E+1]),c(_[A+1][E]))}}function l(v){let y=new M;for(let b=0;b<s.length;b+=3)y.x=s[b+0],y.y=s[b+1],y.z=s[b+2],y.normalize().multiplyScalar(v),s[b+0]=y.x,s[b+1]=y.y,s[b+2]=y.z}function h(){let v=new M;for(let y=0;y<s.length;y+=3){v.x=s[y+0],v.y=s[y+1],v.z=s[y+2];let b=g(v)/2/Math.PI+.5,x=f(v)/Math.PI+.5;n.push(b,1-x)}p(),u()}function u(){for(let v=0;v<n.length;v+=6){let y=n[v+0],b=n[v+2],x=n[v+4],w=Math.max(y,b,x),_=Math.min(y,b,x);w>.9&&_<.1&&(y<.2&&(n[v+0]+=1),b<.2&&(n[v+2]+=1),x<.2&&(n[v+4]+=1))}}function c(v){s.push(v.x,v.y,v.z)}function d(v,y){let b=v*3;y.x=e[b+0],y.y=e[b+1],y.z=e[b+2]}function p(){let v=new M,y=new M,b=new M,x=new M,w=new H,_=new H,A=new H;for(let S=0,E=0;S<s.length;S+=9,E+=6){v.set(s[S+0],s[S+1],s[S+2]),y.set(s[S+3],s[S+4],s[S+5]),b.set(s[S+6],s[S+7],s[S+8]),w.set(n[E+0],n[E+1]),_.set(n[E+2],n[E+3]),A.set(n[E+4],n[E+5]),x.copy(v).add(y).add(b).divideScalar(3);let C=g(x);m(w,E+0,v,C),m(_,E+2,y,C),m(A,E+4,b,C)}}function m(v,y,b,x){x<0&&v.x===1&&(n[y]=v.x-1),b.x===0&&b.z===0&&(n[y]=x/2/Math.PI+.5)}function g(v){return Math.atan2(v.z,-v.x)}function f(v){return Math.atan2(-v.y,Math.sqrt(v.x*v.x+v.z*v.z))}}static fromJSON(e){return new eg(e.vertices,e.indices,e.radius,e.details)}},nw=class extends eg{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=1/i,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-i,0,-r,i,0,r,-i,0,r,i,-r,-i,0,-r,i,0,r,-i,0,r,i,0,-i,0,-r,i,0,-r,-i,0,r,i,0,r],n=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(s,n,e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new nw(e.radius,e.detail)}},dd=class extends cd{constructor(e){super(e),this.uuid=rs(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let i=0,r=this.holes.length;i<r;i++)t[i]=this.holes[i].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,i=e.holes.length;t<i;t++){let r=e.holes[t];this.holes.push(r.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,i=this.holes.length;t<i;t++){let r=this.holes[t];e.holes.push(r.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,i=e.holes.length;t<i;t++){let r=e.holes[t];this.holes.push(new cd().fromJSON(r))}return this}},NP={triangulate:function(e,t,i=2){let r=t&&t.length,s=r?t[0]*i:e.length,n=aw(e,0,s,i,!0),a=[];if(!n||n.next===n.prev)return a;let o,l,h,u,c,d,p;if(r&&(n=jP(e,t,n,i)),e.length>80*i){o=h=e[0],l=u=e[1];for(let m=i;m<s;m+=i)c=e[m],d=e[m+1],c<o&&(o=c),d<l&&(l=d),c>h&&(h=c),d>u&&(u=d);p=Math.max(h-o,u-l),p=p!==0?1/p:0}return Kl(n,a,i,o,l,p),a}};function aw(e,t,i,r,s){let n,a;if(s===JP(e,t,i,r)>0)for(n=t;n<i;n+=r)a=K0(n,e[n],e[n+1],a);else for(n=i-r;n>=t;n-=r)a=K0(n,e[n],e[n+1],a);return a&&iu(a,a.next)&&($l(a),a=a.next),a}function vn(e,t){if(!e)return e;t||(t=e);let i=e,r;do if(r=!1,!i.steiner&&(iu(i,i.next)||Tt(i.prev,i,i.next)===0)){if($l(i),i=t=i.prev,i===i.next)break;r=!0}else i=i.next;while(r||i!==t);return t}function Kl(e,t,i,r,s,n,a){if(!e)return;!a&&n&&XP(e,r,s,n);let o=e,l,h;for(;e.prev!==e.next;){if(l=e.prev,h=e.next,n?FP(e,r,s,n):zP(e)){t.push(l.i/i),t.push(e.i/i),t.push(h.i/i),$l(e),e=h.next,o=h.next;continue}if(e=h,e===o){a?a===1?(e=UP(vn(e),t,i),Kl(e,t,i,r,s,n,2)):a===2&&kP(e,t,i,r,s,n):Kl(vn(e),t,i,r,s,n,1);break}}}function zP(e){let t=e.prev,i=e,r=e.next;if(Tt(t,i,r)>=0)return!1;let s=e.next.next;for(;s!==e.prev;){if($a(t.x,t.y,i.x,i.y,r.x,r.y,s.x,s.y)&&Tt(s.prev,s,s.next)>=0)return!1;s=s.next}return!0}function FP(e,t,i,r){let s=e.prev,n=e,a=e.next;if(Tt(s,n,a)>=0)return!1;let o=s.x<n.x?s.x<a.x?s.x:a.x:n.x<a.x?n.x:a.x,l=s.y<n.y?s.y<a.y?s.y:a.y:n.y<a.y?n.y:a.y,h=s.x>n.x?s.x>a.x?s.x:a.x:n.x>a.x?n.x:a.x,u=s.y>n.y?s.y>a.y?s.y:a.y:n.y>a.y?n.y:a.y,c=Df(o,l,t,i,r),d=Df(h,u,t,i,r),p=e.prevZ,m=e.nextZ;for(;p&&p.z>=c&&m&&m.z<=d;){if(p!==e.prev&&p!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,p.x,p.y)&&Tt(p.prev,p,p.next)>=0||(p=p.prevZ,m!==e.prev&&m!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,m.x,m.y)&&Tt(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;p&&p.z>=c;){if(p!==e.prev&&p!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,p.x,p.y)&&Tt(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;m&&m.z<=d;){if(m!==e.prev&&m!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,m.x,m.y)&&Tt(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function UP(e,t,i){let r=e;do{let s=r.prev,n=r.next.next;!iu(s,n)&&ow(s,r,r.next,n)&&Jl(s,n)&&Jl(n,s)&&(t.push(s.i/i),t.push(r.i/i),t.push(n.i/i),$l(r),$l(r.next),r=e=n),r=r.next}while(r!==e);return vn(r)}function kP(e,t,i,r,s,n){let a=e;do{let o=a.next.next;for(;o!==a.prev;){if(a.i!==o.i&&QP(a,o)){let l=lw(a,o);a=vn(a,a.next),l=vn(l,l.next),Kl(a,t,i,r,s,n),Kl(l,t,i,r,s,n);return}o=o.next}a=a.next}while(a!==e)}function jP(e,t,i,r){let s=[],n,a,o,l,h;for(n=0,a=t.length;n<a;n++)o=t[n]*r,l=n<a-1?t[n+1]*r:e.length,h=aw(e,o,l,r,!1),h===h.next&&(h.steiner=!0),s.push(qP(h));for(s.sort(HP),n=0;n<s.length;n++)GP(s[n],i),i=vn(i,i.next);return i}function HP(e,t){return e.x-t.x}function GP(e,t){if(t=VP(e,t),t){let i=lw(t,e);vn(t,t.next),vn(i,i.next)}}function VP(e,t){let i=t,r=e.x,s=e.y,n=-1/0,a;do{if(s<=i.y&&s>=i.next.y&&i.next.y!==i.y){let d=i.x+(s-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(d<=r&&d>n){if(n=d,d===r){if(s===i.y)return i;if(s===i.next.y)return i.next}a=i.x<i.next.x?i:i.next}}i=i.next}while(i!==t);if(!a)return null;if(r===n)return a;let o=a,l=a.x,h=a.y,u=1/0,c;i=a;do r>=i.x&&i.x>=l&&r!==i.x&&$a(s<h?r:n,s,l,h,s<h?n:r,s,i.x,i.y)&&(c=Math.abs(s-i.y)/(r-i.x),Jl(i,e)&&(c<u||c===u&&(i.x>a.x||i.x===a.x&&WP(a,i)))&&(a=i,u=c)),i=i.next;while(i!==o);return a}function WP(e,t){return Tt(e.prev,e,t.prev)<0&&Tt(t.next,e,e.next)<0}function XP(e,t,i,r){let s=e;do s.z===null&&(s.z=Df(s.x,s.y,t,i,r)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,YP(s)}function YP(e){let t,i,r,s,n,a,o,l,h=1;do{for(i=e,e=null,n=null,a=0;i;){for(a++,r=i,o=0,t=0;t<h&&(o++,r=r.nextZ,!!r);t++);for(l=h;o>0||l>0&&r;)o!==0&&(l===0||!r||i.z<=r.z)?(s=i,i=i.nextZ,o--):(s=r,r=r.nextZ,l--),n?n.nextZ=s:e=s,s.prevZ=n,n=s;i=r}n.nextZ=null,h*=2}while(a>1);return e}function Df(e,t,i,r,s){return e=32767*(e-i)*s,t=32767*(t-r)*s,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function qP(e){let t=e,i=e;do(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next;while(t!==e);return i}function $a(e,t,i,r,s,n,a,o){return(s-a)*(t-o)-(e-a)*(n-o)>=0&&(e-a)*(r-o)-(i-a)*(t-o)>=0&&(i-a)*(n-o)-(s-a)*(r-o)>=0}function QP(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!ZP(e,t)&&(Jl(e,t)&&Jl(t,e)&&KP(e,t)&&(Tt(e.prev,e,t.prev)||Tt(e,t.prev,t))||iu(e,t)&&Tt(e.prev,e,e.next)>0&&Tt(t.prev,t,t.next)>0)}function Tt(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function iu(e,t){return e.x===t.x&&e.y===t.y}function ow(e,t,i,r){let s=nc(Tt(e,t,i)),n=nc(Tt(e,t,r)),a=nc(Tt(i,r,e)),o=nc(Tt(i,r,t));return!!(s!==n&&a!==o||s===0&&sc(e,i,t)||n===0&&sc(e,r,t)||a===0&&sc(i,e,r)||o===0&&sc(i,t,r))}function sc(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function nc(e){return e>0?1:e<0?-1:0}function ZP(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&ow(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}function Jl(e,t){return Tt(e.prev,e,e.next)<0?Tt(e,t,e.next)>=0&&Tt(e,e.prev,t)>=0:Tt(e,t,e.prev)<0||Tt(e,e.next,t)<0}function KP(e,t){let i=e,r=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do i.y>n!=i.next.y>n&&i.next.y!==i.y&&s<(i.next.x-i.x)*(n-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next;while(i!==e);return r}function lw(e,t){let i=new Of(e.i,e.x,e.y),r=new Of(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,i.next=s,s.prev=i,r.next=i,i.prev=r,n.next=r,r.prev=n,r}function K0(e,t,i,r){let s=new Of(e,t,i);return r?(s.next=r.next,s.prev=r,r.next.prev=s,r.next=s):(s.prev=s,s.next=s),s}function $l(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Of(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function JP(e,t,i,r){let s=0;for(let n=t,a=i-r;n<i;n+=r)s+=(e[a]-e[n])*(e[n+1]+e[a+1]),a=n;return s}var hw=class{static area(e){let t=e.length,i=0;for(let r=t-1,s=0;s<t;r=s++)i+=e[r].x*e[s].y-e[s].x*e[r].y;return i*.5}static isClockWise(e){return hw.area(e)<0}static triangulateShape(e,t){let i=[],r=[],s=[];J0(e),$0(i,e);let n=e.length;t.forEach(J0);for(let o=0;o<t.length;o++)r.push(n),n+=t[o].length,$0(i,t[o]);let a=NP.triangulate(i,r);for(let o=0;o<a.length;o+=3)s.push(a.slice(o,o+3));return s}};function J0(e){let t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function $0(e,t){for(let i=0;i<t.length;i++)e.push(t[i].x),e.push(t[i].y)}var cw=class extends eg{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(r,s,e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new cw(e.radius,e.detail)}},tg=class extends ke{constructor(e=1,t=32,i=16,r=0,s=Math.PI*2,n=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:i,phiStart:r,phiLength:s,thetaStart:n,thetaLength:a},t=Math.max(3,Math.floor(t)),i=Math.max(2,Math.floor(i));let o=Math.min(n+a,Math.PI),l=0,h=[],u=new M,c=new M,d=[],p=[],m=[],g=[];for(let f=0;f<=i;f++){let v=[],y=f/i,b=0;f==0&&n==0?b=.5/t:f==i&&o==Math.PI&&(b=-.5/t);for(let x=0;x<=t;x++){let w=x/t;u.x=-e*Math.cos(r+w*s)*Math.sin(n+y*a),u.y=e*Math.cos(n+y*a),u.z=e*Math.sin(r+w*s)*Math.sin(n+y*a),p.push(u.x,u.y,u.z),c.copy(u).normalize(),m.push(c.x,c.y,c.z),g.push(w+b,1-y),v.push(l++)}h.push(v)}for(let f=0;f<i;f++)for(let v=0;v<t;v++){let y=h[f][v+1],b=h[f][v],x=h[f+1][v],w=h[f+1][v+1];(f!==0||n>0)&&d.push(y,b,w),(f!==i-1||o<Math.PI)&&d.push(b,x,w)}this.setIndex(d),this.setAttribute("position",new Ee(p,3)),this.setAttribute("normal",new Ee(m,3)),this.setAttribute("uv",new Ee(g,2))}static fromJSON(e){return new tg(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}},dw=class extends ke{constructor(e=1,t=.4,i=64,r=8,s=2,n=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:i,radialSegments:r,p:s,q:n},i=Math.floor(i),r=Math.floor(r);let a=[],o=[],l=[],h=[],u=new M,c=new M,d=new M,p=new M,m=new M,g=new M,f=new M;for(let y=0;y<=i;++y){let b=y/i*s*Math.PI*2;v(b,s,n,e,d),v(b+.01,s,n,e,p),g.subVectors(p,d),f.addVectors(p,d),m.crossVectors(g,f),f.crossVectors(m,g),m.normalize(),f.normalize();for(let x=0;x<=r;++x){let w=x/r*Math.PI*2,_=-t*Math.cos(w),A=t*Math.sin(w);u.x=d.x+(_*f.x+A*m.x),u.y=d.y+(_*f.y+A*m.y),u.z=d.z+(_*f.z+A*m.z),o.push(u.x,u.y,u.z),c.subVectors(u,d).normalize(),l.push(c.x,c.y,c.z),h.push(y/i),h.push(x/r)}}for(let y=1;y<=i;y++)for(let b=1;b<=r;b++){let x=(r+1)*(y-1)+(b-1),w=(r+1)*y+(b-1),_=(r+1)*y+b,A=(r+1)*(y-1)+b;a.push(x,w,A),a.push(w,_,A)}this.setIndex(a),this.setAttribute("position",new Ee(o,3)),this.setAttribute("normal",new Ee(l,3)),this.setAttribute("uv",new Ee(h,2));function v(y,b,x,w,_){let A=Math.cos(y),S=Math.sin(y),E=x/b*y,C=Math.cos(E);_.x=w*(2+C)*.5*A,_.y=w*(2+C)*S*.5,_.z=w*Math.sin(E)*.5}}static fromJSON(e){return new dw(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}},Xt={arraySlice:function(e,t,i){return Xt.isTypedArray(e)?new e.constructor(e.subarray(t,i!==void 0?i:e.length)):e.slice(t,i)},convertArray:function(e,t,i){return!e||!i&&e.constructor===t?e:typeof t.BYTES_PER_ELEMENT=="number"?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(e){function t(s,n){return e[s]-e[n]}let i=e.length,r=new Array(i);for(let s=0;s!==i;++s)r[s]=s;return r.sort(t),r},sortedArray:function(e,t,i){let r=e.length,s=new e.constructor(r);for(let n=0,a=0;a!==r;++n){let o=i[n]*t;for(let l=0;l!==t;++l)s[a++]=e[o+l]}return s},flattenJSON:function(e,t,i,r){let s=1,n=e[0];for(;n!==void 0&&n[r]===void 0;)n=e[s++];if(n===void 0)return;let a=n[r];if(a!==void 0)if(Array.isArray(a))do a=n[r],a!==void 0&&(t.push(n.time),i.push.apply(i,a)),n=e[s++];while(n!==void 0);else if(a.toArray!==void 0)do a=n[r],a!==void 0&&(t.push(n.time),a.toArray(i,i.length)),n=e[s++];while(n!==void 0);else do a=n[r],a!==void 0&&(t.push(n.time),i.push(a)),n=e[s++];while(n!==void 0)},subclip:function(e,t,i,r,s=30){let n=e.clone();n.name=t;let a=[];for(let l=0;l<n.tracks.length;++l){let h=n.tracks[l],u=h.getValueSize(),c=[],d=[];for(let p=0;p<h.times.length;++p){let m=h.times[p]*s;if(!(m<i||m>=r)){c.push(h.times[p]);for(let g=0;g<u;++g)d.push(h.values[p*u+g])}}c.length!==0&&(h.times=Xt.convertArray(c,h.times.constructor),h.values=Xt.convertArray(d,h.values.constructor),a.push(h))}n.tracks=a;let o=1/0;for(let l=0;l<n.tracks.length;++l)o>n.tracks[l].times[0]&&(o=n.tracks[l].times[0]);for(let l=0;l<n.tracks.length;++l)n.tracks[l].shift(-1*o);return n.resetDuration(),n},makeClipAdditive:function(e,t=0,i=e,r=30){r<=0&&(r=30);let s=i.tracks.length,n=t/r;for(let a=0;a<s;++a){let o=i.tracks[a],l=o.ValueTypeName;if(l==="bool"||l==="string")continue;let h=e.tracks.find(function(v){return v.name===o.name&&v.ValueTypeName===l});if(h===void 0)continue;let u=0,c=o.getValueSize();o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(u=c/3);let d=0,p=h.getValueSize();h.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(d=p/3);let m=o.times.length-1,g;if(n<=o.times[0]){let v=u,y=c-u;g=Xt.arraySlice(o.values,v,y)}else if(n>=o.times[m]){let v=m*c+u,y=v+c-u;g=Xt.arraySlice(o.values,v,y)}else{let v=o.createInterpolant(),y=u,b=c-u;v.evaluate(n),g=Xt.arraySlice(v.resultBuffer,y,b)}l==="quaternion"&&new nt().fromArray(g).normalize().conjugate().toArray(g);let f=h.times.length;for(let v=0;v<f;++v){let y=v*p+d;if(l==="quaternion")nt.multiplyQuaternionsFlat(h.values,y,g,0,h.values,y);else{let b=p-d*2;for(let x=0;x<b;++x)h.values[y+x]-=g[x]}}}return e.blendMode=aM,e}},ru=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],s=t[i-1];i:{e:{let n;t:{r:if(!(e<r)){for(let a=i+2;;){if(r===void 0){if(e<s)break r;return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}if(i===a)break;if(s=r,r=t[++i],e<r)break e}n=t.length;break t}if(!(e>=s)){let a=t[1];e<a&&(i=2,s=a);for(let o=i-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===o)break;if(r=s,s=t[--i-1],e>=s)break e}n=i,i=0;break t}break i}for(;i<n;){let a=i+n>>>1;e<t[a]?n=a:i=a+1}if(r=t[i],s=t[i-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}this._cachedIndex=i,this.intervalChanged_(i,s,r)}return this.interpolate_(i,s,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,i=this.sampleValues,r=this.valueSize,s=e*r;for(let n=0;n!==r;++n)t[n]=i[s+n];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},$P=class extends ru{constructor(e,t,i,r){super(e,t,i,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:o0,endingEnd:o0}}intervalChanged_(e,t,i){let r=this.parameterPositions,s=e-2,n=e+1,a=r[s],o=r[n];if(a===void 0)switch(this.getSettings_().endingStart){case l0:s=e,a=2*t-i;break;case h0:s=r.length-2,a=t+r[s]-r[s+1];break;default:s=e,a=i}if(o===void 0)switch(this.getSettings_().endingEnd){case l0:n=e,o=2*i-t;break;case h0:n=1,o=i+r[1]-r[0];break;default:n=e-1,o=t}let l=(i-t)*.5,h=this.valueSize;this._weightPrev=l/(t-a),this._weightNext=l/(o-i),this._offsetPrev=s*h,this._offsetNext=n*h}interpolate_(e,t,i,r){let s=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=e*a,l=o-a,h=this._offsetPrev,u=this._offsetNext,c=this._weightPrev,d=this._weightNext,p=(i-t)/(r-t),m=p*p,g=m*p,f=-c*g+2*c*m-c*p,v=(1+c)*g+(-1.5-2*c)*m+(-.5+c)*p+1,y=(-1-d)*g+(1.5+d)*m+.5*p,b=d*g-d*m;for(let x=0;x!==a;++x)s[x]=f*n[h+x]+v*n[l+x]+y*n[o+x]+b*n[u+x];return s}},eD=class extends ru{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=e*a,l=o-a,h=(i-t)/(r-t),u=1-h;for(let c=0;c!==a;++c)s[c]=n[l+c]*u+n[o+c]*h;return s}},tD=class extends ru{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e){return this.copySampleValue_(e-1)}},Bs=class{constructor(e,t,i,r){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=Xt.convertArray(t,this.TimeBufferType),this.values=Xt.convertArray(i,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,i;if(t.toJSON!==this.toJSON)i=t.toJSON(e);else{i={name:e.name,times:Xt.convertArray(e.times,Array),values:Xt.convertArray(e.values,Array)};let r=e.getInterpolation();r!==e.DefaultInterpolation&&(i.interpolation=r)}return i.type=e.ValueTypeName,i}InterpolantFactoryMethodDiscrete(e){return new tD(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new eD(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new $P(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case sd:t=this.InterpolantFactoryMethodDiscrete;break;case nd:t=this.InterpolantFactoryMethodLinear;break;case ku:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){let i="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(i);return console.warn("THREE.KeyframeTrack:",i),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return sd;case this.InterpolantFactoryMethodLinear:return nd;case this.InterpolantFactoryMethodSmooth:return ku}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){let t=this.times;for(let i=0,r=t.length;i!==r;++i)t[i]+=e}return this}scale(e){if(e!==1){let t=this.times;for(let i=0,r=t.length;i!==r;++i)t[i]*=e}return this}trim(e,t){let i=this.times,r=i.length,s=0,n=r-1;for(;s!==r&&i[s]<e;)++s;for(;n!==-1&&i[n]>t;)--n;if(++n,s!==0||n!==r){s>=n&&(n=Math.max(n,1),s=n-1);let a=this.getValueSize();this.times=Xt.arraySlice(i,s,n),this.values=Xt.arraySlice(this.values,s*a,n*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let n=null;for(let a=0;a!==s;a++){let o=i[a];if(typeof o=="number"&&isNaN(o)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,o),e=!1;break}if(n!==null&&n>o){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,o,n),e=!1;break}n=o}if(r!==void 0&&Xt.isTypedArray(r))for(let a=0,o=r.length;a!==o;++a){let l=r[a];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,l),e=!1;break}}return e}optimize(){let e=Xt.arraySlice(this.times),t=Xt.arraySlice(this.values),i=this.getValueSize(),r=this.getInterpolation()===ku,s=e.length-1,n=1;for(let a=1;a<s;++a){let o=!1,l=e[a],h=e[a+1];if(l!==h&&(a!==1||l!==e[0]))if(r)o=!0;else{let u=a*i,c=u-i,d=u+i;for(let p=0;p!==i;++p){let m=t[u+p];if(m!==t[c+p]||m!==t[d+p]){o=!0;break}}}if(o){if(a!==n){e[n]=e[a];let u=a*i,c=n*i;for(let d=0;d!==i;++d)t[c+d]=t[u+d]}++n}}if(s>0){e[n]=e[s];for(let a=s*i,o=n*i,l=0;l!==i;++l)t[o+l]=t[a+l];++n}return n!==e.length?(this.times=Xt.arraySlice(e,0,n),this.values=Xt.arraySlice(t,0,n*i)):(this.times=e,this.values=t),this}clone(){let e=Xt.arraySlice(this.times,0),t=Xt.arraySlice(this.values,0),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Bs.prototype.TimeBufferType=Float32Array;Bs.prototype.ValueBufferType=Float32Array;Bs.prototype.DefaultInterpolation=nd;var yh=class extends Bs{};yh.prototype.ValueTypeName="bool";yh.prototype.ValueBufferType=Array;yh.prototype.DefaultInterpolation=sd;yh.prototype.InterpolantFactoryMethodLinear=void 0;yh.prototype.InterpolantFactoryMethodSmooth=void 0;var iD=class extends Bs{};iD.prototype.ValueTypeName="color";var rD=class extends Bs{};rD.prototype.ValueTypeName="number";var sD=class extends ru{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=(i-t)/(r-t),l=e*a;for(let h=l+a;l!==h;l+=4)nt.slerpFlat(s,0,n,l-a,n,l,o);return s}},ig=class extends Bs{InterpolantFactoryMethodLinear(e){return new sD(this.times,this.values,this.getValueSize(),e)}};ig.prototype.ValueTypeName="quaternion";ig.prototype.DefaultInterpolation=nd;ig.prototype.InterpolantFactoryMethodSmooth=void 0;var xh=class extends Bs{};xh.prototype.ValueTypeName="string";xh.prototype.ValueBufferType=Array;xh.prototype.DefaultInterpolation=sd;xh.prototype.InterpolantFactoryMethodLinear=void 0;xh.prototype.InterpolantFactoryMethodSmooth=void 0;var nD=class extends Bs{};nD.prototype.ValueTypeName="vector";var ey={enabled:!1,files:{},add:function(e,t){this.enabled!==!1&&(this.files[e]=t)},get:function(e){if(this.enabled!==!1)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}},uw=class{constructor(e,t,i){let r=this,s=!1,n=0,a=0,o,l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=i,this.itemStart=function(h){a++,s===!1&&r.onStart!==void 0&&r.onStart(h,n,a),s=!0},this.itemEnd=function(h){n++,r.onProgress!==void 0&&r.onProgress(h,n,a),n===a&&(s=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(h){r.onError!==void 0&&r.onError(h)},this.resolveURL=function(h){return o?o(h):h},this.setURLModifier=function(h){return o=h,this},this.addHandler=function(h,u){return l.push(h,u),this},this.removeHandler=function(h){let u=l.indexOf(h);return u!==-1&&l.splice(u,2),this},this.getHandler=function(h){for(let u=0,c=l.length;u<c;u+=2){let d=l[u],p=l[u+1];if(d.global&&(d.lastIndex=0),d.test(h))return p}return null}}},aD=new uw,rg=class{constructor(e){this.manager=e!==void 0?e:aD,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let i=this;return new Promise(function(r,s){i.load(e,r,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}},bs={},Lf=class extends rg{constructor(e){super(e)}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=ey.get(e);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(bs[e]!==void 0){bs[e].push({onLoad:t,onProgress:i,onError:r});return}bs[e]=[],bs[e].push({onLoad:t,onProgress:i,onError:r});let n=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(n).then(l=>{if(l.status===200||l.status===0){if(l.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||l.body===void 0||l.body.getReader===void 0)return l;let h=bs[e],u=l.body.getReader(),c=l.headers.get("Content-Length"),d=c?parseInt(c):0,p=d!==0,m=0,g=new ReadableStream({start(f){v();function v(){u.read().then(({done:y,value:b})=>{if(y)f.close();else{m+=b.byteLength;let x=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:d});for(let w=0,_=h.length;w<_;w++){let A=h[w];A.onProgress&&A.onProgress(x)}f.enqueue(b),v()}})}}});return new Response(g)}else throw Error(`fetch for "${l.url}" responded with ${l.status}: ${l.statusText}`)}).then(l=>{switch(o){case"arraybuffer":return l.arrayBuffer();case"blob":return l.blob();case"document":return l.text().then(h=>new DOMParser().parseFromString(h,a));case"json":return l.json();default:if(a===void 0)return l.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),u=h&&h[1]?h[1].toLowerCase():void 0,c=new TextDecoder(u);return l.arrayBuffer().then(d=>c.decode(d))}}}).then(l=>{ey.add(e,l);let h=bs[e];delete bs[e];for(let u=0,c=h.length;u<c;u++){let d=h[u];d.onLoad&&d.onLoad(l)}}).catch(l=>{let h=bs[e];if(h===void 0)throw this.manager.itemError(e),l;delete bs[e];for(let u=0,c=h.length;u<c;u++){let d=h[u];d.onError&&d.onError(l)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},bh=class extends _t{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ue(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}},oD=class extends bh{constructor(e,t,i){super(e,i),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(_t.DefaultUp),this.updateMatrix(),this.groundColor=new Ue(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},ty=new Se,iy=new M,ry=new M,sg=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new H(512,512),this.map=null,this.mapPass=null,this.matrix=new Se,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new qm,this._frameExtents=new H(1,1),this._viewportCount=1,this._viewports=[new tt(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,i=this.matrix;iy.setFromMatrixPosition(e.matrixWorld),t.position.copy(iy),ry.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(ry),t.updateMatrixWorld(),ty.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ty),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(t.projectionMatrix),i.multiply(t.matrixWorldInverse)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},lD=class extends sg{constructor(){super(new di(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,i=Zl*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,s=e.distance||t.far;(i!==t.fov||r!==t.aspect||s!==t.far)&&(t.fov=i,t.aspect=r,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},hD=class extends bh{constructor(e,t,i=0,r=Math.PI/3,s=0,n=1){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(_t.DefaultUp),this.updateMatrix(),this.target=new _t,this.distance=i,this.angle=r,this.penumbra=s,this.decay=n,this.shadow=new lD}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},sy=new Se,il=new M,yp=new M,cD=class extends sg{constructor(){super(new di(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new H(4,2),this._viewportCount=6,this._viewports=[new tt(2,1,1,1),new tt(0,1,1,1),new tt(3,1,1,1),new tt(1,1,1,1),new tt(3,0,1,1),new tt(1,0,1,1)],this._cubeDirections=[new M(1,0,0),new M(-1,0,0),new M(0,0,1),new M(0,0,-1),new M(0,1,0),new M(0,-1,0)],this._cubeUps=[new M(0,1,0),new M(0,1,0),new M(0,1,0),new M(0,1,0),new M(0,0,1),new M(0,0,-1)]}updateMatrices(e,t=0){let i=this.camera,r=this.matrix,s=e.distance||i.far;s!==i.far&&(i.far=s,i.updateProjectionMatrix()),il.setFromMatrixPosition(e.matrixWorld),i.position.copy(il),yp.copy(i.position),yp.add(this._cubeDirections[t]),i.up.copy(this._cubeUps[t]),i.lookAt(yp),i.updateMatrixWorld(),r.makeTranslation(-il.x,-il.y,-il.z),sy.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(sy)}},dD=class extends bh{constructor(e,t,i=0,r=1){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=r,this.shadow=new cD}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},uD=class extends sg{constructor(){super(new ld(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},pD=class extends bh{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(_t.DefaultUp),this.updateMatrix(),this.target=new _t,this.shadow=new uD}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},fD=class extends ke{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}clone(){return new this.constructor().copy(this)}toJSON(){let e=super.toJSON(this);return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}},pw=class extends rg{constructor(e){super(e)}load(e,t,i,r){let s=this,n=new Lf(s.manager);n.setPath(s.path),n.setRequestHeader(s.requestHeader),n.setWithCredentials(s.withCredentials),n.load(e,function(a){try{t(s.parse(JSON.parse(a)))}catch(o){r?r(o):console.error(o),s.manager.itemError(e)}},i,r)}parse(e){let t={},i={};function r(c,d){if(t[d]!==void 0)return t[d];let p=c.interleavedBuffers[d],m=s(c,p.buffer),g=Rh(p.type,m),f=new bP(g,p.stride);return f.uuid=p.uuid,t[d]=f,f}function s(c,d){if(i[d]!==void 0)return i[d];let p=c.arrayBuffers[d],m=new Uint32Array(p).buffer;return i[d]=m,m}let n=e.isInstancedBufferGeometry?new fD:new ke,a=e.data.index;if(a!==void 0){let c=Rh(a.type,a.array);n.setIndex(new Qe(c,1))}let o=e.data.attributes;for(let c in o){let d=o[c],p;if(d.isInterleavedBufferAttribute){let m=r(e.data,d.data);p=new Pf(m,d.itemSize,d.offset,d.normalized)}else{let m=Rh(d.type,d.array),g=d.isInstancedBufferAttribute?wP:Qe;p=new g(m,d.itemSize,d.normalized)}d.name!==void 0&&(p.name=d.name),d.usage!==void 0&&p.setUsage(d.usage),d.updateRange!==void 0&&(p.updateRange.offset=d.updateRange.offset,p.updateRange.count=d.updateRange.count),n.setAttribute(c,p)}let l=e.data.morphAttributes;if(l)for(let c in l){let d=l[c],p=[];for(let m=0,g=d.length;m<g;m++){let f=d[m],v;if(f.isInterleavedBufferAttribute){let y=r(e.data,f.data);v=new Pf(y,f.itemSize,f.offset,f.normalized)}else{let y=Rh(f.type,f.array);v=new Qe(y,f.itemSize,f.normalized)}f.name!==void 0&&(v.name=f.name),p.push(v)}n.morphAttributes[c]=p}e.data.morphTargetsRelative&&(n.morphTargetsRelative=!0);let h=e.data.groups||e.data.drawcalls||e.data.offsets;if(h!==void 0)for(let c=0,d=h.length;c!==d;++c){let p=h[c];n.addGroup(p.start,p.count,p.materialIndex)}let u=e.data.boundingSphere;if(u!==void 0){let c=new M;u.center!==void 0&&c.fromArray(u.center),n.boundingSphere=new pr(c,u.radius)}return e.name&&(n.name=e.name),e.userData&&(n.userData=e.userData),n}},mD=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=ny(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=ny();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function ny(){return(typeof performance>"u"?Date:performance).now()}var ng="\\[\\]\\.:\\/",gD=new RegExp("["+ng+"]","g"),ag="[^"+ng+"]",vD="[^"+ng.replace("\\.","")+"]",yD=/((?:WC+[\/:])*)/.source.replace("WC",ag),xD=/(WCOD+)?/.source.replace("WCOD",vD),bD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",ag),wD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",ag),_D=new RegExp("^"+yD+xD+bD+wD+"$"),SD=["material","materials","bones"],AD=class{constructor(e,t,i){let r=i||yt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},yt=class{constructor(e,t,i){this.path=t,this.parsedPath=i||yt.parseTrackName(t),this.node=yt.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new yt.Composite(e,t,i):new yt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(gD,"")}static parseTrackName(e){let t=_D.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=i.nodeName.substring(r+1);SD.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let n=0;n<s.length;n++){let a=s[n];if(a.name===t||a.uuid===t)return a;let o=i(a.children);if(o)return o}return null},r=i(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)e[t++]=i[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)i[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)i[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)i[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,i=t.objectName,r=t.propertyName,s=t.propertyIndex;if(e||(e=yt.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(i){let l=t.objectIndex;switch(i){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let h=0;h<e.length;h++)if(e[h].name===l){l=h;break}break;default:if(e[i]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[i]}if(l!==void 0){if(e[l]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[l]}}let n=e[r];if(n===void 0){let l=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+l+"."+r+" but it wasn't found.",e);return}let a=this.Versioning.None;this.targetObject=e,e.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:e.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let o=this.BindingType.Direct;if(s!==void 0){if(r==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}o=this.BindingType.ArrayElement,this.resolvedProperty=n,this.propertyIndex=s}else n.fromArray!==void 0&&n.toArray!==void 0?(o=this.BindingType.HasFromToArray,this.resolvedProperty=n):Array.isArray(n)?(o=this.BindingType.EntireArray,this.resolvedProperty=n):this.propertyName=r;this.getValue=this.GetterByBindingType[o],this.setValue=this.SetterByBindingTypeAndVersioning[o][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};yt.Composite=AD;yt.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};yt.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};yt.prototype.GetterByBindingType=[yt.prototype._getValue_direct,yt.prototype._getValue_array,yt.prototype._getValue_arrayElement,yt.prototype._getValue_toArray];yt.prototype.SetterByBindingTypeAndVersioning=[[yt.prototype._setValue_direct,yt.prototype._setValue_direct_setNeedsUpdate,yt.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_array,yt.prototype._setValue_array_setNeedsUpdate,yt.prototype._setValue_array_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_arrayElement,yt.prototype._setValue_arrayElement_setNeedsUpdate,yt.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_fromArray,yt.prototype._setValue_fromArray_setNeedsUpdate,yt.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Oe=class{constructor(e){typeof e=="string"&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}clone(){return new Oe(this.value.clone===void 0?this.value:this.value.clone())}},fw=class{constructor(e,t,i=0,r=1/0){this.ray=new Do(e,t),this.near=i,this.far=r,this.camera=null,this.layers=new Xm,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,i=[]){return If(e,this,i,t),i.sort(ay),i}intersectObjects(e,t=!0,i=[]){for(let r=0,s=e.length;r<s;r++)If(e[r],this,i,t);return i.sort(ay),i}};function ay(e,t){return e.distance-t.distance}function If(e,t,i,r){if(e.layers.test(t.layers)&&e.raycast(t,i),r===!0){let s=e.children;for(let n=0,a=s.length;n<a;n++)If(s[n],t,i,!0)}}var oy=class{constructor(e=1,t=0,i=0){return this.radius=e,this.phi=t,this.theta=i,this}set(e,t,i){return this.radius=e,this.phi=t,this.theta=i,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,i){return this.radius=Math.sqrt(e*e+t*t+i*i),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,i),this.phi=Math.acos(qt(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}},ly=new H,MD=class{constructor(e=new H(1/0,1/0),t=new H(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let i=ly.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(i),this.max.copy(e).add(i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return ly.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},hy=new M,ac=new M,cr=class{constructor(e=new M,t=new M){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){hy.subVectors(e,this.start),ac.subVectors(this.end,this.start);let i=ac.dot(ac),r=ac.dot(hy)/i;return t&&(r=qt(r,0,1)),r}closestPointToPoint(e,t,i){let r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},cy=new M,ED=class extends _t{constructor(e,t){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;let i=new ke,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let n=0,a=1,o=32;n<o;n++,a++){let l=n/o*Math.PI*2,h=a/o*Math.PI*2;r.push(Math.cos(l),Math.sin(l),1,Math.cos(h),Math.sin(h),1)}i.setAttribute("position",new Ee(r,3));let s=new bn({fog:!1,toneMapped:!1});this.cone=new vh(i,s),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateMatrixWorld();let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),cy.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(cy),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}},CD=class extends Xi{constructor(e,t,i){let r=new tg(t,4,2),s=new gh({wireframe:!0,fog:!1,toneMapped:!1});super(r,s),this.light=e,this.light.updateMatrixWorld(),this.color=i,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}},dy=new M,oc=new M,uy=new M,TD=class extends _t{constructor(e,t,i){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,t===void 0&&(t=1);let r=new ke;r.setAttribute("position",new Ee([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let s=new bn({fog:!1,toneMapped:!1});this.lightPlane=new hd(r,s),this.add(this.lightPlane),r=new ke,r.setAttribute("position",new Ee([0,0,0,0,0,1],3)),this.targetLine=new hd(r,s),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){dy.setFromMatrixPosition(this.light.matrixWorld),oc.setFromMatrixPosition(this.light.target.matrixWorld),uy.subVectors(oc,dy),this.lightPlane.lookAt(oc),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(oc),this.targetLine.scale.z=uy.length()}},lc=new M,Dt=new Lo,ud=class extends vh{constructor(e){let t=new ke,i=new bn({color:16777215,vertexColors:!0,toneMapped:!1}),r=[],s=[],n={};a("n1","n2"),a("n2","n4"),a("n4","n3"),a("n3","n1"),a("f1","f2"),a("f2","f4"),a("f4","f3"),a("f3","f1"),a("n1","f1"),a("n2","f2"),a("n3","f3"),a("n4","f4"),a("p","n1"),a("p","n2"),a("p","n3"),a("p","n4"),a("u1","u2"),a("u2","u3"),a("u3","u1"),a("c","t"),a("p","c"),a("cn1","cn2"),a("cn3","cn4"),a("cf1","cf2"),a("cf3","cf4");function a(p,m){o(p),o(m)}function o(p){r.push(0,0,0),s.push(0,0,0),n[p]===void 0&&(n[p]=[]),n[p].push(r.length/3-1)}t.setAttribute("position",new Ee(r,3)),t.setAttribute("color",new Ee(s,3)),super(t,i),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=n,this.update();let l=new Ue(16755200),h=new Ue(16711680),u=new Ue(43775),c=new Ue(16777215),d=new Ue(3355443);this.setColors(l,h,u,c,d)}setColors(e,t,i,r,s){let n=this.geometry.getAttribute("color");n.setXYZ(0,e.r,e.g,e.b),n.setXYZ(1,e.r,e.g,e.b),n.setXYZ(2,e.r,e.g,e.b),n.setXYZ(3,e.r,e.g,e.b),n.setXYZ(4,e.r,e.g,e.b),n.setXYZ(5,e.r,e.g,e.b),n.setXYZ(6,e.r,e.g,e.b),n.setXYZ(7,e.r,e.g,e.b),n.setXYZ(8,e.r,e.g,e.b),n.setXYZ(9,e.r,e.g,e.b),n.setXYZ(10,e.r,e.g,e.b),n.setXYZ(11,e.r,e.g,e.b),n.setXYZ(12,e.r,e.g,e.b),n.setXYZ(13,e.r,e.g,e.b),n.setXYZ(14,e.r,e.g,e.b),n.setXYZ(15,e.r,e.g,e.b),n.setXYZ(16,e.r,e.g,e.b),n.setXYZ(17,e.r,e.g,e.b),n.setXYZ(18,e.r,e.g,e.b),n.setXYZ(19,e.r,e.g,e.b),n.setXYZ(20,e.r,e.g,e.b),n.setXYZ(21,e.r,e.g,e.b),n.setXYZ(22,e.r,e.g,e.b),n.setXYZ(23,e.r,e.g,e.b),n.setXYZ(24,t.r,t.g,t.b),n.setXYZ(25,t.r,t.g,t.b),n.setXYZ(26,t.r,t.g,t.b),n.setXYZ(27,t.r,t.g,t.b),n.setXYZ(28,t.r,t.g,t.b),n.setXYZ(29,t.r,t.g,t.b),n.setXYZ(30,t.r,t.g,t.b),n.setXYZ(31,t.r,t.g,t.b),n.setXYZ(32,i.r,i.g,i.b),n.setXYZ(33,i.r,i.g,i.b),n.setXYZ(34,i.r,i.g,i.b),n.setXYZ(35,i.r,i.g,i.b),n.setXYZ(36,i.r,i.g,i.b),n.setXYZ(37,i.r,i.g,i.b),n.setXYZ(38,r.r,r.g,r.b),n.setXYZ(39,r.r,r.g,r.b),n.setXYZ(40,s.r,s.g,s.b),n.setXYZ(41,s.r,s.g,s.b),n.setXYZ(42,s.r,s.g,s.b),n.setXYZ(43,s.r,s.g,s.b),n.setXYZ(44,s.r,s.g,s.b),n.setXYZ(45,s.r,s.g,s.b),n.setXYZ(46,s.r,s.g,s.b),n.setXYZ(47,s.r,s.g,s.b),n.setXYZ(48,s.r,s.g,s.b),n.setXYZ(49,s.r,s.g,s.b),n.needsUpdate=!0}update(){let e=this.geometry,t=this.pointMap,i=1,r=1;Dt.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Nt("c",t,e,Dt,0,0,-1),Nt("t",t,e,Dt,0,0,1),Nt("n1",t,e,Dt,-i,-r,-1),Nt("n2",t,e,Dt,i,-r,-1),Nt("n3",t,e,Dt,-i,r,-1),Nt("n4",t,e,Dt,i,r,-1),Nt("f1",t,e,Dt,-i,-r,1),Nt("f2",t,e,Dt,i,-r,1),Nt("f3",t,e,Dt,-i,r,1),Nt("f4",t,e,Dt,i,r,1),Nt("u1",t,e,Dt,i*.7,r*1.1,-1),Nt("u2",t,e,Dt,-i*.7,r*1.1,-1),Nt("u3",t,e,Dt,0,r*2,-1),Nt("cf1",t,e,Dt,-i,0,1),Nt("cf2",t,e,Dt,i,0,1),Nt("cf3",t,e,Dt,0,-r,1),Nt("cf4",t,e,Dt,0,r,1),Nt("cn1",t,e,Dt,-i,0,-1),Nt("cn2",t,e,Dt,i,0,-1),Nt("cn3",t,e,Dt,0,-r,-1),Nt("cn4",t,e,Dt,0,r,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Nt(e,t,i,r,s,n,a){lc.set(s,n,a).unproject(r);let o=t[e];if(o!==void 0){let l=i.getAttribute("position");for(let h=0,u=o.length;h<u;h++)l.setXYZ(o[h],lc.x,lc.y,lc.z)}}var pd=class extends vh{constructor(e,t=16776960){let i=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),r=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],s=new ke;s.setIndex(new Qe(i,1)),s.setAttribute("position",new Ee(r,3)),super(s,new bn({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){let t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}},PD=class extends vh{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new ke;r.setAttribute("position",new Ee(t,3)),r.setAttribute("color",new Ee(i,3));let s=new bn({vertexColors:!0,toneMapped:!1});super(r,s),this.type="AxesHelper"}setColors(e,t,i){let r=new Ue,s=this.geometry.attributes.color.array;return r.set(e),r.toArray(s,0),r.toArray(s,3),r.set(t),r.toArray(s,6),r.toArray(s,9),r.set(i),r.toArray(s,12),r.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},{floatView:_V,uint32View:SV,baseTable:AV,shiftTable:MV,mantissaTable:EV,exponentTable:CV,offsetTable:TV}=DD();function DD(){let e=new ArrayBuffer(4),t=new Float32Array(e),i=new Uint32Array(e),r=new Uint32Array(512),s=new Uint32Array(512);for(let l=0;l<256;++l){let h=l-127;h<-27?(r[l]=0,r[l|256]=32768,s[l]=24,s[l|256]=24):h<-14?(r[l]=1024>>-h-14,r[l|256]=1024>>-h-14|32768,s[l]=-h-1,s[l|256]=-h-1):h<=15?(r[l]=h+15<<10,r[l|256]=h+15<<10|32768,s[l]=13,s[l|256]=13):h<128?(r[l]=31744,r[l|256]=64512,s[l]=24,s[l|256]=24):(r[l]=31744,r[l|256]=64512,s[l]=13,s[l|256]=13)}let n=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let h=l<<13,u=0;for(;(h&8388608)===0;)h<<=1,u-=8388608;h&=-8388609,u+=947912704,n[l]=h|u}for(let l=1024;l<2048;++l)n[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:t,uint32View:i,baseTable:r,shiftTable:s,mantissaTable:n,exponentTable:a,offsetTable:o}}var OD=class extends Ut{constructor(e,t,i){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(e,t,i),this.samples=4}};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:uh}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=uh);var rl=".",og=Symbol("target"),mw=Symbol("unsubscribe");function Bf(e){return e instanceof Date||e instanceof Set||e instanceof Map||e instanceof WeakSet||e instanceof WeakMap||ArrayBuffer.isView(e)}function LD(e){return(typeof e=="object"?e===null:typeof e!="function")||e instanceof RegExp}var Qr=Array.isArray;function lg(e){return typeof e=="symbol"}var ID={after:(e,t)=>Qr(e)?e.slice(t.length):t===""?e:e.slice(t.length+1),concat:(e,t)=>Qr(e)?(e=[...e],t&&e.push(t),e):t&&t.toString!==void 0?(e!==""&&(e+=rl),lg(t)?e+t.toString():e+t):e,initial:e=>{if(Qr(e))return e.slice(0,-1);if(e==="")return e;let t=e.lastIndexOf(rl);return t===-1?"":e.slice(0,t)},last:e=>{if(Qr(e))return e[e.length-1]||"";if(e==="")return e;let t=e.lastIndexOf(rl);return t===-1?e:e.slice(t+1)},walk:(e,t)=>{if(Qr(e))for(let i of e)t(i);else if(e!==""){let i=0,r=e.indexOf(rl);if(r===-1)t(e);else for(;i<e.length;)r===-1&&(r=e.length),t(e.slice(i,r)),i=r+1,r=e.indexOf(rl,i)}},get(e,t){return this.walk(t,i=>{e&&(e=e[i])}),e}},rr=ID;function BD(e){return typeof e=="object"&&typeof e.next=="function"}function RD(e,t,i,r,s){let n=e.next;if(t.name==="entries")e.next=function(){let a=n.call(this);return a.done===!1&&(a.value[0]=s(a.value[0],t,a.value[0],r),a.value[1]=s(a.value[1],t,a.value[0],r)),a};else if(t.name==="values"){let a=i[og].keys();e.next=function(){let o=n.call(this);return o.done===!1&&(o.value=s(o.value,t,a.next().value,r)),o}}else e.next=function(){let a=n.call(this);return a.done===!1&&(a.value=s(a.value,t,a.value,r)),a};return e}function py(e,t,i){return e.isUnsubscribed||t.ignoreSymbols&&lg(i)||t.ignoreUnderscores&&i.charAt(0)==="_"||"ignoreKeys"in t&&t.ignoreKeys.includes(i)}var ND=class{constructor(e){this._equals=e,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return this._descriptorCache===void 0&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(e){let t=this._getDescriptorCache(),i=t.get(e);return i===void 0&&(i={},t.set(e,i)),i}_getOwnPropertyDescriptor(e,t){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(e,t);let i=this._getProperties(e),r=i[t];return r===void 0&&(r=Reflect.getOwnPropertyDescriptor(e,t),i[t]=r),r}getProxy(e,t,i,r){if(this.isUnsubscribed)return e;let s=e[r],n=s||e;this._pathCache.set(n,t);let a=this._proxyCache.get(n);return a===void 0&&(a=s===void 0?new Proxy(e,i):e,this._proxyCache.set(n,a)),a}getPath(e){return this.isUnsubscribed?void 0:this._pathCache.get(e)}isDetached(e,t){return!Object.is(e,rr.get(t,this.getPath(e)))}defineProperty(e,t,i){return Reflect.defineProperty(e,t,i)?(this.isUnsubscribed||(this._getProperties(e)[t]=i),!0):!1}setProperty(e,t,i,r,s){if(!this._equals(s,i)||!(t in e)){let n=this._getOwnPropertyDescriptor(e,t);return n!==void 0&&"set"in n?Reflect.set(e,t,i,r):Reflect.set(e,t,i)}return!0}deleteProperty(e,t,i){if(Reflect.deleteProperty(e,t)){if(!this.isUnsubscribed){let r=this._getDescriptorCache().get(e);r&&(delete r[t],this._pathCache.delete(i))}return!0}return!1}isSameDescriptor(e,t,i){let r=this._getOwnPropertyDescriptor(t,i);return e!==void 0&&r!==void 0&&Object.is(e.value,r.value)&&(e.writable||!1)===(r.writable||!1)&&(e.enumerable||!1)===(r.enumerable||!1)&&(e.configurable||!1)===(r.configurable||!1)&&e.get===r.get&&e.set===r.set}isGetInvariant(e,t){let i=this._getOwnPropertyDescriptor(e,t);return i!==void 0&&i.configurable!==!0&&i.writable!==!0}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function Rf(e){return toString.call(e)==="[object Object]"}function hc(){return!0}function Na(e,t){return e.length!==t.length||e.some((i,r)=>t[r]!==i)}var gw=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),zD=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),vw={push:hc,pop:hc,shift:hc,unshift:hc,copyWithin:Na,reverse:Na,sort:Na,splice:Na,flat:Na,fill:Na},FD=new Set([...gw,...zD,...Object.keys(vw)]);function cc(e,t){if(e.size!==t.size)return!0;for(let i of e)if(!t.has(i))return!0;return!1}var yw=["keys","values","entries"],xw=new Set(["has","toString"]),bw={add:cc,clear:cc,delete:cc,forEach:cc},UD=new Set([...xw,...Object.keys(bw),...yw]);function dc(e,t){if(e.size!==t.size)return!0;let i;for(let[r,s]of e)if(i=t.get(r),i!==s||i===void 0&&!t.has(r))return!0;return!1}var kD=new Set([...xw,"get"]),ww={set:dc,clear:dc,delete:dc,forEach:dc},jD=new Set([...kD,...Object.keys(ww),...yw]),yn=class{constructor(e,t,i,r){this._path=t,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=r,this._changes=r?[]:null,this.clone=t===void 0?e:this._shallowClone(e)}static isHandledMethod(e){return gw.has(e)}_shallowClone(e){let t=e;if(Rf(e))t={...e};else if(Qr(e))t=[...e];else if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set([...e].map(i=>this._shallowClone(i)));else if(e instanceof Map){t=new Map;for(let[i,r]of e.entries())t.set(i,this._shallowClone(r))}return this._clonedCache.add(t),t}preferredThisArg(e,t,i,r){return e?(Qr(r)?this._onIsChanged=vw[t]:r instanceof Set?this._onIsChanged=bw[t]:r instanceof Map&&(this._onIsChanged=ww[t]),r):i}update(e,t,i){let r=rr.after(e,this._path);if(t!=="length"){let s=this.clone;rr.walk(r,n=>{s&&s[n]&&(this._clonedCache.has(s[n])||(s[n]=this._shallowClone(s[n])),s=s[n])}),this._hasOnValidate&&this._changes.push({path:r,property:t,previous:i}),s&&s[t]&&(s[t]=i)}this._isChanged=!0}undo(e){let t;for(let i=this._changes.length-1;i!==-1;i--)t=this._changes[i],rr.get(e,t.path)[t.property]=t.previous}isChanged(e){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,e)}},fy=class extends yn{static isHandledMethod(e){return FD.has(e)}},HD=class extends yn{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}},my=class extends yn{static isHandledMethod(e){return UD.has(e)}undo(e){for(let t of this.clone)e.add(t);for(let t of e)this.clone.has(t)||e.delete(t)}},gy=class extends yn{static isHandledMethod(e){return jD.has(e)}undo(e){for(let[t,i]of this.clone.entries())e.set(t,i);for(let t of e.keys())this.clone.has(t)||e.delete(t)}},GD=class extends yn{constructor(e,t,i,r){super(void 0,t,i,r),this._arg1=i[0],this._weakValue=e.has(this._arg1)}isChanged(e){return this._weakValue!==e.has(this._arg1)}undo(e){this._weakValue&&!e.has(this._arg1)?e.add(this._arg1):e.delete(this._arg1)}},VD=class extends yn{constructor(e,t,i,r){super(void 0,t,i,r),this._weakKey=i[0],this._weakHas=e.has(this._weakKey),this._weakValue=e.get(this._weakKey)}isChanged(e){return this._weakValue!==e.get(this._weakKey)}undo(e){let t=e.has(this._weakKey);this._weakHas&&!t?e.set(this._weakKey,this._weakValue):!this._weakHas&&t?e.delete(this._weakKey):this._weakValue!==e.get(this._weakKey)&&e.set(this._weakKey,this._weakValue)}},Xa=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return Rf(e)||Qr(e)||Bf(e)}static isHandledMethod(e,t){return Rf(e)?yn.isHandledMethod(t):Qr(e)?fy.isHandledMethod(t):e instanceof Set?my.isHandledMethod(t):e instanceof Map?gy.isHandledMethod(t):Bf(e)}get isCloning(){return this._stack.length>0}start(e,t,i){let r=yn;Qr(e)?r=fy:e instanceof Date?r=HD:e instanceof Set?r=my:e instanceof Map?r=gy:e instanceof WeakSet?r=GD:e instanceof WeakMap&&(r=VD),this._stack.push(new r(e,t,i,this._hasOnValidate))}update(e,t,i){this._stack[this._stack.length-1].update(e,t,i)}preferredThisArg(e,t,i){let{name:r}=e,s=Xa.isHandledMethod(i,r);return this._stack[this._stack.length-1].preferredThisArg(s,r,t,i)}isChanged(e,t,i){return this._stack[this._stack.length-1].isChanged(e,t,i)}undo(e){this._previousClone!==void 0&&this._previousClone.undo(e)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}},WD={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},hg=(e,t,i={})=>{i={...WD,...i};let r=Symbol("ProxyTarget"),{equals:s,isShallow:n,ignoreDetached:a,details:o}=i,l=new ND(s),h=typeof i.onValidate=="function",u=new Xa(h),c=(y,b,x,w,_)=>!h||u.isCloning||i.onValidate(rr.concat(l.getPath(y),b),x,w,_)===!0,d=(y,b,x,w)=>{!py(l,i,b)&&!(a&&l.isDetached(y,e))&&p(l.getPath(y),b,x,w)},p=(y,b,x,w,_)=>{u.isCloning?u.update(y,b,w):t(rr.concat(y,b),x,w,_)},m=y=>y&&(y[r]||y),g=(y,b,x,w)=>LD(y)||x==="constructor"||n&&!Xa.isHandledMethod(b,x)||py(l,i,x)||l.isGetInvariant(b,x)||a&&l.isDetached(b,e)?y:(w===void 0&&(w=l.getPath(b)),l.getProxy(y,rr.concat(w,x),f,r)),f={get(y,b,x){if(lg(b)){if(b===r||b===og)return y;if(b===mw&&!l.isUnsubscribed&&l.getPath(y).length===0)return l.unsubscribe(),y}let w=Bf(y)?Reflect.get(y,b):Reflect.get(y,b,x);return g(w,y,b)},set(y,b,x,w){x=m(x);let _=y[r]||y,A=_[b];if(s(A,x)&&b in y)return!0;let S=c(y,b,x,A);return S&&l.setProperty(_,b,x,w,A)?(d(y,b,y[b],A),!0):!S},defineProperty(y,b,x){if(!l.isSameDescriptor(x,y,b)){let w=y[b];c(y,b,x.value,w)&&l.defineProperty(y,b,x,w)&&d(y,b,x.value,w)}return!0},deleteProperty(y,b){if(!Reflect.has(y,b))return!0;let x=Reflect.get(y,b),w=c(y,b,void 0,x);return w&&l.deleteProperty(y,b,x)?(d(y,b,void 0,x),!0):!w},apply(y,b,x){let w=b[r]||b;if(l.isUnsubscribed)return Reflect.apply(y,w,x);if((o===!1||o!==!0&&!o.includes(y.name))&&Xa.isHandledType(w)){let _=rr.initial(l.getPath(y)),A=Xa.isHandledMethod(w,y.name);u.start(w,_,x);let S=Reflect.apply(y,u.preferredThisArg(y,b,w),A?x.map(T=>m(T)):x),E=u.isChanged(w,s),C=u.stop();if(Xa.isHandledType(S)&&A&&(b instanceof Map&&y.name==="get"&&(_=rr.concat(_,x[0])),S=l.getProxy(S,_,f)),E){let T={name:y.name,args:x,result:S},P=u.isCloning?rr.initial(_):_,R=u.isCloning?rr.last(_):"";c(rr.get(e,P),R,w,C,T)?p(P,R,w,C,T):u.undo(w)}return(b instanceof Map||b instanceof Set)&&BD(S)?RD(S,y,b,_,g):S}return Reflect.apply(y,b,x)}},v=l.getProxy(e,i.pathAsArray?[]:"",f);return t=t.bind(v),h&&(i.onValidate=i.onValidate.bind(v)),v};hg.target=e=>e&&e[og]||e;hg.unsubscribe=e=>e[mw]||e;var vy=hg,XD=typeof global=="object"&&global&&global.Object===Object&&global,_w=XD,YD=typeof self=="object"&&self&&self.Object===Object&&self,qD=_w||YD||Function("return this")(),Lr=qD,QD=Lr.Symbol,fr=QD,Sw=Object.prototype,ZD=Sw.hasOwnProperty,KD=Sw.toString,sl=fr?fr.toStringTag:void 0;function JD(e){var t=ZD.call(e,sl),i=e[sl];try{e[sl]=void 0;var r=!0}catch{}var s=KD.call(e);return r&&(t?e[sl]=i:delete e[sl]),s}var $D=JD,eO=Object.prototype,tO=eO.toString;function iO(e){return tO.call(e)}var rO=iO,sO="[object Null]",nO="[object Undefined]",yy=fr?fr.toStringTag:void 0;function aO(e){return e==null?e===void 0?nO:sO:yy&&yy in Object(e)?$D(e):rO(e)}var ha=aO;function oO(e){return e!=null&&typeof e=="object"}var Ds=oO,lO="[object Symbol]";function hO(e){return typeof e=="symbol"||Ds(e)&&ha(e)==lO}var su=hO;function cO(e,t){for(var i=-1,r=e==null?0:e.length,s=Array(r);++i<r;)s[i]=t(e[i],i,e);return s}var Aw=cO,dO=Array.isArray,ls=dO,uO=1/0,xy=fr?fr.prototype:void 0,by=xy?xy.toString:void 0;function Mw(e){if(typeof e=="string")return e;if(ls(e))return Aw(e,Mw)+"";if(su(e))return by?by.call(e):"";var t=e+"";return t=="0"&&1/e==-uO?"-0":t}var pO=Mw,fO=/\s/;function mO(e){for(var t=e.length;t--&&fO.test(e.charAt(t)););return t}var gO=mO,vO=/^\s+/;function yO(e){return e&&e.slice(0,gO(e)+1).replace(vO,"")}var xO=yO;function bO(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var hs=bO,wy=0/0,wO=/^[-+]0x[0-9a-f]+$/i,_O=/^0b[01]+$/i,SO=/^0o[0-7]+$/i,AO=parseInt;function MO(e){if(typeof e=="number")return e;if(su(e))return wy;if(hs(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=hs(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=xO(e);var i=_O.test(e);return i||SO.test(e)?AO(e.slice(2),i?2:8):wO.test(e)?wy:+e}var _y=MO;function EO(e){return e}var CO=EO,TO="[object AsyncFunction]",PO="[object Function]",DO="[object GeneratorFunction]",OO="[object Proxy]";function LO(e){if(!hs(e))return!1;var t=ha(e);return t==PO||t==DO||t==TO||t==OO}var Ew=LO,IO=Lr["__core-js_shared__"],xp=IO,Sy=function(){var e=/[^.]+$/.exec(xp&&xp.keys&&xp.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function BO(e){return!!Sy&&Sy in e}var RO=BO,NO=Function.prototype,zO=NO.toString;function FO(e){if(e!=null){try{return zO.call(e)}catch{}try{return e+""}catch{}}return""}var ca=FO,UO=/[\\^$.*+?()[\]{}|]/g,kO=/^\[object .+?Constructor\]$/,jO=Function.prototype,HO=Object.prototype,GO=jO.toString,VO=HO.hasOwnProperty,WO=RegExp("^"+GO.call(VO).replace(UO,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function XO(e){if(!hs(e)||RO(e))return!1;var t=Ew(e)?WO:kO;return t.test(ca(e))}var YO=XO;function qO(e,t){return e?.[t]}var QO=qO;function ZO(e,t){var i=QO(e,t);return YO(i)?i:void 0}var da=ZO,KO=da(Lr,"WeakMap"),Nf=KO,Ay=Object.create,JO=function(){function e(){}return function(t){if(!hs(t))return{};if(Ay)return Ay(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}(),$O=JO;function eL(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}var tL=eL;function iL(e,t){var i=-1,r=e.length;for(t||(t=Array(r));++i<r;)t[i]=e[i];return t}var rL=iL,sL=800,nL=16,aL=Date.now;function oL(e){var t=0,i=0;return function(){var r=aL(),s=nL-(r-i);if(i=r,s>0){if(++t>=sL)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var lL=oL;function hL(e){return function(){return e}}var cL=hL,dL=function(){try{var e=da(Object,"defineProperty");return e({},"",{}),e}catch{}}(),fd=dL,uL=fd?function(e,t){return fd(e,"toString",{configurable:!0,enumerable:!1,value:cL(t),writable:!0})}:CO,pL=uL,fL=lL(pL),mL=fL;function gL(e,t){for(var i=-1,r=e==null?0:e.length;++i<r&&t(e[i],i,e)!==!1;);return e}var vL=gL,yL=9007199254740991,xL=/^(?:0|[1-9]\d*)$/;function bL(e,t){var i=typeof e;return t=t??yL,!!t&&(i=="number"||i!="symbol"&&xL.test(e))&&e>-1&&e%1==0&&e<t}var cg=bL;function wL(e,t,i){t=="__proto__"&&fd?fd(e,t,{configurable:!0,enumerable:!0,value:i,writable:!0}):e[t]=i}var Cw=wL;function _L(e,t){return e===t||e!==e&&t!==t}var dg=_L,SL=Object.prototype,AL=SL.hasOwnProperty;function ML(e,t,i){var r=e[t];(!(AL.call(e,t)&&dg(r,i))||i===void 0&&!(t in e))&&Cw(e,t,i)}var ug=ML;function EL(e,t,i,r){var s=!i;i||(i={});for(var n=-1,a=t.length;++n<a;){var o=t[n],l=r?r(i[o],e[o],o,i,e):void 0;l===void 0&&(l=e[o]),s?Cw(i,o,l):ug(i,o,l)}return i}var wh=EL,My=Math.max;function CL(e,t,i){return t=My(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,n=My(r.length-t,0),a=Array(n);++s<n;)a[s]=r[t+s];s=-1;for(var o=Array(t+1);++s<t;)o[s]=r[s];return o[t]=i(a),tL(e,this,o)}}var TL=CL,PL=9007199254740991;function DL(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=PL}var pg=DL;function OL(e){return e!=null&&pg(e.length)&&!Ew(e)}var Tw=OL,LL=Object.prototype;function IL(e){var t=e&&e.constructor,i=typeof t=="function"&&t.prototype||LL;return e===i}var fg=IL;function BL(e,t){for(var i=-1,r=Array(e);++i<e;)r[i]=t(i);return r}var RL=BL,NL="[object Arguments]";function zL(e){return Ds(e)&&ha(e)==NL}var Ey=zL,Pw=Object.prototype,FL=Pw.hasOwnProperty,UL=Pw.propertyIsEnumerable,kL=Ey(function(){return arguments}())?Ey:function(e){return Ds(e)&&FL.call(e,"callee")&&!UL.call(e,"callee")},mg=kL;function jL(){return!1}var HL=jL,Dw=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cy=Dw&&typeof module=="object"&&module&&!module.nodeType&&module,GL=Cy&&Cy.exports===Dw,Ty=GL?Lr.Buffer:void 0,VL=Ty?Ty.isBuffer:void 0,WL=VL||HL,md=WL,XL="[object Arguments]",YL="[object Array]",qL="[object Boolean]",QL="[object Date]",ZL="[object Error]",KL="[object Function]",JL="[object Map]",$L="[object Number]",e4="[object Object]",t4="[object RegExp]",i4="[object Set]",r4="[object String]",s4="[object WeakMap]",n4="[object ArrayBuffer]",a4="[object DataView]",o4="[object Float32Array]",l4="[object Float64Array]",h4="[object Int8Array]",c4="[object Int16Array]",d4="[object Int32Array]",u4="[object Uint8Array]",p4="[object Uint8ClampedArray]",f4="[object Uint16Array]",m4="[object Uint32Array]",At={};At[o4]=At[l4]=At[h4]=At[c4]=At[d4]=At[u4]=At[p4]=At[f4]=At[m4]=!0;At[XL]=At[YL]=At[n4]=At[qL]=At[a4]=At[QL]=At[ZL]=At[KL]=At[JL]=At[$L]=At[e4]=At[t4]=At[i4]=At[r4]=At[s4]=!1;function g4(e){return Ds(e)&&pg(e.length)&&!!At[ha(e)]}var v4=g4;function y4(e){return function(t){return e(t)}}var gg=y4,Ow=typeof exports=="object"&&exports&&!exports.nodeType&&exports,jl=Ow&&typeof module=="object"&&module&&!module.nodeType&&module,x4=jl&&jl.exports===Ow,bp=x4&&_w.process,b4=function(){try{var e=jl&&jl.require&&jl.require("util").types;return e||bp&&bp.binding&&bp.binding("util")}catch{}}(),_o=b4,Py=_o&&_o.isTypedArray,w4=Py?gg(Py):v4,Lw=w4,_4=Object.prototype,S4=_4.hasOwnProperty;function A4(e,t){var i=ls(e),r=!i&&mg(e),s=!i&&!r&&md(e),n=!i&&!r&&!s&&Lw(e),a=i||r||s||n,o=a?RL(e.length,String):[],l=o.length;for(var h in e)(t||S4.call(e,h))&&!(a&&(h=="length"||s&&(h=="offset"||h=="parent")||n&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||cg(h,l)))&&o.push(h);return o}var Iw=A4;function M4(e,t){return function(i){return e(t(i))}}var Bw=M4,E4=Bw(Object.keys,Object),C4=E4,T4=Object.prototype,P4=T4.hasOwnProperty;function D4(e){if(!fg(e))return C4(e);var t=[];for(var i in Object(e))P4.call(e,i)&&i!="constructor"&&t.push(i);return t}var O4=D4;function L4(e){return Tw(e)?Iw(e):O4(e)}var vg=L4;function I4(e){var t=[];if(e!=null)for(var i in Object(e))t.push(i);return t}var B4=I4,R4=Object.prototype,N4=R4.hasOwnProperty;function z4(e){if(!hs(e))return B4(e);var t=fg(e),i=[];for(var r in e)r=="constructor"&&(t||!N4.call(e,r))||i.push(r);return i}var F4=z4;function U4(e){return Tw(e)?Iw(e,!0):F4(e)}var yg=U4,k4=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,j4=/^\w*$/;function H4(e,t){if(ls(e))return!1;var i=typeof e;return i=="number"||i=="symbol"||i=="boolean"||e==null||su(e)?!0:j4.test(e)||!k4.test(e)||t!=null&&e in Object(t)}var G4=H4,V4=da(Object,"create"),eh=V4;function W4(){this.__data__=eh?eh(null):{},this.size=0}var X4=W4;function Y4(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var q4=Y4,Q4="__lodash_hash_undefined__",Z4=Object.prototype,K4=Z4.hasOwnProperty;function J4(e){var t=this.__data__;if(eh){var i=t[e];return i===Q4?void 0:i}return K4.call(t,e)?t[e]:void 0}var $4=J4,eI=Object.prototype,tI=eI.hasOwnProperty;function iI(e){var t=this.__data__;return eh?t[e]!==void 0:tI.call(t,e)}var rI=iI,sI="__lodash_hash_undefined__";function nI(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=eh&&t===void 0?sI:t,this}var aI=nI;function Bo(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}Bo.prototype.clear=X4;Bo.prototype.delete=q4;Bo.prototype.get=$4;Bo.prototype.has=rI;Bo.prototype.set=aI;var Dy=Bo;function oI(){this.__data__=[],this.size=0}var lI=oI;function hI(e,t){for(var i=e.length;i--;)if(dg(e[i][0],t))return i;return-1}var nu=hI,cI=Array.prototype,dI=cI.splice;function uI(e){var t=this.__data__,i=nu(t,e);if(i<0)return!1;var r=t.length-1;return i==r?t.pop():dI.call(t,i,1),--this.size,!0}var pI=uI;function fI(e){var t=this.__data__,i=nu(t,e);return i<0?void 0:t[i][1]}var mI=fI;function gI(e){return nu(this.__data__,e)>-1}var vI=gI;function yI(e,t){var i=this.__data__,r=nu(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}var xI=yI;function Ro(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}Ro.prototype.clear=lI;Ro.prototype.delete=pI;Ro.prototype.get=mI;Ro.prototype.has=vI;Ro.prototype.set=xI;var au=Ro,bI=da(Lr,"Map"),th=bI;function wI(){this.size=0,this.__data__={hash:new Dy,map:new(th||au),string:new Dy}}var _I=wI;function SI(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var AI=SI;function MI(e,t){var i=e.__data__;return AI(t)?i[typeof t=="string"?"string":"hash"]:i.map}var ou=MI;function EI(e){var t=ou(this,e).delete(e);return this.size-=t?1:0,t}var CI=EI;function TI(e){return ou(this,e).get(e)}var PI=TI;function DI(e){return ou(this,e).has(e)}var OI=DI;function LI(e,t){var i=ou(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this}var II=LI;function No(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}No.prototype.clear=_I;No.prototype.delete=CI;No.prototype.get=PI;No.prototype.has=OI;No.prototype.set=II;var lu=No,BI="Expected a function";function xg(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(BI);var i=function(){var r=arguments,s=t?t.apply(this,r):r[0],n=i.cache;if(n.has(s))return n.get(s);var a=e.apply(this,r);return i.cache=n.set(s,a)||n,a};return i.cache=new(xg.Cache||lu),i}xg.Cache=lu;var RI=xg,NI=500;function zI(e){var t=RI(e,function(r){return i.size===NI&&i.clear(),r}),i=t.cache;return t}var FI=zI,UI=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,kI=/\\(\\)?/g,jI=FI(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(UI,function(i,r,s,n){t.push(s?n.replace(kI,"$1"):r||i)}),t}),HI=jI;function GI(e){return e==null?"":pO(e)}var VI=GI;function WI(e,t){return ls(e)?e:G4(e,t)?[e]:HI(VI(e))}var zo=WI,XI=1/0;function YI(e){if(typeof e=="string"||su(e))return e;var t=e+"";return t=="0"&&1/e==-XI?"-0":t}var hu=YI;function qI(e,t){t=zo(t,e);for(var i=0,r=t.length;e!=null&&i<r;)e=e[hu(t[i++])];return i&&i==r?e:void 0}var Rw=qI;function QI(e,t){for(var i=-1,r=t.length,s=e.length;++i<r;)e[s+i]=t[i];return e}var bg=QI,Oy=fr?fr.isConcatSpreadable:void 0;function ZI(e){return ls(e)||mg(e)||!!(Oy&&e&&e[Oy])}var KI=ZI;function Nw(e,t,i,r,s){var n=-1,a=e.length;for(i||(i=KI),s||(s=[]);++n<a;){var o=e[n];t>0&&i(o)?t>1?Nw(o,t-1,i,r,s):bg(s,o):r||(s[s.length]=o)}return s}var JI=Nw;function $I(e){var t=e==null?0:e.length;return t?JI(e,1):[]}var eB=$I;function tB(e){return mL(TL(e,void 0,eB),e+"")}var zw=tB,iB=Bw(Object.getPrototypeOf,Object),wg=iB,rB="[object Object]",sB=Function.prototype,nB=Object.prototype,Fw=sB.toString,aB=nB.hasOwnProperty,oB=Fw.call(Object);function lB(e){if(!Ds(e)||ha(e)!=rB)return!1;var t=wg(e);if(t===null)return!0;var i=aB.call(t,"constructor")&&t.constructor;return typeof i=="function"&&i instanceof i&&Fw.call(i)==oB}var hB=lB;function cB(e,t,i){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),i=i>s?s:i,i<0&&(i+=s),s=t>i?0:i-t>>>0,t>>>=0;for(var n=Array(s);++r<s;)n[r]=e[r+t];return n}var dB=cB;function uB(){this.__data__=new au,this.size=0}var pB=uB;function fB(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}var mB=fB;function gB(e){return this.__data__.get(e)}var vB=gB;function yB(e){return this.__data__.has(e)}var xB=yB,bB=200;function wB(e,t){var i=this.__data__;if(i instanceof au){var r=i.__data__;if(!th||r.length<bB-1)return r.push([e,t]),this.size=++i.size,this;i=this.__data__=new lu(r)}return i.set(e,t),this.size=i.size,this}var _B=wB;function Fo(e){var t=this.__data__=new au(e);this.size=t.size}Fo.prototype.clear=pB;Fo.prototype.delete=mB;Fo.prototype.get=vB;Fo.prototype.has=xB;Fo.prototype.set=_B;var qc=Fo;function SB(e,t){return e&&wh(t,vg(t),e)}var AB=SB;function MB(e,t){return e&&wh(t,yg(t),e)}var EB=MB,Uw=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ly=Uw&&typeof module=="object"&&module&&!module.nodeType&&module,CB=Ly&&Ly.exports===Uw,Iy=CB?Lr.Buffer:void 0,By=Iy?Iy.allocUnsafe:void 0;function TB(e,t){if(t)return e.slice();var i=e.length,r=By?By(i):new e.constructor(i);return e.copy(r),r}var PB=TB;function DB(e,t){for(var i=-1,r=e==null?0:e.length,s=0,n=[];++i<r;){var a=e[i];t(a,i,e)&&(n[s++]=a)}return n}var OB=DB;function LB(){return[]}var kw=LB,IB=Object.prototype,BB=IB.propertyIsEnumerable,Ry=Object.getOwnPropertySymbols,RB=Ry?function(e){return e==null?[]:(e=Object(e),OB(Ry(e),function(t){return BB.call(e,t)}))}:kw,_g=RB;function NB(e,t){return wh(e,_g(e),t)}var zB=NB,FB=Object.getOwnPropertySymbols,UB=FB?function(e){for(var t=[];e;)bg(t,_g(e)),e=wg(e);return t}:kw,jw=UB;function kB(e,t){return wh(e,jw(e),t)}var jB=kB;function HB(e,t,i){var r=t(e);return ls(e)?r:bg(r,i(e))}var Hw=HB;function GB(e){return Hw(e,vg,_g)}var zf=GB;function VB(e){return Hw(e,yg,jw)}var Gw=VB,WB=da(Lr,"DataView"),Ff=WB,XB=da(Lr,"Promise"),Uf=XB,YB=da(Lr,"Set"),kf=YB,Ny="[object Map]",qB="[object Object]",zy="[object Promise]",Fy="[object Set]",Uy="[object WeakMap]",ky="[object DataView]",QB=ca(Ff),ZB=ca(th),KB=ca(Uf),JB=ca(kf),$B=ca(Nf),Rn=ha;(Ff&&Rn(new Ff(new ArrayBuffer(1)))!=ky||th&&Rn(new th)!=Ny||Uf&&Rn(Uf.resolve())!=zy||kf&&Rn(new kf)!=Fy||Nf&&Rn(new Nf)!=Uy)&&(Rn=function(e){var t=ha(e),i=t==qB?e.constructor:void 0,r=i?ca(i):"";if(r)switch(r){case QB:return ky;case ZB:return Ny;case KB:return zy;case JB:return Fy;case $B:return Uy}return t});var ih=Rn,eR=Object.prototype,tR=eR.hasOwnProperty;function iR(e){var t=e.length,i=new e.constructor(t);return t&&typeof e[0]=="string"&&tR.call(e,"index")&&(i.index=e.index,i.input=e.input),i}var rR=iR,sR=Lr.Uint8Array,gd=sR;function nR(e){var t=new e.constructor(e.byteLength);return new gd(t).set(new gd(e)),t}var Sg=nR;function aR(e,t){var i=t?Sg(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)}var oR=aR,lR=/\w*$/;function hR(e){var t=new e.constructor(e.source,lR.exec(e));return t.lastIndex=e.lastIndex,t}var cR=hR,jy=fr?fr.prototype:void 0,Hy=jy?jy.valueOf:void 0;function dR(e){return Hy?Object(Hy.call(e)):{}}var uR=dR;function pR(e,t){var i=t?Sg(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)}var fR=pR,mR="[object Boolean]",gR="[object Date]",vR="[object Map]",yR="[object Number]",xR="[object RegExp]",bR="[object Set]",wR="[object String]",_R="[object Symbol]",SR="[object ArrayBuffer]",AR="[object DataView]",MR="[object Float32Array]",ER="[object Float64Array]",CR="[object Int8Array]",TR="[object Int16Array]",PR="[object Int32Array]",DR="[object Uint8Array]",OR="[object Uint8ClampedArray]",LR="[object Uint16Array]",IR="[object Uint32Array]";function BR(e,t,i){var r=e.constructor;switch(t){case SR:return Sg(e);case mR:case gR:return new r(+e);case AR:return oR(e,i);case MR:case ER:case CR:case TR:case PR:case DR:case OR:case LR:case IR:return fR(e,i);case vR:return new r;case yR:case wR:return new r(e);case xR:return cR(e);case bR:return new r;case _R:return uR(e)}}var RR=BR;function NR(e){return typeof e.constructor=="function"&&!fg(e)?$O(wg(e)):{}}var zR=NR,FR="[object Map]";function UR(e){return Ds(e)&&ih(e)==FR}var kR=UR,Gy=_o&&_o.isMap,jR=Gy?gg(Gy):kR,HR=jR,GR="[object Set]";function VR(e){return Ds(e)&&ih(e)==GR}var WR=VR,Vy=_o&&_o.isSet,XR=Vy?gg(Vy):WR,YR=XR,qR=1,QR=2,ZR=4,Vw="[object Arguments]",KR="[object Array]",JR="[object Boolean]",$R="[object Date]",e5="[object Error]",Ww="[object Function]",t5="[object GeneratorFunction]",i5="[object Map]",r5="[object Number]",Xw="[object Object]",s5="[object RegExp]",n5="[object Set]",a5="[object String]",o5="[object Symbol]",l5="[object WeakMap]",h5="[object ArrayBuffer]",c5="[object DataView]",d5="[object Float32Array]",u5="[object Float64Array]",p5="[object Int8Array]",f5="[object Int16Array]",m5="[object Int32Array]",g5="[object Uint8Array]",v5="[object Uint8ClampedArray]",y5="[object Uint16Array]",x5="[object Uint32Array]",wt={};wt[Vw]=wt[KR]=wt[h5]=wt[c5]=wt[JR]=wt[$R]=wt[d5]=wt[u5]=wt[p5]=wt[f5]=wt[m5]=wt[i5]=wt[r5]=wt[Xw]=wt[s5]=wt[n5]=wt[a5]=wt[o5]=wt[g5]=wt[v5]=wt[y5]=wt[x5]=!0;wt[e5]=wt[Ww]=wt[l5]=!1;function Qc(e,t,i,r,s,n){var a,o=t&qR,l=t&QR,h=t&ZR;if(i&&(a=s?i(e,r,s,n):i(e)),a!==void 0)return a;if(!hs(e))return e;var u=ls(e);if(u){if(a=rR(e),!o)return rL(e,a)}else{var c=ih(e),d=c==Ww||c==t5;if(md(e))return PB(e,o);if(c==Xw||c==Vw||d&&!s){if(a=l||d?{}:zR(e),!o)return l?jB(e,EB(a,e)):zB(e,AB(a,e))}else{if(!wt[c])return s?e:{};a=RR(e,c,o)}}n||(n=new qc);var p=n.get(e);if(p)return p;n.set(e,a),YR(e)?e.forEach(function(f){a.add(Qc(f,t,i,f,e,n))}):HR(e)&&e.forEach(function(f,v){a.set(v,Qc(f,t,i,v,e,n))});var m=h?l?Gw:zf:l?yg:vg,g=u?void 0:m(e);return vL(g||e,function(f,v){g&&(v=f,f=e[v]),ug(a,v,Qc(f,t,i,v,e,n))}),a}var Yw=Qc,b5=1,w5=4;function _5(e){return Yw(e,b5|w5)}var Ag=_5,S5="__lodash_hash_undefined__";function A5(e){return this.__data__.set(e,S5),this}var M5=A5;function E5(e){return this.__data__.has(e)}var C5=E5;function vd(e){var t=-1,i=e==null?0:e.length;for(this.__data__=new lu;++t<i;)this.add(e[t])}vd.prototype.add=vd.prototype.push=M5;vd.prototype.has=C5;var T5=vd;function P5(e,t){for(var i=-1,r=e==null?0:e.length;++i<r;)if(t(e[i],i,e))return!0;return!1}var D5=P5;function O5(e,t){return e.has(t)}var L5=O5,I5=1,B5=2;function R5(e,t,i,r,s,n){var a=i&I5,o=e.length,l=t.length;if(o!=l&&!(a&&l>o))return!1;var h=n.get(e),u=n.get(t);if(h&&u)return h==t&&u==e;var c=-1,d=!0,p=i&B5?new T5:void 0;for(n.set(e,t),n.set(t,e);++c<o;){var m=e[c],g=t[c];if(r)var f=a?r(g,m,c,t,e,n):r(m,g,c,e,t,n);if(f!==void 0){if(f)continue;d=!1;break}if(p){if(!D5(t,function(v,y){if(!L5(p,y)&&(m===v||s(m,v,i,r,n)))return p.push(y)})){d=!1;break}}else if(!(m===g||s(m,g,i,r,n))){d=!1;break}}return n.delete(e),n.delete(t),d}var qw=R5;function N5(e){var t=-1,i=Array(e.size);return e.forEach(function(r,s){i[++t]=[s,r]}),i}var z5=N5;function F5(e){var t=-1,i=Array(e.size);return e.forEach(function(r){i[++t]=r}),i}var U5=F5,k5=1,j5=2,H5="[object Boolean]",G5="[object Date]",V5="[object Error]",W5="[object Map]",X5="[object Number]",Y5="[object RegExp]",q5="[object Set]",Q5="[object String]",Z5="[object Symbol]",K5="[object ArrayBuffer]",J5="[object DataView]",Wy=fr?fr.prototype:void 0,wp=Wy?Wy.valueOf:void 0;function $5(e,t,i,r,s,n,a){switch(i){case J5:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case K5:return!(e.byteLength!=t.byteLength||!n(new gd(e),new gd(t)));case H5:case G5:case X5:return dg(+e,+t);case V5:return e.name==t.name&&e.message==t.message;case Y5:case Q5:return e==t+"";case W5:var o=z5;case q5:var l=r&k5;if(o||(o=U5),e.size!=t.size&&!l)return!1;var h=a.get(e);if(h)return h==t;r|=j5,a.set(e,t);var u=qw(o(e),o(t),r,s,n,a);return a.delete(e),u;case Z5:if(wp)return wp.call(e)==wp.call(t)}return!1}var eN=$5,tN=1,iN=Object.prototype,rN=iN.hasOwnProperty;function sN(e,t,i,r,s,n){var a=i&tN,o=zf(e),l=o.length,h=zf(t),u=h.length;if(l!=u&&!a)return!1;for(var c=l;c--;){var d=o[c];if(!(a?d in t:rN.call(t,d)))return!1}var p=n.get(e),m=n.get(t);if(p&&m)return p==t&&m==e;var g=!0;n.set(e,t),n.set(t,e);for(var f=a;++c<l;){d=o[c];var v=e[d],y=t[d];if(r)var b=a?r(y,v,d,t,e,n):r(v,y,d,e,t,n);if(!(b===void 0?v===y||s(v,y,i,r,n):b)){g=!1;break}f||(f=d=="constructor")}if(g&&!f){var x=e.constructor,w=t.constructor;x!=w&&"constructor"in e&&"constructor"in t&&!(typeof x=="function"&&x instanceof x&&typeof w=="function"&&w instanceof w)&&(g=!1)}return n.delete(e),n.delete(t),g}var nN=sN,aN=1,Xy="[object Arguments]",Yy="[object Array]",uc="[object Object]",oN=Object.prototype,qy=oN.hasOwnProperty;function lN(e,t,i,r,s,n){var a=ls(e),o=ls(t),l=a?Yy:ih(e),h=o?Yy:ih(t);l=l==Xy?uc:l,h=h==Xy?uc:h;var u=l==uc,c=h==uc,d=l==h;if(d&&md(e)){if(!md(t))return!1;a=!0,u=!1}if(d&&!u)return n||(n=new qc),a||Lw(e)?qw(e,t,i,r,s,n):eN(e,t,l,i,r,s,n);if(!(i&aN)){var p=u&&qy.call(e,"__wrapped__"),m=c&&qy.call(t,"__wrapped__");if(p||m){var g=p?e.value():e,f=m?t.value():t;return n||(n=new qc),s(g,f,i,r,n)}}return d?(n||(n=new qc),nN(e,t,i,r,s,n)):!1}var hN=lN;function Qw(e,t,i,r,s){return e===t?!0:e==null||t==null||!Ds(e)&&!Ds(t)?e!==e&&t!==t:hN(e,t,i,r,Qw,s)}var cN=Qw;function dN(e,t){return e!=null&&t in Object(e)}var uN=dN;function pN(e,t,i){t=zo(t,e);for(var r=-1,s=t.length,n=!1;++r<s;){var a=hu(t[r]);if(!(n=e!=null&&i(e,a)))break;e=e[a]}return n||++r!=s?n:(s=e==null?0:e.length,!!s&&pg(s)&&cg(a,s)&&(ls(e)||mg(e)))}var fN=pN;function mN(e,t){return e!=null&&fN(e,t,uN)}var gN=mN,vN=function(){return Lr.Date.now()},_p=vN,yN="Expected a function",xN=Math.max,bN=Math.min;function wN(e,t,i){var r,s,n,a,o,l,h=0,u=!1,c=!1,d=!0;if(typeof e!="function")throw new TypeError(yN);t=_y(t)||0,hs(i)&&(u=!!i.leading,c="maxWait"in i,n=c?xN(_y(i.maxWait)||0,t):n,d="trailing"in i?!!i.trailing:d);function p(_){var A=r,S=s;return r=s=void 0,h=_,a=e.apply(S,A),a}function m(_){return h=_,o=setTimeout(v,t),u?p(_):a}function g(_){var A=_-l,S=_-h,E=t-A;return c?bN(E,n-S):E}function f(_){var A=_-l,S=_-h;return l===void 0||A>=t||A<0||c&&S>=n}function v(){var _=_p();if(f(_))return y(_);o=setTimeout(v,g(_))}function y(_){return o=void 0,d&&r?p(_):(r=s=void 0,a)}function b(){o!==void 0&&clearTimeout(o),h=0,r=l=s=o=void 0}function x(){return o===void 0?a:y(_p())}function w(){var _=_p(),A=f(_);if(r=arguments,s=this,l=_,A){if(o===void 0)return m(l);if(c)return clearTimeout(o),o=setTimeout(v,t),p(l)}return o===void 0&&(o=setTimeout(v,t)),a}return w.cancel=b,w.flush=x,w}var Zw=wN;function _N(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var SN=_N;function AN(e,t){return t.length<2?e:Rw(e,dB(t,0,-1))}var MN=AN;function EN(e,t){return cN(e,t)}var Mg=EN;function CN(e,t){return t=zo(t,e),e=MN(e,t),e==null||delete e[hu(SN(t))]}var TN=CN;function PN(e){return hB(e)?void 0:e}var DN=PN,ON=1,LN=2,IN=4,BN=zw(function(e,t){var i={};if(e==null)return i;var r=!1;t=Aw(t,function(n){return n=zo(n,e),r||(r=n.length>1),n}),wh(e,Gw(e),i),r&&(i=Yw(i,ON|LN|IN,DN));for(var s=t.length;s--;)TN(i,t[s]);return i}),jf=BN;function RN(e,t,i,r){if(!hs(e))return e;t=zo(t,e);for(var s=-1,n=t.length,a=n-1,o=e;o!=null&&++s<n;){var l=hu(t[s]),h=i;if(l==="__proto__"||l==="constructor"||l==="prototype")return e;if(s!=a){var u=o[l];h=r?r(u,l,o):void 0,h===void 0&&(h=hs(u)?u:cg(t[s+1])?[]:{})}ug(o,l,h),o=o[l]}return e}var NN=RN;function zN(e,t,i){for(var r=-1,s=t.length,n={};++r<s;){var a=t[r],o=Rw(e,a);i(o,a)&&NN(n,zo(a,e),o)}return n}var FN=zN;function UN(e,t){return FN(e,t,function(i,r){return gN(e,r)})}var kN=UN,jN=zw(function(e,t){return e==null?{}:kN(e,t)}),yd=jN,Kw,HN=new Promise(e=>{Kw=e}),Qy=!1;async function GN(){if(Qy)return;let e=await import("./physics.js");await e.init(),Kw(e),Qy=!0}var Yt=class{modifyById(e,t){let i=this;if(i[e]===void 0)throw new Error("not expected");{let r={...i,[e]:t};return Object.setPrototypeOf(r,Yt.prototype),r}}add(e,t){return this.runOp({type:1,id:e,data:t})?.data??this}runOp(e){let t=this;if(e.type===1){let i=t[e.id],r;i===void 0?r={type:2,id:e.id}:r={type:1,id:e.id,data:i};let{id:s,data:n}=e,a={...t,[s]:n};return Object.setPrototypeOf(a,Yt.prototype),{data:a,actual:e,reverse:r}}else if(e.type===2){let{id:i}=e,r=t[i];if(r===void 0)return null;{let s={...t};return Object.setPrototypeOf(s,Yt.prototype),delete s[i],{data:s,actual:e,reverse:{type:1,id:i,data:r}}}}return null}};function Eg(e){if(e.deepFreeze!==void 0){e.deepFreeze(e);return}let t=Object.getOwnPropertyNames(e);for(let i of t){let r=e[i];r&&typeof r=="object"&&Eg(r)}return Object.freeze(e)}function VN(e,t){let i=0;for(;i<e.length&&i<t.length;){if(e[i]<t[i])return-1;if(e[i]>t[i])return 1;i+=1}return i!==t.length?-1:i!==e.length?1:0}var Jw=class extends Error{};function Sp(e){let t={...e};return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),t}function nn(e,t,i){if(e===void 0?t===void 0?(e=0,t=10):e=t-10:t===void 0&&(t=e+10),e>t){let n=e;e=t,t=n}let r=[],s=1/(i+1);for(let n=0;n<i;n++){let a=e+(t-e)*(n+.75+Math.random()*.5)*s;r.push(a)}return r}function Cg(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array}function WN(){return typeof process<"u"}function $w(e,t){for(let i of e)t(i.id,i.data)!==!0&&$w(i.children,t)}function e_(e,t){if(t(e.id,e.data)!==!0)for(let i of e.children)e_(i,t)}var Ri=class extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,Ri.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Eg(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let i of e.children)this.fillCaches0(i,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let i=this.parent(e);if(i===t)return!0;e=i}return!1}isDescendantOf(e,t){for(;e;){let i=this.parent(e);if(i===t)return!0;e=i}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let i=this.get(e);i&&e_(i,t)}}traverse(e){$w(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),r=this.childrenArray(i),s=r.findIndex(a=>a.id===e);if(s<0)throw new Error("not expected");let n=r[s];return r=[...r],r[s]={...n,data:t},this.modifyArrayBy(i,r)}}modifyArrayBy(e,t){let i=e,r=t;for(;i!==null;){let n=r,a=i;if(i=this.parent(i),i===void 0)throw new Error;r=this.childrenArray(i);let o=r.findIndex(l=>l.id===a);if(o<0)throw new Error;r=[...r],r[o]={...r[o],children:n}}Object.setPrototypeOf(r,Ri.prototype);let s=r;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let i of t)if(this.checkDuplicatedIdRec(i))return!0;return!1}addOp(e){let{parent:t,fi:i,id:r,data:s,children:n}=e;if(t!==null&&this.get(t)===void 0||this.checkDuplicatedIdRec(e))return null;{let a=t,o=this.childrenArray(a),l={fi:i,id:r,data:s,children:n};return o=[...o,l],o.sort((h,u)=>h.fi-u.fi),e.localIndex=o.indexOf(l),{data:this.modifyArrayBy(a,o),actual:e,reverse:{type:8,id:r}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let i=this.parent(t);if(i===void 0)return null;let r=this.childrenArray(i),s=r.findIndex(a=>a.id===t);e.localIndex=s,r=[...r];let n=r.splice(s,1)[0];return{data:this.modifyArrayBy(i,r),actual:e,reverse:{type:7,...n,parent:i}}}}moveOp(e){let{parent:t,fi:i,id:r}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:r});if(t!==null){let c=t;for(;c!==null;){if(c===void 0)throw new Error;if(c===r)throw new Jw("cyclic tree");c=this.parent(c)}}let s=this.parent(r);if(s===void 0)return null;let n=s,a=this.childrenArray(s),o=a.findIndex(c=>c.id===r);a=[...a];let l=a.splice(o,1)[0],h=this.modifyArrayBy(s,a);s=t,a=h.childrenArray(s);let u=l.fi;return l={...l,fi:i},a=[...a,l],a.sort((c,d)=>c.fi-d.fi),e.localIndex=a.indexOf(l),h=h.modifyArrayBy(s,a),{data:h,actual:e,reverse:{type:9,parent:n,fi:u,id:r}}}previous(e,t){if(t===null){let r=this.childrenArray(e);return r.length===0?null:r[r.length-1].id}let i=null;for(let r of this.childrenArray(e)){if(r.id===t)return i;i=r.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let i=this.childrenArray(t),r=i.findIndex(s=>s.id===e)+1;if(r<i.length)return i[r].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let i=this.childrenArray(t),r=i.findIndex(s=>s.id===e)-1;return r>=0?this.traverseSortPrevious(i[r].id):t}}getAllSorted(e){let t=[];for(let i of e){let r=this.getWithSortKey(i.id);r!==void 0&&t.push({...i,...r})}t.sort((i,r)=>VN(i.sortKey,r.sortKey));for(let i of t)delete i.sortKey;return t}getWithSortKey(e){var t=e;let i=[],r=this.get(t),s=r;if(r!==void 0){for(;t;)i.splice(0,0,r.fi),t=this.parent(t),t!==null&&(r=this.get(t));return{...s,sortKey:i}}}insertBeforeHelper(e,t,i){return this.insertAfterHelper(e,this.previous(e,t),i)}insertAfterHelper(e,t,i){let r=this.childrenArray(e);if(t===null){if(r.length===0)return nn(0,i,i);{let s=r[0].fi;return nn(s-i,s,i)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let n=r.find(a=>a.fi>s.fi);if(n===void 0){let a=r[r.length-1].fi;return nn(a,a+i,i)}else return nn(s.fi,n.fi,i)}}},xd;(e=>{function t(i,r){if(r.type!==0)return null;if(Array.isArray(i)){let s=r.props,n={},a=[...i],o=!1;if(s)for(let l of Object.keys(s)){let h=parseInt(l);if(isNaN(h))throw new Error("wrong index");n[l]=a[h],a[h]=s[l],o=!0}return o?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let s=r.props,n={},a={...i},o=!1;if(s)for(let l of Object.keys(s)){n[l]=a[l];let h=s[l];h===void 0?delete a[l]:a[l]=h,o=!0}return o?{data:a,actual:r,reverse:{type:0,props:n}}:null}}e.runOp=t})(xd||(xd={}));var st=class extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Eg(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,r=i.findIndex(n=>n.id===e);if(r<0)throw new Error("not expected");let s=i[r];return i=[...i],i[r]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,st.prototype);let t=e;return WN()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:i,data:r}=e,s=this,n={fi:t,id:i,data:r};return s=[...s,n],s.sort((a,o)=>a.fi-o.fi),e.localIndex=s.indexOf(n),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:i}}}deleteOp(e){let{id:t}=e,i=this,r=i.findIndex(n=>n.id===t);if(r===-1)return null;e.localIndex=r,i=[...i];let s=i.splice(r,1)[0];return{data:this.modifyArrayBy(i),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:i}=e,r=this;r=[...r];let s=r.findIndex(o=>o.id===i);if(s===-1)return null;let n=r[s].fi,a={...r[s],fi:t};return r[s]=a,r.sort((o,l)=>o.fi-l.fi),e.localIndex=r.indexOf(a),{data:this.modifyArrayBy(r),actual:e,reverse:{type:6,fi:n,id:i}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let i of this){if(i.id===e)return t;t=i.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let i=this;if(e===null){if(i.length===0)return nn(0,t,t);{let r=i[0].fi;return nn(r-t,r,t)}}else{let r=this.get(e);if(r===void 0)throw new Error("illegal args");let s=i.find(n=>n.fi>r.fi);if(s===void 0){let n=i[i.length-1].fi;return nn(n,n+t,t)}else return nn(r.fi,s.fi,t)}}};function So(e){return e&&typeof e=="object"&&e instanceof ni}var ni=class{unusedFunOverridesTable(e){}runOp(e){let t=[],i=this,r=0,s={};for(;r<e.path.length;){if(t.push(i),i=i===void 0?void 0:i[e.path[r]],i!==void 0&&!So(i))return null;r+=1}i=i?Sp(i):new ni;for(let[o,l]of Object.entries(e.props)){let h=i[o];s[o]=h,l===void 0?delete i[o]:i[o]=l}for(;r>0;){if(Object.keys(i).length===0){let o=t[r-1];o&&(i=Sp(o),delete i[e.path[r-1]])}else{let o=t[r-1];if(o){let l=Sp(o);l[e.path[r-1]]=i,i=l}else{let l=new ni;l[e.path[r-1]]=i,i=l}}r-=1}let n=Object.setPrototypeOf(i,ni.prototype),a={...e,props:s};return{data:n,actual:e,reverse:a}}},Jn;(e=>{function t(s,n){return rh(s,n)??s}e.apply=t;function i(s,n){return Pg(s,n)}e.merge=i;function r(s,n){let a=0,o=n.path,l=s;for(;a<o.length&&l!==void 0;){if(l=ss.zoomOnce(l,o[a]),l===void 0)return n;if(!So(l))return;a+=1}if(l===void 0)return n;if(So(l))if(n.type===0){let h={...n.props};for(let u of Object.keys(l))delete h[u];return{...n,props:h}}else if(n.type===1||n.type===4||n.type===7){let h=Tg([n],l);return h?(console.log(h),h):n}else return n}e.filterOp=r})(Jn||(Jn={}));function Tg(e,t){if(t===void 0)return;let i=!1,r=e.map(s=>{let n=s.id,a=rh(s.data,t[n]);if(i=i||a!==void 0,a===void 0&&(a=s.data),s.children){let o=Tg(s.children,t);return o!==void 0?i=!0:o=s.children,{...s,id:n,data:a,children:o}}else return{...s,id:n,data:a}});if(i)return r}function XN(e,t){if(t===void 0)return;let i=!1,r=e.map(s=>{let n=s.id,a=rh(s.data,t[n]);return i=i||a!==void 0,a===void 0&&(a=s.data),{...s,id:n,data:a}});if(i)return Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r}function rh(e,t){if(!So(t))return t;if(e instanceof Ri){let i=Tg(e,t);return i!==void 0&&Object.setPrototypeOf(i,Object.getPrototypeOf(e)),i}else{if(e instanceof st)return XN(e,t);if(Array.isArray(e)){let i=!1,r=e.map((s,n)=>{let a=rh(s,t[n]);return i=i||a!==void 0,a===void 0&&(a=s),a});return i?(Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r):void 0}else{if(e instanceof ni)return Pg(e,t);if(e&&typeof e=="object"){let i={},r=!1;for(let[s,n]of Object.entries(e)){let a=rh(n,t[s]);r=r||a!==void 0,a===void 0&&(a=n),i[s]=a}return r?(Object.setPrototypeOf(i,Object.getPrototypeOf(e)),i):void 0}}}}function Pg(e,t){if(e===void 0)return t;if(t===void 0)return e;if(!So(t))return t;if(!So(e))return Jn.apply(e,t);let i=new Set;for(let s of Object.keys(e))i.add(s);for(let s of Object.keys(t))i.add(s);let r=new ni;for(let s of i){let n=Pg(e===void 0?void 0:e[s],t===void 0?void 0:t[s]);r[s]=n}return r}function YN(e,t){let i={cur:[],result:[],len:0};return e=sh(e,t,i)??e,[e,i.result]}function bd(e,t){return e===null?null:(e.cur[e.len]=t,e.len+=1,e)}function wd(e){e&&(e.len-=1)}function qN(e){if(e===null)return null;e.result.push(e.cur.slice(0,e.len))}function t_(e,t,i){let r=!1,s=e.map(n=>{let a=n.id,o=t[a];if(o!==void 0&&typeof o=="string"&&(r=!0,a=o,i!==null))throw new Error("not supported");let l=sh(n.data,t,bd(i,a));wd(i),r=r||l!==void 0,l===void 0&&(l=n.data);let h=t_(n.children,t,i);return h!==void 0?r=!0:h=n.children,{...n,id:a,data:l,children:h}});if(r)return s}function QN(e,t,i){let r=!1,s=e.map(n=>{let a=n.id,o=t[a];if(o!==void 0&&typeof o=="string"&&(r=!0,a=o,i!==null))throw new Error("not supported");let l=sh(n.data,t,bd(i,a));return wd(i),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(s,Object.getPrototypeOf(e)),s}function sh(e,t,i){if(e instanceof Ri){let r=t_(e,t,i);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r}else{if(e instanceof st)return QN(e,t,i);if(Array.isArray(e)){let r=!1,s=e.map((n,a)=>{let o=sh(n,t,bd(i,a));return wd(i),r=r||o!==void 0,o===void 0&&(o=n),o});return r?(Object.setPrototypeOf(s,Object.getPrototypeOf(e)),s):void 0}else if(e&&typeof e=="object"&&!Cg(e)){let r={},s=!1;for(let[n,a]of Object.entries(e))if(n!=="name"&&n!=="text"){let o=t[n];if(typeof o=="string"){if(i!==null)throw new Error("not supported");s=!0,n=o}let l=sh(a,t,bd(i,n));wd(i),s=s||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return s?(Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r):void 0}else if(typeof e=="string"){let r=t[e];if(r!==void 0){if(e.length!==36)throw new Error("for now you should only call this method when the key is a uuid");qN(i)}return r}else return}}var Hf;(e=>{function t(i,r){let s=ss.zoom(r,i.path);if(typeof s=="object"){let n={};for(let a of Object.keys(i.props))n[a]=s[a];return{...i,props:n}}else return{...i,props:{}}}e.replaceProps=t})(Hf||(Hf={}));var Yi;(e=>{function t(l,h){return{...l,path:l.path.slice(h)}}e.drop=t;function i(l,h){return r(l,h)?.data??l}e.applySimple=i;function r(l,h){let u=h.path;for(var c=[];;){let d;if(l instanceof ni&&h.type===0&&(d=l.runOp({...h,path:u.slice(c.length)}),d===null&&(d=void 0)),c.length===u.length&&(l instanceof Ri||l instanceof st||l instanceof Yt?d=l.runOp(h):d=xd.runOp(l,h)),d!==void 0)if(d!==null){let g=d.data;for(let f=c.length-1;f>=0;f--){let v=u[f],y=c[f];if(y instanceof Ri){if(typeof v=="number")throw new Error("illegal arg");g=y.modifyById(v,g)}else if(y instanceof st){if(typeof v=="number")throw new Error("illegal arg");g=y.modifyById(v,g)}else if(y instanceof Yt){if(typeof v=="number")throw new Error("illegal arg");g=y.modifyById(v,g)}else if(y instanceof ni){let b={...y,[v]:g};g=Object.setPrototypeOf(b,ni.prototype)}else if(typeof y=="object")if(Array.isArray(y)){if(typeof v=="string"&&(v=parseInt(v),isNaN(v)))throw new Error("Invalid path");let b=g;g=[...y],g[v]=b}else g={...y,[v]:g};else return null}return{data:g,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let p=u[c.length],m;if(l instanceof Ri){if(typeof p=="number")throw new Error("");m=l.get(p)?.data}else if(l instanceof st){if(typeof p=="number")throw new Error("");m=l.get(p)?.data}else l!==null&&(m=l[p]);if(m!==void 0)c.push(l),l=m;else return null}}e.apply=r;function s(l,h){for(let u=0;u<l.length&&u<h.length;u++)if(l[u]!==h[u])return!0;return!1}e.pathDisjoint=s;function n(l,h){if(l.length!==h.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==h[u])return!1;return!0}e.pathEq=n;function a(l,h){return s(l.path,h.path)}e.commutative=a;function o(l,h){return l.type===0&&h.type===0&&n(l.path,h.path)?Object.keys(l.props).every(u=>h.props[u]!==void 0):!1}e.subsumed=o})(Yi||(Yi={}));var Zy;(e=>{function t(){return[]}e.empty=t;function i(h,u){let c=[];for(let d of h){let[p,...m]=d.path;p===u&&c.push({...d,path:m})}return c}e.removePrefix=i;function r(h,u){return h.map(c=>({...c,path:[u,...c.path]}))}e.addPrefix=r;function s(h,u){return[...h,...u]}e.concat=s;function n(h,u){return[...h.filter(c=>!u.some(d=>Yi.subsumed(c,d))),...u]}e.compress=n;function a(h,u){return h.every(c=>u.every(d=>Yi.commutative(c,d)))}e.commutative=a;function o(h,u){for(let c of u){let d=l(h,c);d!==null&&(h=d.data)}return h}e.applyAll=o;function l(h,u){var c=h;let d=[],p=[];for(let m of u)try{if(m.type===3){let g=ss.zoom(c,[...m.path,m.id]),f=Yi.apply(c,{...m,type:2});if(f!==null){c=f.data;let[v,y]=YN(c,{[m.id]:g});c=v;for(let b of y){let x=b[b.length-1];b.splice(b.length-1,1),d.push({type:0,path:b,props:{[x]:g}}),p.push({type:0,path:b,props:{[x]:m.id}})}p.push(f.reverse),d.push(f.actual)}}else{let g=Yi.apply(c,m);g!==null&&(d.push(g.actual),c=g.data,p.push(g.reverse))}}catch(g){if(g instanceof Jw)return null;throw g}return{data:c,actual:d,reverse:p.reverse()}}e.apply=l})(Zy||(Zy={}));var i_=Symbol(),ZN=Symbol(),cu=Symbol(),_h=class{reportOp(e,t,i=[]){let r=this;if(t===null)return;r._current=t.data;let s=i;for(;!(r instanceof s_);){let n=r._path,a=r._current;if(n!==""&&s.splice(0,0,n),r=r._parent,r===null)return;r.update(n,a)}r.push(s,e,t.actual,t.reverse)}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let i=t[cu];i&&i(),delete this._children[e]}}}},KN=class extends _h{constructor(e,t,i){super(),this._parent=e,this._path=t,this._current=i}update(e,t){if(Array.isArray(this._current)){if(typeof e=="string"&&(e=parseInt(e),isNaN(e)))throw new Error("Invalid path");this._current=[...this._current],this._current[e]=t}else this._current={...this._current,[e]:t}}runOp(e){this.reportOp(e,xd.runOp(this._current,e),e.path)}},JN=class extends _h{constructor(e,t,i){super(),this._parent=e,this._path=t,this._current=i}update(e,t){this._current={...this._current,[e]:t},Object.setPrototypeOf(this._current,Yt.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},r_={get(e,t){if(t===cu)return()=>{e._parent=null};if(t===i_)return e._current;if(t===ZN)return e;let{_current:i,_children:r}=e;if(t==="push"&&Array.isArray(i))throw new Error("not supported to expand array");let s=r===void 0?void 0:r[t];if(s!==void 0)return s;let n=i[t],a=du(e,t,n);return a!==n?(r===void 0&&(r={},e._children=r),r[t]=a,a):n},has(e,t){return t in e._current},ownKeys(e){return Reflect.ownKeys(e._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(e){return Object.getPrototypeOf(e._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(e,t){let i=e._current,r=Reflect.getOwnPropertyDescriptor(i,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:i[t]}}},$N={...r_,set(e,t,i){let r={type:0,props:{[t]:fi(i)??i}};return e.deleteChildren(t),e.runOp(r),!0},deleteProperty(e,t){let i={type:0,props:{[t]:void 0}};return e.deleteChildren(t),e.runOp(i),!0}},ez={...r_,set(e,t,i){return i===void 0?this.deleteProperty(e,t):(e.deleteChildren(t),e.runOp({type:1,id:t,data:i})),!0},deleteProperty(e,t){return e.runOp({type:2,id:t}),!0}},Dg=class extends _h{constructor(e,t,i){super(),this._children={},this._parent=e,this._path=t,this._current=i,this[cu]=()=>{this._parent=null}}unproxy(){return this._current}update(e,t){this._current=this._current.modifyById(e,t)}runOp(e){this.reportOp(e,this._current.runOp(e))}randomId(){return this._current.randomId()}isDescendantOf(e,t){return this._current.isDescendantOf(e,t)}childrenOf(e){return this._current.childrenOf(e)}traverse(e){return this._current.traverse(e)}get(e){return this._current.get(e)}parent(e){return this._current.parent(e)}traverse(e){this._current.traverse((t,i)=>{e(t,this.data(t))})}data(e){let{_current:t,_children:i}=this,r=i===void 0?void 0:i[e];if(r!==void 0)return r;let s=t.get(e)?.data,n=du(this,e,s);return n!==s?(i===void 0&&(i={},this._children=i),i[e]=n,n):s}add(e,t,i,r,s){this.runOp({type:7,parent:e,fi:t,id:i,data:r,children:s})}move(e,t,i){this.runOp({type:9,parent:e,fi:t,id:i})}insertAfter(e,t,i){let r=this._current.insertAfterHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.add(e,r[s],n.id,n.data,n.children)}}insertBefore(e,t,i){let r=this._current.insertBeforeHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.add(e,r[s],n.id,n.data,n.children)}}moveAfter(e,t,i){let r=this._current.insertAfterHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.move(e,r[s],n)}}moveBefore(e,t,i){let r=this._current.insertBeforeHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.move(e,r[s],n)}}delete(e){this.deleteChildren(e),this.runOp({type:8,id:e})}sortNext(e){return this._current.sortNext(e)}sortPrevious(e){return this._current.sortPrevious(e)}getAllSorted(e){return this._current.getAllSorted(e)}},Og=class extends _h{constructor(e,t,i){super(),this._children={},this._parent=e,this._path=t,this._current=i,this[cu]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(e){let t=this.length;for(let i=0;i<t;i++){let r=this._current[i].id,s=this._current[i].fi;e(this.data(this._current[i].id),r,s)}}find(e){let t=this.length;for(let i=0;i<t;i++){let r=this._current[i].id;if(e(this.data(r),r))return this.get(r)}}update(e,t){this._current=this._current.modifyById(e,t)}randomId(){return this._current.randomId()}get(e){return{...this._current.get(e),data:this.data(e)}}data(e){let{_current:t,_children:i}=this,r=i===void 0?void 0:i[e];if(r!==void 0)return r;let s=t.get(e)?.data,n=du(this,e,s);return n!==s?(i===void 0&&(i={},this._children=i),i[e]=n,n):s}runOp(e){this.reportOp(e,this._current.runOp(e))}add(e,t,i){this.runOp({type:4,fi:e,id:t,data:i})}move(e,t){this.runOp({type:6,fi:e,id:t})}insertAfter(e,t){let i=this._current.insertAfterHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.add(i[r],s.id,s.data)}}insertBefore(e,t){let i=this._current.insertBeforeHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.add(i[r],s.id,s.data)}}moveAfter(e,t){let i=this._current.insertAfterHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.move(i[r],s)}}moveBefore(e,t){let i=this._current.insertBeforeHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.move(i[r],s)}}delete(e){this.deleteChildren(e),this.runOp({type:5,id:e})}};function Ap(e,t,i){if(e.length>0){let r=e[e.length-1];if(r.type===0&&t.type===0&&ss.equal(r.path,i)){Object.assign(r.props,t.props);return}}e.push({...t,path:i})}var s_=class extends _h{constructor(e){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=e}update(e,t){if(e!=="")throw new Error("");this._current=t}push(e,t,i,r){Ap(this.ts,t,e),Ap(this.actual,i,e),Ap(this.reverse,r,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function du(e,t,i){return i instanceof Ri?new Dg(e,t,i):i instanceof st?new Og(e,t,i):i instanceof Yt?new Proxy(new JN(e,t,i),ez):i!==null&&typeof i=="object"?Cg(i)?i:new Proxy(new KN(e,t,i),$N):i}function n_(e){let t=new s_(e);return[du(t,"",e),t]}function _d(e,t){let[i,r]=n_(e);return t(i),r.result()}function fi(e){return e instanceof Dg||e instanceof Og?e._current:e!==null&&typeof e=="object"?e[i_]:e}var ss;(e=>{function t(n,a){if(a.length===n.length)for(var o=0;o<n.length;){if(n[o]!==a[o])return!1;o+=1}else return!1;return!0}e.equal=t;function i(n,a,o){let l=s(o,n);if(l!==void 0&&typeof l=="object"&&l!==null){let h={...a};return Object.keys(l).forEach(u=>{delete h[u]}),h}else return a}e.removeOverridden=i;function r(n,a){if((n instanceof Ri||n instanceof Dg)&&typeof a=="string"||(n instanceof st||n instanceof Og)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n)||typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}e.zoomOnce=r;function s(n,a,o=0){for(;o<a.length&&n!==void 0;)n=r(n,a[o]),o+=1;return n}e.zoom=s})(ss||(ss={}));function tz(e,t){let i=[];if(t.length===e.length)for(var r=0;r<e.length;){if(t[r]==="*")i.push(e[r]);else if(e[r]!==t[r])return null;r+=1}else return null;return i}function Vn(e,t){let i=[];if(t.length<=e.length)for(var r=0;r<t.length;){if(t[r]==="*")i.push(e[r]);else if(e[r]!==t[r])return null;r+=1}else return null;return i}var a_=class{},Ky=class extends a_{constructor(e){super(),this.id=e}},Jy=class extends a_{constructor(e){super(),this.data=e}},Gf;try{Gf=new TextDecoder}catch{}var Me,un,Y=0,o_=[],Vf=o_,Wf=0,Oi={},ct,an,sr=0,Zr=0,ji,Ts,Ci=[],pt,$y={useRecords:!1,mapsAsObjects:!0},l_=class{},h_=new l_;h_.name="MessagePack 0xC1";var Ao=!1,Sd=class{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0)),Object.assign(this,e)}unpack(e,t){if(Me)return m_(()=>(Yf(),this?this.unpack(e,t):Sd.prototype.unpack.call($y,e,t)));un=t>-1?t:e.length,Y=0,Wf=0,Zr=0,an=null,Vf=o_,ji=null,Me=e;try{pt=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(i){throw Me=null,e instanceof Uint8Array?i:new Error("Source must be a Uint8Array or Buffer but was a "+(e&&typeof e=="object"?e.constructor.name:typeof e))}if(this instanceof Sd){if(Oi=this,this.structures)return ct=this.structures,pc();(!ct||ct.length>0)&&(ct=[])}else Oi=$y,(!ct||ct.length>0)&&(ct=[]);return pc()}unpackMultiple(e,t){let i,r=0;try{Ao=!0;let s=e.length,n=this?this.unpack(e,s):pu.unpack(e,s);if(t){for(t(n);Y<s;)if(r=Y,t(pc())===!1)return}else{for(i=[n];Y<s;)r=Y,i.push(pc());return i}}catch(s){throw s.lastPosition=r,s.values=i,s}finally{Ao=!1,Yf()}}_mergeStructures(e,t){e=e||[];for(let i=0,r=e.length;i<r;i++){let s=e[i];s&&(s.isShared=!0,i>=32&&(s.highByte=i-32>>5))}e.sharedLength=e.length;for(let i in t||[])if(i>=0){let r=e[i],s=t[i];s&&(r&&((e.restoreStructures||(e.restoreStructures=[]))[i]=r),e[i]=s)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function pc(){try{if(!Oi.trusted&&!Ao){let t=ct.sharedLength||0;t<ct.length&&(ct.length=t)}let e=It();if(Y==un)ct.restoreStructures&&e1(),ct=null,Me=null,Ts&&(Ts=null);else if(Y>un){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ao)throw new Error("Data read, but end of buffer not reached");return e}catch(e){throw ct.restoreStructures&&e1(),Yf(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function e1(){for(let e in ct.restoreStructures)ct[e]=ct.restoreStructures[e];ct.restoreStructures=null}function It(){let e=Me[Y++];if(e<160)if(e<128){if(e<64)return e;{let t=ct[e&63]||Oi.getStructures&&c_()[e&63];return t?(t.read||(t.read=Lg(t,e&63)),t.read()):e}}else if(e<144)if(e-=128,Oi.mapsAsObjects){let t={};for(let i=0;i<e;i++)t[u_()]=It();return t}else{let t=new Map;for(let i=0;i<e;i++)t.set(It(),It());return t}else{e-=144;let t=new Array(e);for(let i=0;i<e;i++)t[i]=It();return t}else if(e<192){let t=e-160;if(Zr>=Y)return an.slice(Y-sr,(Y+=t)-sr);if(Zr==0&&un<140){let i=t<16?Ig(t):d_(t);if(i!=null)return i}return Xf(t)}else{let t;switch(e){case 192:return null;case 193:return ji?(t=It(),t>0?ji[1].slice(ji.position1,ji.position1+=t):ji[0].slice(ji.position0,ji.position0-=t)):h_;case 194:return!1;case 195:return!0;case 196:return Mp(Me[Y++]);case 197:return t=pt.getUint16(Y),Y+=2,Mp(t);case 198:return t=pt.getUint32(Y),Y+=4,Mp(t);case 199:return Pn(Me[Y++]);case 200:return t=pt.getUint16(Y),Y+=2,Pn(t);case 201:return t=pt.getUint32(Y),Y+=4,Pn(t);case 202:if(t=pt.getFloat32(Y),Oi.useFloat32>2){let i=Bg[(Me[Y]&127)<<1|Me[Y+1]>>7];return Y+=4,(i*t+(t>0?.5:-.5)>>0)/i}return Y+=4,t;case 203:return t=pt.getFloat64(Y),Y+=8,t;case 204:return Me[Y++];case 205:return t=pt.getUint16(Y),Y+=2,t;case 206:return t=pt.getUint32(Y),Y+=4,t;case 207:return Oi.int64AsNumber?(t=pt.getUint32(Y)*4294967296,t+=pt.getUint32(Y+4)):t=pt.getBigUint64(Y),Y+=8,t;case 208:return pt.getInt8(Y++);case 209:return t=pt.getInt16(Y),Y+=2,t;case 210:return t=pt.getInt32(Y),Y+=4,t;case 211:return Oi.int64AsNumber?(t=pt.getInt32(Y)*4294967296,t+=pt.getUint32(Y+4)):t=pt.getBigInt64(Y),Y+=8,t;case 212:if(t=Me[Y++],t==114)return n1(Me[Y++]&63);{let i=Ci[t];if(i)return i.read?(Y++,i.read(It())):i.noBuffer?(Y++,i()):i(Me.subarray(Y,++Y));throw new Error("Unknown extension "+t)}case 213:return t=Me[Y],t==114?(Y++,n1(Me[Y++]&63,Me[Y++])):Pn(2);case 214:return Pn(4);case 215:return Pn(8);case 216:return Pn(16);case 217:return t=Me[Y++],Zr>=Y?an.slice(Y-sr,(Y+=t)-sr):rz(t);case 218:return t=pt.getUint16(Y),Y+=2,Zr>=Y?an.slice(Y-sr,(Y+=t)-sr):sz(t);case 219:return t=pt.getUint32(Y),Y+=4,Zr>=Y?an.slice(Y-sr,(Y+=t)-sr):nz(t);case 220:return t=pt.getUint16(Y),Y+=2,i1(t);case 221:return t=pt.getUint32(Y),Y+=4,i1(t);case 222:return t=pt.getUint16(Y),Y+=2,r1(t);case 223:return t=pt.getUint32(Y),Y+=4,r1(t);default:if(e>=224)return e-256;if(e===void 0){let i=new Error("Unexpected end of MessagePack data");throw i.incomplete=!0,i}throw new Error("Unknown MessagePack token "+e)}}}var iz=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Lg(e,t){function i(){if(i.count++>2){let s=e.read=new Function("r","return function(){return {"+e.map(n=>iz.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(It);return e.highByte===0&&(e.read=t1(t,e.read)),s()}let r={};for(let s=0,n=e.length;s<n;s++){let a=e[s];r[a]=It()}return r}return i.count=0,e.highByte===0?t1(t,i):i}var t1=(e,t)=>function(){let i=Me[Y++];if(i===0)return t();let r=e<32?-(e+(i<<5)):e+(i<<5),s=ct[r]||c_()[r];if(!s)throw new Error("Record id is not defined for "+r);return s.read||(s.read=Lg(s,e)),s.read()};function c_(){let e=m_(()=>(Me=null,Oi.getStructures()));return ct=Oi._mergeStructures(e,ct)}var Xf=uu,rz=uu,sz=uu,nz=uu;function uu(e){let t;if(e<16&&(t=Ig(e)))return t;if(e>64&&Gf)return Gf.decode(Me.subarray(Y,Y+=e));let i=Y+e,r=[];for(t="";Y<i;){let s=Me[Y++];if((s&128)===0)r.push(s);else if((s&224)===192){let n=Me[Y++]&63;r.push((s&31)<<6|n)}else if((s&240)===224){let n=Me[Y++]&63,a=Me[Y++]&63;r.push((s&31)<<12|n<<6|a)}else if((s&248)===240){let n=Me[Y++]&63,a=Me[Y++]&63,o=Me[Y++]&63,l=(s&7)<<18|n<<12|a<<6|o;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(s);r.length>=4096&&(t+=$t.apply(String,r),r.length=0)}return r.length>0&&(t+=$t.apply(String,r)),t}function i1(e){let t=new Array(e);for(let i=0;i<e;i++)t[i]=It();return t}function r1(e){if(Oi.mapsAsObjects){let t={};for(let i=0;i<e;i++)t[u_()]=It();return t}else{let t=new Map;for(let i=0;i<e;i++)t.set(It(),It());return t}}var $t=String.fromCharCode;function d_(e){let t=Y,i=new Array(e);for(let r=0;r<e;r++){let s=Me[Y++];if((s&128)>0){Y=t;return}i[r]=s}return $t.apply(String,i)}function Ig(e){if(e<4)if(e<2){if(e===0)return"";{let t=Me[Y++];if((t&128)>1){Y-=1;return}return $t(t)}}else{let t=Me[Y++],i=Me[Y++];if((t&128)>0||(i&128)>0){Y-=2;return}if(e<3)return $t(t,i);let r=Me[Y++];if((r&128)>0){Y-=3;return}return $t(t,i,r)}else{let t=Me[Y++],i=Me[Y++],r=Me[Y++],s=Me[Y++];if((t&128)>0||(i&128)>0||(r&128)>0||(s&128)>0){Y-=4;return}if(e<6){if(e===4)return $t(t,i,r,s);{let n=Me[Y++];if((n&128)>0){Y-=5;return}return $t(t,i,r,s,n)}}else if(e<8){let n=Me[Y++],a=Me[Y++];if((n&128)>0||(a&128)>0){Y-=6;return}if(e<7)return $t(t,i,r,s,n,a);let o=Me[Y++];if((o&128)>0){Y-=7;return}return $t(t,i,r,s,n,a,o)}else{let n=Me[Y++],a=Me[Y++],o=Me[Y++],l=Me[Y++];if((n&128)>0||(a&128)>0||(o&128)>0||(l&128)>0){Y-=8;return}if(e<10){if(e===8)return $t(t,i,r,s,n,a,o,l);{let h=Me[Y++];if((h&128)>0){Y-=9;return}return $t(t,i,r,s,n,a,o,l,h)}}else if(e<12){let h=Me[Y++],u=Me[Y++];if((h&128)>0||(u&128)>0){Y-=10;return}if(e<11)return $t(t,i,r,s,n,a,o,l,h,u);let c=Me[Y++];if((c&128)>0){Y-=11;return}return $t(t,i,r,s,n,a,o,l,h,u,c)}else{let h=Me[Y++],u=Me[Y++],c=Me[Y++],d=Me[Y++];if((h&128)>0||(u&128)>0||(c&128)>0||(d&128)>0){Y-=12;return}if(e<14){if(e===12)return $t(t,i,r,s,n,a,o,l,h,u,c,d);{let p=Me[Y++];if((p&128)>0){Y-=13;return}return $t(t,i,r,s,n,a,o,l,h,u,c,d,p)}}else{let p=Me[Y++],m=Me[Y++];if((p&128)>0||(m&128)>0){Y-=14;return}if(e<15)return $t(t,i,r,s,n,a,o,l,h,u,c,d,p,m);let g=Me[Y++];if((g&128)>0){Y-=15;return}return $t(t,i,r,s,n,a,o,l,h,u,c,d,p,m,g)}}}}}function Mp(e){return Oi.copyBuffers?Uint8Array.prototype.slice.call(Me,Y,Y+=e):Me.subarray(Y,Y+=e)}function Pn(e){let t=Me[Y++];if(Ci[t])return Ci[t](Me.subarray(Y,Y+=e));throw new Error("Unknown extension type "+t)}var s1=new Array(4096);function u_(){let e=Me[Y++];if(e>=160&&e<192){if(e=e-160,Zr>=Y)return an.slice(Y-sr,(Y+=e)-sr);if(!(Zr==0&&un<180))return Xf(e)}else return Y--,It();let t=(e<<5^(e>1?pt.getUint16(Y):e>0?Me[Y]:0))&4095,i=s1[t],r=Y,s=Y+e-3,n,a=0;if(i&&i.bytes==e){for(;r<s;){if(n=pt.getUint32(r),n!=i[a++]){r=1879048192;break}r+=4}for(s+=3;r<s;)if(n=Me[r++],n!=i[a++]){r=1879048192;break}if(r===s)return Y=r,i.string;s-=3,r=Y}for(i=[],s1[t]=i,i.bytes=e;r<s;)n=pt.getUint32(r),i.push(n),r+=4;for(s+=3;r<s;)n=Me[r++],i.push(n);let o=e<16?Ig(e):d_(e);return o!=null?i.string=o:i.string=Xf(e)}var n1=(e,t)=>{var i=It();let r=e;t!==void 0&&(e=e<32?-((t<<5)+e):(t<<5)+e,i.highByte=t);let s=ct[e];return s&&s.isShared&&((ct.restoreStructures||(ct.restoreStructures=[]))[e]=s),ct[e]=i,i.read=Lg(i,r),i.read()},p_=typeof self=="object"?self:global;Ci[0]=()=>{};Ci[0].noBuffer=!0;Ci[101]=()=>{let e=It();return(p_[e[0]]||Error)(e[1])};Ci[105]=e=>{let t=pt.getUint32(Y-4);Ts||(Ts=new Map);let i=Me[Y],r;i>=144&&i<160||i==220||i==221?r=[]:r={};let s={target:r};Ts.set(t,s);let n=It();return s.used?Object.assign(r,n):(s.target=n,n)};Ci[112]=e=>{let t=pt.getUint32(Y-4),i=Ts.get(t);return i.used=!0,i.target};Ci[115]=()=>new Set(It());var f_=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(e=>e+"Array");Ci[116]=e=>{let t=e[0],i=f_[t];if(!i)throw new Error("Could not find typed array for code "+t);return new p_[i](Uint8Array.prototype.slice.call(e,1).buffer)};Ci[120]=()=>{let e=It();return new RegExp(e[0],e[1])};Ci[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],i=Y;Y+=t-4,ji=[It(),It()],ji.position0=0,ji.position1=0;let r=Y;Y=i;try{return It()}finally{Y=r}};Ci[255]=e=>e.length==4?new Date((e[0]*16777216+(e[1]<<16)+(e[2]<<8)+e[3])*1e3):e.length==8?new Date(((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+((e[3]&3)*4294967296+e[4]*16777216+(e[5]<<16)+(e[6]<<8)+e[7])*1e3):e.length==12?new Date(((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+((e[4]&128?-281474976710656:0)+e[6]*1099511627776+e[7]*4294967296+e[8]*16777216+(e[9]<<16)+(e[10]<<8)+e[11])*1e3):new Date("invalid");function m_(e){let t=un,i=Y,r=Wf,s=sr,n=Zr,a=an,o=Vf,l=Ts,h=ji,u=new Uint8Array(Me.slice(0,un)),c=ct,d=ct.slice(0,ct.length),p=Oi,m=Ao,g=e();return un=t,Y=i,Wf=r,sr=s,Zr=n,an=a,Vf=o,Ts=l,ji=h,Me=u,Ao=m,ct=c,ct.splice(0,ct.length,...d),Oi=p,pt=new DataView(Me.buffer,Me.byteOffset,Me.byteLength),g}function Yf(){Me=null,Ts=null,ct=null}function az(e){e.unpack?Ci[e.type]=e.unpack:Ci[e.type]=e}var Bg=new Array(147);for(let e=0;e<256;e++)Bg[e]=+("1e"+Math.floor(45.15-e*.30103));var pu=new Sd({useRecords:!1}),PV=pu.unpack,DV=pu.unpackMultiple,OV=pu.unpack,oz={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lz=new Float32Array(1),LV=new Uint8Array(lz.buffer,0,4),Zc;try{Zc=new TextEncoder}catch{}var Ad,Rg,fu=typeof Buffer<"u",Ep=fu?Buffer.allocUnsafeSlow:Uint8Array,g_=fu?Buffer:Uint8Array,a1=fu?4294967296:2144337920,ae,zt,$=0,zr,Fr=null,hz=/[\u0080-\uFFFF]/,nl=Symbol("record-id"),v_=class extends Sd{constructor(e){super(e),this.offset=0;let t,i,r,s,n,a,o=0,l=g_.prototype.utf8Write?function(A,S,E){return ae.utf8Write(A,S,E)}:Zc&&Zc.encodeInto?function(A,S){return Zc.encodeInto(A,ae.subarray(S)).written}:!1,h=this;e||(e={});let u=e&&e.sequential,c=e.structures||e.saveStructures,d=e.maxSharedStructures;if(d==null&&(d=c?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let p=e.maxOwnStructures;p==null&&(p=c?32:64),u&&!e.saveStructures&&(this.structures=[]);let m=d>32||p+d>64,g=d+64,f=d+p+64;if(f>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],y=0,b=0;this.pack=this.encode=function(A,S){if(ae||(ae=new Ep(8192),zt=new DataView(ae.buffer,0,8192),$=0),zr=ae.length-10,zr-$<2048?(ae=new Ep(ae.length),zt=new DataView(ae.buffer,0,ae.length),zr=ae.length-10,$=0):$=$+7&2147483640,i=$,a=h.structuredClone?new Map:null,h.bundleStrings?(Fr=["",""],ae[$++]=214,ae[$++]=98,Fr.position=$-i,$+=4):Fr=null,r=h.structures,r){r.uninitialized&&(r=h._mergeStructures(h.getStructures()));let E=r.sharedLength||0;if(E>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+r.sharedLength);if(!r.transitions){r.transitions=Object.create(null);for(let C=0;C<E;C++){let T=r[C];if(!T)continue;let P,R=r.transitions;for(let O=0,U=T.length;O<U;O++){let j=T[O];P=R[j],P||(P=R[j]=Object.create(null)),R=P}R[nl]=C+64}o=E}u||(r.nextId=E+64)}s&&(s=!1),n=r||[];try{if(x(A),Fr){zt.setUint32(Fr.position+i,$-Fr.position-i);let E=Fr;Fr=null,x(E[0]),x(E[1])}if(h.offset=$,a&&a.idsToInsert){$+=a.idsToInsert.length*6,$>zr&&_($),h.offset=$;let E=dz(ae.subarray(i,$),a.idsToInsert);return a=null,E}return S&uz?(ae.start=i,ae.end=$,ae):ae.subarray(i,$)}finally{if(r){if(b<10&&b++,y>1e4)r.transitions=null,b=0,y=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let E=0,C=v.length;E<C;E++)v[E][nl]=0;v=[]}if(s&&h.saveStructures){let E=r.sharedLength||d;r.length>E&&(r=r.slice(0,E));let C=ae.subarray(i,$);return h.saveStructures(r,o)===!1?(h._mergeStructures(h.getStructures()),h.pack(A)):(o=E,C)}}S&pz&&($=i)}};let x=A=>{$>zr&&(ae=_($));var S=typeof A,E;if(S==="string"){let C=A.length;if(Fr&&C>=8&&C<4096){let R=hz.test(A);Fr[R?0:1]+=A,ae[$++]=193,x(R?-C:C);return}let T;C<32?T=1:C<256?T=2:C<65536?T=3:T=5;let P=C*3;if($+P>zr&&(ae=_($+P)),C<64||!l){let R,O,U,j=$+T;for(R=0;R<C;R++)O=A.charCodeAt(R),O<128?ae[j++]=O:O<2048?(ae[j++]=O>>6|192,ae[j++]=O&63|128):(O&64512)===55296&&((U=A.charCodeAt(R+1))&64512)===56320?(O=65536+((O&1023)<<10)+(U&1023),R++,ae[j++]=O>>18|240,ae[j++]=O>>12&63|128,ae[j++]=O>>6&63|128,ae[j++]=O&63|128):(ae[j++]=O>>12|224,ae[j++]=O>>6&63|128,ae[j++]=O&63|128);E=j-$-T}else E=l(A,$+T,P);E<32?ae[$++]=160|E:E<256?(T<2&&ae.copyWithin($+2,$+1,$+1+E),ae[$++]=217,ae[$++]=E):E<65536?(T<3&&ae.copyWithin($+3,$+2,$+2+E),ae[$++]=218,ae[$++]=E>>8,ae[$++]=E&255):(T<5&&ae.copyWithin($+5,$+3,$+3+E),ae[$++]=219,zt.setUint32($,E),$+=4),$+=E}else if(S==="number")if(A>>>0===A)A<64?ae[$++]=A:A<256?(ae[$++]=204,ae[$++]=A):A<65536?(ae[$++]=205,ae[$++]=A>>8,ae[$++]=A&255):(ae[$++]=206,zt.setUint32($,A),$+=4);else if(A>>0===A)A>=-32?ae[$++]=256+A:A>=-128?(ae[$++]=208,ae[$++]=A+256):A>=-32768?(ae[$++]=209,zt.setInt16($,A),$+=2):(ae[$++]=210,zt.setInt32($,A),$+=4);else{let C;if((C=this.useFloat32)>0&&A<4294967296&&A>=-2147483648){ae[$++]=202,zt.setFloat32($,A);let T;if(C<4||(T=A*Bg[(ae[$]&127)<<1|ae[$+1]>>7])>>0===T){$+=4;return}else $--}ae[$++]=203,zt.setFloat64($,A),$+=8}else if(S==="object")if(!A)ae[$++]=192;else{if(a){let T=a.get(A);if(T){if(!T.id){let P=a.idsToInsert||(a.idsToInsert=[]);T.id=P.push(T)}ae[$++]=214,ae[$++]=112,zt.setUint32($,T.id),$+=4;return}else a.set(A,{offset:$-i})}let C=A.constructor;if(C===Object)w(A,!0);else if(C===Array){E=A.length,E<16?ae[$++]=144|E:E<65536?(ae[$++]=220,ae[$++]=E>>8,ae[$++]=E&255):(ae[$++]=221,zt.setUint32($,E),$+=4);for(let T=0;T<E;T++)x(A[T])}else if(C===Map){E=A.size,E<16?ae[$++]=128|E:E<65536?(ae[$++]=222,ae[$++]=E>>8,ae[$++]=E&255):(ae[$++]=223,zt.setUint32($,E),$+=4);for(let[T,P]of A)x(T),x(P)}else{for(let T=0,P=Ad.length;T<P;T++){let R=Rg[T];if(A instanceof R){let O=Ad[T];if(O.write){O.type&&(ae[$++]=212,ae[$++]=O.type,ae[$++]=0),x(O.write.call(this,A));return}let U=ae,j=zt,z=$;ae=null;let L;try{L=O.pack.call(this,A,G=>(ae=U,U=null,$+=G,$>zr&&_($),{target:ae,targetView:zt,position:$-G}),x)}finally{U&&(ae=U,zt=j,$=z,zr=ae.length-10)}L&&(L.length+$>zr&&_(L.length+$),$=cz(L,ae,$,O.type));return}}w(A,!A.hasOwnProperty)}}else if(S==="boolean")ae[$++]=A?195:194;else if(S==="bigint"){if(A<BigInt(1)<<BigInt(63)&&A>=-(BigInt(1)<<BigInt(63)))ae[$++]=211,zt.setBigInt64($,A);else if(A<BigInt(1)<<BigInt(64)&&A>0)ae[$++]=207,zt.setBigUint64($,A);else if(this.largeBigIntToFloat)ae[$++]=203,zt.setFloat64($,Number(A));else throw new RangeError(A+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");$+=8}else if(S==="undefined")this.encodeUndefinedAsNil?ae[$++]=192:(ae[$++]=212,ae[$++]=0,ae[$++]=0);else if(S==="function")x(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+S)},w=this.useRecords===!1?this.variableMapSize?A=>{let S=Object.keys(A),E=S.length;E<16?ae[$++]=128|E:E<65536?(ae[$++]=222,ae[$++]=E>>8,ae[$++]=E&255):(ae[$++]=223,zt.setUint32($,E),$+=4);let C;for(let T=0;T<E;T++)x(C=S[T]),x(A[C])}:(A,S)=>{ae[$++]=222;let E=$-i;$+=2;let C=0;for(let T in A)(S||A.hasOwnProperty(T))&&(x(T),x(A[T]),C++);ae[E+++i]=C>>8,ae[E+i]=C&255}:A=>{let S=Object.keys(A),E,C=n.transitions||(n.transitions=Object.create(null)),T=0;for(let R=0,O=S.length;R<O;R++){let U=S[R];E=C[U],E||(E=C[U]=Object.create(null),T++),C=E}let P=C[nl];if(P)P>=96&&m?(ae[$++]=((P-=96)&31)+96,ae[$++]=P>>5):ae[$++]=P;else{P=n.nextId,P||(P=64),P<g&&this.shouldShareStructure&&!this.shouldShareStructure(S)?(P=n.nextOwnId,P<f||(P=g),n.nextOwnId=P+1):(P>=f&&(P=g),n.nextId=P+1);let R=S.highByte=P>=96&&m?P-96>>5:-1;C[nl]=P,n[P-64]=S,P<g?(S.isShared=!0,n.sharedLength=P-63,s=!0,R>=0?(ae[$++]=(P&31)+96,ae[$++]=R):ae[$++]=P):(R>=0?(ae[$++]=213,ae[$++]=114,ae[$++]=(P&31)+96,ae[$++]=R):(ae[$++]=212,ae[$++]=114,ae[$++]=P),T&&(y+=b*T),v.length>=p&&(v.shift()[nl]=0),v.push(C),x(S))}for(let R=0,O=S.length;R<O;R++)x(A[S[R]])},_=A=>{let S;if(A>16777216){if(A-i>a1)throw new Error("Packed buffer would be larger than maximum buffer size");S=Math.min(a1,Math.round(Math.max((A-i)*(A>67108864?1.25:2),4194304)/4096)*4096)}else S=(Math.max(A-i<<2,ae.length-1)>>12)+1<<12;let E=new Ep(S);return zt=new DataView(E.buffer,0,S),ae.copy?ae.copy(E,0,i,A):E.set(ae.slice(i,A)),$-=i,i=0,zr=E.length-10,ae=E}}useBuffer(e){ae=e,zt=new DataView(ae.buffer,ae.byteOffset,ae.byteLength),$=0}};Rg=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,l_];Ad=[{pack(e,t,i){let r=e.getTime()/1e3;if((this.useTimestamp32||e.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:s,targetView:n,position:a}=t(6);s[a++]=214,s[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:s,targetView:n,position:a}=t(10);s[a++]=215,s[a++]=255,n.setUint32(a,e.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),i(this.onInvalidDate());let{target:s,targetView:n,position:a}=t(3);s[a++]=212,s[a++]=255,s[a++]=255}else{let{target:s,targetView:n,position:a}=t(15);s[a++]=199,s[a++]=12,s[a++]=255,n.setUint32(a,e.getMilliseconds()*1e6),n.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(e,t,i){let r=Array.from(e),{target:s,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(s[n++]=212,s[n++]=115,s[n++]=0),i(r)}},{pack(e,t,i){let{target:r,position:s}=t(this.structuredClone?3:0);this.structuredClone&&(r[s++]=212,r[s++]=101,r[s++]=0),i([e.name,e.message])}},{pack(e,t,i){let{target:r,position:s}=t(this.structuredClone?3:0);this.structuredClone&&(r[s++]=212,r[s++]=120,r[s++]=0),i([e.source,e.flags])}},{pack(e,t){this.structuredClone?o1(e,16,t):l1(fu?Buffer.from(e):new Uint8Array(e),t)}},{pack(e,t){let i=e.constructor;i!==g_&&this.structuredClone?o1(e,f_.indexOf(i.name),t):l1(e,t)}},{pack(e,t){let{target:i,position:r}=t(1);i[r]=193}}];function o1(e,t,i,r){let s=e.byteLength;if(s+1<256){var{target:n,position:a}=i(4+s);n[a++]=199,n[a++]=s+1}else if(s+1<65536){var{target:n,position:a}=i(5+s);n[a++]=200,n[a++]=s+1>>8,n[a++]=s+1&255}else{var{target:n,position:a,targetView:o}=i(7+s);n[a++]=201,o.setUint32(a,s+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),a)}function l1(e,t){let i=e.byteLength;var r,s;if(i<256){var{target:r,position:s}=t(i+2);r[s++]=196,r[s++]=i}else if(i<65536){var{target:r,position:s}=t(i+3);r[s++]=197,r[s++]=i>>8,r[s++]=i&255}else{var{target:r,position:s,targetView:n}=t(i+5);r[s++]=198,n.setUint32(s,i),s+=4}r.set(e,s)}function cz(e,t,i,r){let s=e.length;switch(s){case 1:t[i++]=212;break;case 2:t[i++]=213;break;case 4:t[i++]=214;break;case 8:t[i++]=215;break;case 16:t[i++]=216;break;default:s<256?(t[i++]=199,t[i++]=s):s<65536?(t[i++]=200,t[i++]=s>>8,t[i++]=s&255):(t[i++]=201,t[i++]=s>>24,t[i++]=s>>16&255,t[i++]=s>>8&255,t[i++]=s&255)}return t[i++]=r,t.set(e,i),i+=s,i}function dz(e,t){let i,r=t.length*6,s=e.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);i=t.pop();){let n=i.offset,a=i.id;e.copyWithin(n+r,n,s),r-=6;let o=n+r;e[o++]=214,e[o++]=105,e[o++]=a>>24,e[o++]=a>>16&255,e[o++]=a>>8&255,e[o++]=a&255,s=n}return e}function Uo(e){if(e.Class){if(!e.pack&&!e.write)throw new Error("Extension has no pack or write function");if(e.pack&&!e.type)throw new Error("Extension has no type (numeric code to identify the extension)");Rg.unshift(e.Class),Ad.unshift(e)}az(e)}var y_=new v_({useRecords:!1}),IV=y_.pack,BV=y_.pack,{NEVER:RV,ALWAYS:NV,DECIMAL_ROUND:zV,DECIMAL_FIT:FV}=oz,uz=512,pz=1024,h1=new v_({structuredClone:!0});Uo({Class:Yt.prototype.constructor,type:1,write(e){return{...e}},read(e){return Object.setPrototypeOf(e,Yt.prototype),e}});Uo({Class:st.prototype.constructor,type:2,write(e){return[...e]},read(e){return Object.setPrototypeOf(e,st.prototype),e}});Uo({Class:Ri.prototype.constructor,type:3,write(e){return[...e]},read(e){return Object.setPrototypeOf(e,Ri.prototype),e}});Uo({Class:Ky.prototype.constructor,type:4,write(e){return e.id},read(e){return new Ky(e)}});Uo({Class:Jy.prototype.constructor,type:5,write(e){return e.data},read(e){return new Jy(e)}});Uo({Class:ni.prototype.constructor,type:6,write(e){return{...e}},read(e){return Object.setPrototypeOf(e,ni.prototype),e}});function fz(e){var t=0;if(e.length===0)return t;for(let i=0;i<e.length;i++){let r=e[i];t=(t<<5)-t+r,t=t&t}return t}function qf(e){if(Cg(e))return e;if(Array.isArray(e))return e.map(qf);if(typeof e=="object"&&e!==null){let t={};for(let i of Object.keys(e).sort())t[i]=qf(e[i]);return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),t}else return e}var Qf;(e=>{function t(s){return h1.pack(s)}e.serialize=t;function i(s){return h1.unpack(s)}e.deserialize=i;function r(s){return fz(t(qf(s))).toString()}e.checksum=r})(Qf||(Qf={}));var al={LookAt:[],Follow:[],MouseHover:["Transition"],Scroll:["Transition"],Start:["Transition","Audio","Video"],Conditional:["Transition","Audio","Video"],MouseDown:["Transition","Audio","Video","Link","Reset"],MouseUp:["Transition","Audio","Video","Link","Reset"],MousePress:["Transition","Audio","Video","Link","Reset"],KeyDown:["Transition","Audio","Video","Link","Reset"],KeyUp:["Transition","Audio","Video","Link","Reset"],KeyPress:["Transition","Audio","Video","Link","Reset"],GameControl:["Transition","Audio"],Collision:["Transition","Audio"]},c1;(e=>{function t(r){return r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="KeyPress"}e.is=t;function i(r){return r==="MouseDown"||r==="MouseUp"||r==="MousePress"?{type:r,disabled:!1,toggle:!1,actions:new st}:{type:r,disabled:!1,key:void 0,toggle:!1,actions:new st}}e.defaultData=i})(c1||(c1={}));var Md;(e=>{function t(i){return{type:"Property",value:[i??null,"position","x"]}}e.propertyDefaultData=t,e.valueDefaultData={type:"Literal",value:0}})(Md||(Md={}));var Zf;(e=>{function t(s){return{type:"Comparison",operator:"==",lOperand:Md.propertyDefaultData(s),rOperand:{...Md.valueDefaultData}}}e.comparisonDefaultData=t;function i(s){return{type:"Distance",toObject:s??null,fromObject:s??null,distance:200}}e.distanceDefaultData=i;function r(s,n){return{type:"State",object:s??null,state:n??null}}e.stateDefaultData=r})(Zf||(Zf={}));var d1;(e=>{function t(r){return r.type==="Conditional"}e.is=t;function i(r){return{type:"Conditional",disabled:!1,inActions:new st,outActions:new st,condition:Zf.distanceDefaultData(r)}}e.defaultData=i})(d1||(d1={}));var u1;(e=>e.defaultData={type:"Follow",disabled:!1,maxDelta:0,dampingFactor:1,plane:"custom",resetOnPointerLeave:!0})(u1||(u1={}));var p1;(e=>e.defaultData={type:"LookAt",disabled:!1,distance:1e3,dampingFactor:1,tilt:"up",axis:"z",plane:"custom",resetOnPointerLeave:!0})(p1||(p1={}));var f1;(e=>{function t(r){return r.type==="MouseHover"}e.is=t;function i(){return{type:"MouseHover",disabled:!1,actions:new st}}e.defaultData=i})(f1||(f1={}));var m1;(e=>{function t(r){return r.type==="Scroll"}e.is=t;function i(){return{type:"Scroll",disabled:!1,steps:100,actions:new st}}e.defaultData=i})(m1||(m1={}));var g1;(e=>{function t(r){return r.type==="Start"}e.is=t;function i(){return{type:"Start",disabled:!1,actions:new st}}e.defaultData=i})(g1||(g1={}));var v1;(e=>{function t(r){return r.type==="Collision"}e.is=t;function i(){return{type:"Collision",disabled:!1,toggle:!1,target:"character",actions:new st}}e.defaultData=i})(v1||(v1={}));var eo;(e=>{function t(r,s){return r[0]===s[0]&&r[1]===s[1]}e.isEqual=t;function i(r,s,n){return[r[0]+(s[0]-r[0])*n,r[1]+(s[1]-r[1])*n]}e.lerp=i})(eo||(eo={}));var $n;(e=>{function t(o,l){return o[0]===l[0]&&o[1]===l[1]&&o[2]===l[2]}e.isEqual=t;function i(o,l){return[o[0]+l[0],o[1]+l[1],o[2]+l[2]]}e.add=i;function r(o,l){return[o[0]-l[0],o[1]-l[1],o[2]-l[2]]}e.sub=r;function s(o,l){return[o[0]/l[0],o[1]/l[1],o[2]/l[2]]}e.div=s;function n(o,l){return[o[0]*l[0],o[1]*l[1],o[2]*l[2]]}e.mul=n;function a(o,l,h){return[o[0]+(l[0]-o[0])*h,o[1]+(l[1]-o[1])*h,o[2]+(l[2]-o[2])*h]}e.lerp=a})($n||($n={}));var Ed;(e=>{function t(r,s){return r[0]===s[0]&&r[1]===s[1]&&r[2]===s[2]&&r[3]===s[3]}e.isEqual=t;function i(r,s,n){return[r[0]+(s[0]-r[0])*n,r[1]+(s[1]-r[1])*n,r[2]+(s[2]-r[2])*n,r[3]+(s[3]-r[3])*n]}e.lerp=i})(Ed||(Ed={}));var Mo;(e=>{e.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(s,n){for(let a=0;a<16;a++)if(s[a]!==n[a])return!1;return!0}e.isEqual=t;function i(s){return s??e.identity}e.simplify=i;function r(s,n){let a=n.slice(0);for(var o=0,l=n.length;o<l;o+=3){let h=s[3]*n[o]+s[7]*n[o+1]+s[11]*n[o+2]+s[15];a[o]=(s[0]*n[o]+s[4]*n[o+1]+s[8]*n[o+2]+s[12])/h,a[o+1]=(s[1]*n[o]+s[5]*n[o+1]+s[9]*n[o+2]+s[13])/h,a[o+2]=(s[2]*n[o]+s[6]*n[o+1]+s[10]*n[o+2]+s[14])/h}return a}e.applyMatrix4=r})(Mo||(Mo={}));var Vi;(e=>{function t(o){return typeof o=="object"&&typeof o.r=="number"&&typeof o.g=="number"&&typeof o.b=="number"}e.isRGB=t,e.white={r:1,g:1,b:1},e.red={r:1,g:0,b:0},e.black={r:0,g:0,b:0};function i(o){return{r:Math.round(o.r*255),g:Math.round(o.g*255),b:Math.round(o.b*255),a:1}}e.toRgb255a1=i;function r(o){return{r:o.r,g:o.g,b:o.b}}e.clone=r;function s(o){return o=Math.floor(o),{r:(o>>16&255)/255,g:(o>>8&255)/255,b:(o&255)/255}}e.fromHex=s;function n(o,l){return o.r===l.r&&o.g===l.g&&o.b===l.b}e.equals=n;function a(o,l,h){return{r:o.r+(l.r-o.r)*h,g:o.g+(l.g-o.g)*h,b:o.b+(l.b-o.b)*h}}e.lerp=a})(Vi||(Vi={}));var Tr;(e=>{e.white={...Vi.white,a:1},e.transparent={...Vi.white,a:0};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}e.from0to1=t;function i(a,o){return{...Vi.fromHex(a),a:o}}e.fromHexAndA=i;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}e.toRgb255a1=r;function s(a,o){return Vi.equals(a,o)&&a.a===o.a}e.equals=s;function n(a,o,l){return{r:a.r+(o.r-a.r)*l,g:a.g+(o.g-a.g)*l,b:a.b+(o.b-a.b)*l,a:a.a+(o.a-a.a)*l}}e.lerp=n})(Tr||(Tr={}));var Kf;(e=>e.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Kf||(Kf={}));var y1;(e=>e.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(y1||(y1={}));var x1;(e=>e.defaultData={control1:[.5,.05],control2:[.1,.3]})(x1||(x1={}));var na;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(i){return e.all.includes(i)}e.is=t})(na||(na={}));var nh;(e=>{e.DefaultUp=[0,1,0],e.DefaultTargetOffset=1e3,e.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:e.DefaultUp,isUpVectorFlipped:!1,targetOffset:e.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}e.getZoom=t})(nh||(nh={}));var on;(e=>{function t(r,s=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[r[0]+r[0]*s,0,0]},grid:{count:[2,2,2],size:r.map(n=>n*(1+s)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=t;function i(r,s){let n={...r};if(x_.forEach(a=>{Object.assign(n,{[a]:s[a]??r[a]})}),n.radial={...r.radial},s.radial){let a=r.radial,o=s.radial;b_.forEach(l=>{Object.assign(n.radial,{[l]:o[l]??a[l]})})}if(n.linear={...r.linear},s.linear){let a=r.linear,o=s.linear;w_.forEach(l=>{Object.assign(n.linear,{[l]:o[l]??a[l]})})}if(n.grid={...r.grid},s.grid){let a=r.grid,o=s.grid;__.forEach(l=>{Object.assign(n.grid,{[l]:o[l]??a[l]})})}if(n.toObject={...r.toObject},s.toObject){let a=r.toObject,o=s.toObject;S_.forEach(l=>{Object.assign(n.toObject,{[l]:o[l]??a[l]})})}if(n.randomnessObject={...r.randomnessObject},s.randomnessObject){let a=r.randomnessObject,o=s.randomnessObject;A_.forEach(l=>{Object.assign(n.randomnessObject,{[l]:o[l]??a[l]})})}return n}e.merge=i})(on||(on={}));var Jf;(e=>{e.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function i(r,s){let n=[];r.count!==void 0&&n.push({type:0,path:s,props:{count:r.count}});for(let a of t){let o=r[a];o&&Object.keys(o).length>0&&n.push({type:0,path:[...s,a],props:o})}return n}e.toOps=i})(Jf||(Jf={}));var x_=["count"],b_=["radius","start","end","position","scale","rotation"],w_=["position","scale","rotation"],__=["count","size"],S_=["count","position","scale","rotation"],A_=["strength","scale","rotation","position","movement","seed","freqScale"],ah;(e=>{let t={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...t,blendFunction:16,granularity:15},bloom:{...t,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...t,offset:[2,2]},vignette:{...t,darkness:1,offset:0},hueSaturation:{...t,hue:3,saturation:0},brightnessContrast:{...t,brightness:.25,contrast:0},depthOfField:{...t,focalLength:2,focusDistance:2,bokehScale:2},noise:{...t,blendFunction:16}}})(ah||(ah={}));var $f;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(i){return e.all.includes(i)}e.is=t})($f||($f={}));var em;(e=>{function t(r){return i(r)}e.defaultData=t;function i(r){if(r==="PointLight")return{type:r,color:Tr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Tr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Tr.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(em||(em={}));var tm;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(i,r){return i.castShadow===r.castShadow&&i.receiveShadow===r.receiveShadow}e.equals=t})(tm||(tm={}));var im;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(i,r){return i.flatShading===r.flatShading&&i.side===r.side&&i.wireframe===r.wireframe}e.equals=t})(im||(im={}));var rm;(e=>e.defaultData={...im.defaultData,...tm.defaultData})(rm||(rm={}));var Cd;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Cd||(Cd={}));var M_=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],mz=["wrapping","image","video"],or;(e=>{function t(n,a){let{texture:o,...l}=a;if(Object.assign(n,l),o){let h=n.texture;h&&Object.assign(h,o)}}e.patch=t;function i(n,a){return n==="light"&&a?r(a):s(n)}e.defaultData=i;function r(n){switch(n){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function s(n){switch(n){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:Cd.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Vi.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Vi.fromHex(6710886),a:1},colorB:{...Vi.fromHex(6710886),a:1},colorC:{...Vi.fromHex(16777215),a:1},colorD:{...Vi.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Tr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Tr.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Tr.fromHexAndA(0,1),contourColor:Tr.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(or||(or={}));var Qi;(e=>{function t(h){return!h.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}e.isMergable=t;function i(h){let u="";return h.layers.forEach(c=>{Object.entries(c.data).forEach(([d,p])=>{u+=`${d}${p}`,Array.isArray(p)?p.forEach(m=>u+=`${m}`):typeof p=="object"?Object.values(p).forEach(m=>{typeof m=="number"?u+=`${m.toFixed(4)}`:u+=`${m}`}):u+=`${p}`})}),u}e.getHash=i;function r(){return{layers:new st}}e.defaultEmptyData=r;function s(h="layer1",u="layer2"){return a("phong",h,u)}e.defaultData=s;function n(h,u){return{...h,name:u}}e.withName=n;function a(h,u="layer1",c="layer2"){let d=new st;return d.push({fi:0,data:or.defaultData("light",h),id:u}),d.push({fi:1,data:or.defaultData("color"),id:c}),{layers:d}}e.defaultTwoLayerData=a;function o(h,u="phong",c="layer1",d="layer2"){let p=or.defaultData("texture");Object.assign(p.texture,{image:h});let m=new st;return m.push({fi:0,data:p,id:c}),m.push({fi:1,data:or.defaultData("light",u),id:d}),{layers:m}}e.defaultTwoLayerTextureData=o;function l(h,u="phong",c="layer1",d="layer2"){let p=or.defaultData("video");Object.assign(p.texture,{video:h});let m=new st;return m.push({fi:0,data:p,id:c}),m.push({fi:1,data:or.defaultData("light",u),id:d}),{layers:m}}e.defaultTwoLayerVideoTextureData=l})(Qi||(Qi={}));var Td;(e=>{function t(){return{points:new st,roundness:0,shapeHoles:[],isClosed:!1}}e.defaultData=t})(Td||(Td={}));var Pd;(e=>{function t(i){return i==="PolygonGeometry"||i==="RectangleGeometry"||i==="StarGeometry"||i==="TriangleGeometry"||i==="EllipseGeometry"}e.is2DParametricMesh=t})(Pd||(Pd={}));var ho;(e=>{function t(i){if(i==="RectangleGeometry")return{width:320,height:320,type:i,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(i==="VectorGeometry")return{width:1,height:1,type:i,subdivisions:12,shape:Td.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(i==="BooleanGeometry")return{type:i,operation:2,width:0,height:0,depth:0,phongAngle:35};if(i==="TextGeometry")return{type:i,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}e.defaultData=t})(ho||(ho={}));var b1;(e=>{function t(r){return r==="Component"||r==="Instance"}e.isComponentRelated=t;function i(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=i})(b1||(b1={}));var Eo;(e=>{e.identity={...Kf.identity,hiddenMatrix:Mo.identity};function t(s){return{position:s.position,rotation:s.rotation,scale:s.scale,hiddenMatrix:s.hiddenMatrix}}e.fromObject=t;function i(s,n){return{position:n?.position||s.position,rotation:n?.rotation||s.rotation,scale:n?.scale||s.scale,hiddenMatrix:n?.hiddenMatrix||s.hiddenMatrix}}e.merge=i;function r(s,n){return{position:$n.isEqual(s.position,n.position)?null:n.position,rotation:$n.isEqual(s.rotation,n.rotation)?null:n.rotation,scale:$n.isEqual(s.scale,n.scale)?null:n.scale,hiddenMatrix:Mo.isEqual(s.hiddenMatrix,n.hiddenMatrix)?null:n.hiddenMatrix}}e.diff=r})(Eo||(Eo={}));var sm;(e=>e.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(sm||(sm={}));var dr;(e=>e.defaultData={states:new st,events:new st,visible:!0,raycastLock:!1,physics:null,...Eo.identity,cloner:null})(dr||(dr={}));var w1;(e=>e.defaultData={type:"Empty",...dr.defaultData})(w1||(w1={}));var _1;(e=>e.defaultData={type:"Component",...dr.defaultData})(_1||(_1={}));var co;(e=>e.defaultData={type:"Mesh",...dr.defaultData,...rm.defaultData})(co||(co={}));var Dd;(e=>e.defaultData={...dr.defaultData,...Eo.identity,...nh.defaultData})(Dd||(Dd={}));var nm;(e=>{function t(i){return{...dr.defaultData,...em.defaultData(i)}}e.defaultData=t})(nm||(nm={}));var Od;(e=>{function t(r,s,n=0){for(;n<s.length;){let a=r?r[s[n]]:void 0;if(s.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=t;function i(r,s,n=0){let a=t(r,s,n);if(a){let o=Object.keys(a);if(o.length===1&&o[0]==="descendants")return}return a}e.resolve=i})(Od||(Od={}));var Co;(e=>{e.rootOverrideProps=["physics"],e.compositeNonOptionalOverrideProps=["geometry"],e.compositeEntireOverrideOverrideProps=["material"];function t(r,s){return{...dr.defaultData,...s,component:r,overrides:new ni,physics:void 0,type:"Instance"}}e.ofComponent=t;function i(r){let s=Eo.fromObject(r.data);return t(r.id,s)}e.fromComponentData=i})(Co||(Co={}));var am;(e=>(e.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Mo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:sm.defaultData,states:new st,events:new st,cloner:null,...nh.defaultData},e.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},e.defaultMeshObject={name:"Rectangle",...dr.defaultData,...co.defaultData,geometry:ho.defaultData("RectangleGeometry"),material:Qi.defaultTwoLayerData("phong","layer1","layer2")},e.defaultBooleanObject={name:"Boolean",...dr.defaultData,...co.defaultData,geometry:ho.defaultData("BooleanGeometry"),material:Qi.defaultTwoLayerData("phong","layer1","layer2")},e.defaultTextObject={name:"Text",...dr.defaultData,...co.defaultData,geometry:ho.defaultData("TextGeometry"),material:Qi.defaultTwoLayerData("phong","layer1","layer2")}))(am||(am={}));var Wn;(e=>{function t(n,a){let o={name:a};return n.type==="Mesh"?(o.geometry={},"material"in n&&(o.material={layers:new ni}),"materials"in n&&(o.materials=n.materials.map(l=>({layers:new ni})))):na.is(n.type)&&(o.perspective={},o.orthographic={}),o}e.newEmpty=t;function i(n,a){if(a===void 0)return n;let o={...n};return"material"in o&&"material"in a&&a.material&&(o.material=_d(o.material,l=>{if(typeof l!="string")for(let[h,u]of Object.entries(a.material.layers)){let c=l.layers.data(h);c&&or.patch(c,u)}}).data),o.materials&&a.materials&&(o.materials=_d(o.materials,l=>{for(let h=0;h<o.materials.length;h++){let u=a.materials[h];if(typeof u!="string")for(let[c,d]of Object.entries(u.layers)){let p=l[h]?.layers?.data(c);p&&or.patch(p,d)}}}).data),o}function r(n,a){let o,l=[],h={orthographic:0,perspective:0,geometry:0};function u(c,d){for(let[p,m]of Object.entries(d.layers)){let{texture:g,...f}=m;if(g!==void 0&&Object.keys(g).length>0){let v={path:[...c,"layers",p,"texture"],props:g,type:0};l.push(v)}if(Object.keys(f).length>0){let v={path:[...c,"layers",p],props:f,type:0};l.push(v)}}}for(let[c,d]of Object.entries(a))if(c!=="name")if(c==="cloner")l.push(...Jf.toOps(d,["cloner"]));else if(c==="material")u(["material"],d);else if(c==="materials")for(let[p,m]of Object.entries(d))u(["materials",p],m);else if(h[c]===0){if(Object.keys(d).length>0){let p={path:[c],props:d,type:0};l.push(p)}}else o===void 0&&(o={path:[],props:{},type:0},l.push(o)),o.props[c]=d;return l}e.toOps=r;function s(n,a){if(a===void 0)return n;let o={...n};if(Object.assign(o,Eo.merge(o,a)),na.is(n.type)){o.orthographic={...o.orthographic},o.perspective={...o.perspective};let l=a;l.orthographic?.zoom!==void 0&&(o.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(o.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(o.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(o.targetOffset=l.targetOffset)}else if(n.type==="Mesh")a.geometry&&(o.geometry={...o.geometry},Object.assign(o.geometry,a.geometry)),(a.material||a.materials)&&(o=i(o,a)),o.cloner&&"cloner"in a&&Object.assign(o,{cloner:on.merge(o.cloner,a.cloner)});else if(n.type==="Empty")o.cloner&&"cloner"in a&&Object.assign(o,{cloner:on.merge(o.cloner,a.cloner)});else if($f.is(n.type)){let l=a;l.intensity!==void 0&&(o.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?o.color=l.color:o.color=Vi.clone(l.color))}return o}e.patch=s})(Wn||(Wn={}));var Ld;(e=>e.defaultData={enabled:!1,useBackgroundColor:!1,color:Vi.white,near:.1,far:2e3})(Ld||(Ld={}));var Id;(e=>e.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(Id||(Id={}));var To;(e=>e.defaultData={orbitControls:Id.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:typeof window<"u"?Math.floor(window.devicePixelRatio):1,stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((t,i)=>{let r=0,s=0;return i<5?s=-30:i<10&&(s=30),i===0||i===10||i===5?r=30:(i===4||i===11||i===9)&&(r=-30),[120,[r,s],"show"]}),gameControlObject:null})(To||(To={}));function ko(e,t){return Object.setPrototypeOf(e,t),e}var gz=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),vz=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),yz=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||mu&&"ontouchend"in document,xz=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,bz=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,wz=()=>{if(typeof window>"u")return!1;let e=navigator.userAgent,t=navigator.vendor;return/Safari/i.test(e)&&/Apple Computer/.test(t)},_z=()=>{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]},UV=gz(),mu=vz(),om=yz(),Sz=xz(),Si=bz(),Bd=wz(),Rd=Number(_z()),aa=void 0!=="true";function E_(e){return Array.isArray(e)?e:[e]}function Az(e,t){let i=0;for(;i<e.length&&i<t.length;){if(e[i]<t[i])return-1;if(e[i]>t[i])return 1;i+=1}return i!==t.length?-1:i!==e.length?1:0}function fc(e){return mu?e.metaKey:e.ctrlKey}var qe=[],Nd={},Pl={},Kc={};function C_(e){qe.includes(e)||qe.push(e)}function uo(e){delete Nd[e.pointerId];for(let t=0;t<qe.length;t++)if(qe[t].pointerId===e.pointerId){qe.splice(t,1);break}}function Mz(){qe.splice(0,qe.length)}function zd(e){if(e.pointerType!=="touch")return;let t=Nd[e.pointerId];t===void 0&&(t={x:0,y:0},Nd[e.pointerId]=t),t.x=e.pageX,t.y=e.pageY}function Cp(e){let t=e.pointerId===qe[0].pointerId?qe[1]:qe[0];return Nd[t.pointerId]}function T_(e){Pl[e.key]=!0,Kc[e.key]=Kc[e.key]===void 0?1:Kc[e.key]+1}function P_(e){if(mu&&Pl.Meta)for(let t in Pl)Pl[t]=!1;else Pl[e.key]=!1;Kc={}}function Ez(e){e.addEventListener("pointerdown",C_,!0),e.addEventListener("pointerdown",zd,!0),e.addEventListener("pointermove",zd,!0),e.addEventListener("pointerup",uo,!0),e.addEventListener("pointercancel",uo,!0),e.addEventListener("pointerleave",uo,!0),window.addEventListener("keydown",T_,!0),window.addEventListener("keyup",P_,!0)}function Cz(e){e.removeEventListener("pointerdown",C_,!0),e.removeEventListener("pointerdown",zd,!0),e.removeEventListener("pointermove",zd,!0),e.removeEventListener("pointerup",uo,!0),e.removeEventListener("pointercancel",uo,!0),e.removeEventListener("pointerleave",uo,!0),window.removeEventListener("keydown",T_,!0),window.removeEventListener("keyup",P_,!0)}var Hi;(e=>e.defaultData={ambientLight:{enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75,depth:100,groundColor:{r:.5098039215686274,g:.5098039215686274,b:.5098039215686274},softShadows:!0,softShadowQuality:"low"},usePhysics:!1,gravity:-10,pixelsPerMeter:200,skinWidthRelative:.02,stepThreshRelative:.3,slopeThresh:65})(Hi||(Hi={}));var lm;(e=>{e.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(s={withLight:!0,withSquare:!0}){let n=new Ri,a=am.defaultMeshObject;return s.withLight===!0&&n.push({fi:-1,data:{...nm.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7},id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),s.withSquare===!0&&n.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:a,children:[]}),n}e.defaultData={backgroundColor:Tr.fromHexAndA(1908256,1),postprocessing:ah.defaultData,fog:Ld.defaultData,objects:t(),environment:Hi.defaultData,publish:To.defaultData},e.emptyData=function(s){return{backgroundColor:Tr.fromHexAndA(1908256,1),postprocessing:ah.defaultData,fog:Ld.defaultData,objects:s?t(s):new Ri,environment:Hi.defaultData,publish:To.defaultData}};function i(s){return{...e.defaultData,objects:ko(s,Ri.prototype)}}e.withObjs=i;function r(s,n){return i([{id:s,data:n,children:[],fi:0}])}e.withObj=r})(lm||(lm={}));var Fd;(e=>{function t(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},ko(r,Yt.prototype)}e.defaultColors=t;function i(){return{materials:new Yt,images:new Yt,videos:new Yt,colors:new Yt,audios:new Yt,fonts:new Yt,penumbraSize:[.5,.5,.5]}}e.emptyData=i})(Fd||(Fd={}));function S1(e){e.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let i=t.colorA,r=t.colorB,s=[[i.r,i.g,i.b,i.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let o=2;o<10;o++)s.push(s[1]),n.push(1);let a={...yd(fi(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:s,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let i={...fi(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,i)}})}function Jc(e,t){Object.values(e.shared.materials).forEach(i=>t(i))}function $c(e,t){e.scene.objects.traverse((i,r)=>{"materials"in r?r.materials.forEach(s=>{typeof s!="string"&&t(s)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function Tz(e){Object.assign(e.scene.publish,{orbitControls:{...Id.defaultData,...fi(e.scene.publish.orbitControls)}})}function Pz(e){Object.assign(e.scene.publish.settings,{video:{...To.defaultData.settings.video,...fi(e.scene.publish.settings.video)}})}function Dz(e){function t(i){if(i.layers){for(let r of Object.values(i.layers))if(r){for(let[s,n]of Object.entries(r))if((M_.includes(s)||typeof n=="boolean")&&delete r[s],s==="texture")for(let[a,o]of Object.entries(n))(mz.includes(a)||typeof o=="boolean")&&delete n[a]}}}e.scene.objects.traverse((i,r)=>{r.states.forEach(s=>{let n=s;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function Oz(e){e.scene.publish.withBackground=!0}function Lz(e){e.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0}}function Iz(e){e.scene.objects.traverse((t,i)=>{let r=i.cloner;r&&(r.radial.scale=r.radial.scale.map(s=>s+1),r.linear.scale=r.linear.scale.map(s=>s+1))})}function Bz(e){e.scene.objects.traverse((t,i)=>{let r=i.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function Rz(e){e.scene.objects.traverse((t,i)=>{let r=e.scene.objects.unproxy().parent(t);if(r){let s=fi(e.scene.objects.data(r));s&&s.type==="Mesh"&&s.geometry.type==="BooleanGeometry"&&i.type==="Mesh"&&(i.visible=fi(i).booleanExclude!==!0)}})}function Nz(e){e.scene.objects.traverse((t,i)=>{if(i.type==="Mesh"){let r=i;i.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function zz(e){function t(r){Object.setPrototypeOf(r,ni.prototype),r.texture&&Object.setPrototypeOf(r.texture,ni.prototype)}function i(r){Object.setPrototypeOf(r,ni.prototype);for(let s in r)t(r[s])}e.scene.objects.traverse((r,s)=>{s.states.forEach(n=>{let a=n;if(a.material){let o=fi(a.material).layers;i(o),a.material.layers=o}if(a.materials)for(let o=0;o<a.materials.length;o++){let l=a.materials[o],h=fi(l).layers;i(h),l.layers=h}})})}function A1(e){e.layers===void 0&&Object.assign(e,Qi.defaultTwoLayerData("lambert"))}function Tp(e){!e.layers||e.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let i=[...t.colors];i.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let s={...fi(t),colors:i,steps:r};Object.assign(t,s)}})}function Fz(e){e.scene.objects.traverse((t,i)=>{i.type==="Mesh"&&(i.geometry.type==="BooleanGeometry"||i.geometry.type==="SubdivGeometry")&&(i.geometry.phongAngle=35)})}function M1(e){e.scene.objects.traverse((t,i)=>{"materials"in i?i.materials.forEach(r=>{typeof r!="string"&&Tp(r)}):"material"in i&&typeof i.material!="string"&&Tp(i.material)}),Object.values(e.shared.materials).forEach(t=>Tp(t))}function Uz(e){e.scene.environment.ambientLight.softShadows=!1,e.scene.environment.ambientLight.softShadowQuality="low",e.scene.objects.traverse((t,i)=>{(i.type==="DirectionalLight"||i.type==="SpotLight")&&(i.shadowResolution=1024,i.shadowRadius=1,i.depth=1e5)}),e.shared.penumbraSize=new Array(5).fill(.5)}function kz(e){e.shared.audios=ko({},Yt.prototype)}function jz(e){e.shared.videos=ko({},Yt.prototype)}function Hz(e){let t=e.shared.materials;Object.entries(t).forEach(([i,r])=>{if(!r.layers){let s={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[i]:s})}})}function Gz(e){Object.entries(fi(e.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete e.shared.images[t]}),Object.entries(fi(e.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete e.shared.audios[t]})}function Vz(e){e.scene.publish.settings.web.preload=!1}function E1(e){e.layers&&e.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Wz(e){e.shared.fonts=ko({},Yt.prototype)}function Xz(e){return e.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function Yz(e){let t=[];e.scene.objects.traverse((i,r)=>{let s=r;if(s.type==="TextFrame"){let n=Qi.defaultTwoLayerData("phong"),a=typeof s.color=="string"?e.shared.colors[s.color]:s.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=s.alpha;let o=Xz(s.font);e.shared.fonts[o]===void 0&&(e.shared.fonts[o]={name:o});let l={name:s.name,...dr.defaultData,...co.defaultData,flatShading:!1,wireframe:!1,geometry:{...ho.defaultData("TextGeometry"),width:s.width,height:s.height,font:o,depth:0,horizontalAlign:s.horizontalAlign,verticalAlign:s.verticalAlign,fontSize:s.fontSize*1.40625,lineHeight:s.lineHeight/1.40625,letterSpacing:s.letterSpacing-1,text:s.text,textTransform:s.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:fi(s.states),events:fi(s.events),visible:s.visible,raycastLock:s.raycastLock,position:s.position,rotation:s.rotation,scale:s.scale,hiddenMatrix:s.hiddenMatrix},h=fi(e.scene.objects).parent(i);e.scene.objects.insertAfter(h??null,i,[{id:i+"new",data:l,children:[]}]),t.push(i)}}),t.forEach(i=>{e.scene.objects.delete(i)})}function qz(e){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};e.scene.objects.traverse((i,r)=>{r.events.forEach(s=>{if(t[Number(s.type)])if(Object.assign(s,{type:t[Number(s.type)]}),s.type==="Audio"&&"audioEvent"in s&&(Object.assign(s,{playAudio:s.audioEvent}),delete s.audioEvent),s.type==="GameControl")Object.assign(s,{gameActions:{idle:new st,move:new st,jump:new st}});else{let n=new st;Object.assign(s,{actions:n}),(s.type==="MouseDown"||s.type==="MouseUp"||s.type==="KeyDown"||s.type==="KeyUp")&&"url"in s&&n.push({fi:0,id:rt.generateUUID(),data:{type:"Link",url:s.url,delay:0}}),"targets"in s&&(s.targets.forEach((a,o,l)=>{let h={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,yd(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let c={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...c,...u},p={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new st({fi:0,id:rt.generateUUID(),data:h},{fi:1,id:rt.generateUUID(),data:d})};n.push({fi:l,id:o,data:p})}),delete s.targets)}})})}function Qz(e){e.scene.objects.traverse((t,i)=>{function r(s,n){let a=new st,o=[];if(i.events.forEach((l,h,u)=>{if(l.type==="Audio"&&l.trigger===n){let c;o.push(h),l.interaction==="play"?c={...yd(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(c={...yd(l,"interaction","delay","object","playAudio"),type:"Audio"}),c&&a.push({fi:u,id:h,data:c})}}),o.forEach(l=>i.events.delete(l)),a.length){let l=i.events.find(h=>h.type===s)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):i.events.insertBefore(null,[{id:rt.generateUUID(),data:{type:s,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function C1(e){let t=e.layers.find(i=>i.type==="light")?.data;if(t?.category==="basic"){let i=or.defaultData("light","phong"),r=t;Object.assign(r,i),r.visible=!1}}function T1(e){Jc(e,C1),$c(e,C1)}function Zz(e){e.scene.objects.traverse((t,i)=>{i.type==="Mesh"&&i.geometry.type==="SubdivGeometry"&&(i.geometry.scaleBaked||(i.geometry.scaleBaked=[1,1,1]))})}function Kz(e){e.scene.objects.traverse((t,i)=>{(i.type==="Empty"||i.type==="Mesh")&&i.cloner&&!i.cloner.randomnessObject&&!i.cloner.toObject&&!i.cloner.randomness&&(i.cloner={...i.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function Jz(e){e.scene.objects.traverse((t,i)=>{i.type==="Mesh"&&i.geometry.type==="NonParametricGeometry"&&!("material"in i)&&!("materials"in i)&&(i.material=Qi.defaultTwoLayerData("phong"))})}function $z(e){e.scene.publish.orbitControls.autoZoom===void 0&&(e.scene.publish.orbitControls.autoZoom=!1),e.scene.objects.traverse((t,i)=>{(i.type==="OrthographicCamera"||i.type==="PerspectiveCamera")&&(i.orthographic.autoZoom===void 0&&(i.orthographic.autoZoom=!1),i.orthographic.autoZoomFrustumSize===void 0&&(i.orthographic.autoZoomFrustumSize=790))})}function eF(e){e.scene.publish.mouseEventTarget===void 0&&(e.scene.publish.mouseEventTarget="canvas")}var P1=32;function tF(e){let t=e.schema??0;t!==P1&&(console.warn("updating from ",t,"to ",P1),t<1&&($c(e,S1),Jc(e,S1),e.schema=1),t<2&&(Tz(e),e.schema=2),t<3&&(Dz(e),e.schema=3),t<4&&(Oz(e),e.schema=4),t<5&&(Lz(e),e.schema=5),t<6&&(Iz(e),e.schema=6),t<7&&(Bz(e),e.schema=7),t<8&&(e.schema=8),t<9&&(M1(e),e.schema=9),t<10&&(Fz(e),e.schema=10),t<11&&(Uz(e),e.schema=11),t<12&&(M1(e),e.schema=12),t<13&&(kz(e),e.schema=13),t<14&&(Hz(e),e.schema=14),t<15&&(Gz(e),e.schema=15),t<16&&(Vz(e),e.schema=16),t<17&&($c(e,E1),Jc(e,E1),e.schema=17),t<18&&($c(e,A1),Jc(e,A1),e.schema=18),t<19&&(Pz(e),e.schema=19),t<20&&(Wz(e),Yz(e),e.schema=20),t<21&&(qz(e),Qz(e),e.schema=21),t<22&&(T1(e),e.schema=22),t<23&&(Zz(e),e.schema=23),t<24&&(Kz(e),e.schema=24),(t<25||e.shared.videos===void 0)&&(jz(e),t<25&&(e.schema=25)),t<26&&(Rz(e),e.schema=26),t<27&&(Nz(e),e.schema=27),t<28&&(T1(e),e.schema=28),t<29&&(zz(e),e.schema=29),t<30&&(Jz(e),e.schema=30),t<31&&($z(e),e.schema=31),t<32&&(eF(e),e.schema=32))}var hm;(e=>e.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(hm||(hm={}));function to(e,t=!1){let i=e[0].index!==null,r=new Set(Object.keys(e[0].attributes)),s=new Set(Object.keys(e[0].morphAttributes)),n={},a={},o=e[0].morphTargetsRelative,l=new ke,h=0;for(let u=0;u<e.length;++u){let c=e[u],d=0;if(i!==(c.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let p in c.attributes){if(!r.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+'. All geometries must have compatible attributes; make sure "'+p+'" attribute exists among all geometries, or in none of them.'),null;n[p]===void 0&&(n[p]=[]),n[p].push(c.attributes[p]),d++}if(d!==r.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". Make sure all geometries have the same number of attributes."),null;if(o!==c.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let p in c.morphAttributes){if(!s.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". .morphAttributes must be consistent throughout all geometries."),null;a[p]===void 0&&(a[p]=[]),a[p].push(c.morphAttributes[p])}if(l.userData.mergedUserData=l.userData.mergedUserData||[],l.userData.mergedUserData.push(c.userData),t){let p;if(i)p=c.index.count;else if(c.attributes.position!==void 0)p=c.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". The geometry must have either an index or a position attribute"),null;l.addGroup(h,p,u),h+=p}}if(i){let u=0,c=[];for(let d=0;d<e.length;++d){let p=e[d].index;for(let m=0;m<p.count;++m)c.push(p.getX(m)+u);u+=e[d].attributes.position.count}l.setIndex(c)}for(let u in n){let c=D1(n[u]);if(!c)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+u+" attribute."),null;l.setAttribute(u,c)}for(let u in a){let c=a[u][0].length;if(c===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[u]=[];for(let d=0;d<c;++d){let p=[];for(let g=0;g<a[u].length;++g)p.push(a[u][g][d]);let m=D1(p);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+u+" morphAttribute."),null;l.morphAttributes[u].push(m)}}return l}function D1(e){let t,i,r,s=0;for(let o=0;o<e.length;++o){let l=e[o];if(l.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(t===void 0&&(t=l.array.constructor),t!==l.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(i===void 0&&(i=l.itemSize),i!==l.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(r===void 0&&(r=l.normalized),r!==l.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;s+=l.array.length}let n=new t(s),a=0;for(let o=0;o<e.length;++o)n.set(e[o].array,a),a+=e[o].array.length;return new Qe(n,i,r)}var cm;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",speedTranslate:1e3,speedRotate:100,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:-3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new st,move:new st,jump:new st}}))(cm||(cm={}));var iF=Math.pow(2,-24),mc=class{constructor(){}};function Kr(e,t,i){return i.min.x=t[e],i.min.y=t[e+1],i.min.z=t[e+2],i.max.x=t[e+3],i.max.y=t[e+4],i.max.z=t[e+5],i}function O1(e){let t=-1,i=-1/0;for(let r=0;r<3;r++){let s=e[r+3]-e[r];s>i&&(i=s,t=r)}return t}function L1(e,t){t.set(e)}function I1(e,t,i){let r,s;for(let n=0;n<3;n++){let a=n+3;r=e[n],s=t[n],i[n]=r<s?r:s,r=e[a],s=t[a],i[a]=r>s?r:s}}function gc(e,t,i){for(let r=0;r<3;r++){let s=t[e+2*r],n=t[e+2*r+1],a=s-n,o=s+n;a<i[r]&&(i[r]=a),o>i[r+3]&&(i[r+3]=o)}}function ol(e){let t=e[3]-e[0],i=e[4]-e[1],r=e[5]-e[2];return 2*(t*i+i*r+r*t)}function rF(e,t){if(!e.index){let i=e.attributes.position.count,r=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,s;i>65535?s=new Uint32Array(new r(4*i)):s=new Uint16Array(new r(2*i)),e.setIndex(new Qe(s,1));for(let n=0;n<i;n++)s[n]=n}}function sF(e){if(!e.groups||!e.groups.length)return[{offset:0,count:e.index.count/3}];let t=[],i=new Set;for(let s of e.groups)i.add(s.start),i.add(s.start+s.count);let r=Array.from(i.values()).sort((s,n)=>s-n);for(let s=0;s<r.length-1;s++){let n=r[s],a=r[s+1];t.push({offset:n/3,count:(a-n)/3})}return t}function Pp(e,t,i,r,s=null){let n=1/0,a=1/0,o=1/0,l=-1/0,h=-1/0,u=-1/0,c=1/0,d=1/0,p=1/0,m=-1/0,g=-1/0,f=-1/0,v=s!==null;for(let y=t*6,b=(t+i)*6;y<b;y+=6){let x=e[y+0],w=e[y+1],_=x-w,A=x+w;_<n&&(n=_),A>l&&(l=A),v&&x<c&&(c=x),v&&x>m&&(m=x);let S=e[y+2],E=e[y+3],C=S-E,T=S+E;C<a&&(a=C),T>h&&(h=T),v&&S<d&&(d=S),v&&S>g&&(g=S);let P=e[y+4],R=e[y+5],O=P-R,U=P+R;O<o&&(o=O),U>u&&(u=U),v&&P<p&&(p=P),v&&P>f&&(f=P)}r[0]=n,r[1]=a,r[2]=o,r[3]=l,r[4]=h,r[5]=u,v&&(s[0]=c,s[1]=d,s[2]=p,s[3]=m,s[4]=g,s[5]=f)}function nF(e,t,i,r){let s=1/0,n=1/0,a=1/0,o=-1/0,l=-1/0,h=-1/0;for(let u=t*6,c=(t+i)*6;u<c;u+=6){let d=e[u+0];d<s&&(s=d),d>o&&(o=d);let p=e[u+2];p<n&&(n=p),p>l&&(l=p);let m=e[u+4];m<a&&(a=m),m>h&&(h=m)}r[0]=s,r[1]=n,r[2]=a,r[3]=o,r[4]=l,r[5]=h}function aF(e,t,i,r,s){let n=i,a=i+r-1,o=s.pos,l=s.axis*2;for(;;){for(;n<=a&&t[n*6+l]<o;)n++;for(;n<=a&&t[a*6+l]>=o;)a--;if(n<a){for(let h=0;h<3;h++){let u=e[n*3+h];e[n*3+h]=e[a*3+h],e[a*3+h]=u;let c=t[n*6+h*2+0];t[n*6+h*2+0]=t[a*6+h*2+0],t[a*6+h*2+0]=c;let d=t[n*6+h*2+1];t[n*6+h*2+1]=t[a*6+h*2+1],t[a*6+h*2+1]=d}n++,a--}else return n}}var Ss=32,oF=(e,t)=>e.candidate-t.candidate,Ws=new Array(Ss).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),vc=new Float32Array(6);function lF(e,t,i,r,s,n){let a=-1,o=0;if(n===0)a=O1(t),a!==-1&&(o=(t[a]+t[a+3])/2);else if(n===1)a=O1(e),a!==-1&&(o=hF(i,r,s,a));else if(n===2){let l=ol(e),h=1.25*s,u=r*6,c=(r+s)*6;for(let d=0;d<3;d++){let p=t[d],m=(t[d+3]-p)/Ss;if(s<Ss/4){let g=[...Ws];g.length=s;let f=0;for(let y=u;y<c;y+=6,f++){let b=g[f];b.candidate=i[y+2*d],b.count=0;let{bounds:x,leftCacheBounds:w,rightCacheBounds:_}=b;for(let A=0;A<3;A++)_[A]=1/0,_[A+3]=-1/0,w[A]=1/0,w[A+3]=-1/0,x[A]=1/0,x[A+3]=-1/0;gc(y,i,x)}g.sort(oF);let v=s;for(let y=0;y<v;y++){let b=g[y];for(;y+1<v&&g[y+1].candidate===b.candidate;)g.splice(y+1,1),v--}for(let y=u;y<c;y+=6){let b=i[y+2*d];for(let x=0;x<v;x++){let w=g[x];b>=w.candidate?gc(y,i,w.rightCacheBounds):(gc(y,i,w.leftCacheBounds),w.count++)}}for(let y=0;y<v;y++){let b=g[y],x=b.count,w=s-b.count,_=b.leftCacheBounds,A=b.rightCacheBounds,S=0;x!==0&&(S=ol(_)/l);let E=0;w!==0&&(E=ol(A)/l);let C=1+1.25*(S*x+E*w);C<h&&(a=d,h=C,o=b.candidate)}}else{for(let v=0;v<Ss;v++){let y=Ws[v];y.count=0,y.candidate=p+m+v*m;let b=y.bounds;for(let x=0;x<3;x++)b[x]=1/0,b[x+3]=-1/0}for(let v=u;v<c;v+=6){let y=~~((i[v+2*d]-p)/m);y>=Ss&&(y=Ss-1);let b=Ws[y];b.count++,gc(v,i,b.bounds)}let g=Ws[Ss-1];L1(g.bounds,g.rightCacheBounds);for(let v=Ss-2;v>=0;v--){let y=Ws[v],b=Ws[v+1];I1(y.bounds,b.rightCacheBounds,y.rightCacheBounds)}let f=0;for(let v=0;v<Ss-1;v++){let y=Ws[v],b=y.count,x=y.bounds,w=Ws[v+1].rightCacheBounds;b!==0&&(f===0?L1(x,vc):I1(x,vc,vc)),f+=b;let _=0,A=0;f!==0&&(_=ol(vc)/l);let S=s-f;S!==0&&(A=ol(w)/l);let E=1+1.25*(_*f+A*S);E<h&&(a=d,h=E,o=y.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${n} used.`);return{axis:a,pos:o}}function hF(e,t,i,r){let s=0;for(let n=t,a=t+i;n<a;n++)s+=e[n*6+r*2];return s/i}function cF(e,t){let i=e.attributes.position,r=i.array,s=e.index.array,n=s.length/3,a=new Float32Array(n*6),o=i.offset||0,l=3;i.isInterleavedBufferAttribute&&(l=i.data.stride);for(let h=0;h<n;h++){let u=h*3,c=h*6,d=s[u+0]*l+o,p=s[u+1]*l+o,m=s[u+2]*l+o;for(let g=0;g<3;g++){let f=r[d+g],v=r[p+g],y=r[m+g],b=f;v<b&&(b=v),y<b&&(b=y);let x=f;v>x&&(x=v),y>x&&(x=y);let w=(x-b)/2,_=g*2;a[c+_+0]=b+w,a[c+_+1]=w+(Math.abs(b)+w)*iF,b<t[g]&&(t[g]=b),x>t[g+3]&&(t[g+3]=x)}}return a}function dF(e,t){function i(v){d&&d(v/p)}function r(v,y,b,x=null,w=0){if(!m&&w>=l&&(m=!0,h&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(e))),b<=u||w>=l)return i(y+b),v.offset=y,v.count=b,v;let _=lF(v.boundingData,x,a,y,b,c);if(_.axis===-1)return i(y+b),v.offset=y,v.count=b,v;let A=aF(o,a,y,b,_);if(A===y||A===y+b)i(y+b),v.offset=y,v.count=b;else{v.splitAxis=_.axis;let S=new mc,E=y,C=A-y;v.left=S,S.boundingData=new Float32Array(6),Pp(a,E,C,S.boundingData,n),r(S,E,C,n,w+1);let T=new mc,P=A,R=b-C;v.right=T,T.boundingData=new Float32Array(6),Pp(a,P,R,T.boundingData,n),r(T,P,R,n,w+1)}return v}rF(e,t);let s=new Float32Array(6),n=new Float32Array(6),a=cF(e,s),o=e.index.array,l=t.maxDepth,h=t.verbose,u=t.maxLeafTris,c=t.strategy,d=t.onProgress,p=e.index.count/3,m=!1,g=[],f=sF(e);if(f.length===1){let v=f[0],y=new mc;y.boundingData=s,nF(a,v.offset,v.count,n),r(y,v.offset,v.count,n),g.push(y)}else for(let v of f){let y=new mc;y.boundingData=new Float32Array(6),Pp(a,v.offset,v.count,y.boundingData,n),r(y,v.offset,v.count,n),g.push(y)}return g}function uF(e,t){let i=dF(e,t),r,s,n,a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let u=0;u<i.length;u++){let c=i[u],d=l(c),p=new o(32*d);r=new Float32Array(p),s=new Uint32Array(p),n=new Uint16Array(p),h(0,c),a.push(p)}return a;function l(u){return u.count?1:1+l(u.left)+l(u.right)}function h(u,c){let d=u/4,p=u/2,m=!!c.count,g=c.boundingData;for(let f=0;f<6;f++)r[d+f]=g[f];if(m){let f=c.offset,v=c.count;return s[d+6]=f,n[p+14]=v,n[p+15]=65535,u+32}else{let f=c.left,v=c.right,y=c.splitAxis,b;if(b=h(u+32,f),b/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return s[d+6]=b/4,b=h(b,v),s[d+7]=y,b}}}var cs=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let i=1/0,r=-1/0;for(let s=0,n=e.length;s<n;s++){let a=e[s][t];i=a<i?a:i,r=a>r?a:r}this.min=i,this.max=r}setFromPoints(e,t){let i=1/0,r=-1/0;for(let s=0,n=t.length;s<n;s++){let a=t[s],o=e.dot(a);i=o<i?o:i,r=o>r?o:r}this.min=i,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};cs.prototype.setFromBox=function(){let e=new M;return function(t,i){let r=i.min,s=i.max,n=1/0,a=-1/0;for(let o=0;o<=1;o++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){e.x=r.x*o+s.x*(1-o),e.y=r.y*l+s.y*(1-l),e.z=r.z*h+s.z*(1-h);let u=t.dot(e);n=Math.min(u,n),a=Math.max(u,a)}this.min=n,this.max=a}}();var kV=function(){let e=new cs;return function(t,i){let r=t.points,s=t.satAxes,n=t.satBounds,a=i.points,o=i.satAxes,l=i.satBounds;for(let h=0;h<3;h++){let u=n[h],c=s[h];if(e.setFromPoints(c,a),u.isSeparated(e))return!1}for(let h=0;h<3;h++){let u=l[h],c=o[h];if(e.setFromPoints(c,r),u.isSeparated(e))return!1}}}(),pF=function(){let e=new M,t=new M,i=new M;return function(r,s,n){let a=r.start,o=e,l=s.start,h=t;i.subVectors(a,l),e.subVectors(r.end,s.start),t.subVectors(s.end,s.start);let u=i.dot(h),c=h.dot(o),d=h.dot(h),p=i.dot(o),m=o.dot(o)*d-c*c,g,f;m!==0?g=(u*c-p*d)/m:g=0,f=(u+g*c)/d,n.x=g,n.y=f}}(),Ng=function(){let e=new H,t=new M,i=new M;return function(r,s,n,a){pF(r,s,e);let o=e.x,l=e.y;if(o>=0&&o<=1&&l>=0&&l<=1){r.at(o,n),s.at(l,a);return}else if(o>=0&&o<=1){l<0?s.at(0,a):s.at(1,a),r.closestPointToPoint(a,!0,n);return}else if(l>=0&&l<=1){o<0?r.at(0,n):r.at(1,n),s.closestPointToPoint(n,!0,a);return}else{let h;o<0?h=r.start:h=r.end;let u;l<0?u=s.start:u=s.end;let c=t,d=i;if(r.closestPointToPoint(u,!0,t),s.closestPointToPoint(h,!0,i),c.distanceToSquared(u)<=d.distanceToSquared(h)){n.copy(c),a.copy(u);return}else{n.copy(h),a.copy(d);return}}}}(),fF=function(){let e=new M,t=new M,i=new ar,r=new cr;return function(s,n){let{radius:a,center:o}=s,{a:l,b:h,c:u}=n;if(r.start=l,r.end=h,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a||(r.start=l,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a)||(r.start=h,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a))return!0;let c=n.getPlane(i);if(Math.abs(c.distanceToPoint(o))<=a){let d=c.projectPoint(o,t);if(n.containsPoint(d))return!0}return!1}}(),mF=1e-15;function za(e){return Math.abs(e)<mF}var Os=class extends Di{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new M),this.satBounds=new Array(4).fill().map(()=>new cs),this.points=[this.a,this.b,this.c],this.sphere=new pr,this.plane=new ar,this.needsUpdate=!0}intersectsSphere(e){return fF(e,this)}update(){let e=this.a,t=this.b,i=this.c,r=this.points,s=this.satAxes,n=this.satBounds,a=s[0],o=n[0];this.getNormal(a),o.setFromPoints(a,r);let l=s[1],h=n[1];l.subVectors(e,t),h.setFromPoints(l,r);let u=s[2],c=n[2];u.subVectors(t,i),c.setFromPoints(u,r);let d=s[3],p=n[3];d.subVectors(i,e),p.setFromPoints(d,r),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(a,e),this.needsUpdate=!1}};Os.prototype.closestPointToSegment=function(){let e=new M,t=new M,i=new cr;return function(r,s=null,n=null){let{start:a,end:o}=r,l=this.points,h,u=1/0;for(let c=0;c<3;c++){let d=(c+1)%3;i.start.copy(l[c]),i.end.copy(l[d]),Ng(i,r,e,t),h=e.distanceToSquared(t),h<u&&(u=h,s&&s.copy(e),n&&n.copy(t))}return this.closestPointToPoint(a,e),h=a.distanceToSquared(e),h<u&&(u=h,s&&s.copy(e),n&&n.copy(a)),this.closestPointToPoint(o,e),h=o.distanceToSquared(e),h<u&&(u=h,s&&s.copy(e),n&&n.copy(o)),Math.sqrt(u)}}();Os.prototype.intersectsTriangle=function(){let e=new Os,t=new Array(3),i=new Array(3),r=new cs,s=new cs,n=new M,a=new M,o=new M,l=new M,h=new cr,u=new cr,c=new cr;return function(d,p=null){this.needsUpdate&&this.update(),d.isExtendedTriangle?d.needsUpdate&&d.update():(e.copy(d),e.update(),d=e);let m=this.plane,g=d.plane;if(Math.abs(m.normal.dot(g.normal))>1-1e-10){let f=this.satBounds,v=this.satAxes;i[0]=d.a,i[1]=d.b,i[2]=d.c;for(let x=0;x<4;x++){let w=f[x],_=v[x];if(r.setFromPoints(_,i),w.isSeparated(r))return!1}let y=d.satBounds,b=d.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let x=0;x<4;x++){let w=y[x],_=b[x];if(r.setFromPoints(_,t),w.isSeparated(r))return!1}for(let x=0;x<4;x++){let w=v[x];for(let _=0;_<4;_++){let A=b[_];if(n.crossVectors(w,A),r.setFromPoints(n,t),s.setFromPoints(n,i),r.isSeparated(s))return!1}}return p&&(console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),p.start.set(0,0,0),p.end.set(0,0,0)),!0}else{let f=this.points,v=!1,y=0;for(let P=0;P<3;P++){let R=f[P],O=f[(P+1)%3];h.start.copy(R),h.end.copy(O),h.delta(a);let U=v?u.start:u.end,j=za(g.distanceToPoint(R));if(za(g.normal.dot(a))&&j){u.copy(h),y=2;break}if((g.intersectLine(h,U)||j)&&!za(U.distanceTo(O))){if(y++,v)break;v=!0}}if(y===1&&this.containsPoint(u.start))return p&&(p.start.copy(u.start),p.end.copy(u.start)),!0;if(y!==2)return!1;let b=d.points,x=!1,w=0;for(let P=0;P<3;P++){let R=b[P],O=b[(P+1)%3];h.start.copy(R),h.end.copy(O),h.delta(o);let U=x?c.start:c.end,j=za(m.distanceToPoint(R));if(za(m.normal.dot(o))&&j){c.copy(h),w=2;break}if((m.intersectLine(h,U)||j)&&!za(U.distanceTo(O))){if(w++,x)break;x=!0}}if(w===1&&this.containsPoint(c.start))return p&&(p.start.copy(c.start),p.end.copy(c.start)),!0;if(w!==2)return!1;if(u.delta(a),c.delta(o),a.dot(o)<0){let P=c.start;c.start=c.end,c.end=P}let _=u.start.dot(a),A=u.end.dot(a),S=c.start.dot(a),E=c.end.dot(a),C=A<S,T=_<E;return _!==E&&S!==A&&C===T?!1:(p&&(l.subVectors(u.start,c.start),l.dot(a)>0?p.start.copy(u.start):p.start.copy(c.start),l.subVectors(u.end,c.end),l.dot(a)<0?p.end.copy(u.end):p.end.copy(c.end)),!0)}}}();Os.prototype.distanceToPoint=function(){let e=new M;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}();Os.prototype.distanceToTriangle=function(){let e=new M,t=new M,i=["a","b","c"],r=new cr,s=new cr;return function(n,a=null,o=null){let l=a||o?r:null;if(this.intersectsTriangle(n,l))return(a||o)&&(a&&l.getCenter(a),o&&l.getCenter(o)),0;let h=1/0;for(let u=0;u<3;u++){let c,d=i[u],p=n[d];this.closestPointToPoint(p,e),c=p.distanceToSquared(e),c<h&&(h=c,a&&a.copy(e),o&&o.copy(p));let m=this[d];n.closestPointToPoint(m,e),c=m.distanceToSquared(e),c<h&&(h=c,a&&a.copy(m),o&&o.copy(e))}for(let u=0;u<3;u++){let c=i[u],d=i[(u+1)%3];r.set(this[c],this[d]);for(let p=0;p<3;p++){let m=i[p],g=i[(p+1)%3];s.set(n[m],n[g]),Ng(r,s,e,t);let f=e.distanceToSquared(t);f<h&&(h=f,a&&a.copy(e),o&&o.copy(t))}}return Math.sqrt(h)}}();var ds=class extends Gt{constructor(...e){super(...e),this.isOrientedBox=!0,this.matrix=new Se,this.invMatrix=new Se,this.points=new Array(8).fill().map(()=>new M),this.satAxes=new Array(3).fill().map(()=>new M),this.satBounds=new Array(3).fill().map(()=>new cs),this.alignedSatBounds=new Array(3).fill().map(()=>new cs),this.needsUpdate=!1}set(e,t,i){super.set(e,t),this.matrix.copy(i),this.needsUpdate=!0}copy(e){super.copy(e),this.matrix.copy(e.matrix),this.needsUpdate=!0}};ds.prototype.update=function(){return function(){let e=this.matrix,t=this.min,i=this.max,r=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let u=0;u<=1;u++){let c=1*l|2*h|4*u,d=r[c];d.x=l?i.x:t.x,d.y=h?i.y:t.y,d.z=u?i.z:t.z,d.applyMatrix4(e)}let s=this.satBounds,n=this.satAxes,a=r[0];for(let l=0;l<3;l++){let h=n[l],u=s[l],c=1<<l,d=r[c];h.subVectors(a,d),u.setFromPoints(h,r)}let o=this.alignedSatBounds;o[0].setFromPointsField(r,"x"),o[1].setFromPointsField(r,"y"),o[2].setFromPointsField(r,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();ds.prototype.intersectsBox=function(){let e=new cs;return function(t){this.needsUpdate&&this.update();let i=t.min,r=t.max,s=this.satBounds,n=this.satAxes,a=this.alignedSatBounds;if(e.min=i.x,e.max=r.x,a[0].isSeparated(e)||(e.min=i.y,e.max=r.y,a[1].isSeparated(e))||(e.min=i.z,e.max=r.z,a[2].isSeparated(e)))return!1;for(let o=0;o<3;o++){let l=n[o],h=s[o];if(e.setFromBox(l,t),h.isSeparated(e))return!1}return!0}}();ds.prototype.intersectsTriangle=function(){let e=new Os,t=new Array(3),i=new cs,r=new cs,s=new M;return function(n){this.needsUpdate&&this.update(),n.isExtendedTriangle?n.needsUpdate&&n.update():(e.copy(n),e.update(),n=e);let a=this.satBounds,o=this.satAxes;t[0]=n.a,t[1]=n.b,t[2]=n.c;for(let c=0;c<3;c++){let d=a[c],p=o[c];if(i.setFromPoints(p,t),d.isSeparated(i))return!1}let l=n.satBounds,h=n.satAxes,u=this.points;for(let c=0;c<3;c++){let d=l[c],p=h[c];if(i.setFromPoints(p,u),d.isSeparated(i))return!1}for(let c=0;c<3;c++){let d=o[c];for(let p=0;p<4;p++){let m=h[p];if(s.crossVectors(d,m),i.setFromPoints(s,t),r.setFromPoints(s,u),i.isSeparated(r))return!1}}return!0}}();ds.prototype.closestPointToPoint=function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}}();ds.prototype.distanceToPoint=function(){let e=new M;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}();ds.prototype.distanceToBox=function(){let e=["x","y","z"],t=new Array(12).fill().map(()=>new cr),i=new Array(12).fill().map(()=>new cr),r=new M,s=new M;return function(n,a=0,o=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(n))return(o||l)&&(n.getCenter(s),this.closestPointToPoint(s,r),n.closestPointToPoint(r,s),o&&o.copy(r),l&&l.copy(s)),0;let h=a*a,u=n.min,c=n.max,d=this.points,p=1/0;for(let g=0;g<8;g++){let f=d[g];s.copy(f).clamp(u,c);let v=f.distanceToSquared(s);if(v<p&&(p=v,o&&o.copy(f),l&&l.copy(s),v<h))return Math.sqrt(v)}let m=0;for(let g=0;g<3;g++)for(let f=0;f<=1;f++)for(let v=0;v<=1;v++){let y=(g+1)%3,b=(g+2)%3,x=f<<y|v<<b,w=1<<g|f<<y|v<<b,_=d[x],A=d[w];t[m].set(_,A);let S=e[g],E=e[y],C=e[b],T=i[m],P=T.start,R=T.end;P[S]=u[S],P[E]=f?u[E]:c[E],P[C]=v?u[C]:c[E],R[S]=c[S],R[E]=f?u[E]:c[E],R[C]=v?u[C]:c[E],m++}for(let g=0;g<=1;g++)for(let f=0;f<=1;f++)for(let v=0;v<=1;v++){s.x=g?c.x:u.x,s.y=f?c.y:u.y,s.z=v?c.z:u.z,this.closestPointToPoint(s,r);let y=s.distanceToSquared(r);if(y<p&&(p=y,o&&o.copy(r),l&&l.copy(s),y<h))return Math.sqrt(y)}for(let g=0;g<12;g++){let f=t[g];for(let v=0;v<12;v++){let y=i[v];Ng(f,y,r,s);let b=r.distanceToSquared(s);if(b<p&&(p=b,o&&o.copy(r),l&&l.copy(s),b<h))return Math.sqrt(b)}}return Math.sqrt(p)}}();var yc=new M,xc=new M,bc=new M,B1=new H,R1=new H,N1=new H,z1=new M;function gF(e,t,i,r,s,n){let a;return n===pi?a=e.intersectTriangle(r,i,t,!0,s):a=e.intersectTriangle(t,i,r,n!==Er,s),a===null?null:{distance:e.origin.distanceTo(s),point:s.clone()}}function vF(e,t,i,r,s,n,a){yc.fromBufferAttribute(t,r),xc.fromBufferAttribute(t,s),bc.fromBufferAttribute(t,n);let o=gF(e,yc,xc,bc,z1,a);if(o){i&&(B1.fromBufferAttribute(i,r),R1.fromBufferAttribute(i,s),N1.fromBufferAttribute(i,n),o.uv=Di.getUV(z1,yc,xc,bc,B1,R1,N1,new H));let l={a:r,b:s,c:n,normal:new M,materialIndex:0};Di.getNormal(yc,xc,bc,l.normal),o.face=l,o.faceIndex=r}return o}function D_(e,t,i,r,s){let n=r*3,a=e.index.getX(n),o=e.index.getX(n+1),l=e.index.getX(n+2),h=vF(i,e.attributes.position,e.attributes.uv,a,o,l,t);return h?(h.faceIndex=r,s&&s.push(h),h):null}function yF(e,t,i,r,s,n){for(let a=r,o=r+s;a<o;a++)D_(e,t,i,a,n)}function xF(e,t,i,r,s){let n=1/0,a=null;for(let o=r,l=r+s;o<l;o++){let h=D_(e,t,i,o);h&&h.distance<n&&(a=h,n=h.distance)}return a}function O_(e,t,i){return e===null||(e.point.applyMatrix4(t.matrixWorld),e.distance=e.point.distanceTo(i.ray.origin),e.object=t,e.distance<i.near||e.distance>i.far)?null:e}function qr(e,t,i,r){let s=e.a,n=e.b,a=e.c,o=t,l=t+1,h=t+2;i&&(o=i.getX(t),l=i.getX(t+1),h=i.getX(t+2)),s.x=r.getX(o),s.y=r.getY(o),s.z=r.getZ(o),n.x=r.getX(l),n.y=r.getY(l),n.z=r.getZ(l),a.x=r.getX(h),a.y=r.getY(h),a.z=r.getZ(h)}function F1(e,t,i,r,s,n,a){let o=i.index,l=i.attributes.position;for(let h=e,u=t+e;h<u;h++)if(qr(a,h*3,o,l),a.needsUpdate=!0,r(a,h,s,n))return!0;return!1}var L_=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}};function tn(e,t){return t[e+15]===65535}function po(e,t){return t[e+6]}function oh(e,t){return t[e+14]}function lh(e){return e+8}function hh(e,t){return t[e+6]}function bF(e,t){return t[e+7]}var io=new Gt,Ud=new M,wF=["x","y","z"];function dm(e,t,i,r,s){let n=e*2,a=jo,o=pn,l=fn;if(tn(n,o)){let h=po(e,l),u=oh(n,o);yF(t,i,r,h,u,s)}else{let h=lh(e);kd(h,a,r,Ud)&&dm(h,t,i,r,s);let u=hh(e,l);kd(u,a,r,Ud)&&dm(u,t,i,r,s)}}function um(e,t,i,r){let s=e*2,n=jo,a=pn,o=fn;if(tn(s,a)){let l=po(e,o),h=oh(s,a);return xF(t,i,r,l,h)}else{let l=bF(e,o),h=wF[l],u=r.direction[h]>=0,c,d;u?(c=lh(e),d=hh(e,o)):(c=hh(e,o),d=lh(e));let p=kd(c,n,r,Ud)?um(c,t,i,r):null;if(p){let g=p.point[h];if(u?g<=n[d+l]:g>=n[d+l+3])return p}let m=kd(d,n,r,Ud)?um(d,t,i,r):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}var _F=function(){let e,t,i=[],r=new L_(()=>new Gt);return function(...n){e=r.getPrimitive(),t=r.getPrimitive(),i.push(e,t);let a=s(...n);r.releasePrimitive(e),r.releasePrimitive(t),i.pop(),i.pop();let o=i.length;return o>0&&(t=i[o-1],e=i[o-2]),a};function s(n,a,o,l,h=null,u=0,c=0){function d(y){let b=y*2,x=pn,w=fn;for(;!tn(b,x);)y=lh(y),b=y*2;return po(y,w)}function p(y){let b=y*2,x=pn,w=fn;for(;!tn(b,x);)y=hh(y,w),b=y*2;return po(y,w)+oh(b,x)}let m=n*2,g=jo,f=pn,v=fn;if(tn(m,f)){let y=po(n,v),b=oh(m,f);return Kr(n,g,e),l(y,b,!1,c,u+n,e)}else{let y=lh(n),b=hh(n,v),x=y,w=b,_,A,S,E;if(h&&(S=e,E=t,Kr(x,g,S),Kr(w,g,E),_=h(S),A=h(E),A<_)){x=b,w=y;let j=_;_=A,A=j,S=E}S||(S=e,Kr(x,g,S));let C=tn(x*2,f),T=o(S,C,_,c+1,u+x),P;if(T===2){let j=d(x),z=p(x)-j;P=l(j,z,!0,c+1,u+x,S)}else P=T&&s(x,a,o,l,h,u,c+1);if(P)return!0;E=t,Kr(w,g,E);let R=tn(w*2,f),O=o(E,R,A,c+1,u+w),U;if(O===2){let j=d(w),z=p(w)-j;U=l(j,z,!0,c+1,u+w,E)}else U=O&&s(w,a,o,l,h,u,c+1);return!!U}}}(),SF=function(){let e=new Os,t=new Os,i=new Se,r=new ds,s=new ds;return function n(a,o,l,h,u=null){let c=a*2,d=jo,p=pn,m=fn;if(u===null&&(l.boundingBox||l.computeBoundingBox(),r.set(l.boundingBox.min,l.boundingBox.max,h),u=r),tn(c,p)){let g=o,f=g.index,v=g.attributes.position,y=l.index,b=l.attributes.position,x=po(a,m),w=oh(c,p);if(i.copy(h).invert(),l.boundsTree)return Kr(a,d,s),s.matrix.copy(i),s.needsUpdate=!0,l.boundsTree.shapecast({intersectsBounds:_=>s.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(h),_.b.applyMatrix4(h),_.c.applyMatrix4(h),_.needsUpdate=!0;for(let A=x*3,S=(w+x)*3;A<S;A+=3)if(qr(t,A,f,v),t.needsUpdate=!0,_.intersectsTriangle(t))return!0;return!1}});for(let _=x*3,A=w+x*3;_<A;_+=3){qr(e,_,f,v),e.a.applyMatrix4(i),e.b.applyMatrix4(i),e.c.applyMatrix4(i),e.needsUpdate=!0;for(let S=0,E=y.count;S<E;S+=3)if(qr(t,S,y,b),t.needsUpdate=!0,e.intersectsTriangle(t))return!0}}else{let g=a+8,f=m[a+6];return Kr(g,d,io),!!(u.intersectsBox(io)&&n(g,o,l,h,u)||(Kr(f,d,io),u.intersectsBox(io)&&n(f,o,l,h,u)))}}}();function kd(e,t,i,r){return Kr(e,t,io),i.intersectBox(io,r)}var pm=[],ed,jo,pn,fn;function Dl(e){ed&&pm.push(ed),ed=e,jo=new Float32Array(e),pn=new Uint16Array(e),fn=new Uint32Array(e)}function wc(){ed=null,jo=null,pn=null,fn=null,pm.length&&Dl(pm.pop())}var Dp=Symbol("skip tree generation"),Op=new Gt,Lp=new Gt,Fa=new Se,Dn=new ds,ll=new ds,hl=new M,_c=new M,AF=new M,MF=new M,EF=new M,U1=new Gt,Ur=new L_(()=>new Os),ai=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),ai.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});t={cloneBuffers:!0,...t};let i=e.geometry,r=e._roots,s=i.getIndex(),n;return t.cloneBuffers?n={roots:r.map(a=>a.slice()),index:s.array.slice()}:n={roots:r,index:s.array},n}static deserialize(e,t,i={}){if(typeof i=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),ai.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});i={setIndex:!0,...i};let{index:r,roots:s}=e,n=new ai(t,{...i,[Dp]:!0});if(n._roots=s,i.setIndex){let a=t.getIndex();if(a===null){let o=new Qe(e.index,1,!1);t.setIndex(o)}else a.array!==r&&(a.array.set(r),a.needsUpdate=!0)}return n}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[Dp]:!1},t),t.useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[Dp]||(this._roots=uF(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Gt))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t=this.geometry,i=t.index.array,r=t.attributes.position,s=r.array,n=r.offset||0,a=3;r.isInterleavedBufferAttribute&&(a=r.data.stride);let o,l,h,u,c=0,d=this._roots;for(let m=0,g=d.length;m<g;m++)o=d[m],l=new Uint32Array(o),h=new Uint16Array(o),u=new Float32Array(o),p(0,c),c+=o.byteLength;function p(m,g,f=!1){let v=m*2;if(h[v+15]===65535){let y=l[m+6],b=h[v+14],x=1/0,w=1/0,_=1/0,A=-1/0,S=-1/0,E=-1/0;for(let C=3*y,T=3*(y+b);C<T;C++){let P=i[C]*a+n,R=s[P+0],O=s[P+1],U=s[P+2];R<x&&(x=R),R>A&&(A=R),O<w&&(w=O),O>S&&(S=O),U<_&&(_=U),U>E&&(E=U)}return u[m+0]!==x||u[m+1]!==w||u[m+2]!==_||u[m+3]!==A||u[m+4]!==S||u[m+5]!==E?(u[m+0]=x,u[m+1]=w,u[m+2]=_,u[m+3]=A,u[m+4]=S,u[m+5]=E,!0):!1}else{let y=m+8,b=l[m+6],x=y+g,w=b+g,_=f,A=!1,S=!1;e?_||(A=e.has(x),S=e.has(w),_=!A&&!S):(A=!0,S=!0);let E=_||A,C=_||S,T=!1;E&&(T=p(y,g,_));let P=!1;C&&(P=p(b,g,_));let R=T||P;if(R)for(let O=0;O<3;O++){let U=y+O,j=b+O,z=u[U],L=u[U+3],G=u[j],F=u[j+3];u[m+O]=z<G?z:G,u[m+O+3]=L>F?L:F}return R}}}traverse(e,t=0){let i=this._roots[t],r=new Uint32Array(i),s=new Uint16Array(i);n(0);function n(a,o=0){let l=a*2,h=s[l+15]===65535;if(h){let u=r[a+6],c=s[l+14];e(o,h,new Float32Array(i,a*4,6),u,c)}else{let u=a+8,c=r[a+6],d=r[a+7];e(o,h,new Float32Array(i,a*4,6),d)||(n(u,o+1),n(c,o+1))}}}raycast(e,t=mn){let i=this._roots,r=this.geometry,s=[],n=t.isMaterial,a=Array.isArray(t),o=r.groups,l=n?t.side:t;for(let h=0,u=i.length;h<u;h++){let c=a?t[o[h].materialIndex].side:l,d=s.length;if(Dl(i[h]),dm(0,r,c,e,s),wc(),a){let p=o[h].materialIndex;for(let m=d,g=s.length;m<g;m++)s[m].face.materialIndex=p}}return s}raycastFirst(e,t=mn){let i=this._roots,r=this.geometry,s=t.isMaterial,n=Array.isArray(t),a=null,o=r.groups,l=s?t.side:t;for(let h=0,u=i.length;h<u;h++){let c=n?t[o[h].materialIndex].side:l;Dl(i[h]);let d=um(0,r,c,e);wc(),d!=null&&(a==null||d.distance<a.distance)&&(a=d,n&&(d.face.materialIndex=o[h].materialIndex))}return a}intersectsGeometry(e,t){let i=this.geometry,r=!1;for(let s of this._roots)if(Dl(s),r=SF(0,i,e,t),wc(),r)break;return r}shapecast(e,t,i){let r=this.geometry;if(e instanceof Function){if(t){let c=t;t=(d,p,m,g)=>{let f=p*3;return c(d,f,f+1,f+2,m,g)}}e={boundsTraverseOrder:i,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Ur.getPrimitive(),{boundsTraverseOrder:n,intersectsBounds:a,intersectsRange:o,intersectsTriangle:l}=e;if(o&&l){let c=o;o=(d,p,m,g,f)=>c(d,p,m,g,f)?!0:F1(d,p,r,l,m,g,s)}else o||(l?o=(c,d,p,m)=>F1(c,d,r,l,p,m,s):o=(c,d,p)=>p);let h=!1,u=0;for(let c of this._roots){if(Dl(c),h=_F(0,r,a,o,n,u),wc(),h)break;u+=c.byteLength}return Ur.releasePrimitive(s),h}bvhcast(e,t,i){let{intersectsRanges:r,intersectsTriangles:s}=i,n=this.geometry.index,a=this.geometry.attributes.position,o=e.geometry.index,l=e.geometry.attributes.position;Fa.copy(t).invert();let h=Ur.getPrimitive(),u=Ur.getPrimitive();if(s){let d=function(p,m,g,f,v,y,b,x){for(let w=g,_=g+f;w<_;w++){qr(u,w*3,o,l),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let A=p,S=p+m;A<S;A++)if(qr(h,A*3,n,a),h.needsUpdate=!0,s(h,u,A,w,v,y,b,x))return!0}return!1};if(r){let p=r;r=function(m,g,f,v,y,b,x,w){return p(m,g,f,v,y,b,x,w)?!0:d(m,g,f,v,y,b,x,w)}}else r=d}e.getBoundingBox(Lp),Lp.applyMatrix4(t);let c=this.shapecast({intersectsBounds:d=>Lp.intersectsBox(d),intersectsRange:(d,p,m,g,f,v)=>(Op.copy(v),Op.applyMatrix4(Fa),e.shapecast({intersectsBounds:y=>Op.intersectsBox(y),intersectsRange:(y,b,x,w,_)=>r(d,p,y,b,g,f,w,_)}))});return Ur.releasePrimitive(h),Ur.releasePrimitive(u),c}intersectsBox(e,t){return Dn.set(e.min,e.max,t),Dn.needsUpdate=!0,this.shapecast({intersectsBounds:i=>Dn.intersectsBox(i),intersectsTriangle:i=>Dn.intersectsTriangle(i)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,i={},r={},s=0,n=1/0){e.boundingBox||e.computeBoundingBox(),Dn.set(e.boundingBox.min,e.boundingBox.max,t),Dn.needsUpdate=!0;let a=this.geometry,o=a.attributes.position,l=a.index,h=e.attributes.position,u=e.index,c=Ur.getPrimitive(),d=Ur.getPrimitive(),p=_c,m=AF,g=null,f=null;r&&(g=MF,f=EF);let v=1/0,y=null,b=null;return Fa.copy(t).invert(),ll.matrix.copy(Fa),this.shapecast({boundsTraverseOrder:x=>Dn.distanceToBox(x),intersectsBounds:(x,w,_)=>_<v&&_<n?(w&&(ll.min.copy(x.min),ll.max.copy(x.max),ll.needsUpdate=!0),!0):!1,intersectsRange:(x,w)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:_=>ll.distanceToBox(_),intersectsBounds:(_,A,S)=>S<v&&S<n,intersectsRange:(_,A)=>{for(let S=_*3,E=(_+A)*3;S<E;S+=3){qr(d,S,u,h),d.a.applyMatrix4(t),d.b.applyMatrix4(t),d.c.applyMatrix4(t),d.needsUpdate=!0;for(let C=x*3,T=(x+w)*3;C<T;C+=3){qr(c,C,l,o),c.needsUpdate=!0;let P=c.distanceToTriangle(d,p,g);if(P<v&&(m.copy(p),f&&f.copy(g),v=P,y=C/3,b=S/3),P<s)return!0}}}});{let _=u?u.count:h.count;for(let A=0,S=_;A<S;A+=3){qr(d,A,u,h),d.a.applyMatrix4(t),d.b.applyMatrix4(t),d.c.applyMatrix4(t),d.needsUpdate=!0;for(let E=x*3,C=(x+w)*3;E<C;E+=3){qr(c,E,l,o),c.needsUpdate=!0;let T=c.distanceToTriangle(d,p,g);if(T<v&&(m.copy(p),f&&f.copy(g),v=T,y=E/3,b=A/3),T<s)return!0}}}}}),Ur.releasePrimitive(c),Ur.releasePrimitive(d),v===1/0?null:(i.point?i.point.copy(m):i.point=m.clone(),i.distance=v,i.faceIndex=y,r&&(r.point?r.point.copy(f):r.point=f.clone(),r.point.applyMatrix4(Fa),m.applyMatrix4(Fa),r.distance=m.sub(r.point).length(),r.faceIndex=b),i)}closestPointToPoint(e,t={},i=0,r=1/0){let s=i*i,n=r*r,a=1/0,o=null;if(this.shapecast({boundsTraverseOrder:h=>(hl.copy(e).clamp(h.min,h.max),hl.distanceToSquared(e)),intersectsBounds:(h,u,c)=>c<a&&c<n,intersectsTriangle:(h,u)=>{h.closestPointToPoint(e,hl);let c=e.distanceToSquared(hl);return c<a&&(_c.copy(hl),a=c,o=u),c<s}}),a===1/0)return null;let l=Math.sqrt(a);return t.point?t.point.copy(_c):t.point=_c.clone(),t.distance=l,t.faceIndex=o,t}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{Kr(0,new Float32Array(t),U1),e.union(U1)}),e}},k1=ai.prototype.raycast;ai.prototype.raycast=function(...e){if(e[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycast" has changed. See docs for new signature.');let[t,i,r,s]=e;return k1.call(this,r,t.material).forEach(n=>{n=O_(n,t,i),n&&s.push(n)}),s}else return k1.apply(this,e)};var j1=ai.prototype.raycastFirst;ai.prototype.raycastFirst=function(...e){if(e[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycastFirst" has changed. See docs for new signature.');let[t,i,r]=e;return O_(j1.call(this,r,t.material),t,i)}else return j1.apply(this,e)};var H1=ai.prototype.closestPointToPoint;ai.prototype.closestPointToPoint=function(...e){if(e[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "closestPointToPoint" has changed. See docs for new signature.'),e.unshift();let t=e[1],i={};return e[1]=i,H1.apply(this,e),t&&t.copy(i.point),i.distance}else return H1.apply(this,e)};var G1=ai.prototype.closestPointToGeometry;ai.prototype.closestPointToGeometry=function(...e){let t=e[2],i=e[3];if(t&&t.isVector3||i&&i.isVector3){console.warn('MeshBVH: The function signature and results frame for "closestPointToGeometry" has changed. See docs for new signature.');let r={},s={},n=e[1];return e[2]=r,e[3]=s,G1.apply(this,e),t&&t.copy(r.point),i&&i.copy(s.point).applyMatrix4(n),r.distance}else return G1.apply(this,e)};var V1=ai.prototype.refit;ai.prototype.refit=function(...e){let t=e[0],i=e[1];if(i&&(i instanceof Set||Array.isArray(i))){console.warn('MeshBVH: The function signature for "refit" has changed. See docs for new signature.');let r=new Set;i.forEach(s=>r.add(s)),t&&t.forEach(s=>r.add(s)),V1.call(this,r)}else V1.apply(this,e)};["intersectsGeometry","shapecast","intersectsBox","intersectsSphere"].forEach(e=>{let t=ai.prototype[e];ai.prototype[e]=function(...i){return(i[0]===null||i[0].isMesh)&&(i.shift(),console.warn(`MeshBVH: The function signature for "${e}" has changed and no longer takes Mesh. See docs for new signature.`)),t.apply(this,i)}});var cl=Jd(p2()),CF=.5*(Math.sqrt(3)-1),dl=(3-Math.sqrt(3))/6,TF=1/3,kr=1/6,jV=(Math.sqrt(5)-1)/4,HV=(5-Math.sqrt(5))/20,Hl=e=>Math.floor(e)|0,W1=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Ip=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Bp(e=Math.random){let t=I_(e),i=new Float64Array(t).map(s=>W1[s%12*2]),r=new Float64Array(t).map(s=>W1[s%12*2+1]);return function(s,n){let a=0,o=0,l=0,h=(s+n)*CF,u=Hl(s+h),c=Hl(n+h),d=(u+c)*dl,p=u-d,m=c-d,g=s-p,f=n-m,v,y;g>f?(v=1,y=0):(v=0,y=1);let b=g-v+dl,x=f-y+dl,w=g-1+2*dl,_=f-1+2*dl,A=u&255,S=c&255,E=.5-g*g-f*f;if(E>=0){let P=A+t[S],R=i[P],O=r[P];E*=E,a=E*E*(R*g+O*f)}let C=.5-b*b-x*x;if(C>=0){let P=A+v+t[S+y],R=i[P],O=r[P];C*=C,o=C*C*(R*b+O*x)}let T=.5-w*w-_*_;if(T>=0){let P=A+1+t[S+1],R=i[P],O=r[P];T*=T,l=T*T*(R*w+O*_)}return 70*(a+o+l)}}function PF(e=Math.random){let t=I_(e),i=new Float64Array(t).map(n=>Ip[n%12*3]),r=new Float64Array(t).map(n=>Ip[n%12*3+1]),s=new Float64Array(t).map(n=>Ip[n%12*3+2]);return function(n,a,o){let l,h,u,c,d=(n+a+o)*TF,p=Hl(n+d),m=Hl(a+d),g=Hl(o+d),f=(p+m+g)*kr,v=p-f,y=m-f,b=g-f,x=n-v,w=a-y,_=o-b,A,S,E,C,T,P;x>=w?w>=_?(A=1,S=0,E=0,C=1,T=1,P=0):x>=_?(A=1,S=0,E=0,C=1,T=0,P=1):(A=0,S=0,E=1,C=1,T=0,P=1):w<_?(A=0,S=0,E=1,C=0,T=1,P=1):x<_?(A=0,S=1,E=0,C=0,T=1,P=1):(A=0,S=1,E=0,C=1,T=1,P=0);let R=x-A+kr,O=w-S+kr,U=_-E+kr,j=x-C+2*kr,z=w-T+2*kr,L=_-P+2*kr,G=x-1+3*kr,F=w-1+3*kr,V=_-1+3*kr,N=p&255,X=m&255,Z=g&255,ee=.6-x*x-w*w-_*_;if(ee<0)l=0;else{let Q=N+t[X+t[Z]];ee*=ee,l=ee*ee*(i[Q]*x+r[Q]*w+s[Q]*_)}let W=.6-R*R-O*O-U*U;if(W<0)h=0;else{let Q=N+A+t[X+S+t[Z+E]];W*=W,h=W*W*(i[Q]*R+r[Q]*O+s[Q]*U)}let ne=.6-j*j-z*z-L*L;if(ne<0)u=0;else{let Q=N+C+t[X+T+t[Z+P]];ne*=ne,u=ne*ne*(i[Q]*j+r[Q]*z+s[Q]*L)}let q=.6-G*G-F*F-V*V;if(q<0)c=0;else{let Q=N+1+t[X+1+t[Z+1]];q*=q,c=q*q*(i[Q]*G+r[Q]*F+s[Q]*V)}return 32*(l+h+u+c)}}function I_(e){let t=new Uint8Array(512);for(let i=0;i<512/2;i++)t[i]=i;for(let i=0;i<512/2-1;i++){let r=i+~~(e()*(256-i)),s=t[i];t[i]=t[r],t[r]=s}for(let i=256;i<512;i++)t[i]=t[i-256];return t}var wr=new Di,DF=class{constructor(e){this.weightAttribute=null;let t=e.geometry;if(!t.isBufferGeometry||t.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");t.index&&(t=t.toNonIndexed()),this.geometry=t,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let e=this.positionAttribute,t=new Float32Array(e.count/3);for(let r=0;r<e.count;r+=3){let s=1;wr.a.fromBufferAttribute(e,r),wr.b.fromBufferAttribute(e,r+1),wr.c.fromBufferAttribute(e,r+2),s*=wr.getArea(),t[r/3]=s}this.distribution=new Float32Array(e.count/3);let i=0;for(let r=0;r<t.length;r++)i+=t[r],this.distribution[r]=i;return this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t){if(this.distribution){let i=this.distribution[this.distribution.length-1],r=this.binarySearch(this.randomFunction()*i);return this.sampleFace(r,e,t)}}binarySearch(e){if(!this.distribution)return 0;let t=this.distribution,i=0,r=t.length-1,s=-1;for(;i<=r;){let n=Math.ceil((i+r)/2);if(n===0||t[n-1]<=e&&t[n]>e){s=n;break}else e<t[n]?r=n-1:i=n+1}return s}sampleFace(e,t,i){let r=this.randomFunction(),s=this.randomFunction();return r+s>1&&(r=1-r,s=1-s),wr.a.fromBufferAttribute(this.positionAttribute,e*3),wr.b.fromBufferAttribute(this.positionAttribute,e*3+1),wr.c.fromBufferAttribute(this.positionAttribute,e*3+2),t.set(0,0,0).addScaledVector(wr.a,r).addScaledVector(wr.b,s).addScaledVector(wr.c,1-(r+s)),wr.getNormal(i),this}},OF=Jd(Ib()),LF=new Se,IF=new Se,BF=new Se,jd;(e=>{function t(i){return i&&i.__isSPEObject}e.is=t})(jd||(jd={}));var zg=e=>class extends e{constructor(){super(...arguments),this.hiddenMatrix=new Se,this.matrixWorldRigid=new Se,this.shearScale=new Se,this.shearScaleInv=new Se}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof _t&&(t=t.uuid);let i=this;for(;i.parent;){if(i.parent.uuid===t)return!0;i=i.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let i of this.children)i.updateMatrixWorld(t)}updateWorldMatrix(t,i){let r=this.parent;if(t&&r!==null&&r.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),i)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,i=0){if(t(this,i)!==!0)for(let r of this.children)jd.is(r)&&r.traverseObject(t,i+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,i=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:r,v:s,q:n}=(0,OF.SVD)(i),a=LF.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1),o=IF.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),l=BF.copy(o).transpose();this.shearScale.makeScale(n[0],n[1],n[2]).multiply(l).premultiply(o),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,l).copyPosition(this.matrixWorld),n.every(h=>Math.abs(n[0]-h)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,i){this.updateWorldMatrix(!0,!1);let r=new Se().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),r.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Se?t.hiddenMatrix.premultiply(r):t.applyMatrix4(r),t.updateWorldMatrix(!1,!1),this.add(t),i!==void 0&&(this.children.pop(),this.children.splice(i,0,t)),this}},RF=class extends zg(_t){},NF=e=>e.type==="Mesh",Xn=class extends RF{constructor(e){super(),this.object=e,this.matrixAutoUpdate=!1}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let i=this.children[e];i?.object!==t&&(i&&this.remove(i),i=new Xn(t),this.add(i),i.matrixAutoUpdate=!1,i.matrix=t.matrix,i.hiddenMatrix=t.hiddenMatrix),i.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return NF(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}},Un=new M,kn=new M,fo=new Se,B_=[new M(-1,1,1),new M(-1,-1,1),new M(1,-1,1),new M(1,1,1),new M(-1,1,-1),new M(-1,-1,-1),new M(1,-1,-1),new M(1,1,-1)],zF=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],FF=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],X1=(e,t,i)=>{e.updateEntityBoxSize(Un,kn),fo.copy(t).multiply(e.matrixWorld),kn.x===0&&kn.y===0&&kn.z===0?i.push(new M(Un.x,Un.y,Un.z).applyMatrix4(fo)):B_.forEach(r=>{i.push(r.clone().multiply(kn).add(Un).applyMatrix4(fo))})},Y1=class extends Gt{constructor(){super(...arguments),this.matrix=new Se,this.vertices=[],this.faces=[],this.edges=[],this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let i=new Se().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,i,t)}expandByObjectSize(e,t,i=!1){let r=[];return i===!0?e.traverseEntity(s=>{s.visible&&X1(s,t,r)}):X1(e,t,r),this.setFromPoints(r)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(fo.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(kn).multiplyScalar(.5),this.getCenter(Un),fo.copy(this.matrix).setPosition(Un),this.vertices=B_.map(e=>e.clone().multiply(kn).applyMatrix4(fo))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=zF.map(([e,t])=>new cr(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=FF.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}},ln={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}},Ft;(e=>{function t(i){return i&&i.__isEntity}e.is=t})(Ft||(Ft={}));var Wi=e=>Ft.is(e),R_=e=>class extends zg(e){constructor(){super(...arguments),this.raycastLock=!1,this.scaleLock=!1,this.disposed=!1,this.stateSelection=null,this.instances=[],this.prevState=null,this.currentState=null,this.reversibleToState=null,this.currentTransitionEvent=null,this._singleBBox=new Y1,this._recursiveBBox=new Y1,this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get __isEntity(){return!0}entityChildren(t){let i=this.children[t];if(Ft.is(i))return i}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let i=t.parent;if(Ft.is(i))t=i;else return}return t}forInstancesRec(t){this.instances.forEach(i=>{i.disposed||t(i),i.forInstancesRec(t)})}super_Entity(t,i){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=i,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,i,r=!1){if(!(this.data.states.length===0&&!r)){for(let s of this.data.states)Wn.toOps(this.data,s.data).forEach(n=>{let a=Hf.replaceProps(n,this.data);this.updateByPatchedOp(a,this.data,i)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=Wn.patch(this.data,s),Wn.toOps(this.data,s).forEach(n=>{this.updateByPatchedOp(n,this.dataPatched,i)}))}else this.dataPatched=this.data;r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,i){t.setScalar(0),i.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Wi(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let i;return this.traverseEntity(r=>{r.uuid===t&&(i=r)}),i}traverseSortNextHelper(){let t=this.parent;if(t){let i=t.children,r=i.indexOf(this)+1;if(Ft.is(i[r]))return i[r];if(Ft.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ft.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let i=this;for(;t>0&&i!==null;)i=i.parent,t-=1;return i}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let i=this.parent;for(;i;){if(t===i)return!0;i=i.parent}return!1}countToAccestor(t){let i=0,r=this;for(;r!==t;){if(r===null)return-1;r=r.parent,i+=1}return i}forEachEntity(t){for(let i of this.children)Wi(i)&&t(i)}traverseEntityAncestors(t){this.traverseAncestors(i=>{Ft.is(i)&&t(i)})}traverseEntity(t,i=0){if(t(this,i)!==!0)for(let r of this.children)Wi(r)&&r.traverseEntity(t,i+1)}traverseVisibleEntity(t){t(this);for(let i of this.children)Wi(i)&&i.visible&&i.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,i=!0){return super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Wi(t))}isAncestorOf(t){if(this.uuid===t)return!1;let i=!1;return this.traverseEntity(r=>{r.uuid===t&&(i=!0)}),i}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let i={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return jf(i,t)}updateTransformState(t){let i=!1;return t.position&&(this.position.fromArray(t.position),i=!0),t.rotation&&(this.rotation.fromArray(t.rotation),i=!0),t.scale&&(i=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Mo.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(r=>{r.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ft.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ft.is(t)&&t.disposeRecursively()})}toState(t=[]){let i={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return jf(i,t)}updateByOp(t,i,r,s){let n=this.data;this.data=i;let a=t,o=Vn(t.path,["states","*"]);if(o!==null){if(t.type===0){let[l]=o;if(this?.stateSelection===l){let h={...t.props};if(Object.values(t.props).some(u=>u===void 0)){let u=this.data;if(u!==void 0){let c=ss.zoom(u,t.path.slice(2));if(c)for(let d in t.props)t.props[d]===void 0&&d in c&&(h[d]=c[d])}}a={...t,props:h,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:u,...c}=l;l=c}if(t.props.material!==void 0&&"material"in l){let{material:u,...c}=l;l=c}let h=ss.removeOverridden(t.path,t.props,l);a={...t,props:h}}}if(this.updateByPatchedOpBase(a,Wn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r),Vn(t.path,["overrides"])){let l=[],h=[...t.path];for(l.push(h[1]),h.splice(0,2);h.length>0&&h[0]==="descendants";)l.push(h[1]),h.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let u of Object.keys(t.props)){l[l.length-1]=u;let c=r.scene.findInstance([this.uuid,...l]);c&&(c.overrideData=t.props[u],c.updateState(Jn.apply(c.component.data,c.overrideData),r))}}else{let u=r.scene.findInstance([this.uuid,...l]);if(u){let c=ss.zoom(u.component.data,h);if(t={...t,path:h},t.type===0){let d=t.props;if(c)for(let[p,m]of Object.entries(t.props))m===void 0&&(d===t.props&&(d={...t.props}),d[p]=c[p]);t={...t,props:d}}u.overrideData=Od.resolve(i.overrides,l),u.updateByOp(t,Yi.applySimple(u.data,t),r,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let h;for(let u of Co.rootOverrideProps)u in t.props&&(h===void 0&&(h={}),h[u]=t.props[u]);h&&(l={...t,props:h})}else for(let h of Co.rootOverrideProps)if(Vn(t.path,[h])){l=t;break}l!==void 0&&this.instances.forEach(h=>{if(h.isInstanceRoot){let u=Jn.filterOp(h.overrideData,l);u&&h.updateByOp(u,Yi.applySimple(h.data,u),r,!0)}}),this.instances.forEach(h=>{if(!h.isInstanceRoot){let u=Jn.filterOp(h.overrideData,t);if(u){let c;n===h.data&&t===u?c=i:c=Yi.applySimple(h.data,u),h.updateByOp(u,c,r,!0)}}})}}updateByPatchedOpBase(t,i,r){if(this.dataPatched=i,t.path.length===0&&t.type===0)t.props.type!==void 0&&!na.is(t.props.type)&&ln.changeEntityProptotype(this,i,r);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){ln.changeEntityProptotype(this,i,r);for(let s of this.children)Ft.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,i,r)}updateByPatchedOp(t,i,r){if(t.path.length===0&&t.type===0&&this.updateState(t.props,r),Vn(t.path,["cloner"])!==null){let s=Yi.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,r):this.cloner?this.cloner.updateState(i.cloner,r.scene):(this.setFromClonerState(i.cloner,r),this.expandCloner(r.scene)),this.updateVisible()}}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,i){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,i),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof ln.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,i){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):(this.cloner===void 0&&(this.cloner=new ln.Cloner(this,t),i.scene.addPendingExpandCloner(this)),this.cloner.updateState(t,i.scene)))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}},UF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},e.parameters),r=i.width/2,s=i.radiusTop??r,n=i.radiusBottom??r;return s===n?(s=r,n=r):s>n?(s=r,n=n*r/s):(s=s*r/n,n=r),{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width),radiusTop:s,radiusBottom:n})}}static build(e){let{width:t,depth:i,height:r,radialSegments:s,heightSegments:n,openEnded:a,thetaStart:o,thetaLength:l,radiusTop:h,radiusBottom:u,cornerRadius:c,cornerSegments:d,hollow:p}=e.parameters,m;return c||p?m=new N_(h,u,r,s,n,a,o,l*Math.PI/180,c,c,d,p):m=new $m(h,u,r,s,n,a,o,l*Math.PI/180),m.scale(1,1,i/t),Object.assign(m,{userData:{...e,type:"CylinderGeometry"}})}};function Xs(e,t,i){i.x=e.x*t.x,i.y=e.y,i.z=e.x*t.y}function q1(e){return new H(e.y,-e.x)}var N_=class extends ke{constructor(e,t,i,r,s,n,a,o,l,h,u,c,d=!1){super(),this.type="RoundedCylinderBufferGeometry",e=e!==void 0?e:1,t=t!==void 0?t:1,i=i||1,r=Math.floor(r)||8,s=Math.floor(s)||1,n=n!==void 0?n:!1,a=a!==void 0?a:0,o=o!==void 0?o:Math.PI*2,n&&(l=0,h=0);let p=[],m=[],g=[],f=[],v=0,y=i/2,b=new M,x=new M;d&&e==0&&(e=l),d&&t==0&&(t=h);let w=new H(e,y),_=new H(t,-y),A=null,S=null,E=null,C=null,T=w.clone().sub(_),P=0,R=0,O=0;c>0&&(P=Math.min(e,t)*(1-c),R=e-P,O=t-P);let U=w.clone();U.x-=P;let j=Math.PI-T.angle(),z=T.angle(),L=Math.tan(z/2),G=Math.tan(j/2),F=L+G,V=c?F:G,N=c?F:L;if(l=Math.min(l,(e-R)/V,T.length()/F),h=Math.min(h,(t-O)/N,T.length()/F),l>0){let q=l/L;A=w.clone().sub(new H(q,l)),c&&(E=A.clone(),E.x-=P-F*l),w.sub(T.clone().setLength(q))}if(h>0){let q=h/G;S=_.clone().sub(new H(q,-h)),_.add(T.clone().setLength(q)),c&&(C=S.clone(),C.x-=P-F*h,U.sub(T.clone().setLength(q)))}T=w.clone().sub(_);let X=T.length()<.5,Z=[];for(let q=0;q<=r;q++){let Q=[],K=q/r,de=K*o+a,oe=new H(Math.sin(de),Math.cos(de));C&&S?(ee(Q,K,oe,j,h,C,-1,!0),ee(Q,K,oe,z,h,S,-1,!1)):S?(W(Q,oe,S.x,0,-1),ee(Q,K,oe,z,h,S,-1,!1)):n||W(Q,oe,t,O,-1);let le=q1(T).normalize();if(Xs(le,oe,b),!X)for(let ue=0;ue<=s;ue++){let pe=ue/s,ge=T.clone().multiplyScalar(pe).add(_);Xs(ge,oe,x),m.push(x.x,x.y,x.z),g.push(b.x,b.y,b.z),f.push(K,.5+x.y/i),Q.push(v++)}if(E&&A?(ee(Q,K,oe,j,l,A,1,!1),ee(Q,K,oe,z,l,E,1,!0)):A?(ee(Q,K,oe,j,l,A,1,!1),W(Q,oe,A.x,0,1)):n||W(Q,oe,e,R,1),c&&!X){let ue=q1(T).multiplyScalar(-1).normalize();Xs(ue,oe,b);for(let pe=0;pe<=s;pe++){let ge=pe/s,De=T.clone().multiplyScalar(-ge).add(U);Xs(De,oe,x),m.push(x.x,x.y,x.z),g.push(b.x,b.y,b.z),f.push(K,.5+x.y/i),Q.push(v++)}}c&&!n&&Q.push(Q[0]),Z.push(Q)}for(let q=0;q<Z.length-1;q++)for(let Q=0;Q<Z[0].length-1;Q++){if(n&&c&&Q==s)continue;let K=Z[q][Q],de=Z[q+1][Q],oe=Z[q+1][Q+1],le=Z[q][Q+1],ue=m[oe*3+0],pe=m[oe*3+2];p.push(K,de,le),(ue!=0||pe!=0)&&p.push(de,oe,le)}o<Math.PI*2&&(ne(-1,Z[0],a),ne(1,Z[Z.length-1],a+o)),this.setIndex(p),this.setAttribute("position",new Ee(m,3)),this.setAttribute("normal",new Ee(g,3)),this.setAttribute("uv",new Ee(f,2));function ee(q,Q,K,de,oe,le,ue,pe){for(let ge=0;ge<u+1;ge++){let De=ge/u,Ae=ue<0?De:1-De;pe&&(Ae-=1),Ae*=de;let we=new H(Math.sin(Ae),Math.cos(Ae)*ue),bt=we.clone().multiplyScalar(oe).add(le);Xs(bt,K,x),m.push(x.x,x.y,x.z),Xs(we,K,b),g.push(b.x,b.y,b.z),f.push(Q,.5+x.y/i),q.push(v++)}}function W(q,Q,K,de,oe){let le=new M,ue=new H,pe=[K,de];oe<0&&pe.reverse();for(let ge of pe)ue.set(ge,y*oe),Xs(ue,Q,le),m.push(le.x,le.y,le.z),g.push(0,oe,0),f.push(.5,.5),q.push(v++)}function ne(q,Q,K){let de=new H(Math.sin(K),Math.cos(K)),oe=new H(-Math.cos(K),Math.sin(K)),le=new M,ue=q<0?(De,Ae,we)=>p.push(De,Ae,we):(De,Ae,we)=>p.push(De,we,Ae),pe=new H((e+t+R+O)/4,0);Xs(pe,de,le),m.push(le.x,le.y,le.z),g.push(oe.x,0,oe.y),f.push(.5,.5);let ge=v++;for(let De of Q){let Ae=m.slice(De*3,De*3+3);m.push(...Ae),g.push(oe.x,0,oe.y);let we=f.slice(De*2,De*2+2);f.push(...we),v++}for(let De=ge+1;De<v-1;De++)ue(ge,De,De+1);ue(ge,v-1,ge+1)}}},kF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,depth:i,height:r,radialSegments:s,heightSegments:n,openEnded:a,thetaStart:o,thetaLength:l,cornerRadiusTop:h,cornerRadiusBottom:u,cornerSegments:c}=e.parameters,d;return h>0||u>0||l<360?d=new N_(0,t/2,r,s,n,a,o,l*Math.PI/180,h,u,c,0,!0):d=new sw(t/2,r,s,n,a),d.scale(1,1,i/t),Object.assign(d,{userData:{...e,type:"ConeGeometry"}})}},jF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,widthSegments:s,heightSegments:n,depthSegments:a,cornerRadius:o,cornerSegments:l}=e.parameters,h;return o==0?h=new os(t,i,r,s,n,a):h=new HF(t,i,r,s,n,a,o,l),Object.assign(h,{userData:{...e,type:"CubeGeometry"}})}},Rp=Math.PI/2,HF=class extends ke{constructor(e=1,t=1,i=1,r=1,s=1,n=1,a=0,o=4){super(),this.type="BoxGeometry";let l=this;r=Math.floor(r),s=Math.floor(s),n=Math.floor(n),o=Math.floor(o),a=Math.min(a,e/2,t/2,i/2);let h=[],u=[],c=[],d=[],p=0,m=0;g("z","y","x",-1,-1,i,t,e,n,s,0),g("z","y","x",1,-1,i,t,-e,n,s,1),g("x","z","y",1,1,e,i,t,r,n,2),g("x","z","y",1,-1,e,i,-t,r,n,3),g("x","y","z",1,-1,e,t,i,r,s,4),g("x","y","z",-1,-1,e,t,-i,r,s,5),a>0&&(f("z","y","x",-1,-1,1,i,t,e,n,0),f("z","y","x",1,-1,-1,i,t,e,n,1),f("z","y","x",-1,1,-1,i,t,e,n,1),f("z","y","x",1,1,1,i,t,e,n,0),f("x","y","z",-1,-1,-1,e,t,i,r,0),f("x","y","z",1,-1,1,e,t,i,r,1),f("x","y","z",-1,1,1,e,t,i,r,0),f("x","y","z",1,1,-1,e,t,i,r,1),f("y","x","z",-1,-1,1,t,e,i,s,0),f("y","x","z",1,-1,-1,t,e,i,s,1),f("y","x","z",1,1,1,t,e,i,s,1),f("y","x","z",-1,1,-1,t,e,i,s,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new Ee(u,3)),this.setAttribute("normal",new Ee(c,3)),this.setAttribute("uv",new Ee(d,2));function g(y,b,x,w,_,A,S,E,C,T,P){let R=(A-2*a)/C,O=(S-2*a)/T,U=A/2-a,j=S/2-a,z=E/2,L=C+1,G=T+1,F=0,V=0,N=new M;for(let X=0;X<G;X++){let Z=X*O-j;for(let ee=0;ee<L;ee++){let W=ee*R-U;N[y]=W*w,N[b]=Z*_,N[x]=z,u.push(N.x,N.y,N.z),N[y]=0,N[b]=0,N[x]=E>0?1:-1,c.push(N.x,N.y,N.z),d.push(ee/C),d.push(1-X/T),F+=1}}for(let X=0;X<T;X++)for(let Z=0;Z<C;Z++){let ee=p+Z+L*X,W=p+Z+L*(X+1),ne=p+(Z+1)+L*(X+1),q=p+(Z+1)+L*X;h.push(ee,W,q),h.push(W,ne,q),V+=6}l.addGroup(m,V,P),m+=V,p+=F}function f(y,b,x,w,_,A,S,E,C,T,P){let R=(S-2*a)/T,O=S/2-a,U=E/2-a,j=C/2,z=T+1,L=0,G=0,F=new M,V=new M;for(let N=0;N<o+1;N++){let X=N/o*Rp,Z=Math.sin(X)*a,ee=(1-Math.cos(X))*a,W=Math.sin(X),ne=Math.cos(X);F[b]=(U+Z)*_,F[x]=(j-ee)*A,V[y]=0,V[b]=W*Math.sign(F[b]),V[x]=ne*Math.sign(F[x]);for(let q=0;q<z;q++){let Q=q*R-O;F[y]=Q*w,u.push(F.x,F.y,F.z),c.push(V.x,V.y,V.z),d.push(q/T),d.push(0),L+=1}}for(let N=0;N<o;N++)for(let X=0;X<T;X++){let Z=p+X+z*N,ee=p+X+z*(N+1),W=p+(X+1)+z*(N+1),ne=p+(X+1)+z*N;h.push(Z,ee,ne),h.push(ee,W,ne),G+=6}l.addGroup(m,G,P),m+=G,p+=L}function v(y,b,x){let w=new M,_=new M(e/2,t/2,i/2);_.subScalar(a);let A=[],S=y*b*x>0?(C,T,P)=>h.push(C,T,P):(C,T,P)=>h.push(C,P,T);for(let C=0;C<=o;C++){let T=[],P=Rp*(1-C/o),R=Math.cos(P),O=Math.sin(P),U=0;for(let j=0;j<=C;j++){let z=Math.cos(U),L=Math.sin(U);w.x=R*z,w.y=O,w.z=R*L;let G=_.clone().addScaledVector(w,a);u.push(y*G.x,b*G.y,x*G.z),c.push(y*w.x,b*w.y,x*w.z),d.push(0,0),T.push(p++),U+=Rp/C}A.push(T)}let E=A.length-1;for(let C=0;C<E;C++){let T=A[C],P=A[C+1],R=T.length-1;S(T[0],P[1],P[0]);for(let O=1;O<=R;O++)S(T[O-1],T[O],P[O]),S(T[O],P[O+1],P[O])}}}},Fg=class extends ke{constructor(e=[],t=[],i="",r=1,s=.2,n=4){super(),this.type="PolyhedronGeometryRound";let a=[],o=[],l=[];h(),u(),this.setAttribute("position",new Ee(a,3)),this.setAttribute("normal",new Ee(l,3)),this.setAttribute("uv",new Ee(o,2));return;function h(){s=Math.min(1-1e-5,s),s==0&&(n=0);let c={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[i],d=new M,p=d.clone(),m=new Di,g=s*r,f=r-g,v=n+1,y=new M,b=(z,L)=>y.subVectors(z,L).normalize(),x=(z,L)=>Array(z).fill(void 0).map(L),w=x(e.length/3,(z,L)=>new M().fromArray(e,L*3).setLength(r)),_=[],A=1e6;for(let z=0;z<w.length;z++){let L=w[z],G=[],F,V,N,X=1e10,Z=-1;for(;(Z=t.indexOf(z,Z+1))!=-1;){let q=Z-Z%3;F=t[q+(Z+1)%3],V=t[q+(Z+2)%3],N=L.distanceToSquared(w[F]),X=Math.min(X,N),G.push([F,V,N])}X+=1e-6;let ee=[],W=0,ne=G.length;for(let q=0;q<ne;q++){[F,V,N]=G[W];let Q=_[F]?.includes(z)==!0;N<=X&&ee.push(F+ +Q*A),W=G.findIndex(K=>K[0]==V)}_.push(ee)}let S=[];{let z=0,L=0,G,F,V=c==3;for(let N=0;N<=n;N++){G=N*(N+1)/2,F=(N+1)*(N+2)/2;for(let X=0;X<n-N;X++)[z,L]=[G+X+N+2,F+X+N+3],S.push(G,F,...V?[L,G]:[z,F],L,z),[G,F]=[z,L];S.push(G,F,G+n+2)}}let E=d.clone(),C=d.clone(),T=d.clone(),P=d.clone(),R=d.clone(),O=[],U=x(w.length,()=>x(c,()=>d.clone()));for(let z=0;z<w.length;z++){d.copy(w[z]).normalize(),E.copy(d).multiplyScalar(f);let L=_[z];for(let ee=0;ee<L.length;ee++){let W=L[ee],ne=L[(ee+1)%c];m.setFromPointsAndIndices(w,z,W%A,ne%A),m.b.sub(m.a).setLength(1e10).add(m.a),m.c.sub(m.a).setLength(1e10).add(m.a),m.closestPointToPoint(E,U[z][ee])}let G=[],F=[],V=[],N=new M;n==0&&[...U[z]].reduce((ee,W)=>ee.add(W),N).multiplyScalar(1/c);for(let ee=0;ee<c;ee++){let W=[],ne=(ee-1+c)%c,q=U[z][ne],Q=U[z][ee];d.copy(q).sub(E),p.copy(Q).sub(E);let K=E.angleTo(d),de=d.angleTo(p),oe=Math.cos(K)*g;n==0?C.copy(N):C.copy(E).setLength(f+oe),F.push(oe);let le=[C,q,Q];for(let ue=0;ue<2;ue++){let pe=le[ue],ge=le[ue+1];P.subVectors(pe,E),R.subVectors(ge,E),T.crossVectors(P,R).normalize();for(let De=0;De<v;De++){let Ae=[K,de][ue]*De/v;d.copy(P).applyAxisAngle(T,Ae).add(E),G.push(d.clone()),ue&&(b(d,E),W.push([De==0?pe:d.clone(),y.clone()]))}ue&&(b(ge,E),W.push([ge,y.clone()]))}V.push(W)}O.push(V);let X=2*v,Z=2;for(let ee=0;ee<c;ee++){let W=X*ee,ne=X*((ee+1)%c),q=[G[W]];for(let K=1;K<v;K++){P=G[W+K],R=G[ne+K],q.push(P);for(let de=1,oe=K-Z+1;de<=oe;de++)d.lerpVectors(P,R,de/(oe+1)),d.sub(E).setLength(F[ee]).add(E),q.push(d.clone());q.push(R)}for(let K=0;K<v;K++)q.push(G[K+v+W]);q.push(G[ne+v]);let Q=S.map(K=>q[K]);a.push(...Q.map(K=>[K.x,K.y,K.z]).flat()),l.push(...Q.map(K=>(b(K,E),[y.x,y.y,y.z])).flat())}}let j=[];for(let z=0;z<_.length;z++)for(let L=0;L<c;L++){let G=_[z][L];if(G<A){let F=_[G].findIndex(X=>X%A==z),V=O[z][L],N=O[G][F];for(let X=0;X<v;X++){let Z=V[X],ee=N[v-X],W=V[X+1],ne=N[v-(X+1)];[Z,ee,W,W,ee,ne].forEach(q=>{a.push(q[0].x,q[0].y,q[0].z),l.push(q[1].x,q[1].y,q[1].z)})}j.push(V[0][0],N[v][0],V[v][0],N[0][0])}}for(;j.length;){let z,L,G,F;[z,L]=j.splice(0,2);let V=[z];for(;z!=L;)V.push(L),G=j.indexOf(L),F=G%2,L=j.splice(G-F,2)[1-F];y.subVectors(V[0],V[1]).cross(d.subVectors(V[0],V[2])).normalize();let N=y.dot(V[0])<0;N&&y.negate();for(let X=1;X<=V.length-2;X++)[V[X+ +N],V[X+1-+N],V[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),l.push(y.x,y.y,y.z)})}}function u(){let c=new M;for(let _=0;_<a.length;_+=3){c.x=a[_+0],c.y=a[_+1],c.z=a[_+2];let A=x(c)/2/Math.PI+.5,S=w(c)/Math.PI+.5;o.push(A,1-S)}let d=new M,p=new M,m=new M,g=new M,f=new H,v=new H,y=new H,b=(_,A,S,E)=>{E<0&&_.x===1&&(o[A]=_.x-1),S.x===0&&S.z===0&&(o[A]=E/2/Math.PI+.5)};for(let _=0,A=0;_<a.length;_+=9,A+=6){d.set(a[_+0],a[_+1],a[_+2]),p.set(a[_+3],a[_+4],a[_+5]),m.set(a[_+6],a[_+7],a[_+8]),f.set(o[A+0],o[A+1]),v.set(o[A+2],o[A+3]),y.set(o[A+4],o[A+5]),g.copy(d).add(p).add(m).divideScalar(3);let S=x(g);b(f,A+0,d,S),b(v,A+2,p,S),b(y,A+4,m,S)}for(let _=0;_<o.length;_+=6){let A=o[_+0],S=o[_+2],E=o[_+4],C=Math.max(A,S,E),T=Math.min(A,S,E);C>.9&&T<.1&&(A<.2&&(o[_+0]+=1),S<.2&&(o[_+2]+=1),E<.2&&(o[_+4]+=1))}function x(_){return Math.atan2(_.z,-_.x)}function w(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(e){return new Fg(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}},GF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,detail:s,corner:n,cornerSides:a}=e.parameters,o=s===0&&n!==0?new z_(t*.5,n,a):new nw(t*.5,s);return o.scale(1,i/t,r/t),Object.assign(o,{userData:{...e,type:"DodecahedronGeometry"}})}},z_=class extends Fg{constructor(e=1,t=.2,i=4){let r=(1+Math.sqrt(5))/2,s=1/r,n=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-r,0,-s,r,0,s,-r,0,s,r,-s,-r,0,-s,r,0,s,-r,0,s,r,0,-r,0,-s,r,0,-s,-r,0,s,r,0,s],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],o="DodecahedronGeometry";super(n,a,o,e,t,i),this.type=o}static fromJSON(e){return new z_(e.radius,e.corner,e.cornerSides)}},ul=1e-12,Ug=class{constructor(e){this.position=new H,this.startPosition=new H,this.uuid=rt.generateUUID(),this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new Ug(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},fm=class extends Ug{constructor(e){super(e.position),this.parent=e}copy(e){return super.copy(e),this}clone(){return new fm(this.parent).copy(this)}},mo=class extends Ug{constructor(e,t){super(t),this.controls=[],this.roundness=0,this.areControlsDirectionsMirrored=!0,this.uuid=e,this.controls.push(new fm(this),new fm(this))}static create(e,t){let i=new mo(e,new H(...t.position));return i.controls[0].position.set(...t.controlPrevious.position),i.controls[1].position.set(...t.controlNext.position),i.roundness=t.roundness,i.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,i}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let i=0,r=this.controls.length;i<r;i++){let s=this.controls[i];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new mo(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new H,t=new H){let[i,r]=this.computeTangents();return i&&r&&(Q1(i,e),Q1(r,t)),[e,t]}computeTangent(e=new H){let[t,i]=this.computeTangents();return t&&i&&e.copy(t).add(i).normalize(),e}computeNormal(e=new H){let[t,i]=this.computeNormals();return e.copy(t).add(i).normalize(),e}};function Q1(e,t=new H){let i=e.length();return t.set(-e.y/i,e.x/i)}var kg=e=>e,Ho=new H,gu=new H,VF=new H,WF=new H,XF=new H,YF=new H,F_=new M,U_=new M;function qF(e){let t=new H;t.addVectors(e.v0,Ho.subVectors(e.v1,e.v0).multiplyScalar(2/3));let i=new H;return i.addVectors(e.v2,gu.subVectors(e.v1,e.v2).multiplyScalar(2/3)),new Cr(e.v0,t,i,e.v2)}function Ol(e,t,i=Number.EPSILON){return Math.abs(e-t)<i}function QF(e,t,i=Number.EPSILON){return e.distanceTo(t)<i}function ZF(e,t,i=Number.EPSILON){return e.distanceTo(t)<i}function k_(e,t,i){let r=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),s=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),n=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2));return Math.acos((s*s+r*r-n*n)/(2*s*r))}function KF(e,t,i){return K1(e,t)&&K1(t,i)&&mm(e.position,t.position,i.position)}function mm(e,t,i){return Ho.copy(t).sub(e).cross(gu.copy(i).sub(e))===0}function JF(e,t,i,r,s){let n=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),a=(e.y+t.y)/2,o=(e.x+t.x)/2,l=Math.sqrt(Math.pow(i,2)-Math.pow(n/2,2))*(e.y-t.y)/n,h=Math.sqrt(Math.pow(i,2)-Math.pow(n/2,2))*(t.x-e.x)/n;return r.set(o+l,a+h),s.set(o-l,a-h),[r,s]}function $F(e,t,i){let r=e.distanceTo(i),s=t.distanceTo(i);return r<s?t:e}function eU(e,t,i,r,s,n){let a=t.x-e.x,o=t.y-e.y,l=i.x-e.x,h=i.y-e.y,u=Math.sqrt((a+l)*(a+l)+(o+h)*(o+h)),c;return k_(t,e,i)>Math.PI&&(u*=-1),Ol(h,o)?c=(o+h)*(r/u-.5)*8/3/(a-l):c=(a+l)*(r/u-.5)*8/3/(h-o),s.set(t.x-c*o,t.y+c*a),n.set(i.x+c*h,i.y-c*l),[s,n]}function Z1(e,t){return e.position.equals(e.controls[1].position)&&t.position.equals(t.controls[0].position)}function K1(e,t){return mm(e.position,e.controls[1].position,t.position)&&mm(e.position,t.controls[0].position,t.position)}function tU(e,t,i,r,s=.5){let n=Ho.subVectors(t,e).multiplyScalar(s).add(e),a=gu.subVectors(i,t).multiplyScalar(s).add(t),o=VF.subVectors(r,i).multiplyScalar(s).add(i),l=n,h=WF.subVectors(a,n).multiplyScalar(s).add(n),u=XF.subVectors(o,a).multiplyScalar(s).add(a),c=o,d=YF.subVectors(u,h).multiplyScalar(s).add(h);return[e.x,e.y,l.x,l.y,h.x,h.y,d.x,d.y,u.x,u.y,c.x,c.y,r.x,r.y]}function iU(e,t,i=12,r=!0){let s=U_.set(0,0,0),n,a=0,o=[];for(let l=0;l<t.length;l++){let h=kg(t[l]),u=Ho,c=ea(h,i);o.push(c);for(let d=0;d<=c;d++)if(h instanceof Cr||h instanceof gn||h instanceof Dr){if(h.getPoint(d/c,u),s.set(u.x,u.y,0),n!==void 0&&ZF(n,s))continue;n===void 0&&(n=F_),n.copy(s),e.setXYZ(a,s.x,s.y,s.z),a++}}return r&&a>1&&!(e.getX(a-1)===e.getX(0)&&e.getY(a-1)===e.getY(0)&&e.getZ(a-1)===e.getZ(0))&&(e.setXYZ(a,e.getX(0),e.getY(0),e.getZ(0)),a++),e}function rU(e,t,i,r=12,s=!0){let n=U_.set(0,0,0),a=0,o=[];for(let l=0;l<t.length;l++){if(i[l]===!1)continue;let h,u=kg(t[l]),c=Ho,d=ea(u,r);o.push(d);for(let p=0;p<=d;p++)if(u instanceof Cr||u instanceof gn||u instanceof Dr){if(u.getPoint(p/d,c),n.set(c.x,c.y,0),h?.equals(n))continue;h===void 0?h=F_:(e.setXYZ(a,h.x,h.y,h.z),a++,e.setXYZ(a,n.x,n.y,n.z),a++),h.copy(n)}}return s&&a>1&&!(e.getX(a-1)===e.getX(0)&&e.getY(a-1)===e.getY(0)&&e.getZ(a-1)===e.getZ(0))&&(e.setXYZ(a,e.getX(0),e.getY(0),e.getZ(0)),a++),o}function J1(e,t=12,i=!1){let r=[];for(let s=0,n=e.length;s<n;s++){let a=e[s],o=0;if(i&&a.roundedCurveCorner!==void 0){let l=ea(a.roundedCurveCorner,t)*.5;s>0&&(r[s-1]+=l),o+=l}a.curveAfter!==void 0&&(o+=ea(a.curveAfter,t)),r.push(o)}return e.length>0&&i&&e[0].roundedCurveCorner!==void 0&&(r[e.length-1]+=ea(e[0].roundedCurveCorner,t)*.5),r}function ea(e,t=12){return e&&e instanceof tu?t*2:e&&(e instanceof Dr||e instanceof iw)?1:e&&e instanceof Jm?t*e.points.length:t}function sU(e,t,i=12,r=!0){let s,n=0;for(let a=0;a<t.length;a++){let o=kg(t[a]),l=ea(o,i),h=Ho;for(let u=0;u<=l;u++)if(o instanceof Cr||o instanceof gn||o instanceof Dr){if(o.getPoint(u/l,h),s!==void 0&&QF(s,h,ul))continue;s===void 0&&(s=gu),s.copy(h),e.push(h.x,h.y),n++}}return Ol(e[0],e[e.length-2],ul)&&Ol(e[1],e[e.length-1],ul)&&(e.pop(),e.pop()),r&&n>1&&!(Ol(e[n-1],e[1],ul)&&Ol(e[n-2],e[0],ul))&&(e.push(e[0],e[1]),n++),e}var Np=new H,nU=new H,aU=new H,oU=new H,lU=new H,hU=new H,Bt=class extends dd{constructor(e=100,t=100){super(),this.points=[],this.shapeHoles=[],this.plane=new ar(new M(0,0,-1)),this.subdivision=0,this.controlSnapDistance=4,this.pointIDs=0,this.isMesh2D=!1,this._roundness=0,this.isClosed=!1,this.useCubicForRoundedCorners=!0,this.uuid=rt.generateUUID(),this.needsUpdate=!1,this.roundedCurves=[],this._width=e,this._height=t}static createFromState(e,t,i){let r=new Bt;return r.isClosed=e.isClosed,r.points=e.points.map(s=>mo.create(s.id,s.data)),typeof e.roundness=="number"&&(r.roundness=e.roundness),r.shapeHoles=e.shapeHoles.map(s=>Bt.createFromState(s)),t!==void 0&&i!==void 0&&r.applySize(t,i),r.update(),r}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,i=this.points.length;t<i;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,i=this.points.findIndex(r=>r.uuid===e);if(i<0){let r=t;for(let s=0,n=this.shapeHoles.length;s<n;s++){let a=this.shapeHoles[s],o=a.points.length,l=a.getPointIndexById(e);if(l<0)r+=o;else return l+r}}return i}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let i=0,r=this.shapeHoles.length;i<r;i++){let s=this.shapeHoles[i],n=e-t;if(n<=s.points.length-1)return s.points[n];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let i=0,r=this.shapeHoles.length;i<r;i++){let s=this.shapeHoles[i],n=s.points.indexOf(e);if(n>=0)return t+n;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let i=Np.set(e,t);for(let r=0,s=this.points.length;r<s;r++){let n=this.points[r];n.position.multiply(i),n.controls[0].position.multiply(i),n.controls[1].position.multiply(i)}for(let r=0,s=this.shapeHoles.length;r<s;r++)this.shapeHoles[r].applyScale(e,t);this._update()}createPoint(e,t=0,i=rt.generateUUID()){let r;e instanceof H?r=e:r=new H(e,t);let s=new mo(i,r);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];if(r.uuid===e)return r}for(let t=0,i=this.shapeHoles.length;t<i;t++){let r=this.shapeHoles[t].getPointByUuid(e);if(r)return r}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(i=>i.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,i=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let r=i?this.roundedCurveDivisions:this.curveDivisions;return iU(e,i?this.roundedCurves:this.curves,t,this.autoClose),r.reduce((s,n)=>s+n,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=J1(this.points,e,!1),this.roundedCurveDivisions=J1(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,i=12){return rU(e,this.curves,t,i,this.autoClose).reduce((r,s)=>r+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),sU(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let i=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let r=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=ea(this.points[0].roundedCurveCorner,this.subdivision)*.5);let n=e-s;n<0&&(n+=r.reduce((a,o)=>a+o,0));for(let a=0,o=r.length;a<o;a++){let l=r[a];if(n<i+l)return[a,(n-i+1)/l];i+=l}return[0,1]}getCurveT(e,t,i){let r=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],n=this.curveDivisions,a=n[e];if(Z1(r,s)){let l=r.position.distanceTo(s.position);return r.position.distanceTo(Np.set(i.x,i.y))/l}let o=0;for(let l=0;l<e;l++)o+=n[l];return(t-o)/a}dispose(){}_applyCurveForPoint(e,t){Z1(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let i=this.curves[this.curves.length-1];e.curveBefore=i,t.curveAfter=i;let r=i.clone();e.roundedCurveBefore=r,t.roundedCurveAfter=r,e.roundedCurveCorner=void 0,this.roundedCurves.push(r)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];if(t===0)this.moveTo(r.position.x,r.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(r,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(t,i)}if(this.points.length>2){let t=0;for(let i=0,r=this.points.length;i<r;i++){let s=this.points[i],n=this.points[i-1]??this.points[this.points.length-1],a=this.points[i+1]??this.points[0],o=s.roundness,l=n&&a&&KF(n,s,a);if(!s.controlsMoved()&&o>0&&!l){let h=s.curveBefore,u=s.curveAfter;if(h===void 0||u===void 0)continue;let c=s.roundedCurveBefore,d=s.roundedCurveAfter,p=h.getLength(),m=u.getLength(),g=Math.min(o,p*.499),f=Math.min(o,m*.499),v=Math.min(g,f),y=1-v/p,b=v/m,x=h.getPointAt(y,Np),w=u.getPointAt(b,nU);this._subSplitCurve(h,c,y,x,void 0),this._subSplitCurve(u,d,b,void 0,w);let _;if(this.useCubicForRoundedCorners){let A=k_(x,s.position,w)/2,S=Math.tan(A)*x.distanceTo(s.position),[E,C]=JF(x,w,S,aU,oU),T=$F(E,C,s.position),[P,R]=eU(T,x,w,S,lU,hU);_=new Cr(x.clone(),P.clone(),R.clone(),w.clone())}else _=new gn(x.clone(),s.position.clone(),w.clone());s.roundedCurveCorner=_,this.roundedCurves.splice(i+t,0,_),t++}}}}_subSplitCurve(e,t,i,r,s){if(e instanceof Dr)r!==void 0&&t.v2.copy(r),s!==void 0&&t.v1.copy(s);else{let n=e,a=t,o=n.getUtoTmapping(i,0),l=tU(n.v0,n.v1,n.v2,n.v3,o);return r!==void 0&&(a.v0.set(l[0],l[1]),a.v1.set(l[2],l[3]),a.v2.set(l[4],l[5]),a.v3.set(l[6],l[7])),s!==void 0&&(a.v0.set(l[6],l[7]),a.v1.set(l[8],l[9]),a.v2.set(l[10],l[11]),a.v3.set(l[12],l[13])),a}return t}clone(){let e=new Bt(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let i=0;i<t;i++){let r=i*7,s=e.points[r+0],n=e.points[r+1],a=e.points[r+2],o=e.points[r+3],l=e.points[r+4],h=e.points[r+5],u=e.points[r+6],c=new mo(rt.generateUUID(),new H(s,n));c.controls[0].position.set(a,o),c.controls[1].position.set(l,h),c.roundness=u,this.points.push(c)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(i=>{let r=new Bt;return r.fromJSON(i),r}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(r,s)=>{s instanceof Cr&&s.v3.equals(r.position)&&r.controls[0].position.copy(s.v2)},i=r=>{let s=[],n,a;for(n=0,a=r.length;n<a;n++)r[n]instanceof gn&&(r[n]=qF(r[n]));for(n=0,a=r.length;n<a;n++){let h=r[n],u=n>0?r[n-1]:null,c;h instanceof Cr?(c=this.createPoint(h.v0),c.controls[1].position.copy(h.v1)):h instanceof Dr&&(c=this.createPoint(h.v1)),c!==void 0&&(u!==null&&t(c,u),s.push(c))}let o=r[r.length-1],l=!1;return o instanceof Cr?o.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(o.v2),l=!0):o instanceof Dr&&o.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=i(e.curves),e instanceof dd&&(this.shapeHoles=e.holes.map(r=>{let s=new Bt;return s.fromShape(r),s})),this.update(),this}updatePoint(e,t){let i=this.getPointByUuid(e);i&&(t.position!==void 0&&i.position.fromArray(t.position),t.roundness!==void 0&&(i.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(i.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}},gm=Math.PI*2;function zp({x:e,y:t},i,r,s,n){return{x:e*i+s,y:t*r+n}}function cU(e,t){let i=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(e),s=Math.sin(e),n=Math.cos(e+t),a=Math.sin(e+t);return[{x:r-s*i,y:s+r*i},{x:n+a*i,y:a-n*i},{x:n,y:a}]}function $1(e,t,i,r){let s=e*r-t*i<0?-1:1,n=Math.min(1,Math.max(-1,e*i+t*r));return s*Math.acos(n)}function dU(e,t,i,r,s,n,a,o,l,h){let u=Math.pow(s,2),c=Math.pow(n,2),d=Math.pow(a,2),p=Math.pow(o,2),m=u*c-u*p-c*d;m<0&&(m=0),m/=u*p+c*d,m=Math.sqrt(m)*(l===h?-1:1);let g=m*s/n*o,f=m*-n/s*a,v=g+(e+i)/2,y=f+(t+r)/2,b=(a-g)/s,x=(o-f)/n,w=(-a-g)/s,_=(-o-f)/n,A=$1(1,0,b,x),S=$1(b,x,w,_);return!h&&S>0&&(S-=gm),h&&S<0&&(S+=gm),{centerx:v,centery:y,ang1:A,ang2:S}}function uU({px:e,py:t,cx:i,cy:r,rx:s,ry:n,largeArcFlag:a,sweepFlag:o}){let l=[];if(s===0||n===0)return[];let h=(e-i)/2,u=(t-r)/2;if(h===0&&u===0)return[];s=Math.abs(s),n=Math.abs(n);let c=Math.pow(h,2)/Math.pow(s,2)+Math.pow(u,2)/Math.pow(n,2);c>1&&(s*=Math.sqrt(c),n*=Math.sqrt(c));let d=dU(e,t,i,r,s,n,h,u,a,o),{ang1:p,ang2:m}=d,{centerx:g,centery:f}=d,v=Math.abs(m)/(gm/4);Math.abs(1-v)<1e-7&&(v=1);let y=Math.max(Math.ceil(v),1);m/=y;for(let b=0;b<y;b++)l.push(cU(p,m)),p+=m;return l.map(b=>{let{x,y:w}=zp(b[0],s,n,g,f),{x:_,y:A}=zp(b[1],s,n,g,f),{x:S,y:E}=zp(b[2],s,n,g,f);return{x1:x,y1:w,x2:_,y2:A,x:S,y:E}})}var Et;(function(e){e[e.ODD=0]="ODD",e[e.NONZERO=1]="NONZERO",e[e.POSITIVE=2]="POSITIVE",e[e.NEGATIVE=3]="NEGATIVE",e[e.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Et||(Et={}));var ri;(function(e){e[e.POLYGONS=0]="POLYGONS",e[e.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",e[e.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ri||(ri={}));function ze(e,t){if(!e)throw t||"Assertion Failed!"}var Ie=function(){function e(){}return e.vertEq=function(t,i){return t.s===i.s&&t.t===i.t},e.vertLeq=function(t,i){return t.s<i.s||t.s===i.s&&t.t<=i.t},e.transLeq=function(t,i){return t.t<i.t||t.t===i.t&&t.s<=i.s},e.edgeGoesLeft=function(t){return e.vertLeq(t.Dst,t.Org)},e.edgeGoesRight=function(t){return e.vertLeq(t.Org,t.Dst)},e.vertL1dist=function(t,i){return Math.abs(t.s-i.s)+Math.abs(t.t-i.t)},e.edgeEval=function(t,i,r){ze(e.vertLeq(t,i)&&e.vertLeq(i,r));var s=i.s-t.s,n=r.s-i.s;return s+n>0?s<n?i.t-t.t+(t.t-r.t)*(s/(s+n)):i.t-r.t+(r.t-t.t)*(n/(s+n)):0},e.edgeSign=function(t,i,r){ze(e.vertLeq(t,i)&&e.vertLeq(i,r));var s=i.s-t.s,n=r.s-i.s;return s+n>0?(i.t-r.t)*s+(i.t-t.t)*n:0},e.transEval=function(t,i,r){ze(e.transLeq(t,i)&&e.transLeq(i,r));var s=i.t-t.t,n=r.t-i.t;return s+n>0?s<n?i.s-t.s+(t.s-r.s)*(s/(s+n)):i.s-r.s+(r.s-t.s)*(n/(s+n)):0},e.transSign=function(t,i,r){ze(e.transLeq(t,i)&&e.transLeq(i,r));var s=i.t-t.t,n=r.t-i.t;return s+n>0?(i.s-r.s)*s+(i.s-t.s)*n:0},e.vertCCW=function(t,i,r){return t.s*(i.t-r.t)+i.s*(r.t-t.t)+r.s*(t.t-i.t)>=0},e.interpolate=function(t,i,r,s){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(i+s)/2:i+(s-i)*(t/(t+r)):s+(i-s)*(r/(t+r))},e.intersect=function(t,i,r,s,n){var a,o,l;e.vertLeq(t,i)||(l=t,t=i,i=l),e.vertLeq(r,s)||(l=r,r=s,s=l),e.vertLeq(t,r)||(l=t,t=r,r=l,l=i,i=s,s=l),e.vertLeq(r,i)?e.vertLeq(i,s)?(a=e.edgeEval(t,r,i),o=e.edgeEval(r,i,s),a+o<0&&(a=-a,o=-o),n.s=e.interpolate(a,r.s,o,i.s)):(a=e.edgeSign(t,r,i),o=-e.edgeSign(t,s,i),a+o<0&&(a=-a,o=-o),n.s=e.interpolate(a,r.s,o,s.s)):n.s=(r.s+i.s)/2,e.transLeq(t,i)||(l=t,t=i,i=l),e.transLeq(r,s)||(l=r,r=s,s=l),e.transLeq(t,r)||(l=t,t=r,r=l,l=i,i=s,s=l),e.transLeq(r,i)?e.transLeq(i,s)?(a=e.transEval(t,r,i),o=e.transEval(r,i,s),a+o<0&&(a=-a,o=-o),n.t=e.interpolate(a,r.t,o,i.t)):(a=e.transSign(t,r,i),o=-e.transSign(t,s,i),a+o<0&&(a=-a,o=-o),n.t=e.interpolate(a,r.t,o,s.t)):n.t=(r.t+i.t)/2},e}(),pl=function(){function e(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return e}(),Sc=function(){function e(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(e.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),e}(),Ya=function(){function e(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return e}(),ex=function(){function e(){var t=new Ya,i=new pl,r=new Sc(0),s=new Sc(1);t.next=t.prev=t,t.anEdge=null,i.next=i.prev=i,r.next=r,r.Sym=s,s.next=s,s.Sym=r,this.vHead=t,this.fHead=i,this.eHead=r,this.eHeadSym=s}return e.prototype.makeEdge_=function(t){var i=new Sc(0),r=new Sc(1);t.Sym.side<t.side&&(t=t.Sym);var s=t.Sym.next;return r.next=s,s.Sym.next=i,i.next=t,t.Sym.next=r,i.Sym=r,i.Onext=i,i.Lnext=r,i.Org=null,i.Lface=null,i.winding=0,i.activeRegion=null,r.Sym=i,r.Onext=r,r.Lnext=i,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,i},e.prototype.splice_=function(t,i){var r=t.Onext,s=i.Onext;r.Sym.Lnext=i,s.Sym.Lnext=t,t.Onext=s,i.Onext=r},e.prototype.makeVertex_=function(t,i,r){var s=t;ze(s,"Vertex can't be null!");var n=r.prev;s.prev=n,n.next=s,s.next=r,r.prev=s,s.anEdge=i;var a=i;do a.Org=s,a=a.Onext;while(a!==i)},e.prototype.makeFace_=function(t,i,r){var s=t;ze(s,"Face can't be null");var n=r.prev;s.prev=n,n.next=s,s.next=r,r.prev=s,s.anEdge=i,s.trail=null,s.marked=!1,s.inside=r.inside;var a=i;do a.Lface=s,a=a.Lnext;while(a!==i)},e.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var i=t.next,r=t.Sym.next;i.Sym.next=r,r.Sym.next=i},e.prototype.killVertex_=function(t,i){var r=t.anEdge,s=r;do s.Org=i,s=s.Onext;while(s!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},e.prototype.killFace_=function(t,i){var r=t.anEdge,s=r;do s.Lface=i,s=s.Lnext;while(s!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},e.prototype.makeEdge=function(){var t=new Ya,i=new Ya,r=new pl,s=this.makeEdge_(this.eHead);return this.makeVertex_(t,s,this.vHead),this.makeVertex_(i,s.Sym,this.vHead),this.makeFace_(r,s,this.fHead),s},e.prototype.splice=function(t,i){var r=!1,s=!1;if(t!==i){if(i.Org!==t.Org&&(s=!0,this.killVertex_(i.Org,t.Org)),i.Lface!==t.Lface&&(r=!0,this.killFace_(i.Lface,t.Lface)),this.splice_(i,t),!s){var n=new Ya;this.makeVertex_(n,i,t.Org),t.Org.anEdge=t}if(!r){var a=new pl;this.makeFace_(a,i,t.Lface),t.Lface.anEdge=t}}},e.prototype.delete=function(t){var i=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var s=new pl;this.makeFace_(s,t,t.Lface)}i.Onext===i?(this.killVertex_(i.Org,null),this.killFace_(i.Lface,null)):(t.Lface.anEdge=i.Oprev,i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t)},e.prototype.addEdgeVertex=function(t){var i=this.makeEdge_(t),r=i.Sym;this.splice_(i,t.Lnext),i.Org=t.Dst;var s=new Ya;return this.makeVertex_(s,r,i.Org),i.Lface=r.Lface=t.Lface,i},e.prototype.splitEdge=function(t){var i=this.addEdgeVertex(t),r=i.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},e.prototype.connect=function(t,i){var r=!1,s=this.makeEdge_(t),n=s.Sym;if(i.Lface!==t.Lface&&(r=!0,this.killFace_(i.Lface,t.Lface)),this.splice_(s,t.Lnext),this.splice_(n,i),s.Org=t.Dst,n.Org=i.Org,s.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var a=new pl;this.makeFace_(a,s,t.Lface)}return s},e.prototype.zapFace=function(t){var i=t.anEdge,r,s,n,a,o;s=i.Lnext;do r=s,s=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=i);a=t.prev,o=t.next,o.prev=a,a.next=o},e.prototype.countFaceVerts_=function(t){var i=t.anEdge,r=0;do r++,i=i.Lnext;while(i!==t.anEdge);return r},e.prototype.mergeConvexFaces=function(t){var i,r,s,n,a,o,l;for(i=this.fHead.next;i!==this.fHead;i=i.next)if(i.inside)for(r=i.anEdge,a=r.Org;s=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(o=this.countFaceVerts_(i),l=this.countFaceVerts_(n.Lface),o+l-2<=t&&Ie.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&Ie.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(s=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=s;return!0},e.prototype.check=function(){var t=this.fHead,i=this.vHead,r=this.eHead,s,n,a,o,l,h;for(n=t,n=t;(s=n.next)!==t;n=s){ze(s.prev===n),l=s.anEdge;do ze(l.Sym!==l),ze(l.Sym.Sym===l),ze(l.Lnext.Onext.Sym===l),ze(l.Onext.Sym.Lnext===l),ze(l.Lface===s),l=l.Lnext;while(l!==s.anEdge)}for(ze(s.prev===n&&s.anEdge===null),o=i,o=i;(a=o.next)!==i;o=a){ze(a.prev===o),l=a.anEdge;do ze(l.Sym!==l),ze(l.Sym.Sym===l),ze(l.Lnext.Onext.Sym===l),ze(l.Onext.Sym.Lnext===l),ze(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(ze(a.prev===o&&a.anEdge===null),h=r,h=r;(l=h.next)!==r;h=l)ze(l.Sym.next===h.Sym),ze(l.Sym!==l),ze(l.Sym.Sym===l),ze(l.Org!==null),ze(l.Dst!==null),ze(l.Lnext.Onext.Sym===l),ze(l.Onext.Sym.Lnext===l);ze(l.Sym.next===h.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},e}(),tx=function(){function e(){this.handle=null}return e}(),ix=function(){function e(){this.key=null,this.node=0}return e}(),pU=function(){function e(t,i){this.leq=i,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new tx,this.handles[r]=new ix;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return e.prototype.floatDown_=function(t){var i=this.nodes,r=this.handles,s,n,a;for(s=i[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[i[a+1].handle].key,r[i[a].handle].key)&&++a,ze(a<=this.max),n=i[a].handle,a>this.size||this.leq(r[s].key,r[n].key)){i[t].handle=s,r[s].node=t;break}i[t].handle=n,r[n].node=t,t=a}},e.prototype.floatUp_=function(t){var i=this.nodes,r=this.handles,s,n,a;for(s=i[t].handle;;){if(a=t>>1,n=i[a].handle,a===0||this.leq(r[n].key,r[s].key)){i[t].handle=s,r[s].node=t;break}i[t].handle=n,r[n].node=t,t=a}},e.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},e.prototype.min=function(){return this.handles[this.nodes[1].handle].key},e.prototype.insert=function(t){var i,r;if(i=++this.size,i*2>this.max){this.max*=2;var s,n;for(n=this.nodes.length,this.nodes.length=this.max+1,s=n;s<this.nodes.length;s++)this.nodes[s]=new tx;for(n=this.handles.length,this.handles.length=this.max+1,s=n;s<this.handles.length;s++)this.handles[s]=new ix}return this.freeList===0?r=i:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[i].handle=r,this.handles[r].node=i,this.handles[r].key=t,this.initialized&&this.floatUp_(i),r},e.prototype.extractMin=function(){var t=this.nodes,i=this.handles,r=t[1].handle,s=i[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,i[t[1].handle].node=1,i[r].key=null,i[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),s},e.prototype.delete=function(t){var i=this.nodes,r=this.handles,s;ze(t>=1&&t<=this.max&&r[t].key!==null),s=r[t].node,i[s].handle=i[this.size].handle,r[i[s].handle].node=s,--this.size,s<=this.size&&(s<=1||this.leq(r[i[s>>1].handle].key,r[i[s].handle].key)?this.floatDown_(s):this.floatUp_(s)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},e}(),Fp=function(){function e(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return e}(),rx=function(){function e(){this.key=null,this.next=null,this.prev=null}return e}(),fU=function(){function e(t,i){this.frame=t,this.leq=i,this.head=new rx,this.head.next=this.head,this.head.prev=this.head}return e.prototype.min=function(){return this.head.next},e.prototype.max=function(){return this.head.prev},e.prototype.insert=function(t){return this.insertBefore(this.head,t)},e.prototype.search=function(t){var i=this.head;do i=i.next;while(i.key!==null&&!this.leq(this.frame,t,i.key));return i},e.prototype.insertBefore=function(t,i){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,i));var r=new rx;return r.key=i,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},e.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},e}(),mU=function(){function e(){}return e.regionBelow=function(t){return t.nodeUp.prev.key},e.regionAbove=function(t){return t.nodeUp.next.key},e.debugEvent=function(t){},e.addWinding=function(t,i){t.winding+=i.winding,t.Sym.winding+=i.Sym.winding},e.edgeLeq=function(t,i,r){var s=t.event,n=i.eUp,a=r.eUp;if(n.Dst===s)return a.Dst===s?Ie.vertLeq(n.Org,a.Org)?Ie.edgeSign(a.Dst,n.Org,a.Org)<=0:Ie.edgeSign(n.Dst,a.Org,n.Org)>=0:Ie.edgeSign(a.Dst,s,a.Org)<=0;if(a.Dst===s)return Ie.edgeSign(n.Dst,s,n.Org)>=0;var o=Ie.edgeEval(n.Dst,s,n.Org),l=Ie.edgeEval(a.Dst,s,a.Org);return o>=l},e.deleteRegion=function(t,i){i.fixUpperEdge&&ze(i.eUp.winding===0),i.eUp.activeRegion=null,t.dict.delete(i.nodeUp)},e.fixUpperEdge=function(t,i,r){ze(i.fixUpperEdge),t.mesh.delete(i.eUp),i.fixUpperEdge=!1,i.eUp=r,r.activeRegion=i},e.topLeftRegion=function(t,i){var r=i.eUp.Org,s;do i=e.regionAbove(i);while(i.eUp.Org===r);if(i.fixUpperEdge){if(s=t.mesh.connect(e.regionBelow(i).eUp.Sym,i.eUp.Lnext),s===null)return null;e.fixUpperEdge(t,i,s),i=e.regionAbove(i)}return i},e.topRightRegion=function(t){var i=t.eUp.Dst;do t=e.regionAbove(t);while(t.eUp.Dst===i);return t},e.addRegionBelow=function(t,i,r){var s=new Fp;return s.eUp=r,s.nodeUp=t.dict.insertBefore(i.nodeUp,s),s.fixUpperEdge=!1,s.sentinel=!1,s.dirty=!1,r.activeRegion=s,s},e.isWindingInside=function(t,i){switch(t.windingRule){case Et.ODD:return(i&1)!==0;case Et.NONZERO:return i!==0;case Et.POSITIVE:return i>0;case Et.NEGATIVE:return i<0;case Et.ABS_GEQ_TWO:return i>=2||i<=-2}throw new Error("Invalid winding rulle")},e.computeWinding=function(t,i){i.windingNumber=e.regionAbove(i).windingNumber+i.eUp.winding,i.inside=e.isWindingInside(t,i.windingNumber)},e.finishRegion=function(t,i){var r=i.eUp,s=r.Lface;s.inside=i.inside,s.anEdge=r,e.deleteRegion(t,i)},e.finishLeftRegions=function(t,i,r){for(var s,n=null,a=i,o=i.eUp;a!==r;){if(a.fixUpperEdge=!1,n=e.regionBelow(a),s=n.eUp,s.Org!=o.Org){if(!n.fixUpperEdge){e.finishRegion(t,a);break}s=t.mesh.connect(o.Lprev,s.Sym),e.fixUpperEdge(t,n,s)}o.Onext!==s&&(t.mesh.splice(s.Oprev,s),t.mesh.splice(o,s)),e.finishRegion(t,a),o=n.eUp,a=n}return o},e.addRightEdges=function(t,i,r,s,n,a){var o,l,h,u,c=!0;h=r;do ze(Ie.vertLeq(h.Org,h.Dst)),e.addRegionBelow(t,i,h.Sym),h=h.Onext;while(h!==s);for(n===null&&(n=e.regionBelow(i).eUp.Rprev),l=i,u=n;o=e.regionBelow(l),h=o.eUp.Sym,h.Org===u.Org;)h.Onext!==u&&(t.mesh.splice(h.Oprev,h),t.mesh.splice(u.Oprev,h)),o.windingNumber=l.windingNumber-h.winding,o.inside=e.isWindingInside(t,o.windingNumber),l.dirty=!0,!c&&e.checkForRightSplice(t,l)&&(e.addWinding(h,u),e.deleteRegion(t,l),t.mesh.delete(u)),c=!1,l=o,u=h;l.dirty=!0,ze(l.windingNumber-h.winding===o.windingNumber),a&&e.walkDirtyRegions(t,l)},e.spliceMergeVertices=function(t,i,r){t.mesh.splice(i,r)},e.vertexWeights=function(t,i,r){var s=Ie.vertL1dist(i,t),n=Ie.vertL1dist(r,t),a=.5*n/(s+n),o=.5*s/(s+n);t.coords[0]+=a*i.coords[0]+o*r.coords[0],t.coords[1]+=a*i.coords[1]+o*r.coords[1],t.coords[2]+=a*i.coords[2]+o*r.coords[2]},e.getIntersectData=function(t,i,r,s,n,a){i.coords[0]=i.coords[1]=i.coords[2]=0,i.idx=-1,e.vertexWeights(i,r,s),e.vertexWeights(i,n,a)},e.checkForRightSplice=function(t,i){var r=e.regionBelow(i),s=i.eUp,n=r.eUp;if(Ie.vertLeq(s.Org,n.Org)){if(Ie.edgeSign(n.Dst,s.Org,n.Org)>0)return!1;Ie.vertEq(s.Org,n.Org)?s.Org!==n.Org&&(t.pq.delete(s.Org.pqHandle),e.spliceMergeVertices(t,n.Oprev,s)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(s,n.Oprev),i.dirty=r.dirty=!0)}else{if(Ie.edgeSign(s.Dst,n.Org,s.Org)<0)return!1;e.regionAbove(i).dirty=i.dirty=!0,t.mesh.splitEdge(s.Sym),t.mesh.splice(n.Oprev,s)}return!0},e.checkForLeftSplice=function(t,i){var r=e.regionBelow(i),s=i.eUp,n=r.eUp,a;if(ze(!Ie.vertEq(s.Dst,n.Dst)),Ie.vertLeq(s.Dst,n.Dst)){if(Ie.edgeSign(s.Dst,n.Dst,s.Org)<0)return!1;e.regionAbove(i).dirty=i.dirty=!0,a=t.mesh.splitEdge(s),t.mesh.splice(n.Sym,a),a.Lface.inside=i.inside}else{if(Ie.edgeSign(n.Dst,s.Dst,n.Org)>0)return!1;i.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(s.Lnext,n.Sym),a.Rface.inside=i.inside}return!0},e.checkForIntersect=function(t,i){var r=e.regionBelow(i),s=i.eUp,n=r.eUp,a=s.Org,o=n.Org,l=s.Dst,h=n.Dst,u,c,d=new Ya,p,m;if(ze(!Ie.vertEq(h,l)),ze(Ie.edgeSign(l,t.event,a)<=0),ze(Ie.edgeSign(h,t.event,o)>=0),ze(a!==t.event&&o!==t.event),ze(!i.fixUpperEdge&&!r.fixUpperEdge),a===o||(u=Math.min(a.t,l.t),c=Math.max(o.t,h.t),u>c))return!1;if(Ie.vertLeq(a,o)){if(Ie.edgeSign(h,a,o)>0)return!1}else if(Ie.edgeSign(l,o,a)<0)return!1;return e.debugEvent(t),Ie.intersect(l,a,h,o,d),ze(Math.min(a.t,l.t)<=d.t),ze(d.t<=Math.max(o.t,h.t)),ze(Math.min(h.s,l.s)<=d.s),ze(d.s<=Math.max(o.s,a.s)),Ie.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),p=Ie.vertLeq(a,o)?a:o,Ie.vertLeq(p,d)&&(d.s=p.s,d.t=p.t),Ie.vertEq(d,a)||Ie.vertEq(d,o)?(e.checkForRightSplice(t,i),!1):!Ie.vertEq(l,t.event)&&Ie.edgeSign(l,t.event,d)>=0||!Ie.vertEq(h,t.event)&&Ie.edgeSign(h,t.event,d)<=0?h===t.event?(t.mesh.splitEdge(s.Sym),t.mesh.splice(n.Sym,s),i=e.topLeftRegion(t,i),s=e.regionBelow(i).eUp,e.finishLeftRegions(t,e.regionBelow(i),r),e.addRightEdges(t,i,s.Oprev,s,s,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(s.Lnext,n.Oprev),r=i,i=e.topRightRegion(i),m=e.regionBelow(i).eUp.Rprev,r.eUp=n.Oprev,n=e.finishLeftRegions(t,r,null),e.addRightEdges(t,i,n.Onext,s.Rprev,m,!0),!0):(Ie.edgeSign(l,t.event,d)>=0&&(e.regionAbove(i).dirty=i.dirty=!0,t.mesh.splitEdge(s.Sym),s.Org.s=t.event.s,s.Org.t=t.event.t),Ie.edgeSign(h,t.event,d)<=0&&(i.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(s.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,s),s.Org.s=d.s,s.Org.t=d.t,s.Org.pqHandle=t.pq.insert(s.Org),e.getIntersectData(t,s.Org,a,l,o,h),e.regionAbove(i).dirty=i.dirty=r.dirty=!0,!1)},e.walkDirtyRegions=function(t,i){for(var r=e.regionBelow(i),s,n;;){for(;r.dirty;)i=r,r=e.regionBelow(r);if(!i.dirty&&(r=i,i=e.regionAbove(i),i===null||!i.dirty))return;if(i.dirty=!1,s=i.eUp,n=r.eUp,s.Dst!==n.Dst&&e.checkForLeftSplice(t,i)&&(r.fixUpperEdge?(e.deleteRegion(t,r),t.mesh.delete(n),r=e.regionBelow(i),n=r.eUp):i.fixUpperEdge&&(e.deleteRegion(t,i),t.mesh.delete(s),i=e.regionAbove(r),s=i.eUp)),s.Org!==n.Org)if(s.Dst!==n.Dst&&!i.fixUpperEdge&&!r.fixUpperEdge&&(s.Dst===t.event||n.Dst===t.event)){if(e.checkForIntersect(t,i))return}else e.checkForRightSplice(t,i);s.Org===n.Org&&s.Dst===n.Dst&&(e.addWinding(n,s),e.deleteRegion(t,i),t.mesh.delete(s),i=e.regionAbove(r))}},e.connectRightVertex=function(t,i,r){var s,n=r.Onext,a=e.regionBelow(i),o=i.eUp,l=a.eUp,h=!1;if(o.Dst!==l.Dst&&e.checkForIntersect(t,i),Ie.vertEq(o.Org,t.event)&&(t.mesh.splice(n.Oprev,o),i=e.topLeftRegion(t,i),n=e.regionBelow(i).eUp,e.finishLeftRegions(t,e.regionBelow(i),a),h=!0),Ie.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=e.finishLeftRegions(t,a,null),h=!0),h){e.addRightEdges(t,i,r.Onext,n,n,!0);return}Ie.vertLeq(l.Org,o.Org)?s=l.Oprev:s=o,s=t.mesh.connect(r.Lprev,s),e.addRightEdges(t,i,s,s.Onext,s.Onext,!1),s.Sym.activeRegion.fixUpperEdge=!0,e.walkDirtyRegions(t,i)},e.connectLeftDegenerate=function(t,i,r){var s,n,a,o,l;if(s=i.eUp,Ie.vertEq(s.Org,r)){ze(!1),e.spliceMergeVertices(t,s,r.anEdge);return}if(!Ie.vertEq(s.Dst,r)){t.mesh.splitEdge(s.Sym),i.fixUpperEdge&&(t.mesh.delete(s.Onext),i.fixUpperEdge=!1),t.mesh.splice(r.anEdge,s),e.sweepEvent(t,r);return}ze(!1),i=e.topRightRegion(i),l=e.regionBelow(i),a=l.eUp.Sym,n=o=a.Onext,l.fixUpperEdge&&(ze(n!==a),e.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),Ie.edgeGoesLeft(n)||(n=null),e.addRightEdges(t,i,a.Onext,o,n,!0)},e.connectLeftVertex=function(t,i){var r,s,n,a,o,l,h=new Fp;if(h.eUp=i.anEdge.Sym,r=t.dict.search(h).key,s=e.regionBelow(r),!!s){if(a=r.eUp,o=s.eUp,Ie.edgeSign(a.Dst,i,a.Org)===0){e.connectLeftDegenerate(t,r,i);return}if(n=Ie.vertLeq(o.Dst,a.Dst)?r:s,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(i.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(o.Dnext,i.anEdge);l=u.Sym}n.fixUpperEdge?e.fixUpperEdge(t,n,l):e.computeWinding(t,e.addRegionBelow(t,r,l)),e.sweepEvent(t,i)}else e.addRightEdges(t,r,i.anEdge,i.anEdge,null,!0)}},e.sweepEvent=function(t,i){t.event=i,e.debugEvent(t);for(var r=i.anEdge;r.activeRegion===null;)if(r=r.Onext,r===i.anEdge){e.connectLeftVertex(t,i);return}var s=e.topLeftRegion(t,r.activeRegion);ze(s!==null);var n=e.regionBelow(s),a=n.eUp,o=e.finishLeftRegions(t,n,null);o.Onext===a?e.connectRightVertex(t,s,o):e.addRightEdges(t,s,o.Onext,a,a,!0)},e.addSentinel=function(t,i,r,s){var n=new Fp,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=s,a.Dst.s=i,a.Dst.t=s,t.event=a.Dst,n.eUp=a,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},e.initEdgeDict=function(t){t.dict=new fU(t,e.edgeLeq);var i=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],s=t.bmin[0]-i,n=t.bmax[0]+i,a=t.bmin[1]-r,o=t.bmax[1]+r;e.addSentinel(t,s,n,a),e.addSentinel(t,s,n,o)},e.doneEdgeDict=function(t){for(var i,r=0;(i=t.dict.min().key)!==null;)i.sentinel||(ze(i.fixUpperEdge),ze(++r===1)),ze(i.windingNumber===0),e.deleteRegion(t,i)},e.removeDegenerateEdges=function(t){var i,r,s,n=t.mesh.eHead;for(i=n.next;i!==n;i=r)r=i.next,s=i.Lnext,Ie.vertEq(i.Org,i.Dst)&&i.Lnext.Lnext!==i&&(e.spliceMergeVertices(t,s,i),t.mesh.delete(i),i=s,s=i.Lnext),s.Lnext===i&&(s!==i&&((s===r||s===r.Sym)&&(r=r.next),t.mesh.delete(s)),(i===r||i===r.Sym)&&(r=r.next),t.mesh.delete(i))},e.initPriorityQ=function(t){var i,r,s,n=0;for(s=t.mesh.vHead,r=s.next;r!==s;r=r.next)n++;for(n+=8,i=t.pq=new pU(n,Ie.vertLeq),s=t.mesh.vHead,r=s.next;r!==s;r=r.next)r.pqHandle=i.insert(r);return r!==s?!1:(i.init(),!0)},e.donePriorityQ=function(t){t.pq=null},e.removeDegenerateFaces=function(t,i){var r,s,n;for(r=i.fHead.next;r!==i.fHead;r=s)s=r.next,n=r.anEdge,ze(n.Lnext!==n),n.Lnext.Lnext===n&&(e.addWinding(n.Onext,n),t.mesh.delete(n));return!0},e.computeInterior=function(t,i){i===void 0&&(i=!0);var r,s;if(e.removeDegenerateEdges(t),!e.initPriorityQ(t))return!1;for(e.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;s=t.pq.min(),!(s===null||!Ie.vertEq(s,r));)s=t.pq.extractMin(),e.spliceMergeVertices(t,r.anEdge,s.anEdge);e.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,e.debugEvent(t),e.doneEdgeDict(t),e.donePriorityQ(t),e.removeDegenerateFaces(t,t.mesh)?(i&&t.mesh.check(),!0):!1},e}(),gU=function(){function e(){this.mesh=new ex,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Et.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return e.prototype.dot_=function(t,i){return t[0]*i[0]+t[1]*i[1]+t[2]*i[2]},e.prototype.normalize_=function(t){var i=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!i)throw"Zero-size vector!";i=Math.sqrt(i),t[0]/=i,t[1]/=i,t[2]/=i},e.prototype.longAxis_=function(t){var i=0;return Math.abs(t[1])>Math.abs(t[0])&&(i=1),Math.abs(t[2])>Math.abs(t[i])&&(i=2),i},e.prototype.computeNormal_=function(t){var i,r,s,n,a,o,l=[0,0,0],h=[0,0,0],u=[0,0,0],c=[0,0,0],d=[0,0,0],p=[null,null,null],m=[null,null,null],g=this.mesh.vHead;i=g.next;for(var f=0;f<3;++f)n=i.coords[f],h[f]=n,m[f]=i,l[f]=n,p[f]=i;for(i=g.next;i!==g;i=i.next)for(var v=0;v<3;++v)n=i.coords[v],n<h[v]&&(h[v]=n,m[v]=i),n>l[v]&&(l[v]=n,p[v]=i);var y=0;if(l[1]-h[1]>l[0]-h[0]&&(y=1),l[2]-h[2]>l[y]-h[y]&&(y=2),h[y]>=l[y]){t[0]=0,t[1]=0,t[2]=1;return}for(o=0,r=m[y],s=p[y],u[0]=r.coords[0]-s.coords[0],u[1]=r.coords[1]-s.coords[1],u[2]=r.coords[2]-s.coords[2],i=g.next;i!==g;i=i.next)c[0]=i.coords[0]-s.coords[0],c[1]=i.coords[1]-s.coords[1],c[2]=i.coords[2]-s.coords[2],d[0]=u[1]*c[2]-u[2]*c[1],d[1]=u[2]*c[0]-u[0]*c[2],d[2]=u[0]*c[1]-u[1]*c[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>o&&(o=a,t[0]=d[0],t[1]=d[1],t[2]=d[2]);o<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},e.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,i,r=this.mesh.vHead,s,n=0,a=t.next;a!==t;a=a.next)if(s=a.anEdge,!(s.winding<=0))do n+=(s.Org.s-s.Dst.s)*(s.Org.t+s.Dst.t),s=s.Lnext;while(s!==a.anEdge);if(n<0){for(i=r.next;i!==r;i=i.next)i.t=-i.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},e.prototype.projectPolygon_=function(){var t=this.mesh.vHead,i=[0,0,0],r,s,n=!1;i[0]=this.normal[0],i[1]=this.normal[1],i[2]=this.normal[2],!i[0]&&!i[1]&&!i[2]&&(this.computeNormal_(i),n=!0),r=this.sUnit,s=this.tUnit;var a=this.longAxis_(i);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,s[a]=0,s[(a+1)%3]=0,s[(a+2)%3]=i[a]>0?1:-1;for(var o=t.next;o!==t;o=o.next)o.s=this.dot_(o.coords,r),o.t=this.dot_(o.coords,s);n&&this.checkOrientation_();for(var l=!0,h=t.next;h!==t;h=h.next)l?(this.bmin[0]=this.bmax[0]=h.s,this.bmin[1]=this.bmax[1]=h.t,l=!1):(h.s<this.bmin[0]&&(this.bmin[0]=h.s),h.s>this.bmax[0]&&(this.bmax[0]=h.s),h.t<this.bmin[1]&&(this.bmin[1]=h.t),h.t>this.bmax[1]&&(this.bmax[1]=h.t))},e.prototype.addWinding_=function(t,i){t.winding+=i.winding,t.Sym.winding+=i.Sym.winding},e.prototype.tessellateMonoRegion_=function(t,i){var r,s;if(r=i.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;Ie.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;Ie.vertLeq(r.Org,r.Dst);r=r.Lnext);s=r.Lprev;for(var n=void 0;r.Lnext!==s;)if(Ie.vertLeq(r.Dst,s.Org)){for(;s.Lnext!==r&&(Ie.edgeGoesLeft(s.Lnext)||Ie.edgeSign(s.Org,s.Dst,s.Lnext.Dst)<=0);)n=t.connect(s.Lnext,s),s=n.Sym;s=s.Lprev}else{for(;s.Lnext!==r&&(Ie.edgeGoesRight(r.Lprev)||Ie.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(s.Lnext===r)throw"Mono region invalid";for(;s.Lnext.Lnext!==r;)n=t.connect(s.Lnext,s),s=n.Sym;return!0},e.prototype.tessellateInterior_=function(t){for(var i,r=t.fHead.next;r!==t.fHead;r=i)if(i=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},e.prototype.discardExterior_=function(t){for(var i,r=t.fHead.next;r!==t.fHead;r=i)i=r.next,r.inside||t.zapFace(r)},e.prototype.setWindingNumber_=function(t,i,r){for(var s,n=t.eHead.next;n!==t.eHead;n=s)s=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?i:-i:r?t.delete(n):n.winding=0},e.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},e.prototype.outputPolymesh_=function(t,i,r,s){var n,a=0,o=0,l;r>3&&t.mergeConvexFaces(r);for(var h=t.vHead.next;h!==t.vHead;h=h.next)h.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var h=n.Org;h.n===-1&&(h.n=o,o++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,i===ri.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=o,this.vertices=[],this.vertices.length=o*s,this.vertexIndices=[],this.vertexIndices.length=o;for(var h=t.vHead.next;h!==t.vHead;h=h.next)if(h.n!==-1){var c=h.n*s;this.vertices[c+0]=h.coords[0],this.vertices[c+1]=h.coords[1],s>2&&(this.vertices[c+2]=h.coords[2]),this.vertexIndices[h.n]=h.idx}for(var d=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(u.inside){n=u.anEdge,l=0;do{var h=n.Org;this.elements[d++]=h.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var p=l;p<r;++p)this.elements[d++]=-1;if(i===ri.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var m=l;m<r;++m)this.elements[d++]=-1}}},e.prototype.outputContours_=function(t,i){var r,s,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var o=t.fHead.next;o!==t.fHead;o=o.next)if(o.inside){s=r=o.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==s);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*i,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,h=0,u=0;n=0;for(var o=t.fHead.next;o!==t.fHead;o=o.next)if(o.inside){a=0,s=r=o.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],i>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[h++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==s);this.elements[u++]=n,this.elements[u++]=a,n+=a}},e.prototype.addContour=function(t,i){this.mesh===null&&(this.mesh=new ex),t<2&&(t=2),t>3&&(t=3);for(var r=null,s=0;s<i.length;s+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=i[s+0],r.Org.coords[1]=i[s+1],t>2?r.Org.coords[2]=i[s+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},e.prototype.tesselate=function(t,i,r,s,n,a){if(t===void 0&&(t=Et.ODD),i===void 0&&(i=ri.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,s<2&&(s=2),s>3&&(s=3),!this.mesh)return!1;this.projectPolygon_(),mU.computeInterior(this,a);var o=this.mesh;return i===ri.BOUNDARY_CONTOURS?this.setWindingNumber_(o,1,!0):this.tessellateInterior_(o),a&&o.check(),i===ri.BOUNDARY_CONTOURS?this.outputContours_(o,s):this.outputPolymesh_(o,i,r,s),!0},e}();function Ll(e){var t=e.windingRule,i=t===void 0?Et.ODD:t,r=e.elementType,s=r===void 0?ri.POLYGONS:r,n=e.polySize,a=n===void 0?3:n,o=e.vertexSize,l=o===void 0?2:o,h=e.normal,u=h===void 0?[0,0,1]:h,c=e.contours,d=c===void 0?[]:c,p=e.strict,m=p===void 0?!0:p,g=e.debug,f=g===void 0?!1:g;if(!d&&m)throw new Error("Contours can't be empty");if(d){var v=new gU;e.edgeCreateCallback&&(v.edgeCreateCallback=e.edgeCreateCallback),e.vertexIdCallback&&(v.vertexIdCallback=e.vertexIdCallback);for(var y=0;y<d.length;y++)v.addContour(l||2,d[y]);return v.tesselate(i,s,a,l,u,m),{vertices:v.vertices,vertexIndices:v.vertexIndices,vertexCount:v.vertexCount,elements:v.elements,elementCount:v.elementCount,mesh:f?v.mesh:void 0}}}var GV=Et.ODD,VV=Et.NONZERO,WV=Et.POSITIVE,XV=Et.NEGATIVE,YV=Et.ABS_GEQ_TWO,qV=ri.POLYGONS,QV=ri.CONNECTED_POLYGONS,ZV=ri.BOUNDARY_CONTOURS,j_=class extends ke{constructor(e,t=12,i={}){super(),this.type="ShapeGeometry",this.windingRule=Et.ODD,this.elementType=ri.POLYGONS,this.polySize=3,this.vertexSize=2,this.strict=!0,this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Et.ODD,elementType:ri.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let r=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(d=>d.extractShapePointsToFlatArray([],this._curveSegments)),n,a=!0,o=!0,l,h;for(let d=0,p=r.length/2;d<p;d++){let m=d*2,g=r[m+0],f=r[m+1];if(l!==void 0&&g!==l&&(a=!1),h!==void 0&&f!==h&&(o=!1),l=g,h=f,!a&&!o)break}!a&&!o&&(n=Ll({contours:[r,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=n?.vertexCount??1,c=n?.elementCount??1;if(this._positionAttribute=new Qe(new Float32Array(u*3),3),this._normalAttribute=new Qe(new Float32Array(u*3),3),this._uvAttribute=new Qe(new Float32Array(u*2),2),this._indexAttribute=new Qe(new Uint32Array(c*3),1),n){let d=1/0,p=-1/0,m=1/0,g=-1/0;for(let y=0,b=u;y<b;y++){let x=y*2,w=n.vertices[x+0],_=n.vertices[x+1];w<d&&(d=w),w>p&&(p=w),_<m&&(m=_),_>g&&(g=_)}let f=p-d,v=g-m;for(let y=0,b=u;y<b;y++){let x=y*2,w=n.vertices[x+0],_=n.vertices[x+1],A=(w-d)/f,S=(_-m)/v;this._positionAttribute.setXYZ(y,w,_,0),this._normalAttribute.setXYZ(y,0,0,1),this._uvAttribute.setXY(y,A,S)}for(let y=0,b=c;y<b;y++){let x=y*3,w=n.elements[x+0],_=n.elements[x+1],A=n.elements[x+2];this._indexAttribute.setX(x+0,w),this._indexAttribute.setX(x+1,_),this._indexAttribute.setX(x+2,A)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(n?.elementCount??1)*3)}clone(){let e=new j_(this._shape,this._curveSegments);return e.userData=Ag(this.userData),e}},vm=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let i=e*vm.eSize;this.buffer=new ArrayBuffer(i);let r=Float32Array.BYTES_PER_ELEMENT,s=0;this.positions=new Float32Array(this.buffer,s*r,3*e),s+=3*e,this.normals=new Float32Array(this.buffer,s*r,3*e),s+=3*e,this.uvs=new Float32Array(this.buffer,s*r,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let i=e*vm.eSize,r=new ArrayBuffer(i),s=Float32Array.BYTES_PER_ELEMENT,n=0,a=new Float32Array(r,n*s,3*e);n+=3*e;let o=new Float32Array(r,n*s,3*e);n+=3*e;let l=new Float32Array(r,n*s,2*e);a.set(this.positions.slice(0,this.size*3)),o.set(this.normals.slice(0,this.size*3)),l.set(this.uvs.slice(0,this.size*2)),this.buffer=r,this.positions=a,this.normals=o,this.uvs=l,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let r=this.capacity;for(;t>r;)r*=2;this.realloc(r)}let i=this.size;return this.size=t,i}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},H_=vm;H_.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Up=(e,t)=>([i,r])=>(r<i&&(r+=t),(e>=i?e:e+t)<=r),G_=class extends ke{constructor(e,t,i=0,r=12,s=3,n=Et.ODD){super(),this.type="ShapeGeometry",this.vertexCache={},this._shape=e,this._depth=t,this._bevel=i,this._curveSegments=r,this._bevelSegmentsInput=s,i<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(i,t/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],r),o=this._shape.shapeHoles.map(_=>{let A=_.extractShapePointsToFlatArray([],r),S=[];for(let E=A.length-1;E>=1;E-=2){let C=A[E-1],T=A[E-0];S.push(C,T)}return S}),l=Ll({windingRule:n,elementType:ri.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=Ll({windingRule:Et.ODD,elementType:ri.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...o]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(h){l.elementCount+=h.elementCount;for(let _=0;_<h.elements.length;_++){let A=h.elements[_],S=_%2===0?l.vertexCount:0;l.elements.push(A+S)}for(let _=0;_<h.vertexIndices.length;_++){let A=h.vertexIndices[_],S=l.vertexCount;l.vertexIndices.push(A+S)}for(let _=0;_<h.vertices.length;_++){let A=h.vertices[_];l.vertices.push(A)}}let c=1/0,d=-1/0,p=1/0,m=-1/0;for(let _=0,A=l.vertexCount;_<A;_++){let S=_*2,E=l.vertices[S+0],C=l.vertices[S+1];E<c&&(c=E),E>d&&(d=E),C<p&&(p=C),C>m&&(m=C)}this._minX=c,this._minY=p,this._width=d-c,this._height=m-p;let g=l.vertexCount*2*(2+this._bevelSegments);this._buffer=new H_(g);let f=[],v=[];for(let _=l.elementCount-1;_>=0;_--){let A=_>=u,S=_*2,E=l.elements[S+0],C=l.elements[S+1],T=E+C,P={start:E,count:C,normals:[],continuous:[],concave:[]},R=E,O=T-1,U=E+1,j=this._shape.roundedCurves.length;do{let F=R-E,V=l.vertices[O*2+0],N=l.vertices[O*2+1],X=l.vertices[R*2+0],Z=l.vertices[R*2+1],ee=l.vertices[U*2+0],W=l.vertices[U*2+1],ne=X-V,q=Z-N,Q=Math.sqrt(ne*ne+q*q);ne/=Q,q/=Q;let K=X-ee,de=Z-W,oe=Math.sqrt(K*K+de*de);K/=oe,de/=oe,P.normals[F*2+0]=-de,P.normals[F*2+1]=K,P.concave[F]=ne*de-q*K>0;let le=l.vertexIndices[R];if(Array.isArray(le))P.continuous[F]=!1;else{let[ue,pe]=this._shape.getCurveIndexFromVertexId(le-1,!0);if(pe>0&&pe<1)P.continuous[F]=!0;else{let ge=pe===1?ue+1:ue-1;ge=(ge+j)%j;let De=pe===1?0:1,Ae=this._shape.roundedCurves[ue].getTangent(pe),we=this._shape.roundedCurves[ge].getTangent(De);P.continuous[F]=Ae.dot(we)>.95}}A&&(P.normals[F*2+0]*=-1,P.normals[F*2+1]*=-1),[O,R,U]=[R,U,U+1],U>=T&&(U-=C)}while(U!==E+1);let z=[];z.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(E*2,T*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((F,V)=>[V,V]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(E*2,T*2)});for(let F=1;F<=this._bevelSegments;F++){let V=F/this._bevelSegments*Math.PI/2,N=(1-Math.cos(V))*this._bevelSize,X=[],Z=[],ee=[],W=[],ne=0;for(let Q=0;Q<C;Q++){let K=Q*2,de=(Q-1+C)%C*2,oe=l.vertices[P.start*2+K+0],le=l.vertices[P.start*2+K+1],ue=-P.normals[de+0]*N,pe=-P.normals[de+1]*N,ge=-P.normals[K+0]*N,De=-P.normals[K+1]*N;if(P.concave[Q]||!P.concave[Q]&&A){let Ae=Math.atan2(pe,ue),we=Math.atan2(De,ge);we>Ae&&(we-=Math.PI*2);let bt=we-Ae;if(P.continuous[Q]||A){let Ke=Ae+bt/2,B=Math.cos(Ke)*N,D=Math.sin(Ke)*N;X[2*ne+0]=oe+B*(A?-1:1),X[2*ne+1]=le+D*(A?-1:1),W[ne]=Q,ne++}else{let Ke=Math.max(1,Math.floor(r/4*Math.abs(bt)/Math.PI));for(let B=0;B<=Ke;B++){let D=Ae+bt*(B/Ke),ie=Math.cos(D)*N,ce=Math.sin(D)*N;X[2*ne+0]=oe+ie,X[2*ne+1]=le+ce,W[ne]=Q,ne++}}}else X[2*ne+0]=oe+ue,X[2*ne+1]=le+pe,W[ne]=Q,Z[Q]=ne,ne++,X[2*ne+0]=oe,X[2*ne+1]=le,W[ne]=Q,ne++,X[2*ne+0]=oe+ge,X[2*ne+1]=le+De,W[ne]=Q,ee[Q]=ne,ne++}let q=Ll({windingRule:Et.POSITIVE,elementType:ri.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[X],edgeCreateCallback:Q=>{let K=Q.Org.idx,de=W[K],oe=W[(K+1)%W.length];Q.idx=[de,oe],Q.Sym.idx=[oe,de]},vertexIdCallback:Q=>{let K=Q.Lprev.idx;return[K?K[1]:0,Q.idx[0]]}});if(!q)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!q.vertexCount)break;for(let Q=0;Q<q.vertexIndices.length;Q++){let[K,de]=q.vertexIndices[Q];if(K===de)continue;let oe=de;de<K&&(oe+=C);for(let le=K;le<oe;le++){let ue=le%C,pe=(le+1)%C;if(!P.continuous[ue]||!P.continuous[pe]){q.vertexIndices[Q]=[K,ue],q.vertexIndices.splice(Q+1,0,[pe,de]),q.vertices.splice((Q+1)*2,0,q.vertices[Q*2],q.vertices[Q*2+1]);break}}}z.push({bevelI:F,angle:V,size:N,boundary:q,reverseMap:W,insetPoints:X})}let L=(F,V,N)=>{let X=0,Z=F.boundary.vertexIndices.length;for(;X<Z&&N(F.boundary.vertexIndices[V]);)V=(V+1)%Z,X++;return X},G=f.length;for(let F=1;F<z.length;F++){let V=z[F-1],N=z[F],X=V.boundary.vertexIndices.length,Z=N.boundary.vertexIndices.length;if(!X||!Z)break;let ee=P.concave.length,W=0,ne=Up(W,C);for(;!V.boundary.vertexIndices.filter(ne).length||!N.boundary.vertexIndices.filter(ne).length;)W++,ne=Up(W,C);let q=V.boundary.vertexIndices.findIndex(ne),Q=N.boundary.vertexIndices.findIndex(ne);do q=(q+1)%X;while(ne(V.boundary.vertexIndices[q]));do Q=(Q+1)%Z;while(ne(N.boundary.vertexIndices[Q]));W=(W+1)%C;let K=W,de=this.buildBevelVert(P,V,(q-1+X)%X),oe=this.buildBevelVert(P,N,(Q-1+Z)%Z),le=de,ue=oe,pe,ge,De=!1;do{ne=Up(W,C);let Ae=L(V,q,ne),we=L(N,Q,ne),bt=De;if(De=!1,Ae&&!we){for(let Ke=0;Ke<Ae;Ke++)pe=this.buildBevelVert(P,V,(q+Ke)%X,Ke/(Ae-1)),f.push(le.topN,pe.topP,ue.topN),f.push(pe.bottomP,le.bottomN,ue.bottomN),le=pe;De=!0}else if(!Ae&&we)for(let Ke=0;Ke<we;Ke++)ge=this.buildBevelVert(P,N,(Q+Ke)%Z,Ke/(we-1)),f.push(ue.topN,le.topP,ge.topP),f.push(le.bottomP,ue.bottomN,ge.bottomP),ue=ge;else if(Ae&&we)if(pe=this.buildBevelVert(P,V,q,0),ge=this.buildBevelVert(P,N,Q,0),bt?(f.push(le.topN,ge.topP,ue.topN),f.push(le.topN,pe.topP,ge.topP),f.push(ge.bottomP,le.bottomN,ue.bottomN),f.push(ge.bottomP,pe.bottomP,le.bottomN)):(f.push(ue.topN,le.topN,pe.topP),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,le.bottomN,ue.bottomN),f.push(pe.bottomP,ue.bottomN,ge.bottomP)),le=pe,ue=ge,Ae===we)for(let Ke=1;Ke<Ae;Ke++)pe=this.buildBevelVert(P,V,(q+Ke)%X,Ke/(Ae-1)),ge=this.buildBevelVert(P,N,(Q+Ke)%Z,Ke/(we-1)),f.push(le.topN,pe.topP,ue.topN),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,le.bottomN,ue.bottomN),f.push(pe.bottomP,ue.bottomN,ge.bottomP),le=pe,ue=ge;else if(Ae>we){let Ke=Ae/we,B=0;for(let D=1;D<Ae;D++)pe=this.buildBevelVert(P,V,(q+D)%X,D/(Ae-1)),f.push(le.topN,pe.topP,ue.topN),f.push(pe.bottomP,le.bottomN,ue.bottomN),le=pe,D>(B+1)*Ke&&(B++,ge=this.buildBevelVert(P,N,(Q+B)%Z,B/(we-1)),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,ue.bottomN,ge.bottomP),ue=ge)}else{let Ke=we/Ae,B=0;for(let D=1;D<we;D++)ge=this.buildBevelVert(P,N,(Q+D)%Z,D/(we-1)),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,ue.bottomN,ge.bottomP),ue=ge,D>(B+1)*Ke&&(B++,pe=this.buildBevelVert(P,V,(q+B)%X,B/(Ae-1)),f.push(le.topN,pe.topP,ue.topN),f.push(pe.bottomP,le.bottomN,ue.bottomN),le=pe)}q=(q+Ae)%X,Q=(Q+we)%Z,W=(W+1)%ee}while(W!==K)}{let F=z[0];for(let V=0,N=F.boundary.vertexCount;V<N;V++){let X=this.buildBevelVert(P,F,V),Z=this.buildBevelVert(P,F,(V+1)%N);f.push(Z.topP,X.topN,X.bottomN),f.push(Z.topP,X.bottomN,Z.bottomP)}}if(A){let F=[];for(let V=f.length-1;V>=G+2;V-=3){let N=f[V-2],X=f[V-1],Z=f[V-0];F.push(Z,X,N)}f.splice(G,f.length-G,...F)}if(A){let F=[];for(let V=z[z.length-1].boundary.vertices.length-1;V>=1;V-=2){let N=z[z.length-1].boundary.vertices[V-1],X=z[z.length-1].boundary.vertices[V-0];F.push(N,X)}v.push(F)}if(!A){let F=z[z.length-1],V=Ll({windingRule:z.length>1?Et.POSITIVE:Et.ODD,elementType:ri.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!V)throw new Error("Error generating geometry for surface");o.length===0&&Object.assign(this,{capStartIndex:f.length});for(let N=0;N<V.elementCount*3;N+=3){let X=this.buildSurfaceVert(V,V.elements[N+0]),Z=this.buildSurfaceVert(V,V.elements[N+1]),ee=this.buildSurfaceVert(V,V.elements[N+2]);f.push(X.top,Z.top,ee.top),f.push(ee.bottom,Z.bottom,X.bottom)}}this.vertexCache={}}this._buffer.shrink();let y=new Qe(Uint32Array.from(f),1),b=new Qe(this._buffer.positions,3),x=new Qe(this._buffer.normals,3),w=new Qe(this._buffer.uvs,2);b.needsUpdate=!0,x.needsUpdate=!0,w.needsUpdate=!0,y.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",x),this.setAttribute("uv",w),this.setIndex(y)}buildSurfaceVert(e,t){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let r=e.vertices[t*2+0],s=e.vertices[t*2+1],n=(r-this._minX)/this._width,a=(s-this._minY)/this._height,o=this._buffer.get(2),l=o*3,h=o*2,u={top:o+0,bottom:o+1};return this._buffer.positions[l+0]=r,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[h+0]=n,this._buffer.uvs[h+1]=a,this._buffer.positions[l+3]=r,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[h+2]=n,this._buffer.uvs[h+3]=a,this.vertexCache[i]=u,u}buildBevelVert(e,t,i,r=1){let s=`${t.bevelI}:${i}`;if(s in this.vertexCache)return this.vertexCache[s];let[n,a]=t.boundary.vertexIndices[i],o,l,h,u;n!==a?(l=n,o=a,u=!1,h=e.continuous[l]&&e.continuous[o]):(o=n,l=(o-1+e.count)%e.count,u=e.concave[o]&&t.bevelI>0,h=e.continuous[o]||u);let c=Math.cos(t.angle),d=Math.sin(t.angle),p=i*2,m=o*2,g=l*2,f=t.boundary.vertices[p+0],v=t.boundary.vertices[p+1],y=(1-d)*this._bevelSize,b=(f-this._minX)/this._width,x=(v-this._minY)/this._height,w=e.normals[m+0],_=e.normals[m+1],A=e.normals[g+0],S=e.normals[g+1];if(u){let R=A-w,O=S-_;w=w+R*(1-r),_=_+O*(1-r);let U=Math.sqrt(w*w+_*_);w/=U,_/=U}let E=this._buffer.get(h?2:4),C=E*3,T=E*2,P={i,fi:o,topP:E+0,topN:E+0,bottomP:E+1,bottomN:E+1};return this._buffer.positions[C+0]=f,this._buffer.positions[C+1]=v,this._buffer.positions[C+2]=this._depth-y,this._buffer.normals[C+0]=w*c,this._buffer.normals[C+1]=_*c,this._buffer.normals[C+2]=d,this._buffer.uvs[T+0]=b,this._buffer.uvs[T+1]=x,this._buffer.positions[C+3]=f,this._buffer.positions[C+4]=v,this._buffer.positions[C+5]=y,this._buffer.normals[C+3]=w*c,this._buffer.normals[C+4]=_*c,this._buffer.normals[C+5]=-d,this._buffer.uvs[T+2]=x,this._buffer.uvs[T+3]=b,h||(E+=2,C+=6,T+=4,P.topP=E+0,P.bottomP=E+1,this._buffer.positions[C+0]=f,this._buffer.positions[C+1]=v,this._buffer.positions[C+2]=this._depth-y,this._buffer.normals[C+0]=A*c,this._buffer.normals[C+1]=S*c,this._buffer.normals[C+2]=d,this._buffer.uvs[T+0]=b,this._buffer.uvs[T+1]=x,this._buffer.positions[C+3]=f,this._buffer.positions[C+4]=v,this._buffer.positions[C+5]=y,this._buffer.normals[C+3]=A*c,this._buffer.normals[C+4]=S*c,this._buffer.normals[C+5]=-d,this._buffer.uvs[T+2]=x,this._buffer.uvs[T+3]=b),this.vertexCache[s]=P,P}clone(){let e=new G_(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ag(this.userData),e}},ua=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Et.ODD},e.parameters),r=Math.abs(i.width),s=Math.abs(i.height??i.width),n=Math.abs(i.depth??0),a=e.shape??t?.shape,o=a?.roundness??i.roundness;a!==void 0&&(a instanceof Bt?(a.width!==r||a.height!==s)&&a.applySize(r,s):a=new Bt(r,s).fromJSON(a),e.parameters?.roundness!==void 0&&e.parameters?.roundness>0&&a.update());let l=a??new Bt(r,s);return{parameters:Object.assign(i,{width:r,height:s,depth:n,roundness:o}),shape:l}}static build(e){let{depth:t,extrudeBevelSize:i,extrudeBevelSegments:r,subdivisions:s,roundness:n,windingRule:a}=e.parameters;e.shape.roundness=n;let o;return t<=0?o=new j_(e.shape,s,{windingRule:a}):o=new G_(e.shape,t,i,s,r,a),Object.assign(o,{userData:{...e,type:"VectorGeometry"}})}},V_=Math.PI*2,vU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,spikes:r,angle:s,innerRadius:n,depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}=e.parameters,h=e.shape,u=t*.5,c=i*.5,d=yU(h,u,c,s*Math.PI/180,r,n);h.isClosed=!0,h.update();let p=ua.create({shape:h,parameters:{subdivisions:d,depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}});return Object.assign(p,{userData:{...e,type:"EllipseGeometry"}})}};function yU(e,t,i,r,s,n){if(r>=V_)return s>30||s%4===0?(bU(e,t,i,n),Math.round(s/4)):sx(e,r,s,t,i,n);r=Math.max(r,.001);let a={x:0,y:i},o=r+Math.PI*.5,l={x:Math.cos(o)*t,y:Math.sin(o)*i},h=uU({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:i,largeArcFlag:r>Math.PI,sweepFlag:!0});return s>30||s%h.length===0?xU(e,a.x,a.y,h,s,t,i,n):sx(e,r,s,t,i,n)}function xU(e,t,i,r,s,n,a,o){let l=Math.round(s/r.length);e.addPoint(go(t,i));for(let h=0,u=r.length;h<u;h++){let c=r[h],d=e.points[h],p=go(c.x,c.y);d.controls[1].position.set(c.x1,c.y1),p.controls[0].position.set(c.x2,c.y2),e.addPoint(p)}return o>0?W_(e,n,a,o):e.addPoint(go(0,0)),l}function sx(e,t,i,r,s,n){let a=-t/i;for(let o=0;o<=i;o++){let l=a*o,h=Math.sin(l)*r,u=Math.cos(l)*s;e.addPoint(go(h,u))}return t<V_?n>0?W_(e,r,s,n):e.addPoint(go(0,0)):(e.removePoint(e.points[e.points.length-1]),n>0&&X_(e,r,s,n)),1}function bU(e,t,i,r=0,s=0,n=0){let a=.5522847498,o=t*a,l=i*a;e.addPoint(Ac(s-t,n,s-t,n-l,s-t,n+l)),e.addPoint(Ac(s,n+i,s-o,n+i,s+o,n+i)),e.addPoint(Ac(s+t,n,s+t,n+l,s+t,n-l)),e.addPoint(Ac(s,n-i,s+o,n-i,s-o,n-i)),r>0&&X_(e,t,i,r)}function go(e,t){return new mo(rt.generateUUID(),new H(e,t))}function Ac(e,t,i,r,s,n){let a=go(e,t);return a.controls[0].position.set(i,r),a.controls[1].position.set(s,n),a}function W_(e,t,i,r){Y_(e,t,i,r).forEach(s=>e.addPoint(s))}function X_(e,t,i,r){let s=Y_(e,t,i,r),n=new Bt;s.forEach(a=>n.addPoint(a)),n.isClosed=!0,e.shapeHoles.push(n)}function Y_(e,t,i,r){let s=r*t/100,n=s*(Math.abs(i)/Math.abs(t)),a=new H(s/t,n/i),o=e.points.map(l=>{let h=l.clone();return h.uuid=rt.generateUUID(),h}).reverse();return o.forEach(l=>{l.position.multiply(a);let h=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(h)}),o}var wU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},e.parameters),r=Math.abs(i.width),s=Math.abs(i.height??r),n=Math.abs(i.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(i,{width:r,height:s,depth:n,radius:a,segments:Math.round(i.segments),pathSegments:Math.round(i.pathSegments),cornerSegments:Math.round(i.cornerSegments)})}}static build(e){let{width:t,height:i,depth:r,radius:s,revolutions:n,segments:a,pathRadius:o,pathType:l,pathSegments:h,cornerRadius:u,cornerSegments:c}=e.parameters,d=new jg(!1,t,i,r,s,n,a,o,l,h,u,c);return Object.assign(d,{userData:{...e,type:"HelixGeometry"}})}},jg=class extends ke{constructor(e=!0,t=1,i=1,r=1,s=1,n=1,a=1,o=1,l=1,h=1,u=1,c=1,d=!1){super();let p=e&&n===1;p&&(c=0),u>100&&(u=100);let m=()=>new M,g=new M,f=m(),v=m(),y=m(),b,x,w,_,A,S,E,C,T=m(),P=m(),R=m(),O=m(),U=m(),j=m(),z=m(),L=m(),G=i-2*o+.001,F=G/n,V=Math.ceil(a*n),N=V+1,X=G/V,Z=-G/2,ee=h+1,W=2*Math.PI/h,ne=Math.PI/2/c,q=.01,Q=Math.min((1-u/100)*o,o-q),K=o-Q,de=0,oe=2,le=c*oe+oe,ue=ee*le/oe,pe=ue+ee*N,ge=ee*(N+le),[De,Ae,we]=[3,3,2].map(ve=>Array(ge*ve).fill(0)),bt=[],Ke=s-o;function B(ve,k){let me=Math.PI/2;S=k*X,C=2*Math.PI*(S%F)/F+me,S+=Z,E=Math.sin(C)*Ke,A=Math.cos(C)*Ke,e?ve.set(A,E,S):ve.set(A,S,E)}B(g,-1e-10),B(f,0),T.copy(g),B(g,1);let D=g.distanceTo(f),ie=p?0:K+Q,ce=D*V+2*ie,fe=Q,_e=ce-ie;for(let ve=0;ve<=V;ve++){B(v,ve),L.subVectors(v,T).normalize(),T.copy(v),j.copy(v).setComponent(+e+1,0).normalize(),z.crossVectors(L,j).normalize();let k=ve===0,me=ve===V,be=k?3*Math.PI/2:ne,He=k?fe:_e,Te=k?ee:pe,Ge=k?0:ge-ee,ye=L.clone().multiplyScalar(k?-K:K).add(v),Ve=L.clone().multiplyScalar(k?-1:1).normalize();for(let Xe=0;Xe<ee;Xe++){let St=Xe*W;if(P.addVectors(g.copy(j).multiplyScalar(o*Math.cos(St)),f.copy(z).multiplyScalar(o*Math.sin(St))),R.copy(P).normalize(),k||me){p||(de=Ge+Xe,[0,1,2].forEach(dt=>{De[de*3+dt]=ye.getComponent(dt),Ae[de*3+dt]=Ve.getComponent(dt)}),we[de*2]=+me,we[de*2+1]=Xe/h),f.copy(R).multiplyScalar(Q),y.addVectors(v,f);for(let dt=0;dt<c;dt++){let Pi=dt*ne+be;O.addVectors(g.copy(L).multiplyScalar(K*Math.sin(Pi)),f.copy(R).multiplyScalar(K*Math.cos(Pi))),U.copy(O).normalize(),f.addVectors(y,O),O.normalize(),de=Te+dt*ee+Xe,[0,1,2].forEach(ya=>{De[de*3+ya]=f.getComponent(ya),Ae[de*3+ya]=U.getComponent(ya)});let Lh=+k+Math.sin(Pi);we[de*2]=(He+K*Lh)/ce,we[de*2+1]=Xe/h}}f.addVectors(v,P),de=ue+ve*ee+Xe,[0,1,2].forEach(dt=>{De[de*3+dt]=f.getComponent(dt),Ae[de*3+dt]=R.getComponent(dt)}),we[de*2]=(ie+ve*D)/ce,we[de*2+1]=Xe/h}}let je=N+2*c+oe,re=1,[Be,Pe]=[+p,je-1];d&&(Pe-=1);for(let ve=Be;ve<=Pe-1;ve++){let k=p&&ve===Pe-1;for(let me=0;me<ee-1;me++)b=ve*ee+me,x=b+1,w=(k?me:b)+ee,_=(k?me+1:x)+ee,ve===0?bt.push(x,_,w):ve===je-2?bt.push(b,x,w):bt.push(b,x,w,x,_,w)}this.setIndex(bt),this.setAttribute("position",new Ee(De,3)),this.setAttribute("normal",new Ee(Ae,3)),this.setAttribute("uv",new Ee(we,2))}},_U=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,detail:s,corner:n,cornerSides:a}=e.parameters,o=s===0&&n!==0?new q_(t*.5,n,a):new cw(t*.5,s);return o.scale(1,i/t,r/t),Object.assign(o,{userData:{...e,type:"IcosahedronGeometry"}})}},q_=class extends Fg{constructor(e=1,t=.2,i=4){let r=(1+Math.sqrt(5))/2,s=[-1,r,0,1,r,0,-1,-r,0,1,-r,0,0,-1,r,0,1,r,0,-1,-r,0,1,-r,r,0,-1,r,0,1,-r,0,-1,-r,0,1],n=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(s,n,a,e,t,i),this.type=a}static fromJSON(e){return new q_(e.radius,e.corner,e.cornerSides)}},SU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){(e.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let i=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{points:t,segments:i,verticalSegments:r}=e.parameters,s=new dd;s.moveTo(t[0].x,t[0].y),s.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new rw(s.extractPoints(r).shape,i);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...e,type:"LatheGeometry"}})}},jr=new Se,kp=new _t,Mc=new M,Hd=class extends zi{constructor(){super(),this.uuid=rt.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(e){let t=new Ai().getNormalMatrix(e);for(let i=0,r=this.vertices.length;i<r;i++)this.vertices[i].applyMatrix4(e);for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i];s.normal.applyMatrix3(t).normalize();for(let n=0,a=s.vertexNormals.length;n<a;n++)s.vertexNormals[n].applyMatrix3(t).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return jr.makeRotationX(e),this.applyMatrix4(jr),this}rotateY(e){return jr.makeRotationY(e),this.applyMatrix4(jr),this}rotateZ(e){return jr.makeRotationZ(e),this.applyMatrix4(jr),this}translate(e,t,i){return jr.makeTranslation(e,t,i),this.applyMatrix4(jr),this}scale(e,t,i){return jr.makeScale(e,t,i),this.applyMatrix4(jr),this}lookAt(e){return kp.lookAt(e),kp.updateMatrix(),this.applyMatrix4(kp.matrix),this}fromBufferGeometry(e){let t=this,i=e.index!==null?e.index:void 0,r=e.attributes;if(r.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let s=r.position,n=r.normal,a=r.color,o=r.uv,l=r.uv2;l!==void 0&&(this.faceVertexUvs[1]=[]);for(let c=0;c<s.count;c++)t.vertices.push(new M().fromBufferAttribute(s,c)),a!==void 0&&t.colors.push(new Ue().fromBufferAttribute(a,c));function h(c,d,p,m){let g=a===void 0?[]:[t.colors[c].clone(),t.colors[d].clone(),t.colors[p].clone()],f=n===void 0?[]:[new M().fromBufferAttribute(n,c),new M().fromBufferAttribute(n,d),new M().fromBufferAttribute(n,p)],v=new ym(c,d,p,f,g,m);t.faces.push(v),o!==void 0&&t.faceVertexUvs[0].push([new H().fromBufferAttribute(o,c),new H().fromBufferAttribute(o,d),new H().fromBufferAttribute(o,p)]),l!==void 0&&t.faceVertexUvs[1].push([new H().fromBufferAttribute(l,c),new H().fromBufferAttribute(l,d),new H().fromBufferAttribute(l,p)])}let u=e.groups;if(u.length>0)for(let c=0;c<u.length;c++){let d=u[c],p=d.start,m=d.count;for(let g=p,f=p+m;g<f;g+=3)i!==void 0?h(i.getX(g),i.getX(g+1),i.getX(g+2),d.materialIndex):h(g,g+1,g+2,d.materialIndex)}else if(i!==void 0)for(let c=0;c<i.count;c+=3)h(i.getX(c),i.getX(c+1),i.getX(c+2));else for(let c=0;c<s.count;c+=3)h(c,c+1,c+2);return this.computeFaceNormals(),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Mc).negate(),this.translate(Mc.x,Mc.y,Mc.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,i=t===0?1:1/t,r=new Se;return r.set(i,0,0,-i*e.x,0,i,0,-i*e.y,0,0,i,-i*e.z,0,0,0,1),this.applyMatrix4(r),this}computeFaceNormals(){let e=new M,t=new M;for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i],n=this.vertices[s.a],a=this.vertices[s.b],o=this.vertices[s.c];e.subVectors(o,a),t.subVectors(n,a),e.cross(t),e.normalize(),s.normal.copy(e)}}computeVertexNormals(e=!0){let t=new Array(this.vertices.length);for(let i=0,r=this.vertices.length;i<r;i++)t[i]=new M;if(e){let i=new M,r=new M;for(let s=0,n=this.faces.length;s<n;s++){let a=this.faces[s],o=this.vertices[a.a],l=this.vertices[a.b],h=this.vertices[a.c];i.subVectors(h,l),r.subVectors(o,l),i.cross(r),t[a.a].add(i),t[a.b].add(i),t[a.c].add(i)}}else{this.computeFaceNormals();for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i];t[s.a].add(s.normal),t[s.b].add(s.normal),t[s.c].add(s.normal)}}for(let i=0,r=this.vertices.length;i<r;i++)t[i].normalize();for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i],n=s.vertexNormals;n.length===3?(n[0].copy(t[s.a]),n[1].copy(t[s.b]),n[2].copy(t[s.c])):(n[0]=t[s.a].clone(),n[1]=t[s.b].clone(),n[2]=t[s.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let i=this.faces[e],r=i.vertexNormals;r.length===3?(r[0].copy(i.normal),r[1].copy(i.normal),r[2].copy(i.normal)):(r[0]=i.normal.clone(),r[1]=i.normal.clone(),r[2]=i.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let t=0,i=this.faces.length;t<i;t++){let r=this.faces[t];r.__originalFaceNormal?r.__originalFaceNormal.copy(r.normal):r.__originalFaceNormal=r.normal.clone(),r.__originalVertexNormals||(r.__originalVertexNormals=[]);for(let s=0,n=r.vertexNormals.length;s<n;s++)r.__originalVertexNormals[s]?r.__originalVertexNormals[s].copy(r.vertexNormals[s]):r.__originalVertexNormals[s]=r.vertexNormals[s].clone()}let e=new Hd;e.faces=this.faces;for(let t=0,i=this.morphTargets.length;t<i;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let s=this.morphNormals[t].faceNormals,n=this.morphNormals[t].vertexNormals;for(let a=0,o=this.faces.length;a<o;a++){let l=new M,h={a:new M,b:new M,c:new M};s.push(l),n.push(h)}}let r=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let s=0,n=this.faces.length;s<n;s++){let a=this.faces[s],o=r.faceNormals[s],l=r.vertexNormals[s];o.copy(a.normal),l.a.copy(a.vertexNormals[0]),l.b.copy(a.vertexNormals[1]),l.c.copy(a.vertexNormals[2])}}for(let t=0,i=this.faces.length;t<i;t++){let r=this.faces[t];r.normal=r.__originalFaceNormal,r.vertexNormals=r.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Gt),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pr),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,i=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let r,s=this.vertices.length,n=this.vertices,a=e.vertices,o=this.faces,l=e.faces,h=this.colors,u=e.colors;t!==void 0&&(r=new Ai().getNormalMatrix(t));for(let c=0,d=a.length;c<d;c++){let p=a[c].clone();t!==void 0&&p.applyMatrix4(t),n.push(p)}for(let c=0,d=u.length;c<d;c++)h.push(u[c].clone());for(let c=0,d=l.length;c<d;c++){let p=l[c],m,g,f=p.vertexNormals,v=p.vertexColors,y=new ym(p.a+s,p.b+s,p.c+s);y.normal.copy(p.normal),r!==void 0&&y.normal.applyMatrix3(r).normalize();for(let b=0,x=f.length;b<x;b++)m=f[b].clone(),r!==void 0&&m.applyMatrix3(r).normalize(),y.vertexNormals.push(m);y.color.copy(p.color);for(let b=0,x=v.length;b<x;b++)g=v[b],y.vertexColors.push(g.clone());y.materialIndex=p.materialIndex+i,o.push(y)}for(let c=0,d=e.faceVertexUvs.length;c<d;c++){let p=e.faceVertexUvs[c];this.faceVertexUvs[c]===void 0&&(this.faceVertexUvs[c]=[]);for(let m=0,g=p.length;m<g;m++){let f=p[m],v=[];for(let y=0,b=f.length;y<b;y++)v.push(f[y].clone());this.faceVertexUvs[c].push(v)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},i=[],r=[],s=Math.pow(10,e);for(let o=0,l=this.vertices.length;o<l;o++){let h=this.vertices[o],u=Math.round(h.x*s)+"_"+Math.round(h.y*s)+"_"+Math.round(h.z*s);t[u]===void 0?(t[u]=o,i.push(this.vertices[o]),r[o]=i.length-1):r[o]=r[t[u]]}let n=[];for(let o=0,l=this.faces.length;o<l;o++){let h=this.faces[o];h.a=r[h.a],h.b=r[h.b],h.c=r[h.c];let u=[h.a,h.b,h.c];for(let c=0;c<3;c++)if(u[c]===u[(c+1)%3]){n.push(o);break}}for(let o=n.length-1;o>=0;o--){let l=n[o];this.faces.splice(l,1);for(let h=0,u=this.faceVertexUvs.length;h<u;h++)this.faceVertexUvs[h].splice(l,1)}let a=this.vertices.length-i.length;return this.vertices=i,a}setFromPoints(e){this.vertices=[];for(let t=0,i=e.length;t<i;t++){let r=e[t];this.vertices.push(new M(r.x,r.y,r.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let o=0;o<t;o++)e[o]._id=o;function i(o,l){return o.materialIndex-l.materialIndex}e.sort(i);let r=this.faceVertexUvs[0],s=this.faceVertexUvs[1],n,a;r&&r.length===t&&(n=[]),s&&s.length===t&&(a=[]);for(let o=0;o<t;o++){let l=e[o]._id;n&&n.push(r[l]),a&&a.push(s[l])}n&&(this.faceVertexUvs[0]=n),a&&(this.faceVertexUvs[1]=a)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.parameters!==void 0){let p=this.parameters;for(let m in p)p[m]!==void 0&&(e[m]=p[m]);return e}let t=[];for(let p=0;p<this.vertices.length;p++){let m=this.vertices[p];t.push(m.x,m.y,m.z)}let i=[],r=[],s={},n=[],a={},o=[],l={};for(let p=0;p<this.faces.length;p++){let m=this.faces[p],g=!0,f=!1,v=this.faceVertexUvs[0][p]!==void 0,y=m.normal.length()>0,b=m.vertexNormals.length>0,x=m.color.r!==1||m.color.g!==1||m.color.b!==1,w=m.vertexColors.length>0,_=0;if(_=h(_,0,0),_=h(_,1,g),_=h(_,2,f),_=h(_,3,v),_=h(_,4,y),_=h(_,5,b),_=h(_,6,x),_=h(_,7,w),i.push(_),i.push(m.a,m.b,m.c),i.push(m.materialIndex),v){let A=this.faceVertexUvs[0][p];i.push(d(A[0]),d(A[1]),d(A[2]))}if(y&&i.push(u(m.normal)),b){let A=m.vertexNormals;i.push(u(A[0]),u(A[1]),u(A[2]))}if(x&&i.push(c(m.color)),w){let A=m.vertexColors;i.push(c(A[0]),c(A[1]),c(A[2]))}}function h(p,m,g){return g?p|1<<m:p&~(1<<m)}function u(p){let m=p.x.toString()+p.y.toString()+p.z.toString();return s[m]!==void 0||(s[m]=r.length/3,r.push(p.x,p.y,p.z)),s[m]}function c(p){let m=p.r.toString()+p.g.toString()+p.b.toString();return a[m]!==void 0||(a[m]=n.length,n.push(p.getHex())),a[m]}function d(p){let m=p.x.toString()+p.y.toString();return l[m]!==void 0||(l[m]=o.length/2,o.push(p.x,p.y)),l[m]}return e.data={},e.data.vertices=t,e.data.normals=r,n.length>0&&(e.data.colors=n),o.length>0&&(e.data.uvs=[o]),e.data.faces=i,e}clone(){return new Hd().copy(this)}copy(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;let t=e.vertices;for(let c=0,d=t.length;c<d;c++)this.vertices.push(t[c].clone());let i=e.colors;for(let c=0,d=i.length;c<d;c++)this.colors.push(i[c].clone());let r=e.faces;for(let c=0,d=r.length;c<d;c++)this.faces.push(r[c].clone());for(let c=0,d=e.faceVertexUvs.length;c<d;c++){let p=e.faceVertexUvs[c];this.faceVertexUvs[c]===void 0&&(this.faceVertexUvs[c]=[]);for(let m=0,g=p.length;m<g;m++){let f=p[m],v=[];for(let y=0,b=f.length;y<b;y++){let x=f[y];v.push(x.clone())}this.faceVertexUvs[c].push(v)}}let s=e.morphTargets;for(let c=0,d=s.length;c<d;c++){let p={};if(p.name=s[c].name,s[c].vertices!==void 0){p.vertices=[];for(let m=0,g=s[c].vertices.length;m<g;m++)p.vertices.push(s[c].vertices[m].clone())}if(s[c].normals!==void 0){p.normals=[];for(let m=0,g=s[c].normals.length;m<g;m++)p.normals.push(s[c].normals[m].clone())}this.morphTargets.push(p)}let n=e.morphNormals;for(let c=0,d=n.length;c<d;c++){let p={};if(n[c].vertexNormals!==void 0){p.vertexNormals=[];for(let m=0,g=n[c].vertexNormals.length;m<g;m++){let f=n[c].vertexNormals[m],v={};v.a=f.a.clone(),v.b=f.b.clone(),v.c=f.c.clone(),p.vertexNormals.push(v)}}if(n[c].faceNormals!==void 0){p.faceNormals=[];for(let m=0,g=n[c].faceNormals.length;m<g;m++)p.faceNormals.push(n[c].faceNormals[m].clone())}this.morphNormals.push(p)}let a=e.skinWeights;for(let c=0,d=a.length;c<d;c++)this.skinWeights.push(a[c].clone());let o=e.skinIndices;for(let c=0,d=o.length;c<d;c++)this.skinIndices.push(o[c].clone());let l=e.lineDistances;for(let c=0,d=l.length;c<d;c++)this.lineDistances.push(l[c]);let h=e.boundingBox;h!==null&&(this.boundingBox=h.clone());let u=e.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new AU().fromGeometry(this),t=new ke,i=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new Qe(i,3).copyVector3sArray(e.vertices)),e.normals.length>0){let r=new Float32Array(e.normals.length*3);t.setAttribute("normal",new Qe(r,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let r=new Float32Array(e.colors.length*3);t.setAttribute("color",new Qe(r,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let r=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new Qe(r,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let r=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new Qe(r,2).copyVector2sArray(e.uvs2))}t.groups=e.groups;for(let r in e.morphTargets){let s=[],n=e.morphTargets[r];for(let a=0,o=n.length;a<o;a++){let l=n[a],h=new Ee(l.data.length*3,3);h.name=l.name,s.push(h.copyVector3sArray(l.data))}t.morphAttributes[r]=s}if(e.skinIndices.length>0){let r=new Ee(e.skinIndices.length*4,4);t.setAttribute("skinIndex",r.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let r=new Ee(e.skinWeights.length*4,4);t.setAttribute("skinWeight",r.copyVector4sArray(e.skinWeights))}return e.boundingSphere!==null&&(t.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new ke,i=e.geometry;if(e.isPoints||e.isLine){let r=new Ee(i.vertices.length*3,3),s=new Ee(i.colors.length*3,3);if(t.setAttribute("position",r.copyVector3sArray(i.vertices)),t.setAttribute("color",s.copyColorsArray(i.colors)),i.lineDistances&&i.lineDistances.length===i.vertices.length){let n=new Ee(i.lineDistances.length,1);t.setAttribute("lineDistance",n.copyArray(i.lineDistances))}i.boundingSphere!==null&&(t.boundingSphere=i.boundingSphere.clone()),i.boundingBox!==null&&(t.boundingBox=i.boundingBox.clone())}else e.isMesh&&(t=i.toBufferGeometry());return t}};Hd.prototype.isGeometry=!0;var AU=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(e){let t=[],i,r,s,n=e.faces;for(r=0;r<n.length;r++){let a=n[r];a.materialIndex!==s&&(s=a.materialIndex,i!==void 0&&(i.count=r*3-i.start,t.push(i)),i={start:r*3,materialIndex:s})}i!==void 0&&(i.count=r*3-i.start,t.push(i)),this.groups=t}fromGeometry(e){let t=e.faces,i=e.vertices,r=e.faceVertexUvs,s=r[0]&&r[0].length>0,n=r[1]&&r[1].length>0,a=e.morphTargets,o=a.length,l;if(o>0){l=[];for(let f=0;f<o;f++)l[f]={name:a[f].name,data:[]};this.morphTargets.position=l}let h=e.morphNormals,u=h.length,c;if(u>0){c=[];for(let f=0;f<u;f++)c[f]={name:h[f].name,data:[]};this.morphTargets.normal=c}let d=e.skinIndices,p=e.skinWeights,m=d.length===i.length,g=p.length===i.length;i.length>0&&t.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let f=0;f<t.length;f++){let v=t[f];this.vertices.push(i[v.a],i[v.b],i[v.c]);let y=v.vertexNormals;if(y.length===3)this.normals.push(y[0],y[1],y[2]);else{let x=v.normal;this.normals.push(x,x,x)}let b=v.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let x=v.color;this.colors.push(x,x,x)}if(s===!0){let x=r[0][f];x!==void 0?this.uvs.push(x[0],x[1],x[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",f),this.uvs.push(new H,new H,new H))}if(n===!0){let x=r[1][f];x!==void 0?this.uvs2.push(x[0],x[1],x[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",f),this.uvs2.push(new H,new H,new H))}for(let x=0;x<o;x++){let w=a[x].vertices;l[x].data.push(w[v.a],w[v.b],w[v.c])}for(let x=0;x<u;x++){let w=h[x].vertexNormals[f];c[x].data.push(w.a,w.b,w.c)}m&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),g&&this.skinWeights.push(p[v.a],p[v.b],p[v.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),this}},ym=class{constructor(e,t,i,r,s,n=0){this.a=e,this.b=t,this.c=i,this.normal=r&&r.isVector3?r:new M,this.vertexNormals=Array.isArray(r)?r:[],this.color=s&&s.isColor?s:new Ue,this.vertexColors=Array.isArray(s)?s:[],this.materialIndex=n}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,i=e.vertexNormals.length;t<i;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,i=e.vertexColors.length;t<i;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}},MU=["a","b","c"];function EU(e,t){switch(t){case"c":return e.c;case"b":return e.b;case"a":default:return e.a}}function jp(e,t,i){let r=Math.min(e,t),s=Math.max(e,t),n=r+"_"+s;return i.get(n)}function Hp(e,t,i,r,s,n){let a=Math.min(e,t),o=Math.max(e,t),l=a+"_"+o,h;if(r.has(l))h=r.get(l);else{let u=i[a],c=i[o];h={a:u,b:c,newEdge:null,faces:[]},r.set(l,h)}h.faces.push(s),n[e].edges.push(h),n[t].edges.push(h)}function CU(e,t,i,r){let s,n,a;for(s=0,n=e.length;s<n;s++)i[s]={edges:[]};for(s=0,n=t.length;s<n;s++)a=t[s],Hp(a.a,a.b,e,r,a,i),Hp(a.b,a.c,e,r,a,i),Hp(a.c,a.a,e,r,a,i)}function Ec(e,t,i,r,s){e.push(new ym(t,i,r,void 0,void 0,s))}function Ua(e,t){return Math.abs(t-e)/2+Math.min(e,t)}function Cc(e,t,i,r){e.push([t.clone(),i.clone(),r.clone()])}var TU=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof ke?e=new Hd().fromBufferGeometry(e):e=e.clone(),e.mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new M,i,r,s,n,a,o=e.vertices,l=e.faces,h=e.faceVertexUvs[0],u=h!==void 0&&h.length>0,c=[],d=new Map;CU(o,l,c,d);let p=[],m,g,f,v,y,b,x;for(let ne of Array.from(d.keys())){for(g=d.get(ne),f=new M,y=3/8,b=1/8,x=g.faces.length,x!=2&&(y=.5,b=0,x!=1),f.addVectors(g.a,g.b).multiplyScalar(y),t.set(0,0,0),n=0;n<x;n++){for(v=g.faces[n],a=0;a<3&&(m=o[EU(v,MU[a])],!(m!==g.a&&m!==g.b));a++);m&&t.add(m)}t.multiplyScalar(b),f.add(t),g.newEdge=p.length,p.push(f)}let w,_,A,S,E,C,T,P=[];for(r=0,s=o.length;r<s;r++){for(C=o[r],E=c[r].edges,i=E.length,i==3?w=3/16:i>3&&(w=3/(8*i)),_=1-i*Number(w),A=w,i<=2&&(i==2?(_=3/4,A=1/8):i==1||i==0),T=C.clone().multiplyScalar(_),t.set(0,0,0),n=0;n<i;n++)S=E[n],m=S.a!==C?S.a:S.b,t.add(m);t.multiplyScalar(Number(A)),T.add(t),P.push(T)}let R=P.concat(p),O=P.length,U,j,z,L=[],G=[],F,V,N,X,Z=new H,ee=new H,W=new H;for(r=0,s=l.length;r<s;r++)v=l[r],U=Number(jp(v.a,v.b,d).newEdge)+O,j=Number(jp(v.b,v.c,d).newEdge)+O,z=Number(jp(v.c,v.a,d).newEdge)+O,Ec(L,U,j,z,v.materialIndex),Ec(L,v.a,U,z,v.materialIndex),Ec(L,v.b,j,U,v.materialIndex),Ec(L,v.c,z,j,v.materialIndex),u&&(F=h[r],V=F[0],N=F[1],X=F[2],Z.set(Ua(V.x,N.x),Ua(V.y,N.y)),ee.set(Ua(N.x,X.x),Ua(N.y,X.y)),W.set(Ua(V.x,X.x),Ua(V.y,X.y)),Cc(G,Z,ee,W),Cc(G,V,Z,W),Cc(G,N,ee,Z),Cc(G,X,W,ee));e.vertices=R,e.faces=L,u&&(e.faceVertexUvs[0]=G)}},Wt=new M,PU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=e.geometry??t?.geometry??new ke().copy(new os(100,100,100)),r;t===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Wt),r={width:Wt.x,height:Wt.y,depth:Wt.z,subdivisions:0}):r=t.parameters;let s={...r,...e.parameters};return{parameters:{width:Math.abs(s.width),height:Math.abs(s.height),depth:Math.abs(s.depth),subdivisions:Math.abs(s.subdivisions)},geometry:i}}static build(e){let{width:t,height:i,depth:r,subdivisions:s}=e.parameters,n=e.geometry??new ke().copy(new os(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Wt)):Wt.set(a.width,a.height,a.depth),(t!==Wt.x||i!==Wt.y||r!==Wt.z)&&n.scale(Wt.x===0?1:t/Wt.x,Wt.y===0?1:i/Wt.y,Wt.z===0?1:r/Wt.z);let o=n.originalGeometry;return s>0?(o===void 0||a?.subdivisions!==s)&&(o===void 0&&(o=n),n=new TU(s).modify(o).toBufferGeometry()):(o!==void 0&&(n=o),o=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),o!==void 0&&Object.assign(n,{originalGeometry:o}),delete e.geometry,Object.assign(n,{userData:{...e,type:"NonParametricGeometry"}})}static loadFromUrl(e,t,i){new pw(i).load(e,r=>{let s=this.normalizeInputs({geometry:r});r.boundingBox.getSize(Wt);let n=100/Wt.x;Object.assign(s.parameters,{width:100,height:Wt.y*n,depth:Wt.z*n}),t(this.build(s))})}},DU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,spikes:r,cornerRadius:s,depth:n,extrudeBevelSize:a,extrudeBevelSegments:o}=e.parameters,l=e.shape,h=t*.5,u=i*.5,c=0,d=0,p=2*Math.PI/r;for(let g=0;g<r;g++){let f=p*g,v=c+Math.sin(f)*h,y=d+Math.cos(f)*u;l.addPoint(l.createPoint(v,y))}l.isClosed=!0;for(let g=0,f=l.points.length;g<f;g++)l.points[g].roundness=s;l.roundness=s,l.update();let m=ua.create({shape:l,parameters:{roundness:s,depth:n,extrudeBevelSize:a,extrudeBevelSegments:o}});return Object.assign(m,{userData:{...e,type:"PolygonGeometry"}})}},OU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,radialSegments:s,heightSegments:n,openEnded:a,cornerRadius:o,cornerSegments:l}=e.parameters,h=new IU(t*.5,i,s,n,a,o,l);return h.scale(1,1,r/t),Object.assign(h,{userData:{...e,type:"PyramidGeometry"}})}};function fl(e,t,i){i.x=e.x*t.x,i.y=e.y,i.z=e.x*t.y}function Gp(e,t,i,r,s,n){let a=t.clone().sub(e),o=i.clone().sub(e),l=a.angleTo(o);if(a.normalize(),o.normalize(),r===s){let h=a.add(o).normalize();n.copy(e).addScaledVector(h,r/Math.sin(l/2))}else{let h=a.angleTo(o);n.copy(e),n.addScaledVector(a,s/Math.sin(h)),n.addScaledVector(o,r/Math.sin(h))}}function LU(e,t,i){let r=e.clone().sub(t),s=i.clone().sub(t);return r.projectOnVector(s),r.add(t)}var IU=class extends ke{constructor(e=.5,t=1,i=4,r=1,s=!1,n=0,a=4){super(),i=Math.floor(Math.max(3,i)),r=Math.floor(r),a=Math.floor(a);let o=[],l=[],h=[],u=[],c=0,d=t/2,p=Math.PI/i,m=e*Math.cos(Math.PI/i),g=2*Math.PI/i,f=(i-2)*Math.PI/i,v=Math.PI-f,y=new M(0,-d,0),b=new M(0,d,0),x=new H(e,-d),w=new H(m,-d),_=new H(0,b.y).sub(w),A=new H(0,b.y).sub(x),S=new H(_.y,-_.x).normalize(),E=new H(A.y,-A.x).normalize(),C=e*Math.cos(Math.PI/i)*Math.tan((Math.PI-_.angle())/2)-1e-8;n=Math.min(n,C);let T;{let L=new M(S.x,S.y,0),G=new M(Math.cos(g)*L.x,L.y,Math.sin(g)*L.x);T=L.angleTo(G)}let P=n/Math.tan((Math.PI-_.angle())/2),R=n/Math.tan((Math.PI-T)/2),O=new M;if(!s){l.push(y.x,y.y,y.z),h.push(0,-1,0),u.push(0,0);let L=c++,G=[],F=x.clone(),V=P/Math.cos(Math.PI/i);F.x-=V;for(let N=0;N<i;N++){let X=N/i*Math.PI*2+p,Z=new H(Math.sin(X),Math.cos(X));fl(F,Z,O),l.push(O.x,O.y,O.z),h.push(0,-1,0),u.push(0,0),G.push(c++)}for(let N=0;N<G.length;N++)o.push(G[N],L,G[(N+1)%G.length])}let U=[];{let L=new M,G=new M,F=new M,V=new M,N=new M,X=new M;for(let Z=0;Z<i;Z++){let ee=Z/i*Math.PI*2+p,W=(Z+.5)/i*Math.PI*2+p,ne=(Z+1)/i*Math.PI*2+p,q=new H(Math.sin(ee),Math.cos(ee)),Q=new H(Math.sin(W),Math.cos(W)),K=new H(Math.sin(ne),Math.cos(ne));fl(x,q,G),fl(x,K,F),fl(S,Q,L),Gp(b,G,F,R,R,V),l.push(V.x,V.y,V.z),Gp(G,b,F,R,P,N),l.push(N.x,N.y,N.z),Gp(F,G,b,P,R,X),l.push(X.x,X.y,X.z),h.push(L.x,L.y,L.z),h.push(L.x,L.y,L.z),h.push(L.x,L.y,L.z),u.push(0,0),u.push(0,0),u.push(0,0);let de=c++,oe=c++,le=c++;if(o.push(de,oe,le),n>0){{let ge=G.clone().add(F).multiplyScalar(.5),De=b.clone().sub(ge).normalize(),Ae=y.clone().sub(ge).normalize().add(De).normalize().multiplyScalar(-1),we=X.clone().sub(N);j(ge,we,Ae,_.angle())}let ue,pe;{let ge=new M;fl(E,K,ge);let De=X.clone().add(V).multiplyScalar(.5);De=LU(De,F,b);let Ae=X.clone().sub(V);[ue,pe]=j(De,Ae,ge,T,V.y)}{let ge=ue,De=ge.clone().setY(0).normalize(),Ae=new M(0,-1,0),we=De.clone().cross(Ae);z(ge,De,Ae,we)}U.concat(pe);{let ge=_.angle(),De=Math.PI-ge,Ae=b.clone();Ae.y-=n/Math.sin(ge-Math.PI/2);let we=new M,bt=[];for(let B=0;B<a;B++){let D=[],ie=Math.PI/2-De*B/a,ce=Math.cos(ie),fe=Math.sin(ie),_e=W;for(let je=0;je<=B;je++){let re=Math.cos(_e),Be=Math.sin(_e);L.x=ce*Be,L.y=fe,L.z=ce*re,we.copy(Ae).addScaledVector(L,n),l.push(we.x,we.y,we.z),h.push(L.x,L.y,L.z),u.push(0,0),D.push(c++),_e+=Math.PI*2/B/i}bt.push(D)}pe.reverse(),bt.push(pe);let Ke=bt.length-1;for(let B=0;B<Ke;B++){let D=bt[B],ie=bt[B+1],ce=D.length-1;o.push(ie[1],D[0],ie[0]);for(let fe=1;fe<=ce;fe++)o.push(D[fe],D[fe-1],ie[fe]),o.push(ie[fe+1],D[fe],ie[fe])}}}}}this.setIndex(o),this.setAttribute("position",new Ee(l,3)),this.setAttribute("normal",new Ee(h,3)),this.setAttribute("uv",new Ee(u,2));function j(L,G,F,V,N){let X=-V/2,Z=(Math.PI-V)/2,ee=G.clone().normalize().cross(F);L.addScaledVector(F,-n/Math.sin(Z));let W=new M,ne=new M,q=1,Q=c,K=[];for(let de=0;de<=a;de++){let oe=X+de/a*V;ne.set(0,0,0),ne.addScaledVector(ee,Math.sin(oe)),ne.addScaledVector(F,Math.cos(oe));for(let le=0;le<=q;le++){let ue=le/q-.5;if(W.copy(L),W.addScaledVector(G,ue),W.addScaledVector(ne,n),N!=null){let pe=Math.max(0,W.y-N);W.addScaledVector(G,-pe/G.y)}l.push(W.x,W.y,W.z),h.push(ne.x,ne.y,ne.z),u.push(0,0),le===0&&K.push(c),c++}}for(let de=0;de<a;de++)for(let oe=0;oe<q;oe++){let le=Q+oe+(q+1)*de,ue=le+(q+1),pe=ue+1,ge=le+1;o.push(le,ue,ge),o.push(ue,pe,ge)}return[L.clone().addScaledVector(G,.5),K]}function z(L,G,F,V){let N=Math.PI/2,X=A.angle()-N,Z=[],ee=new M,W=new M;for(let q=0;q<=a;q++){let Q=[],K=q/a;for(let de=0;de<=q;de++){let oe=((q?de/q:0)-.5)*v,le=Math.cos(oe),ue=Math.sin(oe),pe=Math.atan(Math.tan(X)*le),ge=(N+pe)*K,De=Math.cos(ge),Ae=Math.sin(ge);ee.set(0,0,0),ee.addScaledVector(G,Ae*le),ee.addScaledVector(F,De),ee.addScaledVector(V,Ae*ue),W.copy(L).addScaledVector(ee,n),l.push(W.x,W.y,W.z),h.push(ee.x,ee.y,ee.z),u.push(0,0),Q.push(c++)}Z.push(Q)}let ne=Z.length-1;for(let q=0;q<ne;q++){let Q=Z[q],K=Z[q+1],de=Q.length-1;o.push(Q[0],K[1],K[0]);for(let oe=1;oe<=de;oe++)o.push(Q[oe-1],Q[oe],K[oe]),o.push(Q[oe],K[oe+1],K[oe])}}}},BU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},e.ui);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)}),ui:r}}static build(e){let t=e.shape,{width:i,height:r,cornerRadius:s,cornerType:n,depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}=e.parameters,h={x:i*.5,y:r*.5},u={x:-h.x,y:-h.y},c={x:h.x,y:h.y};function d(x,w,_){return w>i&&_>r?Math.min(x*i/w,x*r/_):w>i?x*i/w:_>r?x*r/_:x}let p=[];p[0]=s[0]===0?0:d(s[0],s[0]+s[3],s[0]+s[1]),p[1]=s[1]===0?0:d(s[1],s[1]+s[2],s[1]+s[0]),p[2]=s[2]===0?0:d(s[2],s[2]+s[1],s[2]+s[3]),p[3]=s[3]===0?0:d(s[3],s[3]+s[0],s[3]+s[2]);let m=u.x,g=c.x,f=c.y,v=u.y;t.addPoint(t.createPoint(m,f)),t.addPoint(t.createPoint(g,f)),t.addPoint(t.createPoint(g,v)),t.addPoint(t.createPoint(m,v)),t.isClosed=!0;let y=!0;for(let x=0,w=t.points.length;x<w;x++)t.points[x].roundness=p[x],x>0&&p[x]!==p[x-1]&&(y=!1);y&&(t.roundness=p[0]),t.useCubicForRoundedCorners=n!==1,t.update();let b=ua.create({shape:t,parameters:{depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}});return Object.assign(b,{userData:{...e,type:"RectangleGeometry"}})}},RU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t=100,height:i=t,depth:r=t,widthSegments:s=64,heightSegments:n=64,phiStart:a,phiLength:o,thetaStart:l,thetaLength:h}=e.parameters,u=new tg(.5*t,s,n,a,o,l,h);return u.scale(1,i/t,r/t),Object.assign(u,{userData:{...e,type:"SphereGeometry"}})}},NU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:0})}}static build(e){let{width:t=100,height:i=t,widthSegments:r=8,heightSegments:s=8}=e.parameters,n=new $d(t,i,r,s);return n.scale(1,1,1),Object.assign(n,{userData:{...e,type:"PlaneGeometry"}})}},zU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,angle:s,cornerRadius:n,cornerSegments:a}=e.parameters,o=new FU(t,i,r,s,n,a);return Object.assign(o,{userData:{...e,type:"BackdropGeometry"}})}},FU=class extends ke{constructor(e=1,t=1,i=1,r=90,s=10,n=24){super(),this.type="BackdropGeometry";let a=[],o=[],l=[],h=.001;s==0&&(n=1),n=Math.max(1,Math.floor(n)),s=Math.min(s,100),r=Math.min(180-h,r),r*=Math.PI/180;let u=[],c=Math.PI/2,d=(ne=0,q=0,Q=0)=>new M(ne,q,Q),p=d(),m=d(),[g,f,v]=[t/2,e/2,i/2],y=-f,b=+f,[x,w,_]=[d(y,-g,+v),d(y,-g,-v),d(y,+g,-v)],A=(ne,q=!1)=>Math.sin(ne-Math.PI/(1+ +q)),S=(ne,q=!1)=>Math.cos(ne-Math.PI/(1+ +q));_.y=Math.sin(r)*t-g;let E=Math.cos(r)*t-v,C=x.z-h;r<=c?(_.z=Math.min(E,C),_.z==C&&(_.y-=(E-C)/Math.tan(c-r))):w.z=Math.min(w.z-E-v,x.z-h),p.subVectors(x,w),m.subVectors(_,w);let T=Math.min(p.length(),m.length())*s/100,P=T*Math.tan(r/2),R=T/Math.cos(r/2),O=p.clone().normalize().add(m.normalize()).setLength(R).add(w);p.set(0,A(r,!0),S(r,!0)),u.push([_,p.clone()]);let U=(Math.PI-r)/n;for(let ne=0;ne<=n;ne++){let q=c+r+ne*U;p.set(0,Math.sin(q)*P,Math.cos(q)*P),p.add(O),m.set(0,A(q),S(q)),u.push([p.clone(),m.clone()])}u.push([x,d(0,1,0)]);let j=Math.sin(U/2)*P*2,z=u.length-1,L=u[0][0].distanceTo(u[1][0]),G=u[z-1][0].distanceTo(u[z][0]),F=L+j*n+G;u[0].push(1);for(let ne=0;ne<=n;ne++)u[ne+1].push(1-(L+ne*j)/F);u[z].push(0);let[V,N,X]=u[0],Z,ee,W;for(let ne=1;ne<u.length;ne++)[Z,ee,W]=u[ne],a.push(y,V.y,V.z,y,Z.y,Z.z,b,V.y,V.z,b,V.y,V.z,y,Z.y,Z.z,b,Z.y,Z.z),o.push(0,N.y,N.z,0,ee.y,ee.z,0,N.y,N.z,0,N.y,N.z,0,ee.y,ee.z,0,ee.y,ee.z),l.push(0,X,0,W,1,X,1,X,0,W,1,W),[V,N,X]=[Z,ee,W];this.setAttribute("position",new Ee(a,3)),this.setAttribute("normal",new Ee(o,3)),this.setAttribute("uv",new Ee(l,2))}},UU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,innerRadiusPercent:r,spikes:s,cornerRadius:n,angle:a,depth:o,extrudeBevelSize:l,extrudeBevelSegments:h}=e.parameters,u=e.shape,c=t*.5,d=i*.5,p=0,m=0,g=a*Math.PI/360/s,f=Math.PI/2*3*-1,v=c*r/100,y=d*r/100;if(s===3&&r===50){g=2*Math.PI/s;for(let x=0;x<s;x++){let w=g*x,_=p+Math.sin(w)*c,A=m+Math.cos(w)*d;u.addPoint(u.createPoint(_,A))}}else for(let x=0;x<s;x++){let w=p+Math.cos(f)*c,_=m+Math.sin(f)*d;u.addPoint(u.createPoint(w,_)),f+=g,w=p+Math.cos(f)*v,_=m+Math.sin(f)*y,x<=s,u.addPoint(u.createPoint(w,_)),f+=g}u.isClosed=!0;for(let x=0,w=u.points.length;x<w;x++)u.points[x].roundness=n;u.roundness=n,u.update();let b=ua.create({shape:u,parameters:{roundness:n,depth:o,extrudeBevelSize:l,extrudeBevelSegments:h}});return Object.assign(b,{userData:{...e,type:"StarGeometry"}})}},kU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i}=e.parameters,r=new $d(t,i);return Object.assign(r,{userData:{...e,type:"TextFrameGeometry"}})}},jU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},e.parameters),r=Math.abs(i.width),s=Math.abs(i.height??i.width),n=Math.round(Math.abs(i.depth??i.width*.25));return{parameters:Object.assign(i,{width:r,height:s,depth:n})}}static build(e){let{width:t,height:i,depth:r,radialSegments:s,tubularSegments:n,arc:a,cornerRadius:o,cornerSegments:l}=e.parameters,h=HU(t,i,r,t*.5,a,n,0,0,s,o,l);return h.scale(1,i/t,1),Object.assign(h,{userData:{...e,type:"TorusGeometry"}})}};function HU(e,t,i,r,s,n,a,o,l,h,u){return[t,i]=[i,t],a=t/2,s/=2*Math.PI,s==1&&(h=0),new jg(!0,e,t,i,r,s,n,a,o,l,h,u)}var GU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width),tube:i.tube??i.width*.125})}}static build(e){let{width:t,tube:i,tubularSegments:r,radialSegments:s,p:n,q:a}=e.parameters,o=t*.5;o!==i&&(o-=i);let l=new dw(o,i,r,s,n,a);return Object.assign(l,{userData:{...e,type:"TorusKnotGeometry"}})}},VU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width*(i.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t=100,height:i,cornerRadius:r,depth:s,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:o}=e.parameters,l=e.shape,h=t*.5,u=i*.5;o?(l.addPoint(l.createPoint(-h,u)),l.addPoint(l.createPoint(h,-u)),l.addPoint(l.createPoint(-h,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(h,-u)),l.addPoint(l.createPoint(-h,-u))),l.isClosed=!0;for(let d=0,p=l.points.length;d<p;d++)l.points[d].roundness=r;l.roundness=r,l.update();let c=ua.create({shape:l,parameters:{roundness:r,depth:s,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(c,{userData:{...e,type:"TriangleGeometry"}})}};function WU(){let e=new ke;return e.setAttribute("position",new Qe(new Float32Array([]),3)),e.setIndex(new Qe(new Uint16Array([]),1)),e}var XU=12,YU=1,Q_=class extends ke{constructor(e,t){super(),this.charWidths=[],this.charCoords=[],this.wrappedText=[],this.isLowResolution=!1,this.vectorShapes=[],this.userData={parameters:e,type:"TextGeometry"};let i=t.getFont(e.font);i?.isLoaded?(this.font=i,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let i=t.getFont(e);i&&(this.font=i,await i.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:i,height:r,depth:s,extrudeBevelSize:n,extrudeBevelSegments:a,text:o,textTransform:l}=e,h=l===2?o.toUpperCase():l===3?o.toLowerCase():o,u=qU(e,t,h),{shapes:c,charWidths:d,charCoords:p}=t.generateShapes(u,e),m=i*.5,g=r*.5,f=c.map(b=>new Bt().fromShape(b));this.vectorShapes=f;let v=f.map(b=>ua.create({shape:b,parameters:{depth:s,extrudeBevelSegments:a,extrudeBevelSize:n,windingRule:s<=0?Et.NONZERO:Et.ODD,subdivisions:this.isLowResolution&&s>0?YU:XU}})),y=v.length?to(v):WU();y.translate(-m,g,0),this.dispose(),this.wrappedText=u,this.charCoords=p,this.charWidths=d,this.deleteAttribute("extrudeNormal"),Object.entries(y.attributes).forEach(([b,x])=>{this.setAttribute(b,x)}),this.setIndex(y.index),this.computeBoundingSphere()}clone(){let e=ko(new ke,Q_.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,i])=>{this.setAttribute(t,i)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function qU(e,t,i){i=i??e.text;let r=[""],s="";for(let n of i)s+=n,n===" "||n===`
|
|
3137
|
+
}`;function cP(e,t,i){let r=new qm,s=new H,n=new H,a=new tt,o=new $b({depthPacking:kb}),l=new oP,h={},u=i.maxTextureSize,c={0:pi,1:mn,2:Er},d=new Qt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new H},radius:{value:4}},vertexShader:lP,fragmentShader:hP}),p=d.clone();p.defines.HORIZONTAL_PASS=1;let m=new ke;m.setAttribute("position",new Qe(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new Xi(m,d),f=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Vm,this.render=function(x,w,_){if(f.enabled===!1||f.autoUpdate===!1&&f.needsUpdate===!1||x.length===0)return;let A=e.getRenderTarget(),S=e.getActiveCubeFace(),E=e.getActiveMipmapLevel(),C=e.state;C.setBlending(si),C.buffers.color.setClear(1,1,1,1),C.buffers.depth.setTest(!0),C.setScissorTest(!1);for(let T=0,P=x.length;T<P;T++){let R=x[T],O=R.shadow;if(O===void 0){console.warn("THREE.WebGLShadowMap:",R,"has no shadow.");continue}if(O.autoUpdate===!1&&O.needsUpdate===!1)continue;s.copy(O.mapSize);let U=O.getFrameExtents();if(s.multiply(U),n.copy(O.mapSize),(s.x>u||s.y>u)&&(s.x>u&&(n.x=Math.floor(u/U.x),s.x=n.x*U.x,O.mapSize.x=n.x),s.y>u&&(n.y=Math.floor(u/U.y),s.y=n.y*U.y,O.mapSize.y=n.y)),O.map===null){let z=this.type!==Cl?{minFilter:Lt,magFilter:Lt}:{};O.map=new Ut(s.x,s.y,z),O.map.texture.name=R.name+".shadowMap",O.camera.updateProjectionMatrix()}e.setRenderTarget(O.map),e.clear();let j=O.getViewportCount();for(let z=0;z<j;z++){let L=O.getViewport(z);a.set(n.x*L.x,n.y*L.y,n.x*L.z,n.y*L.w),C.viewport(a),O.updateMatrices(R,z),r=O.getFrustum(),b(w,_,O.camera,R,this.type)}O.isPointLightShadow!==!0&&this.type===Cl&&v(O,_),O.needsUpdate=!1}f.needsUpdate=!1,e.setRenderTarget(A,S,E)};function v(x,w){let _=t.update(g);d.defines.VSM_SAMPLES!==x.blurSamples&&(d.defines.VSM_SAMPLES=x.blurSamples,p.defines.VSM_SAMPLES=x.blurSamples,d.needsUpdate=!0,p.needsUpdate=!0),x.mapPass===null&&(x.mapPass=new Ut(s.x,s.y)),d.uniforms.shadow_pass.value=x.map.texture,d.uniforms.resolution.value=x.mapSize,d.uniforms.radius.value=x.radius,e.setRenderTarget(x.mapPass),e.clear(),e.renderBufferDirect(w,null,_,d,g,null),p.uniforms.shadow_pass.value=x.mapPass.texture,p.uniforms.resolution.value=x.mapSize,p.uniforms.radius.value=x.radius,e.setRenderTarget(x.map),e.clear(),e.renderBufferDirect(w,null,_,p,g,null)}function y(x,w,_,A,S,E){let C=null,T=_.isPointLight===!0?x.customDistanceMaterial:x.customDepthMaterial;if(T!==void 0?C=T:C=_.isPointLight===!0?l:o,e.localClippingEnabled&&w.clipShadows===!0&&Array.isArray(w.clippingPlanes)&&w.clippingPlanes.length!==0||w.displacementMap&&w.displacementScale!==0||w.alphaMap&&w.alphaTest>0){let P=C.uuid,R=w.uuid,O=h[P];O===void 0&&(O={},h[P]=O);let U=O[R];U===void 0&&(U=C.clone(),O[R]=U),C=U}return C.visible=w.visible,C.wireframe=w.wireframe,E===Cl?C.side=w.shadowSide!==null?w.shadowSide:w.side:C.side=w.shadowSide!==null?w.shadowSide:c[w.side],C.alphaMap=w.alphaMap,C.alphaTest=w.alphaTest,C.clipShadows=w.clipShadows,C.clippingPlanes=w.clippingPlanes,C.clipIntersection=w.clipIntersection,C.displacementMap=w.displacementMap,C.displacementScale=w.displacementScale,C.displacementBias=w.displacementBias,C.wireframeLinewidth=w.wireframeLinewidth,C.linewidth=w.linewidth,_.isPointLight===!0&&C.isMeshDistanceMaterial===!0&&(C.referencePosition.setFromMatrixPosition(_.matrixWorld),C.nearDistance=A,C.farDistance=S),C}function b(x,w,_,A,S){if(x.visible===!1)return;if(x.layers.test(w.layers)&&(x.isMesh||x.isLine||x.isPoints)&&(x.castShadow||x.receiveShadow&&S===Cl)&&(!x.frustumCulled||r.intersectsObject(x))){x.modelViewMatrix.multiplyMatrices(_.matrixWorldInverse,x.matrixWorld);let C=t.update(x),T=x.material;if(Array.isArray(T)){let P=C.groups;for(let R=0,O=P.length;R<O;R++){let U=P[R],j=T[U.materialIndex];if(j&&j.visible){let z=y(x,j,A,_.near,_.far,S);e.renderBufferDirect(_,null,C,z,x,U)}}}else if(T.visible){let P=y(x,T,A,_.near,_.far,S);e.renderBufferDirect(_,null,C,P,x,null)}}let E=x.children;for(let C=0,T=E.length;C<T;C++)b(E[C],w,_,A,S)}}function dP(e,t,i){let r=i.isWebGL2;function s(){let k=!1,me=new tt,be=null,He=new tt(0,0,0,0);return{setMask:function(Te){be!==Te&&!k&&(e.colorMask(Te,Te,Te,Te),be=Te)},setLocked:function(Te){k=Te},setClear:function(Te,Ge,ye,Ve,Xe){Xe===!0&&(Te*=Ve,Ge*=Ve,ye*=Ve),me.set(Te,Ge,ye,Ve),He.equals(me)===!1&&(e.clearColor(Te,Ge,ye,Ve),He.copy(me))},reset:function(){k=!1,be=null,He.set(-1,0,0,0)}}}function n(){let k=!1,me=null,be=null,He=null;return{setTest:function(Te){Te?ee(2929):W(2929)},setMask:function(Te){me!==Te&&!k&&(e.depthMask(Te),me=Te)},setFunc:function(Te){if(be!==Te){if(Te)switch(Te){case D2:e.depthFunc(512);break;case O2:e.depthFunc(519);break;case L2:e.depthFunc(513);break;case wf:e.depthFunc(515);break;case I2:e.depthFunc(514);break;case B2:e.depthFunc(518);break;case R2:e.depthFunc(516);break;case N2:e.depthFunc(517);break;default:e.depthFunc(515)}else e.depthFunc(515);be=Te}},setLocked:function(Te){k=Te},setClear:function(Te){He!==Te&&(e.clearDepth(Te),He=Te)},reset:function(){k=!1,me=null,be=null,He=null}}}function a(){let k=!1,me=null,be=null,He=null,Te=null,Ge=null,ye=null,Ve=null,Xe=null;return{setTest:function(St){k||(St?ee(2960):W(2960))},setMask:function(St){me!==St&&!k&&(e.stencilMask(St),me=St)},setFunc:function(St,dt,Pi){(be!==St||He!==dt||Te!==Pi)&&(e.stencilFunc(St,dt,Pi),be=St,He=dt,Te=Pi)},setOp:function(St,dt,Pi){(Ge!==St||ye!==dt||Ve!==Pi)&&(e.stencilOp(St,dt,Pi),Ge=St,ye=dt,Ve=Pi)},setLocked:function(St){k=St},setClear:function(St){Xe!==St&&(e.clearStencil(St),Xe=St)},reset:function(){k=!1,me=null,be=null,He=null,Te=null,Ge=null,ye=null,Ve=null,Xe=null}}}let o=new s,l=new n,h=new a,u={},c={},d=new WeakMap,p=[],m=null,g=!1,f=null,v=null,y=null,b=null,x=null,w=null,_=null,A=!1,S=null,E=null,C=null,T=null,P=null,R=e.getParameter(35661),O=!1,U=0,j=e.getParameter(7938);j.indexOf("WebGL")!==-1?(U=parseFloat(/^WebGL (\d)/.exec(j)[1]),O=U>=1):j.indexOf("OpenGL ES")!==-1&&(U=parseFloat(/^OpenGL ES (\d)/.exec(j)[1]),O=U>=2);let z=null,L={},G=e.getParameter(3088),F=e.getParameter(2978),V=new tt().fromArray(G),N=new tt().fromArray(F);function X(k,me,be){let He=new Uint8Array(4),Te=e.createTexture();e.bindTexture(k,Te),e.texParameteri(k,10241,9728),e.texParameteri(k,10240,9728);for(let Ge=0;Ge<be;Ge++)e.texImage2D(me+Ge,0,6408,1,1,0,6408,5121,He);return Te}let Z={};Z[3553]=X(3553,3553,1),Z[34067]=X(34067,34069,6),o.setClear(0,0,0,1),l.setClear(1),h.setClear(0),ee(2929),l.setFunc(wf),ue(!1),pe(Lv),ee(2884),oe(si);function ee(k){u[k]!==!0&&(e.enable(k),u[k]=!0)}function W(k){u[k]!==!1&&(e.disable(k),u[k]=!1)}function ne(k,me){return c[k]!==me?(e.bindFramebuffer(k,me),c[k]=me,r&&(k===36009&&(c[36160]=me),k===36160&&(c[36009]=me)),!0):!1}function q(k,me){let be=p,He=!1;if(k)if(be=d.get(me),be===void 0&&(be=[],d.set(me,be)),k.isWebGLMultipleRenderTargets){let Te=k.texture;if(be.length!==Te.length||be[0]!==36064){for(let Ge=0,ye=Te.length;Ge<ye;Ge++)be[Ge]=36064+Ge;be.length=Te.length,He=!0}}else be[0]!==36064&&(be[0]=36064,He=!0);else be[0]!==1029&&(be[0]=1029,He=!0);He&&(i.isWebGL2?e.drawBuffers(be):t.get("WEBGL_draw_buffers").drawBuffersWEBGL(be))}function Q(k){return m!==k?(e.useProgram(k),m=k,!0):!1}let K={[Wa]:32774,[x2]:32778,[b2]:32779};if(r)K[Nv]=32775,K[zv]=32776;else{let k=t.get("EXT_blend_minmax");k!==null&&(K[Nv]=k.MIN_EXT,K[zv]=k.MAX_EXT)}let de={[w2]:0,[_2]:1,[S2]:768,[Rb]:770,[P2]:776,[C2]:774,[M2]:772,[A2]:769,[Nb]:771,[T2]:775,[E2]:773};function oe(k,me,be,He,Te,Ge,ye,Ve){if(k===si){g===!0&&(W(3042),g=!1);return}if(g===!1&&(ee(3042),g=!0),k!==y2){if(k!==f||Ve!==A){if((v!==Wa||x!==Wa)&&(e.blendEquation(32774),v=Wa,x=Wa),Ve)switch(k){case lo:e.blendFuncSeparate(1,771,1,771);break;case Iv:e.blendFunc(1,1);break;case Bv:e.blendFuncSeparate(0,769,0,1);break;case Rv:e.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}else switch(k){case lo:e.blendFuncSeparate(770,771,1,771);break;case Iv:e.blendFunc(770,1);break;case Bv:e.blendFuncSeparate(0,769,0,1);break;case Rv:e.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",k);break}y=null,b=null,w=null,_=null,f=k,A=Ve}return}Te=Te||me,Ge=Ge||be,ye=ye||He,(me!==v||Te!==x)&&(e.blendEquationSeparate(K[me],K[Te]),v=me,x=Te),(be!==y||He!==b||Ge!==w||ye!==_)&&(e.blendFuncSeparate(de[be],de[He],de[Ge],de[ye]),y=be,b=He,w=Ge,_=ye),f=k,A=null}function le(k,me){k.side===Er?W(2884):ee(2884);let be=k.side===pi;me&&(be=!be),ue(be),k.blending===lo&&k.transparent===!1?oe(si):oe(k.blending,k.blendEquation,k.blendSrc,k.blendDst,k.blendEquationAlpha,k.blendSrcAlpha,k.blendDstAlpha,k.premultipliedAlpha),l.setFunc(k.depthFunc),l.setTest(k.depthTest),l.setMask(k.depthWrite),o.setMask(k.colorWrite);let He=k.stencilWrite;h.setTest(He),He&&(h.setMask(k.stencilWriteMask),h.setFunc(k.stencilFunc,k.stencilRef,k.stencilFuncMask),h.setOp(k.stencilFail,k.stencilZFail,k.stencilZPass)),De(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits),k.alphaToCoverage===!0?ee(32926):W(32926)}function ue(k){S!==k&&(k?e.frontFace(2304):e.frontFace(2305),S=k)}function pe(k){k!==m2?(ee(2884),k!==E&&(k===Lv?e.cullFace(1029):k===g2?e.cullFace(1028):e.cullFace(1032))):W(2884),E=k}function ge(k){k!==C&&(O&&e.lineWidth(k),C=k)}function De(k,me,be){k?(ee(32823),(T!==me||P!==be)&&(e.polygonOffset(me,be),T=me,P=be)):W(32823)}function Ae(k){k?ee(3089):W(3089)}function we(k){k===void 0&&(k=33984+R-1),z!==k&&(e.activeTexture(k),z=k)}function bt(k,me){z===null&&we();let be=L[z];be===void 0&&(be={type:void 0,texture:void 0},L[z]=be),(be.type!==k||be.texture!==me)&&(e.bindTexture(k,me||Z[k]),be.type=k,be.texture=me)}function Ke(){let k=L[z];k!==void 0&&k.type!==void 0&&(e.bindTexture(k.type,null),k.type=void 0,k.texture=void 0)}function B(){try{e.compressedTexImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function D(){try{e.texSubImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function ie(){try{e.texSubImage3D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function ce(){try{e.compressedTexSubImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function fe(){try{e.texStorage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function _e(){try{e.texStorage3D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function je(){try{e.texImage2D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function re(){try{e.texImage3D.apply(e,arguments)}catch(k){console.error("THREE.WebGLState:",k)}}function Be(k){V.equals(k)===!1&&(e.scissor(k.x,k.y,k.z,k.w),V.copy(k))}function Pe(k){N.equals(k)===!1&&(e.viewport(k.x,k.y,k.z,k.w),N.copy(k))}function ve(){e.disable(3042),e.disable(2884),e.disable(2929),e.disable(32823),e.disable(3089),e.disable(2960),e.disable(32926),e.blendEquation(32774),e.blendFunc(1,0),e.blendFuncSeparate(1,0,1,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(513),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(519,0,4294967295),e.stencilOp(7680,7680,7680),e.clearStencil(0),e.cullFace(1029),e.frontFace(2305),e.polygonOffset(0,0),e.activeTexture(33984),e.bindFramebuffer(36160,null),r===!0&&(e.bindFramebuffer(36009,null),e.bindFramebuffer(36008,null)),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),u={},z=null,L={},c={},d=new WeakMap,p=[],m=null,g=!1,f=null,v=null,y=null,b=null,x=null,w=null,_=null,A=!1,S=null,E=null,C=null,T=null,P=null,V.set(0,0,e.canvas.width,e.canvas.height),N.set(0,0,e.canvas.width,e.canvas.height),o.reset(),l.reset(),h.reset()}return{buffers:{color:o,depth:l,stencil:h},enable:ee,disable:W,bindFramebuffer:ne,drawBuffers:q,useProgram:Q,setBlending:oe,setMaterial:le,setFlipSided:ue,setCullFace:pe,setLineWidth:ge,setPolygonOffset:De,setScissorTest:Ae,activeTexture:we,bindTexture:bt,unbindTexture:Ke,compressedTexImage2D:B,texImage2D:je,texImage3D:re,texStorage2D:fe,texStorage3D:_e,texSubImage2D:D,texSubImage3D:ie,compressedTexSubImage2D:ce,scissor:Be,viewport:Pe,reset:ve}}function uP(e,t,i,r,s,n,a){let o=s.isWebGL2,l=s.maxTextures,h=s.maxCubemapSize,u=s.maxTextureSize,c=s.maxSamples,d=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,p=/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap,g,f=new WeakMap,v=!1;try{v=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function y(B,D){return v?new OffscreenCanvas(B,D):od("canvas")}function b(B,D,ie,ce){let fe=1;if((B.width>ce||B.height>ce)&&(fe=ce/Math.max(B.width,B.height)),fe<1||D===!0)if(typeof HTMLImageElement<"u"&&B instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&B instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&B instanceof ImageBitmap){let _e=D?ad:Math.floor,je=_e(fe*B.width),re=_e(fe*B.height);g===void 0&&(g=y(je,re));let Be=ie?y(je,re):g;return Be.width=je,Be.height=re,Be.getContext("2d").drawImage(B,0,0,je,re),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+B.width+"x"+B.height+") to ("+je+"x"+re+")."),Be}else return"data"in B&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+B.width+"x"+B.height+")."),B;return B}function x(B){return Cf(B.width)&&Cf(B.height)}function w(B){return o?!1:B.wrapS!==Gi||B.wrapT!==Gi||B.minFilter!==Lt&&B.minFilter!==ft}function _(B,D){return B.generateMipmaps&&D&&B.minFilter!==Lt&&B.minFilter!==ft}function A(B){e.generateMipmap(B)}function S(B,D,ie,ce,fe=!1){if(o===!1)return D;if(B!==null){if(e[B]!==void 0)return e[B];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+B+"'")}let _e=D;return D===6403&&(ie===5126&&(_e=33326),ie===5131&&(_e=33325),ie===5121&&(_e=33321)),D===33319&&(ie===5126&&(_e=33328),ie===5131&&(_e=33327),ie===5121&&(_e=33323)),D===6408&&(ie===5126&&(_e=34836),ie===5131&&(_e=34842),ie===5121&&(_e=ce===et&&fe===!1?35907:32856),ie===32819&&(_e=32854),ie===32820&&(_e=32855)),(_e===33325||_e===33326||_e===33327||_e===33328||_e===34842||_e===34836)&&t.get("EXT_color_buffer_float"),_e}function E(B,D,ie){return _(B,ie)===!0||B.isFramebufferTexture&&B.minFilter!==Lt&&B.minFilter!==ft?Math.log2(Math.max(D.width,D.height))+1:B.mipmaps!==void 0&&B.mipmaps.length>0?B.mipmaps.length:B.isCompressedTexture&&Array.isArray(B.image)?D.mipmaps.length:1}function C(B){return B===Lt||B===Fv||B===Uv?9728:9729}function T(B){let D=B.target;D.removeEventListener("dispose",T),R(D),D.isVideoTexture&&m.delete(D)}function P(B){let D=B.target;D.removeEventListener("dispose",P),U(D)}function R(B){let D=r.get(B);if(D.__webglInit===void 0)return;let ie=B.source,ce=f.get(ie);if(ce){let fe=ce[D.__cacheKey];fe.usedTimes--,fe.usedTimes===0&&O(B),Object.keys(ce).length===0&&f.delete(ie)}r.remove(B)}function O(B){let D=r.get(B);e.deleteTexture(D.__webglTexture);let ie=B.source,ce=f.get(ie);delete ce[D.__cacheKey],a.memory.textures--}function U(B){let D=B.texture,ie=r.get(B),ce=r.get(D);if(ce.__webglTexture!==void 0&&(e.deleteTexture(ce.__webglTexture),a.memory.textures--),B.depthTexture&&B.depthTexture.dispose(),B.isWebGLCubeRenderTarget)for(let fe=0;fe<6;fe++)e.deleteFramebuffer(ie.__webglFramebuffer[fe]),ie.__webglDepthbuffer&&e.deleteRenderbuffer(ie.__webglDepthbuffer[fe]);else{if(e.deleteFramebuffer(ie.__webglFramebuffer),ie.__webglDepthbuffer&&e.deleteRenderbuffer(ie.__webglDepthbuffer),ie.__webglMultisampledFramebuffer&&e.deleteFramebuffer(ie.__webglMultisampledFramebuffer),ie.__webglColorRenderbuffer)for(let fe=0;fe<ie.__webglColorRenderbuffer.length;fe++)ie.__webglColorRenderbuffer[fe]&&e.deleteRenderbuffer(ie.__webglColorRenderbuffer[fe]);ie.__webglDepthRenderbuffer&&e.deleteRenderbuffer(ie.__webglDepthRenderbuffer)}if(B.isWebGLMultipleRenderTargets)for(let fe=0,_e=D.length;fe<_e;fe++){let je=r.get(D[fe]);je.__webglTexture&&(e.deleteTexture(je.__webglTexture),a.memory.textures--),r.remove(D[fe])}r.remove(D),r.remove(B)}let j=0;function z(){j=0}function L(){let B=j;return B>=l&&console.warn("THREE.WebGLTextures: Trying to use "+B+" texture units while this GPU supports only "+l),j+=1,B}function G(B){let D=[];return D.push(B.wrapS),D.push(B.wrapT),D.push(B.magFilter),D.push(B.minFilter),D.push(B.anisotropy),D.push(B.internalFormat),D.push(B.format),D.push(B.type),D.push(B.generateMipmaps),D.push(B.premultiplyAlpha),D.push(B.flipY),D.push(B.unpackAlignment),D.push(B.encoding),D.join()}function F(B,D){let ie=r.get(B);if(B.isVideoTexture&&bt(B),B.isRenderTargetTexture===!1&&B.version>0&&ie.__version!==B.version){let ce=B.image;if(ce===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(ce.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{q(ie,B,D);return}}i.activeTexture(33984+D),i.bindTexture(3553,ie.__webglTexture)}function V(B,D){let ie=r.get(B);if(B.version>0&&ie.__version!==B.version){q(ie,B,D);return}i.activeTexture(33984+D),i.bindTexture(35866,ie.__webglTexture)}function N(B,D){let ie=r.get(B);if(B.version>0&&ie.__version!==B.version){q(ie,B,D);return}i.activeTexture(33984+D),i.bindTexture(32879,ie.__webglTexture)}function X(B,D){let ie=r.get(B);if(B.version>0&&ie.__version!==B.version){Q(ie,B,D);return}i.activeTexture(33984+D),i.bindTexture(34067,ie.__webglTexture)}let Z={[ql]:10497,[Gi]:33071,[Af]:33648},ee={[Lt]:9728,[Fv]:9984,[Uv]:9986,[ft]:9729,[V2]:9985,[fh]:9987};function W(B,D,ie){if(ie?(e.texParameteri(B,10242,Z[D.wrapS]),e.texParameteri(B,10243,Z[D.wrapT]),(B===32879||B===35866)&&e.texParameteri(B,32882,Z[D.wrapR]),e.texParameteri(B,10240,ee[D.magFilter]),e.texParameteri(B,10241,ee[D.minFilter])):(e.texParameteri(B,10242,33071),e.texParameteri(B,10243,33071),(B===32879||B===35866)&&e.texParameteri(B,32882,33071),(D.wrapS!==Gi||D.wrapT!==Gi)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(B,10240,C(D.magFilter)),e.texParameteri(B,10241,C(D.minFilter)),D.minFilter!==Lt&&D.minFilter!==ft&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let ce=t.get("EXT_texture_filter_anisotropic");if(D.type===sn&&t.has("OES_texture_float_linear")===!1||o===!1&&D.type===Ql&&t.has("OES_texture_half_float_linear")===!1)return;(D.anisotropy>1||r.get(D).__currentAnisotropy)&&(e.texParameterf(B,ce.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(D.anisotropy,s.getMaxAnisotropy())),r.get(D).__currentAnisotropy=D.anisotropy)}}function ne(B,D){let ie=!1;B.__webglInit===void 0&&(B.__webglInit=!0,D.addEventListener("dispose",T));let ce=D.source,fe=f.get(ce);fe===void 0&&(fe={},f.set(ce,fe));let _e=G(D);if(_e!==B.__cacheKey){fe[_e]===void 0&&(fe[_e]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,ie=!0),fe[_e].usedTimes++;let je=fe[B.__cacheKey];je!==void 0&&(fe[B.__cacheKey].usedTimes--,je.usedTimes===0&&O(D)),B.__cacheKey=_e,B.__webglTexture=fe[_e].texture}return ie}function q(B,D,ie){let ce=3553;D.isDataArrayTexture&&(ce=35866),D.isData3DTexture&&(ce=32879);let fe=ne(B,D),_e=D.source;if(i.activeTexture(33984+ie),i.bindTexture(ce,B.__webglTexture),_e.version!==_e.__currentVersion||fe===!0){e.pixelStorei(37440,D.flipY),e.pixelStorei(37441,D.premultiplyAlpha),e.pixelStorei(3317,D.unpackAlignment),e.pixelStorei(37443,0);let je=w(D)&&x(D.image)===!1,re=b(D.image,je,!1,u);re=Ke(D,re);let Be=x(re)||o,Pe=n.convert(D.format,D.encoding),ve=n.convert(D.type),k=S(D.internalFormat,Pe,ve,D.encoding,D.isVideoTexture);W(ce,D,Be);let me,be=D.mipmaps,He=o&&D.isVideoTexture!==!0,Te=_e.__currentVersion===void 0||fe===!0,Ge=E(D,re,Be);if(D.isDepthTexture)k=6402,o?D.type===sn?k=36012:D.type===rn?k=33190:D.type===qn?k=35056:k=33189:D.type===sn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),D.format===Qn&&k===6402&&D.type!==Ub&&D.type!==rn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),D.type=rn,ve=n.convert(D.type)),D.format===sa&&k===6402&&(k=34041,D.type!==qn&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),D.type=qn,ve=n.convert(D.type))),Te&&(He?i.texStorage2D(3553,1,k,re.width,re.height):i.texImage2D(3553,0,k,re.width,re.height,0,Pe,ve,null));else if(D.isDataTexture)if(be.length>0&&Be){He&&Te&&i.texStorage2D(3553,Ge,k,be[0].width,be[0].height);for(let ye=0,Ve=be.length;ye<Ve;ye++)me=be[ye],He?i.texSubImage2D(3553,ye,0,0,me.width,me.height,Pe,ve,me.data):i.texImage2D(3553,ye,k,me.width,me.height,0,Pe,ve,me.data);D.generateMipmaps=!1}else He?(Te&&i.texStorage2D(3553,Ge,k,re.width,re.height),i.texSubImage2D(3553,0,0,0,re.width,re.height,Pe,ve,re.data)):i.texImage2D(3553,0,k,re.width,re.height,0,Pe,ve,re.data);else if(D.isCompressedTexture){He&&Te&&i.texStorage2D(3553,Ge,k,be[0].width,be[0].height);for(let ye=0,Ve=be.length;ye<Ve;ye++)me=be[ye],D.format!==Jr?Pe!==null?He?i.compressedTexSubImage2D(3553,ye,0,0,me.width,me.height,Pe,me.data):i.compressedTexImage2D(3553,ye,k,me.width,me.height,0,me.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):He?i.texSubImage2D(3553,ye,0,0,me.width,me.height,Pe,ve,me.data):i.texImage2D(3553,ye,k,me.width,me.height,0,Pe,ve,me.data)}else if(D.isDataArrayTexture)He?(Te&&i.texStorage3D(35866,Ge,k,re.width,re.height,re.depth),i.texSubImage3D(35866,0,0,0,0,re.width,re.height,re.depth,Pe,ve,re.data)):i.texImage3D(35866,0,k,re.width,re.height,re.depth,0,Pe,ve,re.data);else if(D.isData3DTexture)He?(Te&&i.texStorage3D(32879,Ge,k,re.width,re.height,re.depth),i.texSubImage3D(32879,0,0,0,0,re.width,re.height,re.depth,Pe,ve,re.data)):i.texImage3D(32879,0,k,re.width,re.height,re.depth,0,Pe,ve,re.data);else if(D.isFramebufferTexture){if(Te)if(He)i.texStorage2D(3553,Ge,k,re.width,re.height);else{let ye=re.width,Ve=re.height;for(let Xe=0;Xe<Ge;Xe++)i.texImage2D(3553,Xe,k,ye,Ve,0,Pe,ve,null),ye>>=1,Ve>>=1}}else if(be.length>0&&Be){He&&Te&&i.texStorage2D(3553,Ge,k,be[0].width,be[0].height);for(let ye=0,Ve=be.length;ye<Ve;ye++)me=be[ye],He?i.texSubImage2D(3553,ye,0,0,Pe,ve,me):i.texImage2D(3553,ye,k,Pe,ve,me);D.generateMipmaps=!1}else He?(Te&&i.texStorage2D(3553,Ge,k,re.width,re.height),i.texSubImage2D(3553,0,0,0,Pe,ve,re)):i.texImage2D(3553,0,k,Pe,ve,re);_(D,Be)&&A(ce),_e.__currentVersion=_e.version,D.onUpdate&&D.onUpdate(D)}B.__version=D.version}function Q(B,D,ie){if(D.image.length!==6)return;let ce=ne(B,D),fe=D.source;if(i.activeTexture(33984+ie),i.bindTexture(34067,B.__webglTexture),fe.version!==fe.__currentVersion||ce===!0){e.pixelStorei(37440,D.flipY),e.pixelStorei(37441,D.premultiplyAlpha),e.pixelStorei(3317,D.unpackAlignment),e.pixelStorei(37443,0);let _e=D.isCompressedTexture||D.image[0].isCompressedTexture,je=D.image[0]&&D.image[0].isDataTexture,re=[];for(let ye=0;ye<6;ye++)!_e&&!je?re[ye]=b(D.image[ye],!1,!0,h):re[ye]=je?D.image[ye].image:D.image[ye],re[ye]=Ke(D,re[ye]);let Be=re[0],Pe=x(Be)||o,ve=n.convert(D.format,D.encoding),k=n.convert(D.type),me=S(D.internalFormat,ve,k,D.encoding),be=o&&D.isVideoTexture!==!0,He=fe.__currentVersion===void 0||ce===!0,Te=E(D,Be,Pe);W(34067,D,Pe);let Ge;if(_e){be&&He&&i.texStorage2D(34067,Te,me,Be.width,Be.height);for(let ye=0;ye<6;ye++){Ge=re[ye].mipmaps;for(let Ve=0;Ve<Ge.length;Ve++){let Xe=Ge[Ve];D.format!==Jr?ve!==null?be?i.compressedTexSubImage2D(34069+ye,Ve,0,0,Xe.width,Xe.height,ve,Xe.data):i.compressedTexImage2D(34069+ye,Ve,me,Xe.width,Xe.height,0,Xe.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):be?i.texSubImage2D(34069+ye,Ve,0,0,Xe.width,Xe.height,ve,k,Xe.data):i.texImage2D(34069+ye,Ve,me,Xe.width,Xe.height,0,ve,k,Xe.data)}}}else{Ge=D.mipmaps,be&&He&&(Ge.length>0&&Te++,i.texStorage2D(34067,Te,me,re[0].width,re[0].height));for(let ye=0;ye<6;ye++)if(je){be?i.texSubImage2D(34069+ye,0,0,0,re[ye].width,re[ye].height,ve,k,re[ye].data):i.texImage2D(34069+ye,0,me,re[ye].width,re[ye].height,0,ve,k,re[ye].data);for(let Ve=0;Ve<Ge.length;Ve++){let Xe=Ge[Ve].image[ye].image;be?i.texSubImage2D(34069+ye,Ve+1,0,0,Xe.width,Xe.height,ve,k,Xe.data):i.texImage2D(34069+ye,Ve+1,me,Xe.width,Xe.height,0,ve,k,Xe.data)}}else{be?i.texSubImage2D(34069+ye,0,0,0,ve,k,re[ye]):i.texImage2D(34069+ye,0,me,ve,k,re[ye]);for(let Ve=0;Ve<Ge.length;Ve++){let Xe=Ge[Ve];be?i.texSubImage2D(34069+ye,Ve+1,0,0,ve,k,Xe.image[ye]):i.texImage2D(34069+ye,Ve+1,me,ve,k,Xe.image[ye])}}}_(D,Pe)&&A(34067),fe.__currentVersion=fe.version,D.onUpdate&&D.onUpdate(D)}B.__version=D.version}function K(B,D,ie,ce,fe){let _e=n.convert(ie.format,ie.encoding),je=n.convert(ie.type),re=S(ie.internalFormat,_e,je,ie.encoding);r.get(D).__hasExternalTextures||(fe===32879||fe===35866?i.texImage3D(fe,0,re,D.width,D.height,D.depth,0,_e,je,null):i.texImage2D(fe,0,re,D.width,D.height,0,_e,je,null)),i.bindFramebuffer(36160,B),we(D)?d.framebufferTexture2DMultisampleEXT(36160,ce,fe,r.get(ie).__webglTexture,0,Ae(D)):e.framebufferTexture2D(36160,ce,fe,r.get(ie).__webglTexture,0),i.bindFramebuffer(36160,null)}function de(B,D,ie){if(e.bindRenderbuffer(36161,B),D.depthBuffer&&!D.stencilBuffer){let ce=33189;if(ie||we(D)){let fe=D.depthTexture;fe&&fe.isDepthTexture&&(fe.type===sn?ce=36012:fe.type===rn&&(ce=33190));let _e=Ae(D);we(D)?d.renderbufferStorageMultisampleEXT(36161,_e,ce,D.width,D.height):e.renderbufferStorageMultisample(36161,_e,ce,D.width,D.height)}else e.renderbufferStorage(36161,ce,D.width,D.height);e.framebufferRenderbuffer(36160,36096,36161,B)}else if(D.depthBuffer&&D.stencilBuffer){let ce=Ae(D);ie&&we(D)===!1?e.renderbufferStorageMultisample(36161,ce,35056,D.width,D.height):we(D)?d.renderbufferStorageMultisampleEXT(36161,ce,35056,D.width,D.height):e.renderbufferStorage(36161,34041,D.width,D.height),e.framebufferRenderbuffer(36160,33306,36161,B)}else{let ce=D.isWebGLMultipleRenderTargets===!0?D.texture:[D.texture];for(let fe=0;fe<ce.length;fe++){let _e=ce[fe],je=n.convert(_e.format,_e.encoding),re=n.convert(_e.type),Be=S(_e.internalFormat,je,re,_e.encoding),Pe=Ae(D);ie&&we(D)===!1?e.renderbufferStorageMultisample(36161,Pe,Be,D.width,D.height):we(D)?d.renderbufferStorageMultisampleEXT(36161,Pe,Be,D.width,D.height):e.renderbufferStorage(36161,Be,D.width,D.height)}}e.bindRenderbuffer(36161,null)}function oe(B,D){if(D&&D.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(i.bindFramebuffer(36160,B),!(D.depthTexture&&D.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!r.get(D.depthTexture).__webglTexture||D.depthTexture.image.width!==D.width||D.depthTexture.image.height!==D.height)&&(D.depthTexture.image.width=D.width,D.depthTexture.image.height=D.height,D.depthTexture.needsUpdate=!0),F(D.depthTexture,0);let ie=r.get(D.depthTexture).__webglTexture,ce=Ae(D);if(D.depthTexture.format===Qn)we(D)?d.framebufferTexture2DMultisampleEXT(36160,36096,3553,ie,0,ce):e.framebufferTexture2D(36160,36096,3553,ie,0);else if(D.depthTexture.format===sa)we(D)?d.framebufferTexture2DMultisampleEXT(36160,33306,3553,ie,0,ce):e.framebufferTexture2D(36160,33306,3553,ie,0);else throw new Error("Unknown depthTexture format")}function le(B){let D=r.get(B),ie=B.isWebGLCubeRenderTarget===!0;if(B.depthTexture&&!D.__autoAllocateDepthBuffer){if(ie)throw new Error("target.depthTexture not supported in Cube render targets");oe(D.__webglFramebuffer,B)}else if(ie){D.__webglDepthbuffer=[];for(let ce=0;ce<6;ce++)i.bindFramebuffer(36160,D.__webglFramebuffer[ce]),D.__webglDepthbuffer[ce]=e.createRenderbuffer(),de(D.__webglDepthbuffer[ce],B,!1)}else i.bindFramebuffer(36160,D.__webglFramebuffer),D.__webglDepthbuffer=e.createRenderbuffer(),de(D.__webglDepthbuffer,B,!1);i.bindFramebuffer(36160,null)}function ue(B,D,ie){let ce=r.get(B);D!==void 0&&K(ce.__webglFramebuffer,B,B.texture,36064,3553),ie!==void 0&&le(B)}function pe(B){let D=B.texture,ie=r.get(B),ce=r.get(D);B.addEventListener("dispose",P),B.isWebGLMultipleRenderTargets!==!0&&(ce.__webglTexture===void 0&&(ce.__webglTexture=e.createTexture()),ce.__version=D.version,a.memory.textures++);let fe=B.isWebGLCubeRenderTarget===!0,_e=B.isWebGLMultipleRenderTargets===!0,je=x(B)||o;if(fe){ie.__webglFramebuffer=[];for(let re=0;re<6;re++)ie.__webglFramebuffer[re]=e.createFramebuffer()}else{if(ie.__webglFramebuffer=e.createFramebuffer(),_e)if(s.drawBuffers){let re=B.texture;for(let Be=0,Pe=re.length;Be<Pe;Be++){let ve=r.get(re[Be]);ve.__webglTexture===void 0&&(ve.__webglTexture=e.createTexture(),a.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(o&&B.samples>0&&we(B)===!1){let re=_e?D:[D];ie.__webglMultisampledFramebuffer=e.createFramebuffer(),ie.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,ie.__webglMultisampledFramebuffer);for(let Be=0;Be<re.length;Be++){let Pe=re[Be];ie.__webglColorRenderbuffer[Be]=e.createRenderbuffer(),e.bindRenderbuffer(36161,ie.__webglColorRenderbuffer[Be]);let ve=n.convert(Pe.format,Pe.encoding),k=n.convert(Pe.type),me=S(Pe.internalFormat,ve,k,Pe.encoding),be=Ae(B);e.renderbufferStorageMultisample(36161,be,me,B.width,B.height),e.framebufferRenderbuffer(36160,36064+Be,36161,ie.__webglColorRenderbuffer[Be])}e.bindRenderbuffer(36161,null),B.depthBuffer&&(ie.__webglDepthRenderbuffer=e.createRenderbuffer(),de(ie.__webglDepthRenderbuffer,B,!0)),i.bindFramebuffer(36160,null)}}if(fe){i.bindTexture(34067,ce.__webglTexture),W(34067,D,je);for(let re=0;re<6;re++)K(ie.__webglFramebuffer[re],B,D,36064,34069+re);_(D,je)&&A(34067),i.unbindTexture()}else if(_e){let re=B.texture;for(let Be=0,Pe=re.length;Be<Pe;Be++){let ve=re[Be],k=r.get(ve);i.bindTexture(3553,k.__webglTexture),W(3553,ve,je),K(ie.__webglFramebuffer,B,ve,36064+Be,3553),_(ve,je)&&A(3553)}i.unbindTexture()}else{let re=3553;(B.isWebGL3DRenderTarget||B.isWebGLArrayRenderTarget)&&(o?re=B.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),i.bindTexture(re,ce.__webglTexture),W(re,D,je),K(ie.__webglFramebuffer,B,D,36064,re),_(D,je)&&A(re),i.unbindTexture()}B.depthBuffer&&le(B)}function ge(B){let D=x(B)||o,ie=B.isWebGLMultipleRenderTargets===!0?B.texture:[B.texture];for(let ce=0,fe=ie.length;ce<fe;ce++){let _e=ie[ce];if(_(_e,D)){let je=B.isWebGLCubeRenderTarget?34067:3553,re=r.get(_e).__webglTexture;i.bindTexture(je,re),A(je),i.unbindTexture()}}}function De(B){if(o&&B.samples>0&&we(B)===!1){let D=B.isWebGLMultipleRenderTargets?B.texture:[B.texture],ie=B.width,ce=B.height,fe=16384,_e=[],je=B.stencilBuffer?33306:36096,re=r.get(B),Be=B.isWebGLMultipleRenderTargets===!0;if(Be)for(let Pe=0;Pe<D.length;Pe++)i.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+Pe,36161,null),i.bindFramebuffer(36160,re.__webglFramebuffer),e.framebufferTexture2D(36009,36064+Pe,3553,null,0);i.bindFramebuffer(36008,re.__webglMultisampledFramebuffer),i.bindFramebuffer(36009,re.__webglFramebuffer);for(let Pe=0;Pe<D.length;Pe++){_e.push(36064+Pe),B.depthBuffer&&_e.push(je);let ve=re.__ignoreDepthValues!==void 0?re.__ignoreDepthValues:!1;if(ve===!1&&(B.depthBuffer&&(fe|=256),B.stencilBuffer&&(fe|=1024)),Be&&e.framebufferRenderbuffer(36008,36064,36161,re.__webglColorRenderbuffer[Pe]),ve===!0&&(e.invalidateFramebuffer(36008,[je]),e.invalidateFramebuffer(36009,[je])),Be){let k=r.get(D[Pe]).__webglTexture;e.framebufferTexture2D(36009,36064,3553,k,0)}e.blitFramebuffer(0,0,ie,ce,0,0,ie,ce,fe,9728),p&&e.invalidateFramebuffer(36008,_e)}if(i.bindFramebuffer(36008,null),i.bindFramebuffer(36009,null),Be)for(let Pe=0;Pe<D.length;Pe++){i.bindFramebuffer(36160,re.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+Pe,36161,re.__webglColorRenderbuffer[Pe]);let ve=r.get(D[Pe]).__webglTexture;i.bindFramebuffer(36160,re.__webglFramebuffer),e.framebufferTexture2D(36009,36064+Pe,3553,ve,0)}i.bindFramebuffer(36009,re.__webglMultisampledFramebuffer)}}function Ae(B){return Math.min(c,B.samples)}function we(B){let D=r.get(B);return o&&B.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&D.__useRenderToTexture!==!1}function bt(B){let D=a.render.frame;m.get(B)!==D&&(m.set(B,D),B.update())}function Ke(B,D){let ie=B.encoding,ce=B.format,fe=B.type;return B.isCompressedTexture===!0||B.isVideoTexture===!0||B.format===Ef||ie!==as&&(ie===et?o===!1?t.has("EXT_sRGB")===!0&&ce===Jr?(B.format=Ef,B.minFilter=ft,B.generateMipmaps=!1):D=Gb.sRGBToLinear(D):(ce!==Jr||fe!==mi)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",ie)),D}this.allocateTextureUnit=L,this.resetTextureUnits=z,this.setTexture2D=F,this.setTexture2DArray=V,this.setTexture3D=N,this.setTextureCube=X,this.rebindTextures=ue,this.setupRenderTarget=pe,this.updateRenderTargetMipmap=ge,this.updateMultisampleRenderTarget=De,this.setupDepthRenderbuffer=le,this.setupFrameBufferTexture=K,this.useMultisampledRTT=we}function pP(e,t,i){let r=i.isWebGL2;function s(n,a=null){let o;if(n===mi)return 5121;if(n===q2)return 32819;if(n===Q2)return 32820;if(n===W2)return 5120;if(n===X2)return 5122;if(n===Ub)return 5123;if(n===Y2)return 5124;if(n===rn)return 5125;if(n===sn)return 5126;if(n===Ql)return r?5131:(o=t.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(n===Z2)return 6406;if(n===Jr)return 6408;if(n===J2)return 6409;if(n===$2)return 6410;if(n===Qn)return 6402;if(n===sa)return 34041;if(n===eM)return 6403;if(n===K2)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(n===Ef)return o=t.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(n===tM)return 36244;if(n===iM)return 33319;if(n===rM)return 33320;if(n===sM)return 36249;if(n===Nu||n===zu||n===Fu||n===Uu)if(a===et)if(o=t.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(n===Nu)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===zu)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Fu)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Uu)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=t.get("WEBGL_compressed_texture_s3tc"),o!==null){if(n===Nu)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===zu)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Fu)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Uu)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===kv||n===jv||n===Hv||n===Gv)if(o=t.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(n===kv)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===jv)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Hv)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Gv)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===nM)return o=t.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(n===Vv||n===Wv)if(o=t.get("WEBGL_compressed_texture_etc"),o!==null){if(n===Vv)return a===et?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(n===Wv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Xv||n===Yv||n===qv||n===Qv||n===Zv||n===Kv||n===Jv||n===$v||n===e0||n===t0||n===i0||n===r0||n===s0||n===n0)if(o=t.get("WEBGL_compressed_texture_astc"),o!==null){if(n===Xv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Yv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===qv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Qv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Zv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Kv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Jv)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===$v)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===e0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===t0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===i0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===r0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===s0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===n0)return a===et?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===a0)if(o=t.get("EXT_texture_compression_bptc"),o!==null){if(n===a0)return a===et?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return n===qn?r?34042:(o=t.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):e[n]!==void 0?e[n]:null}return{convert:s}}var fP=class extends di{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},Ja=class extends _t{constructor(){super(),this.isGroup=!0,this.type="Group"}},mP={type:"move"},pp=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ja,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Ja,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new M,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new M),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ja,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new M,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new M),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,s=null,n=null,a=this._targetRay,o=this._grip,l=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(l&&e.hand){n=!0;for(let m of e.hand.values()){let g=t.getJointPose(m,i);if(l.joints[m.jointName]===void 0){let v=new Ja;v.matrixAutoUpdate=!1,v.visible=!1,l.joints[m.jointName]=v,l.add(v)}let f=l.joints[m.jointName];g!==null&&(f.matrix.fromArray(g.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.jointRadius=g.radius),f.visible=g!==null}let h=l.joints["index-finger-tip"],u=l.joints["thumb-tip"],c=h.position.distanceTo(u.position),d=.02,p=.005;l.inputState.pinching&&c>d+p?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&c<=d-p&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else o!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(o.matrix.fromArray(s.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),s.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(s.linearVelocity)):o.hasLinearVelocity=!1,s.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(s.angularVelocity)):o.hasAngularVelocity=!1));a!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(mP)))}return a!==null&&(a.visible=r!==null),o!==null&&(o.visible=s!==null),l!==null&&(l.visible=n!==null),this}},Zm=class extends gi{constructor(e,t,i,r,s,n,a,o,l,h){if(h=h!==void 0?h:Qn,h!==Qn&&h!==sa)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&h===Qn&&(i=rn),i===void 0&&h===sa&&(i=qn),super(null,r,s,n,a,o,h,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:Lt,this.minFilter=o!==void 0?o:Lt,this.flipY=!1,this.generateMipmaps=!1}},gP=class extends zi{constructor(e,t){super();let i=this,r=null,s=1,n=null,a="local-floor",o=null,l=null,h=null,u=null,c=null,d=null,p=t.getContextAttributes(),m=null,g=null,f=[],v=[],y=new di;y.layers.enable(1),y.viewport=new tt;let b=new di;b.layers.enable(2),b.viewport=new tt;let x=[y,b],w=new fP;w.layers.enable(1),w.layers.enable(2);let _=null,A=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(L){let G=f[L];return G===void 0&&(G=new pp,f[L]=G),G.getTargetRaySpace()},this.getControllerGrip=function(L){let G=f[L];return G===void 0&&(G=new pp,f[L]=G),G.getGripSpace()},this.getHand=function(L){let G=f[L];return G===void 0&&(G=new pp,f[L]=G),G.getHandSpace()};function S(L){let G=v.indexOf(L.inputSource);if(G===-1)return;let F=f[G];F!==void 0&&F.dispatchEvent({type:L.type,data:L.inputSource})}function E(){r.removeEventListener("select",S),r.removeEventListener("selectstart",S),r.removeEventListener("selectend",S),r.removeEventListener("squeeze",S),r.removeEventListener("squeezestart",S),r.removeEventListener("squeezeend",S),r.removeEventListener("end",E),r.removeEventListener("inputsourceschange",C);for(let L=0;L<f.length;L++){let G=v[L];G!==null&&(v[L]=null,f[L].disconnect(G))}_=null,A=null,e.setRenderTarget(m),c=null,u=null,h=null,r=null,g=null,z.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(L){s=L,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(L){a=L,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return o||n},this.setReferenceSpace=function(L){o=L},this.getBaseLayer=function(){return u!==null?u:c},this.getBinding=function(){return h},this.getFrame=function(){return d},this.getSession=function(){return r},this.setSession=async function(L){if(r=L,r!==null){if(m=e.getRenderTarget(),r.addEventListener("select",S),r.addEventListener("selectstart",S),r.addEventListener("selectend",S),r.addEventListener("squeeze",S),r.addEventListener("squeezestart",S),r.addEventListener("squeezeend",S),r.addEventListener("end",E),r.addEventListener("inputsourceschange",C),p.xrCompatible!==!0&&await t.makeXRCompatible(),r.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let G={antialias:r.renderState.layers===void 0?p.antialias:!0,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:s};c=new XRWebGLLayer(r,t,G),r.updateRenderState({baseLayer:c}),g=new Ut(c.framebufferWidth,c.framebufferHeight,{format:Jr,type:mi,encoding:e.outputEncoding})}else{let G=null,F=null,V=null;p.depth&&(V=p.stencil?35056:33190,G=p.stencil?sa:Qn,F=p.stencil?qn:rn);let N={colorFormat:32856,depthFormat:V,scaleFactor:s};h=new XRWebGLBinding(r,t),u=h.createProjectionLayer(N),r.updateRenderState({layers:[u]}),g=new Ut(u.textureWidth,u.textureHeight,{format:Jr,type:mi,depthTexture:new Zm(u.textureWidth,u.textureHeight,F,void 0,void 0,void 0,void 0,void 0,void 0,G),stencilBuffer:p.stencil,encoding:e.outputEncoding,samples:p.antialias?4:0});let X=e.properties.get(g);X.__ignoreDepthValues=u.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(1),o=null,n=await r.requestReferenceSpace(a),z.setContext(r),z.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};function C(L){for(let G=0;G<L.removed.length;G++){let F=L.removed[G],V=v.indexOf(F);V>=0&&(v[V]=null,f[V].dispatchEvent({type:"disconnected",data:F}))}for(let G=0;G<L.added.length;G++){let F=L.added[G],V=v.indexOf(F);if(V===-1){for(let X=0;X<f.length;X++)if(X>=v.length){v.push(F),V=X;break}else if(v[X]===null){v[X]=F,V=X;break}if(V===-1)break}let N=f[V];N&&N.dispatchEvent({type:"connected",data:F})}}let T=new M,P=new M;function R(L,G,F){T.setFromMatrixPosition(G.matrixWorld),P.setFromMatrixPosition(F.matrixWorld);let V=T.distanceTo(P),N=G.projectionMatrix.elements,X=F.projectionMatrix.elements,Z=N[14]/(N[10]-1),ee=N[14]/(N[10]+1),W=(N[9]+1)/N[5],ne=(N[9]-1)/N[5],q=(N[8]-1)/N[0],Q=(X[8]+1)/X[0],K=Z*q,de=Z*Q,oe=V/(-q+Q),le=oe*-q;G.matrixWorld.decompose(L.position,L.quaternion,L.scale),L.translateX(le),L.translateZ(oe),L.matrixWorld.compose(L.position,L.quaternion,L.scale),L.matrixWorldInverse.copy(L.matrixWorld).invert();let ue=Z+oe,pe=ee+oe,ge=K-le,De=de+(V-le),Ae=W*ee/pe*ue,we=ne*ee/pe*ue;L.projectionMatrix.makePerspective(ge,De,Ae,we,ue,pe)}function O(L,G){G===null?L.matrixWorld.copy(L.matrix):L.matrixWorld.multiplyMatrices(G.matrixWorld,L.matrix),L.matrixWorldInverse.copy(L.matrixWorld).invert()}this.updateCamera=function(L){if(r===null)return;w.near=b.near=y.near=L.near,w.far=b.far=y.far=L.far,(_!==w.near||A!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),_=w.near,A=w.far);let G=L.parent,F=w.cameras;O(w,G);for(let N=0;N<F.length;N++)O(F[N],G);w.matrixWorld.decompose(w.position,w.quaternion,w.scale),L.position.copy(w.position),L.quaternion.copy(w.quaternion),L.scale.copy(w.scale),L.matrix.copy(w.matrix),L.matrixWorld.copy(w.matrixWorld);let V=L.children;for(let N=0,X=V.length;N<X;N++)V[N].updateMatrixWorld(!0);F.length===2?R(w,y,b):w.projectionMatrix.copy(y.projectionMatrix)},this.getCamera=function(){return w},this.getFoveation=function(){if(u!==null)return u.fixedFoveation;if(c!==null)return c.fixedFoveation},this.setFoveation=function(L){u!==null&&(u.fixedFoveation=L),c!==null&&c.fixedFoveation!==void 0&&(c.fixedFoveation=L)};let U=null;function j(L,G){if(l=G.getViewerPose(o||n),d=G,l!==null){let F=l.views;c!==null&&(e.setRenderTargetFramebuffer(g,c.framebuffer),e.setRenderTarget(g));let V=!1;F.length!==w.cameras.length&&(w.cameras.length=0,V=!0);for(let N=0;N<F.length;N++){let X=F[N],Z=null;if(c!==null)Z=c.getViewport(X);else{let W=h.getViewSubImage(u,X);Z=W.viewport,N===0&&(e.setRenderTargetTextures(g,W.colorTexture,u.ignoreDepthValues?void 0:W.depthStencilTexture),e.setRenderTarget(g))}let ee=x[N];ee===void 0&&(ee=new di,ee.layers.enable(N),ee.viewport=new tt,x[N]=ee),ee.matrix.fromArray(X.transform.matrix),ee.projectionMatrix.fromArray(X.projectionMatrix),ee.viewport.set(Z.x,Z.y,Z.width,Z.height),N===0&&w.matrix.copy(ee.matrix),V===!0&&w.cameras.push(ee)}}for(let F=0;F<f.length;F++){let V=v[F],N=f[F];V!==null&&N!==void 0&&N.update(V,G,o||n)}U&&U(L,G),d=null}let z=new Yb;z.setAnimationLoop(j),this.setAnimationLoop=function(L){U=L},this.dispose=function(){}}};function vP(e,t){function i(g,f){g.fogColor.value.copy(f.color),f.isFog?(g.fogNear.value=f.near,g.fogFar.value=f.far):f.isFogExp2&&(g.fogDensity.value=f.density)}function r(g,f,v,y,b){f.isMeshBasicMaterial||f.isMeshLambertMaterial?s(g,f):f.isMeshToonMaterial?(s(g,f),u(g,f)):f.isMeshPhongMaterial?(s(g,f),h(g,f)):f.isMeshStandardMaterial?(s(g,f),c(g,f),f.isMeshPhysicalMaterial&&d(g,f,b)):f.isMeshMatcapMaterial?(s(g,f),p(g,f)):f.isMeshDepthMaterial?s(g,f):f.isMeshDistanceMaterial?(s(g,f),m(g,f)):f.isMeshNormalMaterial?s(g,f):f.isLineBasicMaterial?(n(g,f),f.isLineDashedMaterial&&a(g,f)):f.isPointsMaterial?o(g,f,v,y):f.isSpriteMaterial?l(g,f):f.isShadowMaterial?(g.color.value.copy(f.color),g.opacity.value=f.opacity):f.isShaderMaterial&&(f.uniformsNeedUpdate=!1)}function s(g,f){g.opacity.value=f.opacity,f.color&&g.diffuse.value.copy(f.color),f.emissive&&g.emissive.value.copy(f.emissive).multiplyScalar(f.emissiveIntensity),f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.bumpMap&&(g.bumpMap.value=f.bumpMap,g.bumpScale.value=f.bumpScale,f.side===pi&&(g.bumpScale.value*=-1)),f.displacementMap&&(g.displacementMap.value=f.displacementMap,g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap),f.normalMap&&(g.normalMap.value=f.normalMap,g.normalScale.value.copy(f.normalScale),f.side===pi&&g.normalScale.value.negate()),f.specularMap&&(g.specularMap.value=f.specularMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let v=t.get(f).envMap;if(v&&(g.envMap.value=v,g.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=f.reflectivity,g.ior.value=f.ior,g.refractionRatio.value=f.refractionRatio),f.lightMap){g.lightMap.value=f.lightMap;let x=e.physicallyCorrectLights!==!0?Math.PI:1;g.lightMapIntensity.value=f.lightMapIntensity*x}f.aoMap&&(g.aoMap.value=f.aoMap,g.aoMapIntensity.value=f.aoMapIntensity);let y;f.map?y=f.map:f.specularMap?y=f.specularMap:f.displacementMap?y=f.displacementMap:f.normalMap?y=f.normalMap:f.bumpMap?y=f.bumpMap:f.roughnessMap?y=f.roughnessMap:f.metalnessMap?y=f.metalnessMap:f.alphaMap?y=f.alphaMap:f.emissiveMap?y=f.emissiveMap:f.clearcoatMap?y=f.clearcoatMap:f.clearcoatNormalMap?y=f.clearcoatNormalMap:f.clearcoatRoughnessMap?y=f.clearcoatRoughnessMap:f.iridescenceMap?y=f.iridescenceMap:f.iridescenceThicknessMap?y=f.iridescenceThicknessMap:f.specularIntensityMap?y=f.specularIntensityMap:f.specularColorMap?y=f.specularColorMap:f.transmissionMap?y=f.transmissionMap:f.thicknessMap?y=f.thicknessMap:f.sheenColorMap?y=f.sheenColorMap:f.sheenRoughnessMap&&(y=f.sheenRoughnessMap),y!==void 0&&(y.isWebGLRenderTarget&&(y=y.texture),y.matrixAutoUpdate===!0&&y.updateMatrix(),g.uvTransform.value.copy(y.matrix));let b;f.aoMap?b=f.aoMap:f.lightMap&&(b=f.lightMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),g.uv2Transform.value.copy(b.matrix))}function n(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity}function a(g,f){g.dashSize.value=f.dashSize,g.totalSize.value=f.dashSize+f.gapSize,g.scale.value=f.scale}function o(g,f,v,y){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.size.value=f.size*v,g.scale.value=y*.5,f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let b;f.map?b=f.map:f.alphaMap&&(b=f.alphaMap),b!==void 0&&(b.matrixAutoUpdate===!0&&b.updateMatrix(),g.uvTransform.value.copy(b.matrix))}function l(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.rotation.value=f.rotation,f.map&&(g.map.value=f.map),f.alphaMap&&(g.alphaMap.value=f.alphaMap),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);let v;f.map?v=f.map:f.alphaMap&&(v=f.alphaMap),v!==void 0&&(v.matrixAutoUpdate===!0&&v.updateMatrix(),g.uvTransform.value.copy(v.matrix))}function h(g,f){g.specular.value.copy(f.specular),g.shininess.value=Math.max(f.shininess,1e-4)}function u(g,f){f.gradientMap&&(g.gradientMap.value=f.gradientMap)}function c(g,f){g.roughness.value=f.roughness,g.metalness.value=f.metalness,f.roughnessMap&&(g.roughnessMap.value=f.roughnessMap),f.metalnessMap&&(g.metalnessMap.value=f.metalnessMap),t.get(f).envMap&&(g.envMapIntensity.value=f.envMapIntensity)}function d(g,f,v){g.ior.value=f.ior,f.sheen>0&&(g.sheenColor.value.copy(f.sheenColor).multiplyScalar(f.sheen),g.sheenRoughness.value=f.sheenRoughness,f.sheenColorMap&&(g.sheenColorMap.value=f.sheenColorMap),f.sheenRoughnessMap&&(g.sheenRoughnessMap.value=f.sheenRoughnessMap)),f.clearcoat>0&&(g.clearcoat.value=f.clearcoat,g.clearcoatRoughness.value=f.clearcoatRoughness,f.clearcoatMap&&(g.clearcoatMap.value=f.clearcoatMap),f.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=f.clearcoatRoughnessMap),f.clearcoatNormalMap&&(g.clearcoatNormalScale.value.copy(f.clearcoatNormalScale),g.clearcoatNormalMap.value=f.clearcoatNormalMap,f.side===pi&&g.clearcoatNormalScale.value.negate())),f.iridescence>0&&(g.iridescence.value=f.iridescence,g.iridescenceIOR.value=f.iridescenceIOR,g.iridescenceThicknessMinimum.value=f.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=f.iridescenceThicknessRange[1],f.iridescenceMap&&(g.iridescenceMap.value=f.iridescenceMap),f.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=f.iridescenceThicknessMap)),f.transmission>0&&(g.transmission.value=f.transmission,g.transmissionSamplerMap.value=v.texture,g.transmissionSamplerSize.value.set(v.width,v.height),f.transmissionMap&&(g.transmissionMap.value=f.transmissionMap),g.thickness.value=f.thickness,f.thicknessMap&&(g.thicknessMap.value=f.thicknessMap),g.attenuationDistance.value=f.attenuationDistance,g.attenuationColor.value.copy(f.attenuationColor)),g.specularIntensity.value=f.specularIntensity,g.specularColor.value.copy(f.specularColor),f.specularIntensityMap&&(g.specularIntensityMap.value=f.specularIntensityMap),f.specularColorMap&&(g.specularColorMap.value=f.specularColorMap)}function p(g,f){f.matcap&&(g.matcap.value=f.matcap)}function m(g,f){g.referencePosition.value.copy(f.referencePosition),g.nearDistance.value=f.nearDistance,g.farDistance.value=f.farDistance}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function yP(){let e=od("canvas");return e.style.display="block",e}function ew(e={}){this.isWebGLRenderer=!0;let t=e.canvas!==void 0?e.canvas:yP(),i=e.context!==void 0?e.context:null,r=e.depth!==void 0?e.depth:!0,s=e.stencil!==void 0?e.stencil:!0,n=e.antialias!==void 0?e.antialias:!1,a=e.premultipliedAlpha!==void 0?e.premultipliedAlpha:!0,o=e.preserveDrawingBuffer!==void 0?e.preserveDrawingBuffer:!1,l=e.powerPreference!==void 0?e.powerPreference:"default",h=e.failIfMajorPerformanceCaveat!==void 0?e.failIfMajorPerformanceCaveat:!1,u;i!==null?u=i.getContextAttributes().alpha:u=e.alpha!==void 0?e.alpha:!1;let c=null,d=null,p=[],m=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=as,this.physicallyCorrectLights=!1,this.toneMapping=Cs,this.toneMappingExposure=1,Object.defineProperties(this,{gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});let g=this,f=!1,v=0,y=0,b=null,x=-1,w=null,_=new tt,A=new tt,S=null,E=t.width,C=t.height,T=1,P=null,R=null,O=new tt(0,0,E,C),U=new tt(0,0,E,C),j=!1,z=new qm,L=!1,G=!1,F=null,V=new Se,N=new H,X=new M,Z={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ee(){return b===null?T:1}let W=i;function ne(I,J){for(let se=0;se<I.length;se++){let te=I[se],he=t.getContext(te,J);if(he!==null)return he}return null}try{let I={alpha:!0,depth:r,stencil:s,antialias:n,premultipliedAlpha:a,preserveDrawingBuffer:o,powerPreference:l,failIfMajorPerformanceCaveat:h};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${uh}`),t.addEventListener("webglcontextlost",k,!1),t.addEventListener("webglcontextrestored",me,!1),t.addEventListener("webglcontextcreationerror",be,!1),W===null){let J=["webgl2","webgl","experimental-webgl"];if(g.isWebGL1Renderer===!0&&J.shift(),W=ne(J,I),W===null)throw ne(J)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}W.getShaderPrecisionFormat===void 0&&(W.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(I){throw console.error("THREE.WebGLRenderer: "+I.message),I}let q,Q,K,de,oe,le,ue,pe,ge,De,Ae,we,bt,Ke,B,D,ie,ce,fe,_e,je,re,Be;function Pe(){q=new OT(W),Q=new MT(W,q,e),q.init(Q),re=new pP(W,q,Q),K=new dP(W,q,Q),de=new BT,oe=new J3,le=new uP(W,q,K,oe,Q,re,de),ue=new CT(g),pe=new DT(g),ge=new XM(W,Q),Be=new ST(W,q,ge,Q),De=new LT(W,ge,de,Be),Ae=new FT(W,De,ge,de),fe=new zT(W,Q,le),D=new ET(oe),we=new K3(g,ue,pe,q,Q,Be,D),bt=new vP(g,oe),Ke=new eP,B=new aP(q,Q),ce=new _T(g,ue,K,Ae,u,a),ie=new cP(g,Ae,Q),_e=new AT(W,q,de,Q),je=new IT(W,q,de,Q),de.programs=we.programs,g.capabilities=Q,g.extensions=q,g.properties=oe,g.renderLists=Ke,g.shadowMap=ie,g.state=K,g.info=de}Pe();let ve=new gP(g,W);this.xr=ve,this.getContext=function(){return W},this.getContextAttributes=function(){return W.getContextAttributes()},this.forceContextLoss=function(){let I=q.get("WEBGL_lose_context");I&&I.loseContext()},this.forceContextRestore=function(){let I=q.get("WEBGL_lose_context");I&&I.restoreContext()},this.getPixelRatio=function(){return T},this.setPixelRatio=function(I){I!==void 0&&(T=I,this.setSize(E,C,!1))},this.getSize=function(I){return I.set(E,C)},this.setSize=function(I,J,se){if(ve.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}E=I,C=J,t.width=Math.floor(I*T),t.height=Math.floor(J*T),se!==!1&&(t.style.width=I+"px",t.style.height=J+"px"),this.setViewport(0,0,I,J)},this.getDrawingBufferSize=function(I){return I.set(E*T,C*T).floor()},this.setDrawingBufferSize=function(I,J,se){E=I,C=J,T=se,t.width=Math.floor(I*se),t.height=Math.floor(J*se),this.setViewport(0,0,I,J)},this.getCurrentViewport=function(I){return I.copy(_)},this.getViewport=function(I){return I.copy(O)},this.setViewport=function(I,J,se,te){I.isVector4?O.set(I.x,I.y,I.z,I.w):O.set(I,J,se,te),K.viewport(_.copy(O).multiplyScalar(T).floor())},this.getScissor=function(I){return I.copy(U)},this.setScissor=function(I,J,se,te){I.isVector4?U.set(I.x,I.y,I.z,I.w):U.set(I,J,se,te),K.scissor(A.copy(U).multiplyScalar(T).floor())},this.getScissorTest=function(){return j},this.setScissorTest=function(I){K.setScissorTest(j=I)},this.setOpaqueSort=function(I){P=I},this.setTransparentSort=function(I){R=I},this.getClearColor=function(I){return I.copy(ce.getClearColor())},this.setClearColor=function(){ce.setClearColor.apply(ce,arguments)},this.getClearAlpha=function(){return ce.getClearAlpha()},this.setClearAlpha=function(){ce.setClearAlpha.apply(ce,arguments)},this.clear=function(I=!0,J=!0,se=!0){let te=0;I&&(te|=16384),J&&(te|=256),se&&(te|=1024),W.clear(te)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",k,!1),t.removeEventListener("webglcontextrestored",me,!1),t.removeEventListener("webglcontextcreationerror",be,!1),Ke.dispose(),B.dispose(),oe.dispose(),ue.dispose(),pe.dispose(),Ae.dispose(),Be.dispose(),we.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",Xe),ve.removeEventListener("sessionend",St),F&&(F.dispose(),F=null),dt.stop()};function k(I){I.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),f=!0}function me(){console.log("THREE.WebGLRenderer: Context Restored."),f=!1;let I=de.autoReset,J=ie.enabled,se=ie.autoUpdate,te=ie.needsUpdate,he=ie.type;Pe(),de.autoReset=I,ie.enabled=J,ie.autoUpdate=se,ie.needsUpdate=te,ie.type=he}function be(I){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",I.statusMessage)}function He(I){let J=I.target;J.removeEventListener("dispose",He),Te(J)}function Te(I){Ge(I),oe.remove(I)}function Ge(I){let J=oe.get(I).programs;J!==void 0&&(J.forEach(function(se){we.releaseProgram(se)}),I.isShaderMaterial&&we.releaseShaderCache(I))}this.renderBufferDirect=function(I,J,se,te,he,Ne){J===null&&(J=Z);let Je=he.isMesh&&he.matrixWorld.determinant()<0,$e=KA(I,J,se,te,he);K.setMaterial(te,Je);let at=se.index,Pt=se.attributes.position;if(at===null){if(Pt===void 0||Pt.count===0)return}else if(at.count===0)return;let ot=1;te.wireframe===!0&&(at=De.getWireframeAttribute(se),ot=2),Be.setup(he,te,$e,se,at);let lt,Kt=_e;at!==null&&(lt=ge.get(at),Kt=je,Kt.setIndex(lt));let Mn=at!==null?at.count:Pt.count,xa=se.drawRange.start*ot,ba=se.drawRange.count*ot,Br=Ne!==null?Ne.start*ot:0,ut=Ne!==null?Ne.count*ot:1/0,wa=Math.max(xa,Br),Qo=Math.min(Mn,xa+ba,Br+ut)-1,Rr=Math.max(0,Qo-wa+1);if(Rr!==0){if(he.isMesh)te.wireframe===!0?(K.setLineWidth(te.wireframeLinewidth*ee()),Kt.setMode(1)):Kt.setMode(4);else if(he.isLine){let zs=te.linewidth;zs===void 0&&(zs=1),K.setLineWidth(zs*ee()),he.isLineSegments?Kt.setMode(1):he.isLineLoop?Kt.setMode(2):Kt.setMode(3)}else he.isPoints?Kt.setMode(0):he.isSprite&&Kt.setMode(4);if(he.isInstancedMesh)Kt.renderInstances(wa,Rr,he.count);else if(se.isInstancedBufferGeometry){let zs=Math.min(se.instanceCount,se._maxInstanceCount);Kt.renderInstances(wa,Rr,zs)}else Kt.render(wa,Rr)}},this.compile=function(I,J){d=B.get(I),d.init(),m.push(d),I.traverseVisible(function(se){se.isLight&&se.layers.test(J.layers)&&(d.pushLight(se),se.castShadow&&d.pushShadow(se))}),d.setupLights(g.physicallyCorrectLights),I.traverse(function(se){let te=se.material;if(te)if(Array.isArray(te))for(let he=0;he<te.length;he++){let Ne=te[he];Iu(Ne,I,se)}else Iu(te,I,se)}),m.pop(),d=null};let ye=null;function Ve(I){ye&&ye(I)}function Xe(){dt.stop()}function St(){dt.start()}let dt=new Yb;dt.setAnimationLoop(Ve),typeof self<"u"&&dt.setContext(self),this.setAnimationLoop=function(I){ye=I,ve.setAnimationLoop(I),I===null?dt.stop():dt.start()},ve.addEventListener("sessionstart",Xe),ve.addEventListener("sessionend",St),this.render=function(I,J){if(J!==void 0&&J.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(f===!0)return;I.autoUpdate===!0&&I.updateMatrixWorld(),J.parent===null&&J.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(J),J=ve.getCamera()),I.isScene===!0&&I.onBeforeRender(g,I,J,b),d=B.get(I,m.length),d.init(),m.push(d),V.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),z.setFromProjectionMatrix(V),G=this.localClippingEnabled,L=D.init(this.clippingPlanes,G,J),c=Ke.get(I,p.length),c.init(),p.push(c),Pi(I,J,0,g.sortObjects),c.finish(),g.sortObjects===!0&&c.sort(P,R),L===!0&&D.beginShadows();let se=d.state.shadowsArray;if(ie.render(se,I,J),L===!0&&D.endShadows(),this.info.autoReset===!0&&this.info.reset(),ce.render(c,I),d.setupLights(g.physicallyCorrectLights),J.isArrayCamera){let te=J.cameras;for(let he=0,Ne=te.length;he<Ne;he++){let Je=te[he];Lh(c,I,Je,Je.viewport)}}else Lh(c,I,J);b!==null&&(le.updateMultisampleRenderTarget(b),le.updateRenderTargetMipmap(b)),I.isScene===!0&&I.onAfterRender(g,I,J),Be.resetDefaultState(),x=-1,w=null,m.pop(),m.length>0?d=m[m.length-1]:d=null,p.pop(),p.length>0?c=p[p.length-1]:c=null};function Pi(I,J,se,te){if(I.visible===!1)return;if(I.layers.test(J.layers)){if(I.isGroup)se=I.renderOrder;else if(I.isLOD)I.autoUpdate===!0&&I.update(J);else if(I.isLight)d.pushLight(I),I.castShadow&&d.pushShadow(I);else if(I.isSprite){if(!I.frustumCulled||z.intersectsSprite(I)){te&&X.setFromMatrixPosition(I.matrixWorld).applyMatrix4(V);let Ne=Ae.update(I),Je=I.material;Je.visible&&c.push(I,Ne,Je,se,X.z,null)}}else if((I.isMesh||I.isLine||I.isPoints)&&(I.isSkinnedMesh&&I.skeleton.frame!==de.render.frame&&(I.skeleton.update(),I.skeleton.frame=de.render.frame),!I.frustumCulled||z.intersectsObject(I))){te&&X.setFromMatrixPosition(I.matrixWorld).applyMatrix4(V);let Ne=Ae.update(I),Je=I.material;if(Array.isArray(Je)){let $e=Ne.groups;for(let at=0,Pt=$e.length;at<Pt;at++){let ot=$e[at],lt=Je[ot.materialIndex];lt&<.visible&&c.push(I,Ne,lt,se,X.z,ot)}}else Je.visible&&c.push(I,Ne,Je,se,X.z,null)}}let he=I.children;for(let Ne=0,Je=he.length;Ne<Je;Ne++)Pi(he[Ne],J,se,te)}function Lh(I,J,se,te){let he=I.opaque,Ne=I.transmissive,Je=I.transparent;d.setupLightsView(se),Ne.length>0&&ya(he,J,se),te&&K.viewport(_.copy(te)),he.length>0&&Ih(he,J,se),Ne.length>0&&Ih(Ne,J,se),Je.length>0&&Ih(Je,J,se),K.buffers.depth.setTest(!0),K.buffers.depth.setMask(!0),K.buffers.color.setMask(!0),K.setPolygonOffset(!1)}function ya(I,J,se){let te=Q.isWebGL2;F===null&&(F=new Ut(1,1,{generateMipmaps:!0,type:q.has("EXT_color_buffer_half_float")?Ql:mi,minFilter:fh,samples:te&&n===!0?4:0})),g.getDrawingBufferSize(N),te?F.setSize(N.x,N.y):F.setSize(ad(N.x),ad(N.y));let he=g.getRenderTarget();g.setRenderTarget(F),g.clear();let Ne=g.toneMapping;g.toneMapping=Cs,Ih(I,J,se),g.toneMapping=Ne,le.updateMultisampleRenderTarget(F),le.updateRenderTargetMipmap(F),g.setRenderTarget(he)}function Ih(I,J,se){let te=J.isScene===!0?J.overrideMaterial:null;for(let he=0,Ne=I.length;he<Ne;he++){let Je=I[he],$e=Je.object,at=Je.geometry,Pt=te===null?Je.material:te,ot=Je.group;$e.layers.test(se.layers)&&ZA($e,J,se,at,Pt,ot)}}function ZA(I,J,se,te,he,Ne){I.onBeforeRender(g,J,se,te,he,Ne),I.modelViewMatrix.multiplyMatrices(se.matrixWorldInverse,I.matrixWorld),I.normalMatrix.getNormalMatrix(I.modelViewMatrix),he.onBeforeRender(g,J,se,te,I,Ne),he.transparent===!0&&he.side===Er?(he.side=pi,he.needsUpdate=!0,g.renderBufferDirect(se,J,te,he,I,Ne),he.side=mn,he.needsUpdate=!0,g.renderBufferDirect(se,J,te,he,I,Ne),he.side=Er):g.renderBufferDirect(se,J,te,he,I,Ne),I.onAfterRender(g,J,se,te,he,Ne)}function Iu(I,J,se){J.isScene!==!0&&(J=Z);let te=oe.get(I),he=d.state.lights,Ne=d.state.shadowsArray,Je=he.state.version,$e=we.getParameters(I,he.state,Ne,J,se),at=we.getProgramCacheKey($e),Pt=te.programs;te.environment=I.isMeshStandardMaterial?J.environment:null,te.fog=J.fog,te.envMap=(I.isMeshStandardMaterial?pe:ue).get(I.envMap||te.environment),Pt===void 0&&(I.addEventListener("dispose",He),Pt=new Map,te.programs=Pt);let ot=Pt.get(at);if(ot!==void 0){if(te.currentProgram===ot&&te.lightsStateVersion===Je)return Pv(I,$e),ot}else $e.uniforms=we.getUniforms(I),I.onBuild(se,$e,g),I.onBeforeCompile($e,g),ot=we.acquireProgram($e,at),Pt.set(at,ot),te.uniforms=$e.uniforms;let lt=te.uniforms;(!I.isShaderMaterial&&!I.isRawShaderMaterial||I.clipping===!0)&&(lt.clippingPlanes=D.uniform),Pv(I,$e),te.needsLights=$A(I),te.lightsStateVersion=Je,te.needsLights&&(lt.ambientLightColor.value=he.state.ambient,lt.lightProbe.value=he.state.probe,lt.directionalLights.value=he.state.directional,lt.directionalLightShadows.value=he.state.directionalShadow,lt.spotLights.value=he.state.spot,lt.spotLightShadows.value=he.state.spotShadow,lt.rectAreaLights.value=he.state.rectArea,lt.ltc_1.value=he.state.rectAreaLTC1,lt.ltc_2.value=he.state.rectAreaLTC2,lt.pointLights.value=he.state.point,lt.pointLightShadows.value=he.state.pointShadow,lt.hemisphereLights.value=he.state.hemi,lt.directionalShadowMap.value=he.state.directionalShadowMap,lt.directionalShadowMatrix.value=he.state.directionalShadowMatrix,lt.spotShadowMap.value=he.state.spotShadowMap,lt.spotShadowMatrix.value=he.state.spotShadowMatrix,lt.pointShadowMap.value=he.state.pointShadowMap,lt.pointShadowMatrix.value=he.state.pointShadowMatrix);let Kt=ot.getUniforms(),Mn=Yc.seqWithValue(Kt.seq,lt);return te.currentProgram=ot,te.uniformsList=Mn,ot}function Pv(I,J){let se=oe.get(I);se.outputEncoding=J.outputEncoding,se.instancing=J.instancing,se.skinning=J.skinning,se.morphTargets=J.morphTargets,se.morphNormals=J.morphNormals,se.morphColors=J.morphColors,se.morphTargetsCount=J.morphTargetsCount,se.numClippingPlanes=J.numClippingPlanes,se.numIntersection=J.numClipIntersection,se.vertexAlphas=J.vertexAlphas,se.vertexTangents=J.vertexTangents,se.toneMapping=J.toneMapping}function KA(I,J,se,te,he){J.isScene!==!0&&(J=Z),le.resetTextureUnits();let Ne=J.fog,Je=te.isMeshStandardMaterial?J.environment:null,$e=b===null?g.outputEncoding:b.isXRRenderTarget===!0?b.texture.encoding:as,at=(te.isMeshStandardMaterial?pe:ue).get(te.envMap||Je),Pt=te.vertexColors===!0&&!!se.attributes.color&&se.attributes.color.itemSize===4,ot=!!te.normalMap&&!!se.attributes.tangent,lt=!!se.morphAttributes.position,Kt=!!se.morphAttributes.normal,Mn=!!se.morphAttributes.color,xa=te.toneMapped?g.toneMapping:Cs,ba=se.morphAttributes.position||se.morphAttributes.normal||se.morphAttributes.color,Br=ba!==void 0?ba.length:0,ut=oe.get(te),wa=d.state.lights;if(L===!0&&(G===!0||I!==w)){let Nr=I===w&&te.id===x;D.setState(te,I,Nr)}let Qo=!1;te.version===ut.__version?(ut.needsLights&&ut.lightsStateVersion!==wa.state.version||ut.outputEncoding!==$e||he.isInstancedMesh&&ut.instancing===!1||!he.isInstancedMesh&&ut.instancing===!0||he.isSkinnedMesh&&ut.skinning===!1||!he.isSkinnedMesh&&ut.skinning===!0||ut.envMap!==at||te.fog===!0&&ut.fog!==Ne||ut.numClippingPlanes!==void 0&&(ut.numClippingPlanes!==D.numPlanes||ut.numIntersection!==D.numIntersection)||ut.vertexAlphas!==Pt||ut.vertexTangents!==ot||ut.morphTargets!==lt||ut.morphNormals!==Kt||ut.morphColors!==Mn||ut.toneMapping!==xa||Q.isWebGL2===!0&&ut.morphTargetsCount!==Br)&&(Qo=!0):(Qo=!0,ut.__version=te.version);let Rr=ut.currentProgram;Qo===!0&&(Rr=Iu(te,J,he));let zs=!1,Zo=!1,Bu=!1,vi=Rr.getUniforms(),Ko=ut.uniforms;if(K.useProgram(Rr.program)&&(zs=!0,Zo=!0,Bu=!0),te.id!==x&&(x=te.id,Zo=!0),zs||w!==I){if(vi.setValue(W,"projectionMatrix",I.projectionMatrix),Q.logarithmicDepthBuffer&&vi.setValue(W,"logDepthBufFC",2/(Math.log(I.far+1)/Math.LN2)),w!==I&&(w=I,Zo=!0,Bu=!0),te.isShaderMaterial||te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshStandardMaterial||te.envMap){let Nr=vi.map.cameraPosition;Nr!==void 0&&Nr.setValue(W,X.setFromMatrixPosition(I.matrixWorld))}(te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshLambertMaterial||te.isMeshBasicMaterial||te.isMeshStandardMaterial||te.isShaderMaterial)&&vi.setValue(W,"isOrthographic",I.isOrthographicCamera===!0),(te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshLambertMaterial||te.isMeshBasicMaterial||te.isMeshStandardMaterial||te.isShaderMaterial||te.isShadowMaterial||he.isSkinnedMesh)&&vi.setValue(W,"viewMatrix",I.matrixWorldInverse)}if(he.isSkinnedMesh){vi.setOptional(W,he,"bindMatrix"),vi.setOptional(W,he,"bindMatrixInverse");let Nr=he.skeleton;Nr&&(Q.floatVertexTextures?(Nr.boneTexture===null&&Nr.computeBoneTexture(),vi.setValue(W,"boneTexture",Nr.boneTexture,le),vi.setValue(W,"boneTextureSize",Nr.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let Ru=se.morphAttributes;return(Ru.position!==void 0||Ru.normal!==void 0||Ru.color!==void 0&&Q.isWebGL2===!0)&&fe.update(he,se,te,Rr),(Zo||ut.receiveShadow!==he.receiveShadow)&&(ut.receiveShadow=he.receiveShadow,vi.setValue(W,"receiveShadow",he.receiveShadow)),Zo&&(vi.setValue(W,"toneMappingExposure",g.toneMappingExposure),ut.needsLights&&JA(Ko,Bu),Ne&&te.fog===!0&&bt.refreshFogUniforms(Ko,Ne),bt.refreshMaterialUniforms(Ko,te,T,C,F),Yc.upload(W,ut.uniformsList,Ko,le)),te.isShaderMaterial&&te.uniformsNeedUpdate===!0&&(Yc.upload(W,ut.uniformsList,Ko,le),te.uniformsNeedUpdate=!1),te.isSpriteMaterial&&vi.setValue(W,"center",he.center),vi.setValue(W,"modelViewMatrix",he.modelViewMatrix),vi.setValue(W,"normalMatrix",he.normalMatrix),vi.setValue(W,"modelMatrix",he.matrixWorld),Rr}function JA(I,J){I.ambientLightColor.needsUpdate=J,I.lightProbe.needsUpdate=J,I.directionalLights.needsUpdate=J,I.directionalLightShadows.needsUpdate=J,I.pointLights.needsUpdate=J,I.pointLightShadows.needsUpdate=J,I.spotLights.needsUpdate=J,I.spotLightShadows.needsUpdate=J,I.rectAreaLights.needsUpdate=J,I.hemisphereLights.needsUpdate=J}function $A(I){return I.isMeshLambertMaterial||I.isMeshToonMaterial||I.isMeshPhongMaterial||I.isMeshStandardMaterial||I.isShadowMaterial||I.isShaderMaterial&&I.lights===!0}this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return y},this.getRenderTarget=function(){return b},this.setRenderTargetTextures=function(I,J,se){oe.get(I.texture).__webglTexture=J,oe.get(I.depthTexture).__webglTexture=se;let te=oe.get(I);te.__hasExternalTextures=!0,te.__hasExternalTextures&&(te.__autoAllocateDepthBuffer=se===void 0,te.__autoAllocateDepthBuffer||q.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),te.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(I,J){let se=oe.get(I);se.__webglFramebuffer=J,se.__useDefaultFramebuffer=J===void 0},this.setRenderTarget=function(I,J=0,se=0){b=I,v=J,y=se;let te=!0;if(I){let $e=oe.get(I);$e.__useDefaultFramebuffer!==void 0?(K.bindFramebuffer(36160,null),te=!1):$e.__webglFramebuffer===void 0?le.setupRenderTarget(I):$e.__hasExternalTextures&&le.rebindTextures(I,oe.get(I.texture).__webglTexture,oe.get(I.depthTexture).__webglTexture)}let he=null,Ne=!1,Je=!1;if(I){let $e=I.texture;($e.isData3DTexture||$e.isDataArrayTexture)&&(Je=!0);let at=oe.get(I).__webglFramebuffer;I.isWebGLCubeRenderTarget?(he=at[J],Ne=!0):Q.isWebGL2&&I.samples>0&&le.useMultisampledRTT(I)===!1?he=oe.get(I).__webglMultisampledFramebuffer:he=at,_.copy(I.viewport),A.copy(I.scissor),S=I.scissorTest}else _.copy(O).multiplyScalar(T).floor(),A.copy(U).multiplyScalar(T).floor(),S=j;if(K.bindFramebuffer(36160,he)&&Q.drawBuffers&&te&&K.drawBuffers(I,he),K.viewport(_),K.scissor(A),K.setScissorTest(S),Ne){let $e=oe.get(I.texture);W.framebufferTexture2D(36160,36064,34069+J,$e.__webglTexture,se)}else if(Je){let $e=oe.get(I.texture),at=J||0;W.framebufferTextureLayer(36160,36064,$e.__webglTexture,se||0,at)}x=-1},this.readRenderTargetPixels=function(I,J,se,te,he,Ne,Je){if(!(I&&I.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let $e=oe.get(I).__webglFramebuffer;if(I.isWebGLCubeRenderTarget&&Je!==void 0&&($e=$e[Je]),$e){K.bindFramebuffer(36160,$e);try{let at=I.texture,Pt=at.format,ot=at.type;if(Pt!==Jr&&re.convert(Pt)!==W.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let lt=ot===Ql&&(q.has("EXT_color_buffer_half_float")||Q.isWebGL2&&q.has("EXT_color_buffer_float"));if(ot!==mi&&re.convert(ot)!==W.getParameter(35738)&&!(ot===sn&&(Q.isWebGL2||q.has("OES_texture_float")||q.has("WEBGL_color_buffer_float")))&&!lt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=I.width-te&&se>=0&&se<=I.height-he&&W.readPixels(J,se,te,he,re.convert(Pt),re.convert(ot),Ne)}finally{let at=b!==null?oe.get(b).__webglFramebuffer:null;K.bindFramebuffer(36160,at)}}},this.copyFramebufferToTexture=function(I,J,se=0){let te=Math.pow(2,-se),he=Math.floor(J.image.width*te),Ne=Math.floor(J.image.height*te);le.setTexture2D(J,0),W.copyTexSubImage2D(3553,se,0,0,I.x,I.y,he,Ne),K.unbindTexture()},this.copyTextureToTexture=function(I,J,se,te=0){let he=J.image.width,Ne=J.image.height,Je=re.convert(se.format),$e=re.convert(se.type);le.setTexture2D(se,0),W.pixelStorei(37440,se.flipY),W.pixelStorei(37441,se.premultiplyAlpha),W.pixelStorei(3317,se.unpackAlignment),J.isDataTexture?W.texSubImage2D(3553,te,I.x,I.y,he,Ne,Je,$e,J.image.data):J.isCompressedTexture?W.compressedTexSubImage2D(3553,te,I.x,I.y,J.mipmaps[0].width,J.mipmaps[0].height,Je,J.mipmaps[0].data):W.texSubImage2D(3553,te,I.x,I.y,Je,$e,J.image),te===0&&se.generateMipmaps&&W.generateMipmap(3553),K.unbindTexture()},this.copyTextureToTexture3D=function(I,J,se,te,he=0){if(g.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Ne=I.max.x-I.min.x+1,Je=I.max.y-I.min.y+1,$e=I.max.z-I.min.z+1,at=re.convert(te.format),Pt=re.convert(te.type),ot;if(te.isData3DTexture)le.setTexture3D(te,0),ot=32879;else if(te.isDataArrayTexture)le.setTexture2DArray(te,0),ot=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}W.pixelStorei(37440,te.flipY),W.pixelStorei(37441,te.premultiplyAlpha),W.pixelStorei(3317,te.unpackAlignment);let lt=W.getParameter(3314),Kt=W.getParameter(32878),Mn=W.getParameter(3316),xa=W.getParameter(3315),ba=W.getParameter(32877),Br=se.isCompressedTexture?se.mipmaps[0]:se.image;W.pixelStorei(3314,Br.width),W.pixelStorei(32878,Br.height),W.pixelStorei(3316,I.min.x),W.pixelStorei(3315,I.min.y),W.pixelStorei(32877,I.min.z),se.isDataTexture||se.isData3DTexture?W.texSubImage3D(ot,he,J.x,J.y,J.z,Ne,Je,$e,at,Pt,Br.data):se.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),W.compressedTexSubImage3D(ot,he,J.x,J.y,J.z,Ne,Je,$e,at,Br.data)):W.texSubImage3D(ot,he,J.x,J.y,J.z,Ne,Je,$e,at,Pt,Br),W.pixelStorei(3314,lt),W.pixelStorei(32878,Kt),W.pixelStorei(3316,Mn),W.pixelStorei(3315,xa),W.pixelStorei(32877,ba),he===0&&te.generateMipmaps&&W.generateMipmap(ot),K.unbindTexture()},this.initTexture=function(I){I.isCubeTexture?le.setTextureCube(I,0):I.isData3DTexture?le.setTexture3D(I,0):I.isDataArrayTexture?le.setTexture2DArray(I,0):le.setTexture2D(I,0),K.unbindTexture()},this.resetState=function(){v=0,y=0,b=null,K.reset(),Be.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var xP=class extends ew{};xP.prototype.isWebGL1Renderer=!0;var tw=class{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Ue(e),this.near=t,this.far=i}clone(){return new tw(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},Kn=class extends _t{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}},bP=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Mf,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=rs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,s=this.stride;r<s;r++)this.array[e+r]=t.array[i+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=rs()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(t,this.stride);return i.setUsage(this.usage),i}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=rs()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},yi=new M,Pf=class{constructor(e,t,i,r=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=i,this.normalized=r===!0}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,i=this.data.count;t<i;t++)yi.fromBufferAttribute(this,t),yi.applyMatrix4(e),this.setXYZ(t,yi.x,yi.y,yi.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)yi.fromBufferAttribute(this,t),yi.applyNormalMatrix(e),this.setXYZ(t,yi.x,yi.y,yi.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)yi.fromBufferAttribute(this,t),yi.transformDirection(e),this.setXYZ(t,yi.x,yi.y,yi.z);return this}setX(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){return this.data.array[e*this.data.stride+this.offset]}getY(e){return this.data.array[e*this.data.stride+this.offset+1]}getZ(e){return this.data.array[e*this.data.stride+this.offset+2]}getW(e){return this.data.array[e*this.data.stride+this.offset+3]}setXY(e,t,i){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=i,this}setXYZ(e,t,i,r){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=r,this}setXYZW(e,t,i,r,s){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=r,this.data.array[e+3]=s,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let i=0;i<this.count;i++){let r=i*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return new Qe(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new Pf(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.");let t=[];for(let i=0;i<this.count;i++){let r=i*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}},wP=class extends Qe{constructor(e,t,i,r=1){typeof i=="number"&&(r=i,i=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),super(e,t,i),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}},bn=class extends mh{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ue(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},W0=new M,X0=new M,Y0=new Se,fp=new Do,ic=new pr,hd=class extends _t{constructor(e=new ke,t=new bn){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[0];for(let r=1,s=t.count;r<s;r++)W0.fromBufferAttribute(t,r-1),X0.fromBufferAttribute(t,r),i[r]=i[r-1],i[r]+=W0.distanceTo(X0);e.setAttribute("lineDistance",new Ee(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){let i=this.geometry,r=this.matrixWorld,s=e.params.Line.threshold,n=i.drawRange;if(i.boundingSphere===null&&i.computeBoundingSphere(),ic.copy(i.boundingSphere),ic.applyMatrix4(r),ic.radius+=s,e.ray.intersectsSphere(ic)===!1)return;Y0.copy(r).invert(),fp.copy(e.ray).applyMatrix4(Y0);let a=s/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,l=new M,h=new M,u=new M,c=new M,d=this.isLineSegments?2:1,p=i.index,m=i.attributes.position;if(p!==null){let g=Math.max(0,n.start),f=Math.min(p.count,n.start+n.count);for(let v=g,y=f-1;v<y;v+=d){let b=p.getX(v),x=p.getX(v+1);if(l.fromBufferAttribute(m,b),h.fromBufferAttribute(m,x),fp.distanceSqToSegment(l,h,c,u)>o)continue;c.applyMatrix4(this.matrixWorld);let w=e.ray.origin.distanceTo(c);w<e.near||w>e.far||t.push({distance:w,point:u.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}else{let g=Math.max(0,n.start),f=Math.min(m.count,n.start+n.count);for(let v=g,y=f-1;v<y;v+=d){if(l.fromBufferAttribute(m,v),h.fromBufferAttribute(m,v+1),fp.distanceSqToSegment(l,h,c,u)>o)continue;c.applyMatrix4(this.matrixWorld);let b=e.ray.origin.distanceTo(c);b<e.near||b>e.far||t.push({distance:b,point:u.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){let n=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[n]=r}}}}},q0=new M,Q0=new M,vh=class extends hd{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[];for(let r=0,s=t.count;r<s;r+=2)q0.fromBufferAttribute(t,r),Q0.fromBufferAttribute(t,r+1),i[r]=r===0?0:i[r-1],i[r+1]=i[r]+q0.distanceTo(Q0);e.setAttribute("lineDistance",new Ee(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}},_P=class extends gi{constructor(e,t,i,r,s,n,a,o,l){super(e,t,i,r,s,n,a,o,l),this.isVideoTexture=!0,this.minFilter=n!==void 0?n:ft,this.magFilter=s!==void 0?s:ft,this.generateMipmaps=!1;let h=this;function u(){h.needsUpdate=!0,e.requestVideoFrameCallback(u)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(u)}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!("requestVideoFrameCallback"in e)&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},us=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],i,r=this.getPoint(0),s=0;t.push(0);for(let n=1;n<=e;n++)i=this.getPoint(n/e),s+=i.distanceTo(r),t.push(s),r=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let i=this.getLengths(),r=0,s=i.length,n;t?n=t:n=e*i[s-1];let a=0,o=s-1,l;for(;a<=o;)if(r=Math.floor(a+(o-a)/2),l=i[r]-n,l<0)a=r+1;else if(l>0)o=r-1;else{o=r;break}if(r=o,i[r]===n)return r/(s-1);let h=i[r],u=i[r+1]-h,c=(n-h)/u;return(r+c)/(s-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let s=this.getPoint(i),n=this.getPoint(r),a=t||(s.isVector2?new H:new M);return a.copy(n).sub(s).normalize(),a}getTangentAt(e,t){let i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){let i=new M,r=[],s=[],n=[],a=new M,o=new Se;for(let d=0;d<=e;d++){let p=d/e;r[d]=this.getTangentAt(p,new M)}s[0]=new M,n[0]=new M;let l=Number.MAX_VALUE,h=Math.abs(r[0].x),u=Math.abs(r[0].y),c=Math.abs(r[0].z);h<=l&&(l=h,i.set(1,0,0)),u<=l&&(l=u,i.set(0,1,0)),c<=l&&i.set(0,0,1),a.crossVectors(r[0],i).normalize(),s[0].crossVectors(r[0],a),n[0].crossVectors(r[0],s[0]);for(let d=1;d<=e;d++){if(s[d]=s[d-1].clone(),n[d]=n[d-1].clone(),a.crossVectors(r[d-1],r[d]),a.length()>Number.EPSILON){a.normalize();let p=Math.acos(qt(r[d-1].dot(r[d]),-1,1));s[d].applyMatrix4(o.makeRotationAxis(a,p))}n[d].crossVectors(r[d],s[d])}if(t===!0){let d=Math.acos(qt(s[0].dot(s[e]),-1,1));d/=e,r[0].dot(a.crossVectors(s[0],s[e]))>0&&(d=-d);for(let p=1;p<=e;p++)s[p].applyMatrix4(o.makeRotationAxis(r[p],d*p)),n[p].crossVectors(r[p],s[p])}return{tangents:r,normals:s,binormals:n}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},tu=class extends us{constructor(e=0,t=0,i=1,r=1,s=0,n=Math.PI*2,a=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=s,this.aEndAngle=n,this.aClockwise=a,this.aRotation=o}getPoint(e,t){let i=t||new H,r=Math.PI*2,s=this.aEndAngle-this.aStartAngle,n=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=r;for(;s>r;)s-=r;s<Number.EPSILON&&(n?s=0:s=r),this.aClockwise===!0&&!n&&(s===r?s=-r:s=s-r);let a=this.aStartAngle+e*s,o=this.aX+this.xRadius*Math.cos(a),l=this.aY+this.yRadius*Math.sin(a);if(this.aRotation!==0){let h=Math.cos(this.aRotation),u=Math.sin(this.aRotation),c=o-this.aX,d=l-this.aY;o=c*h-d*u+this.aX,l=c*u+d*h+this.aY}return i.set(o,l)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},SP=class extends tu{constructor(e,t,i,r,s,n){super(e,t,i,i,r,s,n),this.isArcCurve=!0,this.type="ArcCurve"}};function Km(){let e=0,t=0,i=0,r=0;function s(n,a,o,l){e=n,t=o,i=-3*n+3*a-2*o-l,r=2*n-2*a+o+l}return{initCatmullRom:function(n,a,o,l,h){s(a,o,h*(o-n),h*(l-a))},initNonuniformCatmullRom:function(n,a,o,l,h,u,c){let d=(a-n)/h-(o-n)/(h+u)+(o-a)/u,p=(o-a)/u-(l-a)/(u+c)+(l-o)/c;d*=u,p*=u,s(a,o,d,p)},calc:function(n){let a=n*n,o=a*n;return e+t*n+i*a+r*o}}}var rc=new M,mp=new Km,gp=new Km,vp=new Km,AP=class extends us{constructor(e=[],t=!1,i="centripetal",r=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=i,this.tension=r}getPoint(e,t=new M){let i=t,r=this.points,s=r.length,n=(s-(this.closed?0:1))*e,a=Math.floor(n),o=n-a;this.closed?a+=a>0?0:(Math.floor(Math.abs(a)/s)+1)*s:o===0&&a===s-1&&(a=s-2,o=1);let l,h;this.closed||a>0?l=r[(a-1)%s]:(rc.subVectors(r[0],r[1]).add(r[0]),l=rc);let u=r[a%s],c=r[(a+1)%s];if(this.closed||a+2<s?h=r[(a+2)%s]:(rc.subVectors(r[s-1],r[s-2]).add(r[s-1]),h=rc),this.curveType==="centripetal"||this.curveType==="chordal"){let d=this.curveType==="chordal"?.5:.25,p=Math.pow(l.distanceToSquared(u),d),m=Math.pow(u.distanceToSquared(c),d),g=Math.pow(c.distanceToSquared(h),d);m<1e-4&&(m=1),p<1e-4&&(p=m),g<1e-4&&(g=m),mp.initNonuniformCatmullRom(l.x,u.x,c.x,h.x,p,m,g),gp.initNonuniformCatmullRom(l.y,u.y,c.y,h.y,p,m,g),vp.initNonuniformCatmullRom(l.z,u.z,c.z,h.z,p,m,g)}else this.curveType==="catmullrom"&&(mp.initCatmullRom(l.x,u.x,c.x,h.x,this.tension),gp.initCatmullRom(l.y,u.y,c.y,h.y,this.tension),vp.initCatmullRom(l.z,u.z,c.z,h.z,this.tension));return i.set(mp.calc(o),gp.calc(o),vp.calc(o)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(r.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];e.points.push(r.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(new M().fromArray(r))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function Z0(e,t,i,r,s){let n=(r-t)*.5,a=(s-i)*.5,o=e*e,l=e*o;return(2*i-2*r+n+a)*l+(-3*i+3*r-2*n-a)*o+n*e+i}function MP(e,t){let i=1-e;return i*i*t}function EP(e,t){return 2*(1-e)*e*t}function CP(e,t){return e*e*t}function Ul(e,t,i,r){return MP(e,t)+EP(e,i)+CP(e,r)}function TP(e,t){let i=1-e;return i*i*i*t}function PP(e,t){let i=1-e;return 3*i*i*e*t}function DP(e,t){return 3*(1-e)*e*e*t}function OP(e,t){return e*e*e*t}function kl(e,t,i,r,s){return TP(e,t)+PP(e,i)+DP(e,r)+OP(e,s)}var Cr=class extends us{constructor(e=new H,t=new H,i=new H,r=new H){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=i,this.v3=r}getPoint(e,t=new H){let i=t,r=this.v0,s=this.v1,n=this.v2,a=this.v3;return i.set(kl(e,r.x,s.x,n.x,a.x),kl(e,r.y,s.y,n.y,a.y)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},LP=class extends us{constructor(e=new M,t=new M,i=new M,r=new M){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=i,this.v3=r}getPoint(e,t=new M){let i=t,r=this.v0,s=this.v1,n=this.v2,a=this.v3;return i.set(kl(e,r.x,s.x,n.x,a.x),kl(e,r.y,s.y,n.y,a.y),kl(e,r.z,s.z,n.z,a.z)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},Dr=class extends us{constructor(e=new H,t=new H){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new H){let i=t;return e===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(e).add(this.v1)),i}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t){let i=t||new H;return i.copy(this.v2).sub(this.v1).normalize(),i}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},iw=class extends us{constructor(e=new M,t=new M){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new M){let i=t;return e===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(e).add(this.v1)),i}getPointAt(e,t){return this.getPoint(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},gn=class extends us{constructor(e=new H,t=new H,i=new H){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=i}getPoint(e,t=new H){let i=t,r=this.v0,s=this.v1,n=this.v2;return i.set(Ul(e,r.x,s.x,n.x),Ul(e,r.y,s.y,n.y)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},IP=class extends us{constructor(e=new M,t=new M,i=new M){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=i}getPoint(e,t=new M){let i=t,r=this.v0,s=this.v1,n=this.v2;return i.set(Ul(e,r.x,s.x,n.x),Ul(e,r.y,s.y,n.y),Ul(e,r.z,s.z,n.z)),i}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},Jm=class extends us{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new H){let i=t,r=this.points,s=(r.length-1)*e,n=Math.floor(s),a=s-n,o=r[n===0?n:n-1],l=r[n],h=r[n>r.length-2?r.length-1:n+1],u=r[n>r.length-3?r.length-1:n+2];return i.set(Z0(a,o.x,l.x,h.x,u.x),Z0(a,o.y,l.y,h.y,u.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(r.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];e.points.push(r.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let r=e.points[t];this.points.push(new H().fromArray(r))}return this}},BP=Object.freeze({__proto__:null,ArcCurve:SP,CatmullRomCurve3:AP,CubicBezierCurve:Cr,CubicBezierCurve3:LP,EllipseCurve:tu,LineCurve:Dr,LineCurve3:iw,QuadraticBezierCurve:gn,QuadraticBezierCurve3:IP,SplineCurve:Jm}),RP=class extends us{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new Dr(t,e))}getPoint(e,t){let i=e*this.getLength(),r=this.getCurveLengths(),s=0;for(;s<r.length;){if(r[s]>=i){let n=r[s]-i,a=this.curves[s],o=a.getLength(),l=o===0?0:1-n/o;return a.getPointAt(l,t)}s++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let i=0,r=this.curves.length;i<r;i++)t+=this.curves[i].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],i;for(let r=0,s=this.curves;r<s.length;r++){let n=s[r],a=n.isEllipseCurve?e*2:n.isLineCurve||n.isLineCurve3?1:n.isSplineCurve?e*n.points.length:e,o=n.getPoints(a);for(let l=0;l<o.length;l++){let h=o[l];i&&i.equals(h)||(t.push(h),i=h)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t<i;t++){let r=e.curves[t];this.curves.push(r.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,i=this.curves.length;t<i;t++){let r=this.curves[t];e.curves.push(r.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,i=e.curves.length;t<i;t++){let r=e.curves[t];this.curves.push(new BP[r.type]().fromJSON(r))}return this}},cd=class extends RP{constructor(e){super(),this.type="Path",this.currentPoint=new H,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,i=e.length;t<i;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let i=new Dr(this.currentPoint.clone(),new H(e,t));return this.curves.push(i),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,i,r){let s=new gn(this.currentPoint.clone(),new H(e,t),new H(i,r));return this.curves.push(s),this.currentPoint.set(i,r),this}bezierCurveTo(e,t,i,r,s,n){let a=new Cr(this.currentPoint.clone(),new H(e,t),new H(i,r),new H(s,n));return this.curves.push(a),this.currentPoint.set(s,n),this}splineThru(e){let t=[this.currentPoint.clone()].concat(e),i=new Jm(t);return this.curves.push(i),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,i,r,s,n){let a=this.currentPoint.x,o=this.currentPoint.y;return this.absarc(e+a,t+o,i,r,s,n),this}absarc(e,t,i,r,s,n){return this.absellipse(e,t,i,i,r,s,n),this}ellipse(e,t,i,r,s,n,a,o){let l=this.currentPoint.x,h=this.currentPoint.y;return this.absellipse(e+l,t+h,i,r,s,n,a,o),this}absellipse(e,t,i,r,s,n,a,o){let l=new tu(e,t,i,r,s,n,a,o);if(this.curves.length>0){let u=l.getPoint(0);u.equals(this.currentPoint)||this.lineTo(u.x,u.y)}this.curves.push(l);let h=l.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},rw=class extends ke{constructor(e=[new H(0,.5),new H(.5,0),new H(0,-.5)],t=12,i=0,r=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=qt(r,0,Math.PI*2);let s=[],n=[],a=[],o=[],l=[],h=1/t,u=new M,c=new H,d=new M,p=new M,m=new M,g=0,f=0;for(let v=0;v<=e.length-1;v++)switch(v){case 0:g=e[v+1].x-e[v].x,f=e[v+1].y-e[v].y,d.x=f*1,d.y=-g,d.z=f*0,m.copy(d),d.normalize(),o.push(d.x,d.y,d.z);break;case e.length-1:o.push(m.x,m.y,m.z);break;default:g=e[v+1].x-e[v].x,f=e[v+1].y-e[v].y,d.x=f*1,d.y=-g,d.z=f*0,p.copy(d),d.x+=m.x,d.y+=m.y,d.z+=m.z,d.normalize(),o.push(d.x,d.y,d.z),m.copy(p)}for(let v=0;v<=t;v++){let y=i+v*h*r,b=Math.sin(y),x=Math.cos(y);for(let w=0;w<=e.length-1;w++){u.x=e[w].x*b,u.y=e[w].y,u.z=e[w].x*x,n.push(u.x,u.y,u.z),c.x=v/t,c.y=w/(e.length-1),a.push(c.x,c.y);let _=o[3*w+0]*b,A=o[3*w+1],S=o[3*w+0]*x;l.push(_,A,S)}}for(let v=0;v<t;v++)for(let y=0;y<e.length-1;y++){let b=y+v*e.length,x=b,w=b+e.length,_=b+e.length+1,A=b+1;s.push(x,w,A),s.push(_,A,w)}this.setIndex(s),this.setAttribute("position",new Ee(n,3)),this.setAttribute("uv",new Ee(a,2)),this.setAttribute("normal",new Ee(l,3))}static fromJSON(e){return new rw(e.points,e.segments,e.phiStart,e.phiLength)}},$m=class extends ke{constructor(e=1,t=1,i=1,r=8,s=1,n=!1,a=0,o=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:i,radialSegments:r,heightSegments:s,openEnded:n,thetaStart:a,thetaLength:o};let l=this;r=Math.floor(r),s=Math.floor(s);let h=[],u=[],c=[],d=[],p=0,m=[],g=i/2,f=0;v(),n===!1&&(e>0&&y(!0),t>0&&y(!1)),this.setIndex(h),this.setAttribute("position",new Ee(u,3)),this.setAttribute("normal",new Ee(c,3)),this.setAttribute("uv",new Ee(d,2));function v(){let b=new M,x=new M,w=0,_=(t-e)/i;for(let A=0;A<=s;A++){let S=[],E=A/s,C=E*(t-e)+e;for(let T=0;T<=r;T++){let P=T/r,R=P*o+a,O=Math.sin(R),U=Math.cos(R);x.x=C*O,x.y=-E*i+g,x.z=C*U,u.push(x.x,x.y,x.z),b.set(O,_,U).normalize(),c.push(b.x,b.y,b.z),d.push(P,1-E),S.push(p++)}m.push(S)}for(let A=0;A<r;A++)for(let S=0;S<s;S++){let E=m[S][A],C=m[S+1][A],T=m[S+1][A+1],P=m[S][A+1];h.push(E,C,P),h.push(C,T,P),w+=6}l.addGroup(f,w,0),f+=w}function y(b){let x=p,w=new H,_=new M,A=0,S=b===!0?e:t,E=b===!0?1:-1;for(let T=1;T<=r;T++)u.push(0,g*E,0),c.push(0,E,0),d.push(.5,.5),p++;let C=p;for(let T=0;T<=r;T++){let P=T/r*o+a,R=Math.cos(P),O=Math.sin(P);_.x=S*O,_.y=g*E,_.z=S*R,u.push(_.x,_.y,_.z),c.push(0,E,0),w.x=R*.5+.5,w.y=O*.5*E+.5,d.push(w.x,w.y),p++}for(let T=0;T<r;T++){let P=x+T,R=C+T;b===!0?h.push(R,R+1,P):h.push(R+1,R,P),A+=3}l.addGroup(f,A,b===!0?1:2),f+=A}}static fromJSON(e){return new $m(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},sw=class extends $m{constructor(e=1,t=1,i=8,r=1,s=!1,n=0,a=Math.PI*2){super(0,e,t,i,r,s,n,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:i,heightSegments:r,openEnded:s,thetaStart:n,thetaLength:a}}static fromJSON(e){return new sw(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},eg=class extends ke{constructor(e=[],t=[],i=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:r};let s=[],n=[];a(r),l(i),h(),this.setAttribute("position",new Ee(s,3)),this.setAttribute("normal",new Ee(s.slice(),3)),this.setAttribute("uv",new Ee(n,2)),r===0?this.computeVertexNormals():this.normalizeNormals();function a(v){let y=new M,b=new M,x=new M;for(let w=0;w<t.length;w+=3)d(t[w+0],y),d(t[w+1],b),d(t[w+2],x),o(y,b,x,v)}function o(v,y,b,x){let w=x+1,_=[];for(let A=0;A<=w;A++){_[A]=[];let S=v.clone().lerp(b,A/w),E=y.clone().lerp(b,A/w),C=w-A;for(let T=0;T<=C;T++)T===0&&A===w?_[A][T]=S:_[A][T]=S.clone().lerp(E,T/C)}for(let A=0;A<w;A++)for(let S=0;S<2*(w-A)-1;S++){let E=Math.floor(S/2);S%2===0?(c(_[A][E+1]),c(_[A+1][E]),c(_[A][E])):(c(_[A][E+1]),c(_[A+1][E+1]),c(_[A+1][E]))}}function l(v){let y=new M;for(let b=0;b<s.length;b+=3)y.x=s[b+0],y.y=s[b+1],y.z=s[b+2],y.normalize().multiplyScalar(v),s[b+0]=y.x,s[b+1]=y.y,s[b+2]=y.z}function h(){let v=new M;for(let y=0;y<s.length;y+=3){v.x=s[y+0],v.y=s[y+1],v.z=s[y+2];let b=g(v)/2/Math.PI+.5,x=f(v)/Math.PI+.5;n.push(b,1-x)}p(),u()}function u(){for(let v=0;v<n.length;v+=6){let y=n[v+0],b=n[v+2],x=n[v+4],w=Math.max(y,b,x),_=Math.min(y,b,x);w>.9&&_<.1&&(y<.2&&(n[v+0]+=1),b<.2&&(n[v+2]+=1),x<.2&&(n[v+4]+=1))}}function c(v){s.push(v.x,v.y,v.z)}function d(v,y){let b=v*3;y.x=e[b+0],y.y=e[b+1],y.z=e[b+2]}function p(){let v=new M,y=new M,b=new M,x=new M,w=new H,_=new H,A=new H;for(let S=0,E=0;S<s.length;S+=9,E+=6){v.set(s[S+0],s[S+1],s[S+2]),y.set(s[S+3],s[S+4],s[S+5]),b.set(s[S+6],s[S+7],s[S+8]),w.set(n[E+0],n[E+1]),_.set(n[E+2],n[E+3]),A.set(n[E+4],n[E+5]),x.copy(v).add(y).add(b).divideScalar(3);let C=g(x);m(w,E+0,v,C),m(_,E+2,y,C),m(A,E+4,b,C)}}function m(v,y,b,x){x<0&&v.x===1&&(n[y]=v.x-1),b.x===0&&b.z===0&&(n[y]=x/2/Math.PI+.5)}function g(v){return Math.atan2(v.z,-v.x)}function f(v){return Math.atan2(-v.y,Math.sqrt(v.x*v.x+v.z*v.z))}}static fromJSON(e){return new eg(e.vertices,e.indices,e.radius,e.details)}},nw=class extends eg{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=1/i,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-i,0,-r,i,0,r,-i,0,r,i,-r,-i,0,-r,i,0,r,-i,0,r,i,0,-i,0,-r,i,0,-r,-i,0,r,i,0,r],n=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(s,n,e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new nw(e.radius,e.detail)}},dd=class extends cd{constructor(e){super(e),this.uuid=rs(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let i=0,r=this.holes.length;i<r;i++)t[i]=this.holes[i].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,i=e.holes.length;t<i;t++){let r=e.holes[t];this.holes.push(r.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,i=this.holes.length;t<i;t++){let r=this.holes[t];e.holes.push(r.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,i=e.holes.length;t<i;t++){let r=e.holes[t];this.holes.push(new cd().fromJSON(r))}return this}},NP={triangulate:function(e,t,i=2){let r=t&&t.length,s=r?t[0]*i:e.length,n=aw(e,0,s,i,!0),a=[];if(!n||n.next===n.prev)return a;let o,l,h,u,c,d,p;if(r&&(n=jP(e,t,n,i)),e.length>80*i){o=h=e[0],l=u=e[1];for(let m=i;m<s;m+=i)c=e[m],d=e[m+1],c<o&&(o=c),d<l&&(l=d),c>h&&(h=c),d>u&&(u=d);p=Math.max(h-o,u-l),p=p!==0?1/p:0}return Kl(n,a,i,o,l,p),a}};function aw(e,t,i,r,s){let n,a;if(s===JP(e,t,i,r)>0)for(n=t;n<i;n+=r)a=K0(n,e[n],e[n+1],a);else for(n=i-r;n>=t;n-=r)a=K0(n,e[n],e[n+1],a);return a&&iu(a,a.next)&&($l(a),a=a.next),a}function vn(e,t){if(!e)return e;t||(t=e);let i=e,r;do if(r=!1,!i.steiner&&(iu(i,i.next)||Tt(i.prev,i,i.next)===0)){if($l(i),i=t=i.prev,i===i.next)break;r=!0}else i=i.next;while(r||i!==t);return t}function Kl(e,t,i,r,s,n,a){if(!e)return;!a&&n&&XP(e,r,s,n);let o=e,l,h;for(;e.prev!==e.next;){if(l=e.prev,h=e.next,n?FP(e,r,s,n):zP(e)){t.push(l.i/i),t.push(e.i/i),t.push(h.i/i),$l(e),e=h.next,o=h.next;continue}if(e=h,e===o){a?a===1?(e=UP(vn(e),t,i),Kl(e,t,i,r,s,n,2)):a===2&&kP(e,t,i,r,s,n):Kl(vn(e),t,i,r,s,n,1);break}}}function zP(e){let t=e.prev,i=e,r=e.next;if(Tt(t,i,r)>=0)return!1;let s=e.next.next;for(;s!==e.prev;){if($a(t.x,t.y,i.x,i.y,r.x,r.y,s.x,s.y)&&Tt(s.prev,s,s.next)>=0)return!1;s=s.next}return!0}function FP(e,t,i,r){let s=e.prev,n=e,a=e.next;if(Tt(s,n,a)>=0)return!1;let o=s.x<n.x?s.x<a.x?s.x:a.x:n.x<a.x?n.x:a.x,l=s.y<n.y?s.y<a.y?s.y:a.y:n.y<a.y?n.y:a.y,h=s.x>n.x?s.x>a.x?s.x:a.x:n.x>a.x?n.x:a.x,u=s.y>n.y?s.y>a.y?s.y:a.y:n.y>a.y?n.y:a.y,c=Df(o,l,t,i,r),d=Df(h,u,t,i,r),p=e.prevZ,m=e.nextZ;for(;p&&p.z>=c&&m&&m.z<=d;){if(p!==e.prev&&p!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,p.x,p.y)&&Tt(p.prev,p,p.next)>=0||(p=p.prevZ,m!==e.prev&&m!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,m.x,m.y)&&Tt(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;p&&p.z>=c;){if(p!==e.prev&&p!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,p.x,p.y)&&Tt(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;m&&m.z<=d;){if(m!==e.prev&&m!==e.next&&$a(s.x,s.y,n.x,n.y,a.x,a.y,m.x,m.y)&&Tt(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function UP(e,t,i){let r=e;do{let s=r.prev,n=r.next.next;!iu(s,n)&&ow(s,r,r.next,n)&&Jl(s,n)&&Jl(n,s)&&(t.push(s.i/i),t.push(r.i/i),t.push(n.i/i),$l(r),$l(r.next),r=e=n),r=r.next}while(r!==e);return vn(r)}function kP(e,t,i,r,s,n){let a=e;do{let o=a.next.next;for(;o!==a.prev;){if(a.i!==o.i&&QP(a,o)){let l=lw(a,o);a=vn(a,a.next),l=vn(l,l.next),Kl(a,t,i,r,s,n),Kl(l,t,i,r,s,n);return}o=o.next}a=a.next}while(a!==e)}function jP(e,t,i,r){let s=[],n,a,o,l,h;for(n=0,a=t.length;n<a;n++)o=t[n]*r,l=n<a-1?t[n+1]*r:e.length,h=aw(e,o,l,r,!1),h===h.next&&(h.steiner=!0),s.push(qP(h));for(s.sort(HP),n=0;n<s.length;n++)GP(s[n],i),i=vn(i,i.next);return i}function HP(e,t){return e.x-t.x}function GP(e,t){if(t=VP(e,t),t){let i=lw(t,e);vn(t,t.next),vn(i,i.next)}}function VP(e,t){let i=t,r=e.x,s=e.y,n=-1/0,a;do{if(s<=i.y&&s>=i.next.y&&i.next.y!==i.y){let d=i.x+(s-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(d<=r&&d>n){if(n=d,d===r){if(s===i.y)return i;if(s===i.next.y)return i.next}a=i.x<i.next.x?i:i.next}}i=i.next}while(i!==t);if(!a)return null;if(r===n)return a;let o=a,l=a.x,h=a.y,u=1/0,c;i=a;do r>=i.x&&i.x>=l&&r!==i.x&&$a(s<h?r:n,s,l,h,s<h?n:r,s,i.x,i.y)&&(c=Math.abs(s-i.y)/(r-i.x),Jl(i,e)&&(c<u||c===u&&(i.x>a.x||i.x===a.x&&WP(a,i)))&&(a=i,u=c)),i=i.next;while(i!==o);return a}function WP(e,t){return Tt(e.prev,e,t.prev)<0&&Tt(t.next,e,e.next)<0}function XP(e,t,i,r){let s=e;do s.z===null&&(s.z=Df(s.x,s.y,t,i,r)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==e);s.prevZ.nextZ=null,s.prevZ=null,YP(s)}function YP(e){let t,i,r,s,n,a,o,l,h=1;do{for(i=e,e=null,n=null,a=0;i;){for(a++,r=i,o=0,t=0;t<h&&(o++,r=r.nextZ,!!r);t++);for(l=h;o>0||l>0&&r;)o!==0&&(l===0||!r||i.z<=r.z)?(s=i,i=i.nextZ,o--):(s=r,r=r.nextZ,l--),n?n.nextZ=s:e=s,s.prevZ=n,n=s;i=r}n.nextZ=null,h*=2}while(a>1);return e}function Df(e,t,i,r,s){return e=32767*(e-i)*s,t=32767*(t-r)*s,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function qP(e){let t=e,i=e;do(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next;while(t!==e);return i}function $a(e,t,i,r,s,n,a,o){return(s-a)*(t-o)-(e-a)*(n-o)>=0&&(e-a)*(r-o)-(i-a)*(t-o)>=0&&(i-a)*(n-o)-(s-a)*(r-o)>=0}function QP(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!ZP(e,t)&&(Jl(e,t)&&Jl(t,e)&&KP(e,t)&&(Tt(e.prev,e,t.prev)||Tt(e,t.prev,t))||iu(e,t)&&Tt(e.prev,e,e.next)>0&&Tt(t.prev,t,t.next)>0)}function Tt(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function iu(e,t){return e.x===t.x&&e.y===t.y}function ow(e,t,i,r){let s=nc(Tt(e,t,i)),n=nc(Tt(e,t,r)),a=nc(Tt(i,r,e)),o=nc(Tt(i,r,t));return!!(s!==n&&a!==o||s===0&&sc(e,i,t)||n===0&&sc(e,r,t)||a===0&&sc(i,e,r)||o===0&&sc(i,t,r))}function sc(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function nc(e){return e>0?1:e<0?-1:0}function ZP(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&ow(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}function Jl(e,t){return Tt(e.prev,e,e.next)<0?Tt(e,t,e.next)>=0&&Tt(e,e.prev,t)>=0:Tt(e,t,e.prev)<0||Tt(e,e.next,t)<0}function KP(e,t){let i=e,r=!1,s=(e.x+t.x)/2,n=(e.y+t.y)/2;do i.y>n!=i.next.y>n&&i.next.y!==i.y&&s<(i.next.x-i.x)*(n-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next;while(i!==e);return r}function lw(e,t){let i=new Of(e.i,e.x,e.y),r=new Of(t.i,t.x,t.y),s=e.next,n=t.prev;return e.next=t,t.prev=e,i.next=s,s.prev=i,r.next=i,i.prev=r,n.next=r,r.prev=n,r}function K0(e,t,i,r){let s=new Of(e,t,i);return r?(s.next=r.next,s.prev=r,r.next.prev=s,r.next=s):(s.prev=s,s.next=s),s}function $l(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Of(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function JP(e,t,i,r){let s=0;for(let n=t,a=i-r;n<i;n+=r)s+=(e[a]-e[n])*(e[n+1]+e[a+1]),a=n;return s}var hw=class{static area(e){let t=e.length,i=0;for(let r=t-1,s=0;s<t;r=s++)i+=e[r].x*e[s].y-e[s].x*e[r].y;return i*.5}static isClockWise(e){return hw.area(e)<0}static triangulateShape(e,t){let i=[],r=[],s=[];J0(e),$0(i,e);let n=e.length;t.forEach(J0);for(let o=0;o<t.length;o++)r.push(n),n+=t[o].length,$0(i,t[o]);let a=NP.triangulate(i,r);for(let o=0;o<a.length;o+=3)s.push(a.slice(o,o+3));return s}};function J0(e){let t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function $0(e,t){for(let i=0;i<t.length;i++)e.push(t[i].x),e.push(t[i].y)}var cw=class extends eg{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(r,s,e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new cw(e.radius,e.detail)}},tg=class extends ke{constructor(e=1,t=32,i=16,r=0,s=Math.PI*2,n=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:i,phiStart:r,phiLength:s,thetaStart:n,thetaLength:a},t=Math.max(3,Math.floor(t)),i=Math.max(2,Math.floor(i));let o=Math.min(n+a,Math.PI),l=0,h=[],u=new M,c=new M,d=[],p=[],m=[],g=[];for(let f=0;f<=i;f++){let v=[],y=f/i,b=0;f==0&&n==0?b=.5/t:f==i&&o==Math.PI&&(b=-.5/t);for(let x=0;x<=t;x++){let w=x/t;u.x=-e*Math.cos(r+w*s)*Math.sin(n+y*a),u.y=e*Math.cos(n+y*a),u.z=e*Math.sin(r+w*s)*Math.sin(n+y*a),p.push(u.x,u.y,u.z),c.copy(u).normalize(),m.push(c.x,c.y,c.z),g.push(w+b,1-y),v.push(l++)}h.push(v)}for(let f=0;f<i;f++)for(let v=0;v<t;v++){let y=h[f][v+1],b=h[f][v],x=h[f+1][v],w=h[f+1][v+1];(f!==0||n>0)&&d.push(y,b,w),(f!==i-1||o<Math.PI)&&d.push(b,x,w)}this.setIndex(d),this.setAttribute("position",new Ee(p,3)),this.setAttribute("normal",new Ee(m,3)),this.setAttribute("uv",new Ee(g,2))}static fromJSON(e){return new tg(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}},dw=class extends ke{constructor(e=1,t=.4,i=64,r=8,s=2,n=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:i,radialSegments:r,p:s,q:n},i=Math.floor(i),r=Math.floor(r);let a=[],o=[],l=[],h=[],u=new M,c=new M,d=new M,p=new M,m=new M,g=new M,f=new M;for(let y=0;y<=i;++y){let b=y/i*s*Math.PI*2;v(b,s,n,e,d),v(b+.01,s,n,e,p),g.subVectors(p,d),f.addVectors(p,d),m.crossVectors(g,f),f.crossVectors(m,g),m.normalize(),f.normalize();for(let x=0;x<=r;++x){let w=x/r*Math.PI*2,_=-t*Math.cos(w),A=t*Math.sin(w);u.x=d.x+(_*f.x+A*m.x),u.y=d.y+(_*f.y+A*m.y),u.z=d.z+(_*f.z+A*m.z),o.push(u.x,u.y,u.z),c.subVectors(u,d).normalize(),l.push(c.x,c.y,c.z),h.push(y/i),h.push(x/r)}}for(let y=1;y<=i;y++)for(let b=1;b<=r;b++){let x=(r+1)*(y-1)+(b-1),w=(r+1)*y+(b-1),_=(r+1)*y+b,A=(r+1)*(y-1)+b;a.push(x,w,A),a.push(w,_,A)}this.setIndex(a),this.setAttribute("position",new Ee(o,3)),this.setAttribute("normal",new Ee(l,3)),this.setAttribute("uv",new Ee(h,2));function v(y,b,x,w,_){let A=Math.cos(y),S=Math.sin(y),E=x/b*y,C=Math.cos(E);_.x=w*(2+C)*.5*A,_.y=w*(2+C)*S*.5,_.z=w*Math.sin(E)*.5}}static fromJSON(e){return new dw(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}},Xt={arraySlice:function(e,t,i){return Xt.isTypedArray(e)?new e.constructor(e.subarray(t,i!==void 0?i:e.length)):e.slice(t,i)},convertArray:function(e,t,i){return!e||!i&&e.constructor===t?e:typeof t.BYTES_PER_ELEMENT=="number"?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(e){function t(s,n){return e[s]-e[n]}let i=e.length,r=new Array(i);for(let s=0;s!==i;++s)r[s]=s;return r.sort(t),r},sortedArray:function(e,t,i){let r=e.length,s=new e.constructor(r);for(let n=0,a=0;a!==r;++n){let o=i[n]*t;for(let l=0;l!==t;++l)s[a++]=e[o+l]}return s},flattenJSON:function(e,t,i,r){let s=1,n=e[0];for(;n!==void 0&&n[r]===void 0;)n=e[s++];if(n===void 0)return;let a=n[r];if(a!==void 0)if(Array.isArray(a))do a=n[r],a!==void 0&&(t.push(n.time),i.push.apply(i,a)),n=e[s++];while(n!==void 0);else if(a.toArray!==void 0)do a=n[r],a!==void 0&&(t.push(n.time),a.toArray(i,i.length)),n=e[s++];while(n!==void 0);else do a=n[r],a!==void 0&&(t.push(n.time),i.push(a)),n=e[s++];while(n!==void 0)},subclip:function(e,t,i,r,s=30){let n=e.clone();n.name=t;let a=[];for(let l=0;l<n.tracks.length;++l){let h=n.tracks[l],u=h.getValueSize(),c=[],d=[];for(let p=0;p<h.times.length;++p){let m=h.times[p]*s;if(!(m<i||m>=r)){c.push(h.times[p]);for(let g=0;g<u;++g)d.push(h.values[p*u+g])}}c.length!==0&&(h.times=Xt.convertArray(c,h.times.constructor),h.values=Xt.convertArray(d,h.values.constructor),a.push(h))}n.tracks=a;let o=1/0;for(let l=0;l<n.tracks.length;++l)o>n.tracks[l].times[0]&&(o=n.tracks[l].times[0]);for(let l=0;l<n.tracks.length;++l)n.tracks[l].shift(-1*o);return n.resetDuration(),n},makeClipAdditive:function(e,t=0,i=e,r=30){r<=0&&(r=30);let s=i.tracks.length,n=t/r;for(let a=0;a<s;++a){let o=i.tracks[a],l=o.ValueTypeName;if(l==="bool"||l==="string")continue;let h=e.tracks.find(function(v){return v.name===o.name&&v.ValueTypeName===l});if(h===void 0)continue;let u=0,c=o.getValueSize();o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(u=c/3);let d=0,p=h.getValueSize();h.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(d=p/3);let m=o.times.length-1,g;if(n<=o.times[0]){let v=u,y=c-u;g=Xt.arraySlice(o.values,v,y)}else if(n>=o.times[m]){let v=m*c+u,y=v+c-u;g=Xt.arraySlice(o.values,v,y)}else{let v=o.createInterpolant(),y=u,b=c-u;v.evaluate(n),g=Xt.arraySlice(v.resultBuffer,y,b)}l==="quaternion"&&new nt().fromArray(g).normalize().conjugate().toArray(g);let f=h.times.length;for(let v=0;v<f;++v){let y=v*p+d;if(l==="quaternion")nt.multiplyQuaternionsFlat(h.values,y,g,0,h.values,y);else{let b=p-d*2;for(let x=0;x<b;++x)h.values[y+x]-=g[x]}}}return e.blendMode=aM,e}},ru=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],s=t[i-1];i:{e:{let n;t:{r:if(!(e<r)){for(let a=i+2;;){if(r===void 0){if(e<s)break r;return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}if(i===a)break;if(s=r,r=t[++i],e<r)break e}n=t.length;break t}if(!(e>=s)){let a=t[1];e<a&&(i=2,s=a);for(let o=i-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===o)break;if(r=s,s=t[--i-1],e>=s)break e}n=i,i=0;break t}break i}for(;i<n;){let a=i+n>>>1;e<t[a]?n=a:i=a+1}if(r=t[i],s=t[i-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}this._cachedIndex=i,this.intervalChanged_(i,s,r)}return this.interpolate_(i,s,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,i=this.sampleValues,r=this.valueSize,s=e*r;for(let n=0;n!==r;++n)t[n]=i[s+n];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},$P=class extends ru{constructor(e,t,i,r){super(e,t,i,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:o0,endingEnd:o0}}intervalChanged_(e,t,i){let r=this.parameterPositions,s=e-2,n=e+1,a=r[s],o=r[n];if(a===void 0)switch(this.getSettings_().endingStart){case l0:s=e,a=2*t-i;break;case h0:s=r.length-2,a=t+r[s]-r[s+1];break;default:s=e,a=i}if(o===void 0)switch(this.getSettings_().endingEnd){case l0:n=e,o=2*i-t;break;case h0:n=1,o=i+r[1]-r[0];break;default:n=e-1,o=t}let l=(i-t)*.5,h=this.valueSize;this._weightPrev=l/(t-a),this._weightNext=l/(o-i),this._offsetPrev=s*h,this._offsetNext=n*h}interpolate_(e,t,i,r){let s=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=e*a,l=o-a,h=this._offsetPrev,u=this._offsetNext,c=this._weightPrev,d=this._weightNext,p=(i-t)/(r-t),m=p*p,g=m*p,f=-c*g+2*c*m-c*p,v=(1+c)*g+(-1.5-2*c)*m+(-.5+c)*p+1,y=(-1-d)*g+(1.5+d)*m+.5*p,b=d*g-d*m;for(let x=0;x!==a;++x)s[x]=f*n[h+x]+v*n[l+x]+y*n[o+x]+b*n[u+x];return s}},eD=class extends ru{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=e*a,l=o-a,h=(i-t)/(r-t),u=1-h;for(let c=0;c!==a;++c)s[c]=n[l+c]*u+n[o+c]*h;return s}},tD=class extends ru{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e){return this.copySampleValue_(e-1)}},Bs=class{constructor(e,t,i,r){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=Xt.convertArray(t,this.TimeBufferType),this.values=Xt.convertArray(i,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,i;if(t.toJSON!==this.toJSON)i=t.toJSON(e);else{i={name:e.name,times:Xt.convertArray(e.times,Array),values:Xt.convertArray(e.values,Array)};let r=e.getInterpolation();r!==e.DefaultInterpolation&&(i.interpolation=r)}return i.type=e.ValueTypeName,i}InterpolantFactoryMethodDiscrete(e){return new tD(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new eD(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new $P(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case sd:t=this.InterpolantFactoryMethodDiscrete;break;case nd:t=this.InterpolantFactoryMethodLinear;break;case ku:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){let i="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(i);return console.warn("THREE.KeyframeTrack:",i),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return sd;case this.InterpolantFactoryMethodLinear:return nd;case this.InterpolantFactoryMethodSmooth:return ku}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){let t=this.times;for(let i=0,r=t.length;i!==r;++i)t[i]+=e}return this}scale(e){if(e!==1){let t=this.times;for(let i=0,r=t.length;i!==r;++i)t[i]*=e}return this}trim(e,t){let i=this.times,r=i.length,s=0,n=r-1;for(;s!==r&&i[s]<e;)++s;for(;n!==-1&&i[n]>t;)--n;if(++n,s!==0||n!==r){s>=n&&(n=Math.max(n,1),s=n-1);let a=this.getValueSize();this.times=Xt.arraySlice(i,s,n),this.values=Xt.arraySlice(this.values,s*a,n*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let n=null;for(let a=0;a!==s;a++){let o=i[a];if(typeof o=="number"&&isNaN(o)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,o),e=!1;break}if(n!==null&&n>o){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,o,n),e=!1;break}n=o}if(r!==void 0&&Xt.isTypedArray(r))for(let a=0,o=r.length;a!==o;++a){let l=r[a];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,l),e=!1;break}}return e}optimize(){let e=Xt.arraySlice(this.times),t=Xt.arraySlice(this.values),i=this.getValueSize(),r=this.getInterpolation()===ku,s=e.length-1,n=1;for(let a=1;a<s;++a){let o=!1,l=e[a],h=e[a+1];if(l!==h&&(a!==1||l!==e[0]))if(r)o=!0;else{let u=a*i,c=u-i,d=u+i;for(let p=0;p!==i;++p){let m=t[u+p];if(m!==t[c+p]||m!==t[d+p]){o=!0;break}}}if(o){if(a!==n){e[n]=e[a];let u=a*i,c=n*i;for(let d=0;d!==i;++d)t[c+d]=t[u+d]}++n}}if(s>0){e[n]=e[s];for(let a=s*i,o=n*i,l=0;l!==i;++l)t[o+l]=t[a+l];++n}return n!==e.length?(this.times=Xt.arraySlice(e,0,n),this.values=Xt.arraySlice(t,0,n*i)):(this.times=e,this.values=t),this}clone(){let e=Xt.arraySlice(this.times,0),t=Xt.arraySlice(this.values,0),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Bs.prototype.TimeBufferType=Float32Array;Bs.prototype.ValueBufferType=Float32Array;Bs.prototype.DefaultInterpolation=nd;var yh=class extends Bs{};yh.prototype.ValueTypeName="bool";yh.prototype.ValueBufferType=Array;yh.prototype.DefaultInterpolation=sd;yh.prototype.InterpolantFactoryMethodLinear=void 0;yh.prototype.InterpolantFactoryMethodSmooth=void 0;var iD=class extends Bs{};iD.prototype.ValueTypeName="color";var rD=class extends Bs{};rD.prototype.ValueTypeName="number";var sD=class extends ru{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,n=this.sampleValues,a=this.valueSize,o=(i-t)/(r-t),l=e*a;for(let h=l+a;l!==h;l+=4)nt.slerpFlat(s,0,n,l-a,n,l,o);return s}},ig=class extends Bs{InterpolantFactoryMethodLinear(e){return new sD(this.times,this.values,this.getValueSize(),e)}};ig.prototype.ValueTypeName="quaternion";ig.prototype.DefaultInterpolation=nd;ig.prototype.InterpolantFactoryMethodSmooth=void 0;var xh=class extends Bs{};xh.prototype.ValueTypeName="string";xh.prototype.ValueBufferType=Array;xh.prototype.DefaultInterpolation=sd;xh.prototype.InterpolantFactoryMethodLinear=void 0;xh.prototype.InterpolantFactoryMethodSmooth=void 0;var nD=class extends Bs{};nD.prototype.ValueTypeName="vector";var ey={enabled:!1,files:{},add:function(e,t){this.enabled!==!1&&(this.files[e]=t)},get:function(e){if(this.enabled!==!1)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}},uw=class{constructor(e,t,i){let r=this,s=!1,n=0,a=0,o,l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=i,this.itemStart=function(h){a++,s===!1&&r.onStart!==void 0&&r.onStart(h,n,a),s=!0},this.itemEnd=function(h){n++,r.onProgress!==void 0&&r.onProgress(h,n,a),n===a&&(s=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(h){r.onError!==void 0&&r.onError(h)},this.resolveURL=function(h){return o?o(h):h},this.setURLModifier=function(h){return o=h,this},this.addHandler=function(h,u){return l.push(h,u),this},this.removeHandler=function(h){let u=l.indexOf(h);return u!==-1&&l.splice(u,2),this},this.getHandler=function(h){for(let u=0,c=l.length;u<c;u+=2){let d=l[u],p=l[u+1];if(d.global&&(d.lastIndex=0),d.test(h))return p}return null}}},aD=new uw,rg=class{constructor(e){this.manager=e!==void 0?e:aD,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let i=this;return new Promise(function(r,s){i.load(e,r,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}},bs={},Lf=class extends rg{constructor(e){super(e)}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=ey.get(e);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(bs[e]!==void 0){bs[e].push({onLoad:t,onProgress:i,onError:r});return}bs[e]=[],bs[e].push({onLoad:t,onProgress:i,onError:r});let n=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(n).then(l=>{if(l.status===200||l.status===0){if(l.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||l.body===void 0||l.body.getReader===void 0)return l;let h=bs[e],u=l.body.getReader(),c=l.headers.get("Content-Length"),d=c?parseInt(c):0,p=d!==0,m=0,g=new ReadableStream({start(f){v();function v(){u.read().then(({done:y,value:b})=>{if(y)f.close();else{m+=b.byteLength;let x=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:d});for(let w=0,_=h.length;w<_;w++){let A=h[w];A.onProgress&&A.onProgress(x)}f.enqueue(b),v()}})}}});return new Response(g)}else throw Error(`fetch for "${l.url}" responded with ${l.status}: ${l.statusText}`)}).then(l=>{switch(o){case"arraybuffer":return l.arrayBuffer();case"blob":return l.blob();case"document":return l.text().then(h=>new DOMParser().parseFromString(h,a));case"json":return l.json();default:if(a===void 0)return l.text();{let h=/charset="?([^;"\s]*)"?/i.exec(a),u=h&&h[1]?h[1].toLowerCase():void 0,c=new TextDecoder(u);return l.arrayBuffer().then(d=>c.decode(d))}}}).then(l=>{ey.add(e,l);let h=bs[e];delete bs[e];for(let u=0,c=h.length;u<c;u++){let d=h[u];d.onLoad&&d.onLoad(l)}}).catch(l=>{let h=bs[e];if(h===void 0)throw this.manager.itemError(e),l;delete bs[e];for(let u=0,c=h.length;u<c;u++){let d=h[u];d.onError&&d.onError(l)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},bh=class extends _t{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ue(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}},oD=class extends bh{constructor(e,t,i){super(e,i),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(_t.DefaultUp),this.updateMatrix(),this.groundColor=new Ue(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},ty=new Se,iy=new M,ry=new M,sg=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new H(512,512),this.map=null,this.mapPass=null,this.matrix=new Se,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new qm,this._frameExtents=new H(1,1),this._viewportCount=1,this._viewports=[new tt(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,i=this.matrix;iy.setFromMatrixPosition(e.matrixWorld),t.position.copy(iy),ry.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(ry),t.updateMatrixWorld(),ty.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ty),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(t.projectionMatrix),i.multiply(t.matrixWorldInverse)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},lD=class extends sg{constructor(){super(new di(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,i=Zl*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,s=e.distance||t.far;(i!==t.fov||r!==t.aspect||s!==t.far)&&(t.fov=i,t.aspect=r,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},hD=class extends bh{constructor(e,t,i=0,r=Math.PI/3,s=0,n=1){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(_t.DefaultUp),this.updateMatrix(),this.target=new _t,this.distance=i,this.angle=r,this.penumbra=s,this.decay=n,this.shadow=new lD}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},sy=new Se,il=new M,yp=new M,cD=class extends sg{constructor(){super(new di(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new H(4,2),this._viewportCount=6,this._viewports=[new tt(2,1,1,1),new tt(0,1,1,1),new tt(3,1,1,1),new tt(1,1,1,1),new tt(3,0,1,1),new tt(1,0,1,1)],this._cubeDirections=[new M(1,0,0),new M(-1,0,0),new M(0,0,1),new M(0,0,-1),new M(0,1,0),new M(0,-1,0)],this._cubeUps=[new M(0,1,0),new M(0,1,0),new M(0,1,0),new M(0,1,0),new M(0,0,1),new M(0,0,-1)]}updateMatrices(e,t=0){let i=this.camera,r=this.matrix,s=e.distance||i.far;s!==i.far&&(i.far=s,i.updateProjectionMatrix()),il.setFromMatrixPosition(e.matrixWorld),i.position.copy(il),yp.copy(i.position),yp.add(this._cubeDirections[t]),i.up.copy(this._cubeUps[t]),i.lookAt(yp),i.updateMatrixWorld(),r.makeTranslation(-il.x,-il.y,-il.z),sy.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(sy)}},dD=class extends bh{constructor(e,t,i=0,r=1){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=r,this.shadow=new cD}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},uD=class extends sg{constructor(){super(new ld(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},pD=class extends bh{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(_t.DefaultUp),this.updateMatrix(),this.target=new _t,this.shadow=new uD}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},fD=class extends ke{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}clone(){return new this.constructor().copy(this)}toJSON(){let e=super.toJSON(this);return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}},pw=class extends rg{constructor(e){super(e)}load(e,t,i,r){let s=this,n=new Lf(s.manager);n.setPath(s.path),n.setRequestHeader(s.requestHeader),n.setWithCredentials(s.withCredentials),n.load(e,function(a){try{t(s.parse(JSON.parse(a)))}catch(o){r?r(o):console.error(o),s.manager.itemError(e)}},i,r)}parse(e){let t={},i={};function r(c,d){if(t[d]!==void 0)return t[d];let p=c.interleavedBuffers[d],m=s(c,p.buffer),g=Rh(p.type,m),f=new bP(g,p.stride);return f.uuid=p.uuid,t[d]=f,f}function s(c,d){if(i[d]!==void 0)return i[d];let p=c.arrayBuffers[d],m=new Uint32Array(p).buffer;return i[d]=m,m}let n=e.isInstancedBufferGeometry?new fD:new ke,a=e.data.index;if(a!==void 0){let c=Rh(a.type,a.array);n.setIndex(new Qe(c,1))}let o=e.data.attributes;for(let c in o){let d=o[c],p;if(d.isInterleavedBufferAttribute){let m=r(e.data,d.data);p=new Pf(m,d.itemSize,d.offset,d.normalized)}else{let m=Rh(d.type,d.array),g=d.isInstancedBufferAttribute?wP:Qe;p=new g(m,d.itemSize,d.normalized)}d.name!==void 0&&(p.name=d.name),d.usage!==void 0&&p.setUsage(d.usage),d.updateRange!==void 0&&(p.updateRange.offset=d.updateRange.offset,p.updateRange.count=d.updateRange.count),n.setAttribute(c,p)}let l=e.data.morphAttributes;if(l)for(let c in l){let d=l[c],p=[];for(let m=0,g=d.length;m<g;m++){let f=d[m],v;if(f.isInterleavedBufferAttribute){let y=r(e.data,f.data);v=new Pf(y,f.itemSize,f.offset,f.normalized)}else{let y=Rh(f.type,f.array);v=new Qe(y,f.itemSize,f.normalized)}f.name!==void 0&&(v.name=f.name),p.push(v)}n.morphAttributes[c]=p}e.data.morphTargetsRelative&&(n.morphTargetsRelative=!0);let h=e.data.groups||e.data.drawcalls||e.data.offsets;if(h!==void 0)for(let c=0,d=h.length;c!==d;++c){let p=h[c];n.addGroup(p.start,p.count,p.materialIndex)}let u=e.data.boundingSphere;if(u!==void 0){let c=new M;u.center!==void 0&&c.fromArray(u.center),n.boundingSphere=new pr(c,u.radius)}return e.name&&(n.name=e.name),e.userData&&(n.userData=e.userData),n}},mD=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=ny(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=ny();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function ny(){return(typeof performance>"u"?Date:performance).now()}var ng="\\[\\]\\.:\\/",gD=new RegExp("["+ng+"]","g"),ag="[^"+ng+"]",vD="[^"+ng.replace("\\.","")+"]",yD=/((?:WC+[\/:])*)/.source.replace("WC",ag),xD=/(WCOD+)?/.source.replace("WCOD",vD),bD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",ag),wD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",ag),_D=new RegExp("^"+yD+xD+bD+wD+"$"),SD=["material","materials","bones"],AD=class{constructor(e,t,i){let r=i||yt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},yt=class{constructor(e,t,i){this.path=t,this.parsedPath=i||yt.parseTrackName(t),this.node=yt.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new yt.Composite(e,t,i):new yt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(gD,"")}static parseTrackName(e){let t=_D.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=i.nodeName.substring(r+1);SD.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let n=0;n<s.length;n++){let a=s[n];if(a.name===t||a.uuid===t)return a;let o=i(a.children);if(o)return o}return null},r=i(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)e[t++]=i[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)i[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)i[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let i=this.resolvedProperty;for(let r=0,s=i.length;r!==s;++r)i[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,i=t.objectName,r=t.propertyName,s=t.propertyIndex;if(e||(e=yt.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(i){let l=t.objectIndex;switch(i){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let h=0;h<e.length;h++)if(e[h].name===l){l=h;break}break;default:if(e[i]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[i]}if(l!==void 0){if(e[l]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[l]}}let n=e[r];if(n===void 0){let l=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+l+"."+r+" but it wasn't found.",e);return}let a=this.Versioning.None;this.targetObject=e,e.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:e.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let o=this.BindingType.Direct;if(s!==void 0){if(r==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}o=this.BindingType.ArrayElement,this.resolvedProperty=n,this.propertyIndex=s}else n.fromArray!==void 0&&n.toArray!==void 0?(o=this.BindingType.HasFromToArray,this.resolvedProperty=n):Array.isArray(n)?(o=this.BindingType.EntireArray,this.resolvedProperty=n):this.propertyName=r;this.getValue=this.GetterByBindingType[o],this.setValue=this.SetterByBindingTypeAndVersioning[o][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};yt.Composite=AD;yt.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};yt.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};yt.prototype.GetterByBindingType=[yt.prototype._getValue_direct,yt.prototype._getValue_array,yt.prototype._getValue_arrayElement,yt.prototype._getValue_toArray];yt.prototype.SetterByBindingTypeAndVersioning=[[yt.prototype._setValue_direct,yt.prototype._setValue_direct_setNeedsUpdate,yt.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_array,yt.prototype._setValue_array_setNeedsUpdate,yt.prototype._setValue_array_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_arrayElement,yt.prototype._setValue_arrayElement_setNeedsUpdate,yt.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_fromArray,yt.prototype._setValue_fromArray_setNeedsUpdate,yt.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Oe=class{constructor(e){typeof e=="string"&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}clone(){return new Oe(this.value.clone===void 0?this.value:this.value.clone())}},fw=class{constructor(e,t,i=0,r=1/0){this.ray=new Do(e,t),this.near=i,this.far=r,this.camera=null,this.layers=new Xm,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,i=[]){return If(e,this,i,t),i.sort(ay),i}intersectObjects(e,t=!0,i=[]){for(let r=0,s=e.length;r<s;r++)If(e[r],this,i,t);return i.sort(ay),i}};function ay(e,t){return e.distance-t.distance}function If(e,t,i,r){if(e.layers.test(t.layers)&&e.raycast(t,i),r===!0){let s=e.children;for(let n=0,a=s.length;n<a;n++)If(s[n],t,i,!0)}}var oy=class{constructor(e=1,t=0,i=0){return this.radius=e,this.phi=t,this.theta=i,this}set(e,t,i){return this.radius=e,this.phi=t,this.theta=i,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,i){return this.radius=Math.sqrt(e*e+t*t+i*i),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,i),this.phi=Math.acos(qt(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}},ly=new H,MD=class{constructor(e=new H(1/0,1/0),t=new H(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let i=ly.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(i),this.max.copy(e).add(i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return ly.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},hy=new M,ac=new M,cr=class{constructor(e=new M,t=new M){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){hy.subVectors(e,this.start),ac.subVectors(this.end,this.start);let i=ac.dot(ac),r=ac.dot(hy)/i;return t&&(r=qt(r,0,1)),r}closestPointToPoint(e,t,i){let r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},cy=new M,ED=class extends _t{constructor(e,t){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;let i=new ke,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let n=0,a=1,o=32;n<o;n++,a++){let l=n/o*Math.PI*2,h=a/o*Math.PI*2;r.push(Math.cos(l),Math.sin(l),1,Math.cos(h),Math.sin(h),1)}i.setAttribute("position",new Ee(r,3));let s=new bn({fog:!1,toneMapped:!1});this.cone=new vh(i,s),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateMatrixWorld();let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),cy.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(cy),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}},CD=class extends Xi{constructor(e,t,i){let r=new tg(t,4,2),s=new gh({wireframe:!0,fog:!1,toneMapped:!1});super(r,s),this.light=e,this.light.updateMatrixWorld(),this.color=i,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}},dy=new M,oc=new M,uy=new M,TD=class extends _t{constructor(e,t,i){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,t===void 0&&(t=1);let r=new ke;r.setAttribute("position",new Ee([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let s=new bn({fog:!1,toneMapped:!1});this.lightPlane=new hd(r,s),this.add(this.lightPlane),r=new ke,r.setAttribute("position",new Ee([0,0,0,0,0,1],3)),this.targetLine=new hd(r,s),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){dy.setFromMatrixPosition(this.light.matrixWorld),oc.setFromMatrixPosition(this.light.target.matrixWorld),uy.subVectors(oc,dy),this.lightPlane.lookAt(oc),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(oc),this.targetLine.scale.z=uy.length()}},lc=new M,Dt=new Lo,ud=class extends vh{constructor(e){let t=new ke,i=new bn({color:16777215,vertexColors:!0,toneMapped:!1}),r=[],s=[],n={};a("n1","n2"),a("n2","n4"),a("n4","n3"),a("n3","n1"),a("f1","f2"),a("f2","f4"),a("f4","f3"),a("f3","f1"),a("n1","f1"),a("n2","f2"),a("n3","f3"),a("n4","f4"),a("p","n1"),a("p","n2"),a("p","n3"),a("p","n4"),a("u1","u2"),a("u2","u3"),a("u3","u1"),a("c","t"),a("p","c"),a("cn1","cn2"),a("cn3","cn4"),a("cf1","cf2"),a("cf3","cf4");function a(p,m){o(p),o(m)}function o(p){r.push(0,0,0),s.push(0,0,0),n[p]===void 0&&(n[p]=[]),n[p].push(r.length/3-1)}t.setAttribute("position",new Ee(r,3)),t.setAttribute("color",new Ee(s,3)),super(t,i),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=n,this.update();let l=new Ue(16755200),h=new Ue(16711680),u=new Ue(43775),c=new Ue(16777215),d=new Ue(3355443);this.setColors(l,h,u,c,d)}setColors(e,t,i,r,s){let n=this.geometry.getAttribute("color");n.setXYZ(0,e.r,e.g,e.b),n.setXYZ(1,e.r,e.g,e.b),n.setXYZ(2,e.r,e.g,e.b),n.setXYZ(3,e.r,e.g,e.b),n.setXYZ(4,e.r,e.g,e.b),n.setXYZ(5,e.r,e.g,e.b),n.setXYZ(6,e.r,e.g,e.b),n.setXYZ(7,e.r,e.g,e.b),n.setXYZ(8,e.r,e.g,e.b),n.setXYZ(9,e.r,e.g,e.b),n.setXYZ(10,e.r,e.g,e.b),n.setXYZ(11,e.r,e.g,e.b),n.setXYZ(12,e.r,e.g,e.b),n.setXYZ(13,e.r,e.g,e.b),n.setXYZ(14,e.r,e.g,e.b),n.setXYZ(15,e.r,e.g,e.b),n.setXYZ(16,e.r,e.g,e.b),n.setXYZ(17,e.r,e.g,e.b),n.setXYZ(18,e.r,e.g,e.b),n.setXYZ(19,e.r,e.g,e.b),n.setXYZ(20,e.r,e.g,e.b),n.setXYZ(21,e.r,e.g,e.b),n.setXYZ(22,e.r,e.g,e.b),n.setXYZ(23,e.r,e.g,e.b),n.setXYZ(24,t.r,t.g,t.b),n.setXYZ(25,t.r,t.g,t.b),n.setXYZ(26,t.r,t.g,t.b),n.setXYZ(27,t.r,t.g,t.b),n.setXYZ(28,t.r,t.g,t.b),n.setXYZ(29,t.r,t.g,t.b),n.setXYZ(30,t.r,t.g,t.b),n.setXYZ(31,t.r,t.g,t.b),n.setXYZ(32,i.r,i.g,i.b),n.setXYZ(33,i.r,i.g,i.b),n.setXYZ(34,i.r,i.g,i.b),n.setXYZ(35,i.r,i.g,i.b),n.setXYZ(36,i.r,i.g,i.b),n.setXYZ(37,i.r,i.g,i.b),n.setXYZ(38,r.r,r.g,r.b),n.setXYZ(39,r.r,r.g,r.b),n.setXYZ(40,s.r,s.g,s.b),n.setXYZ(41,s.r,s.g,s.b),n.setXYZ(42,s.r,s.g,s.b),n.setXYZ(43,s.r,s.g,s.b),n.setXYZ(44,s.r,s.g,s.b),n.setXYZ(45,s.r,s.g,s.b),n.setXYZ(46,s.r,s.g,s.b),n.setXYZ(47,s.r,s.g,s.b),n.setXYZ(48,s.r,s.g,s.b),n.setXYZ(49,s.r,s.g,s.b),n.needsUpdate=!0}update(){let e=this.geometry,t=this.pointMap,i=1,r=1;Dt.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Nt("c",t,e,Dt,0,0,-1),Nt("t",t,e,Dt,0,0,1),Nt("n1",t,e,Dt,-i,-r,-1),Nt("n2",t,e,Dt,i,-r,-1),Nt("n3",t,e,Dt,-i,r,-1),Nt("n4",t,e,Dt,i,r,-1),Nt("f1",t,e,Dt,-i,-r,1),Nt("f2",t,e,Dt,i,-r,1),Nt("f3",t,e,Dt,-i,r,1),Nt("f4",t,e,Dt,i,r,1),Nt("u1",t,e,Dt,i*.7,r*1.1,-1),Nt("u2",t,e,Dt,-i*.7,r*1.1,-1),Nt("u3",t,e,Dt,0,r*2,-1),Nt("cf1",t,e,Dt,-i,0,1),Nt("cf2",t,e,Dt,i,0,1),Nt("cf3",t,e,Dt,0,-r,1),Nt("cf4",t,e,Dt,0,r,1),Nt("cn1",t,e,Dt,-i,0,-1),Nt("cn2",t,e,Dt,i,0,-1),Nt("cn3",t,e,Dt,0,-r,-1),Nt("cn4",t,e,Dt,0,r,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Nt(e,t,i,r,s,n,a){lc.set(s,n,a).unproject(r);let o=t[e];if(o!==void 0){let l=i.getAttribute("position");for(let h=0,u=o.length;h<u;h++)l.setXYZ(o[h],lc.x,lc.y,lc.z)}}var pd=class extends vh{constructor(e,t=16776960){let i=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),r=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],s=new ke;s.setIndex(new Qe(i,1)),s.setAttribute("position",new Ee(r,3)),super(s,new bn({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){let t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}},PD=class extends vh{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new ke;r.setAttribute("position",new Ee(t,3)),r.setAttribute("color",new Ee(i,3));let s=new bn({vertexColors:!0,toneMapped:!1});super(r,s),this.type="AxesHelper"}setColors(e,t,i){let r=new Ue,s=this.geometry.attributes.color.array;return r.set(e),r.toArray(s,0),r.toArray(s,3),r.set(t),r.toArray(s,6),r.toArray(s,9),r.set(i),r.toArray(s,12),r.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},{floatView:_V,uint32View:SV,baseTable:AV,shiftTable:MV,mantissaTable:EV,exponentTable:CV,offsetTable:TV}=DD();function DD(){let e=new ArrayBuffer(4),t=new Float32Array(e),i=new Uint32Array(e),r=new Uint32Array(512),s=new Uint32Array(512);for(let l=0;l<256;++l){let h=l-127;h<-27?(r[l]=0,r[l|256]=32768,s[l]=24,s[l|256]=24):h<-14?(r[l]=1024>>-h-14,r[l|256]=1024>>-h-14|32768,s[l]=-h-1,s[l|256]=-h-1):h<=15?(r[l]=h+15<<10,r[l|256]=h+15<<10|32768,s[l]=13,s[l|256]=13):h<128?(r[l]=31744,r[l|256]=64512,s[l]=24,s[l|256]=24):(r[l]=31744,r[l|256]=64512,s[l]=13,s[l|256]=13)}let n=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let h=l<<13,u=0;for(;(h&8388608)===0;)h<<=1,u-=8388608;h&=-8388609,u+=947912704,n[l]=h|u}for(let l=1024;l<2048;++l)n[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:t,uint32View:i,baseTable:r,shiftTable:s,mantissaTable:n,exponentTable:a,offsetTable:o}}var OD=class extends Ut{constructor(e,t,i){console.error('THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the "samples" property to greater 0 to enable multisampling.'),super(e,t,i),this.samples=4}};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:uh}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=uh);var rl=".",og=Symbol("target"),mw=Symbol("unsubscribe");function Bf(e){return e instanceof Date||e instanceof Set||e instanceof Map||e instanceof WeakSet||e instanceof WeakMap||ArrayBuffer.isView(e)}function LD(e){return(typeof e=="object"?e===null:typeof e!="function")||e instanceof RegExp}var Qr=Array.isArray;function lg(e){return typeof e=="symbol"}var ID={after:(e,t)=>Qr(e)?e.slice(t.length):t===""?e:e.slice(t.length+1),concat:(e,t)=>Qr(e)?(e=[...e],t&&e.push(t),e):t&&t.toString!==void 0?(e!==""&&(e+=rl),lg(t)?e+t.toString():e+t):e,initial:e=>{if(Qr(e))return e.slice(0,-1);if(e==="")return e;let t=e.lastIndexOf(rl);return t===-1?"":e.slice(0,t)},last:e=>{if(Qr(e))return e[e.length-1]||"";if(e==="")return e;let t=e.lastIndexOf(rl);return t===-1?e:e.slice(t+1)},walk:(e,t)=>{if(Qr(e))for(let i of e)t(i);else if(e!==""){let i=0,r=e.indexOf(rl);if(r===-1)t(e);else for(;i<e.length;)r===-1&&(r=e.length),t(e.slice(i,r)),i=r+1,r=e.indexOf(rl,i)}},get(e,t){return this.walk(t,i=>{e&&(e=e[i])}),e}},rr=ID;function BD(e){return typeof e=="object"&&typeof e.next=="function"}function RD(e,t,i,r,s){let n=e.next;if(t.name==="entries")e.next=function(){let a=n.call(this);return a.done===!1&&(a.value[0]=s(a.value[0],t,a.value[0],r),a.value[1]=s(a.value[1],t,a.value[0],r)),a};else if(t.name==="values"){let a=i[og].keys();e.next=function(){let o=n.call(this);return o.done===!1&&(o.value=s(o.value,t,a.next().value,r)),o}}else e.next=function(){let a=n.call(this);return a.done===!1&&(a.value=s(a.value,t,a.value,r)),a};return e}function py(e,t,i){return e.isUnsubscribed||t.ignoreSymbols&&lg(i)||t.ignoreUnderscores&&i.charAt(0)==="_"||"ignoreKeys"in t&&t.ignoreKeys.includes(i)}var ND=class{constructor(e){this._equals=e,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return this._descriptorCache===void 0&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(e){let t=this._getDescriptorCache(),i=t.get(e);return i===void 0&&(i={},t.set(e,i)),i}_getOwnPropertyDescriptor(e,t){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(e,t);let i=this._getProperties(e),r=i[t];return r===void 0&&(r=Reflect.getOwnPropertyDescriptor(e,t),i[t]=r),r}getProxy(e,t,i,r){if(this.isUnsubscribed)return e;let s=e[r],n=s||e;this._pathCache.set(n,t);let a=this._proxyCache.get(n);return a===void 0&&(a=s===void 0?new Proxy(e,i):e,this._proxyCache.set(n,a)),a}getPath(e){return this.isUnsubscribed?void 0:this._pathCache.get(e)}isDetached(e,t){return!Object.is(e,rr.get(t,this.getPath(e)))}defineProperty(e,t,i){return Reflect.defineProperty(e,t,i)?(this.isUnsubscribed||(this._getProperties(e)[t]=i),!0):!1}setProperty(e,t,i,r,s){if(!this._equals(s,i)||!(t in e)){let n=this._getOwnPropertyDescriptor(e,t);return n!==void 0&&"set"in n?Reflect.set(e,t,i,r):Reflect.set(e,t,i)}return!0}deleteProperty(e,t,i){if(Reflect.deleteProperty(e,t)){if(!this.isUnsubscribed){let r=this._getDescriptorCache().get(e);r&&(delete r[t],this._pathCache.delete(i))}return!0}return!1}isSameDescriptor(e,t,i){let r=this._getOwnPropertyDescriptor(t,i);return e!==void 0&&r!==void 0&&Object.is(e.value,r.value)&&(e.writable||!1)===(r.writable||!1)&&(e.enumerable||!1)===(r.enumerable||!1)&&(e.configurable||!1)===(r.configurable||!1)&&e.get===r.get&&e.set===r.set}isGetInvariant(e,t){let i=this._getOwnPropertyDescriptor(e,t);return i!==void 0&&i.configurable!==!0&&i.writable!==!0}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function Rf(e){return toString.call(e)==="[object Object]"}function hc(){return!0}function Na(e,t){return e.length!==t.length||e.some((i,r)=>t[r]!==i)}var gw=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),zD=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),vw={push:hc,pop:hc,shift:hc,unshift:hc,copyWithin:Na,reverse:Na,sort:Na,splice:Na,flat:Na,fill:Na},FD=new Set([...gw,...zD,...Object.keys(vw)]);function cc(e,t){if(e.size!==t.size)return!0;for(let i of e)if(!t.has(i))return!0;return!1}var yw=["keys","values","entries"],xw=new Set(["has","toString"]),bw={add:cc,clear:cc,delete:cc,forEach:cc},UD=new Set([...xw,...Object.keys(bw),...yw]);function dc(e,t){if(e.size!==t.size)return!0;let i;for(let[r,s]of e)if(i=t.get(r),i!==s||i===void 0&&!t.has(r))return!0;return!1}var kD=new Set([...xw,"get"]),ww={set:dc,clear:dc,delete:dc,forEach:dc},jD=new Set([...kD,...Object.keys(ww),...yw]),yn=class{constructor(e,t,i,r){this._path=t,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=r,this._changes=r?[]:null,this.clone=t===void 0?e:this._shallowClone(e)}static isHandledMethod(e){return gw.has(e)}_shallowClone(e){let t=e;if(Rf(e))t={...e};else if(Qr(e))t=[...e];else if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set([...e].map(i=>this._shallowClone(i)));else if(e instanceof Map){t=new Map;for(let[i,r]of e.entries())t.set(i,this._shallowClone(r))}return this._clonedCache.add(t),t}preferredThisArg(e,t,i,r){return e?(Qr(r)?this._onIsChanged=vw[t]:r instanceof Set?this._onIsChanged=bw[t]:r instanceof Map&&(this._onIsChanged=ww[t]),r):i}update(e,t,i){let r=rr.after(e,this._path);if(t!=="length"){let s=this.clone;rr.walk(r,n=>{s&&s[n]&&(this._clonedCache.has(s[n])||(s[n]=this._shallowClone(s[n])),s=s[n])}),this._hasOnValidate&&this._changes.push({path:r,property:t,previous:i}),s&&s[t]&&(s[t]=i)}this._isChanged=!0}undo(e){let t;for(let i=this._changes.length-1;i!==-1;i--)t=this._changes[i],rr.get(e,t.path)[t.property]=t.previous}isChanged(e){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,e)}},fy=class extends yn{static isHandledMethod(e){return FD.has(e)}},HD=class extends yn{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}},my=class extends yn{static isHandledMethod(e){return UD.has(e)}undo(e){for(let t of this.clone)e.add(t);for(let t of e)this.clone.has(t)||e.delete(t)}},gy=class extends yn{static isHandledMethod(e){return jD.has(e)}undo(e){for(let[t,i]of this.clone.entries())e.set(t,i);for(let t of e.keys())this.clone.has(t)||e.delete(t)}},GD=class extends yn{constructor(e,t,i,r){super(void 0,t,i,r),this._arg1=i[0],this._weakValue=e.has(this._arg1)}isChanged(e){return this._weakValue!==e.has(this._arg1)}undo(e){this._weakValue&&!e.has(this._arg1)?e.add(this._arg1):e.delete(this._arg1)}},VD=class extends yn{constructor(e,t,i,r){super(void 0,t,i,r),this._weakKey=i[0],this._weakHas=e.has(this._weakKey),this._weakValue=e.get(this._weakKey)}isChanged(e){return this._weakValue!==e.get(this._weakKey)}undo(e){let t=e.has(this._weakKey);this._weakHas&&!t?e.set(this._weakKey,this._weakValue):!this._weakHas&&t?e.delete(this._weakKey):this._weakValue!==e.get(this._weakKey)&&e.set(this._weakKey,this._weakValue)}},Xa=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return Rf(e)||Qr(e)||Bf(e)}static isHandledMethod(e,t){return Rf(e)?yn.isHandledMethod(t):Qr(e)?fy.isHandledMethod(t):e instanceof Set?my.isHandledMethod(t):e instanceof Map?gy.isHandledMethod(t):Bf(e)}get isCloning(){return this._stack.length>0}start(e,t,i){let r=yn;Qr(e)?r=fy:e instanceof Date?r=HD:e instanceof Set?r=my:e instanceof Map?r=gy:e instanceof WeakSet?r=GD:e instanceof WeakMap&&(r=VD),this._stack.push(new r(e,t,i,this._hasOnValidate))}update(e,t,i){this._stack[this._stack.length-1].update(e,t,i)}preferredThisArg(e,t,i){let{name:r}=e,s=Xa.isHandledMethod(i,r);return this._stack[this._stack.length-1].preferredThisArg(s,r,t,i)}isChanged(e,t,i){return this._stack[this._stack.length-1].isChanged(e,t,i)}undo(e){this._previousClone!==void 0&&this._previousClone.undo(e)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}},WD={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},hg=(e,t,i={})=>{i={...WD,...i};let r=Symbol("ProxyTarget"),{equals:s,isShallow:n,ignoreDetached:a,details:o}=i,l=new ND(s),h=typeof i.onValidate=="function",u=new Xa(h),c=(y,b,x,w,_)=>!h||u.isCloning||i.onValidate(rr.concat(l.getPath(y),b),x,w,_)===!0,d=(y,b,x,w)=>{!py(l,i,b)&&!(a&&l.isDetached(y,e))&&p(l.getPath(y),b,x,w)},p=(y,b,x,w,_)=>{u.isCloning?u.update(y,b,w):t(rr.concat(y,b),x,w,_)},m=y=>y&&(y[r]||y),g=(y,b,x,w)=>LD(y)||x==="constructor"||n&&!Xa.isHandledMethod(b,x)||py(l,i,x)||l.isGetInvariant(b,x)||a&&l.isDetached(b,e)?y:(w===void 0&&(w=l.getPath(b)),l.getProxy(y,rr.concat(w,x),f,r)),f={get(y,b,x){if(lg(b)){if(b===r||b===og)return y;if(b===mw&&!l.isUnsubscribed&&l.getPath(y).length===0)return l.unsubscribe(),y}let w=Bf(y)?Reflect.get(y,b):Reflect.get(y,b,x);return g(w,y,b)},set(y,b,x,w){x=m(x);let _=y[r]||y,A=_[b];if(s(A,x)&&b in y)return!0;let S=c(y,b,x,A);return S&&l.setProperty(_,b,x,w,A)?(d(y,b,y[b],A),!0):!S},defineProperty(y,b,x){if(!l.isSameDescriptor(x,y,b)){let w=y[b];c(y,b,x.value,w)&&l.defineProperty(y,b,x,w)&&d(y,b,x.value,w)}return!0},deleteProperty(y,b){if(!Reflect.has(y,b))return!0;let x=Reflect.get(y,b),w=c(y,b,void 0,x);return w&&l.deleteProperty(y,b,x)?(d(y,b,void 0,x),!0):!w},apply(y,b,x){let w=b[r]||b;if(l.isUnsubscribed)return Reflect.apply(y,w,x);if((o===!1||o!==!0&&!o.includes(y.name))&&Xa.isHandledType(w)){let _=rr.initial(l.getPath(y)),A=Xa.isHandledMethod(w,y.name);u.start(w,_,x);let S=Reflect.apply(y,u.preferredThisArg(y,b,w),A?x.map(T=>m(T)):x),E=u.isChanged(w,s),C=u.stop();if(Xa.isHandledType(S)&&A&&(b instanceof Map&&y.name==="get"&&(_=rr.concat(_,x[0])),S=l.getProxy(S,_,f)),E){let T={name:y.name,args:x,result:S},P=u.isCloning?rr.initial(_):_,R=u.isCloning?rr.last(_):"";c(rr.get(e,P),R,w,C,T)?p(P,R,w,C,T):u.undo(w)}return(b instanceof Map||b instanceof Set)&&BD(S)?RD(S,y,b,_,g):S}return Reflect.apply(y,b,x)}},v=l.getProxy(e,i.pathAsArray?[]:"",f);return t=t.bind(v),h&&(i.onValidate=i.onValidate.bind(v)),v};hg.target=e=>e&&e[og]||e;hg.unsubscribe=e=>e[mw]||e;var vy=hg,XD=typeof global=="object"&&global&&global.Object===Object&&global,_w=XD,YD=typeof self=="object"&&self&&self.Object===Object&&self,qD=_w||YD||Function("return this")(),Lr=qD,QD=Lr.Symbol,fr=QD,Sw=Object.prototype,ZD=Sw.hasOwnProperty,KD=Sw.toString,sl=fr?fr.toStringTag:void 0;function JD(e){var t=ZD.call(e,sl),i=e[sl];try{e[sl]=void 0;var r=!0}catch{}var s=KD.call(e);return r&&(t?e[sl]=i:delete e[sl]),s}var $D=JD,eO=Object.prototype,tO=eO.toString;function iO(e){return tO.call(e)}var rO=iO,sO="[object Null]",nO="[object Undefined]",yy=fr?fr.toStringTag:void 0;function aO(e){return e==null?e===void 0?nO:sO:yy&&yy in Object(e)?$D(e):rO(e)}var ha=aO;function oO(e){return e!=null&&typeof e=="object"}var Ds=oO,lO="[object Symbol]";function hO(e){return typeof e=="symbol"||Ds(e)&&ha(e)==lO}var su=hO;function cO(e,t){for(var i=-1,r=e==null?0:e.length,s=Array(r);++i<r;)s[i]=t(e[i],i,e);return s}var Aw=cO,dO=Array.isArray,ls=dO,uO=1/0,xy=fr?fr.prototype:void 0,by=xy?xy.toString:void 0;function Mw(e){if(typeof e=="string")return e;if(ls(e))return Aw(e,Mw)+"";if(su(e))return by?by.call(e):"";var t=e+"";return t=="0"&&1/e==-uO?"-0":t}var pO=Mw,fO=/\s/;function mO(e){for(var t=e.length;t--&&fO.test(e.charAt(t)););return t}var gO=mO,vO=/^\s+/;function yO(e){return e&&e.slice(0,gO(e)+1).replace(vO,"")}var xO=yO;function bO(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var hs=bO,wy=0/0,wO=/^[-+]0x[0-9a-f]+$/i,_O=/^0b[01]+$/i,SO=/^0o[0-7]+$/i,AO=parseInt;function MO(e){if(typeof e=="number")return e;if(su(e))return wy;if(hs(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=hs(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=xO(e);var i=_O.test(e);return i||SO.test(e)?AO(e.slice(2),i?2:8):wO.test(e)?wy:+e}var _y=MO;function EO(e){return e}var CO=EO,TO="[object AsyncFunction]",PO="[object Function]",DO="[object GeneratorFunction]",OO="[object Proxy]";function LO(e){if(!hs(e))return!1;var t=ha(e);return t==PO||t==DO||t==TO||t==OO}var Ew=LO,IO=Lr["__core-js_shared__"],xp=IO,Sy=function(){var e=/[^.]+$/.exec(xp&&xp.keys&&xp.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function BO(e){return!!Sy&&Sy in e}var RO=BO,NO=Function.prototype,zO=NO.toString;function FO(e){if(e!=null){try{return zO.call(e)}catch{}try{return e+""}catch{}}return""}var ca=FO,UO=/[\\^$.*+?()[\]{}|]/g,kO=/^\[object .+?Constructor\]$/,jO=Function.prototype,HO=Object.prototype,GO=jO.toString,VO=HO.hasOwnProperty,WO=RegExp("^"+GO.call(VO).replace(UO,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function XO(e){if(!hs(e)||RO(e))return!1;var t=Ew(e)?WO:kO;return t.test(ca(e))}var YO=XO;function qO(e,t){return e?.[t]}var QO=qO;function ZO(e,t){var i=QO(e,t);return YO(i)?i:void 0}var da=ZO,KO=da(Lr,"WeakMap"),Nf=KO,Ay=Object.create,JO=function(){function e(){}return function(t){if(!hs(t))return{};if(Ay)return Ay(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}(),$O=JO;function eL(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}var tL=eL;function iL(e,t){var i=-1,r=e.length;for(t||(t=Array(r));++i<r;)t[i]=e[i];return t}var rL=iL,sL=800,nL=16,aL=Date.now;function oL(e){var t=0,i=0;return function(){var r=aL(),s=nL-(r-i);if(i=r,s>0){if(++t>=sL)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var lL=oL;function hL(e){return function(){return e}}var cL=hL,dL=function(){try{var e=da(Object,"defineProperty");return e({},"",{}),e}catch{}}(),fd=dL,uL=fd?function(e,t){return fd(e,"toString",{configurable:!0,enumerable:!1,value:cL(t),writable:!0})}:CO,pL=uL,fL=lL(pL),mL=fL;function gL(e,t){for(var i=-1,r=e==null?0:e.length;++i<r&&t(e[i],i,e)!==!1;);return e}var vL=gL,yL=9007199254740991,xL=/^(?:0|[1-9]\d*)$/;function bL(e,t){var i=typeof e;return t=t??yL,!!t&&(i=="number"||i!="symbol"&&xL.test(e))&&e>-1&&e%1==0&&e<t}var cg=bL;function wL(e,t,i){t=="__proto__"&&fd?fd(e,t,{configurable:!0,enumerable:!0,value:i,writable:!0}):e[t]=i}var Cw=wL;function _L(e,t){return e===t||e!==e&&t!==t}var dg=_L,SL=Object.prototype,AL=SL.hasOwnProperty;function ML(e,t,i){var r=e[t];(!(AL.call(e,t)&&dg(r,i))||i===void 0&&!(t in e))&&Cw(e,t,i)}var ug=ML;function EL(e,t,i,r){var s=!i;i||(i={});for(var n=-1,a=t.length;++n<a;){var o=t[n],l=r?r(i[o],e[o],o,i,e):void 0;l===void 0&&(l=e[o]),s?Cw(i,o,l):ug(i,o,l)}return i}var wh=EL,My=Math.max;function CL(e,t,i){return t=My(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,n=My(r.length-t,0),a=Array(n);++s<n;)a[s]=r[t+s];s=-1;for(var o=Array(t+1);++s<t;)o[s]=r[s];return o[t]=i(a),tL(e,this,o)}}var TL=CL,PL=9007199254740991;function DL(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=PL}var pg=DL;function OL(e){return e!=null&&pg(e.length)&&!Ew(e)}var Tw=OL,LL=Object.prototype;function IL(e){var t=e&&e.constructor,i=typeof t=="function"&&t.prototype||LL;return e===i}var fg=IL;function BL(e,t){for(var i=-1,r=Array(e);++i<e;)r[i]=t(i);return r}var RL=BL,NL="[object Arguments]";function zL(e){return Ds(e)&&ha(e)==NL}var Ey=zL,Pw=Object.prototype,FL=Pw.hasOwnProperty,UL=Pw.propertyIsEnumerable,kL=Ey(function(){return arguments}())?Ey:function(e){return Ds(e)&&FL.call(e,"callee")&&!UL.call(e,"callee")},mg=kL;function jL(){return!1}var HL=jL,Dw=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cy=Dw&&typeof module=="object"&&module&&!module.nodeType&&module,GL=Cy&&Cy.exports===Dw,Ty=GL?Lr.Buffer:void 0,VL=Ty?Ty.isBuffer:void 0,WL=VL||HL,md=WL,XL="[object Arguments]",YL="[object Array]",qL="[object Boolean]",QL="[object Date]",ZL="[object Error]",KL="[object Function]",JL="[object Map]",$L="[object Number]",e4="[object Object]",t4="[object RegExp]",i4="[object Set]",r4="[object String]",s4="[object WeakMap]",n4="[object ArrayBuffer]",a4="[object DataView]",o4="[object Float32Array]",l4="[object Float64Array]",h4="[object Int8Array]",c4="[object Int16Array]",d4="[object Int32Array]",u4="[object Uint8Array]",p4="[object Uint8ClampedArray]",f4="[object Uint16Array]",m4="[object Uint32Array]",At={};At[o4]=At[l4]=At[h4]=At[c4]=At[d4]=At[u4]=At[p4]=At[f4]=At[m4]=!0;At[XL]=At[YL]=At[n4]=At[qL]=At[a4]=At[QL]=At[ZL]=At[KL]=At[JL]=At[$L]=At[e4]=At[t4]=At[i4]=At[r4]=At[s4]=!1;function g4(e){return Ds(e)&&pg(e.length)&&!!At[ha(e)]}var v4=g4;function y4(e){return function(t){return e(t)}}var gg=y4,Ow=typeof exports=="object"&&exports&&!exports.nodeType&&exports,jl=Ow&&typeof module=="object"&&module&&!module.nodeType&&module,x4=jl&&jl.exports===Ow,bp=x4&&_w.process,b4=function(){try{var e=jl&&jl.require&&jl.require("util").types;return e||bp&&bp.binding&&bp.binding("util")}catch{}}(),_o=b4,Py=_o&&_o.isTypedArray,w4=Py?gg(Py):v4,Lw=w4,_4=Object.prototype,S4=_4.hasOwnProperty;function A4(e,t){var i=ls(e),r=!i&&mg(e),s=!i&&!r&&md(e),n=!i&&!r&&!s&&Lw(e),a=i||r||s||n,o=a?RL(e.length,String):[],l=o.length;for(var h in e)(t||S4.call(e,h))&&!(a&&(h=="length"||s&&(h=="offset"||h=="parent")||n&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||cg(h,l)))&&o.push(h);return o}var Iw=A4;function M4(e,t){return function(i){return e(t(i))}}var Bw=M4,E4=Bw(Object.keys,Object),C4=E4,T4=Object.prototype,P4=T4.hasOwnProperty;function D4(e){if(!fg(e))return C4(e);var t=[];for(var i in Object(e))P4.call(e,i)&&i!="constructor"&&t.push(i);return t}var O4=D4;function L4(e){return Tw(e)?Iw(e):O4(e)}var vg=L4;function I4(e){var t=[];if(e!=null)for(var i in Object(e))t.push(i);return t}var B4=I4,R4=Object.prototype,N4=R4.hasOwnProperty;function z4(e){if(!hs(e))return B4(e);var t=fg(e),i=[];for(var r in e)r=="constructor"&&(t||!N4.call(e,r))||i.push(r);return i}var F4=z4;function U4(e){return Tw(e)?Iw(e,!0):F4(e)}var yg=U4,k4=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,j4=/^\w*$/;function H4(e,t){if(ls(e))return!1;var i=typeof e;return i=="number"||i=="symbol"||i=="boolean"||e==null||su(e)?!0:j4.test(e)||!k4.test(e)||t!=null&&e in Object(t)}var G4=H4,V4=da(Object,"create"),eh=V4;function W4(){this.__data__=eh?eh(null):{},this.size=0}var X4=W4;function Y4(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var q4=Y4,Q4="__lodash_hash_undefined__",Z4=Object.prototype,K4=Z4.hasOwnProperty;function J4(e){var t=this.__data__;if(eh){var i=t[e];return i===Q4?void 0:i}return K4.call(t,e)?t[e]:void 0}var $4=J4,eI=Object.prototype,tI=eI.hasOwnProperty;function iI(e){var t=this.__data__;return eh?t[e]!==void 0:tI.call(t,e)}var rI=iI,sI="__lodash_hash_undefined__";function nI(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=eh&&t===void 0?sI:t,this}var aI=nI;function Bo(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}Bo.prototype.clear=X4;Bo.prototype.delete=q4;Bo.prototype.get=$4;Bo.prototype.has=rI;Bo.prototype.set=aI;var Dy=Bo;function oI(){this.__data__=[],this.size=0}var lI=oI;function hI(e,t){for(var i=e.length;i--;)if(dg(e[i][0],t))return i;return-1}var nu=hI,cI=Array.prototype,dI=cI.splice;function uI(e){var t=this.__data__,i=nu(t,e);if(i<0)return!1;var r=t.length-1;return i==r?t.pop():dI.call(t,i,1),--this.size,!0}var pI=uI;function fI(e){var t=this.__data__,i=nu(t,e);return i<0?void 0:t[i][1]}var mI=fI;function gI(e){return nu(this.__data__,e)>-1}var vI=gI;function yI(e,t){var i=this.__data__,r=nu(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}var xI=yI;function Ro(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}Ro.prototype.clear=lI;Ro.prototype.delete=pI;Ro.prototype.get=mI;Ro.prototype.has=vI;Ro.prototype.set=xI;var au=Ro,bI=da(Lr,"Map"),th=bI;function wI(){this.size=0,this.__data__={hash:new Dy,map:new(th||au),string:new Dy}}var _I=wI;function SI(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var AI=SI;function MI(e,t){var i=e.__data__;return AI(t)?i[typeof t=="string"?"string":"hash"]:i.map}var ou=MI;function EI(e){var t=ou(this,e).delete(e);return this.size-=t?1:0,t}var CI=EI;function TI(e){return ou(this,e).get(e)}var PI=TI;function DI(e){return ou(this,e).has(e)}var OI=DI;function LI(e,t){var i=ou(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this}var II=LI;function No(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}No.prototype.clear=_I;No.prototype.delete=CI;No.prototype.get=PI;No.prototype.has=OI;No.prototype.set=II;var lu=No,BI="Expected a function";function xg(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(BI);var i=function(){var r=arguments,s=t?t.apply(this,r):r[0],n=i.cache;if(n.has(s))return n.get(s);var a=e.apply(this,r);return i.cache=n.set(s,a)||n,a};return i.cache=new(xg.Cache||lu),i}xg.Cache=lu;var RI=xg,NI=500;function zI(e){var t=RI(e,function(r){return i.size===NI&&i.clear(),r}),i=t.cache;return t}var FI=zI,UI=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,kI=/\\(\\)?/g,jI=FI(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(UI,function(i,r,s,n){t.push(s?n.replace(kI,"$1"):r||i)}),t}),HI=jI;function GI(e){return e==null?"":pO(e)}var VI=GI;function WI(e,t){return ls(e)?e:G4(e,t)?[e]:HI(VI(e))}var zo=WI,XI=1/0;function YI(e){if(typeof e=="string"||su(e))return e;var t=e+"";return t=="0"&&1/e==-XI?"-0":t}var hu=YI;function qI(e,t){t=zo(t,e);for(var i=0,r=t.length;e!=null&&i<r;)e=e[hu(t[i++])];return i&&i==r?e:void 0}var Rw=qI;function QI(e,t){for(var i=-1,r=t.length,s=e.length;++i<r;)e[s+i]=t[i];return e}var bg=QI,Oy=fr?fr.isConcatSpreadable:void 0;function ZI(e){return ls(e)||mg(e)||!!(Oy&&e&&e[Oy])}var KI=ZI;function Nw(e,t,i,r,s){var n=-1,a=e.length;for(i||(i=KI),s||(s=[]);++n<a;){var o=e[n];t>0&&i(o)?t>1?Nw(o,t-1,i,r,s):bg(s,o):r||(s[s.length]=o)}return s}var JI=Nw;function $I(e){var t=e==null?0:e.length;return t?JI(e,1):[]}var eB=$I;function tB(e){return mL(TL(e,void 0,eB),e+"")}var zw=tB,iB=Bw(Object.getPrototypeOf,Object),wg=iB,rB="[object Object]",sB=Function.prototype,nB=Object.prototype,Fw=sB.toString,aB=nB.hasOwnProperty,oB=Fw.call(Object);function lB(e){if(!Ds(e)||ha(e)!=rB)return!1;var t=wg(e);if(t===null)return!0;var i=aB.call(t,"constructor")&&t.constructor;return typeof i=="function"&&i instanceof i&&Fw.call(i)==oB}var hB=lB;function cB(e,t,i){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),i=i>s?s:i,i<0&&(i+=s),s=t>i?0:i-t>>>0,t>>>=0;for(var n=Array(s);++r<s;)n[r]=e[r+t];return n}var dB=cB;function uB(){this.__data__=new au,this.size=0}var pB=uB;function fB(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}var mB=fB;function gB(e){return this.__data__.get(e)}var vB=gB;function yB(e){return this.__data__.has(e)}var xB=yB,bB=200;function wB(e,t){var i=this.__data__;if(i instanceof au){var r=i.__data__;if(!th||r.length<bB-1)return r.push([e,t]),this.size=++i.size,this;i=this.__data__=new lu(r)}return i.set(e,t),this.size=i.size,this}var _B=wB;function Fo(e){var t=this.__data__=new au(e);this.size=t.size}Fo.prototype.clear=pB;Fo.prototype.delete=mB;Fo.prototype.get=vB;Fo.prototype.has=xB;Fo.prototype.set=_B;var qc=Fo;function SB(e,t){return e&&wh(t,vg(t),e)}var AB=SB;function MB(e,t){return e&&wh(t,yg(t),e)}var EB=MB,Uw=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ly=Uw&&typeof module=="object"&&module&&!module.nodeType&&module,CB=Ly&&Ly.exports===Uw,Iy=CB?Lr.Buffer:void 0,By=Iy?Iy.allocUnsafe:void 0;function TB(e,t){if(t)return e.slice();var i=e.length,r=By?By(i):new e.constructor(i);return e.copy(r),r}var PB=TB;function DB(e,t){for(var i=-1,r=e==null?0:e.length,s=0,n=[];++i<r;){var a=e[i];t(a,i,e)&&(n[s++]=a)}return n}var OB=DB;function LB(){return[]}var kw=LB,IB=Object.prototype,BB=IB.propertyIsEnumerable,Ry=Object.getOwnPropertySymbols,RB=Ry?function(e){return e==null?[]:(e=Object(e),OB(Ry(e),function(t){return BB.call(e,t)}))}:kw,_g=RB;function NB(e,t){return wh(e,_g(e),t)}var zB=NB,FB=Object.getOwnPropertySymbols,UB=FB?function(e){for(var t=[];e;)bg(t,_g(e)),e=wg(e);return t}:kw,jw=UB;function kB(e,t){return wh(e,jw(e),t)}var jB=kB;function HB(e,t,i){var r=t(e);return ls(e)?r:bg(r,i(e))}var Hw=HB;function GB(e){return Hw(e,vg,_g)}var zf=GB;function VB(e){return Hw(e,yg,jw)}var Gw=VB,WB=da(Lr,"DataView"),Ff=WB,XB=da(Lr,"Promise"),Uf=XB,YB=da(Lr,"Set"),kf=YB,Ny="[object Map]",qB="[object Object]",zy="[object Promise]",Fy="[object Set]",Uy="[object WeakMap]",ky="[object DataView]",QB=ca(Ff),ZB=ca(th),KB=ca(Uf),JB=ca(kf),$B=ca(Nf),Rn=ha;(Ff&&Rn(new Ff(new ArrayBuffer(1)))!=ky||th&&Rn(new th)!=Ny||Uf&&Rn(Uf.resolve())!=zy||kf&&Rn(new kf)!=Fy||Nf&&Rn(new Nf)!=Uy)&&(Rn=function(e){var t=ha(e),i=t==qB?e.constructor:void 0,r=i?ca(i):"";if(r)switch(r){case QB:return ky;case ZB:return Ny;case KB:return zy;case JB:return Fy;case $B:return Uy}return t});var ih=Rn,eR=Object.prototype,tR=eR.hasOwnProperty;function iR(e){var t=e.length,i=new e.constructor(t);return t&&typeof e[0]=="string"&&tR.call(e,"index")&&(i.index=e.index,i.input=e.input),i}var rR=iR,sR=Lr.Uint8Array,gd=sR;function nR(e){var t=new e.constructor(e.byteLength);return new gd(t).set(new gd(e)),t}var Sg=nR;function aR(e,t){var i=t?Sg(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)}var oR=aR,lR=/\w*$/;function hR(e){var t=new e.constructor(e.source,lR.exec(e));return t.lastIndex=e.lastIndex,t}var cR=hR,jy=fr?fr.prototype:void 0,Hy=jy?jy.valueOf:void 0;function dR(e){return Hy?Object(Hy.call(e)):{}}var uR=dR;function pR(e,t){var i=t?Sg(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)}var fR=pR,mR="[object Boolean]",gR="[object Date]",vR="[object Map]",yR="[object Number]",xR="[object RegExp]",bR="[object Set]",wR="[object String]",_R="[object Symbol]",SR="[object ArrayBuffer]",AR="[object DataView]",MR="[object Float32Array]",ER="[object Float64Array]",CR="[object Int8Array]",TR="[object Int16Array]",PR="[object Int32Array]",DR="[object Uint8Array]",OR="[object Uint8ClampedArray]",LR="[object Uint16Array]",IR="[object Uint32Array]";function BR(e,t,i){var r=e.constructor;switch(t){case SR:return Sg(e);case mR:case gR:return new r(+e);case AR:return oR(e,i);case MR:case ER:case CR:case TR:case PR:case DR:case OR:case LR:case IR:return fR(e,i);case vR:return new r;case yR:case wR:return new r(e);case xR:return cR(e);case bR:return new r;case _R:return uR(e)}}var RR=BR;function NR(e){return typeof e.constructor=="function"&&!fg(e)?$O(wg(e)):{}}var zR=NR,FR="[object Map]";function UR(e){return Ds(e)&&ih(e)==FR}var kR=UR,Gy=_o&&_o.isMap,jR=Gy?gg(Gy):kR,HR=jR,GR="[object Set]";function VR(e){return Ds(e)&&ih(e)==GR}var WR=VR,Vy=_o&&_o.isSet,XR=Vy?gg(Vy):WR,YR=XR,qR=1,QR=2,ZR=4,Vw="[object Arguments]",KR="[object Array]",JR="[object Boolean]",$R="[object Date]",e5="[object Error]",Ww="[object Function]",t5="[object GeneratorFunction]",i5="[object Map]",r5="[object Number]",Xw="[object Object]",s5="[object RegExp]",n5="[object Set]",a5="[object String]",o5="[object Symbol]",l5="[object WeakMap]",h5="[object ArrayBuffer]",c5="[object DataView]",d5="[object Float32Array]",u5="[object Float64Array]",p5="[object Int8Array]",f5="[object Int16Array]",m5="[object Int32Array]",g5="[object Uint8Array]",v5="[object Uint8ClampedArray]",y5="[object Uint16Array]",x5="[object Uint32Array]",wt={};wt[Vw]=wt[KR]=wt[h5]=wt[c5]=wt[JR]=wt[$R]=wt[d5]=wt[u5]=wt[p5]=wt[f5]=wt[m5]=wt[i5]=wt[r5]=wt[Xw]=wt[s5]=wt[n5]=wt[a5]=wt[o5]=wt[g5]=wt[v5]=wt[y5]=wt[x5]=!0;wt[e5]=wt[Ww]=wt[l5]=!1;function Qc(e,t,i,r,s,n){var a,o=t&qR,l=t&QR,h=t&ZR;if(i&&(a=s?i(e,r,s,n):i(e)),a!==void 0)return a;if(!hs(e))return e;var u=ls(e);if(u){if(a=rR(e),!o)return rL(e,a)}else{var c=ih(e),d=c==Ww||c==t5;if(md(e))return PB(e,o);if(c==Xw||c==Vw||d&&!s){if(a=l||d?{}:zR(e),!o)return l?jB(e,EB(a,e)):zB(e,AB(a,e))}else{if(!wt[c])return s?e:{};a=RR(e,c,o)}}n||(n=new qc);var p=n.get(e);if(p)return p;n.set(e,a),YR(e)?e.forEach(function(f){a.add(Qc(f,t,i,f,e,n))}):HR(e)&&e.forEach(function(f,v){a.set(v,Qc(f,t,i,v,e,n))});var m=h?l?Gw:zf:l?yg:vg,g=u?void 0:m(e);return vL(g||e,function(f,v){g&&(v=f,f=e[v]),ug(a,v,Qc(f,t,i,v,e,n))}),a}var Yw=Qc,b5=1,w5=4;function _5(e){return Yw(e,b5|w5)}var Ag=_5,S5="__lodash_hash_undefined__";function A5(e){return this.__data__.set(e,S5),this}var M5=A5;function E5(e){return this.__data__.has(e)}var C5=E5;function vd(e){var t=-1,i=e==null?0:e.length;for(this.__data__=new lu;++t<i;)this.add(e[t])}vd.prototype.add=vd.prototype.push=M5;vd.prototype.has=C5;var T5=vd;function P5(e,t){for(var i=-1,r=e==null?0:e.length;++i<r;)if(t(e[i],i,e))return!0;return!1}var D5=P5;function O5(e,t){return e.has(t)}var L5=O5,I5=1,B5=2;function R5(e,t,i,r,s,n){var a=i&I5,o=e.length,l=t.length;if(o!=l&&!(a&&l>o))return!1;var h=n.get(e),u=n.get(t);if(h&&u)return h==t&&u==e;var c=-1,d=!0,p=i&B5?new T5:void 0;for(n.set(e,t),n.set(t,e);++c<o;){var m=e[c],g=t[c];if(r)var f=a?r(g,m,c,t,e,n):r(m,g,c,e,t,n);if(f!==void 0){if(f)continue;d=!1;break}if(p){if(!D5(t,function(v,y){if(!L5(p,y)&&(m===v||s(m,v,i,r,n)))return p.push(y)})){d=!1;break}}else if(!(m===g||s(m,g,i,r,n))){d=!1;break}}return n.delete(e),n.delete(t),d}var qw=R5;function N5(e){var t=-1,i=Array(e.size);return e.forEach(function(r,s){i[++t]=[s,r]}),i}var z5=N5;function F5(e){var t=-1,i=Array(e.size);return e.forEach(function(r){i[++t]=r}),i}var U5=F5,k5=1,j5=2,H5="[object Boolean]",G5="[object Date]",V5="[object Error]",W5="[object Map]",X5="[object Number]",Y5="[object RegExp]",q5="[object Set]",Q5="[object String]",Z5="[object Symbol]",K5="[object ArrayBuffer]",J5="[object DataView]",Wy=fr?fr.prototype:void 0,wp=Wy?Wy.valueOf:void 0;function $5(e,t,i,r,s,n,a){switch(i){case J5:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case K5:return!(e.byteLength!=t.byteLength||!n(new gd(e),new gd(t)));case H5:case G5:case X5:return dg(+e,+t);case V5:return e.name==t.name&&e.message==t.message;case Y5:case Q5:return e==t+"";case W5:var o=z5;case q5:var l=r&k5;if(o||(o=U5),e.size!=t.size&&!l)return!1;var h=a.get(e);if(h)return h==t;r|=j5,a.set(e,t);var u=qw(o(e),o(t),r,s,n,a);return a.delete(e),u;case Z5:if(wp)return wp.call(e)==wp.call(t)}return!1}var eN=$5,tN=1,iN=Object.prototype,rN=iN.hasOwnProperty;function sN(e,t,i,r,s,n){var a=i&tN,o=zf(e),l=o.length,h=zf(t),u=h.length;if(l!=u&&!a)return!1;for(var c=l;c--;){var d=o[c];if(!(a?d in t:rN.call(t,d)))return!1}var p=n.get(e),m=n.get(t);if(p&&m)return p==t&&m==e;var g=!0;n.set(e,t),n.set(t,e);for(var f=a;++c<l;){d=o[c];var v=e[d],y=t[d];if(r)var b=a?r(y,v,d,t,e,n):r(v,y,d,e,t,n);if(!(b===void 0?v===y||s(v,y,i,r,n):b)){g=!1;break}f||(f=d=="constructor")}if(g&&!f){var x=e.constructor,w=t.constructor;x!=w&&"constructor"in e&&"constructor"in t&&!(typeof x=="function"&&x instanceof x&&typeof w=="function"&&w instanceof w)&&(g=!1)}return n.delete(e),n.delete(t),g}var nN=sN,aN=1,Xy="[object Arguments]",Yy="[object Array]",uc="[object Object]",oN=Object.prototype,qy=oN.hasOwnProperty;function lN(e,t,i,r,s,n){var a=ls(e),o=ls(t),l=a?Yy:ih(e),h=o?Yy:ih(t);l=l==Xy?uc:l,h=h==Xy?uc:h;var u=l==uc,c=h==uc,d=l==h;if(d&&md(e)){if(!md(t))return!1;a=!0,u=!1}if(d&&!u)return n||(n=new qc),a||Lw(e)?qw(e,t,i,r,s,n):eN(e,t,l,i,r,s,n);if(!(i&aN)){var p=u&&qy.call(e,"__wrapped__"),m=c&&qy.call(t,"__wrapped__");if(p||m){var g=p?e.value():e,f=m?t.value():t;return n||(n=new qc),s(g,f,i,r,n)}}return d?(n||(n=new qc),nN(e,t,i,r,s,n)):!1}var hN=lN;function Qw(e,t,i,r,s){return e===t?!0:e==null||t==null||!Ds(e)&&!Ds(t)?e!==e&&t!==t:hN(e,t,i,r,Qw,s)}var cN=Qw;function dN(e,t){return e!=null&&t in Object(e)}var uN=dN;function pN(e,t,i){t=zo(t,e);for(var r=-1,s=t.length,n=!1;++r<s;){var a=hu(t[r]);if(!(n=e!=null&&i(e,a)))break;e=e[a]}return n||++r!=s?n:(s=e==null?0:e.length,!!s&&pg(s)&&cg(a,s)&&(ls(e)||mg(e)))}var fN=pN;function mN(e,t){return e!=null&&fN(e,t,uN)}var gN=mN,vN=function(){return Lr.Date.now()},_p=vN,yN="Expected a function",xN=Math.max,bN=Math.min;function wN(e,t,i){var r,s,n,a,o,l,h=0,u=!1,c=!1,d=!0;if(typeof e!="function")throw new TypeError(yN);t=_y(t)||0,hs(i)&&(u=!!i.leading,c="maxWait"in i,n=c?xN(_y(i.maxWait)||0,t):n,d="trailing"in i?!!i.trailing:d);function p(_){var A=r,S=s;return r=s=void 0,h=_,a=e.apply(S,A),a}function m(_){return h=_,o=setTimeout(v,t),u?p(_):a}function g(_){var A=_-l,S=_-h,E=t-A;return c?bN(E,n-S):E}function f(_){var A=_-l,S=_-h;return l===void 0||A>=t||A<0||c&&S>=n}function v(){var _=_p();if(f(_))return y(_);o=setTimeout(v,g(_))}function y(_){return o=void 0,d&&r?p(_):(r=s=void 0,a)}function b(){o!==void 0&&clearTimeout(o),h=0,r=l=s=o=void 0}function x(){return o===void 0?a:y(_p())}function w(){var _=_p(),A=f(_);if(r=arguments,s=this,l=_,A){if(o===void 0)return m(l);if(c)return clearTimeout(o),o=setTimeout(v,t),p(l)}return o===void 0&&(o=setTimeout(v,t)),a}return w.cancel=b,w.flush=x,w}var Zw=wN;function _N(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var SN=_N;function AN(e,t){return t.length<2?e:Rw(e,dB(t,0,-1))}var MN=AN;function EN(e,t){return cN(e,t)}var Mg=EN;function CN(e,t){return t=zo(t,e),e=MN(e,t),e==null||delete e[hu(SN(t))]}var TN=CN;function PN(e){return hB(e)?void 0:e}var DN=PN,ON=1,LN=2,IN=4,BN=zw(function(e,t){var i={};if(e==null)return i;var r=!1;t=Aw(t,function(n){return n=zo(n,e),r||(r=n.length>1),n}),wh(e,Gw(e),i),r&&(i=Yw(i,ON|LN|IN,DN));for(var s=t.length;s--;)TN(i,t[s]);return i}),jf=BN;function RN(e,t,i,r){if(!hs(e))return e;t=zo(t,e);for(var s=-1,n=t.length,a=n-1,o=e;o!=null&&++s<n;){var l=hu(t[s]),h=i;if(l==="__proto__"||l==="constructor"||l==="prototype")return e;if(s!=a){var u=o[l];h=r?r(u,l,o):void 0,h===void 0&&(h=hs(u)?u:cg(t[s+1])?[]:{})}ug(o,l,h),o=o[l]}return e}var NN=RN;function zN(e,t,i){for(var r=-1,s=t.length,n={};++r<s;){var a=t[r],o=Rw(e,a);i(o,a)&&NN(n,zo(a,e),o)}return n}var FN=zN;function UN(e,t){return FN(e,t,function(i,r){return gN(e,r)})}var kN=UN,jN=zw(function(e,t){return e==null?{}:kN(e,t)}),yd=jN,Kw,HN=new Promise(e=>{Kw=e}),Qy=!1;async function GN(){if(Qy)return;let e=await import("./physics.js");await e.init(),Kw(e),Qy=!0}var Yt=class{modifyById(e,t){let i=this;if(i[e]===void 0)throw new Error("not expected");{let r={...i,[e]:t};return Object.setPrototypeOf(r,Yt.prototype),r}}add(e,t){return this.runOp({type:1,id:e,data:t})?.data??this}runOp(e){let t=this;if(e.type===1){let i=t[e.id],r;i===void 0?r={type:2,id:e.id}:r={type:1,id:e.id,data:i};let{id:s,data:n}=e,a={...t,[s]:n};return Object.setPrototypeOf(a,Yt.prototype),{data:a,actual:e,reverse:r}}else if(e.type===2){let{id:i}=e,r=t[i];if(r===void 0)return null;{let s={...t};return Object.setPrototypeOf(s,Yt.prototype),delete s[i],{data:s,actual:e,reverse:{type:1,id:i,data:r}}}}return null}};function Eg(e){if(e.deepFreeze!==void 0){e.deepFreeze(e);return}let t=Object.getOwnPropertyNames(e);for(let i of t){let r=e[i];r&&typeof r=="object"&&Eg(r)}return Object.freeze(e)}function VN(e,t){let i=0;for(;i<e.length&&i<t.length;){if(e[i]<t[i])return-1;if(e[i]>t[i])return 1;i+=1}return i!==t.length?-1:i!==e.length?1:0}var Jw=class extends Error{};function Sp(e){let t={...e};return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),t}function nn(e,t,i){if(e===void 0?t===void 0?(e=0,t=10):e=t-10:t===void 0&&(t=e+10),e>t){let n=e;e=t,t=n}let r=[],s=1/(i+1);for(let n=0;n<i;n++){let a=e+(t-e)*(n+.75+Math.random()*.5)*s;r.push(a)}return r}function Cg(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array}function WN(){return typeof process<"u"}function $w(e,t){for(let i of e)t(i.id,i.data)!==!0&&$w(i.children,t)}function e_(e,t){if(t(e.id,e.data)!==!0)for(let i of e.children)e_(i,t)}var Ri=class extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,Ri.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Eg(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let i of e.children)this.fillCaches0(i,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let i=this.parent(e);if(i===t)return!0;e=i}return!1}isDescendantOf(e,t){for(;e;){let i=this.parent(e);if(i===t)return!0;e=i}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let i=this.get(e);i&&e_(i,t)}}traverse(e){$w(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),r=this.childrenArray(i),s=r.findIndex(a=>a.id===e);if(s<0)throw new Error("not expected");let n=r[s];return r=[...r],r[s]={...n,data:t},this.modifyArrayBy(i,r)}}modifyArrayBy(e,t){let i=e,r=t;for(;i!==null;){let n=r,a=i;if(i=this.parent(i),i===void 0)throw new Error;r=this.childrenArray(i);let o=r.findIndex(l=>l.id===a);if(o<0)throw new Error;r=[...r],r[o]={...r[o],children:n}}Object.setPrototypeOf(r,Ri.prototype);let s=r;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let i of t)if(this.checkDuplicatedIdRec(i))return!0;return!1}addOp(e){let{parent:t,fi:i,id:r,data:s,children:n}=e;if(t!==null&&this.get(t)===void 0||this.checkDuplicatedIdRec(e))return null;{let a=t,o=this.childrenArray(a),l={fi:i,id:r,data:s,children:n};return o=[...o,l],o.sort((h,u)=>h.fi-u.fi),e.localIndex=o.indexOf(l),{data:this.modifyArrayBy(a,o),actual:e,reverse:{type:8,id:r}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let i=this.parent(t);if(i===void 0)return null;let r=this.childrenArray(i),s=r.findIndex(a=>a.id===t);e.localIndex=s,r=[...r];let n=r.splice(s,1)[0];return{data:this.modifyArrayBy(i,r),actual:e,reverse:{type:7,...n,parent:i}}}}moveOp(e){let{parent:t,fi:i,id:r}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:r});if(t!==null){let c=t;for(;c!==null;){if(c===void 0)throw new Error;if(c===r)throw new Jw("cyclic tree");c=this.parent(c)}}let s=this.parent(r);if(s===void 0)return null;let n=s,a=this.childrenArray(s),o=a.findIndex(c=>c.id===r);a=[...a];let l=a.splice(o,1)[0],h=this.modifyArrayBy(s,a);s=t,a=h.childrenArray(s);let u=l.fi;return l={...l,fi:i},a=[...a,l],a.sort((c,d)=>c.fi-d.fi),e.localIndex=a.indexOf(l),h=h.modifyArrayBy(s,a),{data:h,actual:e,reverse:{type:9,parent:n,fi:u,id:r}}}previous(e,t){if(t===null){let r=this.childrenArray(e);return r.length===0?null:r[r.length-1].id}let i=null;for(let r of this.childrenArray(e)){if(r.id===t)return i;i=r.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let i=this.childrenArray(t),r=i.findIndex(s=>s.id===e)+1;if(r<i.length)return i[r].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let i=this.childrenArray(t),r=i.findIndex(s=>s.id===e)-1;return r>=0?this.traverseSortPrevious(i[r].id):t}}getAllSorted(e){let t=[];for(let i of e){let r=this.getWithSortKey(i.id);r!==void 0&&t.push({...i,...r})}t.sort((i,r)=>VN(i.sortKey,r.sortKey));for(let i of t)delete i.sortKey;return t}getWithSortKey(e){var t=e;let i=[],r=this.get(t),s=r;if(r!==void 0){for(;t;)i.splice(0,0,r.fi),t=this.parent(t),t!==null&&(r=this.get(t));return{...s,sortKey:i}}}insertBeforeHelper(e,t,i){return this.insertAfterHelper(e,this.previous(e,t),i)}insertAfterHelper(e,t,i){let r=this.childrenArray(e);if(t===null){if(r.length===0)return nn(0,i,i);{let s=r[0].fi;return nn(s-i,s,i)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let n=r.find(a=>a.fi>s.fi);if(n===void 0){let a=r[r.length-1].fi;return nn(a,a+i,i)}else return nn(s.fi,n.fi,i)}}},xd;(e=>{function t(i,r){if(r.type!==0)return null;if(Array.isArray(i)){let s=r.props,n={},a=[...i],o=!1;if(s)for(let l of Object.keys(s)){let h=parseInt(l);if(isNaN(h))throw new Error("wrong index");n[l]=a[h],a[h]=s[l],o=!0}return o?{data:a,actual:r,reverse:{type:0,props:n}}:null}else{let s=r.props,n={},a={...i},o=!1;if(s)for(let l of Object.keys(s)){n[l]=a[l];let h=s[l];h===void 0?delete a[l]:a[l]=h,o=!0}return o?{data:a,actual:r,reverse:{type:0,props:n}}:null}}e.runOp=t})(xd||(xd={}));var st=class extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,st.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Eg(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,r=i.findIndex(n=>n.id===e);if(r<0)throw new Error("not expected");let s=i[r];return i=[...i],i[r]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,st.prototype);let t=e;return WN()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:i,data:r}=e,s=this,n={fi:t,id:i,data:r};return s=[...s,n],s.sort((a,o)=>a.fi-o.fi),e.localIndex=s.indexOf(n),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:i}}}deleteOp(e){let{id:t}=e,i=this,r=i.findIndex(n=>n.id===t);if(r===-1)return null;e.localIndex=r,i=[...i];let s=i.splice(r,1)[0];return{data:this.modifyArrayBy(i),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:i}=e,r=this;r=[...r];let s=r.findIndex(o=>o.id===i);if(s===-1)return null;let n=r[s].fi,a={...r[s],fi:t};return r[s]=a,r.sort((o,l)=>o.fi-l.fi),e.localIndex=r.indexOf(a),{data:this.modifyArrayBy(r),actual:e,reverse:{type:6,fi:n,id:i}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let i of this){if(i.id===e)return t;t=i.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let i=this;if(e===null){if(i.length===0)return nn(0,t,t);{let r=i[0].fi;return nn(r-t,r,t)}}else{let r=this.get(e);if(r===void 0)throw new Error("illegal args");let s=i.find(n=>n.fi>r.fi);if(s===void 0){let n=i[i.length-1].fi;return nn(n,n+t,t)}else return nn(r.fi,s.fi,t)}}};function So(e){return e&&typeof e=="object"&&e instanceof ni}var ni=class{unusedFunOverridesTable(e){}runOp(e){let t=[],i=this,r=0,s={};for(;r<e.path.length;){if(t.push(i),i=i===void 0?void 0:i[e.path[r]],i!==void 0&&!So(i))return null;r+=1}i=i?Sp(i):new ni;for(let[o,l]of Object.entries(e.props)){let h=i[o];s[o]=h,l===void 0?delete i[o]:i[o]=l}for(;r>0;){if(Object.keys(i).length===0){let o=t[r-1];o&&(i=Sp(o),delete i[e.path[r-1]])}else{let o=t[r-1];if(o){let l=Sp(o);l[e.path[r-1]]=i,i=l}else{let l=new ni;l[e.path[r-1]]=i,i=l}}r-=1}let n=Object.setPrototypeOf(i,ni.prototype),a={...e,props:s};return{data:n,actual:e,reverse:a}}},Jn;(e=>{function t(s,n){return rh(s,n)??s}e.apply=t;function i(s,n){return Pg(s,n)}e.merge=i;function r(s,n){let a=0,o=n.path,l=s;for(;a<o.length&&l!==void 0;){if(l=ss.zoomOnce(l,o[a]),l===void 0)return n;if(!So(l))return;a+=1}if(l===void 0)return n;if(So(l))if(n.type===0){let h={...n.props};for(let u of Object.keys(l))delete h[u];return{...n,props:h}}else if(n.type===1||n.type===4||n.type===7){let h=Tg([n],l);return h?(console.log(h),h):n}else return n}e.filterOp=r})(Jn||(Jn={}));function Tg(e,t){if(t===void 0)return;let i=!1,r=e.map(s=>{let n=s.id,a=rh(s.data,t[n]);if(i=i||a!==void 0,a===void 0&&(a=s.data),s.children){let o=Tg(s.children,t);return o!==void 0?i=!0:o=s.children,{...s,id:n,data:a,children:o}}else return{...s,id:n,data:a}});if(i)return r}function XN(e,t){if(t===void 0)return;let i=!1,r=e.map(s=>{let n=s.id,a=rh(s.data,t[n]);return i=i||a!==void 0,a===void 0&&(a=s.data),{...s,id:n,data:a}});if(i)return Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r}function rh(e,t){if(!So(t))return t;if(e instanceof Ri){let i=Tg(e,t);return i!==void 0&&Object.setPrototypeOf(i,Object.getPrototypeOf(e)),i}else{if(e instanceof st)return XN(e,t);if(Array.isArray(e)){let i=!1,r=e.map((s,n)=>{let a=rh(s,t[n]);return i=i||a!==void 0,a===void 0&&(a=s),a});return i?(Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r):void 0}else{if(e instanceof ni)return Pg(e,t);if(e&&typeof e=="object"){let i={},r=!1;for(let[s,n]of Object.entries(e)){let a=rh(n,t[s]);r=r||a!==void 0,a===void 0&&(a=n),i[s]=a}return r?(Object.setPrototypeOf(i,Object.getPrototypeOf(e)),i):void 0}}}}function Pg(e,t){if(e===void 0)return t;if(t===void 0)return e;if(!So(t))return t;if(!So(e))return Jn.apply(e,t);let i=new Set;for(let s of Object.keys(e))i.add(s);for(let s of Object.keys(t))i.add(s);let r=new ni;for(let s of i){let n=Pg(e===void 0?void 0:e[s],t===void 0?void 0:t[s]);r[s]=n}return r}function YN(e,t){let i={cur:[],result:[],len:0};return e=sh(e,t,i)??e,[e,i.result]}function bd(e,t){return e===null?null:(e.cur[e.len]=t,e.len+=1,e)}function wd(e){e&&(e.len-=1)}function qN(e){if(e===null)return null;e.result.push(e.cur.slice(0,e.len))}function t_(e,t,i){let r=!1,s=e.map(n=>{let a=n.id,o=t[a];if(o!==void 0&&typeof o=="string"&&(r=!0,a=o,i!==null))throw new Error("not supported");let l=sh(n.data,t,bd(i,a));wd(i),r=r||l!==void 0,l===void 0&&(l=n.data);let h=t_(n.children,t,i);return h!==void 0?r=!0:h=n.children,{...n,id:a,data:l,children:h}});if(r)return s}function QN(e,t,i){let r=!1,s=e.map(n=>{let a=n.id,o=t[a];if(o!==void 0&&typeof o=="string"&&(r=!0,a=o,i!==null))throw new Error("not supported");let l=sh(n.data,t,bd(i,a));return wd(i),r=r||l!==void 0,l===void 0&&(l=n.data),{...n,id:a,data:l}});if(r)return Object.setPrototypeOf(s,Object.getPrototypeOf(e)),s}function sh(e,t,i){if(e instanceof Ri){let r=t_(e,t,i);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r}else{if(e instanceof st)return QN(e,t,i);if(Array.isArray(e)){let r=!1,s=e.map((n,a)=>{let o=sh(n,t,bd(i,a));return wd(i),r=r||o!==void 0,o===void 0&&(o=n),o});return r?(Object.setPrototypeOf(s,Object.getPrototypeOf(e)),s):void 0}else if(e&&typeof e=="object"&&!Cg(e)){let r={},s=!1;for(let[n,a]of Object.entries(e))if(n!=="name"&&n!=="text"){let o=t[n];if(typeof o=="string"){if(i!==null)throw new Error("not supported");s=!0,n=o}let l=sh(a,t,bd(i,n));wd(i),s=s||l!==void 0,l===void 0&&(l=a),r[n]=l}else r[n]=a;return s?(Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r):void 0}else if(typeof e=="string"){let r=t[e];if(r!==void 0){if(e.length!==36)throw new Error("for now you should only call this method when the key is a uuid");qN(i)}return r}else return}}var Hf;(e=>{function t(i,r){let s=ss.zoom(r,i.path);if(typeof s=="object"){let n={};for(let a of Object.keys(i.props))n[a]=s[a];return{...i,props:n}}else return{...i,props:{}}}e.replaceProps=t})(Hf||(Hf={}));var Yi;(e=>{function t(l,h){return{...l,path:l.path.slice(h)}}e.drop=t;function i(l,h){return r(l,h)?.data??l}e.applySimple=i;function r(l,h){let u=h.path;for(var c=[];;){let d;if(l instanceof ni&&h.type===0&&(d=l.runOp({...h,path:u.slice(c.length)}),d===null&&(d=void 0)),c.length===u.length&&(l instanceof Ri||l instanceof st||l instanceof Yt?d=l.runOp(h):d=xd.runOp(l,h)),d!==void 0)if(d!==null){let g=d.data;for(let f=c.length-1;f>=0;f--){let v=u[f],y=c[f];if(y instanceof Ri){if(typeof v=="number")throw new Error("illegal arg");g=y.modifyById(v,g)}else if(y instanceof st){if(typeof v=="number")throw new Error("illegal arg");g=y.modifyById(v,g)}else if(y instanceof Yt){if(typeof v=="number")throw new Error("illegal arg");g=y.modifyById(v,g)}else if(y instanceof ni){let b={...y,[v]:g};g=Object.setPrototypeOf(b,ni.prototype)}else if(typeof y=="object")if(Array.isArray(y)){if(typeof v=="string"&&(v=parseInt(v),isNaN(v)))throw new Error("Invalid path");let b=g;g=[...y],g[v]=b}else g={...y,[v]:g};else return null}return{data:g,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let p=u[c.length],m;if(l instanceof Ri){if(typeof p=="number")throw new Error("");m=l.get(p)?.data}else if(l instanceof st){if(typeof p=="number")throw new Error("");m=l.get(p)?.data}else l!==null&&(m=l[p]);if(m!==void 0)c.push(l),l=m;else return null}}e.apply=r;function s(l,h){for(let u=0;u<l.length&&u<h.length;u++)if(l[u]!==h[u])return!0;return!1}e.pathDisjoint=s;function n(l,h){if(l.length!==h.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==h[u])return!1;return!0}e.pathEq=n;function a(l,h){return s(l.path,h.path)}e.commutative=a;function o(l,h){return l.type===0&&h.type===0&&n(l.path,h.path)?Object.keys(l.props).every(u=>h.props[u]!==void 0):!1}e.subsumed=o})(Yi||(Yi={}));var Zy;(e=>{function t(){return[]}e.empty=t;function i(h,u){let c=[];for(let d of h){let[p,...m]=d.path;p===u&&c.push({...d,path:m})}return c}e.removePrefix=i;function r(h,u){return h.map(c=>({...c,path:[u,...c.path]}))}e.addPrefix=r;function s(h,u){return[...h,...u]}e.concat=s;function n(h,u){return[...h.filter(c=>!u.some(d=>Yi.subsumed(c,d))),...u]}e.compress=n;function a(h,u){return h.every(c=>u.every(d=>Yi.commutative(c,d)))}e.commutative=a;function o(h,u){for(let c of u){let d=l(h,c);d!==null&&(h=d.data)}return h}e.applyAll=o;function l(h,u){var c=h;let d=[],p=[];for(let m of u)try{if(m.type===3){let g=ss.zoom(c,[...m.path,m.id]),f=Yi.apply(c,{...m,type:2});if(f!==null){c=f.data;let[v,y]=YN(c,{[m.id]:g});c=v;for(let b of y){let x=b[b.length-1];b.splice(b.length-1,1),d.push({type:0,path:b,props:{[x]:g}}),p.push({type:0,path:b,props:{[x]:m.id}})}p.push(f.reverse),d.push(f.actual)}}else{let g=Yi.apply(c,m);g!==null&&(d.push(g.actual),c=g.data,p.push(g.reverse))}}catch(g){if(g instanceof Jw)return null;throw g}return{data:c,actual:d,reverse:p.reverse()}}e.apply=l})(Zy||(Zy={}));var i_=Symbol(),ZN=Symbol(),cu=Symbol(),_h=class{reportOp(e,t,i=[]){let r=this;if(t===null)return;r._current=t.data;let s=i;for(;!(r instanceof s_);){let n=r._path,a=r._current;if(n!==""&&s.splice(0,0,n),r=r._parent,r===null)return;r.update(n,a)}r.push(s,e,t.actual,t.reverse)}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let i=t[cu];i&&i(),delete this._children[e]}}}},KN=class extends _h{constructor(e,t,i){super(),this._parent=e,this._path=t,this._current=i}update(e,t){if(Array.isArray(this._current)){if(typeof e=="string"&&(e=parseInt(e),isNaN(e)))throw new Error("Invalid path");this._current=[...this._current],this._current[e]=t}else this._current={...this._current,[e]:t}}runOp(e){this.reportOp(e,xd.runOp(this._current,e),e.path)}},JN=class extends _h{constructor(e,t,i){super(),this._parent=e,this._path=t,this._current=i}update(e,t){this._current={...this._current,[e]:t},Object.setPrototypeOf(this._current,Yt.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},r_={get(e,t){if(t===cu)return()=>{e._parent=null};if(t===i_)return e._current;if(t===ZN)return e;let{_current:i,_children:r}=e;if(t==="push"&&Array.isArray(i))throw new Error("not supported to expand array");let s=r===void 0?void 0:r[t];if(s!==void 0)return s;let n=i[t],a=du(e,t,n);return a!==n?(r===void 0&&(r={},e._children=r),r[t]=a,a):n},has(e,t){return t in e._current},ownKeys(e){return Reflect.ownKeys(e._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(e){return Object.getPrototypeOf(e._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(e,t){let i=e._current,r=Reflect.getOwnPropertyDescriptor(i,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:i[t]}}},$N={...r_,set(e,t,i){let r={type:0,props:{[t]:fi(i)??i}};return e.deleteChildren(t),e.runOp(r),!0},deleteProperty(e,t){let i={type:0,props:{[t]:void 0}};return e.deleteChildren(t),e.runOp(i),!0}},ez={...r_,set(e,t,i){return i===void 0?this.deleteProperty(e,t):(e.deleteChildren(t),e.runOp({type:1,id:t,data:i})),!0},deleteProperty(e,t){return e.runOp({type:2,id:t}),!0}},Dg=class extends _h{constructor(e,t,i){super(),this._children={},this._parent=e,this._path=t,this._current=i,this[cu]=()=>{this._parent=null}}unproxy(){return this._current}update(e,t){this._current=this._current.modifyById(e,t)}runOp(e){this.reportOp(e,this._current.runOp(e))}randomId(){return this._current.randomId()}isDescendantOf(e,t){return this._current.isDescendantOf(e,t)}childrenOf(e){return this._current.childrenOf(e)}traverse(e){return this._current.traverse(e)}get(e){return this._current.get(e)}parent(e){return this._current.parent(e)}traverse(e){this._current.traverse((t,i)=>{e(t,this.data(t))})}data(e){let{_current:t,_children:i}=this,r=i===void 0?void 0:i[e];if(r!==void 0)return r;let s=t.get(e)?.data,n=du(this,e,s);return n!==s?(i===void 0&&(i={},this._children=i),i[e]=n,n):s}add(e,t,i,r,s){this.runOp({type:7,parent:e,fi:t,id:i,data:r,children:s})}move(e,t,i){this.runOp({type:9,parent:e,fi:t,id:i})}insertAfter(e,t,i){let r=this._current.insertAfterHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.add(e,r[s],n.id,n.data,n.children)}}insertBefore(e,t,i){let r=this._current.insertBeforeHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.add(e,r[s],n.id,n.data,n.children)}}moveAfter(e,t,i){let r=this._current.insertAfterHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.move(e,r[s],n)}}moveBefore(e,t,i){let r=this._current.insertBeforeHelper(e,t,i.length);for(let s=0;s<i.length;s++){let n=i[s];this.move(e,r[s],n)}}delete(e){this.deleteChildren(e),this.runOp({type:8,id:e})}sortNext(e){return this._current.sortNext(e)}sortPrevious(e){return this._current.sortPrevious(e)}getAllSorted(e){return this._current.getAllSorted(e)}},Og=class extends _h{constructor(e,t,i){super(),this._children={},this._parent=e,this._path=t,this._current=i,this[cu]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(e){let t=this.length;for(let i=0;i<t;i++){let r=this._current[i].id,s=this._current[i].fi;e(this.data(this._current[i].id),r,s)}}find(e){let t=this.length;for(let i=0;i<t;i++){let r=this._current[i].id;if(e(this.data(r),r))return this.get(r)}}update(e,t){this._current=this._current.modifyById(e,t)}randomId(){return this._current.randomId()}get(e){return{...this._current.get(e),data:this.data(e)}}data(e){let{_current:t,_children:i}=this,r=i===void 0?void 0:i[e];if(r!==void 0)return r;let s=t.get(e)?.data,n=du(this,e,s);return n!==s?(i===void 0&&(i={},this._children=i),i[e]=n,n):s}runOp(e){this.reportOp(e,this._current.runOp(e))}add(e,t,i){this.runOp({type:4,fi:e,id:t,data:i})}move(e,t){this.runOp({type:6,fi:e,id:t})}insertAfter(e,t){let i=this._current.insertAfterHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.add(i[r],s.id,s.data)}}insertBefore(e,t){let i=this._current.insertBeforeHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.add(i[r],s.id,s.data)}}moveAfter(e,t){let i=this._current.insertAfterHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.move(i[r],s)}}moveBefore(e,t){let i=this._current.insertBeforeHelper(e,t.length);for(let r=0;r<t.length;r++){let s=t[r];this.move(i[r],s)}}delete(e){this.deleteChildren(e),this.runOp({type:5,id:e})}};function Ap(e,t,i){if(e.length>0){let r=e[e.length-1];if(r.type===0&&t.type===0&&ss.equal(r.path,i)){Object.assign(r.props,t.props);return}}e.push({...t,path:i})}var s_=class extends _h{constructor(e){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=e}update(e,t){if(e!=="")throw new Error("");this._current=t}push(e,t,i,r){Ap(this.ts,t,e),Ap(this.actual,i,e),Ap(this.reverse,r,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function du(e,t,i){return i instanceof Ri?new Dg(e,t,i):i instanceof st?new Og(e,t,i):i instanceof Yt?new Proxy(new JN(e,t,i),ez):i!==null&&typeof i=="object"?Cg(i)?i:new Proxy(new KN(e,t,i),$N):i}function n_(e){let t=new s_(e);return[du(t,"",e),t]}function _d(e,t){let[i,r]=n_(e);return t(i),r.result()}function fi(e){return e instanceof Dg||e instanceof Og?e._current:e!==null&&typeof e=="object"?e[i_]:e}var ss;(e=>{function t(n,a){if(a.length===n.length)for(var o=0;o<n.length;){if(n[o]!==a[o])return!1;o+=1}else return!1;return!0}e.equal=t;function i(n,a,o){let l=s(o,n);if(l!==void 0&&typeof l=="object"&&l!==null){let h={...a};return Object.keys(l).forEach(u=>{delete h[u]}),h}else return a}e.removeOverridden=i;function r(n,a){if((n instanceof Ri||n instanceof Dg)&&typeof a=="string"||(n instanceof st||n instanceof Og)&&typeof a=="string")return n.data(a);if(typeof a=="number"&&Array.isArray(n)||typeof a=="string"&&typeof n=="object"&&n!==null)return n[a]}e.zoomOnce=r;function s(n,a,o=0){for(;o<a.length&&n!==void 0;)n=r(n,a[o]),o+=1;return n}e.zoom=s})(ss||(ss={}));function tz(e,t){let i=[];if(t.length===e.length)for(var r=0;r<e.length;){if(t[r]==="*")i.push(e[r]);else if(e[r]!==t[r])return null;r+=1}else return null;return i}function Vn(e,t){let i=[];if(t.length<=e.length)for(var r=0;r<t.length;){if(t[r]==="*")i.push(e[r]);else if(e[r]!==t[r])return null;r+=1}else return null;return i}var a_=class{},Ky=class extends a_{constructor(e){super(),this.id=e}},Jy=class extends a_{constructor(e){super(),this.data=e}},Gf;try{Gf=new TextDecoder}catch{}var Me,un,Y=0,o_=[],Vf=o_,Wf=0,Oi={},ct,an,sr=0,Zr=0,ji,Ts,Ci=[],pt,$y={useRecords:!1,mapsAsObjects:!0},l_=class{},h_=new l_;h_.name="MessagePack 0xC1";var Ao=!1,Sd=class{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0)),Object.assign(this,e)}unpack(e,t){if(Me)return m_(()=>(Yf(),this?this.unpack(e,t):Sd.prototype.unpack.call($y,e,t)));un=t>-1?t:e.length,Y=0,Wf=0,Zr=0,an=null,Vf=o_,ji=null,Me=e;try{pt=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(i){throw Me=null,e instanceof Uint8Array?i:new Error("Source must be a Uint8Array or Buffer but was a "+(e&&typeof e=="object"?e.constructor.name:typeof e))}if(this instanceof Sd){if(Oi=this,this.structures)return ct=this.structures,pc();(!ct||ct.length>0)&&(ct=[])}else Oi=$y,(!ct||ct.length>0)&&(ct=[]);return pc()}unpackMultiple(e,t){let i,r=0;try{Ao=!0;let s=e.length,n=this?this.unpack(e,s):pu.unpack(e,s);if(t){for(t(n);Y<s;)if(r=Y,t(pc())===!1)return}else{for(i=[n];Y<s;)r=Y,i.push(pc());return i}}catch(s){throw s.lastPosition=r,s.values=i,s}finally{Ao=!1,Yf()}}_mergeStructures(e,t){e=e||[];for(let i=0,r=e.length;i<r;i++){let s=e[i];s&&(s.isShared=!0,i>=32&&(s.highByte=i-32>>5))}e.sharedLength=e.length;for(let i in t||[])if(i>=0){let r=e[i],s=t[i];s&&(r&&((e.restoreStructures||(e.restoreStructures=[]))[i]=r),e[i]=s)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function pc(){try{if(!Oi.trusted&&!Ao){let t=ct.sharedLength||0;t<ct.length&&(ct.length=t)}let e=It();if(Y==un)ct.restoreStructures&&e1(),ct=null,Me=null,Ts&&(Ts=null);else if(Y>un){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ao)throw new Error("Data read, but end of buffer not reached");return e}catch(e){throw ct.restoreStructures&&e1(),Yf(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function e1(){for(let e in ct.restoreStructures)ct[e]=ct.restoreStructures[e];ct.restoreStructures=null}function It(){let e=Me[Y++];if(e<160)if(e<128){if(e<64)return e;{let t=ct[e&63]||Oi.getStructures&&c_()[e&63];return t?(t.read||(t.read=Lg(t,e&63)),t.read()):e}}else if(e<144)if(e-=128,Oi.mapsAsObjects){let t={};for(let i=0;i<e;i++)t[u_()]=It();return t}else{let t=new Map;for(let i=0;i<e;i++)t.set(It(),It());return t}else{e-=144;let t=new Array(e);for(let i=0;i<e;i++)t[i]=It();return t}else if(e<192){let t=e-160;if(Zr>=Y)return an.slice(Y-sr,(Y+=t)-sr);if(Zr==0&&un<140){let i=t<16?Ig(t):d_(t);if(i!=null)return i}return Xf(t)}else{let t;switch(e){case 192:return null;case 193:return ji?(t=It(),t>0?ji[1].slice(ji.position1,ji.position1+=t):ji[0].slice(ji.position0,ji.position0-=t)):h_;case 194:return!1;case 195:return!0;case 196:return Mp(Me[Y++]);case 197:return t=pt.getUint16(Y),Y+=2,Mp(t);case 198:return t=pt.getUint32(Y),Y+=4,Mp(t);case 199:return Pn(Me[Y++]);case 200:return t=pt.getUint16(Y),Y+=2,Pn(t);case 201:return t=pt.getUint32(Y),Y+=4,Pn(t);case 202:if(t=pt.getFloat32(Y),Oi.useFloat32>2){let i=Bg[(Me[Y]&127)<<1|Me[Y+1]>>7];return Y+=4,(i*t+(t>0?.5:-.5)>>0)/i}return Y+=4,t;case 203:return t=pt.getFloat64(Y),Y+=8,t;case 204:return Me[Y++];case 205:return t=pt.getUint16(Y),Y+=2,t;case 206:return t=pt.getUint32(Y),Y+=4,t;case 207:return Oi.int64AsNumber?(t=pt.getUint32(Y)*4294967296,t+=pt.getUint32(Y+4)):t=pt.getBigUint64(Y),Y+=8,t;case 208:return pt.getInt8(Y++);case 209:return t=pt.getInt16(Y),Y+=2,t;case 210:return t=pt.getInt32(Y),Y+=4,t;case 211:return Oi.int64AsNumber?(t=pt.getInt32(Y)*4294967296,t+=pt.getUint32(Y+4)):t=pt.getBigInt64(Y),Y+=8,t;case 212:if(t=Me[Y++],t==114)return n1(Me[Y++]&63);{let i=Ci[t];if(i)return i.read?(Y++,i.read(It())):i.noBuffer?(Y++,i()):i(Me.subarray(Y,++Y));throw new Error("Unknown extension "+t)}case 213:return t=Me[Y],t==114?(Y++,n1(Me[Y++]&63,Me[Y++])):Pn(2);case 214:return Pn(4);case 215:return Pn(8);case 216:return Pn(16);case 217:return t=Me[Y++],Zr>=Y?an.slice(Y-sr,(Y+=t)-sr):rz(t);case 218:return t=pt.getUint16(Y),Y+=2,Zr>=Y?an.slice(Y-sr,(Y+=t)-sr):sz(t);case 219:return t=pt.getUint32(Y),Y+=4,Zr>=Y?an.slice(Y-sr,(Y+=t)-sr):nz(t);case 220:return t=pt.getUint16(Y),Y+=2,i1(t);case 221:return t=pt.getUint32(Y),Y+=4,i1(t);case 222:return t=pt.getUint16(Y),Y+=2,r1(t);case 223:return t=pt.getUint32(Y),Y+=4,r1(t);default:if(e>=224)return e-256;if(e===void 0){let i=new Error("Unexpected end of MessagePack data");throw i.incomplete=!0,i}throw new Error("Unknown MessagePack token "+e)}}}var iz=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Lg(e,t){function i(){if(i.count++>2){let s=e.read=new Function("r","return function(){return {"+e.map(n=>iz.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(It);return e.highByte===0&&(e.read=t1(t,e.read)),s()}let r={};for(let s=0,n=e.length;s<n;s++){let a=e[s];r[a]=It()}return r}return i.count=0,e.highByte===0?t1(t,i):i}var t1=(e,t)=>function(){let i=Me[Y++];if(i===0)return t();let r=e<32?-(e+(i<<5)):e+(i<<5),s=ct[r]||c_()[r];if(!s)throw new Error("Record id is not defined for "+r);return s.read||(s.read=Lg(s,e)),s.read()};function c_(){let e=m_(()=>(Me=null,Oi.getStructures()));return ct=Oi._mergeStructures(e,ct)}var Xf=uu,rz=uu,sz=uu,nz=uu;function uu(e){let t;if(e<16&&(t=Ig(e)))return t;if(e>64&&Gf)return Gf.decode(Me.subarray(Y,Y+=e));let i=Y+e,r=[];for(t="";Y<i;){let s=Me[Y++];if((s&128)===0)r.push(s);else if((s&224)===192){let n=Me[Y++]&63;r.push((s&31)<<6|n)}else if((s&240)===224){let n=Me[Y++]&63,a=Me[Y++]&63;r.push((s&31)<<12|n<<6|a)}else if((s&248)===240){let n=Me[Y++]&63,a=Me[Y++]&63,o=Me[Y++]&63,l=(s&7)<<18|n<<12|a<<6|o;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(s);r.length>=4096&&(t+=$t.apply(String,r),r.length=0)}return r.length>0&&(t+=$t.apply(String,r)),t}function i1(e){let t=new Array(e);for(let i=0;i<e;i++)t[i]=It();return t}function r1(e){if(Oi.mapsAsObjects){let t={};for(let i=0;i<e;i++)t[u_()]=It();return t}else{let t=new Map;for(let i=0;i<e;i++)t.set(It(),It());return t}}var $t=String.fromCharCode;function d_(e){let t=Y,i=new Array(e);for(let r=0;r<e;r++){let s=Me[Y++];if((s&128)>0){Y=t;return}i[r]=s}return $t.apply(String,i)}function Ig(e){if(e<4)if(e<2){if(e===0)return"";{let t=Me[Y++];if((t&128)>1){Y-=1;return}return $t(t)}}else{let t=Me[Y++],i=Me[Y++];if((t&128)>0||(i&128)>0){Y-=2;return}if(e<3)return $t(t,i);let r=Me[Y++];if((r&128)>0){Y-=3;return}return $t(t,i,r)}else{let t=Me[Y++],i=Me[Y++],r=Me[Y++],s=Me[Y++];if((t&128)>0||(i&128)>0||(r&128)>0||(s&128)>0){Y-=4;return}if(e<6){if(e===4)return $t(t,i,r,s);{let n=Me[Y++];if((n&128)>0){Y-=5;return}return $t(t,i,r,s,n)}}else if(e<8){let n=Me[Y++],a=Me[Y++];if((n&128)>0||(a&128)>0){Y-=6;return}if(e<7)return $t(t,i,r,s,n,a);let o=Me[Y++];if((o&128)>0){Y-=7;return}return $t(t,i,r,s,n,a,o)}else{let n=Me[Y++],a=Me[Y++],o=Me[Y++],l=Me[Y++];if((n&128)>0||(a&128)>0||(o&128)>0||(l&128)>0){Y-=8;return}if(e<10){if(e===8)return $t(t,i,r,s,n,a,o,l);{let h=Me[Y++];if((h&128)>0){Y-=9;return}return $t(t,i,r,s,n,a,o,l,h)}}else if(e<12){let h=Me[Y++],u=Me[Y++];if((h&128)>0||(u&128)>0){Y-=10;return}if(e<11)return $t(t,i,r,s,n,a,o,l,h,u);let c=Me[Y++];if((c&128)>0){Y-=11;return}return $t(t,i,r,s,n,a,o,l,h,u,c)}else{let h=Me[Y++],u=Me[Y++],c=Me[Y++],d=Me[Y++];if((h&128)>0||(u&128)>0||(c&128)>0||(d&128)>0){Y-=12;return}if(e<14){if(e===12)return $t(t,i,r,s,n,a,o,l,h,u,c,d);{let p=Me[Y++];if((p&128)>0){Y-=13;return}return $t(t,i,r,s,n,a,o,l,h,u,c,d,p)}}else{let p=Me[Y++],m=Me[Y++];if((p&128)>0||(m&128)>0){Y-=14;return}if(e<15)return $t(t,i,r,s,n,a,o,l,h,u,c,d,p,m);let g=Me[Y++];if((g&128)>0){Y-=15;return}return $t(t,i,r,s,n,a,o,l,h,u,c,d,p,m,g)}}}}}function Mp(e){return Oi.copyBuffers?Uint8Array.prototype.slice.call(Me,Y,Y+=e):Me.subarray(Y,Y+=e)}function Pn(e){let t=Me[Y++];if(Ci[t])return Ci[t](Me.subarray(Y,Y+=e));throw new Error("Unknown extension type "+t)}var s1=new Array(4096);function u_(){let e=Me[Y++];if(e>=160&&e<192){if(e=e-160,Zr>=Y)return an.slice(Y-sr,(Y+=e)-sr);if(!(Zr==0&&un<180))return Xf(e)}else return Y--,It();let t=(e<<5^(e>1?pt.getUint16(Y):e>0?Me[Y]:0))&4095,i=s1[t],r=Y,s=Y+e-3,n,a=0;if(i&&i.bytes==e){for(;r<s;){if(n=pt.getUint32(r),n!=i[a++]){r=1879048192;break}r+=4}for(s+=3;r<s;)if(n=Me[r++],n!=i[a++]){r=1879048192;break}if(r===s)return Y=r,i.string;s-=3,r=Y}for(i=[],s1[t]=i,i.bytes=e;r<s;)n=pt.getUint32(r),i.push(n),r+=4;for(s+=3;r<s;)n=Me[r++],i.push(n);let o=e<16?Ig(e):d_(e);return o!=null?i.string=o:i.string=Xf(e)}var n1=(e,t)=>{var i=It();let r=e;t!==void 0&&(e=e<32?-((t<<5)+e):(t<<5)+e,i.highByte=t);let s=ct[e];return s&&s.isShared&&((ct.restoreStructures||(ct.restoreStructures=[]))[e]=s),ct[e]=i,i.read=Lg(i,r),i.read()},p_=typeof self=="object"?self:global;Ci[0]=()=>{};Ci[0].noBuffer=!0;Ci[101]=()=>{let e=It();return(p_[e[0]]||Error)(e[1])};Ci[105]=e=>{let t=pt.getUint32(Y-4);Ts||(Ts=new Map);let i=Me[Y],r;i>=144&&i<160||i==220||i==221?r=[]:r={};let s={target:r};Ts.set(t,s);let n=It();return s.used?Object.assign(r,n):(s.target=n,n)};Ci[112]=e=>{let t=pt.getUint32(Y-4),i=Ts.get(t);return i.used=!0,i.target};Ci[115]=()=>new Set(It());var f_=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(e=>e+"Array");Ci[116]=e=>{let t=e[0],i=f_[t];if(!i)throw new Error("Could not find typed array for code "+t);return new p_[i](Uint8Array.prototype.slice.call(e,1).buffer)};Ci[120]=()=>{let e=It();return new RegExp(e[0],e[1])};Ci[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],i=Y;Y+=t-4,ji=[It(),It()],ji.position0=0,ji.position1=0;let r=Y;Y=i;try{return It()}finally{Y=r}};Ci[255]=e=>e.length==4?new Date((e[0]*16777216+(e[1]<<16)+(e[2]<<8)+e[3])*1e3):e.length==8?new Date(((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+((e[3]&3)*4294967296+e[4]*16777216+(e[5]<<16)+(e[6]<<8)+e[7])*1e3):e.length==12?new Date(((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+((e[4]&128?-281474976710656:0)+e[6]*1099511627776+e[7]*4294967296+e[8]*16777216+(e[9]<<16)+(e[10]<<8)+e[11])*1e3):new Date("invalid");function m_(e){let t=un,i=Y,r=Wf,s=sr,n=Zr,a=an,o=Vf,l=Ts,h=ji,u=new Uint8Array(Me.slice(0,un)),c=ct,d=ct.slice(0,ct.length),p=Oi,m=Ao,g=e();return un=t,Y=i,Wf=r,sr=s,Zr=n,an=a,Vf=o,Ts=l,ji=h,Me=u,Ao=m,ct=c,ct.splice(0,ct.length,...d),Oi=p,pt=new DataView(Me.buffer,Me.byteOffset,Me.byteLength),g}function Yf(){Me=null,Ts=null,ct=null}function az(e){e.unpack?Ci[e.type]=e.unpack:Ci[e.type]=e}var Bg=new Array(147);for(let e=0;e<256;e++)Bg[e]=+("1e"+Math.floor(45.15-e*.30103));var pu=new Sd({useRecords:!1}),PV=pu.unpack,DV=pu.unpackMultiple,OV=pu.unpack,oz={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lz=new Float32Array(1),LV=new Uint8Array(lz.buffer,0,4),Zc;try{Zc=new TextEncoder}catch{}var Ad,Rg,fu=typeof Buffer<"u",Ep=fu?Buffer.allocUnsafeSlow:Uint8Array,g_=fu?Buffer:Uint8Array,a1=fu?4294967296:2144337920,ae,zt,$=0,zr,Fr=null,hz=/[\u0080-\uFFFF]/,nl=Symbol("record-id"),v_=class extends Sd{constructor(e){super(e),this.offset=0;let t,i,r,s,n,a,o=0,l=g_.prototype.utf8Write?function(A,S,E){return ae.utf8Write(A,S,E)}:Zc&&Zc.encodeInto?function(A,S){return Zc.encodeInto(A,ae.subarray(S)).written}:!1,h=this;e||(e={});let u=e&&e.sequential,c=e.structures||e.saveStructures,d=e.maxSharedStructures;if(d==null&&(d=c?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let p=e.maxOwnStructures;p==null&&(p=c?32:64),u&&!e.saveStructures&&(this.structures=[]);let m=d>32||p+d>64,g=d+64,f=d+p+64;if(f>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],y=0,b=0;this.pack=this.encode=function(A,S){if(ae||(ae=new Ep(8192),zt=new DataView(ae.buffer,0,8192),$=0),zr=ae.length-10,zr-$<2048?(ae=new Ep(ae.length),zt=new DataView(ae.buffer,0,ae.length),zr=ae.length-10,$=0):$=$+7&2147483640,i=$,a=h.structuredClone?new Map:null,h.bundleStrings?(Fr=["",""],ae[$++]=214,ae[$++]=98,Fr.position=$-i,$+=4):Fr=null,r=h.structures,r){r.uninitialized&&(r=h._mergeStructures(h.getStructures()));let E=r.sharedLength||0;if(E>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+r.sharedLength);if(!r.transitions){r.transitions=Object.create(null);for(let C=0;C<E;C++){let T=r[C];if(!T)continue;let P,R=r.transitions;for(let O=0,U=T.length;O<U;O++){let j=T[O];P=R[j],P||(P=R[j]=Object.create(null)),R=P}R[nl]=C+64}o=E}u||(r.nextId=E+64)}s&&(s=!1),n=r||[];try{if(x(A),Fr){zt.setUint32(Fr.position+i,$-Fr.position-i);let E=Fr;Fr=null,x(E[0]),x(E[1])}if(h.offset=$,a&&a.idsToInsert){$+=a.idsToInsert.length*6,$>zr&&_($),h.offset=$;let E=dz(ae.subarray(i,$),a.idsToInsert);return a=null,E}return S&uz?(ae.start=i,ae.end=$,ae):ae.subarray(i,$)}finally{if(r){if(b<10&&b++,y>1e4)r.transitions=null,b=0,y=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let E=0,C=v.length;E<C;E++)v[E][nl]=0;v=[]}if(s&&h.saveStructures){let E=r.sharedLength||d;r.length>E&&(r=r.slice(0,E));let C=ae.subarray(i,$);return h.saveStructures(r,o)===!1?(h._mergeStructures(h.getStructures()),h.pack(A)):(o=E,C)}}S&pz&&($=i)}};let x=A=>{$>zr&&(ae=_($));var S=typeof A,E;if(S==="string"){let C=A.length;if(Fr&&C>=8&&C<4096){let R=hz.test(A);Fr[R?0:1]+=A,ae[$++]=193,x(R?-C:C);return}let T;C<32?T=1:C<256?T=2:C<65536?T=3:T=5;let P=C*3;if($+P>zr&&(ae=_($+P)),C<64||!l){let R,O,U,j=$+T;for(R=0;R<C;R++)O=A.charCodeAt(R),O<128?ae[j++]=O:O<2048?(ae[j++]=O>>6|192,ae[j++]=O&63|128):(O&64512)===55296&&((U=A.charCodeAt(R+1))&64512)===56320?(O=65536+((O&1023)<<10)+(U&1023),R++,ae[j++]=O>>18|240,ae[j++]=O>>12&63|128,ae[j++]=O>>6&63|128,ae[j++]=O&63|128):(ae[j++]=O>>12|224,ae[j++]=O>>6&63|128,ae[j++]=O&63|128);E=j-$-T}else E=l(A,$+T,P);E<32?ae[$++]=160|E:E<256?(T<2&&ae.copyWithin($+2,$+1,$+1+E),ae[$++]=217,ae[$++]=E):E<65536?(T<3&&ae.copyWithin($+3,$+2,$+2+E),ae[$++]=218,ae[$++]=E>>8,ae[$++]=E&255):(T<5&&ae.copyWithin($+5,$+3,$+3+E),ae[$++]=219,zt.setUint32($,E),$+=4),$+=E}else if(S==="number")if(A>>>0===A)A<64?ae[$++]=A:A<256?(ae[$++]=204,ae[$++]=A):A<65536?(ae[$++]=205,ae[$++]=A>>8,ae[$++]=A&255):(ae[$++]=206,zt.setUint32($,A),$+=4);else if(A>>0===A)A>=-32?ae[$++]=256+A:A>=-128?(ae[$++]=208,ae[$++]=A+256):A>=-32768?(ae[$++]=209,zt.setInt16($,A),$+=2):(ae[$++]=210,zt.setInt32($,A),$+=4);else{let C;if((C=this.useFloat32)>0&&A<4294967296&&A>=-2147483648){ae[$++]=202,zt.setFloat32($,A);let T;if(C<4||(T=A*Bg[(ae[$]&127)<<1|ae[$+1]>>7])>>0===T){$+=4;return}else $--}ae[$++]=203,zt.setFloat64($,A),$+=8}else if(S==="object")if(!A)ae[$++]=192;else{if(a){let T=a.get(A);if(T){if(!T.id){let P=a.idsToInsert||(a.idsToInsert=[]);T.id=P.push(T)}ae[$++]=214,ae[$++]=112,zt.setUint32($,T.id),$+=4;return}else a.set(A,{offset:$-i})}let C=A.constructor;if(C===Object)w(A,!0);else if(C===Array){E=A.length,E<16?ae[$++]=144|E:E<65536?(ae[$++]=220,ae[$++]=E>>8,ae[$++]=E&255):(ae[$++]=221,zt.setUint32($,E),$+=4);for(let T=0;T<E;T++)x(A[T])}else if(C===Map){E=A.size,E<16?ae[$++]=128|E:E<65536?(ae[$++]=222,ae[$++]=E>>8,ae[$++]=E&255):(ae[$++]=223,zt.setUint32($,E),$+=4);for(let[T,P]of A)x(T),x(P)}else{for(let T=0,P=Ad.length;T<P;T++){let R=Rg[T];if(A instanceof R){let O=Ad[T];if(O.write){O.type&&(ae[$++]=212,ae[$++]=O.type,ae[$++]=0),x(O.write.call(this,A));return}let U=ae,j=zt,z=$;ae=null;let L;try{L=O.pack.call(this,A,G=>(ae=U,U=null,$+=G,$>zr&&_($),{target:ae,targetView:zt,position:$-G}),x)}finally{U&&(ae=U,zt=j,$=z,zr=ae.length-10)}L&&(L.length+$>zr&&_(L.length+$),$=cz(L,ae,$,O.type));return}}w(A,!A.hasOwnProperty)}}else if(S==="boolean")ae[$++]=A?195:194;else if(S==="bigint"){if(A<BigInt(1)<<BigInt(63)&&A>=-(BigInt(1)<<BigInt(63)))ae[$++]=211,zt.setBigInt64($,A);else if(A<BigInt(1)<<BigInt(64)&&A>0)ae[$++]=207,zt.setBigUint64($,A);else if(this.largeBigIntToFloat)ae[$++]=203,zt.setFloat64($,Number(A));else throw new RangeError(A+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");$+=8}else if(S==="undefined")this.encodeUndefinedAsNil?ae[$++]=192:(ae[$++]=212,ae[$++]=0,ae[$++]=0);else if(S==="function")x(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+S)},w=this.useRecords===!1?this.variableMapSize?A=>{let S=Object.keys(A),E=S.length;E<16?ae[$++]=128|E:E<65536?(ae[$++]=222,ae[$++]=E>>8,ae[$++]=E&255):(ae[$++]=223,zt.setUint32($,E),$+=4);let C;for(let T=0;T<E;T++)x(C=S[T]),x(A[C])}:(A,S)=>{ae[$++]=222;let E=$-i;$+=2;let C=0;for(let T in A)(S||A.hasOwnProperty(T))&&(x(T),x(A[T]),C++);ae[E+++i]=C>>8,ae[E+i]=C&255}:A=>{let S=Object.keys(A),E,C=n.transitions||(n.transitions=Object.create(null)),T=0;for(let R=0,O=S.length;R<O;R++){let U=S[R];E=C[U],E||(E=C[U]=Object.create(null),T++),C=E}let P=C[nl];if(P)P>=96&&m?(ae[$++]=((P-=96)&31)+96,ae[$++]=P>>5):ae[$++]=P;else{P=n.nextId,P||(P=64),P<g&&this.shouldShareStructure&&!this.shouldShareStructure(S)?(P=n.nextOwnId,P<f||(P=g),n.nextOwnId=P+1):(P>=f&&(P=g),n.nextId=P+1);let R=S.highByte=P>=96&&m?P-96>>5:-1;C[nl]=P,n[P-64]=S,P<g?(S.isShared=!0,n.sharedLength=P-63,s=!0,R>=0?(ae[$++]=(P&31)+96,ae[$++]=R):ae[$++]=P):(R>=0?(ae[$++]=213,ae[$++]=114,ae[$++]=(P&31)+96,ae[$++]=R):(ae[$++]=212,ae[$++]=114,ae[$++]=P),T&&(y+=b*T),v.length>=p&&(v.shift()[nl]=0),v.push(C),x(S))}for(let R=0,O=S.length;R<O;R++)x(A[S[R]])},_=A=>{let S;if(A>16777216){if(A-i>a1)throw new Error("Packed buffer would be larger than maximum buffer size");S=Math.min(a1,Math.round(Math.max((A-i)*(A>67108864?1.25:2),4194304)/4096)*4096)}else S=(Math.max(A-i<<2,ae.length-1)>>12)+1<<12;let E=new Ep(S);return zt=new DataView(E.buffer,0,S),ae.copy?ae.copy(E,0,i,A):E.set(ae.slice(i,A)),$-=i,i=0,zr=E.length-10,ae=E}}useBuffer(e){ae=e,zt=new DataView(ae.buffer,ae.byteOffset,ae.byteLength),$=0}};Rg=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,l_];Ad=[{pack(e,t,i){let r=e.getTime()/1e3;if((this.useTimestamp32||e.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:s,targetView:n,position:a}=t(6);s[a++]=214,s[a++]=255,n.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:s,targetView:n,position:a}=t(10);s[a++]=215,s[a++]=255,n.setUint32(a,e.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),i(this.onInvalidDate());let{target:s,targetView:n,position:a}=t(3);s[a++]=212,s[a++]=255,s[a++]=255}else{let{target:s,targetView:n,position:a}=t(15);s[a++]=199,s[a++]=12,s[a++]=255,n.setUint32(a,e.getMilliseconds()*1e6),n.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(e,t,i){let r=Array.from(e),{target:s,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(s[n++]=212,s[n++]=115,s[n++]=0),i(r)}},{pack(e,t,i){let{target:r,position:s}=t(this.structuredClone?3:0);this.structuredClone&&(r[s++]=212,r[s++]=101,r[s++]=0),i([e.name,e.message])}},{pack(e,t,i){let{target:r,position:s}=t(this.structuredClone?3:0);this.structuredClone&&(r[s++]=212,r[s++]=120,r[s++]=0),i([e.source,e.flags])}},{pack(e,t){this.structuredClone?o1(e,16,t):l1(fu?Buffer.from(e):new Uint8Array(e),t)}},{pack(e,t){let i=e.constructor;i!==g_&&this.structuredClone?o1(e,f_.indexOf(i.name),t):l1(e,t)}},{pack(e,t){let{target:i,position:r}=t(1);i[r]=193}}];function o1(e,t,i,r){let s=e.byteLength;if(s+1<256){var{target:n,position:a}=i(4+s);n[a++]=199,n[a++]=s+1}else if(s+1<65536){var{target:n,position:a}=i(5+s);n[a++]=200,n[a++]=s+1>>8,n[a++]=s+1&255}else{var{target:n,position:a,targetView:o}=i(7+s);n[a++]=201,o.setUint32(a,s+1),a+=4}n[a++]=116,n[a++]=t,n.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),a)}function l1(e,t){let i=e.byteLength;var r,s;if(i<256){var{target:r,position:s}=t(i+2);r[s++]=196,r[s++]=i}else if(i<65536){var{target:r,position:s}=t(i+3);r[s++]=197,r[s++]=i>>8,r[s++]=i&255}else{var{target:r,position:s,targetView:n}=t(i+5);r[s++]=198,n.setUint32(s,i),s+=4}r.set(e,s)}function cz(e,t,i,r){let s=e.length;switch(s){case 1:t[i++]=212;break;case 2:t[i++]=213;break;case 4:t[i++]=214;break;case 8:t[i++]=215;break;case 16:t[i++]=216;break;default:s<256?(t[i++]=199,t[i++]=s):s<65536?(t[i++]=200,t[i++]=s>>8,t[i++]=s&255):(t[i++]=201,t[i++]=s>>24,t[i++]=s>>16&255,t[i++]=s>>8&255,t[i++]=s&255)}return t[i++]=r,t.set(e,i),i+=s,i}function dz(e,t){let i,r=t.length*6,s=e.length-r;for(t.sort((n,a)=>n.offset>a.offset?1:-1);i=t.pop();){let n=i.offset,a=i.id;e.copyWithin(n+r,n,s),r-=6;let o=n+r;e[o++]=214,e[o++]=105,e[o++]=a>>24,e[o++]=a>>16&255,e[o++]=a>>8&255,e[o++]=a&255,s=n}return e}function Uo(e){if(e.Class){if(!e.pack&&!e.write)throw new Error("Extension has no pack or write function");if(e.pack&&!e.type)throw new Error("Extension has no type (numeric code to identify the extension)");Rg.unshift(e.Class),Ad.unshift(e)}az(e)}var y_=new v_({useRecords:!1}),IV=y_.pack,BV=y_.pack,{NEVER:RV,ALWAYS:NV,DECIMAL_ROUND:zV,DECIMAL_FIT:FV}=oz,uz=512,pz=1024,h1=new v_({structuredClone:!0});Uo({Class:Yt.prototype.constructor,type:1,write(e){return{...e}},read(e){return Object.setPrototypeOf(e,Yt.prototype),e}});Uo({Class:st.prototype.constructor,type:2,write(e){return[...e]},read(e){return Object.setPrototypeOf(e,st.prototype),e}});Uo({Class:Ri.prototype.constructor,type:3,write(e){return[...e]},read(e){return Object.setPrototypeOf(e,Ri.prototype),e}});Uo({Class:Ky.prototype.constructor,type:4,write(e){return e.id},read(e){return new Ky(e)}});Uo({Class:Jy.prototype.constructor,type:5,write(e){return e.data},read(e){return new Jy(e)}});Uo({Class:ni.prototype.constructor,type:6,write(e){return{...e}},read(e){return Object.setPrototypeOf(e,ni.prototype),e}});function fz(e){var t=0;if(e.length===0)return t;for(let i=0;i<e.length;i++){let r=e[i];t=(t<<5)-t+r,t=t&t}return t}function qf(e){if(Cg(e))return e;if(Array.isArray(e))return e.map(qf);if(typeof e=="object"&&e!==null){let t={};for(let i of Object.keys(e).sort())t[i]=qf(e[i]);return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),t}else return e}var Qf;(e=>{function t(s){return h1.pack(s)}e.serialize=t;function i(s){return h1.unpack(s)}e.deserialize=i;function r(s){return fz(t(qf(s))).toString()}e.checksum=r})(Qf||(Qf={}));var al={LookAt:[],Follow:[],MouseHover:["Transition"],Scroll:["Transition"],Start:["Transition","Audio","Video"],Conditional:["Transition","Audio","Video"],MouseDown:["Transition","Audio","Video","Link","Reset"],MouseUp:["Transition","Audio","Video","Link","Reset"],MousePress:["Transition","Audio","Video","Link","Reset"],KeyDown:["Transition","Audio","Video","Link","Reset"],KeyUp:["Transition","Audio","Video","Link","Reset"],KeyPress:["Transition","Audio","Video","Link","Reset"],GameControl:["Transition","Audio"],Collision:["Transition","Audio"]},c1;(e=>{function t(r){return r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress"||r.type==="KeyDown"||r.type==="KeyUp"||r.type==="KeyPress"}e.is=t;function i(r){return r==="MouseDown"||r==="MouseUp"||r==="MousePress"?{type:r,disabled:!1,toggle:!1,actions:new st}:{type:r,disabled:!1,key:void 0,toggle:!1,actions:new st}}e.defaultData=i})(c1||(c1={}));var Md;(e=>{function t(i){return{type:"Property",value:[i??null,"position","x"]}}e.propertyDefaultData=t,e.valueDefaultData={type:"Literal",value:0}})(Md||(Md={}));var Zf;(e=>{function t(s){return{type:"Comparison",operator:"==",lOperand:Md.propertyDefaultData(s),rOperand:{...Md.valueDefaultData}}}e.comparisonDefaultData=t;function i(s){return{type:"Distance",toObject:s??null,fromObject:s??null,distance:200}}e.distanceDefaultData=i;function r(s,n){return{type:"State",object:s??null,state:n??null}}e.stateDefaultData=r})(Zf||(Zf={}));var d1;(e=>{function t(r){return r.type==="Conditional"}e.is=t;function i(r){return{type:"Conditional",disabled:!1,inActions:new st,outActions:new st,condition:Zf.distanceDefaultData(r)}}e.defaultData=i})(d1||(d1={}));var u1;(e=>e.defaultData={type:"Follow",disabled:!1,maxDelta:0,dampingFactor:1,plane:"custom",resetOnPointerLeave:!0})(u1||(u1={}));var p1;(e=>e.defaultData={type:"LookAt",disabled:!1,distance:1e3,dampingFactor:1,tilt:"up",axis:"z",plane:"custom",resetOnPointerLeave:!0})(p1||(p1={}));var f1;(e=>{function t(r){return r.type==="MouseHover"}e.is=t;function i(){return{type:"MouseHover",disabled:!1,actions:new st}}e.defaultData=i})(f1||(f1={}));var m1;(e=>{function t(r){return r.type==="Scroll"}e.is=t;function i(){return{type:"Scroll",disabled:!1,steps:100,actions:new st}}e.defaultData=i})(m1||(m1={}));var g1;(e=>{function t(r){return r.type==="Start"}e.is=t;function i(){return{type:"Start",disabled:!1,actions:new st}}e.defaultData=i})(g1||(g1={}));var v1;(e=>{function t(r){return r.type==="Collision"}e.is=t;function i(){return{type:"Collision",disabled:!1,toggle:!1,target:"character",actions:new st}}e.defaultData=i})(v1||(v1={}));var eo;(e=>{function t(r,s){return r[0]===s[0]&&r[1]===s[1]}e.isEqual=t;function i(r,s,n){return[r[0]+(s[0]-r[0])*n,r[1]+(s[1]-r[1])*n]}e.lerp=i})(eo||(eo={}));var $n;(e=>{function t(o,l){return o[0]===l[0]&&o[1]===l[1]&&o[2]===l[2]}e.isEqual=t;function i(o,l){return[o[0]+l[0],o[1]+l[1],o[2]+l[2]]}e.add=i;function r(o,l){return[o[0]-l[0],o[1]-l[1],o[2]-l[2]]}e.sub=r;function s(o,l){return[o[0]/l[0],o[1]/l[1],o[2]/l[2]]}e.div=s;function n(o,l){return[o[0]*l[0],o[1]*l[1],o[2]*l[2]]}e.mul=n;function a(o,l,h){return[o[0]+(l[0]-o[0])*h,o[1]+(l[1]-o[1])*h,o[2]+(l[2]-o[2])*h]}e.lerp=a})($n||($n={}));var Ed;(e=>{function t(r,s){return r[0]===s[0]&&r[1]===s[1]&&r[2]===s[2]&&r[3]===s[3]}e.isEqual=t;function i(r,s,n){return[r[0]+(s[0]-r[0])*n,r[1]+(s[1]-r[1])*n,r[2]+(s[2]-r[2])*n,r[3]+(s[3]-r[3])*n]}e.lerp=i})(Ed||(Ed={}));var Mo;(e=>{e.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(s,n){for(let a=0;a<16;a++)if(s[a]!==n[a])return!1;return!0}e.isEqual=t;function i(s){return s??e.identity}e.simplify=i;function r(s,n){let a=n.slice(0);for(var o=0,l=n.length;o<l;o+=3){let h=s[3]*n[o]+s[7]*n[o+1]+s[11]*n[o+2]+s[15];a[o]=(s[0]*n[o]+s[4]*n[o+1]+s[8]*n[o+2]+s[12])/h,a[o+1]=(s[1]*n[o]+s[5]*n[o+1]+s[9]*n[o+2]+s[13])/h,a[o+2]=(s[2]*n[o]+s[6]*n[o+1]+s[10]*n[o+2]+s[14])/h}return a}e.applyMatrix4=r})(Mo||(Mo={}));var Vi;(e=>{function t(o){return typeof o=="object"&&typeof o.r=="number"&&typeof o.g=="number"&&typeof o.b=="number"}e.isRGB=t,e.white={r:1,g:1,b:1},e.red={r:1,g:0,b:0},e.black={r:0,g:0,b:0};function i(o){return{r:Math.round(o.r*255),g:Math.round(o.g*255),b:Math.round(o.b*255),a:1}}e.toRgb255a1=i;function r(o){return{r:o.r,g:o.g,b:o.b}}e.clone=r;function s(o){return o=Math.floor(o),{r:(o>>16&255)/255,g:(o>>8&255)/255,b:(o&255)/255}}e.fromHex=s;function n(o,l){return o.r===l.r&&o.g===l.g&&o.b===l.b}e.equals=n;function a(o,l,h){return{r:o.r+(l.r-o.r)*h,g:o.g+(l.g-o.g)*h,b:o.b+(l.b-o.b)*h}}e.lerp=a})(Vi||(Vi={}));var Tr;(e=>{e.white={...Vi.white,a:1},e.transparent={...Vi.white,a:0};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}e.from0to1=t;function i(a,o){return{...Vi.fromHex(a),a:o}}e.fromHexAndA=i;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}e.toRgb255a1=r;function s(a,o){return Vi.equals(a,o)&&a.a===o.a}e.equals=s;function n(a,o,l){return{r:a.r+(o.r-a.r)*l,g:a.g+(o.g-a.g)*l,b:a.b+(o.b-a.b)*l,a:a.a+(o.a-a.a)*l}}e.lerp=n})(Tr||(Tr={}));var Kf;(e=>e.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Kf||(Kf={}));var y1;(e=>e.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(y1||(y1={}));var x1;(e=>e.defaultData={control1:[.5,.05],control2:[.1,.3]})(x1||(x1={}));var na;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(i){return e.all.includes(i)}e.is=t})(na||(na={}));var nh;(e=>{e.DefaultUp=[0,1,0],e.DefaultTargetOffset=1e3,e.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:e.DefaultUp,isUpVectorFlipped:!1,targetOffset:e.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}e.getZoom=t})(nh||(nh={}));var on;(e=>{function t(r,s=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[r[0]+r[0]*s,0,0]},grid:{count:[2,2,2],size:r.map(n=>n*(1+s)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=t;function i(r,s){let n={...r};if(x_.forEach(a=>{Object.assign(n,{[a]:s[a]??r[a]})}),n.radial={...r.radial},s.radial){let a=r.radial,o=s.radial;b_.forEach(l=>{Object.assign(n.radial,{[l]:o[l]??a[l]})})}if(n.linear={...r.linear},s.linear){let a=r.linear,o=s.linear;w_.forEach(l=>{Object.assign(n.linear,{[l]:o[l]??a[l]})})}if(n.grid={...r.grid},s.grid){let a=r.grid,o=s.grid;__.forEach(l=>{Object.assign(n.grid,{[l]:o[l]??a[l]})})}if(n.toObject={...r.toObject},s.toObject){let a=r.toObject,o=s.toObject;S_.forEach(l=>{Object.assign(n.toObject,{[l]:o[l]??a[l]})})}if(n.randomnessObject={...r.randomnessObject},s.randomnessObject){let a=r.randomnessObject,o=s.randomnessObject;A_.forEach(l=>{Object.assign(n.randomnessObject,{[l]:o[l]??a[l]})})}return n}e.merge=i})(on||(on={}));var Jf;(e=>{e.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function i(r,s){let n=[];r.count!==void 0&&n.push({type:0,path:s,props:{count:r.count}});for(let a of t){let o=r[a];o&&Object.keys(o).length>0&&n.push({type:0,path:[...s,a],props:o})}return n}e.toOps=i})(Jf||(Jf={}));var x_=["count"],b_=["radius","start","end","position","scale","rotation"],w_=["position","scale","rotation"],__=["count","size"],S_=["count","position","scale","rotation"],A_=["strength","scale","rotation","position","movement","seed","freqScale"],ah;(e=>{let t={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...t,blendFunction:16,granularity:15},bloom:{...t,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...t,offset:[2,2]},vignette:{...t,darkness:1,offset:0},hueSaturation:{...t,hue:3,saturation:0},brightnessContrast:{...t,brightness:.25,contrast:0},depthOfField:{...t,focalLength:2,focusDistance:2,bokehScale:2},noise:{...t,blendFunction:16}}})(ah||(ah={}));var $f;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(i){return e.all.includes(i)}e.is=t})($f||($f={}));var em;(e=>{function t(r){return i(r)}e.defaultData=t;function i(r){if(r==="PointLight")return{type:r,color:Tr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Tr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Tr.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(em||(em={}));var tm;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(i,r){return i.castShadow===r.castShadow&&i.receiveShadow===r.receiveShadow}e.equals=t})(tm||(tm={}));var im;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(i,r){return i.flatShading===r.flatShading&&i.side===r.side&&i.wireframe===r.wireframe}e.equals=t})(im||(im={}));var rm;(e=>e.defaultData={...im.defaultData,...tm.defaultData})(rm||(rm={}));var Cd;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Cd||(Cd={}));var M_=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],mz=["wrapping","image","video"],or;(e=>{function t(n,a){let{texture:o,...l}=a;if(Object.assign(n,l),o){let h=n.texture;h&&Object.assign(h,o)}}e.patch=t;function i(n,a){return n==="light"&&a?r(a):s(n)}e.defaultData=i;function r(n){switch(n){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function s(n){switch(n){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:Cd.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Vi.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Vi.fromHex(6710886),a:1},colorB:{...Vi.fromHex(6710886),a:1},colorC:{...Vi.fromHex(16777215),a:1},colorD:{...Vi.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Tr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Tr.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Tr.fromHexAndA(0,1),contourColor:Tr.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(or||(or={}));var Qi;(e=>{function t(h){return!h.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}e.isMergable=t;function i(h){let u="";return h.layers.forEach(c=>{Object.entries(c.data).forEach(([d,p])=>{u+=`${d}${p}`,Array.isArray(p)?p.forEach(m=>u+=`${m}`):typeof p=="object"?Object.values(p).forEach(m=>{typeof m=="number"?u+=`${m.toFixed(4)}`:u+=`${m}`}):u+=`${p}`})}),u}e.getHash=i;function r(){return{layers:new st}}e.defaultEmptyData=r;function s(h="layer1",u="layer2"){return a("phong",h,u)}e.defaultData=s;function n(h,u){return{...h,name:u}}e.withName=n;function a(h,u="layer1",c="layer2"){let d=new st;return d.push({fi:0,data:or.defaultData("light",h),id:u}),d.push({fi:1,data:or.defaultData("color"),id:c}),{layers:d}}e.defaultTwoLayerData=a;function o(h,u="phong",c="layer1",d="layer2"){let p=or.defaultData("texture");Object.assign(p.texture,{image:h});let m=new st;return m.push({fi:0,data:p,id:c}),m.push({fi:1,data:or.defaultData("light",u),id:d}),{layers:m}}e.defaultTwoLayerTextureData=o;function l(h,u="phong",c="layer1",d="layer2"){let p=or.defaultData("video");Object.assign(p.texture,{video:h});let m=new st;return m.push({fi:0,data:p,id:c}),m.push({fi:1,data:or.defaultData("light",u),id:d}),{layers:m}}e.defaultTwoLayerVideoTextureData=l})(Qi||(Qi={}));var Td;(e=>{function t(){return{points:new st,roundness:0,shapeHoles:[],isClosed:!1}}e.defaultData=t})(Td||(Td={}));var Pd;(e=>{function t(i){return i==="PolygonGeometry"||i==="RectangleGeometry"||i==="StarGeometry"||i==="TriangleGeometry"||i==="EllipseGeometry"}e.is2DParametricMesh=t})(Pd||(Pd={}));var ho;(e=>{function t(i){if(i==="RectangleGeometry")return{width:320,height:320,type:i,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(i==="VectorGeometry")return{width:1,height:1,type:i,subdivisions:12,shape:Td.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(i==="BooleanGeometry")return{type:i,operation:2,width:0,height:0,depth:0,phongAngle:35};if(i==="TextGeometry")return{type:i,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}e.defaultData=t})(ho||(ho={}));var b1;(e=>{function t(r){return r==="Component"||r==="Instance"}e.isComponentRelated=t;function i(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=i})(b1||(b1={}));var Eo;(e=>{e.identity={...Kf.identity,hiddenMatrix:Mo.identity};function t(s){return{position:s.position,rotation:s.rotation,scale:s.scale,hiddenMatrix:s.hiddenMatrix}}e.fromObject=t;function i(s,n){return{position:n?.position||s.position,rotation:n?.rotation||s.rotation,scale:n?.scale||s.scale,hiddenMatrix:n?.hiddenMatrix||s.hiddenMatrix}}e.merge=i;function r(s,n){return{position:$n.isEqual(s.position,n.position)?null:n.position,rotation:$n.isEqual(s.rotation,n.rotation)?null:n.rotation,scale:$n.isEqual(s.scale,n.scale)?null:n.scale,hiddenMatrix:Mo.isEqual(s.hiddenMatrix,n.hiddenMatrix)?null:n.hiddenMatrix}}e.diff=r})(Eo||(Eo={}));var sm;(e=>e.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(sm||(sm={}));var dr;(e=>e.defaultData={states:new st,events:new st,visible:!0,raycastLock:!1,physics:null,...Eo.identity,cloner:null})(dr||(dr={}));var w1;(e=>e.defaultData={type:"Empty",...dr.defaultData})(w1||(w1={}));var _1;(e=>e.defaultData={type:"Component",...dr.defaultData})(_1||(_1={}));var co;(e=>e.defaultData={type:"Mesh",...dr.defaultData,...rm.defaultData})(co||(co={}));var Dd;(e=>e.defaultData={...dr.defaultData,...Eo.identity,...nh.defaultData})(Dd||(Dd={}));var nm;(e=>{function t(i){return{...dr.defaultData,...em.defaultData(i)}}e.defaultData=t})(nm||(nm={}));var Od;(e=>{function t(r,s,n=0){for(;n<s.length;){let a=r?r[s[n]]:void 0;if(s.length===n+1)return a;if(a)r=a.descendants,n+=1;else return}}e.resolveWithDes=t;function i(r,s,n=0){let a=t(r,s,n);if(a){let o=Object.keys(a);if(o.length===1&&o[0]==="descendants")return}return a}e.resolve=i})(Od||(Od={}));var Co;(e=>{e.rootOverrideProps=["physics"],e.compositeNonOptionalOverrideProps=["geometry"],e.compositeEntireOverrideOverrideProps=["material"];function t(r,s){return{...dr.defaultData,...s,component:r,overrides:new ni,physics:void 0,type:"Instance"}}e.ofComponent=t;function i(r){let s=Eo.fromObject(r.data);return t(r.id,s)}e.fromComponentData=i})(Co||(Co={}));var am;(e=>(e.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Mo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:sm.defaultData,states:new st,events:new st,cloner:null,...nh.defaultData},e.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},e.defaultMeshObject={name:"Rectangle",...dr.defaultData,...co.defaultData,geometry:ho.defaultData("RectangleGeometry"),material:Qi.defaultTwoLayerData("phong","layer1","layer2")},e.defaultBooleanObject={name:"Boolean",...dr.defaultData,...co.defaultData,geometry:ho.defaultData("BooleanGeometry"),material:Qi.defaultTwoLayerData("phong","layer1","layer2")},e.defaultTextObject={name:"Text",...dr.defaultData,...co.defaultData,geometry:ho.defaultData("TextGeometry"),material:Qi.defaultTwoLayerData("phong","layer1","layer2")}))(am||(am={}));var Wn;(e=>{function t(n,a){let o={name:a};return n.type==="Mesh"?(o.geometry={},"material"in n&&(o.material={layers:new ni}),"materials"in n&&(o.materials=n.materials.map(l=>({layers:new ni})))):na.is(n.type)&&(o.perspective={},o.orthographic={}),o}e.newEmpty=t;function i(n,a){if(a===void 0)return n;let o={...n};return"material"in o&&"material"in a&&a.material&&(o.material=_d(o.material,l=>{if(typeof l!="string")for(let[h,u]of Object.entries(a.material.layers)){let c=l.layers.data(h);c&&or.patch(c,u)}}).data),o.materials&&a.materials&&(o.materials=_d(o.materials,l=>{for(let h=0;h<o.materials.length;h++){let u=a.materials[h];if(typeof u!="string")for(let[c,d]of Object.entries(u.layers)){let p=l[h]?.layers?.data(c);p&&or.patch(p,d)}}}).data),o}function r(n,a){let o,l=[],h={orthographic:0,perspective:0,geometry:0};function u(c,d){for(let[p,m]of Object.entries(d.layers)){let{texture:g,...f}=m;if(g!==void 0&&Object.keys(g).length>0){let v={path:[...c,"layers",p,"texture"],props:g,type:0};l.push(v)}if(Object.keys(f).length>0){let v={path:[...c,"layers",p],props:f,type:0};l.push(v)}}}for(let[c,d]of Object.entries(a))if(c!=="name")if(c==="cloner")l.push(...Jf.toOps(d,["cloner"]));else if(c==="material")u(["material"],d);else if(c==="materials")for(let[p,m]of Object.entries(d))u(["materials",p],m);else if(h[c]===0){if(Object.keys(d).length>0){let p={path:[c],props:d,type:0};l.push(p)}}else o===void 0&&(o={path:[],props:{},type:0},l.push(o)),o.props[c]=d;return l}e.toOps=r;function s(n,a){if(a===void 0)return n;let o={...n};if(Object.assign(o,Eo.merge(o,a)),na.is(n.type)){o.orthographic={...o.orthographic},o.perspective={...o.perspective};let l=a;l.orthographic?.zoom!==void 0&&(o.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(o.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(o.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(o.targetOffset=l.targetOffset)}else if(n.type==="Mesh")a.geometry&&(o.geometry={...o.geometry},Object.assign(o.geometry,a.geometry)),(a.material||a.materials)&&(o=i(o,a)),o.cloner&&"cloner"in a&&Object.assign(o,{cloner:on.merge(o.cloner,a.cloner)});else if(n.type==="Empty")o.cloner&&"cloner"in a&&Object.assign(o,{cloner:on.merge(o.cloner,a.cloner)});else if($f.is(n.type)){let l=a;l.intensity!==void 0&&(o.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?o.color=l.color:o.color=Vi.clone(l.color))}return o}e.patch=s})(Wn||(Wn={}));var Ld;(e=>e.defaultData={enabled:!1,useBackgroundColor:!1,color:Vi.white,near:.1,far:2e3})(Ld||(Ld={}));var Id;(e=>e.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(Id||(Id={}));var To;(e=>e.defaultData={orbitControls:Id.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:typeof window<"u"?Math.floor(window.devicePixelRatio):1,stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((t,i)=>{let r=0,s=0;return i<5?s=-30:i<10&&(s=30),i===0||i===10||i===5?r=30:(i===4||i===11||i===9)&&(r=-30),[120,[r,s],"show"]}),gameControlObject:null})(To||(To={}));function ko(e,t){return Object.setPrototypeOf(e,t),e}var gz=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),vz=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),yz=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||mu&&"ontouchend"in document,xz=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,bz=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,wz=()=>{if(typeof window>"u")return!1;let e=navigator.userAgent,t=navigator.vendor;return/Safari/i.test(e)&&/Apple Computer/.test(t)},_z=()=>{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]},UV=gz(),mu=vz(),om=yz(),Sz=xz(),Si=bz(),Bd=wz(),Rd=Number(_z()),aa=void 0!=="true";function E_(e){return Array.isArray(e)?e:[e]}function Az(e,t){let i=0;for(;i<e.length&&i<t.length;){if(e[i]<t[i])return-1;if(e[i]>t[i])return 1;i+=1}return i!==t.length?-1:i!==e.length?1:0}function fc(e){return mu?e.metaKey:e.ctrlKey}var qe=[],Nd={},Pl={},Kc={};function C_(e){qe.includes(e)||qe.push(e)}function uo(e){delete Nd[e.pointerId];for(let t=0;t<qe.length;t++)if(qe[t].pointerId===e.pointerId){qe.splice(t,1);break}}function Mz(){qe.splice(0,qe.length)}function zd(e){if(e.pointerType!=="touch")return;let t=Nd[e.pointerId];t===void 0&&(t={x:0,y:0},Nd[e.pointerId]=t),t.x=e.pageX,t.y=e.pageY}function Cp(e){let t=e.pointerId===qe[0].pointerId?qe[1]:qe[0];return Nd[t.pointerId]}function T_(e){Pl[e.key]=!0,Kc[e.key]=Kc[e.key]===void 0?1:Kc[e.key]+1}function P_(e){if(mu&&Pl.Meta)for(let t in Pl)Pl[t]=!1;else Pl[e.key]=!1;Kc={}}function Ez(e){e.addEventListener("pointerdown",C_,!0),e.addEventListener("pointerdown",zd,!0),e.addEventListener("pointermove",zd,!0),e.addEventListener("pointerup",uo,!0),e.addEventListener("pointercancel",uo,!0),e.addEventListener("pointerleave",uo,!0),window.addEventListener("keydown",T_,!0),window.addEventListener("keyup",P_,!0)}function Cz(e){e.removeEventListener("pointerdown",C_,!0),e.removeEventListener("pointerdown",zd,!0),e.removeEventListener("pointermove",zd,!0),e.removeEventListener("pointerup",uo,!0),e.removeEventListener("pointercancel",uo,!0),e.removeEventListener("pointerleave",uo,!0),window.removeEventListener("keydown",T_,!0),window.removeEventListener("keyup",P_,!0)}var Hi;(e=>e.defaultData={ambientLight:{enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75,depth:100,groundColor:{r:.5098039215686274,g:.5098039215686274,b:.5098039215686274},softShadows:!0,softShadowQuality:"low"},usePhysics:!1,gravity:-10,pixelsPerMeter:200,skinWidthRelative:.02,stepThreshRelative:.3,slopeThresh:65})(Hi||(Hi={}));var lm;(e=>{e.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(s={withLight:!0,withSquare:!0}){let n=new Ri,a=am.defaultMeshObject;return s.withLight===!0&&n.push({fi:-1,data:{...nm.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7},id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),s.withSquare===!0&&n.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:a,children:[]}),n}e.defaultData={backgroundColor:Tr.fromHexAndA(1908256,1),postprocessing:ah.defaultData,fog:Ld.defaultData,objects:t(),environment:Hi.defaultData,publish:To.defaultData},e.emptyData=function(s){return{backgroundColor:Tr.fromHexAndA(1908256,1),postprocessing:ah.defaultData,fog:Ld.defaultData,objects:s?t(s):new Ri,environment:Hi.defaultData,publish:To.defaultData}};function i(s){return{...e.defaultData,objects:ko(s,Ri.prototype)}}e.withObjs=i;function r(s,n){return i([{id:s,data:n,children:[],fi:0}])}e.withObj=r})(lm||(lm={}));var Fd;(e=>{function t(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},ko(r,Yt.prototype)}e.defaultColors=t;function i(){return{materials:new Yt,images:new Yt,videos:new Yt,colors:new Yt,audios:new Yt,fonts:new Yt,penumbraSize:[.5,.5,.5]}}e.emptyData=i})(Fd||(Fd={}));function S1(e){e.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let i=t.colorA,r=t.colorB,s=[[i.r,i.g,i.b,i.a],[r.r,r.g,r.b,r.a]],n=[0,1];for(let o=2;o<10;o++)s.push(s[1]),n.push(1);let a={...yd(fi(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:s,steps:n,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let i={...fi(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,i)}})}function Jc(e,t){Object.values(e.shared.materials).forEach(i=>t(i))}function $c(e,t){e.scene.objects.traverse((i,r)=>{"materials"in r?r.materials.forEach(s=>{typeof s!="string"&&t(s)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function Tz(e){Object.assign(e.scene.publish,{orbitControls:{...Id.defaultData,...fi(e.scene.publish.orbitControls)}})}function Pz(e){Object.assign(e.scene.publish.settings,{video:{...To.defaultData.settings.video,...fi(e.scene.publish.settings.video)}})}function Dz(e){function t(i){if(i.layers){for(let r of Object.values(i.layers))if(r){for(let[s,n]of Object.entries(r))if((M_.includes(s)||typeof n=="boolean")&&delete r[s],s==="texture")for(let[a,o]of Object.entries(n))(mz.includes(a)||typeof o=="boolean")&&delete n[a]}}}e.scene.objects.traverse((i,r)=>{r.states.forEach(s=>{let n=s;n.material?t(n.material):n.materials&&n.materials.forEach(a=>{t(a)})})})}function Oz(e){e.scene.publish.withBackground=!0}function Lz(e){e.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Iz(e){e.scene.objects.traverse((t,i)=>{let r=i.cloner;r&&(r.radial.scale=r.radial.scale.map(s=>s+1),r.linear.scale=r.linear.scale.map(s=>s+1))})}function Bz(e){e.scene.objects.traverse((t,i)=>{let r=i.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function Rz(e){e.scene.objects.traverse((t,i)=>{let r=e.scene.objects.unproxy().parent(t);if(r){let s=fi(e.scene.objects.data(r));s&&s.type==="Mesh"&&s.geometry.type==="BooleanGeometry"&&i.type==="Mesh"&&(i.visible=fi(i).booleanExclude!==!0)}})}function Nz(e){e.scene.objects.traverse((t,i)=>{if(i.type==="Mesh"){let r=i;i.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function zz(e){function t(r){Object.setPrototypeOf(r,ni.prototype),r.texture&&Object.setPrototypeOf(r.texture,ni.prototype)}function i(r){Object.setPrototypeOf(r,ni.prototype);for(let s in r)t(r[s])}e.scene.objects.traverse((r,s)=>{s.states.forEach(n=>{let a=n;if(a.material){let o=fi(a.material).layers;i(o),a.material.layers=o}if(a.materials)for(let o=0;o<a.materials.length;o++){let l=a.materials[o],h=fi(l).layers;i(h),l.layers=h}})})}function A1(e){e.layers===void 0&&Object.assign(e,Qi.defaultTwoLayerData("lambert"))}function Tp(e){!e.layers||e.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let i=[...t.colors];i.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let s={...fi(t),colors:i,steps:r};Object.assign(t,s)}})}function Fz(e){e.scene.objects.traverse((t,i)=>{i.type==="Mesh"&&(i.geometry.type==="BooleanGeometry"||i.geometry.type==="SubdivGeometry")&&(i.geometry.phongAngle=35)})}function M1(e){e.scene.objects.traverse((t,i)=>{"materials"in i?i.materials.forEach(r=>{typeof r!="string"&&Tp(r)}):"material"in i&&typeof i.material!="string"&&Tp(i.material)}),Object.values(e.shared.materials).forEach(t=>Tp(t))}function Uz(e){e.scene.environment.ambientLight.softShadows=!1,e.scene.environment.ambientLight.softShadowQuality="low",e.scene.objects.traverse((t,i)=>{(i.type==="DirectionalLight"||i.type==="SpotLight")&&(i.shadowResolution=1024,i.shadowRadius=1,i.depth=1e5)}),e.shared.penumbraSize=new Array(5).fill(.5)}function kz(e){e.shared.audios=ko({},Yt.prototype)}function jz(e){e.shared.videos=ko({},Yt.prototype)}function Hz(e){let t=e.shared.materials;Object.entries(t).forEach(([i,r])=>{if(!r.layers){let s={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[i]:s})}})}function Gz(e){Object.entries(fi(e.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete e.shared.images[t]}),Object.entries(fi(e.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete e.shared.audios[t]})}function Vz(e){e.scene.publish.settings.web.preload=!1}function E1(e){e.layers&&e.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function Wz(e){e.shared.fonts=ko({},Yt.prototype)}function Xz(e){return e.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function Yz(e){let t=[];e.scene.objects.traverse((i,r)=>{let s=r;if(s.type==="TextFrame"){let n=Qi.defaultTwoLayerData("phong"),a=typeof s.color=="string"?e.shared.colors[s.color]:s.color;n.layers[1].data.color={r:a.r,g:a.g,b:a.b},n.layers[1].data.alpha=s.alpha;let o=Xz(s.font);e.shared.fonts[o]===void 0&&(e.shared.fonts[o]={name:o});let l={name:s.name,...dr.defaultData,...co.defaultData,flatShading:!1,wireframe:!1,geometry:{...ho.defaultData("TextGeometry"),width:s.width,height:s.height,font:o,depth:0,horizontalAlign:s.horizontalAlign,verticalAlign:s.verticalAlign,fontSize:s.fontSize*1.40625,lineHeight:s.lineHeight/1.40625,letterSpacing:s.letterSpacing-1,text:s.text,textTransform:s.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:n,states:fi(s.states),events:fi(s.events),visible:s.visible,raycastLock:s.raycastLock,position:s.position,rotation:s.rotation,scale:s.scale,hiddenMatrix:s.hiddenMatrix},h=fi(e.scene.objects).parent(i);e.scene.objects.insertAfter(h??null,i,[{id:i+"new",data:l,children:[]}]),t.push(i)}}),t.forEach(i=>{e.scene.objects.delete(i)})}function qz(e){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};e.scene.objects.traverse((i,r)=>{r.events.forEach(s=>{if(t[Number(s.type)])if(Object.assign(s,{type:t[Number(s.type)]}),s.type==="Audio"&&"audioEvent"in s&&(Object.assign(s,{playAudio:s.audioEvent}),delete s.audioEvent),s.type==="GameControl")Object.assign(s,{gameActions:{idle:new st,move:new st,jump:new st}});else{let n=new st;Object.assign(s,{actions:n}),(s.type==="MouseDown"||s.type==="MouseUp"||s.type==="KeyDown"||s.type==="KeyUp")&&"url"in s&&n.push({fi:0,id:rt.generateUUID(),data:{type:"Link",url:s.url,delay:0}}),"targets"in s&&(s.targets.forEach((a,o,l)=>{let h={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,yd(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let c={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...c,...u},p={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new st({fi:0,id:rt.generateUUID(),data:h},{fi:1,id:rt.generateUUID(),data:d})};n.push({fi:l,id:o,data:p})}),delete s.targets)}})})}function Qz(e){e.scene.objects.traverse((t,i)=>{function r(s,n){let a=new st,o=[];if(i.events.forEach((l,h,u)=>{if(l.type==="Audio"&&l.trigger===n){let c;o.push(h),l.interaction==="play"?c={...yd(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(c={...yd(l,"interaction","delay","object","playAudio"),type:"Audio"}),c&&a.push({fi:u,id:h,data:c})}}),o.forEach(l=>i.events.delete(l)),a.length){let l=i.events.find(h=>h.type===s)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):i.events.insertBefore(null,[{id:rt.generateUUID(),data:{type:s,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function C1(e){let t=e.layers.find(i=>i.type==="light")?.data;if(t?.category==="basic"){let i=or.defaultData("light","phong"),r=t;Object.assign(r,i),r.visible=!1}}function T1(e){Jc(e,C1),$c(e,C1)}function Zz(e){e.scene.objects.traverse((t,i)=>{i.type==="Mesh"&&i.geometry.type==="SubdivGeometry"&&(i.geometry.scaleBaked||(i.geometry.scaleBaked=[1,1,1]))})}function Kz(e){e.scene.objects.traverse((t,i)=>{(i.type==="Empty"||i.type==="Mesh")&&i.cloner&&!i.cloner.randomnessObject&&!i.cloner.toObject&&!i.cloner.randomness&&(i.cloner={...i.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function Jz(e){e.scene.objects.traverse((t,i)=>{i.type==="Mesh"&&i.geometry.type==="NonParametricGeometry"&&!("material"in i)&&!("materials"in i)&&(i.material=Qi.defaultTwoLayerData("phong"))})}function $z(e){e.scene.publish.orbitControls.autoZoom===void 0&&(e.scene.publish.orbitControls.autoZoom=!1),e.scene.objects.traverse((t,i)=>{(i.type==="OrthographicCamera"||i.type==="PerspectiveCamera")&&(i.orthographic.autoZoom===void 0&&(i.orthographic.autoZoom=!1),i.orthographic.autoZoomFrustumSize===void 0&&(i.orthographic.autoZoomFrustumSize=790))})}function eF(e){e.scene.publish.mouseEventTarget===void 0&&(e.scene.publish.mouseEventTarget="canvas"),e.scene.publish.settings.web.hint===void 0&&(e.scene.publish.settings.web.hint=!1)}var P1=32;function tF(e){let t=e.schema??0;t!==P1&&(console.warn("updating from ",t,"to ",P1),t<1&&($c(e,S1),Jc(e,S1),e.schema=1),t<2&&(Tz(e),e.schema=2),t<3&&(Dz(e),e.schema=3),t<4&&(Oz(e),e.schema=4),t<5&&(Lz(e),e.schema=5),t<6&&(Iz(e),e.schema=6),t<7&&(Bz(e),e.schema=7),t<8&&(e.schema=8),t<9&&(M1(e),e.schema=9),t<10&&(Fz(e),e.schema=10),t<11&&(Uz(e),e.schema=11),t<12&&(M1(e),e.schema=12),t<13&&(kz(e),e.schema=13),t<14&&(Hz(e),e.schema=14),t<15&&(Gz(e),e.schema=15),t<16&&(Vz(e),e.schema=16),t<17&&($c(e,E1),Jc(e,E1),e.schema=17),t<18&&($c(e,A1),Jc(e,A1),e.schema=18),t<19&&(Pz(e),e.schema=19),t<20&&(Wz(e),Yz(e),e.schema=20),t<21&&(qz(e),Qz(e),e.schema=21),t<22&&(T1(e),e.schema=22),t<23&&(Zz(e),e.schema=23),t<24&&(Kz(e),e.schema=24),(t<25||e.shared.videos===void 0)&&(jz(e),t<25&&(e.schema=25)),t<26&&(Rz(e),e.schema=26),t<27&&(Nz(e),e.schema=27),t<28&&(T1(e),e.schema=28),t<29&&(zz(e),e.schema=29),t<30&&(Jz(e),e.schema=30),t<31&&($z(e),e.schema=31),t<32&&(eF(e),e.schema=32))}var hm;(e=>e.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(hm||(hm={}));function to(e,t=!1){let i=e[0].index!==null,r=new Set(Object.keys(e[0].attributes)),s=new Set(Object.keys(e[0].morphAttributes)),n={},a={},o=e[0].morphTargetsRelative,l=new ke,h=0;for(let u=0;u<e.length;++u){let c=e[u],d=0;if(i!==(c.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let p in c.attributes){if(!r.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+'. All geometries must have compatible attributes; make sure "'+p+'" attribute exists among all geometries, or in none of them.'),null;n[p]===void 0&&(n[p]=[]),n[p].push(c.attributes[p]),d++}if(d!==r.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". Make sure all geometries have the same number of attributes."),null;if(o!==c.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let p in c.morphAttributes){if(!s.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". .morphAttributes must be consistent throughout all geometries."),null;a[p]===void 0&&(a[p]=[]),a[p].push(c.morphAttributes[p])}if(l.userData.mergedUserData=l.userData.mergedUserData||[],l.userData.mergedUserData.push(c.userData),t){let p;if(i)p=c.index.count;else if(c.attributes.position!==void 0)p=c.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". The geometry must have either an index or a position attribute"),null;l.addGroup(h,p,u),h+=p}}if(i){let u=0,c=[];for(let d=0;d<e.length;++d){let p=e[d].index;for(let m=0;m<p.count;++m)c.push(p.getX(m)+u);u+=e[d].attributes.position.count}l.setIndex(c)}for(let u in n){let c=D1(n[u]);if(!c)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+u+" attribute."),null;l.setAttribute(u,c)}for(let u in a){let c=a[u][0].length;if(c===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[u]=[];for(let d=0;d<c;++d){let p=[];for(let g=0;g<a[u].length;++g)p.push(a[u][g][d]);let m=D1(p);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+u+" morphAttribute."),null;l.morphAttributes[u].push(m)}}return l}function D1(e){let t,i,r,s=0;for(let o=0;o<e.length;++o){let l=e[o];if(l.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(t===void 0&&(t=l.array.constructor),t!==l.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(i===void 0&&(i=l.itemSize),i!==l.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(r===void 0&&(r=l.normalized),r!==l.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;s+=l.array.length}let n=new t(s),a=0;for(let o=0;o<e.length;++o)n.set(e[o].array,a),a+=e[o].array.length;return new Qe(n,i,r)}var cm;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",speedTranslate:1e3,speedRotate:100,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:-3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new st,move:new st,jump:new st}}))(cm||(cm={}));var iF=Math.pow(2,-24),mc=class{constructor(){}};function Kr(e,t,i){return i.min.x=t[e],i.min.y=t[e+1],i.min.z=t[e+2],i.max.x=t[e+3],i.max.y=t[e+4],i.max.z=t[e+5],i}function O1(e){let t=-1,i=-1/0;for(let r=0;r<3;r++){let s=e[r+3]-e[r];s>i&&(i=s,t=r)}return t}function L1(e,t){t.set(e)}function I1(e,t,i){let r,s;for(let n=0;n<3;n++){let a=n+3;r=e[n],s=t[n],i[n]=r<s?r:s,r=e[a],s=t[a],i[a]=r>s?r:s}}function gc(e,t,i){for(let r=0;r<3;r++){let s=t[e+2*r],n=t[e+2*r+1],a=s-n,o=s+n;a<i[r]&&(i[r]=a),o>i[r+3]&&(i[r+3]=o)}}function ol(e){let t=e[3]-e[0],i=e[4]-e[1],r=e[5]-e[2];return 2*(t*i+i*r+r*t)}function rF(e,t){if(!e.index){let i=e.attributes.position.count,r=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,s;i>65535?s=new Uint32Array(new r(4*i)):s=new Uint16Array(new r(2*i)),e.setIndex(new Qe(s,1));for(let n=0;n<i;n++)s[n]=n}}function sF(e){if(!e.groups||!e.groups.length)return[{offset:0,count:e.index.count/3}];let t=[],i=new Set;for(let s of e.groups)i.add(s.start),i.add(s.start+s.count);let r=Array.from(i.values()).sort((s,n)=>s-n);for(let s=0;s<r.length-1;s++){let n=r[s],a=r[s+1];t.push({offset:n/3,count:(a-n)/3})}return t}function Pp(e,t,i,r,s=null){let n=1/0,a=1/0,o=1/0,l=-1/0,h=-1/0,u=-1/0,c=1/0,d=1/0,p=1/0,m=-1/0,g=-1/0,f=-1/0,v=s!==null;for(let y=t*6,b=(t+i)*6;y<b;y+=6){let x=e[y+0],w=e[y+1],_=x-w,A=x+w;_<n&&(n=_),A>l&&(l=A),v&&x<c&&(c=x),v&&x>m&&(m=x);let S=e[y+2],E=e[y+3],C=S-E,T=S+E;C<a&&(a=C),T>h&&(h=T),v&&S<d&&(d=S),v&&S>g&&(g=S);let P=e[y+4],R=e[y+5],O=P-R,U=P+R;O<o&&(o=O),U>u&&(u=U),v&&P<p&&(p=P),v&&P>f&&(f=P)}r[0]=n,r[1]=a,r[2]=o,r[3]=l,r[4]=h,r[5]=u,v&&(s[0]=c,s[1]=d,s[2]=p,s[3]=m,s[4]=g,s[5]=f)}function nF(e,t,i,r){let s=1/0,n=1/0,a=1/0,o=-1/0,l=-1/0,h=-1/0;for(let u=t*6,c=(t+i)*6;u<c;u+=6){let d=e[u+0];d<s&&(s=d),d>o&&(o=d);let p=e[u+2];p<n&&(n=p),p>l&&(l=p);let m=e[u+4];m<a&&(a=m),m>h&&(h=m)}r[0]=s,r[1]=n,r[2]=a,r[3]=o,r[4]=l,r[5]=h}function aF(e,t,i,r,s){let n=i,a=i+r-1,o=s.pos,l=s.axis*2;for(;;){for(;n<=a&&t[n*6+l]<o;)n++;for(;n<=a&&t[a*6+l]>=o;)a--;if(n<a){for(let h=0;h<3;h++){let u=e[n*3+h];e[n*3+h]=e[a*3+h],e[a*3+h]=u;let c=t[n*6+h*2+0];t[n*6+h*2+0]=t[a*6+h*2+0],t[a*6+h*2+0]=c;let d=t[n*6+h*2+1];t[n*6+h*2+1]=t[a*6+h*2+1],t[a*6+h*2+1]=d}n++,a--}else return n}}var Ss=32,oF=(e,t)=>e.candidate-t.candidate,Ws=new Array(Ss).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),vc=new Float32Array(6);function lF(e,t,i,r,s,n){let a=-1,o=0;if(n===0)a=O1(t),a!==-1&&(o=(t[a]+t[a+3])/2);else if(n===1)a=O1(e),a!==-1&&(o=hF(i,r,s,a));else if(n===2){let l=ol(e),h=1.25*s,u=r*6,c=(r+s)*6;for(let d=0;d<3;d++){let p=t[d],m=(t[d+3]-p)/Ss;if(s<Ss/4){let g=[...Ws];g.length=s;let f=0;for(let y=u;y<c;y+=6,f++){let b=g[f];b.candidate=i[y+2*d],b.count=0;let{bounds:x,leftCacheBounds:w,rightCacheBounds:_}=b;for(let A=0;A<3;A++)_[A]=1/0,_[A+3]=-1/0,w[A]=1/0,w[A+3]=-1/0,x[A]=1/0,x[A+3]=-1/0;gc(y,i,x)}g.sort(oF);let v=s;for(let y=0;y<v;y++){let b=g[y];for(;y+1<v&&g[y+1].candidate===b.candidate;)g.splice(y+1,1),v--}for(let y=u;y<c;y+=6){let b=i[y+2*d];for(let x=0;x<v;x++){let w=g[x];b>=w.candidate?gc(y,i,w.rightCacheBounds):(gc(y,i,w.leftCacheBounds),w.count++)}}for(let y=0;y<v;y++){let b=g[y],x=b.count,w=s-b.count,_=b.leftCacheBounds,A=b.rightCacheBounds,S=0;x!==0&&(S=ol(_)/l);let E=0;w!==0&&(E=ol(A)/l);let C=1+1.25*(S*x+E*w);C<h&&(a=d,h=C,o=b.candidate)}}else{for(let v=0;v<Ss;v++){let y=Ws[v];y.count=0,y.candidate=p+m+v*m;let b=y.bounds;for(let x=0;x<3;x++)b[x]=1/0,b[x+3]=-1/0}for(let v=u;v<c;v+=6){let y=~~((i[v+2*d]-p)/m);y>=Ss&&(y=Ss-1);let b=Ws[y];b.count++,gc(v,i,b.bounds)}let g=Ws[Ss-1];L1(g.bounds,g.rightCacheBounds);for(let v=Ss-2;v>=0;v--){let y=Ws[v],b=Ws[v+1];I1(y.bounds,b.rightCacheBounds,y.rightCacheBounds)}let f=0;for(let v=0;v<Ss-1;v++){let y=Ws[v],b=y.count,x=y.bounds,w=Ws[v+1].rightCacheBounds;b!==0&&(f===0?L1(x,vc):I1(x,vc,vc)),f+=b;let _=0,A=0;f!==0&&(_=ol(vc)/l);let S=s-f;S!==0&&(A=ol(w)/l);let E=1+1.25*(_*f+A*S);E<h&&(a=d,h=E,o=y.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${n} used.`);return{axis:a,pos:o}}function hF(e,t,i,r){let s=0;for(let n=t,a=t+i;n<a;n++)s+=e[n*6+r*2];return s/i}function cF(e,t){let i=e.attributes.position,r=i.array,s=e.index.array,n=s.length/3,a=new Float32Array(n*6),o=i.offset||0,l=3;i.isInterleavedBufferAttribute&&(l=i.data.stride);for(let h=0;h<n;h++){let u=h*3,c=h*6,d=s[u+0]*l+o,p=s[u+1]*l+o,m=s[u+2]*l+o;for(let g=0;g<3;g++){let f=r[d+g],v=r[p+g],y=r[m+g],b=f;v<b&&(b=v),y<b&&(b=y);let x=f;v>x&&(x=v),y>x&&(x=y);let w=(x-b)/2,_=g*2;a[c+_+0]=b+w,a[c+_+1]=w+(Math.abs(b)+w)*iF,b<t[g]&&(t[g]=b),x>t[g+3]&&(t[g+3]=x)}}return a}function dF(e,t){function i(v){d&&d(v/p)}function r(v,y,b,x=null,w=0){if(!m&&w>=l&&(m=!0,h&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(e))),b<=u||w>=l)return i(y+b),v.offset=y,v.count=b,v;let _=lF(v.boundingData,x,a,y,b,c);if(_.axis===-1)return i(y+b),v.offset=y,v.count=b,v;let A=aF(o,a,y,b,_);if(A===y||A===y+b)i(y+b),v.offset=y,v.count=b;else{v.splitAxis=_.axis;let S=new mc,E=y,C=A-y;v.left=S,S.boundingData=new Float32Array(6),Pp(a,E,C,S.boundingData,n),r(S,E,C,n,w+1);let T=new mc,P=A,R=b-C;v.right=T,T.boundingData=new Float32Array(6),Pp(a,P,R,T.boundingData,n),r(T,P,R,n,w+1)}return v}rF(e,t);let s=new Float32Array(6),n=new Float32Array(6),a=cF(e,s),o=e.index.array,l=t.maxDepth,h=t.verbose,u=t.maxLeafTris,c=t.strategy,d=t.onProgress,p=e.index.count/3,m=!1,g=[],f=sF(e);if(f.length===1){let v=f[0],y=new mc;y.boundingData=s,nF(a,v.offset,v.count,n),r(y,v.offset,v.count,n),g.push(y)}else for(let v of f){let y=new mc;y.boundingData=new Float32Array(6),Pp(a,v.offset,v.count,y.boundingData,n),r(y,v.offset,v.count,n),g.push(y)}return g}function uF(e,t){let i=dF(e,t),r,s,n,a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let u=0;u<i.length;u++){let c=i[u],d=l(c),p=new o(32*d);r=new Float32Array(p),s=new Uint32Array(p),n=new Uint16Array(p),h(0,c),a.push(p)}return a;function l(u){return u.count?1:1+l(u.left)+l(u.right)}function h(u,c){let d=u/4,p=u/2,m=!!c.count,g=c.boundingData;for(let f=0;f<6;f++)r[d+f]=g[f];if(m){let f=c.offset,v=c.count;return s[d+6]=f,n[p+14]=v,n[p+15]=65535,u+32}else{let f=c.left,v=c.right,y=c.splitAxis,b;if(b=h(u+32,f),b/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return s[d+6]=b/4,b=h(b,v),s[d+7]=y,b}}}var cs=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let i=1/0,r=-1/0;for(let s=0,n=e.length;s<n;s++){let a=e[s][t];i=a<i?a:i,r=a>r?a:r}this.min=i,this.max=r}setFromPoints(e,t){let i=1/0,r=-1/0;for(let s=0,n=t.length;s<n;s++){let a=t[s],o=e.dot(a);i=o<i?o:i,r=o>r?o:r}this.min=i,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};cs.prototype.setFromBox=function(){let e=new M;return function(t,i){let r=i.min,s=i.max,n=1/0,a=-1/0;for(let o=0;o<=1;o++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){e.x=r.x*o+s.x*(1-o),e.y=r.y*l+s.y*(1-l),e.z=r.z*h+s.z*(1-h);let u=t.dot(e);n=Math.min(u,n),a=Math.max(u,a)}this.min=n,this.max=a}}();var kV=function(){let e=new cs;return function(t,i){let r=t.points,s=t.satAxes,n=t.satBounds,a=i.points,o=i.satAxes,l=i.satBounds;for(let h=0;h<3;h++){let u=n[h],c=s[h];if(e.setFromPoints(c,a),u.isSeparated(e))return!1}for(let h=0;h<3;h++){let u=l[h],c=o[h];if(e.setFromPoints(c,r),u.isSeparated(e))return!1}}}(),pF=function(){let e=new M,t=new M,i=new M;return function(r,s,n){let a=r.start,o=e,l=s.start,h=t;i.subVectors(a,l),e.subVectors(r.end,s.start),t.subVectors(s.end,s.start);let u=i.dot(h),c=h.dot(o),d=h.dot(h),p=i.dot(o),m=o.dot(o)*d-c*c,g,f;m!==0?g=(u*c-p*d)/m:g=0,f=(u+g*c)/d,n.x=g,n.y=f}}(),Ng=function(){let e=new H,t=new M,i=new M;return function(r,s,n,a){pF(r,s,e);let o=e.x,l=e.y;if(o>=0&&o<=1&&l>=0&&l<=1){r.at(o,n),s.at(l,a);return}else if(o>=0&&o<=1){l<0?s.at(0,a):s.at(1,a),r.closestPointToPoint(a,!0,n);return}else if(l>=0&&l<=1){o<0?r.at(0,n):r.at(1,n),s.closestPointToPoint(n,!0,a);return}else{let h;o<0?h=r.start:h=r.end;let u;l<0?u=s.start:u=s.end;let c=t,d=i;if(r.closestPointToPoint(u,!0,t),s.closestPointToPoint(h,!0,i),c.distanceToSquared(u)<=d.distanceToSquared(h)){n.copy(c),a.copy(u);return}else{n.copy(h),a.copy(d);return}}}}(),fF=function(){let e=new M,t=new M,i=new ar,r=new cr;return function(s,n){let{radius:a,center:o}=s,{a:l,b:h,c:u}=n;if(r.start=l,r.end=h,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a||(r.start=l,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a)||(r.start=h,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a))return!0;let c=n.getPlane(i);if(Math.abs(c.distanceToPoint(o))<=a){let d=c.projectPoint(o,t);if(n.containsPoint(d))return!0}return!1}}(),mF=1e-15;function za(e){return Math.abs(e)<mF}var Os=class extends Di{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new M),this.satBounds=new Array(4).fill().map(()=>new cs),this.points=[this.a,this.b,this.c],this.sphere=new pr,this.plane=new ar,this.needsUpdate=!0}intersectsSphere(e){return fF(e,this)}update(){let e=this.a,t=this.b,i=this.c,r=this.points,s=this.satAxes,n=this.satBounds,a=s[0],o=n[0];this.getNormal(a),o.setFromPoints(a,r);let l=s[1],h=n[1];l.subVectors(e,t),h.setFromPoints(l,r);let u=s[2],c=n[2];u.subVectors(t,i),c.setFromPoints(u,r);let d=s[3],p=n[3];d.subVectors(i,e),p.setFromPoints(d,r),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(a,e),this.needsUpdate=!1}};Os.prototype.closestPointToSegment=function(){let e=new M,t=new M,i=new cr;return function(r,s=null,n=null){let{start:a,end:o}=r,l=this.points,h,u=1/0;for(let c=0;c<3;c++){let d=(c+1)%3;i.start.copy(l[c]),i.end.copy(l[d]),Ng(i,r,e,t),h=e.distanceToSquared(t),h<u&&(u=h,s&&s.copy(e),n&&n.copy(t))}return this.closestPointToPoint(a,e),h=a.distanceToSquared(e),h<u&&(u=h,s&&s.copy(e),n&&n.copy(a)),this.closestPointToPoint(o,e),h=o.distanceToSquared(e),h<u&&(u=h,s&&s.copy(e),n&&n.copy(o)),Math.sqrt(u)}}();Os.prototype.intersectsTriangle=function(){let e=new Os,t=new Array(3),i=new Array(3),r=new cs,s=new cs,n=new M,a=new M,o=new M,l=new M,h=new cr,u=new cr,c=new cr;return function(d,p=null){this.needsUpdate&&this.update(),d.isExtendedTriangle?d.needsUpdate&&d.update():(e.copy(d),e.update(),d=e);let m=this.plane,g=d.plane;if(Math.abs(m.normal.dot(g.normal))>1-1e-10){let f=this.satBounds,v=this.satAxes;i[0]=d.a,i[1]=d.b,i[2]=d.c;for(let x=0;x<4;x++){let w=f[x],_=v[x];if(r.setFromPoints(_,i),w.isSeparated(r))return!1}let y=d.satBounds,b=d.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let x=0;x<4;x++){let w=y[x],_=b[x];if(r.setFromPoints(_,t),w.isSeparated(r))return!1}for(let x=0;x<4;x++){let w=v[x];for(let _=0;_<4;_++){let A=b[_];if(n.crossVectors(w,A),r.setFromPoints(n,t),s.setFromPoints(n,i),r.isSeparated(s))return!1}}return p&&(console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),p.start.set(0,0,0),p.end.set(0,0,0)),!0}else{let f=this.points,v=!1,y=0;for(let P=0;P<3;P++){let R=f[P],O=f[(P+1)%3];h.start.copy(R),h.end.copy(O),h.delta(a);let U=v?u.start:u.end,j=za(g.distanceToPoint(R));if(za(g.normal.dot(a))&&j){u.copy(h),y=2;break}if((g.intersectLine(h,U)||j)&&!za(U.distanceTo(O))){if(y++,v)break;v=!0}}if(y===1&&this.containsPoint(u.start))return p&&(p.start.copy(u.start),p.end.copy(u.start)),!0;if(y!==2)return!1;let b=d.points,x=!1,w=0;for(let P=0;P<3;P++){let R=b[P],O=b[(P+1)%3];h.start.copy(R),h.end.copy(O),h.delta(o);let U=x?c.start:c.end,j=za(m.distanceToPoint(R));if(za(m.normal.dot(o))&&j){c.copy(h),w=2;break}if((m.intersectLine(h,U)||j)&&!za(U.distanceTo(O))){if(w++,x)break;x=!0}}if(w===1&&this.containsPoint(c.start))return p&&(p.start.copy(c.start),p.end.copy(c.start)),!0;if(w!==2)return!1;if(u.delta(a),c.delta(o),a.dot(o)<0){let P=c.start;c.start=c.end,c.end=P}let _=u.start.dot(a),A=u.end.dot(a),S=c.start.dot(a),E=c.end.dot(a),C=A<S,T=_<E;return _!==E&&S!==A&&C===T?!1:(p&&(l.subVectors(u.start,c.start),l.dot(a)>0?p.start.copy(u.start):p.start.copy(c.start),l.subVectors(u.end,c.end),l.dot(a)<0?p.end.copy(u.end):p.end.copy(c.end)),!0)}}}();Os.prototype.distanceToPoint=function(){let e=new M;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}();Os.prototype.distanceToTriangle=function(){let e=new M,t=new M,i=["a","b","c"],r=new cr,s=new cr;return function(n,a=null,o=null){let l=a||o?r:null;if(this.intersectsTriangle(n,l))return(a||o)&&(a&&l.getCenter(a),o&&l.getCenter(o)),0;let h=1/0;for(let u=0;u<3;u++){let c,d=i[u],p=n[d];this.closestPointToPoint(p,e),c=p.distanceToSquared(e),c<h&&(h=c,a&&a.copy(e),o&&o.copy(p));let m=this[d];n.closestPointToPoint(m,e),c=m.distanceToSquared(e),c<h&&(h=c,a&&a.copy(m),o&&o.copy(e))}for(let u=0;u<3;u++){let c=i[u],d=i[(u+1)%3];r.set(this[c],this[d]);for(let p=0;p<3;p++){let m=i[p],g=i[(p+1)%3];s.set(n[m],n[g]),Ng(r,s,e,t);let f=e.distanceToSquared(t);f<h&&(h=f,a&&a.copy(e),o&&o.copy(t))}}return Math.sqrt(h)}}();var ds=class extends Gt{constructor(...e){super(...e),this.isOrientedBox=!0,this.matrix=new Se,this.invMatrix=new Se,this.points=new Array(8).fill().map(()=>new M),this.satAxes=new Array(3).fill().map(()=>new M),this.satBounds=new Array(3).fill().map(()=>new cs),this.alignedSatBounds=new Array(3).fill().map(()=>new cs),this.needsUpdate=!1}set(e,t,i){super.set(e,t),this.matrix.copy(i),this.needsUpdate=!0}copy(e){super.copy(e),this.matrix.copy(e.matrix),this.needsUpdate=!0}};ds.prototype.update=function(){return function(){let e=this.matrix,t=this.min,i=this.max,r=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let u=0;u<=1;u++){let c=1*l|2*h|4*u,d=r[c];d.x=l?i.x:t.x,d.y=h?i.y:t.y,d.z=u?i.z:t.z,d.applyMatrix4(e)}let s=this.satBounds,n=this.satAxes,a=r[0];for(let l=0;l<3;l++){let h=n[l],u=s[l],c=1<<l,d=r[c];h.subVectors(a,d),u.setFromPoints(h,r)}let o=this.alignedSatBounds;o[0].setFromPointsField(r,"x"),o[1].setFromPointsField(r,"y"),o[2].setFromPointsField(r,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();ds.prototype.intersectsBox=function(){let e=new cs;return function(t){this.needsUpdate&&this.update();let i=t.min,r=t.max,s=this.satBounds,n=this.satAxes,a=this.alignedSatBounds;if(e.min=i.x,e.max=r.x,a[0].isSeparated(e)||(e.min=i.y,e.max=r.y,a[1].isSeparated(e))||(e.min=i.z,e.max=r.z,a[2].isSeparated(e)))return!1;for(let o=0;o<3;o++){let l=n[o],h=s[o];if(e.setFromBox(l,t),h.isSeparated(e))return!1}return!0}}();ds.prototype.intersectsTriangle=function(){let e=new Os,t=new Array(3),i=new cs,r=new cs,s=new M;return function(n){this.needsUpdate&&this.update(),n.isExtendedTriangle?n.needsUpdate&&n.update():(e.copy(n),e.update(),n=e);let a=this.satBounds,o=this.satAxes;t[0]=n.a,t[1]=n.b,t[2]=n.c;for(let c=0;c<3;c++){let d=a[c],p=o[c];if(i.setFromPoints(p,t),d.isSeparated(i))return!1}let l=n.satBounds,h=n.satAxes,u=this.points;for(let c=0;c<3;c++){let d=l[c],p=h[c];if(i.setFromPoints(p,u),d.isSeparated(i))return!1}for(let c=0;c<3;c++){let d=o[c];for(let p=0;p<4;p++){let m=h[p];if(s.crossVectors(d,m),i.setFromPoints(s,t),r.setFromPoints(s,u),i.isSeparated(r))return!1}}return!0}}();ds.prototype.closestPointToPoint=function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}}();ds.prototype.distanceToPoint=function(){let e=new M;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}();ds.prototype.distanceToBox=function(){let e=["x","y","z"],t=new Array(12).fill().map(()=>new cr),i=new Array(12).fill().map(()=>new cr),r=new M,s=new M;return function(n,a=0,o=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(n))return(o||l)&&(n.getCenter(s),this.closestPointToPoint(s,r),n.closestPointToPoint(r,s),o&&o.copy(r),l&&l.copy(s)),0;let h=a*a,u=n.min,c=n.max,d=this.points,p=1/0;for(let g=0;g<8;g++){let f=d[g];s.copy(f).clamp(u,c);let v=f.distanceToSquared(s);if(v<p&&(p=v,o&&o.copy(f),l&&l.copy(s),v<h))return Math.sqrt(v)}let m=0;for(let g=0;g<3;g++)for(let f=0;f<=1;f++)for(let v=0;v<=1;v++){let y=(g+1)%3,b=(g+2)%3,x=f<<y|v<<b,w=1<<g|f<<y|v<<b,_=d[x],A=d[w];t[m].set(_,A);let S=e[g],E=e[y],C=e[b],T=i[m],P=T.start,R=T.end;P[S]=u[S],P[E]=f?u[E]:c[E],P[C]=v?u[C]:c[E],R[S]=c[S],R[E]=f?u[E]:c[E],R[C]=v?u[C]:c[E],m++}for(let g=0;g<=1;g++)for(let f=0;f<=1;f++)for(let v=0;v<=1;v++){s.x=g?c.x:u.x,s.y=f?c.y:u.y,s.z=v?c.z:u.z,this.closestPointToPoint(s,r);let y=s.distanceToSquared(r);if(y<p&&(p=y,o&&o.copy(r),l&&l.copy(s),y<h))return Math.sqrt(y)}for(let g=0;g<12;g++){let f=t[g];for(let v=0;v<12;v++){let y=i[v];Ng(f,y,r,s);let b=r.distanceToSquared(s);if(b<p&&(p=b,o&&o.copy(r),l&&l.copy(s),b<h))return Math.sqrt(b)}}return Math.sqrt(p)}}();var yc=new M,xc=new M,bc=new M,B1=new H,R1=new H,N1=new H,z1=new M;function gF(e,t,i,r,s,n){let a;return n===pi?a=e.intersectTriangle(r,i,t,!0,s):a=e.intersectTriangle(t,i,r,n!==Er,s),a===null?null:{distance:e.origin.distanceTo(s),point:s.clone()}}function vF(e,t,i,r,s,n,a){yc.fromBufferAttribute(t,r),xc.fromBufferAttribute(t,s),bc.fromBufferAttribute(t,n);let o=gF(e,yc,xc,bc,z1,a);if(o){i&&(B1.fromBufferAttribute(i,r),R1.fromBufferAttribute(i,s),N1.fromBufferAttribute(i,n),o.uv=Di.getUV(z1,yc,xc,bc,B1,R1,N1,new H));let l={a:r,b:s,c:n,normal:new M,materialIndex:0};Di.getNormal(yc,xc,bc,l.normal),o.face=l,o.faceIndex=r}return o}function D_(e,t,i,r,s){let n=r*3,a=e.index.getX(n),o=e.index.getX(n+1),l=e.index.getX(n+2),h=vF(i,e.attributes.position,e.attributes.uv,a,o,l,t);return h?(h.faceIndex=r,s&&s.push(h),h):null}function yF(e,t,i,r,s,n){for(let a=r,o=r+s;a<o;a++)D_(e,t,i,a,n)}function xF(e,t,i,r,s){let n=1/0,a=null;for(let o=r,l=r+s;o<l;o++){let h=D_(e,t,i,o);h&&h.distance<n&&(a=h,n=h.distance)}return a}function O_(e,t,i){return e===null||(e.point.applyMatrix4(t.matrixWorld),e.distance=e.point.distanceTo(i.ray.origin),e.object=t,e.distance<i.near||e.distance>i.far)?null:e}function qr(e,t,i,r){let s=e.a,n=e.b,a=e.c,o=t,l=t+1,h=t+2;i&&(o=i.getX(t),l=i.getX(t+1),h=i.getX(t+2)),s.x=r.getX(o),s.y=r.getY(o),s.z=r.getZ(o),n.x=r.getX(l),n.y=r.getY(l),n.z=r.getZ(l),a.x=r.getX(h),a.y=r.getY(h),a.z=r.getZ(h)}function F1(e,t,i,r,s,n,a){let o=i.index,l=i.attributes.position;for(let h=e,u=t+e;h<u;h++)if(qr(a,h*3,o,l),a.needsUpdate=!0,r(a,h,s,n))return!0;return!1}var L_=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}};function tn(e,t){return t[e+15]===65535}function po(e,t){return t[e+6]}function oh(e,t){return t[e+14]}function lh(e){return e+8}function hh(e,t){return t[e+6]}function bF(e,t){return t[e+7]}var io=new Gt,Ud=new M,wF=["x","y","z"];function dm(e,t,i,r,s){let n=e*2,a=jo,o=pn,l=fn;if(tn(n,o)){let h=po(e,l),u=oh(n,o);yF(t,i,r,h,u,s)}else{let h=lh(e);kd(h,a,r,Ud)&&dm(h,t,i,r,s);let u=hh(e,l);kd(u,a,r,Ud)&&dm(u,t,i,r,s)}}function um(e,t,i,r){let s=e*2,n=jo,a=pn,o=fn;if(tn(s,a)){let l=po(e,o),h=oh(s,a);return xF(t,i,r,l,h)}else{let l=bF(e,o),h=wF[l],u=r.direction[h]>=0,c,d;u?(c=lh(e),d=hh(e,o)):(c=hh(e,o),d=lh(e));let p=kd(c,n,r,Ud)?um(c,t,i,r):null;if(p){let g=p.point[h];if(u?g<=n[d+l]:g>=n[d+l+3])return p}let m=kd(d,n,r,Ud)?um(d,t,i,r):null;return p&&m?p.distance<=m.distance?p:m:p||m||null}}var _F=function(){let e,t,i=[],r=new L_(()=>new Gt);return function(...n){e=r.getPrimitive(),t=r.getPrimitive(),i.push(e,t);let a=s(...n);r.releasePrimitive(e),r.releasePrimitive(t),i.pop(),i.pop();let o=i.length;return o>0&&(t=i[o-1],e=i[o-2]),a};function s(n,a,o,l,h=null,u=0,c=0){function d(y){let b=y*2,x=pn,w=fn;for(;!tn(b,x);)y=lh(y),b=y*2;return po(y,w)}function p(y){let b=y*2,x=pn,w=fn;for(;!tn(b,x);)y=hh(y,w),b=y*2;return po(y,w)+oh(b,x)}let m=n*2,g=jo,f=pn,v=fn;if(tn(m,f)){let y=po(n,v),b=oh(m,f);return Kr(n,g,e),l(y,b,!1,c,u+n,e)}else{let y=lh(n),b=hh(n,v),x=y,w=b,_,A,S,E;if(h&&(S=e,E=t,Kr(x,g,S),Kr(w,g,E),_=h(S),A=h(E),A<_)){x=b,w=y;let j=_;_=A,A=j,S=E}S||(S=e,Kr(x,g,S));let C=tn(x*2,f),T=o(S,C,_,c+1,u+x),P;if(T===2){let j=d(x),z=p(x)-j;P=l(j,z,!0,c+1,u+x,S)}else P=T&&s(x,a,o,l,h,u,c+1);if(P)return!0;E=t,Kr(w,g,E);let R=tn(w*2,f),O=o(E,R,A,c+1,u+w),U;if(O===2){let j=d(w),z=p(w)-j;U=l(j,z,!0,c+1,u+w,E)}else U=O&&s(w,a,o,l,h,u,c+1);return!!U}}}(),SF=function(){let e=new Os,t=new Os,i=new Se,r=new ds,s=new ds;return function n(a,o,l,h,u=null){let c=a*2,d=jo,p=pn,m=fn;if(u===null&&(l.boundingBox||l.computeBoundingBox(),r.set(l.boundingBox.min,l.boundingBox.max,h),u=r),tn(c,p)){let g=o,f=g.index,v=g.attributes.position,y=l.index,b=l.attributes.position,x=po(a,m),w=oh(c,p);if(i.copy(h).invert(),l.boundsTree)return Kr(a,d,s),s.matrix.copy(i),s.needsUpdate=!0,l.boundsTree.shapecast({intersectsBounds:_=>s.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(h),_.b.applyMatrix4(h),_.c.applyMatrix4(h),_.needsUpdate=!0;for(let A=x*3,S=(w+x)*3;A<S;A+=3)if(qr(t,A,f,v),t.needsUpdate=!0,_.intersectsTriangle(t))return!0;return!1}});for(let _=x*3,A=w+x*3;_<A;_+=3){qr(e,_,f,v),e.a.applyMatrix4(i),e.b.applyMatrix4(i),e.c.applyMatrix4(i),e.needsUpdate=!0;for(let S=0,E=y.count;S<E;S+=3)if(qr(t,S,y,b),t.needsUpdate=!0,e.intersectsTriangle(t))return!0}}else{let g=a+8,f=m[a+6];return Kr(g,d,io),!!(u.intersectsBox(io)&&n(g,o,l,h,u)||(Kr(f,d,io),u.intersectsBox(io)&&n(f,o,l,h,u)))}}}();function kd(e,t,i,r){return Kr(e,t,io),i.intersectBox(io,r)}var pm=[],ed,jo,pn,fn;function Dl(e){ed&&pm.push(ed),ed=e,jo=new Float32Array(e),pn=new Uint16Array(e),fn=new Uint32Array(e)}function wc(){ed=null,jo=null,pn=null,fn=null,pm.length&&Dl(pm.pop())}var Dp=Symbol("skip tree generation"),Op=new Gt,Lp=new Gt,Fa=new Se,Dn=new ds,ll=new ds,hl=new M,_c=new M,AF=new M,MF=new M,EF=new M,U1=new Gt,Ur=new L_(()=>new Os),ai=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),ai.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});t={cloneBuffers:!0,...t};let i=e.geometry,r=e._roots,s=i.getIndex(),n;return t.cloneBuffers?n={roots:r.map(a=>a.slice()),index:s.array.slice()}:n={roots:r,index:s.array},n}static deserialize(e,t,i={}){if(typeof i=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),ai.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});i={setIndex:!0,...i};let{index:r,roots:s}=e,n=new ai(t,{...i,[Dp]:!0});if(n._roots=s,i.setIndex){let a=t.getIndex();if(a===null){let o=new Qe(e.index,1,!1);t.setIndex(o)}else a.array!==r&&(a.array.set(r),a.needsUpdate=!0)}return n}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[Dp]:!1},t),t.useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[Dp]||(this._roots=uF(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Gt))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t=this.geometry,i=t.index.array,r=t.attributes.position,s=r.array,n=r.offset||0,a=3;r.isInterleavedBufferAttribute&&(a=r.data.stride);let o,l,h,u,c=0,d=this._roots;for(let m=0,g=d.length;m<g;m++)o=d[m],l=new Uint32Array(o),h=new Uint16Array(o),u=new Float32Array(o),p(0,c),c+=o.byteLength;function p(m,g,f=!1){let v=m*2;if(h[v+15]===65535){let y=l[m+6],b=h[v+14],x=1/0,w=1/0,_=1/0,A=-1/0,S=-1/0,E=-1/0;for(let C=3*y,T=3*(y+b);C<T;C++){let P=i[C]*a+n,R=s[P+0],O=s[P+1],U=s[P+2];R<x&&(x=R),R>A&&(A=R),O<w&&(w=O),O>S&&(S=O),U<_&&(_=U),U>E&&(E=U)}return u[m+0]!==x||u[m+1]!==w||u[m+2]!==_||u[m+3]!==A||u[m+4]!==S||u[m+5]!==E?(u[m+0]=x,u[m+1]=w,u[m+2]=_,u[m+3]=A,u[m+4]=S,u[m+5]=E,!0):!1}else{let y=m+8,b=l[m+6],x=y+g,w=b+g,_=f,A=!1,S=!1;e?_||(A=e.has(x),S=e.has(w),_=!A&&!S):(A=!0,S=!0);let E=_||A,C=_||S,T=!1;E&&(T=p(y,g,_));let P=!1;C&&(P=p(b,g,_));let R=T||P;if(R)for(let O=0;O<3;O++){let U=y+O,j=b+O,z=u[U],L=u[U+3],G=u[j],F=u[j+3];u[m+O]=z<G?z:G,u[m+O+3]=L>F?L:F}return R}}}traverse(e,t=0){let i=this._roots[t],r=new Uint32Array(i),s=new Uint16Array(i);n(0);function n(a,o=0){let l=a*2,h=s[l+15]===65535;if(h){let u=r[a+6],c=s[l+14];e(o,h,new Float32Array(i,a*4,6),u,c)}else{let u=a+8,c=r[a+6],d=r[a+7];e(o,h,new Float32Array(i,a*4,6),d)||(n(u,o+1),n(c,o+1))}}}raycast(e,t=mn){let i=this._roots,r=this.geometry,s=[],n=t.isMaterial,a=Array.isArray(t),o=r.groups,l=n?t.side:t;for(let h=0,u=i.length;h<u;h++){let c=a?t[o[h].materialIndex].side:l,d=s.length;if(Dl(i[h]),dm(0,r,c,e,s),wc(),a){let p=o[h].materialIndex;for(let m=d,g=s.length;m<g;m++)s[m].face.materialIndex=p}}return s}raycastFirst(e,t=mn){let i=this._roots,r=this.geometry,s=t.isMaterial,n=Array.isArray(t),a=null,o=r.groups,l=s?t.side:t;for(let h=0,u=i.length;h<u;h++){let c=n?t[o[h].materialIndex].side:l;Dl(i[h]);let d=um(0,r,c,e);wc(),d!=null&&(a==null||d.distance<a.distance)&&(a=d,n&&(d.face.materialIndex=o[h].materialIndex))}return a}intersectsGeometry(e,t){let i=this.geometry,r=!1;for(let s of this._roots)if(Dl(s),r=SF(0,i,e,t),wc(),r)break;return r}shapecast(e,t,i){let r=this.geometry;if(e instanceof Function){if(t){let c=t;t=(d,p,m,g)=>{let f=p*3;return c(d,f,f+1,f+2,m,g)}}e={boundsTraverseOrder:i,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Ur.getPrimitive(),{boundsTraverseOrder:n,intersectsBounds:a,intersectsRange:o,intersectsTriangle:l}=e;if(o&&l){let c=o;o=(d,p,m,g,f)=>c(d,p,m,g,f)?!0:F1(d,p,r,l,m,g,s)}else o||(l?o=(c,d,p,m)=>F1(c,d,r,l,p,m,s):o=(c,d,p)=>p);let h=!1,u=0;for(let c of this._roots){if(Dl(c),h=_F(0,r,a,o,n,u),wc(),h)break;u+=c.byteLength}return Ur.releasePrimitive(s),h}bvhcast(e,t,i){let{intersectsRanges:r,intersectsTriangles:s}=i,n=this.geometry.index,a=this.geometry.attributes.position,o=e.geometry.index,l=e.geometry.attributes.position;Fa.copy(t).invert();let h=Ur.getPrimitive(),u=Ur.getPrimitive();if(s){let d=function(p,m,g,f,v,y,b,x){for(let w=g,_=g+f;w<_;w++){qr(u,w*3,o,l),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let A=p,S=p+m;A<S;A++)if(qr(h,A*3,n,a),h.needsUpdate=!0,s(h,u,A,w,v,y,b,x))return!0}return!1};if(r){let p=r;r=function(m,g,f,v,y,b,x,w){return p(m,g,f,v,y,b,x,w)?!0:d(m,g,f,v,y,b,x,w)}}else r=d}e.getBoundingBox(Lp),Lp.applyMatrix4(t);let c=this.shapecast({intersectsBounds:d=>Lp.intersectsBox(d),intersectsRange:(d,p,m,g,f,v)=>(Op.copy(v),Op.applyMatrix4(Fa),e.shapecast({intersectsBounds:y=>Op.intersectsBox(y),intersectsRange:(y,b,x,w,_)=>r(d,p,y,b,g,f,w,_)}))});return Ur.releasePrimitive(h),Ur.releasePrimitive(u),c}intersectsBox(e,t){return Dn.set(e.min,e.max,t),Dn.needsUpdate=!0,this.shapecast({intersectsBounds:i=>Dn.intersectsBox(i),intersectsTriangle:i=>Dn.intersectsTriangle(i)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,i={},r={},s=0,n=1/0){e.boundingBox||e.computeBoundingBox(),Dn.set(e.boundingBox.min,e.boundingBox.max,t),Dn.needsUpdate=!0;let a=this.geometry,o=a.attributes.position,l=a.index,h=e.attributes.position,u=e.index,c=Ur.getPrimitive(),d=Ur.getPrimitive(),p=_c,m=AF,g=null,f=null;r&&(g=MF,f=EF);let v=1/0,y=null,b=null;return Fa.copy(t).invert(),ll.matrix.copy(Fa),this.shapecast({boundsTraverseOrder:x=>Dn.distanceToBox(x),intersectsBounds:(x,w,_)=>_<v&&_<n?(w&&(ll.min.copy(x.min),ll.max.copy(x.max),ll.needsUpdate=!0),!0):!1,intersectsRange:(x,w)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:_=>ll.distanceToBox(_),intersectsBounds:(_,A,S)=>S<v&&S<n,intersectsRange:(_,A)=>{for(let S=_*3,E=(_+A)*3;S<E;S+=3){qr(d,S,u,h),d.a.applyMatrix4(t),d.b.applyMatrix4(t),d.c.applyMatrix4(t),d.needsUpdate=!0;for(let C=x*3,T=(x+w)*3;C<T;C+=3){qr(c,C,l,o),c.needsUpdate=!0;let P=c.distanceToTriangle(d,p,g);if(P<v&&(m.copy(p),f&&f.copy(g),v=P,y=C/3,b=S/3),P<s)return!0}}}});{let _=u?u.count:h.count;for(let A=0,S=_;A<S;A+=3){qr(d,A,u,h),d.a.applyMatrix4(t),d.b.applyMatrix4(t),d.c.applyMatrix4(t),d.needsUpdate=!0;for(let E=x*3,C=(x+w)*3;E<C;E+=3){qr(c,E,l,o),c.needsUpdate=!0;let T=c.distanceToTriangle(d,p,g);if(T<v&&(m.copy(p),f&&f.copy(g),v=T,y=E/3,b=A/3),T<s)return!0}}}}}),Ur.releasePrimitive(c),Ur.releasePrimitive(d),v===1/0?null:(i.point?i.point.copy(m):i.point=m.clone(),i.distance=v,i.faceIndex=y,r&&(r.point?r.point.copy(f):r.point=f.clone(),r.point.applyMatrix4(Fa),m.applyMatrix4(Fa),r.distance=m.sub(r.point).length(),r.faceIndex=b),i)}closestPointToPoint(e,t={},i=0,r=1/0){let s=i*i,n=r*r,a=1/0,o=null;if(this.shapecast({boundsTraverseOrder:h=>(hl.copy(e).clamp(h.min,h.max),hl.distanceToSquared(e)),intersectsBounds:(h,u,c)=>c<a&&c<n,intersectsTriangle:(h,u)=>{h.closestPointToPoint(e,hl);let c=e.distanceToSquared(hl);return c<a&&(_c.copy(hl),a=c,o=u),c<s}}),a===1/0)return null;let l=Math.sqrt(a);return t.point?t.point.copy(_c):t.point=_c.clone(),t.distance=l,t.faceIndex=o,t}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{Kr(0,new Float32Array(t),U1),e.union(U1)}),e}},k1=ai.prototype.raycast;ai.prototype.raycast=function(...e){if(e[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycast" has changed. See docs for new signature.');let[t,i,r,s]=e;return k1.call(this,r,t.material).forEach(n=>{n=O_(n,t,i),n&&s.push(n)}),s}else return k1.apply(this,e)};var j1=ai.prototype.raycastFirst;ai.prototype.raycastFirst=function(...e){if(e[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "raycastFirst" has changed. See docs for new signature.');let[t,i,r]=e;return O_(j1.call(this,r,t.material),t,i)}else return j1.apply(this,e)};var H1=ai.prototype.closestPointToPoint;ai.prototype.closestPointToPoint=function(...e){if(e[0].isMesh){console.warn('MeshBVH: The function signature and results frame for "closestPointToPoint" has changed. See docs for new signature.'),e.unshift();let t=e[1],i={};return e[1]=i,H1.apply(this,e),t&&t.copy(i.point),i.distance}else return H1.apply(this,e)};var G1=ai.prototype.closestPointToGeometry;ai.prototype.closestPointToGeometry=function(...e){let t=e[2],i=e[3];if(t&&t.isVector3||i&&i.isVector3){console.warn('MeshBVH: The function signature and results frame for "closestPointToGeometry" has changed. See docs for new signature.');let r={},s={},n=e[1];return e[2]=r,e[3]=s,G1.apply(this,e),t&&t.copy(r.point),i&&i.copy(s.point).applyMatrix4(n),r.distance}else return G1.apply(this,e)};var V1=ai.prototype.refit;ai.prototype.refit=function(...e){let t=e[0],i=e[1];if(i&&(i instanceof Set||Array.isArray(i))){console.warn('MeshBVH: The function signature for "refit" has changed. See docs for new signature.');let r=new Set;i.forEach(s=>r.add(s)),t&&t.forEach(s=>r.add(s)),V1.call(this,r)}else V1.apply(this,e)};["intersectsGeometry","shapecast","intersectsBox","intersectsSphere"].forEach(e=>{let t=ai.prototype[e];ai.prototype[e]=function(...i){return(i[0]===null||i[0].isMesh)&&(i.shift(),console.warn(`MeshBVH: The function signature for "${e}" has changed and no longer takes Mesh. See docs for new signature.`)),t.apply(this,i)}});var cl=Jd(p2()),CF=.5*(Math.sqrt(3)-1),dl=(3-Math.sqrt(3))/6,TF=1/3,kr=1/6,jV=(Math.sqrt(5)-1)/4,HV=(5-Math.sqrt(5))/20,Hl=e=>Math.floor(e)|0,W1=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Ip=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Bp(e=Math.random){let t=I_(e),i=new Float64Array(t).map(s=>W1[s%12*2]),r=new Float64Array(t).map(s=>W1[s%12*2+1]);return function(s,n){let a=0,o=0,l=0,h=(s+n)*CF,u=Hl(s+h),c=Hl(n+h),d=(u+c)*dl,p=u-d,m=c-d,g=s-p,f=n-m,v,y;g>f?(v=1,y=0):(v=0,y=1);let b=g-v+dl,x=f-y+dl,w=g-1+2*dl,_=f-1+2*dl,A=u&255,S=c&255,E=.5-g*g-f*f;if(E>=0){let P=A+t[S],R=i[P],O=r[P];E*=E,a=E*E*(R*g+O*f)}let C=.5-b*b-x*x;if(C>=0){let P=A+v+t[S+y],R=i[P],O=r[P];C*=C,o=C*C*(R*b+O*x)}let T=.5-w*w-_*_;if(T>=0){let P=A+1+t[S+1],R=i[P],O=r[P];T*=T,l=T*T*(R*w+O*_)}return 70*(a+o+l)}}function PF(e=Math.random){let t=I_(e),i=new Float64Array(t).map(n=>Ip[n%12*3]),r=new Float64Array(t).map(n=>Ip[n%12*3+1]),s=new Float64Array(t).map(n=>Ip[n%12*3+2]);return function(n,a,o){let l,h,u,c,d=(n+a+o)*TF,p=Hl(n+d),m=Hl(a+d),g=Hl(o+d),f=(p+m+g)*kr,v=p-f,y=m-f,b=g-f,x=n-v,w=a-y,_=o-b,A,S,E,C,T,P;x>=w?w>=_?(A=1,S=0,E=0,C=1,T=1,P=0):x>=_?(A=1,S=0,E=0,C=1,T=0,P=1):(A=0,S=0,E=1,C=1,T=0,P=1):w<_?(A=0,S=0,E=1,C=0,T=1,P=1):x<_?(A=0,S=1,E=0,C=0,T=1,P=1):(A=0,S=1,E=0,C=1,T=1,P=0);let R=x-A+kr,O=w-S+kr,U=_-E+kr,j=x-C+2*kr,z=w-T+2*kr,L=_-P+2*kr,G=x-1+3*kr,F=w-1+3*kr,V=_-1+3*kr,N=p&255,X=m&255,Z=g&255,ee=.6-x*x-w*w-_*_;if(ee<0)l=0;else{let Q=N+t[X+t[Z]];ee*=ee,l=ee*ee*(i[Q]*x+r[Q]*w+s[Q]*_)}let W=.6-R*R-O*O-U*U;if(W<0)h=0;else{let Q=N+A+t[X+S+t[Z+E]];W*=W,h=W*W*(i[Q]*R+r[Q]*O+s[Q]*U)}let ne=.6-j*j-z*z-L*L;if(ne<0)u=0;else{let Q=N+C+t[X+T+t[Z+P]];ne*=ne,u=ne*ne*(i[Q]*j+r[Q]*z+s[Q]*L)}let q=.6-G*G-F*F-V*V;if(q<0)c=0;else{let Q=N+1+t[X+1+t[Z+1]];q*=q,c=q*q*(i[Q]*G+r[Q]*F+s[Q]*V)}return 32*(l+h+u+c)}}function I_(e){let t=new Uint8Array(512);for(let i=0;i<512/2;i++)t[i]=i;for(let i=0;i<512/2-1;i++){let r=i+~~(e()*(256-i)),s=t[i];t[i]=t[r],t[r]=s}for(let i=256;i<512;i++)t[i]=t[i-256];return t}var wr=new Di,DF=class{constructor(e){this.weightAttribute=null;let t=e.geometry;if(!t.isBufferGeometry||t.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");t.index&&(t=t.toNonIndexed()),this.geometry=t,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let e=this.positionAttribute,t=new Float32Array(e.count/3);for(let r=0;r<e.count;r+=3){let s=1;wr.a.fromBufferAttribute(e,r),wr.b.fromBufferAttribute(e,r+1),wr.c.fromBufferAttribute(e,r+2),s*=wr.getArea(),t[r/3]=s}this.distribution=new Float32Array(e.count/3);let i=0;for(let r=0;r<t.length;r++)i+=t[r],this.distribution[r]=i;return this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t){if(this.distribution){let i=this.distribution[this.distribution.length-1],r=this.binarySearch(this.randomFunction()*i);return this.sampleFace(r,e,t)}}binarySearch(e){if(!this.distribution)return 0;let t=this.distribution,i=0,r=t.length-1,s=-1;for(;i<=r;){let n=Math.ceil((i+r)/2);if(n===0||t[n-1]<=e&&t[n]>e){s=n;break}else e<t[n]?r=n-1:i=n+1}return s}sampleFace(e,t,i){let r=this.randomFunction(),s=this.randomFunction();return r+s>1&&(r=1-r,s=1-s),wr.a.fromBufferAttribute(this.positionAttribute,e*3),wr.b.fromBufferAttribute(this.positionAttribute,e*3+1),wr.c.fromBufferAttribute(this.positionAttribute,e*3+2),t.set(0,0,0).addScaledVector(wr.a,r).addScaledVector(wr.b,s).addScaledVector(wr.c,1-(r+s)),wr.getNormal(i),this}},OF=Jd(Ib()),LF=new Se,IF=new Se,BF=new Se,jd;(e=>{function t(i){return i&&i.__isSPEObject}e.is=t})(jd||(jd={}));var zg=e=>class extends e{constructor(){super(...arguments),this.hiddenMatrix=new Se,this.matrixWorldRigid=new Se,this.shearScale=new Se,this.shearScaleInv=new Se}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof _t&&(t=t.uuid);let i=this;for(;i.parent;){if(i.parent.uuid===t)return!0;i=i.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let i of this.children)i.updateMatrixWorld(t)}updateWorldMatrix(t,i){let r=this.parent;if(t&&r!==null&&r.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),i)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,i=0){if(t(this,i)!==!0)for(let r of this.children)jd.is(r)&&r.traverseObject(t,i+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,i=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:r,v:s,q:n}=(0,OF.SVD)(i),a=LF.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1),o=IF.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),l=BF.copy(o).transpose();this.shearScale.makeScale(n[0],n[1],n[2]).multiply(l).premultiply(o),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,l).copyPosition(this.matrixWorld),n.every(h=>Math.abs(n[0]-h)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,i){this.updateWorldMatrix(!0,!1);let r=new Se().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),r.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Se?t.hiddenMatrix.premultiply(r):t.applyMatrix4(r),t.updateWorldMatrix(!1,!1),this.add(t),i!==void 0&&(this.children.pop(),this.children.splice(i,0,t)),this}},RF=class extends zg(_t){},NF=e=>e.type==="Mesh",Xn=class extends RF{constructor(e){super(),this.object=e,this.matrixAutoUpdate=!1}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let i=this.children[e];i?.object!==t&&(i&&this.remove(i),i=new Xn(t),this.add(i),i.matrixAutoUpdate=!1,i.matrix=t.matrix,i.hiddenMatrix=t.hiddenMatrix),i.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return NF(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}},Un=new M,kn=new M,fo=new Se,B_=[new M(-1,1,1),new M(-1,-1,1),new M(1,-1,1),new M(1,1,1),new M(-1,1,-1),new M(-1,-1,-1),new M(1,-1,-1),new M(1,1,-1)],zF=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],FF=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],X1=(e,t,i)=>{e.updateEntityBoxSize(Un,kn),fo.copy(t).multiply(e.matrixWorld),kn.x===0&&kn.y===0&&kn.z===0?i.push(new M(Un.x,Un.y,Un.z).applyMatrix4(fo)):B_.forEach(r=>{i.push(r.clone().multiply(kn).add(Un).applyMatrix4(fo))})},Y1=class extends Gt{constructor(){super(...arguments),this.matrix=new Se,this.vertices=[],this.faces=[],this.edges=[],this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let i=new Se().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,i,t)}expandByObjectSize(e,t,i=!1){let r=[];return i===!0?e.traverseEntity(s=>{s.visible&&X1(s,t,r)}):X1(e,t,r),this.setFromPoints(r)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(fo.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(kn).multiplyScalar(.5),this.getCenter(Un),fo.copy(this.matrix).setPosition(Un),this.vertices=B_.map(e=>e.clone().multiply(kn).applyMatrix4(fo))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=zF.map(([e,t])=>new cr(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=FF.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}},ln={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}},Ft;(e=>{function t(i){return i&&i.__isEntity}e.is=t})(Ft||(Ft={}));var Wi=e=>Ft.is(e),R_=e=>class extends zg(e){constructor(){super(...arguments),this.raycastLock=!1,this.scaleLock=!1,this.disposed=!1,this.stateSelection=null,this.instances=[],this.prevState=null,this.currentState=null,this.reversibleToState=null,this.currentTransitionEvent=null,this._singleBBox=new Y1,this._recursiveBBox=new Y1,this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get __isEntity(){return!0}entityChildren(t){let i=this.children[t];if(Ft.is(i))return i}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let i=t.parent;if(Ft.is(i))t=i;else return}return t}forInstancesRec(t){this.instances.forEach(i=>{i.disposed||t(i),i.forInstancesRec(t)})}super_Entity(t,i){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=i,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,i,r=!1){if(!(this.data.states.length===0&&!r)){for(let s of this.data.states)Wn.toOps(this.data,s.data).forEach(n=>{let a=Hf.replaceProps(n,this.data);this.updateByPatchedOp(a,this.data,i)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=Wn.patch(this.data,s),Wn.toOps(this.data,s).forEach(n=>{this.updateByPatchedOp(n,this.dataPatched,i)}))}else this.dataPatched=this.data;r&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,i){t.setScalar(0),i.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Wi(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let i;return this.traverseEntity(r=>{r.uuid===t&&(i=r)}),i}traverseSortNextHelper(){let t=this.parent;if(t){let i=t.children,r=i.indexOf(this)+1;if(Ft.is(i[r]))return i[r];if(Ft.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ft.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let i=this;for(;t>0&&i!==null;)i=i.parent,t-=1;return i}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let i=this.parent;for(;i;){if(t===i)return!0;i=i.parent}return!1}countToAccestor(t){let i=0,r=this;for(;r!==t;){if(r===null)return-1;r=r.parent,i+=1}return i}forEachEntity(t){for(let i of this.children)Wi(i)&&t(i)}traverseEntityAncestors(t){this.traverseAncestors(i=>{Ft.is(i)&&t(i)})}traverseEntity(t,i=0){if(t(this,i)!==!0)for(let r of this.children)Wi(r)&&r.traverseEntity(t,i+1)}traverseVisibleEntity(t){t(this);for(let i of this.children)Wi(i)&&i.visible&&i.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,i=!0){return super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Wi(t))}isAncestorOf(t){if(this.uuid===t)return!1;let i=!1;return this.traverseEntity(r=>{r.uuid===t&&(i=!0)}),i}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let i={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return jf(i,t)}updateTransformState(t){let i=!1;return t.position&&(this.position.fromArray(t.position),i=!0),t.rotation&&(this.rotation.fromArray(t.rotation),i=!0),t.scale&&(i=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Mo.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(r=>{r.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ft.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ft.is(t)&&t.disposeRecursively()})}toState(t=[]){let i={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return jf(i,t)}updateByOp(t,i,r,s){let n=this.data;this.data=i;let a=t,o=Vn(t.path,["states","*"]);if(o!==null){if(t.type===0){let[l]=o;if(this?.stateSelection===l){let h={...t.props};if(Object.values(t.props).some(u=>u===void 0)){let u=this.data;if(u!==void 0){let c=ss.zoom(u,t.path.slice(2));if(c)for(let d in t.props)t.props[d]===void 0&&d in c&&(h[d]=c[d])}}a={...t,props:h,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:u,...c}=l;l=c}if(t.props.material!==void 0&&"material"in l){let{material:u,...c}=l;l=c}let h=ss.removeOverridden(t.path,t.props,l);a={...t,props:h}}}if(this.updateByPatchedOpBase(a,Wn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),r),Vn(t.path,["overrides"])){let l=[],h=[...t.path];for(l.push(h[1]),h.splice(0,2);h.length>0&&h[0]==="descendants";)l.push(h[1]),h.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let u of Object.keys(t.props)){l[l.length-1]=u;let c=r.scene.findInstance([this.uuid,...l]);c&&(c.overrideData=t.props[u],c.updateState(Jn.apply(c.component.data,c.overrideData),r))}}else{let u=r.scene.findInstance([this.uuid,...l]);if(u){let c=ss.zoom(u.component.data,h);if(t={...t,path:h},t.type===0){let d=t.props;if(c)for(let[p,m]of Object.entries(t.props))m===void 0&&(d===t.props&&(d={...t.props}),d[p]=c[p]);t={...t,props:d}}u.overrideData=Od.resolve(i.overrides,l),u.updateByOp(t,Yi.applySimple(u.data,t),r,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let h;for(let u of Co.rootOverrideProps)u in t.props&&(h===void 0&&(h={}),h[u]=t.props[u]);h&&(l={...t,props:h})}else for(let h of Co.rootOverrideProps)if(Vn(t.path,[h])){l=t;break}l!==void 0&&this.instances.forEach(h=>{if(h.isInstanceRoot){let u=Jn.filterOp(h.overrideData,l);u&&h.updateByOp(u,Yi.applySimple(h.data,u),r,!0)}}),this.instances.forEach(h=>{if(!h.isInstanceRoot){let u=Jn.filterOp(h.overrideData,t);if(u){let c;n===h.data&&t===u?c=i:c=Yi.applySimple(h.data,u),h.updateByOp(u,c,r,!0)}}})}}updateByPatchedOpBase(t,i,r){if(this.dataPatched=i,t.path.length===0&&t.type===0)t.props.type!==void 0&&!na.is(t.props.type)&&ln.changeEntityProptotype(this,i,r);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){ln.changeEntityProptotype(this,i,r);for(let s of this.children)Ft.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,i,r)}updateByPatchedOp(t,i,r){if(t.path.length===0&&t.type===0&&this.updateState(t.props,r),Vn(t.path,["cloner"])!==null){let s=Yi.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,r):this.cloner?this.cloner.updateState(i.cloner,r.scene):(this.setFromClonerState(i.cloner,r),this.expandCloner(r.scene)),this.updateVisible()}}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,i){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,i),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof ln.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,i){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):(this.cloner===void 0&&(this.cloner=new ln.Cloner(this,t),i.scene.addPendingExpandCloner(this)),this.cloner.updateState(t,i.scene)))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}},UF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},e.parameters),r=i.width/2,s=i.radiusTop??r,n=i.radiusBottom??r;return s===n?(s=r,n=r):s>n?(s=r,n=n*r/s):(s=s*r/n,n=r),{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width),radiusTop:s,radiusBottom:n})}}static build(e){let{width:t,depth:i,height:r,radialSegments:s,heightSegments:n,openEnded:a,thetaStart:o,thetaLength:l,radiusTop:h,radiusBottom:u,cornerRadius:c,cornerSegments:d,hollow:p}=e.parameters,m;return c||p?m=new N_(h,u,r,s,n,a,o,l*Math.PI/180,c,c,d,p):m=new $m(h,u,r,s,n,a,o,l*Math.PI/180),m.scale(1,1,i/t),Object.assign(m,{userData:{...e,type:"CylinderGeometry"}})}};function Xs(e,t,i){i.x=e.x*t.x,i.y=e.y,i.z=e.x*t.y}function q1(e){return new H(e.y,-e.x)}var N_=class extends ke{constructor(e,t,i,r,s,n,a,o,l,h,u,c,d=!1){super(),this.type="RoundedCylinderBufferGeometry",e=e!==void 0?e:1,t=t!==void 0?t:1,i=i||1,r=Math.floor(r)||8,s=Math.floor(s)||1,n=n!==void 0?n:!1,a=a!==void 0?a:0,o=o!==void 0?o:Math.PI*2,n&&(l=0,h=0);let p=[],m=[],g=[],f=[],v=0,y=i/2,b=new M,x=new M;d&&e==0&&(e=l),d&&t==0&&(t=h);let w=new H(e,y),_=new H(t,-y),A=null,S=null,E=null,C=null,T=w.clone().sub(_),P=0,R=0,O=0;c>0&&(P=Math.min(e,t)*(1-c),R=e-P,O=t-P);let U=w.clone();U.x-=P;let j=Math.PI-T.angle(),z=T.angle(),L=Math.tan(z/2),G=Math.tan(j/2),F=L+G,V=c?F:G,N=c?F:L;if(l=Math.min(l,(e-R)/V,T.length()/F),h=Math.min(h,(t-O)/N,T.length()/F),l>0){let q=l/L;A=w.clone().sub(new H(q,l)),c&&(E=A.clone(),E.x-=P-F*l),w.sub(T.clone().setLength(q))}if(h>0){let q=h/G;S=_.clone().sub(new H(q,-h)),_.add(T.clone().setLength(q)),c&&(C=S.clone(),C.x-=P-F*h,U.sub(T.clone().setLength(q)))}T=w.clone().sub(_);let X=T.length()<.5,Z=[];for(let q=0;q<=r;q++){let Q=[],K=q/r,de=K*o+a,oe=new H(Math.sin(de),Math.cos(de));C&&S?(ee(Q,K,oe,j,h,C,-1,!0),ee(Q,K,oe,z,h,S,-1,!1)):S?(W(Q,oe,S.x,0,-1),ee(Q,K,oe,z,h,S,-1,!1)):n||W(Q,oe,t,O,-1);let le=q1(T).normalize();if(Xs(le,oe,b),!X)for(let ue=0;ue<=s;ue++){let pe=ue/s,ge=T.clone().multiplyScalar(pe).add(_);Xs(ge,oe,x),m.push(x.x,x.y,x.z),g.push(b.x,b.y,b.z),f.push(K,.5+x.y/i),Q.push(v++)}if(E&&A?(ee(Q,K,oe,j,l,A,1,!1),ee(Q,K,oe,z,l,E,1,!0)):A?(ee(Q,K,oe,j,l,A,1,!1),W(Q,oe,A.x,0,1)):n||W(Q,oe,e,R,1),c&&!X){let ue=q1(T).multiplyScalar(-1).normalize();Xs(ue,oe,b);for(let pe=0;pe<=s;pe++){let ge=pe/s,De=T.clone().multiplyScalar(-ge).add(U);Xs(De,oe,x),m.push(x.x,x.y,x.z),g.push(b.x,b.y,b.z),f.push(K,.5+x.y/i),Q.push(v++)}}c&&!n&&Q.push(Q[0]),Z.push(Q)}for(let q=0;q<Z.length-1;q++)for(let Q=0;Q<Z[0].length-1;Q++){if(n&&c&&Q==s)continue;let K=Z[q][Q],de=Z[q+1][Q],oe=Z[q+1][Q+1],le=Z[q][Q+1],ue=m[oe*3+0],pe=m[oe*3+2];p.push(K,de,le),(ue!=0||pe!=0)&&p.push(de,oe,le)}o<Math.PI*2&&(ne(-1,Z[0],a),ne(1,Z[Z.length-1],a+o)),this.setIndex(p),this.setAttribute("position",new Ee(m,3)),this.setAttribute("normal",new Ee(g,3)),this.setAttribute("uv",new Ee(f,2));function ee(q,Q,K,de,oe,le,ue,pe){for(let ge=0;ge<u+1;ge++){let De=ge/u,Ae=ue<0?De:1-De;pe&&(Ae-=1),Ae*=de;let we=new H(Math.sin(Ae),Math.cos(Ae)*ue),bt=we.clone().multiplyScalar(oe).add(le);Xs(bt,K,x),m.push(x.x,x.y,x.z),Xs(we,K,b),g.push(b.x,b.y,b.z),f.push(Q,.5+x.y/i),q.push(v++)}}function W(q,Q,K,de,oe){let le=new M,ue=new H,pe=[K,de];oe<0&&pe.reverse();for(let ge of pe)ue.set(ge,y*oe),Xs(ue,Q,le),m.push(le.x,le.y,le.z),g.push(0,oe,0),f.push(.5,.5),q.push(v++)}function ne(q,Q,K){let de=new H(Math.sin(K),Math.cos(K)),oe=new H(-Math.cos(K),Math.sin(K)),le=new M,ue=q<0?(De,Ae,we)=>p.push(De,Ae,we):(De,Ae,we)=>p.push(De,we,Ae),pe=new H((e+t+R+O)/4,0);Xs(pe,de,le),m.push(le.x,le.y,le.z),g.push(oe.x,0,oe.y),f.push(.5,.5);let ge=v++;for(let De of Q){let Ae=m.slice(De*3,De*3+3);m.push(...Ae),g.push(oe.x,0,oe.y);let we=f.slice(De*2,De*2+2);f.push(...we),v++}for(let De=ge+1;De<v-1;De++)ue(ge,De,De+1);ue(ge,v-1,ge+1)}}},kF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,depth:i,height:r,radialSegments:s,heightSegments:n,openEnded:a,thetaStart:o,thetaLength:l,cornerRadiusTop:h,cornerRadiusBottom:u,cornerSegments:c}=e.parameters,d;return h>0||u>0||l<360?d=new N_(0,t/2,r,s,n,a,o,l*Math.PI/180,h,u,c,0,!0):d=new sw(t/2,r,s,n,a),d.scale(1,1,i/t),Object.assign(d,{userData:{...e,type:"ConeGeometry"}})}},jF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,widthSegments:s,heightSegments:n,depthSegments:a,cornerRadius:o,cornerSegments:l}=e.parameters,h;return o==0?h=new os(t,i,r,s,n,a):h=new HF(t,i,r,s,n,a,o,l),Object.assign(h,{userData:{...e,type:"CubeGeometry"}})}},Rp=Math.PI/2,HF=class extends ke{constructor(e=1,t=1,i=1,r=1,s=1,n=1,a=0,o=4){super(),this.type="BoxGeometry";let l=this;r=Math.floor(r),s=Math.floor(s),n=Math.floor(n),o=Math.floor(o),a=Math.min(a,e/2,t/2,i/2);let h=[],u=[],c=[],d=[],p=0,m=0;g("z","y","x",-1,-1,i,t,e,n,s,0),g("z","y","x",1,-1,i,t,-e,n,s,1),g("x","z","y",1,1,e,i,t,r,n,2),g("x","z","y",1,-1,e,i,-t,r,n,3),g("x","y","z",1,-1,e,t,i,r,s,4),g("x","y","z",-1,-1,e,t,-i,r,s,5),a>0&&(f("z","y","x",-1,-1,1,i,t,e,n,0),f("z","y","x",1,-1,-1,i,t,e,n,1),f("z","y","x",-1,1,-1,i,t,e,n,1),f("z","y","x",1,1,1,i,t,e,n,0),f("x","y","z",-1,-1,-1,e,t,i,r,0),f("x","y","z",1,-1,1,e,t,i,r,1),f("x","y","z",-1,1,1,e,t,i,r,0),f("x","y","z",1,1,-1,e,t,i,r,1),f("y","x","z",-1,-1,1,t,e,i,s,0),f("y","x","z",1,-1,-1,t,e,i,s,1),f("y","x","z",1,1,1,t,e,i,s,1),f("y","x","z",-1,1,-1,t,e,i,s,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new Ee(u,3)),this.setAttribute("normal",new Ee(c,3)),this.setAttribute("uv",new Ee(d,2));function g(y,b,x,w,_,A,S,E,C,T,P){let R=(A-2*a)/C,O=(S-2*a)/T,U=A/2-a,j=S/2-a,z=E/2,L=C+1,G=T+1,F=0,V=0,N=new M;for(let X=0;X<G;X++){let Z=X*O-j;for(let ee=0;ee<L;ee++){let W=ee*R-U;N[y]=W*w,N[b]=Z*_,N[x]=z,u.push(N.x,N.y,N.z),N[y]=0,N[b]=0,N[x]=E>0?1:-1,c.push(N.x,N.y,N.z),d.push(ee/C),d.push(1-X/T),F+=1}}for(let X=0;X<T;X++)for(let Z=0;Z<C;Z++){let ee=p+Z+L*X,W=p+Z+L*(X+1),ne=p+(Z+1)+L*(X+1),q=p+(Z+1)+L*X;h.push(ee,W,q),h.push(W,ne,q),V+=6}l.addGroup(m,V,P),m+=V,p+=F}function f(y,b,x,w,_,A,S,E,C,T,P){let R=(S-2*a)/T,O=S/2-a,U=E/2-a,j=C/2,z=T+1,L=0,G=0,F=new M,V=new M;for(let N=0;N<o+1;N++){let X=N/o*Rp,Z=Math.sin(X)*a,ee=(1-Math.cos(X))*a,W=Math.sin(X),ne=Math.cos(X);F[b]=(U+Z)*_,F[x]=(j-ee)*A,V[y]=0,V[b]=W*Math.sign(F[b]),V[x]=ne*Math.sign(F[x]);for(let q=0;q<z;q++){let Q=q*R-O;F[y]=Q*w,u.push(F.x,F.y,F.z),c.push(V.x,V.y,V.z),d.push(q/T),d.push(0),L+=1}}for(let N=0;N<o;N++)for(let X=0;X<T;X++){let Z=p+X+z*N,ee=p+X+z*(N+1),W=p+(X+1)+z*(N+1),ne=p+(X+1)+z*N;h.push(Z,ee,ne),h.push(ee,W,ne),G+=6}l.addGroup(m,G,P),m+=G,p+=L}function v(y,b,x){let w=new M,_=new M(e/2,t/2,i/2);_.subScalar(a);let A=[],S=y*b*x>0?(C,T,P)=>h.push(C,T,P):(C,T,P)=>h.push(C,P,T);for(let C=0;C<=o;C++){let T=[],P=Rp*(1-C/o),R=Math.cos(P),O=Math.sin(P),U=0;for(let j=0;j<=C;j++){let z=Math.cos(U),L=Math.sin(U);w.x=R*z,w.y=O,w.z=R*L;let G=_.clone().addScaledVector(w,a);u.push(y*G.x,b*G.y,x*G.z),c.push(y*w.x,b*w.y,x*w.z),d.push(0,0),T.push(p++),U+=Rp/C}A.push(T)}let E=A.length-1;for(let C=0;C<E;C++){let T=A[C],P=A[C+1],R=T.length-1;S(T[0],P[1],P[0]);for(let O=1;O<=R;O++)S(T[O-1],T[O],P[O]),S(T[O],P[O+1],P[O])}}}},Fg=class extends ke{constructor(e=[],t=[],i="",r=1,s=.2,n=4){super(),this.type="PolyhedronGeometryRound";let a=[],o=[],l=[];h(),u(),this.setAttribute("position",new Ee(a,3)),this.setAttribute("normal",new Ee(l,3)),this.setAttribute("uv",new Ee(o,2));return;function h(){s=Math.min(1-1e-5,s),s==0&&(n=0);let c={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[i],d=new M,p=d.clone(),m=new Di,g=s*r,f=r-g,v=n+1,y=new M,b=(z,L)=>y.subVectors(z,L).normalize(),x=(z,L)=>Array(z).fill(void 0).map(L),w=x(e.length/3,(z,L)=>new M().fromArray(e,L*3).setLength(r)),_=[],A=1e6;for(let z=0;z<w.length;z++){let L=w[z],G=[],F,V,N,X=1e10,Z=-1;for(;(Z=t.indexOf(z,Z+1))!=-1;){let q=Z-Z%3;F=t[q+(Z+1)%3],V=t[q+(Z+2)%3],N=L.distanceToSquared(w[F]),X=Math.min(X,N),G.push([F,V,N])}X+=1e-6;let ee=[],W=0,ne=G.length;for(let q=0;q<ne;q++){[F,V,N]=G[W];let Q=_[F]?.includes(z)==!0;N<=X&&ee.push(F+ +Q*A),W=G.findIndex(K=>K[0]==V)}_.push(ee)}let S=[];{let z=0,L=0,G,F,V=c==3;for(let N=0;N<=n;N++){G=N*(N+1)/2,F=(N+1)*(N+2)/2;for(let X=0;X<n-N;X++)[z,L]=[G+X+N+2,F+X+N+3],S.push(G,F,...V?[L,G]:[z,F],L,z),[G,F]=[z,L];S.push(G,F,G+n+2)}}let E=d.clone(),C=d.clone(),T=d.clone(),P=d.clone(),R=d.clone(),O=[],U=x(w.length,()=>x(c,()=>d.clone()));for(let z=0;z<w.length;z++){d.copy(w[z]).normalize(),E.copy(d).multiplyScalar(f);let L=_[z];for(let ee=0;ee<L.length;ee++){let W=L[ee],ne=L[(ee+1)%c];m.setFromPointsAndIndices(w,z,W%A,ne%A),m.b.sub(m.a).setLength(1e10).add(m.a),m.c.sub(m.a).setLength(1e10).add(m.a),m.closestPointToPoint(E,U[z][ee])}let G=[],F=[],V=[],N=new M;n==0&&[...U[z]].reduce((ee,W)=>ee.add(W),N).multiplyScalar(1/c);for(let ee=0;ee<c;ee++){let W=[],ne=(ee-1+c)%c,q=U[z][ne],Q=U[z][ee];d.copy(q).sub(E),p.copy(Q).sub(E);let K=E.angleTo(d),de=d.angleTo(p),oe=Math.cos(K)*g;n==0?C.copy(N):C.copy(E).setLength(f+oe),F.push(oe);let le=[C,q,Q];for(let ue=0;ue<2;ue++){let pe=le[ue],ge=le[ue+1];P.subVectors(pe,E),R.subVectors(ge,E),T.crossVectors(P,R).normalize();for(let De=0;De<v;De++){let Ae=[K,de][ue]*De/v;d.copy(P).applyAxisAngle(T,Ae).add(E),G.push(d.clone()),ue&&(b(d,E),W.push([De==0?pe:d.clone(),y.clone()]))}ue&&(b(ge,E),W.push([ge,y.clone()]))}V.push(W)}O.push(V);let X=2*v,Z=2;for(let ee=0;ee<c;ee++){let W=X*ee,ne=X*((ee+1)%c),q=[G[W]];for(let K=1;K<v;K++){P=G[W+K],R=G[ne+K],q.push(P);for(let de=1,oe=K-Z+1;de<=oe;de++)d.lerpVectors(P,R,de/(oe+1)),d.sub(E).setLength(F[ee]).add(E),q.push(d.clone());q.push(R)}for(let K=0;K<v;K++)q.push(G[K+v+W]);q.push(G[ne+v]);let Q=S.map(K=>q[K]);a.push(...Q.map(K=>[K.x,K.y,K.z]).flat()),l.push(...Q.map(K=>(b(K,E),[y.x,y.y,y.z])).flat())}}let j=[];for(let z=0;z<_.length;z++)for(let L=0;L<c;L++){let G=_[z][L];if(G<A){let F=_[G].findIndex(X=>X%A==z),V=O[z][L],N=O[G][F];for(let X=0;X<v;X++){let Z=V[X],ee=N[v-X],W=V[X+1],ne=N[v-(X+1)];[Z,ee,W,W,ee,ne].forEach(q=>{a.push(q[0].x,q[0].y,q[0].z),l.push(q[1].x,q[1].y,q[1].z)})}j.push(V[0][0],N[v][0],V[v][0],N[0][0])}}for(;j.length;){let z,L,G,F;[z,L]=j.splice(0,2);let V=[z];for(;z!=L;)V.push(L),G=j.indexOf(L),F=G%2,L=j.splice(G-F,2)[1-F];y.subVectors(V[0],V[1]).cross(d.subVectors(V[0],V[2])).normalize();let N=y.dot(V[0])<0;N&&y.negate();for(let X=1;X<=V.length-2;X++)[V[X+ +N],V[X+1-+N],V[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),l.push(y.x,y.y,y.z)})}}function u(){let c=new M;for(let _=0;_<a.length;_+=3){c.x=a[_+0],c.y=a[_+1],c.z=a[_+2];let A=x(c)/2/Math.PI+.5,S=w(c)/Math.PI+.5;o.push(A,1-S)}let d=new M,p=new M,m=new M,g=new M,f=new H,v=new H,y=new H,b=(_,A,S,E)=>{E<0&&_.x===1&&(o[A]=_.x-1),S.x===0&&S.z===0&&(o[A]=E/2/Math.PI+.5)};for(let _=0,A=0;_<a.length;_+=9,A+=6){d.set(a[_+0],a[_+1],a[_+2]),p.set(a[_+3],a[_+4],a[_+5]),m.set(a[_+6],a[_+7],a[_+8]),f.set(o[A+0],o[A+1]),v.set(o[A+2],o[A+3]),y.set(o[A+4],o[A+5]),g.copy(d).add(p).add(m).divideScalar(3);let S=x(g);b(f,A+0,d,S),b(v,A+2,p,S),b(y,A+4,m,S)}for(let _=0;_<o.length;_+=6){let A=o[_+0],S=o[_+2],E=o[_+4],C=Math.max(A,S,E),T=Math.min(A,S,E);C>.9&&T<.1&&(A<.2&&(o[_+0]+=1),S<.2&&(o[_+2]+=1),E<.2&&(o[_+4]+=1))}function x(_){return Math.atan2(_.z,-_.x)}function w(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(e){return new Fg(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}},GF=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,detail:s,corner:n,cornerSides:a}=e.parameters,o=s===0&&n!==0?new z_(t*.5,n,a):new nw(t*.5,s);return o.scale(1,i/t,r/t),Object.assign(o,{userData:{...e,type:"DodecahedronGeometry"}})}},z_=class extends Fg{constructor(e=1,t=.2,i=4){let r=(1+Math.sqrt(5))/2,s=1/r,n=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-r,0,-s,r,0,s,-r,0,s,r,-s,-r,0,-s,r,0,s,-r,0,s,r,0,-r,0,-s,r,0,-s,-r,0,s,r,0,s],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],o="DodecahedronGeometry";super(n,a,o,e,t,i),this.type=o}static fromJSON(e){return new z_(e.radius,e.corner,e.cornerSides)}},ul=1e-12,Ug=class{constructor(e){this.position=new H,this.startPosition=new H,this.uuid=rt.generateUUID(),this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new Ug(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},fm=class extends Ug{constructor(e){super(e.position),this.parent=e}copy(e){return super.copy(e),this}clone(){return new fm(this.parent).copy(this)}},mo=class extends Ug{constructor(e,t){super(t),this.controls=[],this.roundness=0,this.areControlsDirectionsMirrored=!0,this.uuid=e,this.controls.push(new fm(this),new fm(this))}static create(e,t){let i=new mo(e,new H(...t.position));return i.controls[0].position.set(...t.controlPrevious.position),i.controls[1].position.set(...t.controlNext.position),i.roundness=t.roundness,i.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,i}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let i=0,r=this.controls.length;i<r;i++){let s=this.controls[i];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new mo(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new H,t=new H){let[i,r]=this.computeTangents();return i&&r&&(Q1(i,e),Q1(r,t)),[e,t]}computeTangent(e=new H){let[t,i]=this.computeTangents();return t&&i&&e.copy(t).add(i).normalize(),e}computeNormal(e=new H){let[t,i]=this.computeNormals();return e.copy(t).add(i).normalize(),e}};function Q1(e,t=new H){let i=e.length();return t.set(-e.y/i,e.x/i)}var kg=e=>e,Ho=new H,gu=new H,VF=new H,WF=new H,XF=new H,YF=new H,F_=new M,U_=new M;function qF(e){let t=new H;t.addVectors(e.v0,Ho.subVectors(e.v1,e.v0).multiplyScalar(2/3));let i=new H;return i.addVectors(e.v2,gu.subVectors(e.v1,e.v2).multiplyScalar(2/3)),new Cr(e.v0,t,i,e.v2)}function Ol(e,t,i=Number.EPSILON){return Math.abs(e-t)<i}function QF(e,t,i=Number.EPSILON){return e.distanceTo(t)<i}function ZF(e,t,i=Number.EPSILON){return e.distanceTo(t)<i}function k_(e,t,i){let r=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),s=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),n=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2));return Math.acos((s*s+r*r-n*n)/(2*s*r))}function KF(e,t,i){return K1(e,t)&&K1(t,i)&&mm(e.position,t.position,i.position)}function mm(e,t,i){return Ho.copy(t).sub(e).cross(gu.copy(i).sub(e))===0}function JF(e,t,i,r,s){let n=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),a=(e.y+t.y)/2,o=(e.x+t.x)/2,l=Math.sqrt(Math.pow(i,2)-Math.pow(n/2,2))*(e.y-t.y)/n,h=Math.sqrt(Math.pow(i,2)-Math.pow(n/2,2))*(t.x-e.x)/n;return r.set(o+l,a+h),s.set(o-l,a-h),[r,s]}function $F(e,t,i){let r=e.distanceTo(i),s=t.distanceTo(i);return r<s?t:e}function eU(e,t,i,r,s,n){let a=t.x-e.x,o=t.y-e.y,l=i.x-e.x,h=i.y-e.y,u=Math.sqrt((a+l)*(a+l)+(o+h)*(o+h)),c;return k_(t,e,i)>Math.PI&&(u*=-1),Ol(h,o)?c=(o+h)*(r/u-.5)*8/3/(a-l):c=(a+l)*(r/u-.5)*8/3/(h-o),s.set(t.x-c*o,t.y+c*a),n.set(i.x+c*h,i.y-c*l),[s,n]}function Z1(e,t){return e.position.equals(e.controls[1].position)&&t.position.equals(t.controls[0].position)}function K1(e,t){return mm(e.position,e.controls[1].position,t.position)&&mm(e.position,t.controls[0].position,t.position)}function tU(e,t,i,r,s=.5){let n=Ho.subVectors(t,e).multiplyScalar(s).add(e),a=gu.subVectors(i,t).multiplyScalar(s).add(t),o=VF.subVectors(r,i).multiplyScalar(s).add(i),l=n,h=WF.subVectors(a,n).multiplyScalar(s).add(n),u=XF.subVectors(o,a).multiplyScalar(s).add(a),c=o,d=YF.subVectors(u,h).multiplyScalar(s).add(h);return[e.x,e.y,l.x,l.y,h.x,h.y,d.x,d.y,u.x,u.y,c.x,c.y,r.x,r.y]}function iU(e,t,i=12,r=!0){let s=U_.set(0,0,0),n,a=0,o=[];for(let l=0;l<t.length;l++){let h=kg(t[l]),u=Ho,c=ea(h,i);o.push(c);for(let d=0;d<=c;d++)if(h instanceof Cr||h instanceof gn||h instanceof Dr){if(h.getPoint(d/c,u),s.set(u.x,u.y,0),n!==void 0&&ZF(n,s))continue;n===void 0&&(n=F_),n.copy(s),e.setXYZ(a,s.x,s.y,s.z),a++}}return r&&a>1&&!(e.getX(a-1)===e.getX(0)&&e.getY(a-1)===e.getY(0)&&e.getZ(a-1)===e.getZ(0))&&(e.setXYZ(a,e.getX(0),e.getY(0),e.getZ(0)),a++),e}function rU(e,t,i,r=12,s=!0){let n=U_.set(0,0,0),a=0,o=[];for(let l=0;l<t.length;l++){if(i[l]===!1)continue;let h,u=kg(t[l]),c=Ho,d=ea(u,r);o.push(d);for(let p=0;p<=d;p++)if(u instanceof Cr||u instanceof gn||u instanceof Dr){if(u.getPoint(p/d,c),n.set(c.x,c.y,0),h?.equals(n))continue;h===void 0?h=F_:(e.setXYZ(a,h.x,h.y,h.z),a++,e.setXYZ(a,n.x,n.y,n.z),a++),h.copy(n)}}return s&&a>1&&!(e.getX(a-1)===e.getX(0)&&e.getY(a-1)===e.getY(0)&&e.getZ(a-1)===e.getZ(0))&&(e.setXYZ(a,e.getX(0),e.getY(0),e.getZ(0)),a++),o}function J1(e,t=12,i=!1){let r=[];for(let s=0,n=e.length;s<n;s++){let a=e[s],o=0;if(i&&a.roundedCurveCorner!==void 0){let l=ea(a.roundedCurveCorner,t)*.5;s>0&&(r[s-1]+=l),o+=l}a.curveAfter!==void 0&&(o+=ea(a.curveAfter,t)),r.push(o)}return e.length>0&&i&&e[0].roundedCurveCorner!==void 0&&(r[e.length-1]+=ea(e[0].roundedCurveCorner,t)*.5),r}function ea(e,t=12){return e&&e instanceof tu?t*2:e&&(e instanceof Dr||e instanceof iw)?1:e&&e instanceof Jm?t*e.points.length:t}function sU(e,t,i=12,r=!0){let s,n=0;for(let a=0;a<t.length;a++){let o=kg(t[a]),l=ea(o,i),h=Ho;for(let u=0;u<=l;u++)if(o instanceof Cr||o instanceof gn||o instanceof Dr){if(o.getPoint(u/l,h),s!==void 0&&QF(s,h,ul))continue;s===void 0&&(s=gu),s.copy(h),e.push(h.x,h.y),n++}}return Ol(e[0],e[e.length-2],ul)&&Ol(e[1],e[e.length-1],ul)&&(e.pop(),e.pop()),r&&n>1&&!(Ol(e[n-1],e[1],ul)&&Ol(e[n-2],e[0],ul))&&(e.push(e[0],e[1]),n++),e}var Np=new H,nU=new H,aU=new H,oU=new H,lU=new H,hU=new H,Bt=class extends dd{constructor(e=100,t=100){super(),this.points=[],this.shapeHoles=[],this.plane=new ar(new M(0,0,-1)),this.subdivision=0,this.controlSnapDistance=4,this.pointIDs=0,this.isMesh2D=!1,this._roundness=0,this.isClosed=!1,this.useCubicForRoundedCorners=!0,this.uuid=rt.generateUUID(),this.needsUpdate=!1,this.roundedCurves=[],this._width=e,this._height=t}static createFromState(e,t,i){let r=new Bt;return r.isClosed=e.isClosed,r.points=e.points.map(s=>mo.create(s.id,s.data)),typeof e.roundness=="number"&&(r.roundness=e.roundness),r.shapeHoles=e.shapeHoles.map(s=>Bt.createFromState(s)),t!==void 0&&i!==void 0&&r.applySize(t,i),r.update(),r}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,i=this.points.length;t<i;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,i=this.points.findIndex(r=>r.uuid===e);if(i<0){let r=t;for(let s=0,n=this.shapeHoles.length;s<n;s++){let a=this.shapeHoles[s],o=a.points.length,l=a.getPointIndexById(e);if(l<0)r+=o;else return l+r}}return i}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let i=0,r=this.shapeHoles.length;i<r;i++){let s=this.shapeHoles[i],n=e-t;if(n<=s.points.length-1)return s.points[n];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let i=0,r=this.shapeHoles.length;i<r;i++){let s=this.shapeHoles[i],n=s.points.indexOf(e);if(n>=0)return t+n;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let i=Np.set(e,t);for(let r=0,s=this.points.length;r<s;r++){let n=this.points[r];n.position.multiply(i),n.controls[0].position.multiply(i),n.controls[1].position.multiply(i)}for(let r=0,s=this.shapeHoles.length;r<s;r++)this.shapeHoles[r].applyScale(e,t);this._update()}createPoint(e,t=0,i=rt.generateUUID()){let r;e instanceof H?r=e:r=new H(e,t);let s=new mo(i,r);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];if(r.uuid===e)return r}for(let t=0,i=this.shapeHoles.length;t<i;t++){let r=this.shapeHoles[t].getPointByUuid(e);if(r)return r}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(i=>i.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,i=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let r=i?this.roundedCurveDivisions:this.curveDivisions;return iU(e,i?this.roundedCurves:this.curves,t,this.autoClose),r.reduce((s,n)=>s+n,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=J1(this.points,e,!1),this.roundedCurveDivisions=J1(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,i=12){return rU(e,this.curves,t,i,this.autoClose).reduce((r,s)=>r+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),sU(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let i=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let r=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=ea(this.points[0].roundedCurveCorner,this.subdivision)*.5);let n=e-s;n<0&&(n+=r.reduce((a,o)=>a+o,0));for(let a=0,o=r.length;a<o;a++){let l=r[a];if(n<i+l)return[a,(n-i+1)/l];i+=l}return[0,1]}getCurveT(e,t,i){let r=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],n=this.curveDivisions,a=n[e];if(Z1(r,s)){let l=r.position.distanceTo(s.position);return r.position.distanceTo(Np.set(i.x,i.y))/l}let o=0;for(let l=0;l<e;l++)o+=n[l];return(t-o)/a}dispose(){}_applyCurveForPoint(e,t){Z1(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let i=this.curves[this.curves.length-1];e.curveBefore=i,t.curveAfter=i;let r=i.clone();e.roundedCurveBefore=r,t.roundedCurveAfter=r,e.roundedCurveCorner=void 0,this.roundedCurves.push(r)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,i=this.points.length;t<i;t++){let r=this.points[t];if(t===0)this.moveTo(r.position.x,r.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(r,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(t,i)}if(this.points.length>2){let t=0;for(let i=0,r=this.points.length;i<r;i++){let s=this.points[i],n=this.points[i-1]??this.points[this.points.length-1],a=this.points[i+1]??this.points[0],o=s.roundness,l=n&&a&&KF(n,s,a);if(!s.controlsMoved()&&o>0&&!l){let h=s.curveBefore,u=s.curveAfter;if(h===void 0||u===void 0)continue;let c=s.roundedCurveBefore,d=s.roundedCurveAfter,p=h.getLength(),m=u.getLength(),g=Math.min(o,p*.499),f=Math.min(o,m*.499),v=Math.min(g,f),y=1-v/p,b=v/m,x=h.getPointAt(y,Np),w=u.getPointAt(b,nU);this._subSplitCurve(h,c,y,x,void 0),this._subSplitCurve(u,d,b,void 0,w);let _;if(this.useCubicForRoundedCorners){let A=k_(x,s.position,w)/2,S=Math.tan(A)*x.distanceTo(s.position),[E,C]=JF(x,w,S,aU,oU),T=$F(E,C,s.position),[P,R]=eU(T,x,w,S,lU,hU);_=new Cr(x.clone(),P.clone(),R.clone(),w.clone())}else _=new gn(x.clone(),s.position.clone(),w.clone());s.roundedCurveCorner=_,this.roundedCurves.splice(i+t,0,_),t++}}}}_subSplitCurve(e,t,i,r,s){if(e instanceof Dr)r!==void 0&&t.v2.copy(r),s!==void 0&&t.v1.copy(s);else{let n=e,a=t,o=n.getUtoTmapping(i,0),l=tU(n.v0,n.v1,n.v2,n.v3,o);return r!==void 0&&(a.v0.set(l[0],l[1]),a.v1.set(l[2],l[3]),a.v2.set(l[4],l[5]),a.v3.set(l[6],l[7])),s!==void 0&&(a.v0.set(l[6],l[7]),a.v1.set(l[8],l[9]),a.v2.set(l[10],l[11]),a.v3.set(l[12],l[13])),a}return t}clone(){let e=new Bt(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let i=0;i<t;i++){let r=i*7,s=e.points[r+0],n=e.points[r+1],a=e.points[r+2],o=e.points[r+3],l=e.points[r+4],h=e.points[r+5],u=e.points[r+6],c=new mo(rt.generateUUID(),new H(s,n));c.controls[0].position.set(a,o),c.controls[1].position.set(l,h),c.roundness=u,this.points.push(c)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(i=>{let r=new Bt;return r.fromJSON(i),r}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(r,s)=>{s instanceof Cr&&s.v3.equals(r.position)&&r.controls[0].position.copy(s.v2)},i=r=>{let s=[],n,a;for(n=0,a=r.length;n<a;n++)r[n]instanceof gn&&(r[n]=qF(r[n]));for(n=0,a=r.length;n<a;n++){let h=r[n],u=n>0?r[n-1]:null,c;h instanceof Cr?(c=this.createPoint(h.v0),c.controls[1].position.copy(h.v1)):h instanceof Dr&&(c=this.createPoint(h.v1)),c!==void 0&&(u!==null&&t(c,u),s.push(c))}let o=r[r.length-1],l=!1;return o instanceof Cr?o.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(o.v2),l=!0):o instanceof Dr&&o.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=i(e.curves),e instanceof dd&&(this.shapeHoles=e.holes.map(r=>{let s=new Bt;return s.fromShape(r),s})),this.update(),this}updatePoint(e,t){let i=this.getPointByUuid(e);i&&(t.position!==void 0&&i.position.fromArray(t.position),t.roundness!==void 0&&(i.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(i.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}},gm=Math.PI*2;function zp({x:e,y:t},i,r,s,n){return{x:e*i+s,y:t*r+n}}function cU(e,t){let i=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(e),s=Math.sin(e),n=Math.cos(e+t),a=Math.sin(e+t);return[{x:r-s*i,y:s+r*i},{x:n+a*i,y:a-n*i},{x:n,y:a}]}function $1(e,t,i,r){let s=e*r-t*i<0?-1:1,n=Math.min(1,Math.max(-1,e*i+t*r));return s*Math.acos(n)}function dU(e,t,i,r,s,n,a,o,l,h){let u=Math.pow(s,2),c=Math.pow(n,2),d=Math.pow(a,2),p=Math.pow(o,2),m=u*c-u*p-c*d;m<0&&(m=0),m/=u*p+c*d,m=Math.sqrt(m)*(l===h?-1:1);let g=m*s/n*o,f=m*-n/s*a,v=g+(e+i)/2,y=f+(t+r)/2,b=(a-g)/s,x=(o-f)/n,w=(-a-g)/s,_=(-o-f)/n,A=$1(1,0,b,x),S=$1(b,x,w,_);return!h&&S>0&&(S-=gm),h&&S<0&&(S+=gm),{centerx:v,centery:y,ang1:A,ang2:S}}function uU({px:e,py:t,cx:i,cy:r,rx:s,ry:n,largeArcFlag:a,sweepFlag:o}){let l=[];if(s===0||n===0)return[];let h=(e-i)/2,u=(t-r)/2;if(h===0&&u===0)return[];s=Math.abs(s),n=Math.abs(n);let c=Math.pow(h,2)/Math.pow(s,2)+Math.pow(u,2)/Math.pow(n,2);c>1&&(s*=Math.sqrt(c),n*=Math.sqrt(c));let d=dU(e,t,i,r,s,n,h,u,a,o),{ang1:p,ang2:m}=d,{centerx:g,centery:f}=d,v=Math.abs(m)/(gm/4);Math.abs(1-v)<1e-7&&(v=1);let y=Math.max(Math.ceil(v),1);m/=y;for(let b=0;b<y;b++)l.push(cU(p,m)),p+=m;return l.map(b=>{let{x,y:w}=zp(b[0],s,n,g,f),{x:_,y:A}=zp(b[1],s,n,g,f),{x:S,y:E}=zp(b[2],s,n,g,f);return{x1:x,y1:w,x2:_,y2:A,x:S,y:E}})}var Et;(function(e){e[e.ODD=0]="ODD",e[e.NONZERO=1]="NONZERO",e[e.POSITIVE=2]="POSITIVE",e[e.NEGATIVE=3]="NEGATIVE",e[e.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Et||(Et={}));var ri;(function(e){e[e.POLYGONS=0]="POLYGONS",e[e.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",e[e.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ri||(ri={}));function ze(e,t){if(!e)throw t||"Assertion Failed!"}var Ie=function(){function e(){}return e.vertEq=function(t,i){return t.s===i.s&&t.t===i.t},e.vertLeq=function(t,i){return t.s<i.s||t.s===i.s&&t.t<=i.t},e.transLeq=function(t,i){return t.t<i.t||t.t===i.t&&t.s<=i.s},e.edgeGoesLeft=function(t){return e.vertLeq(t.Dst,t.Org)},e.edgeGoesRight=function(t){return e.vertLeq(t.Org,t.Dst)},e.vertL1dist=function(t,i){return Math.abs(t.s-i.s)+Math.abs(t.t-i.t)},e.edgeEval=function(t,i,r){ze(e.vertLeq(t,i)&&e.vertLeq(i,r));var s=i.s-t.s,n=r.s-i.s;return s+n>0?s<n?i.t-t.t+(t.t-r.t)*(s/(s+n)):i.t-r.t+(r.t-t.t)*(n/(s+n)):0},e.edgeSign=function(t,i,r){ze(e.vertLeq(t,i)&&e.vertLeq(i,r));var s=i.s-t.s,n=r.s-i.s;return s+n>0?(i.t-r.t)*s+(i.t-t.t)*n:0},e.transEval=function(t,i,r){ze(e.transLeq(t,i)&&e.transLeq(i,r));var s=i.t-t.t,n=r.t-i.t;return s+n>0?s<n?i.s-t.s+(t.s-r.s)*(s/(s+n)):i.s-r.s+(r.s-t.s)*(n/(s+n)):0},e.transSign=function(t,i,r){ze(e.transLeq(t,i)&&e.transLeq(i,r));var s=i.t-t.t,n=r.t-i.t;return s+n>0?(i.s-r.s)*s+(i.s-t.s)*n:0},e.vertCCW=function(t,i,r){return t.s*(i.t-r.t)+i.s*(r.t-t.t)+r.s*(t.t-i.t)>=0},e.interpolate=function(t,i,r,s){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(i+s)/2:i+(s-i)*(t/(t+r)):s+(i-s)*(r/(t+r))},e.intersect=function(t,i,r,s,n){var a,o,l;e.vertLeq(t,i)||(l=t,t=i,i=l),e.vertLeq(r,s)||(l=r,r=s,s=l),e.vertLeq(t,r)||(l=t,t=r,r=l,l=i,i=s,s=l),e.vertLeq(r,i)?e.vertLeq(i,s)?(a=e.edgeEval(t,r,i),o=e.edgeEval(r,i,s),a+o<0&&(a=-a,o=-o),n.s=e.interpolate(a,r.s,o,i.s)):(a=e.edgeSign(t,r,i),o=-e.edgeSign(t,s,i),a+o<0&&(a=-a,o=-o),n.s=e.interpolate(a,r.s,o,s.s)):n.s=(r.s+i.s)/2,e.transLeq(t,i)||(l=t,t=i,i=l),e.transLeq(r,s)||(l=r,r=s,s=l),e.transLeq(t,r)||(l=t,t=r,r=l,l=i,i=s,s=l),e.transLeq(r,i)?e.transLeq(i,s)?(a=e.transEval(t,r,i),o=e.transEval(r,i,s),a+o<0&&(a=-a,o=-o),n.t=e.interpolate(a,r.t,o,i.t)):(a=e.transSign(t,r,i),o=-e.transSign(t,s,i),a+o<0&&(a=-a,o=-o),n.t=e.interpolate(a,r.t,o,s.t)):n.t=(r.t+i.t)/2},e}(),pl=function(){function e(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return e}(),Sc=function(){function e(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(e.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),e}(),Ya=function(){function e(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return e}(),ex=function(){function e(){var t=new Ya,i=new pl,r=new Sc(0),s=new Sc(1);t.next=t.prev=t,t.anEdge=null,i.next=i.prev=i,r.next=r,r.Sym=s,s.next=s,s.Sym=r,this.vHead=t,this.fHead=i,this.eHead=r,this.eHeadSym=s}return e.prototype.makeEdge_=function(t){var i=new Sc(0),r=new Sc(1);t.Sym.side<t.side&&(t=t.Sym);var s=t.Sym.next;return r.next=s,s.Sym.next=i,i.next=t,t.Sym.next=r,i.Sym=r,i.Onext=i,i.Lnext=r,i.Org=null,i.Lface=null,i.winding=0,i.activeRegion=null,r.Sym=i,r.Onext=r,r.Lnext=i,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,i},e.prototype.splice_=function(t,i){var r=t.Onext,s=i.Onext;r.Sym.Lnext=i,s.Sym.Lnext=t,t.Onext=s,i.Onext=r},e.prototype.makeVertex_=function(t,i,r){var s=t;ze(s,"Vertex can't be null!");var n=r.prev;s.prev=n,n.next=s,s.next=r,r.prev=s,s.anEdge=i;var a=i;do a.Org=s,a=a.Onext;while(a!==i)},e.prototype.makeFace_=function(t,i,r){var s=t;ze(s,"Face can't be null");var n=r.prev;s.prev=n,n.next=s,s.next=r,r.prev=s,s.anEdge=i,s.trail=null,s.marked=!1,s.inside=r.inside;var a=i;do a.Lface=s,a=a.Lnext;while(a!==i)},e.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var i=t.next,r=t.Sym.next;i.Sym.next=r,r.Sym.next=i},e.prototype.killVertex_=function(t,i){var r=t.anEdge,s=r;do s.Org=i,s=s.Onext;while(s!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},e.prototype.killFace_=function(t,i){var r=t.anEdge,s=r;do s.Lface=i,s=s.Lnext;while(s!==r);var n=t.prev,a=t.next;a.prev=n,n.next=a},e.prototype.makeEdge=function(){var t=new Ya,i=new Ya,r=new pl,s=this.makeEdge_(this.eHead);return this.makeVertex_(t,s,this.vHead),this.makeVertex_(i,s.Sym,this.vHead),this.makeFace_(r,s,this.fHead),s},e.prototype.splice=function(t,i){var r=!1,s=!1;if(t!==i){if(i.Org!==t.Org&&(s=!0,this.killVertex_(i.Org,t.Org)),i.Lface!==t.Lface&&(r=!0,this.killFace_(i.Lface,t.Lface)),this.splice_(i,t),!s){var n=new Ya;this.makeVertex_(n,i,t.Org),t.Org.anEdge=t}if(!r){var a=new pl;this.makeFace_(a,i,t.Lface),t.Lface.anEdge=t}}},e.prototype.delete=function(t){var i=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var s=new pl;this.makeFace_(s,t,t.Lface)}i.Onext===i?(this.killVertex_(i.Org,null),this.killFace_(i.Lface,null)):(t.Lface.anEdge=i.Oprev,i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t)},e.prototype.addEdgeVertex=function(t){var i=this.makeEdge_(t),r=i.Sym;this.splice_(i,t.Lnext),i.Org=t.Dst;var s=new Ya;return this.makeVertex_(s,r,i.Org),i.Lface=r.Lface=t.Lface,i},e.prototype.splitEdge=function(t){var i=this.addEdgeVertex(t),r=i.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},e.prototype.connect=function(t,i){var r=!1,s=this.makeEdge_(t),n=s.Sym;if(i.Lface!==t.Lface&&(r=!0,this.killFace_(i.Lface,t.Lface)),this.splice_(s,t.Lnext),this.splice_(n,i),s.Org=t.Dst,n.Org=i.Org,s.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var a=new pl;this.makeFace_(a,s,t.Lface)}return s},e.prototype.zapFace=function(t){var i=t.anEdge,r,s,n,a,o;s=i.Lnext;do r=s,s=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=i);a=t.prev,o=t.next,o.prev=a,a.next=o},e.prototype.countFaceVerts_=function(t){var i=t.anEdge,r=0;do r++,i=i.Lnext;while(i!==t.anEdge);return r},e.prototype.mergeConvexFaces=function(t){var i,r,s,n,a,o,l;for(i=this.fHead.next;i!==this.fHead;i=i.next)if(i.inside)for(r=i.anEdge,a=r.Org;s=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(o=this.countFaceVerts_(i),l=this.countFaceVerts_(n.Lface),o+l-2<=t&&Ie.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&Ie.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(s=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===a);)r=s;return!0},e.prototype.check=function(){var t=this.fHead,i=this.vHead,r=this.eHead,s,n,a,o,l,h;for(n=t,n=t;(s=n.next)!==t;n=s){ze(s.prev===n),l=s.anEdge;do ze(l.Sym!==l),ze(l.Sym.Sym===l),ze(l.Lnext.Onext.Sym===l),ze(l.Onext.Sym.Lnext===l),ze(l.Lface===s),l=l.Lnext;while(l!==s.anEdge)}for(ze(s.prev===n&&s.anEdge===null),o=i,o=i;(a=o.next)!==i;o=a){ze(a.prev===o),l=a.anEdge;do ze(l.Sym!==l),ze(l.Sym.Sym===l),ze(l.Lnext.Onext.Sym===l),ze(l.Onext.Sym.Lnext===l),ze(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(ze(a.prev===o&&a.anEdge===null),h=r,h=r;(l=h.next)!==r;h=l)ze(l.Sym.next===h.Sym),ze(l.Sym!==l),ze(l.Sym.Sym===l),ze(l.Org!==null),ze(l.Dst!==null),ze(l.Lnext.Onext.Sym===l),ze(l.Onext.Sym.Lnext===l);ze(l.Sym.next===h.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},e}(),tx=function(){function e(){this.handle=null}return e}(),ix=function(){function e(){this.key=null,this.node=0}return e}(),pU=function(){function e(t,i){this.leq=i,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new tx,this.handles[r]=new ix;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return e.prototype.floatDown_=function(t){var i=this.nodes,r=this.handles,s,n,a;for(s=i[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[i[a+1].handle].key,r[i[a].handle].key)&&++a,ze(a<=this.max),n=i[a].handle,a>this.size||this.leq(r[s].key,r[n].key)){i[t].handle=s,r[s].node=t;break}i[t].handle=n,r[n].node=t,t=a}},e.prototype.floatUp_=function(t){var i=this.nodes,r=this.handles,s,n,a;for(s=i[t].handle;;){if(a=t>>1,n=i[a].handle,a===0||this.leq(r[n].key,r[s].key)){i[t].handle=s,r[s].node=t;break}i[t].handle=n,r[n].node=t,t=a}},e.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},e.prototype.min=function(){return this.handles[this.nodes[1].handle].key},e.prototype.insert=function(t){var i,r;if(i=++this.size,i*2>this.max){this.max*=2;var s,n;for(n=this.nodes.length,this.nodes.length=this.max+1,s=n;s<this.nodes.length;s++)this.nodes[s]=new tx;for(n=this.handles.length,this.handles.length=this.max+1,s=n;s<this.handles.length;s++)this.handles[s]=new ix}return this.freeList===0?r=i:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[i].handle=r,this.handles[r].node=i,this.handles[r].key=t,this.initialized&&this.floatUp_(i),r},e.prototype.extractMin=function(){var t=this.nodes,i=this.handles,r=t[1].handle,s=i[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,i[t[1].handle].node=1,i[r].key=null,i[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),s},e.prototype.delete=function(t){var i=this.nodes,r=this.handles,s;ze(t>=1&&t<=this.max&&r[t].key!==null),s=r[t].node,i[s].handle=i[this.size].handle,r[i[s].handle].node=s,--this.size,s<=this.size&&(s<=1||this.leq(r[i[s>>1].handle].key,r[i[s].handle].key)?this.floatDown_(s):this.floatUp_(s)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},e}(),Fp=function(){function e(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return e}(),rx=function(){function e(){this.key=null,this.next=null,this.prev=null}return e}(),fU=function(){function e(t,i){this.frame=t,this.leq=i,this.head=new rx,this.head.next=this.head,this.head.prev=this.head}return e.prototype.min=function(){return this.head.next},e.prototype.max=function(){return this.head.prev},e.prototype.insert=function(t){return this.insertBefore(this.head,t)},e.prototype.search=function(t){var i=this.head;do i=i.next;while(i.key!==null&&!this.leq(this.frame,t,i.key));return i},e.prototype.insertBefore=function(t,i){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,i));var r=new rx;return r.key=i,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},e.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},e}(),mU=function(){function e(){}return e.regionBelow=function(t){return t.nodeUp.prev.key},e.regionAbove=function(t){return t.nodeUp.next.key},e.debugEvent=function(t){},e.addWinding=function(t,i){t.winding+=i.winding,t.Sym.winding+=i.Sym.winding},e.edgeLeq=function(t,i,r){var s=t.event,n=i.eUp,a=r.eUp;if(n.Dst===s)return a.Dst===s?Ie.vertLeq(n.Org,a.Org)?Ie.edgeSign(a.Dst,n.Org,a.Org)<=0:Ie.edgeSign(n.Dst,a.Org,n.Org)>=0:Ie.edgeSign(a.Dst,s,a.Org)<=0;if(a.Dst===s)return Ie.edgeSign(n.Dst,s,n.Org)>=0;var o=Ie.edgeEval(n.Dst,s,n.Org),l=Ie.edgeEval(a.Dst,s,a.Org);return o>=l},e.deleteRegion=function(t,i){i.fixUpperEdge&&ze(i.eUp.winding===0),i.eUp.activeRegion=null,t.dict.delete(i.nodeUp)},e.fixUpperEdge=function(t,i,r){ze(i.fixUpperEdge),t.mesh.delete(i.eUp),i.fixUpperEdge=!1,i.eUp=r,r.activeRegion=i},e.topLeftRegion=function(t,i){var r=i.eUp.Org,s;do i=e.regionAbove(i);while(i.eUp.Org===r);if(i.fixUpperEdge){if(s=t.mesh.connect(e.regionBelow(i).eUp.Sym,i.eUp.Lnext),s===null)return null;e.fixUpperEdge(t,i,s),i=e.regionAbove(i)}return i},e.topRightRegion=function(t){var i=t.eUp.Dst;do t=e.regionAbove(t);while(t.eUp.Dst===i);return t},e.addRegionBelow=function(t,i,r){var s=new Fp;return s.eUp=r,s.nodeUp=t.dict.insertBefore(i.nodeUp,s),s.fixUpperEdge=!1,s.sentinel=!1,s.dirty=!1,r.activeRegion=s,s},e.isWindingInside=function(t,i){switch(t.windingRule){case Et.ODD:return(i&1)!==0;case Et.NONZERO:return i!==0;case Et.POSITIVE:return i>0;case Et.NEGATIVE:return i<0;case Et.ABS_GEQ_TWO:return i>=2||i<=-2}throw new Error("Invalid winding rulle")},e.computeWinding=function(t,i){i.windingNumber=e.regionAbove(i).windingNumber+i.eUp.winding,i.inside=e.isWindingInside(t,i.windingNumber)},e.finishRegion=function(t,i){var r=i.eUp,s=r.Lface;s.inside=i.inside,s.anEdge=r,e.deleteRegion(t,i)},e.finishLeftRegions=function(t,i,r){for(var s,n=null,a=i,o=i.eUp;a!==r;){if(a.fixUpperEdge=!1,n=e.regionBelow(a),s=n.eUp,s.Org!=o.Org){if(!n.fixUpperEdge){e.finishRegion(t,a);break}s=t.mesh.connect(o.Lprev,s.Sym),e.fixUpperEdge(t,n,s)}o.Onext!==s&&(t.mesh.splice(s.Oprev,s),t.mesh.splice(o,s)),e.finishRegion(t,a),o=n.eUp,a=n}return o},e.addRightEdges=function(t,i,r,s,n,a){var o,l,h,u,c=!0;h=r;do ze(Ie.vertLeq(h.Org,h.Dst)),e.addRegionBelow(t,i,h.Sym),h=h.Onext;while(h!==s);for(n===null&&(n=e.regionBelow(i).eUp.Rprev),l=i,u=n;o=e.regionBelow(l),h=o.eUp.Sym,h.Org===u.Org;)h.Onext!==u&&(t.mesh.splice(h.Oprev,h),t.mesh.splice(u.Oprev,h)),o.windingNumber=l.windingNumber-h.winding,o.inside=e.isWindingInside(t,o.windingNumber),l.dirty=!0,!c&&e.checkForRightSplice(t,l)&&(e.addWinding(h,u),e.deleteRegion(t,l),t.mesh.delete(u)),c=!1,l=o,u=h;l.dirty=!0,ze(l.windingNumber-h.winding===o.windingNumber),a&&e.walkDirtyRegions(t,l)},e.spliceMergeVertices=function(t,i,r){t.mesh.splice(i,r)},e.vertexWeights=function(t,i,r){var s=Ie.vertL1dist(i,t),n=Ie.vertL1dist(r,t),a=.5*n/(s+n),o=.5*s/(s+n);t.coords[0]+=a*i.coords[0]+o*r.coords[0],t.coords[1]+=a*i.coords[1]+o*r.coords[1],t.coords[2]+=a*i.coords[2]+o*r.coords[2]},e.getIntersectData=function(t,i,r,s,n,a){i.coords[0]=i.coords[1]=i.coords[2]=0,i.idx=-1,e.vertexWeights(i,r,s),e.vertexWeights(i,n,a)},e.checkForRightSplice=function(t,i){var r=e.regionBelow(i),s=i.eUp,n=r.eUp;if(Ie.vertLeq(s.Org,n.Org)){if(Ie.edgeSign(n.Dst,s.Org,n.Org)>0)return!1;Ie.vertEq(s.Org,n.Org)?s.Org!==n.Org&&(t.pq.delete(s.Org.pqHandle),e.spliceMergeVertices(t,n.Oprev,s)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(s,n.Oprev),i.dirty=r.dirty=!0)}else{if(Ie.edgeSign(s.Dst,n.Org,s.Org)<0)return!1;e.regionAbove(i).dirty=i.dirty=!0,t.mesh.splitEdge(s.Sym),t.mesh.splice(n.Oprev,s)}return!0},e.checkForLeftSplice=function(t,i){var r=e.regionBelow(i),s=i.eUp,n=r.eUp,a;if(ze(!Ie.vertEq(s.Dst,n.Dst)),Ie.vertLeq(s.Dst,n.Dst)){if(Ie.edgeSign(s.Dst,n.Dst,s.Org)<0)return!1;e.regionAbove(i).dirty=i.dirty=!0,a=t.mesh.splitEdge(s),t.mesh.splice(n.Sym,a),a.Lface.inside=i.inside}else{if(Ie.edgeSign(n.Dst,s.Dst,n.Org)>0)return!1;i.dirty=r.dirty=!0,a=t.mesh.splitEdge(n),t.mesh.splice(s.Lnext,n.Sym),a.Rface.inside=i.inside}return!0},e.checkForIntersect=function(t,i){var r=e.regionBelow(i),s=i.eUp,n=r.eUp,a=s.Org,o=n.Org,l=s.Dst,h=n.Dst,u,c,d=new Ya,p,m;if(ze(!Ie.vertEq(h,l)),ze(Ie.edgeSign(l,t.event,a)<=0),ze(Ie.edgeSign(h,t.event,o)>=0),ze(a!==t.event&&o!==t.event),ze(!i.fixUpperEdge&&!r.fixUpperEdge),a===o||(u=Math.min(a.t,l.t),c=Math.max(o.t,h.t),u>c))return!1;if(Ie.vertLeq(a,o)){if(Ie.edgeSign(h,a,o)>0)return!1}else if(Ie.edgeSign(l,o,a)<0)return!1;return e.debugEvent(t),Ie.intersect(l,a,h,o,d),ze(Math.min(a.t,l.t)<=d.t),ze(d.t<=Math.max(o.t,h.t)),ze(Math.min(h.s,l.s)<=d.s),ze(d.s<=Math.max(o.s,a.s)),Ie.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),p=Ie.vertLeq(a,o)?a:o,Ie.vertLeq(p,d)&&(d.s=p.s,d.t=p.t),Ie.vertEq(d,a)||Ie.vertEq(d,o)?(e.checkForRightSplice(t,i),!1):!Ie.vertEq(l,t.event)&&Ie.edgeSign(l,t.event,d)>=0||!Ie.vertEq(h,t.event)&&Ie.edgeSign(h,t.event,d)<=0?h===t.event?(t.mesh.splitEdge(s.Sym),t.mesh.splice(n.Sym,s),i=e.topLeftRegion(t,i),s=e.regionBelow(i).eUp,e.finishLeftRegions(t,e.regionBelow(i),r),e.addRightEdges(t,i,s.Oprev,s,s,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(s.Lnext,n.Oprev),r=i,i=e.topRightRegion(i),m=e.regionBelow(i).eUp.Rprev,r.eUp=n.Oprev,n=e.finishLeftRegions(t,r,null),e.addRightEdges(t,i,n.Onext,s.Rprev,m,!0),!0):(Ie.edgeSign(l,t.event,d)>=0&&(e.regionAbove(i).dirty=i.dirty=!0,t.mesh.splitEdge(s.Sym),s.Org.s=t.event.s,s.Org.t=t.event.t),Ie.edgeSign(h,t.event,d)<=0&&(i.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(s.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,s),s.Org.s=d.s,s.Org.t=d.t,s.Org.pqHandle=t.pq.insert(s.Org),e.getIntersectData(t,s.Org,a,l,o,h),e.regionAbove(i).dirty=i.dirty=r.dirty=!0,!1)},e.walkDirtyRegions=function(t,i){for(var r=e.regionBelow(i),s,n;;){for(;r.dirty;)i=r,r=e.regionBelow(r);if(!i.dirty&&(r=i,i=e.regionAbove(i),i===null||!i.dirty))return;if(i.dirty=!1,s=i.eUp,n=r.eUp,s.Dst!==n.Dst&&e.checkForLeftSplice(t,i)&&(r.fixUpperEdge?(e.deleteRegion(t,r),t.mesh.delete(n),r=e.regionBelow(i),n=r.eUp):i.fixUpperEdge&&(e.deleteRegion(t,i),t.mesh.delete(s),i=e.regionAbove(r),s=i.eUp)),s.Org!==n.Org)if(s.Dst!==n.Dst&&!i.fixUpperEdge&&!r.fixUpperEdge&&(s.Dst===t.event||n.Dst===t.event)){if(e.checkForIntersect(t,i))return}else e.checkForRightSplice(t,i);s.Org===n.Org&&s.Dst===n.Dst&&(e.addWinding(n,s),e.deleteRegion(t,i),t.mesh.delete(s),i=e.regionAbove(r))}},e.connectRightVertex=function(t,i,r){var s,n=r.Onext,a=e.regionBelow(i),o=i.eUp,l=a.eUp,h=!1;if(o.Dst!==l.Dst&&e.checkForIntersect(t,i),Ie.vertEq(o.Org,t.event)&&(t.mesh.splice(n.Oprev,o),i=e.topLeftRegion(t,i),n=e.regionBelow(i).eUp,e.finishLeftRegions(t,e.regionBelow(i),a),h=!0),Ie.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=e.finishLeftRegions(t,a,null),h=!0),h){e.addRightEdges(t,i,r.Onext,n,n,!0);return}Ie.vertLeq(l.Org,o.Org)?s=l.Oprev:s=o,s=t.mesh.connect(r.Lprev,s),e.addRightEdges(t,i,s,s.Onext,s.Onext,!1),s.Sym.activeRegion.fixUpperEdge=!0,e.walkDirtyRegions(t,i)},e.connectLeftDegenerate=function(t,i,r){var s,n,a,o,l;if(s=i.eUp,Ie.vertEq(s.Org,r)){ze(!1),e.spliceMergeVertices(t,s,r.anEdge);return}if(!Ie.vertEq(s.Dst,r)){t.mesh.splitEdge(s.Sym),i.fixUpperEdge&&(t.mesh.delete(s.Onext),i.fixUpperEdge=!1),t.mesh.splice(r.anEdge,s),e.sweepEvent(t,r);return}ze(!1),i=e.topRightRegion(i),l=e.regionBelow(i),a=l.eUp.Sym,n=o=a.Onext,l.fixUpperEdge&&(ze(n!==a),e.deleteRegion(t,l),t.mesh.delete(a),a=n.Oprev),t.mesh.splice(r.anEdge,a),Ie.edgeGoesLeft(n)||(n=null),e.addRightEdges(t,i,a.Onext,o,n,!0)},e.connectLeftVertex=function(t,i){var r,s,n,a,o,l,h=new Fp;if(h.eUp=i.anEdge.Sym,r=t.dict.search(h).key,s=e.regionBelow(r),!!s){if(a=r.eUp,o=s.eUp,Ie.edgeSign(a.Dst,i,a.Org)===0){e.connectLeftDegenerate(t,r,i);return}if(n=Ie.vertLeq(o.Dst,a.Dst)?r:s,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(i.anEdge.Sym,a.Lnext);else{var u=t.mesh.connect(o.Dnext,i.anEdge);l=u.Sym}n.fixUpperEdge?e.fixUpperEdge(t,n,l):e.computeWinding(t,e.addRegionBelow(t,r,l)),e.sweepEvent(t,i)}else e.addRightEdges(t,r,i.anEdge,i.anEdge,null,!0)}},e.sweepEvent=function(t,i){t.event=i,e.debugEvent(t);for(var r=i.anEdge;r.activeRegion===null;)if(r=r.Onext,r===i.anEdge){e.connectLeftVertex(t,i);return}var s=e.topLeftRegion(t,r.activeRegion);ze(s!==null);var n=e.regionBelow(s),a=n.eUp,o=e.finishLeftRegions(t,n,null);o.Onext===a?e.connectRightVertex(t,s,o):e.addRightEdges(t,s,o.Onext,a,a,!0)},e.addSentinel=function(t,i,r,s){var n=new Fp,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=s,a.Dst.s=i,a.Dst.t=s,t.event=a.Dst,n.eUp=a,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},e.initEdgeDict=function(t){t.dict=new fU(t,e.edgeLeq);var i=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],s=t.bmin[0]-i,n=t.bmax[0]+i,a=t.bmin[1]-r,o=t.bmax[1]+r;e.addSentinel(t,s,n,a),e.addSentinel(t,s,n,o)},e.doneEdgeDict=function(t){for(var i,r=0;(i=t.dict.min().key)!==null;)i.sentinel||(ze(i.fixUpperEdge),ze(++r===1)),ze(i.windingNumber===0),e.deleteRegion(t,i)},e.removeDegenerateEdges=function(t){var i,r,s,n=t.mesh.eHead;for(i=n.next;i!==n;i=r)r=i.next,s=i.Lnext,Ie.vertEq(i.Org,i.Dst)&&i.Lnext.Lnext!==i&&(e.spliceMergeVertices(t,s,i),t.mesh.delete(i),i=s,s=i.Lnext),s.Lnext===i&&(s!==i&&((s===r||s===r.Sym)&&(r=r.next),t.mesh.delete(s)),(i===r||i===r.Sym)&&(r=r.next),t.mesh.delete(i))},e.initPriorityQ=function(t){var i,r,s,n=0;for(s=t.mesh.vHead,r=s.next;r!==s;r=r.next)n++;for(n+=8,i=t.pq=new pU(n,Ie.vertLeq),s=t.mesh.vHead,r=s.next;r!==s;r=r.next)r.pqHandle=i.insert(r);return r!==s?!1:(i.init(),!0)},e.donePriorityQ=function(t){t.pq=null},e.removeDegenerateFaces=function(t,i){var r,s,n;for(r=i.fHead.next;r!==i.fHead;r=s)s=r.next,n=r.anEdge,ze(n.Lnext!==n),n.Lnext.Lnext===n&&(e.addWinding(n.Onext,n),t.mesh.delete(n));return!0},e.computeInterior=function(t,i){i===void 0&&(i=!0);var r,s;if(e.removeDegenerateEdges(t),!e.initPriorityQ(t))return!1;for(e.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;s=t.pq.min(),!(s===null||!Ie.vertEq(s,r));)s=t.pq.extractMin(),e.spliceMergeVertices(t,r.anEdge,s.anEdge);e.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,e.debugEvent(t),e.doneEdgeDict(t),e.donePriorityQ(t),e.removeDegenerateFaces(t,t.mesh)?(i&&t.mesh.check(),!0):!1},e}(),gU=function(){function e(){this.mesh=new ex,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Et.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return e.prototype.dot_=function(t,i){return t[0]*i[0]+t[1]*i[1]+t[2]*i[2]},e.prototype.normalize_=function(t){var i=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!i)throw"Zero-size vector!";i=Math.sqrt(i),t[0]/=i,t[1]/=i,t[2]/=i},e.prototype.longAxis_=function(t){var i=0;return Math.abs(t[1])>Math.abs(t[0])&&(i=1),Math.abs(t[2])>Math.abs(t[i])&&(i=2),i},e.prototype.computeNormal_=function(t){var i,r,s,n,a,o,l=[0,0,0],h=[0,0,0],u=[0,0,0],c=[0,0,0],d=[0,0,0],p=[null,null,null],m=[null,null,null],g=this.mesh.vHead;i=g.next;for(var f=0;f<3;++f)n=i.coords[f],h[f]=n,m[f]=i,l[f]=n,p[f]=i;for(i=g.next;i!==g;i=i.next)for(var v=0;v<3;++v)n=i.coords[v],n<h[v]&&(h[v]=n,m[v]=i),n>l[v]&&(l[v]=n,p[v]=i);var y=0;if(l[1]-h[1]>l[0]-h[0]&&(y=1),l[2]-h[2]>l[y]-h[y]&&(y=2),h[y]>=l[y]){t[0]=0,t[1]=0,t[2]=1;return}for(o=0,r=m[y],s=p[y],u[0]=r.coords[0]-s.coords[0],u[1]=r.coords[1]-s.coords[1],u[2]=r.coords[2]-s.coords[2],i=g.next;i!==g;i=i.next)c[0]=i.coords[0]-s.coords[0],c[1]=i.coords[1]-s.coords[1],c[2]=i.coords[2]-s.coords[2],d[0]=u[1]*c[2]-u[2]*c[1],d[1]=u[2]*c[0]-u[0]*c[2],d[2]=u[0]*c[1]-u[1]*c[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>o&&(o=a,t[0]=d[0],t[1]=d[1],t[2]=d[2]);o<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(u)]=1)},e.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,i,r=this.mesh.vHead,s,n=0,a=t.next;a!==t;a=a.next)if(s=a.anEdge,!(s.winding<=0))do n+=(s.Org.s-s.Dst.s)*(s.Org.t+s.Dst.t),s=s.Lnext;while(s!==a.anEdge);if(n<0){for(i=r.next;i!==r;i=i.next)i.t=-i.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},e.prototype.projectPolygon_=function(){var t=this.mesh.vHead,i=[0,0,0],r,s,n=!1;i[0]=this.normal[0],i[1]=this.normal[1],i[2]=this.normal[2],!i[0]&&!i[1]&&!i[2]&&(this.computeNormal_(i),n=!0),r=this.sUnit,s=this.tUnit;var a=this.longAxis_(i);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,s[a]=0,s[(a+1)%3]=0,s[(a+2)%3]=i[a]>0?1:-1;for(var o=t.next;o!==t;o=o.next)o.s=this.dot_(o.coords,r),o.t=this.dot_(o.coords,s);n&&this.checkOrientation_();for(var l=!0,h=t.next;h!==t;h=h.next)l?(this.bmin[0]=this.bmax[0]=h.s,this.bmin[1]=this.bmax[1]=h.t,l=!1):(h.s<this.bmin[0]&&(this.bmin[0]=h.s),h.s>this.bmax[0]&&(this.bmax[0]=h.s),h.t<this.bmin[1]&&(this.bmin[1]=h.t),h.t>this.bmax[1]&&(this.bmax[1]=h.t))},e.prototype.addWinding_=function(t,i){t.winding+=i.winding,t.Sym.winding+=i.Sym.winding},e.prototype.tessellateMonoRegion_=function(t,i){var r,s;if(r=i.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;Ie.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;Ie.vertLeq(r.Org,r.Dst);r=r.Lnext);s=r.Lprev;for(var n=void 0;r.Lnext!==s;)if(Ie.vertLeq(r.Dst,s.Org)){for(;s.Lnext!==r&&(Ie.edgeGoesLeft(s.Lnext)||Ie.edgeSign(s.Org,s.Dst,s.Lnext.Dst)<=0);)n=t.connect(s.Lnext,s),s=n.Sym;s=s.Lprev}else{for(;s.Lnext!==r&&(Ie.edgeGoesRight(r.Lprev)||Ie.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(s.Lnext===r)throw"Mono region invalid";for(;s.Lnext.Lnext!==r;)n=t.connect(s.Lnext,s),s=n.Sym;return!0},e.prototype.tessellateInterior_=function(t){for(var i,r=t.fHead.next;r!==t.fHead;r=i)if(i=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},e.prototype.discardExterior_=function(t){for(var i,r=t.fHead.next;r!==t.fHead;r=i)i=r.next,r.inside||t.zapFace(r)},e.prototype.setWindingNumber_=function(t,i,r){for(var s,n=t.eHead.next;n!==t.eHead;n=s)s=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?i:-i:r?t.delete(n):n.winding=0},e.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},e.prototype.outputPolymesh_=function(t,i,r,s){var n,a=0,o=0,l;r>3&&t.mergeConvexFaces(r);for(var h=t.vHead.next;h!==t.vHead;h=h.next)h.n=-1;for(var u=t.fHead.next;u!==t.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var h=n.Org;h.n===-1&&(h.n=o,o++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>r)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,i===ri.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=o,this.vertices=[],this.vertices.length=o*s,this.vertexIndices=[],this.vertexIndices.length=o;for(var h=t.vHead.next;h!==t.vHead;h=h.next)if(h.n!==-1){var c=h.n*s;this.vertices[c+0]=h.coords[0],this.vertices[c+1]=h.coords[1],s>2&&(this.vertices[c+2]=h.coords[2]),this.vertexIndices[h.n]=h.idx}for(var d=0,u=t.fHead.next;u!==t.fHead;u=u.next)if(u.inside){n=u.anEdge,l=0;do{var h=n.Org;this.elements[d++]=h.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var p=l;p<r;++p)this.elements[d++]=-1;if(i===ri.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var m=l;m<r;++m)this.elements[d++]=-1}}},e.prototype.outputContours_=function(t,i){var r,s,n=0,a=0;this.vertexCount=0,this.elementCount=0;for(var o=t.fHead.next;o!==t.fHead;o=o.next)if(o.inside){s=r=o.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==s);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*i,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,h=0,u=0;n=0;for(var o=t.fHead.next;o!==t.fHead;o=o.next)if(o.inside){a=0,s=r=o.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],i>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[h++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==s);this.elements[u++]=n,this.elements[u++]=a,n+=a}},e.prototype.addContour=function(t,i){this.mesh===null&&(this.mesh=new ex),t<2&&(t=2),t>3&&(t=3);for(var r=null,s=0;s<i.length;s+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=i[s+0],r.Org.coords[1]=i[s+1],t>2?r.Org.coords[2]=i[s+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},e.prototype.tesselate=function(t,i,r,s,n,a){if(t===void 0&&(t=Et.ODD),i===void 0&&(i=ri.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,s<2&&(s=2),s>3&&(s=3),!this.mesh)return!1;this.projectPolygon_(),mU.computeInterior(this,a);var o=this.mesh;return i===ri.BOUNDARY_CONTOURS?this.setWindingNumber_(o,1,!0):this.tessellateInterior_(o),a&&o.check(),i===ri.BOUNDARY_CONTOURS?this.outputContours_(o,s):this.outputPolymesh_(o,i,r,s),!0},e}();function Ll(e){var t=e.windingRule,i=t===void 0?Et.ODD:t,r=e.elementType,s=r===void 0?ri.POLYGONS:r,n=e.polySize,a=n===void 0?3:n,o=e.vertexSize,l=o===void 0?2:o,h=e.normal,u=h===void 0?[0,0,1]:h,c=e.contours,d=c===void 0?[]:c,p=e.strict,m=p===void 0?!0:p,g=e.debug,f=g===void 0?!1:g;if(!d&&m)throw new Error("Contours can't be empty");if(d){var v=new gU;e.edgeCreateCallback&&(v.edgeCreateCallback=e.edgeCreateCallback),e.vertexIdCallback&&(v.vertexIdCallback=e.vertexIdCallback);for(var y=0;y<d.length;y++)v.addContour(l||2,d[y]);return v.tesselate(i,s,a,l,u,m),{vertices:v.vertices,vertexIndices:v.vertexIndices,vertexCount:v.vertexCount,elements:v.elements,elementCount:v.elementCount,mesh:f?v.mesh:void 0}}}var GV=Et.ODD,VV=Et.NONZERO,WV=Et.POSITIVE,XV=Et.NEGATIVE,YV=Et.ABS_GEQ_TWO,qV=ri.POLYGONS,QV=ri.CONNECTED_POLYGONS,ZV=ri.BOUNDARY_CONTOURS,j_=class extends ke{constructor(e,t=12,i={}){super(),this.type="ShapeGeometry",this.windingRule=Et.ODD,this.elementType=ri.POLYGONS,this.polySize=3,this.vertexSize=2,this.strict=!0,this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Et.ODD,elementType:ri.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let r=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(d=>d.extractShapePointsToFlatArray([],this._curveSegments)),n,a=!0,o=!0,l,h;for(let d=0,p=r.length/2;d<p;d++){let m=d*2,g=r[m+0],f=r[m+1];if(l!==void 0&&g!==l&&(a=!1),h!==void 0&&f!==h&&(o=!1),l=g,h=f,!a&&!o)break}!a&&!o&&(n=Ll({contours:[r,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=n?.vertexCount??1,c=n?.elementCount??1;if(this._positionAttribute=new Qe(new Float32Array(u*3),3),this._normalAttribute=new Qe(new Float32Array(u*3),3),this._uvAttribute=new Qe(new Float32Array(u*2),2),this._indexAttribute=new Qe(new Uint32Array(c*3),1),n){let d=1/0,p=-1/0,m=1/0,g=-1/0;for(let y=0,b=u;y<b;y++){let x=y*2,w=n.vertices[x+0],_=n.vertices[x+1];w<d&&(d=w),w>p&&(p=w),_<m&&(m=_),_>g&&(g=_)}let f=p-d,v=g-m;for(let y=0,b=u;y<b;y++){let x=y*2,w=n.vertices[x+0],_=n.vertices[x+1],A=(w-d)/f,S=(_-m)/v;this._positionAttribute.setXYZ(y,w,_,0),this._normalAttribute.setXYZ(y,0,0,1),this._uvAttribute.setXY(y,A,S)}for(let y=0,b=c;y<b;y++){let x=y*3,w=n.elements[x+0],_=n.elements[x+1],A=n.elements[x+2];this._indexAttribute.setX(x+0,w),this._indexAttribute.setX(x+1,_),this._indexAttribute.setX(x+2,A)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(n?.elementCount??1)*3)}clone(){let e=new j_(this._shape,this._curveSegments);return e.userData=Ag(this.userData),e}},vm=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let i=e*vm.eSize;this.buffer=new ArrayBuffer(i);let r=Float32Array.BYTES_PER_ELEMENT,s=0;this.positions=new Float32Array(this.buffer,s*r,3*e),s+=3*e,this.normals=new Float32Array(this.buffer,s*r,3*e),s+=3*e,this.uvs=new Float32Array(this.buffer,s*r,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let i=e*vm.eSize,r=new ArrayBuffer(i),s=Float32Array.BYTES_PER_ELEMENT,n=0,a=new Float32Array(r,n*s,3*e);n+=3*e;let o=new Float32Array(r,n*s,3*e);n+=3*e;let l=new Float32Array(r,n*s,2*e);a.set(this.positions.slice(0,this.size*3)),o.set(this.normals.slice(0,this.size*3)),l.set(this.uvs.slice(0,this.size*2)),this.buffer=r,this.positions=a,this.normals=o,this.uvs=l,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let r=this.capacity;for(;t>r;)r*=2;this.realloc(r)}let i=this.size;return this.size=t,i}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},H_=vm;H_.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Up=(e,t)=>([i,r])=>(r<i&&(r+=t),(e>=i?e:e+t)<=r),G_=class extends ke{constructor(e,t,i=0,r=12,s=3,n=Et.ODD){super(),this.type="ShapeGeometry",this.vertexCache={},this._shape=e,this._depth=t,this._bevel=i,this._curveSegments=r,this._bevelSegmentsInput=s,i<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(i,t/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],r),o=this._shape.shapeHoles.map(_=>{let A=_.extractShapePointsToFlatArray([],r),S=[];for(let E=A.length-1;E>=1;E-=2){let C=A[E-1],T=A[E-0];S.push(C,T)}return S}),l=Ll({windingRule:n,elementType:ri.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=Ll({windingRule:Et.ODD,elementType:ri.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...o]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(h){l.elementCount+=h.elementCount;for(let _=0;_<h.elements.length;_++){let A=h.elements[_],S=_%2===0?l.vertexCount:0;l.elements.push(A+S)}for(let _=0;_<h.vertexIndices.length;_++){let A=h.vertexIndices[_],S=l.vertexCount;l.vertexIndices.push(A+S)}for(let _=0;_<h.vertices.length;_++){let A=h.vertices[_];l.vertices.push(A)}}let c=1/0,d=-1/0,p=1/0,m=-1/0;for(let _=0,A=l.vertexCount;_<A;_++){let S=_*2,E=l.vertices[S+0],C=l.vertices[S+1];E<c&&(c=E),E>d&&(d=E),C<p&&(p=C),C>m&&(m=C)}this._minX=c,this._minY=p,this._width=d-c,this._height=m-p;let g=l.vertexCount*2*(2+this._bevelSegments);this._buffer=new H_(g);let f=[],v=[];for(let _=l.elementCount-1;_>=0;_--){let A=_>=u,S=_*2,E=l.elements[S+0],C=l.elements[S+1],T=E+C,P={start:E,count:C,normals:[],continuous:[],concave:[]},R=E,O=T-1,U=E+1,j=this._shape.roundedCurves.length;do{let F=R-E,V=l.vertices[O*2+0],N=l.vertices[O*2+1],X=l.vertices[R*2+0],Z=l.vertices[R*2+1],ee=l.vertices[U*2+0],W=l.vertices[U*2+1],ne=X-V,q=Z-N,Q=Math.sqrt(ne*ne+q*q);ne/=Q,q/=Q;let K=X-ee,de=Z-W,oe=Math.sqrt(K*K+de*de);K/=oe,de/=oe,P.normals[F*2+0]=-de,P.normals[F*2+1]=K,P.concave[F]=ne*de-q*K>0;let le=l.vertexIndices[R];if(Array.isArray(le))P.continuous[F]=!1;else{let[ue,pe]=this._shape.getCurveIndexFromVertexId(le-1,!0);if(pe>0&&pe<1)P.continuous[F]=!0;else{let ge=pe===1?ue+1:ue-1;ge=(ge+j)%j;let De=pe===1?0:1,Ae=this._shape.roundedCurves[ue].getTangent(pe),we=this._shape.roundedCurves[ge].getTangent(De);P.continuous[F]=Ae.dot(we)>.95}}A&&(P.normals[F*2+0]*=-1,P.normals[F*2+1]*=-1),[O,R,U]=[R,U,U+1],U>=T&&(U-=C)}while(U!==E+1);let z=[];z.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(E*2,T*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((F,V)=>[V,V]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(E*2,T*2)});for(let F=1;F<=this._bevelSegments;F++){let V=F/this._bevelSegments*Math.PI/2,N=(1-Math.cos(V))*this._bevelSize,X=[],Z=[],ee=[],W=[],ne=0;for(let Q=0;Q<C;Q++){let K=Q*2,de=(Q-1+C)%C*2,oe=l.vertices[P.start*2+K+0],le=l.vertices[P.start*2+K+1],ue=-P.normals[de+0]*N,pe=-P.normals[de+1]*N,ge=-P.normals[K+0]*N,De=-P.normals[K+1]*N;if(P.concave[Q]||!P.concave[Q]&&A){let Ae=Math.atan2(pe,ue),we=Math.atan2(De,ge);we>Ae&&(we-=Math.PI*2);let bt=we-Ae;if(P.continuous[Q]||A){let Ke=Ae+bt/2,B=Math.cos(Ke)*N,D=Math.sin(Ke)*N;X[2*ne+0]=oe+B*(A?-1:1),X[2*ne+1]=le+D*(A?-1:1),W[ne]=Q,ne++}else{let Ke=Math.max(1,Math.floor(r/4*Math.abs(bt)/Math.PI));for(let B=0;B<=Ke;B++){let D=Ae+bt*(B/Ke),ie=Math.cos(D)*N,ce=Math.sin(D)*N;X[2*ne+0]=oe+ie,X[2*ne+1]=le+ce,W[ne]=Q,ne++}}}else X[2*ne+0]=oe+ue,X[2*ne+1]=le+pe,W[ne]=Q,Z[Q]=ne,ne++,X[2*ne+0]=oe,X[2*ne+1]=le,W[ne]=Q,ne++,X[2*ne+0]=oe+ge,X[2*ne+1]=le+De,W[ne]=Q,ee[Q]=ne,ne++}let q=Ll({windingRule:Et.POSITIVE,elementType:ri.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[X],edgeCreateCallback:Q=>{let K=Q.Org.idx,de=W[K],oe=W[(K+1)%W.length];Q.idx=[de,oe],Q.Sym.idx=[oe,de]},vertexIdCallback:Q=>{let K=Q.Lprev.idx;return[K?K[1]:0,Q.idx[0]]}});if(!q)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!q.vertexCount)break;for(let Q=0;Q<q.vertexIndices.length;Q++){let[K,de]=q.vertexIndices[Q];if(K===de)continue;let oe=de;de<K&&(oe+=C);for(let le=K;le<oe;le++){let ue=le%C,pe=(le+1)%C;if(!P.continuous[ue]||!P.continuous[pe]){q.vertexIndices[Q]=[K,ue],q.vertexIndices.splice(Q+1,0,[pe,de]),q.vertices.splice((Q+1)*2,0,q.vertices[Q*2],q.vertices[Q*2+1]);break}}}z.push({bevelI:F,angle:V,size:N,boundary:q,reverseMap:W,insetPoints:X})}let L=(F,V,N)=>{let X=0,Z=F.boundary.vertexIndices.length;for(;X<Z&&N(F.boundary.vertexIndices[V]);)V=(V+1)%Z,X++;return X},G=f.length;for(let F=1;F<z.length;F++){let V=z[F-1],N=z[F],X=V.boundary.vertexIndices.length,Z=N.boundary.vertexIndices.length;if(!X||!Z)break;let ee=P.concave.length,W=0,ne=Up(W,C);for(;!V.boundary.vertexIndices.filter(ne).length||!N.boundary.vertexIndices.filter(ne).length;)W++,ne=Up(W,C);let q=V.boundary.vertexIndices.findIndex(ne),Q=N.boundary.vertexIndices.findIndex(ne);do q=(q+1)%X;while(ne(V.boundary.vertexIndices[q]));do Q=(Q+1)%Z;while(ne(N.boundary.vertexIndices[Q]));W=(W+1)%C;let K=W,de=this.buildBevelVert(P,V,(q-1+X)%X),oe=this.buildBevelVert(P,N,(Q-1+Z)%Z),le=de,ue=oe,pe,ge,De=!1;do{ne=Up(W,C);let Ae=L(V,q,ne),we=L(N,Q,ne),bt=De;if(De=!1,Ae&&!we){for(let Ke=0;Ke<Ae;Ke++)pe=this.buildBevelVert(P,V,(q+Ke)%X,Ke/(Ae-1)),f.push(le.topN,pe.topP,ue.topN),f.push(pe.bottomP,le.bottomN,ue.bottomN),le=pe;De=!0}else if(!Ae&&we)for(let Ke=0;Ke<we;Ke++)ge=this.buildBevelVert(P,N,(Q+Ke)%Z,Ke/(we-1)),f.push(ue.topN,le.topP,ge.topP),f.push(le.bottomP,ue.bottomN,ge.bottomP),ue=ge;else if(Ae&&we)if(pe=this.buildBevelVert(P,V,q,0),ge=this.buildBevelVert(P,N,Q,0),bt?(f.push(le.topN,ge.topP,ue.topN),f.push(le.topN,pe.topP,ge.topP),f.push(ge.bottomP,le.bottomN,ue.bottomN),f.push(ge.bottomP,pe.bottomP,le.bottomN)):(f.push(ue.topN,le.topN,pe.topP),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,le.bottomN,ue.bottomN),f.push(pe.bottomP,ue.bottomN,ge.bottomP)),le=pe,ue=ge,Ae===we)for(let Ke=1;Ke<Ae;Ke++)pe=this.buildBevelVert(P,V,(q+Ke)%X,Ke/(Ae-1)),ge=this.buildBevelVert(P,N,(Q+Ke)%Z,Ke/(we-1)),f.push(le.topN,pe.topP,ue.topN),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,le.bottomN,ue.bottomN),f.push(pe.bottomP,ue.bottomN,ge.bottomP),le=pe,ue=ge;else if(Ae>we){let Ke=Ae/we,B=0;for(let D=1;D<Ae;D++)pe=this.buildBevelVert(P,V,(q+D)%X,D/(Ae-1)),f.push(le.topN,pe.topP,ue.topN),f.push(pe.bottomP,le.bottomN,ue.bottomN),le=pe,D>(B+1)*Ke&&(B++,ge=this.buildBevelVert(P,N,(Q+B)%Z,B/(we-1)),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,ue.bottomN,ge.bottomP),ue=ge)}else{let Ke=we/Ae,B=0;for(let D=1;D<we;D++)ge=this.buildBevelVert(P,N,(Q+D)%Z,D/(we-1)),f.push(ue.topN,pe.topP,ge.topP),f.push(pe.bottomP,ue.bottomN,ge.bottomP),ue=ge,D>(B+1)*Ke&&(B++,pe=this.buildBevelVert(P,V,(q+B)%X,B/(Ae-1)),f.push(le.topN,pe.topP,ue.topN),f.push(pe.bottomP,le.bottomN,ue.bottomN),le=pe)}q=(q+Ae)%X,Q=(Q+we)%Z,W=(W+1)%ee}while(W!==K)}{let F=z[0];for(let V=0,N=F.boundary.vertexCount;V<N;V++){let X=this.buildBevelVert(P,F,V),Z=this.buildBevelVert(P,F,(V+1)%N);f.push(Z.topP,X.topN,X.bottomN),f.push(Z.topP,X.bottomN,Z.bottomP)}}if(A){let F=[];for(let V=f.length-1;V>=G+2;V-=3){let N=f[V-2],X=f[V-1],Z=f[V-0];F.push(Z,X,N)}f.splice(G,f.length-G,...F)}if(A){let F=[];for(let V=z[z.length-1].boundary.vertices.length-1;V>=1;V-=2){let N=z[z.length-1].boundary.vertices[V-1],X=z[z.length-1].boundary.vertices[V-0];F.push(N,X)}v.push(F)}if(!A){let F=z[z.length-1],V=Ll({windingRule:z.length>1?Et.POSITIVE:Et.ODD,elementType:ri.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...v]});if(!V)throw new Error("Error generating geometry for surface");o.length===0&&Object.assign(this,{capStartIndex:f.length});for(let N=0;N<V.elementCount*3;N+=3){let X=this.buildSurfaceVert(V,V.elements[N+0]),Z=this.buildSurfaceVert(V,V.elements[N+1]),ee=this.buildSurfaceVert(V,V.elements[N+2]);f.push(X.top,Z.top,ee.top),f.push(ee.bottom,Z.bottom,X.bottom)}}this.vertexCache={}}this._buffer.shrink();let y=new Qe(Uint32Array.from(f),1),b=new Qe(this._buffer.positions,3),x=new Qe(this._buffer.normals,3),w=new Qe(this._buffer.uvs,2);b.needsUpdate=!0,x.needsUpdate=!0,w.needsUpdate=!0,y.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",x),this.setAttribute("uv",w),this.setIndex(y)}buildSurfaceVert(e,t){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let r=e.vertices[t*2+0],s=e.vertices[t*2+1],n=(r-this._minX)/this._width,a=(s-this._minY)/this._height,o=this._buffer.get(2),l=o*3,h=o*2,u={top:o+0,bottom:o+1};return this._buffer.positions[l+0]=r,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[h+0]=n,this._buffer.uvs[h+1]=a,this._buffer.positions[l+3]=r,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[h+2]=n,this._buffer.uvs[h+3]=a,this.vertexCache[i]=u,u}buildBevelVert(e,t,i,r=1){let s=`${t.bevelI}:${i}`;if(s in this.vertexCache)return this.vertexCache[s];let[n,a]=t.boundary.vertexIndices[i],o,l,h,u;n!==a?(l=n,o=a,u=!1,h=e.continuous[l]&&e.continuous[o]):(o=n,l=(o-1+e.count)%e.count,u=e.concave[o]&&t.bevelI>0,h=e.continuous[o]||u);let c=Math.cos(t.angle),d=Math.sin(t.angle),p=i*2,m=o*2,g=l*2,f=t.boundary.vertices[p+0],v=t.boundary.vertices[p+1],y=(1-d)*this._bevelSize,b=(f-this._minX)/this._width,x=(v-this._minY)/this._height,w=e.normals[m+0],_=e.normals[m+1],A=e.normals[g+0],S=e.normals[g+1];if(u){let R=A-w,O=S-_;w=w+R*(1-r),_=_+O*(1-r);let U=Math.sqrt(w*w+_*_);w/=U,_/=U}let E=this._buffer.get(h?2:4),C=E*3,T=E*2,P={i,fi:o,topP:E+0,topN:E+0,bottomP:E+1,bottomN:E+1};return this._buffer.positions[C+0]=f,this._buffer.positions[C+1]=v,this._buffer.positions[C+2]=this._depth-y,this._buffer.normals[C+0]=w*c,this._buffer.normals[C+1]=_*c,this._buffer.normals[C+2]=d,this._buffer.uvs[T+0]=b,this._buffer.uvs[T+1]=x,this._buffer.positions[C+3]=f,this._buffer.positions[C+4]=v,this._buffer.positions[C+5]=y,this._buffer.normals[C+3]=w*c,this._buffer.normals[C+4]=_*c,this._buffer.normals[C+5]=-d,this._buffer.uvs[T+2]=x,this._buffer.uvs[T+3]=b,h||(E+=2,C+=6,T+=4,P.topP=E+0,P.bottomP=E+1,this._buffer.positions[C+0]=f,this._buffer.positions[C+1]=v,this._buffer.positions[C+2]=this._depth-y,this._buffer.normals[C+0]=A*c,this._buffer.normals[C+1]=S*c,this._buffer.normals[C+2]=d,this._buffer.uvs[T+0]=b,this._buffer.uvs[T+1]=x,this._buffer.positions[C+3]=f,this._buffer.positions[C+4]=v,this._buffer.positions[C+5]=y,this._buffer.normals[C+3]=A*c,this._buffer.normals[C+4]=S*c,this._buffer.normals[C+5]=-d,this._buffer.uvs[T+2]=x,this._buffer.uvs[T+3]=b),this.vertexCache[s]=P,P}clone(){let e=new G_(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ag(this.userData),e}},ua=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Et.ODD},e.parameters),r=Math.abs(i.width),s=Math.abs(i.height??i.width),n=Math.abs(i.depth??0),a=e.shape??t?.shape,o=a?.roundness??i.roundness;a!==void 0&&(a instanceof Bt?(a.width!==r||a.height!==s)&&a.applySize(r,s):a=new Bt(r,s).fromJSON(a),e.parameters?.roundness!==void 0&&e.parameters?.roundness>0&&a.update());let l=a??new Bt(r,s);return{parameters:Object.assign(i,{width:r,height:s,depth:n,roundness:o}),shape:l}}static build(e){let{depth:t,extrudeBevelSize:i,extrudeBevelSegments:r,subdivisions:s,roundness:n,windingRule:a}=e.parameters;e.shape.roundness=n;let o;return t<=0?o=new j_(e.shape,s,{windingRule:a}):o=new G_(e.shape,t,i,s,r,a),Object.assign(o,{userData:{...e,type:"VectorGeometry"}})}},V_=Math.PI*2,vU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,spikes:r,angle:s,innerRadius:n,depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}=e.parameters,h=e.shape,u=t*.5,c=i*.5,d=yU(h,u,c,s*Math.PI/180,r,n);h.isClosed=!0,h.update();let p=ua.create({shape:h,parameters:{subdivisions:d,depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}});return Object.assign(p,{userData:{...e,type:"EllipseGeometry"}})}};function yU(e,t,i,r,s,n){if(r>=V_)return s>30||s%4===0?(bU(e,t,i,n),Math.round(s/4)):sx(e,r,s,t,i,n);r=Math.max(r,.001);let a={x:0,y:i},o=r+Math.PI*.5,l={x:Math.cos(o)*t,y:Math.sin(o)*i},h=uU({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:i,largeArcFlag:r>Math.PI,sweepFlag:!0});return s>30||s%h.length===0?xU(e,a.x,a.y,h,s,t,i,n):sx(e,r,s,t,i,n)}function xU(e,t,i,r,s,n,a,o){let l=Math.round(s/r.length);e.addPoint(go(t,i));for(let h=0,u=r.length;h<u;h++){let c=r[h],d=e.points[h],p=go(c.x,c.y);d.controls[1].position.set(c.x1,c.y1),p.controls[0].position.set(c.x2,c.y2),e.addPoint(p)}return o>0?W_(e,n,a,o):e.addPoint(go(0,0)),l}function sx(e,t,i,r,s,n){let a=-t/i;for(let o=0;o<=i;o++){let l=a*o,h=Math.sin(l)*r,u=Math.cos(l)*s;e.addPoint(go(h,u))}return t<V_?n>0?W_(e,r,s,n):e.addPoint(go(0,0)):(e.removePoint(e.points[e.points.length-1]),n>0&&X_(e,r,s,n)),1}function bU(e,t,i,r=0,s=0,n=0){let a=.5522847498,o=t*a,l=i*a;e.addPoint(Ac(s-t,n,s-t,n-l,s-t,n+l)),e.addPoint(Ac(s,n+i,s-o,n+i,s+o,n+i)),e.addPoint(Ac(s+t,n,s+t,n+l,s+t,n-l)),e.addPoint(Ac(s,n-i,s+o,n-i,s-o,n-i)),r>0&&X_(e,t,i,r)}function go(e,t){return new mo(rt.generateUUID(),new H(e,t))}function Ac(e,t,i,r,s,n){let a=go(e,t);return a.controls[0].position.set(i,r),a.controls[1].position.set(s,n),a}function W_(e,t,i,r){Y_(e,t,i,r).forEach(s=>e.addPoint(s))}function X_(e,t,i,r){let s=Y_(e,t,i,r),n=new Bt;s.forEach(a=>n.addPoint(a)),n.isClosed=!0,e.shapeHoles.push(n)}function Y_(e,t,i,r){let s=r*t/100,n=s*(Math.abs(i)/Math.abs(t)),a=new H(s/t,n/i),o=e.points.map(l=>{let h=l.clone();return h.uuid=rt.generateUUID(),h}).reverse();return o.forEach(l=>{l.position.multiply(a);let h=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(h)}),o}var wU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},e.parameters),r=Math.abs(i.width),s=Math.abs(i.height??r),n=Math.abs(i.depth??r),a=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(i,{width:r,height:s,depth:n,radius:a,segments:Math.round(i.segments),pathSegments:Math.round(i.pathSegments),cornerSegments:Math.round(i.cornerSegments)})}}static build(e){let{width:t,height:i,depth:r,radius:s,revolutions:n,segments:a,pathRadius:o,pathType:l,pathSegments:h,cornerRadius:u,cornerSegments:c}=e.parameters,d=new jg(!1,t,i,r,s,n,a,o,l,h,u,c);return Object.assign(d,{userData:{...e,type:"HelixGeometry"}})}},jg=class extends ke{constructor(e=!0,t=1,i=1,r=1,s=1,n=1,a=1,o=1,l=1,h=1,u=1,c=1,d=!1){super();let p=e&&n===1;p&&(c=0),u>100&&(u=100);let m=()=>new M,g=new M,f=m(),v=m(),y=m(),b,x,w,_,A,S,E,C,T=m(),P=m(),R=m(),O=m(),U=m(),j=m(),z=m(),L=m(),G=i-2*o+.001,F=G/n,V=Math.ceil(a*n),N=V+1,X=G/V,Z=-G/2,ee=h+1,W=2*Math.PI/h,ne=Math.PI/2/c,q=.01,Q=Math.min((1-u/100)*o,o-q),K=o-Q,de=0,oe=2,le=c*oe+oe,ue=ee*le/oe,pe=ue+ee*N,ge=ee*(N+le),[De,Ae,we]=[3,3,2].map(ve=>Array(ge*ve).fill(0)),bt=[],Ke=s-o;function B(ve,k){let me=Math.PI/2;S=k*X,C=2*Math.PI*(S%F)/F+me,S+=Z,E=Math.sin(C)*Ke,A=Math.cos(C)*Ke,e?ve.set(A,E,S):ve.set(A,S,E)}B(g,-1e-10),B(f,0),T.copy(g),B(g,1);let D=g.distanceTo(f),ie=p?0:K+Q,ce=D*V+2*ie,fe=Q,_e=ce-ie;for(let ve=0;ve<=V;ve++){B(v,ve),L.subVectors(v,T).normalize(),T.copy(v),j.copy(v).setComponent(+e+1,0).normalize(),z.crossVectors(L,j).normalize();let k=ve===0,me=ve===V,be=k?3*Math.PI/2:ne,He=k?fe:_e,Te=k?ee:pe,Ge=k?0:ge-ee,ye=L.clone().multiplyScalar(k?-K:K).add(v),Ve=L.clone().multiplyScalar(k?-1:1).normalize();for(let Xe=0;Xe<ee;Xe++){let St=Xe*W;if(P.addVectors(g.copy(j).multiplyScalar(o*Math.cos(St)),f.copy(z).multiplyScalar(o*Math.sin(St))),R.copy(P).normalize(),k||me){p||(de=Ge+Xe,[0,1,2].forEach(dt=>{De[de*3+dt]=ye.getComponent(dt),Ae[de*3+dt]=Ve.getComponent(dt)}),we[de*2]=+me,we[de*2+1]=Xe/h),f.copy(R).multiplyScalar(Q),y.addVectors(v,f);for(let dt=0;dt<c;dt++){let Pi=dt*ne+be;O.addVectors(g.copy(L).multiplyScalar(K*Math.sin(Pi)),f.copy(R).multiplyScalar(K*Math.cos(Pi))),U.copy(O).normalize(),f.addVectors(y,O),O.normalize(),de=Te+dt*ee+Xe,[0,1,2].forEach(ya=>{De[de*3+ya]=f.getComponent(ya),Ae[de*3+ya]=U.getComponent(ya)});let Lh=+k+Math.sin(Pi);we[de*2]=(He+K*Lh)/ce,we[de*2+1]=Xe/h}}f.addVectors(v,P),de=ue+ve*ee+Xe,[0,1,2].forEach(dt=>{De[de*3+dt]=f.getComponent(dt),Ae[de*3+dt]=R.getComponent(dt)}),we[de*2]=(ie+ve*D)/ce,we[de*2+1]=Xe/h}}let je=N+2*c+oe,re=1,[Be,Pe]=[+p,je-1];d&&(Pe-=1);for(let ve=Be;ve<=Pe-1;ve++){let k=p&&ve===Pe-1;for(let me=0;me<ee-1;me++)b=ve*ee+me,x=b+1,w=(k?me:b)+ee,_=(k?me+1:x)+ee,ve===0?bt.push(x,_,w):ve===je-2?bt.push(b,x,w):bt.push(b,x,w,x,_,w)}this.setIndex(bt),this.setAttribute("position",new Ee(De,3)),this.setAttribute("normal",new Ee(Ae,3)),this.setAttribute("uv",new Ee(we,2))}},_U=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,detail:s,corner:n,cornerSides:a}=e.parameters,o=s===0&&n!==0?new q_(t*.5,n,a):new cw(t*.5,s);return o.scale(1,i/t,r/t),Object.assign(o,{userData:{...e,type:"IcosahedronGeometry"}})}},q_=class extends Fg{constructor(e=1,t=.2,i=4){let r=(1+Math.sqrt(5))/2,s=[-1,r,0,1,r,0,-1,-r,0,1,-r,0,0,-1,r,0,1,r,0,-1,-r,0,1,-r,r,0,-1,r,0,1,-r,0,-1,-r,0,1],n=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(s,n,a,e,t,i),this.type=a}static fromJSON(e){return new q_(e.radius,e.corner,e.cornerSides)}},SU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){(e.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let i=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{points:t,segments:i,verticalSegments:r}=e.parameters,s=new dd;s.moveTo(t[0].x,t[0].y),s.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new rw(s.extractPoints(r).shape,i);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...e,type:"LatheGeometry"}})}},jr=new Se,kp=new _t,Mc=new M,Hd=class extends zi{constructor(){super(),this.uuid=rt.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(e){let t=new Ai().getNormalMatrix(e);for(let i=0,r=this.vertices.length;i<r;i++)this.vertices[i].applyMatrix4(e);for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i];s.normal.applyMatrix3(t).normalize();for(let n=0,a=s.vertexNormals.length;n<a;n++)s.vertexNormals[n].applyMatrix3(t).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return jr.makeRotationX(e),this.applyMatrix4(jr),this}rotateY(e){return jr.makeRotationY(e),this.applyMatrix4(jr),this}rotateZ(e){return jr.makeRotationZ(e),this.applyMatrix4(jr),this}translate(e,t,i){return jr.makeTranslation(e,t,i),this.applyMatrix4(jr),this}scale(e,t,i){return jr.makeScale(e,t,i),this.applyMatrix4(jr),this}lookAt(e){return kp.lookAt(e),kp.updateMatrix(),this.applyMatrix4(kp.matrix),this}fromBufferGeometry(e){let t=this,i=e.index!==null?e.index:void 0,r=e.attributes;if(r.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let s=r.position,n=r.normal,a=r.color,o=r.uv,l=r.uv2;l!==void 0&&(this.faceVertexUvs[1]=[]);for(let c=0;c<s.count;c++)t.vertices.push(new M().fromBufferAttribute(s,c)),a!==void 0&&t.colors.push(new Ue().fromBufferAttribute(a,c));function h(c,d,p,m){let g=a===void 0?[]:[t.colors[c].clone(),t.colors[d].clone(),t.colors[p].clone()],f=n===void 0?[]:[new M().fromBufferAttribute(n,c),new M().fromBufferAttribute(n,d),new M().fromBufferAttribute(n,p)],v=new ym(c,d,p,f,g,m);t.faces.push(v),o!==void 0&&t.faceVertexUvs[0].push([new H().fromBufferAttribute(o,c),new H().fromBufferAttribute(o,d),new H().fromBufferAttribute(o,p)]),l!==void 0&&t.faceVertexUvs[1].push([new H().fromBufferAttribute(l,c),new H().fromBufferAttribute(l,d),new H().fromBufferAttribute(l,p)])}let u=e.groups;if(u.length>0)for(let c=0;c<u.length;c++){let d=u[c],p=d.start,m=d.count;for(let g=p,f=p+m;g<f;g+=3)i!==void 0?h(i.getX(g),i.getX(g+1),i.getX(g+2),d.materialIndex):h(g,g+1,g+2,d.materialIndex)}else if(i!==void 0)for(let c=0;c<i.count;c+=3)h(i.getX(c),i.getX(c+1),i.getX(c+2));else for(let c=0;c<s.count;c+=3)h(c,c+1,c+2);return this.computeFaceNormals(),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Mc).negate(),this.translate(Mc.x,Mc.y,Mc.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,i=t===0?1:1/t,r=new Se;return r.set(i,0,0,-i*e.x,0,i,0,-i*e.y,0,0,i,-i*e.z,0,0,0,1),this.applyMatrix4(r),this}computeFaceNormals(){let e=new M,t=new M;for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i],n=this.vertices[s.a],a=this.vertices[s.b],o=this.vertices[s.c];e.subVectors(o,a),t.subVectors(n,a),e.cross(t),e.normalize(),s.normal.copy(e)}}computeVertexNormals(e=!0){let t=new Array(this.vertices.length);for(let i=0,r=this.vertices.length;i<r;i++)t[i]=new M;if(e){let i=new M,r=new M;for(let s=0,n=this.faces.length;s<n;s++){let a=this.faces[s],o=this.vertices[a.a],l=this.vertices[a.b],h=this.vertices[a.c];i.subVectors(h,l),r.subVectors(o,l),i.cross(r),t[a.a].add(i),t[a.b].add(i),t[a.c].add(i)}}else{this.computeFaceNormals();for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i];t[s.a].add(s.normal),t[s.b].add(s.normal),t[s.c].add(s.normal)}}for(let i=0,r=this.vertices.length;i<r;i++)t[i].normalize();for(let i=0,r=this.faces.length;i<r;i++){let s=this.faces[i],n=s.vertexNormals;n.length===3?(n[0].copy(t[s.a]),n[1].copy(t[s.b]),n[2].copy(t[s.c])):(n[0]=t[s.a].clone(),n[1]=t[s.b].clone(),n[2]=t[s.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let i=this.faces[e],r=i.vertexNormals;r.length===3?(r[0].copy(i.normal),r[1].copy(i.normal),r[2].copy(i.normal)):(r[0]=i.normal.clone(),r[1]=i.normal.clone(),r[2]=i.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let t=0,i=this.faces.length;t<i;t++){let r=this.faces[t];r.__originalFaceNormal?r.__originalFaceNormal.copy(r.normal):r.__originalFaceNormal=r.normal.clone(),r.__originalVertexNormals||(r.__originalVertexNormals=[]);for(let s=0,n=r.vertexNormals.length;s<n;s++)r.__originalVertexNormals[s]?r.__originalVertexNormals[s].copy(r.vertexNormals[s]):r.__originalVertexNormals[s]=r.vertexNormals[s].clone()}let e=new Hd;e.faces=this.faces;for(let t=0,i=this.morphTargets.length;t<i;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let s=this.morphNormals[t].faceNormals,n=this.morphNormals[t].vertexNormals;for(let a=0,o=this.faces.length;a<o;a++){let l=new M,h={a:new M,b:new M,c:new M};s.push(l),n.push(h)}}let r=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let s=0,n=this.faces.length;s<n;s++){let a=this.faces[s],o=r.faceNormals[s],l=r.vertexNormals[s];o.copy(a.normal),l.a.copy(a.vertexNormals[0]),l.b.copy(a.vertexNormals[1]),l.c.copy(a.vertexNormals[2])}}for(let t=0,i=this.faces.length;t<i;t++){let r=this.faces[t];r.normal=r.__originalFaceNormal,r.vertexNormals=r.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Gt),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pr),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,i=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let r,s=this.vertices.length,n=this.vertices,a=e.vertices,o=this.faces,l=e.faces,h=this.colors,u=e.colors;t!==void 0&&(r=new Ai().getNormalMatrix(t));for(let c=0,d=a.length;c<d;c++){let p=a[c].clone();t!==void 0&&p.applyMatrix4(t),n.push(p)}for(let c=0,d=u.length;c<d;c++)h.push(u[c].clone());for(let c=0,d=l.length;c<d;c++){let p=l[c],m,g,f=p.vertexNormals,v=p.vertexColors,y=new ym(p.a+s,p.b+s,p.c+s);y.normal.copy(p.normal),r!==void 0&&y.normal.applyMatrix3(r).normalize();for(let b=0,x=f.length;b<x;b++)m=f[b].clone(),r!==void 0&&m.applyMatrix3(r).normalize(),y.vertexNormals.push(m);y.color.copy(p.color);for(let b=0,x=v.length;b<x;b++)g=v[b],y.vertexColors.push(g.clone());y.materialIndex=p.materialIndex+i,o.push(y)}for(let c=0,d=e.faceVertexUvs.length;c<d;c++){let p=e.faceVertexUvs[c];this.faceVertexUvs[c]===void 0&&(this.faceVertexUvs[c]=[]);for(let m=0,g=p.length;m<g;m++){let f=p[m],v=[];for(let y=0,b=f.length;y<b;y++)v.push(f[y].clone());this.faceVertexUvs[c].push(v)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},i=[],r=[],s=Math.pow(10,e);for(let o=0,l=this.vertices.length;o<l;o++){let h=this.vertices[o],u=Math.round(h.x*s)+"_"+Math.round(h.y*s)+"_"+Math.round(h.z*s);t[u]===void 0?(t[u]=o,i.push(this.vertices[o]),r[o]=i.length-1):r[o]=r[t[u]]}let n=[];for(let o=0,l=this.faces.length;o<l;o++){let h=this.faces[o];h.a=r[h.a],h.b=r[h.b],h.c=r[h.c];let u=[h.a,h.b,h.c];for(let c=0;c<3;c++)if(u[c]===u[(c+1)%3]){n.push(o);break}}for(let o=n.length-1;o>=0;o--){let l=n[o];this.faces.splice(l,1);for(let h=0,u=this.faceVertexUvs.length;h<u;h++)this.faceVertexUvs[h].splice(l,1)}let a=this.vertices.length-i.length;return this.vertices=i,a}setFromPoints(e){this.vertices=[];for(let t=0,i=e.length;t<i;t++){let r=e[t];this.vertices.push(new M(r.x,r.y,r.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let o=0;o<t;o++)e[o]._id=o;function i(o,l){return o.materialIndex-l.materialIndex}e.sort(i);let r=this.faceVertexUvs[0],s=this.faceVertexUvs[1],n,a;r&&r.length===t&&(n=[]),s&&s.length===t&&(a=[]);for(let o=0;o<t;o++){let l=e[o]._id;n&&n.push(r[l]),a&&a.push(s[l])}n&&(this.faceVertexUvs[0]=n),a&&(this.faceVertexUvs[1]=a)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.parameters!==void 0){let p=this.parameters;for(let m in p)p[m]!==void 0&&(e[m]=p[m]);return e}let t=[];for(let p=0;p<this.vertices.length;p++){let m=this.vertices[p];t.push(m.x,m.y,m.z)}let i=[],r=[],s={},n=[],a={},o=[],l={};for(let p=0;p<this.faces.length;p++){let m=this.faces[p],g=!0,f=!1,v=this.faceVertexUvs[0][p]!==void 0,y=m.normal.length()>0,b=m.vertexNormals.length>0,x=m.color.r!==1||m.color.g!==1||m.color.b!==1,w=m.vertexColors.length>0,_=0;if(_=h(_,0,0),_=h(_,1,g),_=h(_,2,f),_=h(_,3,v),_=h(_,4,y),_=h(_,5,b),_=h(_,6,x),_=h(_,7,w),i.push(_),i.push(m.a,m.b,m.c),i.push(m.materialIndex),v){let A=this.faceVertexUvs[0][p];i.push(d(A[0]),d(A[1]),d(A[2]))}if(y&&i.push(u(m.normal)),b){let A=m.vertexNormals;i.push(u(A[0]),u(A[1]),u(A[2]))}if(x&&i.push(c(m.color)),w){let A=m.vertexColors;i.push(c(A[0]),c(A[1]),c(A[2]))}}function h(p,m,g){return g?p|1<<m:p&~(1<<m)}function u(p){let m=p.x.toString()+p.y.toString()+p.z.toString();return s[m]!==void 0||(s[m]=r.length/3,r.push(p.x,p.y,p.z)),s[m]}function c(p){let m=p.r.toString()+p.g.toString()+p.b.toString();return a[m]!==void 0||(a[m]=n.length,n.push(p.getHex())),a[m]}function d(p){let m=p.x.toString()+p.y.toString();return l[m]!==void 0||(l[m]=o.length/2,o.push(p.x,p.y)),l[m]}return e.data={},e.data.vertices=t,e.data.normals=r,n.length>0&&(e.data.colors=n),o.length>0&&(e.data.uvs=[o]),e.data.faces=i,e}clone(){return new Hd().copy(this)}copy(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;let t=e.vertices;for(let c=0,d=t.length;c<d;c++)this.vertices.push(t[c].clone());let i=e.colors;for(let c=0,d=i.length;c<d;c++)this.colors.push(i[c].clone());let r=e.faces;for(let c=0,d=r.length;c<d;c++)this.faces.push(r[c].clone());for(let c=0,d=e.faceVertexUvs.length;c<d;c++){let p=e.faceVertexUvs[c];this.faceVertexUvs[c]===void 0&&(this.faceVertexUvs[c]=[]);for(let m=0,g=p.length;m<g;m++){let f=p[m],v=[];for(let y=0,b=f.length;y<b;y++){let x=f[y];v.push(x.clone())}this.faceVertexUvs[c].push(v)}}let s=e.morphTargets;for(let c=0,d=s.length;c<d;c++){let p={};if(p.name=s[c].name,s[c].vertices!==void 0){p.vertices=[];for(let m=0,g=s[c].vertices.length;m<g;m++)p.vertices.push(s[c].vertices[m].clone())}if(s[c].normals!==void 0){p.normals=[];for(let m=0,g=s[c].normals.length;m<g;m++)p.normals.push(s[c].normals[m].clone())}this.morphTargets.push(p)}let n=e.morphNormals;for(let c=0,d=n.length;c<d;c++){let p={};if(n[c].vertexNormals!==void 0){p.vertexNormals=[];for(let m=0,g=n[c].vertexNormals.length;m<g;m++){let f=n[c].vertexNormals[m],v={};v.a=f.a.clone(),v.b=f.b.clone(),v.c=f.c.clone(),p.vertexNormals.push(v)}}if(n[c].faceNormals!==void 0){p.faceNormals=[];for(let m=0,g=n[c].faceNormals.length;m<g;m++)p.faceNormals.push(n[c].faceNormals[m].clone())}this.morphNormals.push(p)}let a=e.skinWeights;for(let c=0,d=a.length;c<d;c++)this.skinWeights.push(a[c].clone());let o=e.skinIndices;for(let c=0,d=o.length;c<d;c++)this.skinIndices.push(o[c].clone());let l=e.lineDistances;for(let c=0,d=l.length;c<d;c++)this.lineDistances.push(l[c]);let h=e.boundingBox;h!==null&&(this.boundingBox=h.clone());let u=e.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new AU().fromGeometry(this),t=new ke,i=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new Qe(i,3).copyVector3sArray(e.vertices)),e.normals.length>0){let r=new Float32Array(e.normals.length*3);t.setAttribute("normal",new Qe(r,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let r=new Float32Array(e.colors.length*3);t.setAttribute("color",new Qe(r,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let r=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new Qe(r,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let r=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new Qe(r,2).copyVector2sArray(e.uvs2))}t.groups=e.groups;for(let r in e.morphTargets){let s=[],n=e.morphTargets[r];for(let a=0,o=n.length;a<o;a++){let l=n[a],h=new Ee(l.data.length*3,3);h.name=l.name,s.push(h.copyVector3sArray(l.data))}t.morphAttributes[r]=s}if(e.skinIndices.length>0){let r=new Ee(e.skinIndices.length*4,4);t.setAttribute("skinIndex",r.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let r=new Ee(e.skinWeights.length*4,4);t.setAttribute("skinWeight",r.copyVector4sArray(e.skinWeights))}return e.boundingSphere!==null&&(t.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new ke,i=e.geometry;if(e.isPoints||e.isLine){let r=new Ee(i.vertices.length*3,3),s=new Ee(i.colors.length*3,3);if(t.setAttribute("position",r.copyVector3sArray(i.vertices)),t.setAttribute("color",s.copyColorsArray(i.colors)),i.lineDistances&&i.lineDistances.length===i.vertices.length){let n=new Ee(i.lineDistances.length,1);t.setAttribute("lineDistance",n.copyArray(i.lineDistances))}i.boundingSphere!==null&&(t.boundingSphere=i.boundingSphere.clone()),i.boundingBox!==null&&(t.boundingBox=i.boundingBox.clone())}else e.isMesh&&(t=i.toBufferGeometry());return t}};Hd.prototype.isGeometry=!0;var AU=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(e){let t=[],i,r,s,n=e.faces;for(r=0;r<n.length;r++){let a=n[r];a.materialIndex!==s&&(s=a.materialIndex,i!==void 0&&(i.count=r*3-i.start,t.push(i)),i={start:r*3,materialIndex:s})}i!==void 0&&(i.count=r*3-i.start,t.push(i)),this.groups=t}fromGeometry(e){let t=e.faces,i=e.vertices,r=e.faceVertexUvs,s=r[0]&&r[0].length>0,n=r[1]&&r[1].length>0,a=e.morphTargets,o=a.length,l;if(o>0){l=[];for(let f=0;f<o;f++)l[f]={name:a[f].name,data:[]};this.morphTargets.position=l}let h=e.morphNormals,u=h.length,c;if(u>0){c=[];for(let f=0;f<u;f++)c[f]={name:h[f].name,data:[]};this.morphTargets.normal=c}let d=e.skinIndices,p=e.skinWeights,m=d.length===i.length,g=p.length===i.length;i.length>0&&t.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let f=0;f<t.length;f++){let v=t[f];this.vertices.push(i[v.a],i[v.b],i[v.c]);let y=v.vertexNormals;if(y.length===3)this.normals.push(y[0],y[1],y[2]);else{let x=v.normal;this.normals.push(x,x,x)}let b=v.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let x=v.color;this.colors.push(x,x,x)}if(s===!0){let x=r[0][f];x!==void 0?this.uvs.push(x[0],x[1],x[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",f),this.uvs.push(new H,new H,new H))}if(n===!0){let x=r[1][f];x!==void 0?this.uvs2.push(x[0],x[1],x[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",f),this.uvs2.push(new H,new H,new H))}for(let x=0;x<o;x++){let w=a[x].vertices;l[x].data.push(w[v.a],w[v.b],w[v.c])}for(let x=0;x<u;x++){let w=h[x].vertexNormals[f];c[x].data.push(w.a,w.b,w.c)}m&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),g&&this.skinWeights.push(p[v.a],p[v.b],p[v.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),this}},ym=class{constructor(e,t,i,r,s,n=0){this.a=e,this.b=t,this.c=i,this.normal=r&&r.isVector3?r:new M,this.vertexNormals=Array.isArray(r)?r:[],this.color=s&&s.isColor?s:new Ue,this.vertexColors=Array.isArray(s)?s:[],this.materialIndex=n}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,i=e.vertexNormals.length;t<i;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,i=e.vertexColors.length;t<i;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}},MU=["a","b","c"];function EU(e,t){switch(t){case"c":return e.c;case"b":return e.b;case"a":default:return e.a}}function jp(e,t,i){let r=Math.min(e,t),s=Math.max(e,t),n=r+"_"+s;return i.get(n)}function Hp(e,t,i,r,s,n){let a=Math.min(e,t),o=Math.max(e,t),l=a+"_"+o,h;if(r.has(l))h=r.get(l);else{let u=i[a],c=i[o];h={a:u,b:c,newEdge:null,faces:[]},r.set(l,h)}h.faces.push(s),n[e].edges.push(h),n[t].edges.push(h)}function CU(e,t,i,r){let s,n,a;for(s=0,n=e.length;s<n;s++)i[s]={edges:[]};for(s=0,n=t.length;s<n;s++)a=t[s],Hp(a.a,a.b,e,r,a,i),Hp(a.b,a.c,e,r,a,i),Hp(a.c,a.a,e,r,a,i)}function Ec(e,t,i,r,s){e.push(new ym(t,i,r,void 0,void 0,s))}function Ua(e,t){return Math.abs(t-e)/2+Math.min(e,t)}function Cc(e,t,i,r){e.push([t.clone(),i.clone(),r.clone()])}var TU=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof ke?e=new Hd().fromBufferGeometry(e):e=e.clone(),e.mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new M,i,r,s,n,a,o=e.vertices,l=e.faces,h=e.faceVertexUvs[0],u=h!==void 0&&h.length>0,c=[],d=new Map;CU(o,l,c,d);let p=[],m,g,f,v,y,b,x;for(let ne of Array.from(d.keys())){for(g=d.get(ne),f=new M,y=3/8,b=1/8,x=g.faces.length,x!=2&&(y=.5,b=0,x!=1),f.addVectors(g.a,g.b).multiplyScalar(y),t.set(0,0,0),n=0;n<x;n++){for(v=g.faces[n],a=0;a<3&&(m=o[EU(v,MU[a])],!(m!==g.a&&m!==g.b));a++);m&&t.add(m)}t.multiplyScalar(b),f.add(t),g.newEdge=p.length,p.push(f)}let w,_,A,S,E,C,T,P=[];for(r=0,s=o.length;r<s;r++){for(C=o[r],E=c[r].edges,i=E.length,i==3?w=3/16:i>3&&(w=3/(8*i)),_=1-i*Number(w),A=w,i<=2&&(i==2?(_=3/4,A=1/8):i==1||i==0),T=C.clone().multiplyScalar(_),t.set(0,0,0),n=0;n<i;n++)S=E[n],m=S.a!==C?S.a:S.b,t.add(m);t.multiplyScalar(Number(A)),T.add(t),P.push(T)}let R=P.concat(p),O=P.length,U,j,z,L=[],G=[],F,V,N,X,Z=new H,ee=new H,W=new H;for(r=0,s=l.length;r<s;r++)v=l[r],U=Number(jp(v.a,v.b,d).newEdge)+O,j=Number(jp(v.b,v.c,d).newEdge)+O,z=Number(jp(v.c,v.a,d).newEdge)+O,Ec(L,U,j,z,v.materialIndex),Ec(L,v.a,U,z,v.materialIndex),Ec(L,v.b,j,U,v.materialIndex),Ec(L,v.c,z,j,v.materialIndex),u&&(F=h[r],V=F[0],N=F[1],X=F[2],Z.set(Ua(V.x,N.x),Ua(V.y,N.y)),ee.set(Ua(N.x,X.x),Ua(N.y,X.y)),W.set(Ua(V.x,X.x),Ua(V.y,X.y)),Cc(G,Z,ee,W),Cc(G,V,Z,W),Cc(G,N,ee,Z),Cc(G,X,W,ee));e.vertices=R,e.faces=L,u&&(e.faceVertexUvs[0]=G)}},Wt=new M,PU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=e.geometry??t?.geometry??new ke().copy(new os(100,100,100)),r;t===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Wt),r={width:Wt.x,height:Wt.y,depth:Wt.z,subdivisions:0}):r=t.parameters;let s={...r,...e.parameters};return{parameters:{width:Math.abs(s.width),height:Math.abs(s.height),depth:Math.abs(s.depth),subdivisions:Math.abs(s.subdivisions)},geometry:i}}static build(e){let{width:t,height:i,depth:r,subdivisions:s}=e.parameters,n=e.geometry??new ke().copy(new os(100,100,100)),a=n.userData.parameters;a===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Wt)):Wt.set(a.width,a.height,a.depth),(t!==Wt.x||i!==Wt.y||r!==Wt.z)&&n.scale(Wt.x===0?1:t/Wt.x,Wt.y===0?1:i/Wt.y,Wt.z===0?1:r/Wt.z);let o=n.originalGeometry;return s>0?(o===void 0||a?.subdivisions!==s)&&(o===void 0&&(o=n),n=new TU(s).modify(o).toBufferGeometry()):(o!==void 0&&(n=o),o=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),o!==void 0&&Object.assign(n,{originalGeometry:o}),delete e.geometry,Object.assign(n,{userData:{...e,type:"NonParametricGeometry"}})}static loadFromUrl(e,t,i){new pw(i).load(e,r=>{let s=this.normalizeInputs({geometry:r});r.boundingBox.getSize(Wt);let n=100/Wt.x;Object.assign(s.parameters,{width:100,height:Wt.y*n,depth:Wt.z*n}),t(this.build(s))})}},DU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,spikes:r,cornerRadius:s,depth:n,extrudeBevelSize:a,extrudeBevelSegments:o}=e.parameters,l=e.shape,h=t*.5,u=i*.5,c=0,d=0,p=2*Math.PI/r;for(let g=0;g<r;g++){let f=p*g,v=c+Math.sin(f)*h,y=d+Math.cos(f)*u;l.addPoint(l.createPoint(v,y))}l.isClosed=!0;for(let g=0,f=l.points.length;g<f;g++)l.points[g].roundness=s;l.roundness=s,l.update();let m=ua.create({shape:l,parameters:{roundness:s,depth:n,extrudeBevelSize:a,extrudeBevelSegments:o}});return Object.assign(m,{userData:{...e,type:"PolygonGeometry"}})}},OU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,radialSegments:s,heightSegments:n,openEnded:a,cornerRadius:o,cornerSegments:l}=e.parameters,h=new IU(t*.5,i,s,n,a,o,l);return h.scale(1,1,r/t),Object.assign(h,{userData:{...e,type:"PyramidGeometry"}})}};function fl(e,t,i){i.x=e.x*t.x,i.y=e.y,i.z=e.x*t.y}function Gp(e,t,i,r,s,n){let a=t.clone().sub(e),o=i.clone().sub(e),l=a.angleTo(o);if(a.normalize(),o.normalize(),r===s){let h=a.add(o).normalize();n.copy(e).addScaledVector(h,r/Math.sin(l/2))}else{let h=a.angleTo(o);n.copy(e),n.addScaledVector(a,s/Math.sin(h)),n.addScaledVector(o,r/Math.sin(h))}}function LU(e,t,i){let r=e.clone().sub(t),s=i.clone().sub(t);return r.projectOnVector(s),r.add(t)}var IU=class extends ke{constructor(e=.5,t=1,i=4,r=1,s=!1,n=0,a=4){super(),i=Math.floor(Math.max(3,i)),r=Math.floor(r),a=Math.floor(a);let o=[],l=[],h=[],u=[],c=0,d=t/2,p=Math.PI/i,m=e*Math.cos(Math.PI/i),g=2*Math.PI/i,f=(i-2)*Math.PI/i,v=Math.PI-f,y=new M(0,-d,0),b=new M(0,d,0),x=new H(e,-d),w=new H(m,-d),_=new H(0,b.y).sub(w),A=new H(0,b.y).sub(x),S=new H(_.y,-_.x).normalize(),E=new H(A.y,-A.x).normalize(),C=e*Math.cos(Math.PI/i)*Math.tan((Math.PI-_.angle())/2)-1e-8;n=Math.min(n,C);let T;{let L=new M(S.x,S.y,0),G=new M(Math.cos(g)*L.x,L.y,Math.sin(g)*L.x);T=L.angleTo(G)}let P=n/Math.tan((Math.PI-_.angle())/2),R=n/Math.tan((Math.PI-T)/2),O=new M;if(!s){l.push(y.x,y.y,y.z),h.push(0,-1,0),u.push(0,0);let L=c++,G=[],F=x.clone(),V=P/Math.cos(Math.PI/i);F.x-=V;for(let N=0;N<i;N++){let X=N/i*Math.PI*2+p,Z=new H(Math.sin(X),Math.cos(X));fl(F,Z,O),l.push(O.x,O.y,O.z),h.push(0,-1,0),u.push(0,0),G.push(c++)}for(let N=0;N<G.length;N++)o.push(G[N],L,G[(N+1)%G.length])}let U=[];{let L=new M,G=new M,F=new M,V=new M,N=new M,X=new M;for(let Z=0;Z<i;Z++){let ee=Z/i*Math.PI*2+p,W=(Z+.5)/i*Math.PI*2+p,ne=(Z+1)/i*Math.PI*2+p,q=new H(Math.sin(ee),Math.cos(ee)),Q=new H(Math.sin(W),Math.cos(W)),K=new H(Math.sin(ne),Math.cos(ne));fl(x,q,G),fl(x,K,F),fl(S,Q,L),Gp(b,G,F,R,R,V),l.push(V.x,V.y,V.z),Gp(G,b,F,R,P,N),l.push(N.x,N.y,N.z),Gp(F,G,b,P,R,X),l.push(X.x,X.y,X.z),h.push(L.x,L.y,L.z),h.push(L.x,L.y,L.z),h.push(L.x,L.y,L.z),u.push(0,0),u.push(0,0),u.push(0,0);let de=c++,oe=c++,le=c++;if(o.push(de,oe,le),n>0){{let ge=G.clone().add(F).multiplyScalar(.5),De=b.clone().sub(ge).normalize(),Ae=y.clone().sub(ge).normalize().add(De).normalize().multiplyScalar(-1),we=X.clone().sub(N);j(ge,we,Ae,_.angle())}let ue,pe;{let ge=new M;fl(E,K,ge);let De=X.clone().add(V).multiplyScalar(.5);De=LU(De,F,b);let Ae=X.clone().sub(V);[ue,pe]=j(De,Ae,ge,T,V.y)}{let ge=ue,De=ge.clone().setY(0).normalize(),Ae=new M(0,-1,0),we=De.clone().cross(Ae);z(ge,De,Ae,we)}U.concat(pe);{let ge=_.angle(),De=Math.PI-ge,Ae=b.clone();Ae.y-=n/Math.sin(ge-Math.PI/2);let we=new M,bt=[];for(let B=0;B<a;B++){let D=[],ie=Math.PI/2-De*B/a,ce=Math.cos(ie),fe=Math.sin(ie),_e=W;for(let je=0;je<=B;je++){let re=Math.cos(_e),Be=Math.sin(_e);L.x=ce*Be,L.y=fe,L.z=ce*re,we.copy(Ae).addScaledVector(L,n),l.push(we.x,we.y,we.z),h.push(L.x,L.y,L.z),u.push(0,0),D.push(c++),_e+=Math.PI*2/B/i}bt.push(D)}pe.reverse(),bt.push(pe);let Ke=bt.length-1;for(let B=0;B<Ke;B++){let D=bt[B],ie=bt[B+1],ce=D.length-1;o.push(ie[1],D[0],ie[0]);for(let fe=1;fe<=ce;fe++)o.push(D[fe],D[fe-1],ie[fe]),o.push(ie[fe+1],D[fe],ie[fe])}}}}}this.setIndex(o),this.setAttribute("position",new Ee(l,3)),this.setAttribute("normal",new Ee(h,3)),this.setAttribute("uv",new Ee(u,2));function j(L,G,F,V,N){let X=-V/2,Z=(Math.PI-V)/2,ee=G.clone().normalize().cross(F);L.addScaledVector(F,-n/Math.sin(Z));let W=new M,ne=new M,q=1,Q=c,K=[];for(let de=0;de<=a;de++){let oe=X+de/a*V;ne.set(0,0,0),ne.addScaledVector(ee,Math.sin(oe)),ne.addScaledVector(F,Math.cos(oe));for(let le=0;le<=q;le++){let ue=le/q-.5;if(W.copy(L),W.addScaledVector(G,ue),W.addScaledVector(ne,n),N!=null){let pe=Math.max(0,W.y-N);W.addScaledVector(G,-pe/G.y)}l.push(W.x,W.y,W.z),h.push(ne.x,ne.y,ne.z),u.push(0,0),le===0&&K.push(c),c++}}for(let de=0;de<a;de++)for(let oe=0;oe<q;oe++){let le=Q+oe+(q+1)*de,ue=le+(q+1),pe=ue+1,ge=le+1;o.push(le,ue,ge),o.push(ue,pe,ge)}return[L.clone().addScaledVector(G,.5),K]}function z(L,G,F,V){let N=Math.PI/2,X=A.angle()-N,Z=[],ee=new M,W=new M;for(let q=0;q<=a;q++){let Q=[],K=q/a;for(let de=0;de<=q;de++){let oe=((q?de/q:0)-.5)*v,le=Math.cos(oe),ue=Math.sin(oe),pe=Math.atan(Math.tan(X)*le),ge=(N+pe)*K,De=Math.cos(ge),Ae=Math.sin(ge);ee.set(0,0,0),ee.addScaledVector(G,Ae*le),ee.addScaledVector(F,De),ee.addScaledVector(V,Ae*ue),W.copy(L).addScaledVector(ee,n),l.push(W.x,W.y,W.z),h.push(ee.x,ee.y,ee.z),u.push(0,0),Q.push(c++)}Z.push(Q)}let ne=Z.length-1;for(let q=0;q<ne;q++){let Q=Z[q],K=Z[q+1],de=Q.length-1;o.push(Q[0],K[1],K[0]);for(let oe=1;oe<=de;oe++)o.push(Q[oe-1],Q[oe],K[oe]),o.push(Q[oe],K[oe+1],K[oe])}}}},BU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},e.ui);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)}),ui:r}}static build(e){let t=e.shape,{width:i,height:r,cornerRadius:s,cornerType:n,depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}=e.parameters,h={x:i*.5,y:r*.5},u={x:-h.x,y:-h.y},c={x:h.x,y:h.y};function d(x,w,_){return w>i&&_>r?Math.min(x*i/w,x*r/_):w>i?x*i/w:_>r?x*r/_:x}let p=[];p[0]=s[0]===0?0:d(s[0],s[0]+s[3],s[0]+s[1]),p[1]=s[1]===0?0:d(s[1],s[1]+s[2],s[1]+s[0]),p[2]=s[2]===0?0:d(s[2],s[2]+s[1],s[2]+s[3]),p[3]=s[3]===0?0:d(s[3],s[3]+s[0],s[3]+s[2]);let m=u.x,g=c.x,f=c.y,v=u.y;t.addPoint(t.createPoint(m,f)),t.addPoint(t.createPoint(g,f)),t.addPoint(t.createPoint(g,v)),t.addPoint(t.createPoint(m,v)),t.isClosed=!0;let y=!0;for(let x=0,w=t.points.length;x<w;x++)t.points[x].roundness=p[x],x>0&&p[x]!==p[x-1]&&(y=!1);y&&(t.roundness=p[0]),t.useCubicForRoundedCorners=n!==1,t.update();let b=ua.create({shape:t,parameters:{depth:a,extrudeBevelSize:o,extrudeBevelSegments:l}});return Object.assign(b,{userData:{...e,type:"RectangleGeometry"}})}},RU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t=100,height:i=t,depth:r=t,widthSegments:s=64,heightSegments:n=64,phiStart:a,phiLength:o,thetaStart:l,thetaLength:h}=e.parameters,u=new tg(.5*t,s,n,a,o,l,h);return u.scale(1,i/t,r/t),Object.assign(u,{userData:{...e,type:"SphereGeometry"}})}},NU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:0})}}static build(e){let{width:t=100,height:i=t,widthSegments:r=8,heightSegments:s=8}=e.parameters,n=new $d(t,i,r,s);return n.scale(1,1,1),Object.assign(n,{userData:{...e,type:"PlaneGeometry"}})}},zU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,angle:s,cornerRadius:n,cornerSegments:a}=e.parameters,o=new FU(t,i,r,s,n,a);return Object.assign(o,{userData:{...e,type:"BackdropGeometry"}})}},FU=class extends ke{constructor(e=1,t=1,i=1,r=90,s=10,n=24){super(),this.type="BackdropGeometry";let a=[],o=[],l=[],h=.001;s==0&&(n=1),n=Math.max(1,Math.floor(n)),s=Math.min(s,100),r=Math.min(180-h,r),r*=Math.PI/180;let u=[],c=Math.PI/2,d=(ne=0,q=0,Q=0)=>new M(ne,q,Q),p=d(),m=d(),[g,f,v]=[t/2,e/2,i/2],y=-f,b=+f,[x,w,_]=[d(y,-g,+v),d(y,-g,-v),d(y,+g,-v)],A=(ne,q=!1)=>Math.sin(ne-Math.PI/(1+ +q)),S=(ne,q=!1)=>Math.cos(ne-Math.PI/(1+ +q));_.y=Math.sin(r)*t-g;let E=Math.cos(r)*t-v,C=x.z-h;r<=c?(_.z=Math.min(E,C),_.z==C&&(_.y-=(E-C)/Math.tan(c-r))):w.z=Math.min(w.z-E-v,x.z-h),p.subVectors(x,w),m.subVectors(_,w);let T=Math.min(p.length(),m.length())*s/100,P=T*Math.tan(r/2),R=T/Math.cos(r/2),O=p.clone().normalize().add(m.normalize()).setLength(R).add(w);p.set(0,A(r,!0),S(r,!0)),u.push([_,p.clone()]);let U=(Math.PI-r)/n;for(let ne=0;ne<=n;ne++){let q=c+r+ne*U;p.set(0,Math.sin(q)*P,Math.cos(q)*P),p.add(O),m.set(0,A(q),S(q)),u.push([p.clone(),m.clone()])}u.push([x,d(0,1,0)]);let j=Math.sin(U/2)*P*2,z=u.length-1,L=u[0][0].distanceTo(u[1][0]),G=u[z-1][0].distanceTo(u[z][0]),F=L+j*n+G;u[0].push(1);for(let ne=0;ne<=n;ne++)u[ne+1].push(1-(L+ne*j)/F);u[z].push(0);let[V,N,X]=u[0],Z,ee,W;for(let ne=1;ne<u.length;ne++)[Z,ee,W]=u[ne],a.push(y,V.y,V.z,y,Z.y,Z.z,b,V.y,V.z,b,V.y,V.z,y,Z.y,Z.z,b,Z.y,Z.z),o.push(0,N.y,N.z,0,ee.y,ee.z,0,N.y,N.z,0,N.y,N.z,0,ee.y,ee.z,0,ee.y,ee.z),l.push(0,X,0,W,1,X,1,X,0,W,1,W),[V,N,X]=[Z,ee,W];this.setAttribute("position",new Ee(a,3)),this.setAttribute("normal",new Ee(o,3)),this.setAttribute("uv",new Ee(l,2))}},UU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,innerRadiusPercent:r,spikes:s,cornerRadius:n,angle:a,depth:o,extrudeBevelSize:l,extrudeBevelSegments:h}=e.parameters,u=e.shape,c=t*.5,d=i*.5,p=0,m=0,g=a*Math.PI/360/s,f=Math.PI/2*3*-1,v=c*r/100,y=d*r/100;if(s===3&&r===50){g=2*Math.PI/s;for(let x=0;x<s;x++){let w=g*x,_=p+Math.sin(w)*c,A=m+Math.cos(w)*d;u.addPoint(u.createPoint(_,A))}}else for(let x=0;x<s;x++){let w=p+Math.cos(f)*c,_=m+Math.sin(f)*d;u.addPoint(u.createPoint(w,_)),f+=g,w=p+Math.cos(f)*v,_=m+Math.sin(f)*y,x<=s,u.addPoint(u.createPoint(w,_)),f+=g}u.isClosed=!0;for(let x=0,w=u.points.length;x<w;x++)u.points[x].roundness=n;u.roundness=n,u.update();let b=ua.create({shape:u,parameters:{roundness:n,depth:o,extrudeBevelSize:l,extrudeBevelSegments:h}});return Object.assign(b,{userData:{...e,type:"StarGeometry"}})}},kU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i}=e.parameters,r=new $d(t,i);return Object.assign(r,{userData:{...e,type:"TextFrameGeometry"}})}},jU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},e.parameters),r=Math.abs(i.width),s=Math.abs(i.height??i.width),n=Math.round(Math.abs(i.depth??i.width*.25));return{parameters:Object.assign(i,{width:r,height:s,depth:n})}}static build(e){let{width:t,height:i,depth:r,radialSegments:s,tubularSegments:n,arc:a,cornerRadius:o,cornerSegments:l}=e.parameters,h=HU(t,i,r,t*.5,a,n,0,0,s,o,l);return h.scale(1,i/t,1),Object.assign(h,{userData:{...e,type:"TorusGeometry"}})}};function HU(e,t,i,r,s,n,a,o,l,h,u){return[t,i]=[i,t],a=t/2,s/=2*Math.PI,s==1&&(h=0),new jg(!0,e,t,i,r,s,n,a,o,l,h,u)}var GU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width),tube:i.tube??i.width*.125})}}static build(e){let{width:t,tube:i,tubularSegments:r,radialSegments:s,p:n,q:a}=e.parameters,o=t*.5;o!==i&&(o-=i);let l=new dw(o,i,r,s,n,a);return Object.assign(l,{userData:{...e,type:"TorusKnotGeometry"}})}},VU=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},e.parameters);return{shape:e.shape&&e.shape instanceof Bt?e.shape:new Bt,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width*(i.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t=100,height:i,cornerRadius:r,depth:s,extrudeBevelSize:n,extrudeBevelSegments:a,isRect:o}=e.parameters,l=e.shape,h=t*.5,u=i*.5;o?(l.addPoint(l.createPoint(-h,u)),l.addPoint(l.createPoint(h,-u)),l.addPoint(l.createPoint(-h,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(h,-u)),l.addPoint(l.createPoint(-h,-u))),l.isClosed=!0;for(let d=0,p=l.points.length;d<p;d++)l.points[d].roundness=r;l.roundness=r,l.update();let c=ua.create({shape:l,parameters:{roundness:r,depth:s,extrudeBevelSize:n,extrudeBevelSegments:a}});return Object.assign(c,{userData:{...e,type:"TriangleGeometry"}})}};function WU(){let e=new ke;return e.setAttribute("position",new Qe(new Float32Array([]),3)),e.setIndex(new Qe(new Uint16Array([]),1)),e}var XU=12,YU=1,Q_=class extends ke{constructor(e,t){super(),this.charWidths=[],this.charCoords=[],this.wrappedText=[],this.isLowResolution=!1,this.vectorShapes=[],this.userData={parameters:e,type:"TextGeometry"};let i=t.getFont(e.font);i?.isLoaded?(this.font=i,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let i=t.getFont(e);i&&(this.font=i,await i.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:i,height:r,depth:s,extrudeBevelSize:n,extrudeBevelSegments:a,text:o,textTransform:l}=e,h=l===2?o.toUpperCase():l===3?o.toLowerCase():o,u=qU(e,t,h),{shapes:c,charWidths:d,charCoords:p}=t.generateShapes(u,e),m=i*.5,g=r*.5,f=c.map(b=>new Bt().fromShape(b));this.vectorShapes=f;let v=f.map(b=>ua.create({shape:b,parameters:{depth:s,extrudeBevelSegments:a,extrudeBevelSize:n,windingRule:s<=0?Et.NONZERO:Et.ODD,subdivisions:this.isLowResolution&&s>0?YU:XU}})),y=v.length?to(v):WU();y.translate(-m,g,0),this.dispose(),this.wrappedText=u,this.charCoords=p,this.charWidths=d,this.deleteAttribute("extrudeNormal"),Object.entries(y.attributes).forEach(([b,x])=>{this.setAttribute(b,x)}),this.setIndex(y.index),this.computeBoundingSphere()}clone(){let e=ko(new ke,Q_.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,i])=>{this.setAttribute(t,i)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function qU(e,t,i){i=i??e.text;let r=[""],s="";for(let n of i)s+=n,n===" "||n===`
|
|
3138
3138
|
`?(r[r.length-1]+=s,s="",n===`
|
|
3139
3139
|
`&&r.push("")):t.getTextWidth(r[r.length-1]+s,e)>e.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+s,e)>e.width&&(s.length===1?(r[r.length-1]+=s,s=""):(r[r.length-1]+=s.slice(0,-1),s=s[s.length-1],r.push(""))));return r[r.length-1]+=s,r}var Z_,Hg=new Promise(e=>{Z_=e}),nx=!1;async function QU(){if(nx)return;let e=aa?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.213/build",[t,i]=await Promise.all([import("./process.js"),fetch(`${e}/process.wasm`).then(n=>n.arrayBuffer())]),r=t.default,s=await r({wasmBinary:i});Z_(s),nx=!0}function Gd(e,t,i){let r={parameters:e,type:e.type};if(e.type==="VectorGeometry"){let n=Bt.createFromState(e.shape,e.width,e.height);r.shape=n}else if(e.type==="NonParametricGeometry")e.data.groups&&e.data.groups.forEach(n=>n.materialIndex=Math.max(n.materialIndex??0,0)),r.geometry=new pw().parse(e);else{if(e.type==="SubdivGeometry")return new _i(e,i);if(e.type==="TextGeometry")return new Q_(e,t)}let s;try{s=dx(r)}catch(n){console.error(n)}if(!s){let n=Bt.createFromState(Td.defaultData(),100,100);r.shape=n,s=dx(r)}return s}var ZU=new Se;function xm(e,t,i,r){let s=e.position.array,n=e.normal.array,a=ZU.makeScale(t,i,r).invert().elements,o,l,h;for(var u=0,c=s.length;u<c;u+=3)s[u]*=t,s[u+1]*=i,s[u+2]*=r,o=n[u],l=n[u+1],h=n[u+2],n[u]=a[0]*o+a[4]*l+a[8]*h,n[u+1]=a[1]*o+a[5]*l+a[9]*h,n[u+2]=a[2]*o+a[6]*l+a[10]*h;e.position.needsUpdate=!0,e.normal.needsUpdate=!0}var Tc=new Gt,ka=new M,Re;Hg.then(e=>{Re=e});var ax=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ox=new Uint32Array([0,1,2,3]),lx=new Uint8Array([4]),_i=class extends ke{constructor(e,t){super(),this.data=e,this.flatShading=t,this.subdivPointer=0,this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let i=this.data.scaleBaked,r=$n.div(t,i);this.subdividedGeometry&&xm(this.subdividedGeometry.attributes,...r),this.originalGeometry&&xm(this.originalGeometry.attributes,...r),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*r[0],height:s.height*r[1],depth:s.depth*r[2]},this.originalGeometry.boundingSphere.center.multiply(ka.fromArray(r));let n=ka.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=n/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,i;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:i}=_i.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new os(100,100,100),i=0}this.subdivPointer=i,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let r=this.subdividedGeometry??this.originalGeometry;Object.assign(this,r),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(_i.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new pr,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,i=e.boundingSphere.center;Tc.setFromBufferAttribute(t),Tc.getCenter(i),e.boundingSphere.radius=i.distanceTo(Tc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Tc.getSize(ka);let r={width:ka.x,height:ka.y,depth:ka.z};return this.userData.parameters=r,r}static build(e,t,i,r){let s,n,a,o=e?.phongAngle??35;i===!1&&(o=-1),t&&(Re.free_bvh(t),Re.free_subdivision_surface(t));try{s=_i.allocate(e,r)}catch(l){console.error(l,e),s=_i.allocate({positionWASM:ax,indexWASM:ox,verticesPerFaceWASM:lx},r)}if(Re.set_destination_refinement_level(s,0),n=_i.buildLevel(s,!0,o),e.subdivisions>0)try{Re.set_destination_refinement_level(s,e.subdivisions),a=_i.buildLevel(s,!1,o)}catch{try{Re.set_destination_refinement_level(s,e.subdivisions-1),a=_i.buildLevel(s,!1,o)}catch{a=null}}else a=null;return{subdivPointer:s,originalGeometry:n,subdividedGeometry:a}}static primitiveToQuads(e,t,i){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let r;if(e.type==="TorusGeometry"&&e.arc===Math.PI*2){let{width:h,height:u,depth:c,arc:d,tubularSegments:p,radialSegments:m}=e;r=new jg(!0,h,c,u,h*.5,d/(2*Math.PI),p,c/2,0,m,0,0,!0)}else r=e.shape!==void 0?t.geometry:Gd(e,i,!1);let s,n,a,o;({positions:s,triIndices:o}=Gg(r.getAttribute("position"),r.getIndex()));let l;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let h=e.radialSegments*e.heightSegments*3*2,u=h+e.radialSegments*3;l=[h,u]}return{indices:n,verticesPerFace:a}=K_(s,o,r,l),{positions:s,indices:n,verticesPerFace:a}}static allocate(e,t){let i,r,s,n=[],a=[];e.positionWASM&&e.positionWASM.length>0?(i=e.positionWASM,r=e.indexWASM,s=e.verticesPerFaceWASM):(i=ax,r=ox,s=lx);let o=i.length,l=r.length,h=s.length,u=i.length+n.length+a.length,c=r.length+s.length,d=u*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=u*Float32Array.BYTES_PER_ELEMENT,m=c*Uint32Array.BYTES_PER_ELEMENT,g=Re._malloc(d),f=new Float32Array(Re.HEAPF32.buffer,g,u),v=new Uint32Array(Re.HEAPU32.buffer,g+p,c);f.set(i,0),f.set(n,i.length),f.set(a,i.length+n.length),v.set(r,0),v.set(s,r.length);let y;e?.scaleBaked?.some(x=>x!==1)&&(y=new Se().makeScale(...e.scaleBaked)),t&&(y?y.premultiply(t):y=t);let b=y?Re.alloc_subdivision_surface2(g,o,g+p,l,g+p+r.length*Uint32Array.BYTES_PER_ELEMENT,h,y.elements):Re.alloc_subdivision_surface(g,o,g+p,l,g+p+r.length*Uint32Array.BYTES_PER_ELEMENT,h);return Re._free(g),b}static buildLevel(e,t,i,r,s){let n=s?Re.get_mesh_data2(e,t?Re.Level.CONTROL:Re.Level.REFINED,i,s.elements):Re.get_mesh_data(e,t?Re.Level.CONTROL:Re.Level.REFINED,i),a=8,o=Re.HEAPU32.subarray(n>>2,(n>>2)+a),l=o.subarray(4,4+4),h=0,u=Re.HEAPU32[o[h]>>2],c=Re.HEAPF32.subarray(u>>2,(u>>2)+l[h]);h++;let d=Re.HEAPU32[o[h]>>2],p=Re.HEAPF32.subarray(d>>2,(d>>2)+l[h]);h++;let m=Re.HEAPU32[o[h]>>2],g=Re.HEAPU32.subarray(m>>2,(m>>2)+l[h]);h++;let f=Re.HEAPU32[o[h]>>2],v=Re.HEAPU32.subarray(f>>2,(f>>2)+l[h]);if(h++,r===void 0){let y=new ke;if(y.setIndex(new Fl(v,1)),y.setAttribute("position",new Ee(c,3)),y.setAttribute("normal",new Ee(p,3)),t){y.setAttribute("faceMap",new Fl(g,1));let b=new Float32Array(p.length/3*4).fill(0);y.setAttribute("color",new Qe(b,4))}return Re.free_mesh_data(n),y.userData.type="SubdivGeometry",y}r.getAttribute("position").copyArray(c),r.getAttribute("normal").copyArray(p),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,Re.free_mesh_data(n)}static freeSubdivPointer(e){Re.free_bvh(e),Re.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,i){let r=Re.get_wireframe_data_for_base_level(e),s=4,n=Re.HEAPU32.subarray(r>>2,(r>>2)+s),a=n.subarray(2,2+2),o=0,l=Re.HEAPU32[n[o]>>2],h=Re.HEAPF32.subarray(l>>2,(l>>2)+a[o]);o++;let u=Re.HEAPU32[n[o]>>2],c=Re.HEAPU32.subarray(u>>2,(u>>2)+a[o]);if(t===void 0){let d=new ke;d.setAttribute("position",new Ee(h,3));let p=new Float32Array(h.length);for(let m=0,g=h.length;m<g;)p[m++]=i.r,p[m++]=i.g,p[m++]=i.b;return d.setAttribute("color",new Qe(p,3)),d.setIndex(new Fl(c,1)),Re.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(h),t.attributes.position.needsUpdate=!0,Re.free_wireframe_data_for_base_level(r)}static updateCollabMesh(e,t,i){let r=t===0;r||Re.set_destination_refinement_level(e,t);let s=i?Re.get_topological_data2(e,r?Re.Level.CONTROL:Re.Level.REFINED,i.elements):Re.get_topological_data(e,r?Re.Level.CONTROL:Re.Level.REFINED),n=6,a=Re.HEAPU32.subarray(s>>2,(s>>2)+n),o=a.subarray(3,3+3),l=0,h=Re.HEAPU32[a[l]>>2],u=new Float32Array(Re.HEAPF32.subarray(h>>2,(h>>2)+o[l]));l++;let c=Re.HEAPU32[a[l]>>2],d=new Uint32Array(Re.HEAPU32.subarray(c>>2,(c>>2)+o[l]));l++;let p=Re.HEAPU32[a[l]>>2],m=new Uint8Array(Re.HEAPU32.subarray(p>>2,(p>>2)+o[l]));return Re.free_topological_data(s),{positions:u,indices:d,verticesPerFace:m}}},hx=["getX","getY","getZ"];function Gg(e,t){let i={},r=t?t.count:e.count,s=0,n=[],a=[],o=1e4;for(let h=0;h<r;h++){let u=t?t.getX(h):h,c="";for(let d=0;d<3;d++)c+=`${~~(e[hx[d]](u)*o)},`;if(c in i)n.push(i[c]);else{for(let d=0;d<3;d++)a.push(e[hx[d]](u));i[c]=s,n.push(s),s++}}let l=[];for(let h=0;h<n.length;h+=3)n[h]===n[h+1]||n[h]===n[h+2]||n[h+1]===n[h+2]||l.push(n[h],n[h+1],n[h+2]);return{positions:a,triIndices:l}}var Pc=new M,Vp=new M,Wp=new M,Xp=new M;function K_(e,t,i,r){let s=[],n=[];if(i.userData.shape!==void 0&&i.userData.parameters.depth===0&&i.userData.shape.shapeHoles.length===0){let a=i.userData.shape.extractShapePointsToFlatArray([]),o=i.userData.parameters.spikes;if(i.userData.type==="EllipseGeometry"&&o<=24&&o%4===0&&i.userData.parameters.angle>=360){let u=a.length/2/o;a=a.filter((c,d)=>Math.floor(d/2)%u===0)}let l=0;for(let u=0;u<a.length;u+=2)l+=(a[u]-a[(u===0?a.length:u)-2])*(a[u+1]+a[(u===0?a.length:u)-1]);e.length=0;let h=0;if(l<0)for(let u=0;u<a.length;u+=2)e.push(a[u],a[u+1],0),s.push(h++);else for(let u=a.length-2;u>=0;u-=2)e.push(a[u],a[u+1],0),s.push(h++);return n.push(h),{indices:s,verticesPerFace:n}}for(let a=0,o=i.capStartIndex??t.length;a<o;)if(t[a+1]===t[a+3]&&t[a+2]===t[a+5]||t[a+0]===t[a+3]&&t[a+2]===t[a+4]){Pc.set(e[t[a]*3],e[t[a]*3+1],e[t[a]*3+2]),Vp.set(e[t[a+1]*3],e[t[a+1]*3+1],e[t[a+1]*3+2]),Wp.set(e[t[a+4]*3],e[t[a+4]*3+1],e[t[a+4]*3+2]),Xp.set(e[t[a+5]*3],e[t[a+5]*3+1],e[t[a+5]*3+2]),Vp.sub(Pc).normalize(),Wp.sub(Pc).normalize(),Xp.sub(Pc).normalize();let l=Vp.cross(Wp).dot(Xp);Math.abs(l)>.005||r&&r.some((h,u)=>u%2===1?!1:a>=r[u]&&a<r[u+1])?(s.push(t[a],t[a+1],t[a+2]),n.push(3),a+=3):(s.push(t[a],t[a+1],t[a+4],t[a+5]),n.push(4),a+=6)}else s.push(t[a],t[a+1],t[a+2]),n.push(3),a+=3;if(i.capStartIndex!==void 0){let a=[],o=[],l=0,h=new Float32Array([i.userData.parameters.depth])[0];for(let u=0,c=0;u<e.length;u+=3,c++)e[u+2]===0&&(a.push(c),l++),e[u+2]===h&&o.push(c);if(i.userData.parameters.extrudeBevelSize===0){let u=o[0];o[0]=o[1],o[1]=u}a.reverse(),s.push(...a,...o),n.push(l,l)}return{indices:s,verticesPerFace:n}}var $s={};d2($s,{calcBoolean:()=>t6,calcBooleanTopological:()=>e6,freeMeshSet:()=>s6,getMeshSet:()=>i6,transformMeshSet:()=>r6});var J_,KU=new Promise(e=>{J_=e}),cx=!1;async function JU(){if(cx)return;let e=aa?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.213/build",[t,i]=await Promise.all([import("./boolean.js"),fetch(`${e}/boolean.wasm`).then(n=>n.arrayBuffer())]),r=t.default,s=await r({wasmBinary:i});J_(s),cx=!0}var it,vo;KU.then(e=>it=e);function $U(e,t,i){let r,{positions:s,triIndices:n}=Gg(e.getAttribute("position"),e.getIndex()),a;if(t&&i){let{indices:o,verticesPerFace:l}=K_(s,n,e);a=l.length,r=[];for(let h=0,u=0;h<a;h++){r.push(l[h]);for(let c=0;c<l[h];c++)r.push(o[u++])}}else{let o=n.length;r=Array(o+o/3),a=0;for(let l=0,h=0;h<r.length;)r[h++]=3,a++,r[h++]=n[l++],r[h++]=n[l++],r[h++]=n[l++]}return{positions:s,faceIndices:r,nFaces:a}}function $_(e){let t=e.length,i=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,s=Number.isInteger(e[0])?i:r,n=it._malloc(s);return(Number.isInteger(e[0])?new Uint32Array(it.HEAPU32.buffer,n,t):new Float32Array(it.HEAPF32.buffer,n,t)).set(e,0),n}function eS(e){switch(e){case 0:return it.OP.UNION;case 1:return it.OP.INTERSECTION;case 2:return it.OP.A_MINUS_B;case 3:return it.OP.B_MINUS_A;case 4:return it.OP.SYMMETRIC_DIFFERENCE;case 5:return it.OP.ALL;default:throw new Error("Unknown boolean operation "+e)}}function e6(e,t){vo===void 0&&(vo=it.init_csg());let i=$_(e),r=it.csg_calc_topological(vo,i,e.length,eS(t));it._free(i);let s=6,n=it.HEAPU32.subarray(r>>2,(r>>2)+s),a=n.subarray(3,3+3),o=0,l=it.HEAPU32[n[o]>>2],h=new Float32Array(it.HEAPF32.subarray(l>>2,(l>>2)+a[o]));o++;let u=it.HEAPU32[n[o]>>2],c=new Uint32Array(it.HEAPU32.subarray(u>>2,(u>>2)+a[o]));o++;let d=it.HEAPU32[n[o]>>2],p=new Uint8Array(it.HEAPU32.subarray(d>>2,(d>>2)+a[o]));return it.free_mesh_data(r),{positions:h,indices:c,verticesPerFace:p}}function t6(e,t,i,r){vo===void 0&&(vo=it.init_csg());let s=$_(e),n=it.csg_calc(vo,s,e.length,r,eS(t));it._free(s);let a=5,o=it.HEAPU32.subarray(n>>2,(n>>2)+a),l=o.subarray(2,2+3),h=0,u=it.HEAPU32[o[h]>>2],c=it.HEAPF32.subarray(u>>2,(u>>2)+l[h]);h++;let d=it.HEAPU32[o[h]>>2],p=it.HEAPF32.subarray(d>>2,(d>>2)+l[h]);h++;let m=l[h];i.setAttribute("position",new Ee(c,3)),i.setAttribute("normal",new Ee(p,3));let g=it.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return i.boundingSphere===null&&(i.boundingSphere=new pr),i.boundingSphere.center.set(g[0],g[1],g[2]),i.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,i.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},it.free_mesh_data(n),m}function i6(e,t,i){if(it===void 0)return-1;let r,s,n;if(t&&e.userData.positions!==void 0){let f=e.userData;n=f.verticesPerFace.length,r=f.positions,s=Array(f.verticesPerFace.reduce((v,y)=>v+y,0)+n);for(let v=0,y=0,b=0;v<f.verticesPerFace.length;v++){s[b++]=f.verticesPerFace[v];for(let x=0;x<f.verticesPerFace[v];x++)s[b++]=f.indices[y++]}}else({positions:r,faceIndices:s,nFaces:n}=$U(e,t,i));let a=r.length,o=s.length,l=r.length,h=s.length,u=l*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,c=l*Float32Array.BYTES_PER_ELEMENT,d=h*Uint32Array.BYTES_PER_ELEMENT,p=it._malloc(u),m=new Float32Array(it.HEAPF32.buffer,p,l),g=new Uint32Array(it.HEAPU32.buffer,p+c,h);return m.set(r,0),g.set(s,0),it.get_csg_mesh(p,a,p+c,o,n)}function r6(e,t){it.transform_csg_mesh(e,t.elements)}function s6(e){it.free_csg_mesh(e)}var n6={ConeGeometry:kF,CubeGeometry:jF,CylinderGeometry:UF,DodecahedronGeometry:GF,EllipseGeometry:vU,HelixGeometry:wU,IcosahedronGeometry:_U,LatheGeometry:SU,NonParametricGeometry:PU,PolygonGeometry:DU,PyramidGeometry:OU,RectangleGeometry:BU,SphereGeometry:RU,PlaneGeometry:NU,BackdropGeometry:zU,StarGeometry:UU,TextFrameGeometry:kU,TorusGeometry:jU,TorusKnotGeometry:GU,TriangleGeometry:VU,VectorGeometry:ua},dx=e=>n6[e.type].create(e);function ml(e){return e!==null&&"booleanOp"in e}var tS=class extends R_(Xi){constructor(){super(...arguments),this.booleanMeshSetAddress=-1,this.booleanWasTransformed=!1,this.booleanMatrixInvOld=new Se}updateVisible(){super.updateVisible(),this.visible=!ml(this.parent)&&this.visible,ml(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&($s.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ml(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof tS&&(e.freeBooleanPointer(),ml(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&ml(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}},Dc=new Gt;function iS(e,t=0,i=e.count,r,s){let n=1/0,a=1/0,o=1/0,l=-1/0,h=-1/0,u=-1/0;for(let c=t;c<i;c++){let d=e.getX(c),p=e.getY(c),m=e.getZ(c);d<n&&(n=d),p<a&&(a=p),m<o&&(o=m),d>l&&(l=d),p>h&&(h=p),m>u&&(u=m)}Dc.min.set(n,a,o),Dc.max.set(l,h,u),Dc.getCenter(r),Dc.getSize(s).multiplyScalar(.5)}var a6=new ke,o6=new gh,Zi=class extends tS{constructor(e,t){super(a6,o6),this.super_Entity(e,t)}updateState(e,t){this.updateState_Entity(e,t)}updateEntityBoxSize(e,t){let i=this.geometry.getAttribute("position");i!==void 0?iS(i,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:i.count,e,t):super.updateEntityBoxSize(e,t)}},ux=class{constructor(e){e=e??{},this.name=e.name,this.type=e.type,this.node=e.node,this.size=e.size,this.needsUpdate=e.needsUpdate}get value(){return this.node.value}set value(e){this.node.value=e}},wn=class{constructor(e){this.hashProperties=void 0,this.isNode=!0,this.shortcuts={},this.uuid=rt.generateUUID(),this.type=e,this.name=""}analyze(e,t){t=t??{},e.analyzing=!0,this.build(e.addFlow(t.slot,t.cache,t.context),"v4"),e.clearVertexNodeCode(),e.clearFragmentNodeCode(),e.removeFlow(),e.analyzing=!1}analyzeAndFlow(e,t,i){return i=i??{},this.analyze(e,i),this.flow(e,t,i)}flow(e,t,i){i=i??{},e.addFlow(i.slot,i.cache,i.context);let r={result:this.build(e,t),code:e.clearNodeCode(),extra:e.context.extra};return e.removeFlow(),r}build(e,t,i){t=t??this.getType(e,t);let r=e.getNodeData(i??this);return e.analyzing&&this.appendDepsNode(e,r,t),e.nodes.indexOf(this)===-1&&e.nodes.push(this),this.updateFrame!==void 0&&e.updaters.indexOf(this)===-1&&e.updaters.push(this),this.generate(e,t,i)}updateFrame(e){}generateReadonly(e,t,i,r,s,n){return""}generate(e,t,i,r,s){return""}parse(e,t,i,r){}appendDepsNode(e,t,i){t.deps=(t.deps||0)+1;let r=e.getTypeLength(i);(r>(t.outputMax||0)||this.getType(e,i))&&(t.outputMax=r,t.output=i)}setName(e){this.name=e}getName(){return this.name}getType(e,t){return t==="sampler2D"||t==="samplerCube"?t:this.type}getHash(){let e="{",t,i;for(t in this)i=this[t],i instanceof wn&&(e+='"'+t+'":'+i.getHash()+",");if(this.hashProperties)for(let r=0;r<this.hashProperties.length;r++)t=this.hashProperties[r],i=this[t],e+='"'+t+'":"'+String(i)+'",';return e+='"id":"'+this.uuid+'"}',e}},l6=class{constructor(){this.nodes={},this.keywords={}}add(e){this.nodes[e.name]=e}addKeyword(e,t,i){i=i!==void 0?i:!0,this.keywords[e]={callback:t,cache:i}}remove(e){delete this.nodes[e.name]}removeKeyword(e){delete this.keywords[e]}get(e){return this.nodes[e]}getKeyword(e,t){return this.keywords[e].callback(t)}getKeywordData(e){return this.keywords[e]}contains(e){return this.nodes[e]!==void 0}containsKeyword(e){return this.keywords[e]!==void 0}},Li=new l6,xt=class extends wn{constructor(e,t){super(e),this.scope="",t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,i,r){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=rt.generateUUID()),i=e.getUUID(i??this.getUUID(),!s);let n=e.getNodeData(i),a=n.output||this.getType(e);if(e.analyzing)return(n.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,n,t),this.generate(e,t,i)):super.build(e,t,i);if(s)return n.name=n.name||super.build(e,t,i),n.name;if(!this.getLabel()&&(!this.getShared(e,a)||e.context.ignoreCache||n.deps===1))return super.build(e,t,i);i=this.getUUID(!1);let o=this.getTemp(e,i);if(o)return e.format(o,a,t);{o=super.generate(e,t,i,n.output,r);let l=this.generate(e,a,i);return e.addNodeCode(o+" = "+l+";"),e.format(o,a,t)}}return super.build(e,t,i)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let i=e.getVars()[t];return i?i.name:void 0}generate(e,t,i,r,s){return this.getShared(e,t)||console.error("TempNode is not shared"),i=i??this.uuid,e.getTempVar(i,r??this.getType(e),s,this.getLabel()).name}},Ki=class extends xt{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1,super(e,t),this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,i,r,s,n){i=e.getUUID(i??this.getUUID()),r=r??this.getType(e);let a=e.getNodeData(i);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,i,r,s,n):e.isShader("vertex")?(a.vertex||(a.vertex=e.createVertexUniform(r,this,s,n,this.getLabel())),e.format(a.vertex.name,r,t)):(a.fragment||(a.fragment=e.createFragmentUniform(r,this,s,n,this.getLabel())),e.format(a.fragment.name,r,t))}},nr=class extends Ki{constructor(e=0,t){super("v2"),this.nodeType="Vector2",this.value=e instanceof H?e:new H(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,i,r,s,n){return e.format("vec2("+this.value.x+", "+this.value.y+")",r,t)}},ir=class extends Ki{constructor(e=0,t,i){super("v3"),this.nodeType="Vector3",this.value=e instanceof M?e:new M(e,t,i)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,i,r,s,n){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",r,t)}},Ni=class extends Ue{constructor(e,t,i,r){super(e,t,i),this.isColorA=!0,this.a=r}setRGBA(e,t,i,r){super.setRGB(e,t,i),this.a=r}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let i;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(i=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let r,s=i[1],n=i[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(n))return this.a=parseFloat(r[4]),super.setStyle(e,t);if(r=/^\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(n))return this.a=parseFloat(r[4]),super.setStyle(e,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(n))return this.a=parseFloat(r[4]),super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}},jn=class extends Ki{constructor(e){super("v4"),this.nodeType="Vector4",this.value=e instanceof Ni?e:new Ni(e.r,e.g,e.b,e.a)}generateReadonly(e,t,i,r,s,n){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",r,t)}},h6=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,px=/[a-z_0-9]+/gi,Le=class extends xt{constructor(e,t,i,r,s){super(s),this.src="",this.nodeType="Function",this.useKeywords=!0,this.includes=[],this.extensions={},this.keywords={},this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,i,r)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,i,r,s){let n,a=0,o=this.src;if(this.includes)for(let h=0;h<this.includes.length;h++)e.include(this.includes[h],this);for(let h in this.extensions)e.extensions[h]=!0;let l=[];for(;n=px.exec(this.src);)l.push(n);for(let h=0;h<l.length;h++){let u=l[h],c=u[0],d=this.isMethod?!this.getInputByName(c):!0,p=c;if(this.keywords[c]||this.useKeywords&&d&&Li.containsKeyword(c)){let m=this.keywords[c];if(!m){let g=Li.getKeywordData(c);g.cache&&(m=e.keywords[c]),m=m||Li.getKeyword(c,e),g.cache&&(e.keywords[c]=m)}p=m.build(e)}c!==p&&o[u.index+a-1]!=="."&&(o=o.substring(0,u.index+a)+p+o.substring(u.index+c.length+a),a+=p.length-c.length),this.getIncludeByName(p)===void 0&&Li.contains(p)&&e.include(Li.get(p))}return t==="source"?o:this.isMethod?(this.isInterface||e.include(this,void 0,o),this.name):e.format("( "+o+" )",this.getType(e),t)}parse(e,t,i,r){if(this.src=e||"",this.includes=t??[],this.extensions=i??{},this.keywords=r??{},this.isMethod){let s=h6.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let n=s[3].match(px);if(n){let a=0;for(;a<n.length;){let o=n[a++],l;o==="in"||o==="out"||o==="inout"?l=n[a++]:(l=o,o="");let h=n[a++];this.inputs.push({name:h,type:l,qualifier:o})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}},c6=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,rS=class extends xt{constructor(e="",t){super(),this.src="",this.useDefine=!1,this.nodeType="Const",this.parse(e||rS.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,i,r,s){this.src=e||"";let n,a,o="",l=c6.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(a=l[1],n=l[2],o=l[3]):(n=this.src,a="f"),this.name=n,this.type=a,this.value=o}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,i,r,s){return e.format(this.name,this.getType(e),t)}},gt=rS;gt.PI="PI",gt.PI2="PI2",gt.RECIPROCAL_PI="RECIPROCAL_PI",gt.RECIPROCAL_PI2="RECIPROCAL_PI2",gt.LOG2="LOG2",gt.EPSILON="EPSILON";var d6=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
3140
3140
|
)*?)}`,"gim"),u6=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),sS=class extends xt{constructor(e=""){super(),this.inputs=[],this.src="",this.nodeType="Struct",this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,i,r,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=d6.exec(e);if(t){let i=t[2],r;for(;r=u6.exec(i);)this.inputs.push({type:r[1],name:r[2]});this.name=t[1]}else this.name="";this.type=this.name}},Vg=class extends xt{constructor(e){super("v2",{shared:!1}),this.nodeType="UV",this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let i=this.index>0?this.index+1:"",r=e.isShader("vertex")?"uv"+i:"vUv"+i;return e.format(r,this.getType(e),t)}};Li.addKeyword("uv",function(){return new Vg});Li.addKeyword("uv2",function(){return new Vg(1)});var qa=class extends xt{constructor(e,t){super("v4"),this.nodeType="ColorSpace",this.input=e,this.method=t??qa.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case as:return["Linear"];case et:return["sRGB"];default:return[]}}generate(e,t){let i=this.input.build(e,"v4"),r=this.getType(e),s=qa.Nodes[this.method],n=e.include(s);if(n===qa.LINEAR_TO_LINEAR)return e.format(i,r,t);if(s.inputs?.length===2){let a=this.factor.build(e,"f");return e.format(n+"( "+i+", "+a+" )",r,t)}else return e.format(n+"( "+i+" )",r,t)}fromEncoding(e){let t=qa.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=qa.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},$r=qa;$r.Nodes={LinearToLinear:new Le(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
@@ -4910,7 +4910,7 @@ gl_FragColor = vec4(resultColor, vColor.r);
|
|
|
4910
4910
|
}
|
|
4911
4911
|
`,$p=new Qt({vertexShader:Jk,fragmentShader:$k,uniforms:{depthContrast:{value:1}}}),Pm=new gh;Pm.wireframe=!0;var kx=new M,WS=class extends Kn{constructor(e,t){super(),this.data=e,this.backupFog=new tw(16777215,.1,2e3),this.fogUseBGColor=!1,this.enableHelpers=!1,this.wireframeState=!1,this.needsTransmissionDirty=!0,this.needsNormalDirty=!0,this._needsTransmission=!1,this._needsNormal=!1,this.geometryCacheChanged=!1,this.bgColor=new Ni(1,1,1,1),this.entityByUuid={},this.entityIdentityToEntity={},this.toExpandCloner=new Set,this.toUpdateCloner=new Set,this.needsRecomputeInstances=!1,this.ambientLight=new oD(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Hk(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=jk(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),i=this.entityIdentityToEntity[t];i&&(e.uuid=i.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let i=[],r=t;for(;r!==this;){let s=r;r=r.parent;let n=r.children.indexOf(s);i.splice(0,0,n)}return{entity:t,sortKey:i}}getAllSorted(e){let t=[];for(let i of e){let r=this.getWithSortKey(i.id);r!==void 0&&t.push(r)}return t.sort((i,r)=>Az(i.sortKey,r.sortKey)),t.map(i=>i.entity)}nonExistOrDescendantOf(e,t){let i=this.find(e);if(i===void 0)return!0;for(;i;){if(i.uuid===t)return!0;i=i.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner()}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let i=e.parent===null?this:this.find(e.parent);if(i===void 0)throw new Error("unexpected");let r=this.createObject(e.id,e.data,e.children,i,e.localIndex,t);r.updateVisible(),r.resetBBoxNeedsUpdate(),Es(r)&&cn(r.parent)&&(r.invalidateUpstreamBooleanData(),r.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(r),this.markToExpandCloner(r)}else if(e.path.length===0&&e.type===8){let i=this.find(e.id);if(i===void 0)throw new Error("unexpected");this.markToExpandCloner(i),i.resetBBoxNeedsUpdate(),this.unregisterObject(i);let r=i.parent;this.markNeedsRecomputeInstancesForAncessors(r),this.markNeedsRecomputeInstancesForChildren(i),i.parent.remove(i),cn(i.parent)&&(i.parent.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Es(i)&&(i.freeBooleanPointer(),r instanceof Po&&r.invalidateDownstreamBooleanData().recomputeBoolean()),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i)}else if(e.path.length===0&&e.type===9){let i=this.find(e.id);if(i===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(i);let r=i.parent;this.markNeedsRecomputeInstancesForAncessors(r),i.cloner?.resetOnMove(),this.markToExpandCloner(i);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(i),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(i),i.invalidateClonerTransform(i),i.updateVisible(),i.resetBBoxNeedsUpdate();let n=e.localIndex;s.children.splice(n,0,s.children.pop()),Es(i)&&(i.invalidateUpstreamBooleanData(),cn(i.parent)?i.parent.invalidateDownstreamBooleanData().recomputeBoolean():r instanceof Po&&r.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,i,r){if(t.type===0&&(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props)){let{states:n,rest:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}let s=this.find(e);if(s)try{kk(s,t,i,{scene:this,shared:r}),s instanceof Or&&s.updateGeometryGroupsIfNeeded()}catch(n){console.error(n)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(qi(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let i=this.find(e.publish.playCamera);i instanceof Ls&&this.switchActiveCamera(i)}this.expandInstances(t,!0),this.traverseEntity(i=>{cn(i)&&i.recomputeBoolean()}),this.doPendingExpandCloner()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ft.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ft.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,i,r,s,n,a){e&&e!==r.uuid&&r.find(e)&&s.forInstancesRec(o=>{o.isInstanceRoot||(o.data=_d(o.data,l=>{let h=l.events.data(a.id),u=o.goUp(n);if(u){let c=[...E_(u.identity),e].join("-"),d=this.entityIdentityToEntity[c];if(d){let p=d.uuid;ss.zoom(h,t)[i]=p}else{if(aa)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof bo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,i)=>{t.data.events.forEach(r=>{r.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=_d(s.data,n=>{n.events.delete(r.id)}).data)}):r.data.type==="Conditional"?(r.data.condition.type==="Distance"?(this.relativeizeInner(r.data.condition.fromObject,["condition"],"fromObject",e,t,i,r),this.relativeizeInner(r.data.condition.toObject,["condition"],"toObject",e,t,i,r)):r.data.condition.type==="State"?this.relativeizeInner(r.data.condition.object,["condition"],"object",e,t,i,r):r.data.condition.type==="Comparison"&&(r.data.condition.lOperand.type==="Property"&&this.relativeizeInner(r.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,i,r),r.data.condition.rOperand.type==="Property"&&this.relativeizeInner(r.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,i,r)),r.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,i,r)}),r.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,i,r)})):"actions"in r.data&&r.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,i,r)})})}),!0})}expandInstances(e,t){let i=new Set;this.traverseEntity(r=>{if(r instanceof bo&&r.isInstanceRoot)return r.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||r.resetBBoxNeedsUpdate(),!0});for(let r of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(r),Kg(r)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof bo&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let i=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[i]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[i]),t.dispose()})}clearScene(){for(let e of this.children)Wi(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Ls(WS.PERSONAL_CAMERA_ID,{...Dd.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],i=r=>{for(let s of r.children)Wi(s)&&!s.raycastLock&&s.visible&&((Es(s)||Lk(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Xk(s,e,t)),i(s))};return i(this),t}forEachEntity(e){for(let t of this.children)Wi(t)&&e(t)}traverseEntity(e){for(let t of this.children)Wi(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)jd.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Wi(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=qi(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=qi(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=qi(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,i){let r=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,r,i),r+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,i,r,s,n){let a={scene:this,shared:n},o=Jg(e,t,a);return o&&(this.entityByUuid[e]=o,r.add(o),r.children.splice(s,0,r.children.pop()),i.length>0&&(o.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(i,o,n)),o.updateState(t,a),o instanceof Or&&o.updateGeometryGroupsIfNeeded(),o.updateVisible(),o.cloner&&this.toExpandCloner.add(o)),o}getCenter(e){let t=[];for(let r=0,s=e.length;r<s;++r){let{id:n,recursive:a}=e[r],o=this.find(n),l=a?o.recursiveBBox:o.singleBBox;t.push(...l.vertices)}let i=new Gt;return i.setFromPoints(t),i.getCenter(kx),kx}copyMatrixWorld(e,t){if(e===null){t.identity();return}let i=this.find(e);i?t.copy(i.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let i=this.find(e)?.parent;i?t.copy(i.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Zi)if(Array.isArray(t.material))for(let i=0;i<t.material.length;i++)t.material[i]instanceof xn&&e(t.material[i]);else t.material instanceof xn&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let i,r;e>=t?(i=t/e,r=1):(i=1,r=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(n=>{n.uniforms[`f${n.id}_aspectRatio`].value.x=i,n.uniforms[`f${n.id}_aspectRatio`].value.y=r})})}},bu=WS;bu.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var id=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return Math.sqrt(i*i+r*r)},e8=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return i8(Math.atan2(r,i))},t8=(e,t,i)=>{let r={x:0,y:0};return i=Dm(i),r.x=e.x-t*Math.cos(i),r.y=e.y-t*Math.sin(i),r},Dm=e=>e*(Math.PI/180),i8=e=>e*(180/Math.PI),r8=e=>isNaN(e.buttons)?e.pressure!==0:e.buttons!==0,ef=new Map,jx=e=>{ef.has(e)&&clearTimeout(ef.get(e)),ef.set(e,setTimeout(e,100))},Yd=(e,t,i)=>{let r=t.split(/[ ,]+/g),s;for(let n=0;n<r.length;n+=1)s=r[n],e.addEventListener?e.addEventListener(s,i,!1):e.attachEvent&&e.attachEvent(s,i)},Hx=(e,t,i)=>{let r=t.split(/[ ,]+/g),s;for(let n=0;n<r.length;n+=1)s=r[n],e.removeEventListener?e.removeEventListener(s,i):e.detachEvent&&e.detachEvent(s,i)},XS=e=>(e.preventDefault(),e.type.match(/^touch/)?e.changedTouches:e),Gx=()=>{if(typeof window>"u")return;let e=window.pageXOffset!==void 0?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,t=window.pageYOffset!==void 0?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;return{x:e,y:t}},Om=(e,t)=>{t.top||t.right||t.bottom||t.left?(e.style.top=t.top,e.style.right=t.right,e.style.bottom=t.bottom,e.style.left=t.left):(e.style.left=t.x+"px",e.style.top=t.y+"px")},$g=(e,t,i)=>{let r=YS(e);for(let s in r)if(r.hasOwnProperty(s))if(typeof t=="string")r[s]=t+" "+i;else{let n="";for(let a=0,o=t.length;a<o;a+=1)n+=t[a]+" "+i+", ";r[s]=n.slice(0,-2)}return r},s8=(e,t)=>{let i=YS(e);for(let r in i)i.hasOwnProperty(r)&&(i[r]=t);return i},YS=e=>{let t={};return t[e]="",["webkit","Moz","o"].forEach(function(i){t[i+e.charAt(0).toUpperCase()+e.slice(1)]=""}),t},tf=(e,t)=>{for(let i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},n8=(e,t)=>{let i={};for(let r in e)e.hasOwnProperty(r)&&t.hasOwnProperty(r)?i[r]=t[r]:e.hasOwnProperty(r)&&(i[r]=e[r]);return i},Lm=(e,t)=>{if(e.length)for(let i=0,r=e.length;i<r;i+=1)t(e[i]);else t(e)},a8=(e,t,i)=>({x:Math.min(Math.max(e.x,t.x-i),t.x+i),y:Math.min(Math.max(e.y,t.y-i),t.y+i)});typeof window<"u"&&(qS="ontouchstart"in window,QS=!!window.PointerEvent,ZS=!!window.MSPointerEvent);var qS,QS,ZS,xl={touch:{start:"touchstart",move:"touchmove",end:"touchend, touchcancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup, pointercancel"},MSPointer:{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}},so,dh={};QS?so=xl.pointer:ZS?so=xl.MSPointer:qS?(so=xl.touch,dh=xl.mouse):so=xl.mouse;function pa(){}pa.prototype.on=function(e,t){var i=this,r=e.split(/[ ,]+/g),s;i._handlers_=i._handlers_||{};for(var n=0;n<r.length;n+=1)s=r[n],i._handlers_[s]=i._handlers_[s]||[],i._handlers_[s].push(t);return i};pa.prototype.off=function(e,t){var i=this;return i._handlers_=i._handlers_||{},e===void 0?i._handlers_={}:t===void 0?i._handlers_[e]=null:i._handlers_[e]&&i._handlers_[e].indexOf(t)>=0&&i._handlers_[e].splice(i._handlers_[e].indexOf(t),1),i};pa.prototype.trigger=function(e,t){var i=this,r=e.split(/[ ,]+/g),s;i._handlers_=i._handlers_||{};for(var n=0;n<r.length;n+=1)s=r[n],i._handlers_[s]&&i._handlers_[s].length&&i._handlers_[s].forEach(function(a){a.call(i,{type:s,target:i},t)})};pa.prototype.config=function(e){var t=this;t.options=t.defaults||{},e&&(t.options=n8(t.options,e))};pa.prototype.bindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{},i._domHandlers_[t]=function(){typeof i["on"+t]=="function"?i["on"+t].apply(i,arguments):console.warn('[WARNING] : Missing "on'+t+'" handler.')},Yd(e,so[t],i._domHandlers_[t]),dh[t]&&Yd(e,dh[t],i._domHandlers_[t]),i};pa.prototype.unbindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{},Hx(e,so[t],i._domHandlers_[t]),dh[t]&&Hx(e,dh[t],i._domHandlers_[t]),delete i._domHandlers_[t],this};var ev=pa;function Zt(e,t){return this.identifier=t.identifier,this.position=t.position,this.frontPosition=t.frontPosition,this.collection=e,this.defaults={size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,mode:"dynamic",zone:document.body,lockX:!1,lockY:!1,shape:"circle"},this.config(t),this.options.mode==="dynamic"&&(this.options.restOpacity=0),this.id=Zt.id,Zt.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}Zt.prototype=new ev;Zt.constructor=Zt;Zt.id=0;Zt.prototype.buildEl=function(e){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement("div"),this.ui.back=document.createElement("div"),this.ui.front=document.createElement("div"),this.ui.el.className="nipple collection_"+this.collection.id,this.ui.back.className="back",this.ui.front.className="front",this.ui.el.setAttribute("id","nipple_"+this.collection.id+"_"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)};Zt.prototype.stylize=function(){if(this.options.dataOnly)return this;var e=this.options.fadeTime+"ms",t=s8("borderRadius","50%"),i=$g("transition","opacity",e),r={};return r.el={position:"absolute",opacity:this.options.restOpacity,display:"block",zIndex:999},r.back={position:"absolute",display:"block",width:this.options.size+"px",height:this.options.size+"px",marginLeft:-this.options.size/2+"px",marginTop:-this.options.size/2+"px",background:"rgba(255, 255, 255, .4)",border:"solid 2px rgba(0, 0, 0, .1)"},r.front={width:this.options.size/2+"px",height:this.options.size/2+"px",position:"absolute",display:"block",marginLeft:-this.options.size/4+"px",marginTop:-this.options.size/4+"px",background:"rgba(255, 255, 255, .8)",border:"solid 2px rgba(0, 0, 0, .1)"},tf(r.el,i),this.options.shape==="circle"&&tf(r.back,t),tf(r.front,t),this.applyStyles(r),this};Zt.prototype.applyStyles=function(e){for(var t in this.ui)if(this.ui.hasOwnProperty(t))for(var i in e[t])this.ui[t].style[i]=e[t][i];return this};Zt.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)};Zt.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)};Zt.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger("destroyed",this.instance),this.removeFromDom(),this.off()};Zt.prototype.show=function(e){var t=this;return t.options.dataOnly||(clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.addToDom(),t.restCallback(),setTimeout(function(){t.ui.el.style.opacity=1},0),t.showTimeout=setTimeout(function(){t.trigger("shown",t.instance),typeof e=="function"&&e.call(this)},t.options.fadeTime)),t};Zt.prototype.hide=function(e){var t=this;if(t.options.dataOnly)return t;if(t.ui.el.style.opacity=t.options.restOpacity,clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.removeTimeout=setTimeout(function(){var i=t.options.mode==="dynamic"?"none":"block";t.ui.el.style.display=i,typeof e=="function"&&e.call(t),t.trigger("hidden",t.instance)},t.options.fadeTime),t.options.restJoystick){let i=t.options.restJoystick,r={};r.x=i===!0||i.x!==!1?0:t.instance.frontPosition.x,r.y=i===!0||i.y!==!1?0:t.instance.frontPosition.y,t.setPosition(e,r)}return t};Zt.prototype.setPosition=function(e,t){var i=this;i.frontPosition={x:t.x,y:t.y};var r=i.options.fadeTime+"ms",s={};s.front=$g("transition",["top","left"],r);var n={front:{}};n.front={left:i.frontPosition.x+"px",top:i.frontPosition.y+"px"},i.applyStyles(s),i.applyStyles(n),i.restTimeout=setTimeout(function(){typeof e=="function"&&e.call(i),i.restCallback()},i.options.fadeTime)};Zt.prototype.restCallback=function(){var e=this,t={};t.front=$g("transition","none",""),e.applyStyles(t),e.trigger("rested",e.instance)};Zt.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}};Zt.prototype.computeDirection=function(e){var t=e.angle.radian,i=Math.PI/4,r=Math.PI/2,s,n,a;if(t>i&&t<i*3&&!e.lockX?s="up":t>-i&&t<=i&&!e.lockY?s="left":t>-i*3&&t<=-i&&!e.lockX?s="down":e.lockY||(s="right"),e.lockY||(t>-r&&t<r?n="left":n="right"),e.lockX||(t>0?a="up":a="down"),e.force>this.options.threshold){var o={},l;for(l in this.direction)this.direction.hasOwnProperty(l)&&(o[l]=this.direction[l]);var h={};this.direction={x:n,y:a,angle:s},e.direction=this.direction;for(l in o)o[l]===this.direction[l]&&(h[l]=!0);if(h.x&&h.y&&h.angle)return e;(!h.x||!h.y)&&this.trigger("plain",e),h.x||this.trigger("plain:"+n,e),h.y||this.trigger("plain:"+a,e),h.angle||this.trigger("dir dir:"+s,e)}else this.resetDirection();return e};var o8=Zt;function kt(e,t){var i=this;i.nipples=[],i.idles=[],i.actives=[],i.ids=[],i.pressureIntervals={},i.manager=e,i.id=kt.id,kt.id+=1,i.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},i.config(t),(i.options.mode==="static"||i.options.mode==="semi")&&(i.options.multitouch=!1),i.options.multitouch||(i.options.maxNumberOfNipples=1);let r=getComputedStyle(i.options.zone.parentElement);return r&&r.display==="flex"&&(i.parentIsFlex=!0),i.updateBox(),i.prepareNipples(),i.bindings(),i.begin(),i.nipples}kt.prototype=new ev;kt.constructor=kt;kt.id=0;kt.prototype.prepareNipples=function(){var e=this,t=e.nipples;t.on=e.on.bind(e),t.off=e.off.bind(e),t.options=e.options,t.destroy=e.destroy.bind(e),t.ids=e.ids,t.id=e.id,t.processOnMove=e.processOnMove.bind(e),t.processOnEnd=e.processOnEnd.bind(e),t.get=function(i){if(i===void 0)return t[0];for(var r=0,s=t.length;r<s;r+=1)if(t[r].identifier===i)return t[r];return!1}};kt.prototype.bindings=function(){var e=this;e.bindEvt(e.options.zone,"start"),e.options.zone.style.touchAction="none",e.options.zone.style.msTouchAction="none"};kt.prototype.begin=function(){var e=this,t=e.options;if(t.mode==="static"){var i=e.createNipple(t.position,e.manager.getIdentifier());i.add(),e.idles.push(i)}};kt.prototype.createNipple=function(e,t){var i=this,r=i.manager.scroll,s={},n=i.options,a={x:i.parentIsFlex?r.x:r.x+i.box.left,y:i.parentIsFlex?r.y:r.y+i.box.top};if(e.x&&e.y)s={x:e.x-a.x,y:e.y-a.y};else if(e.top||e.right||e.bottom||e.left){var o=document.createElement("DIV");o.style.display="hidden",o.style.top=e.top,o.style.right=e.right,o.style.bottom=e.bottom,o.style.left=e.left,o.style.position="absolute",n.zone.appendChild(o);var l=o.getBoundingClientRect();n.zone.removeChild(o),s=e,e={x:l.left+r.x,y:l.top+r.y}}var h=new o8(i,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:t,position:e,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(Om(h.ui.el,s),Om(h.ui.front,h.frontPosition)),i.nipples.push(h),i.trigger("added "+h.identifier+":added",h),i.manager.trigger("added "+h.identifier+":added",h),i.bindNipple(h),h};kt.prototype.updateBox=function(){var e=this;e.box=e.options.zone.getBoundingClientRect()};kt.prototype.bindNipple=function(e){var t=this,i,r=function(s,n){i=s.type+" "+n.id+":"+s.type,t.trigger(i,n)};e.on("destroyed",t.onDestroyed.bind(t)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)};kt.prototype.pressureFn=function(e,t,i){var r=this,s=0;clearInterval(r.pressureIntervals[i]),r.pressureIntervals[i]=setInterval(function(){var n=e.force||e.pressure||e.webkitForce||0;n!==s&&(t.trigger("pressure",n),r.trigger("pressure "+t.identifier+":pressure",n),s=n)}.bind(r),100)};kt.prototype.onstart=function(e){var t=this,i=t.options,r=e;e=XS(e),t.updateBox();var s=function(n){t.actives.length<i.maxNumberOfNipples?t.processOnStart(n):r.type.match(/^touch/)&&(Object.keys(t.manager.ids).forEach(function(a){if(Object.values(r.touches).findIndex(function(l){return l.identifier===a})<0){var o=[e[0]];o.identifier=a,t.processOnEnd(o)}}),t.actives.length<i.maxNumberOfNipples&&t.processOnStart(n))};return Lm(e,s),t.manager.bindDocument(),!1};kt.prototype.processOnStart=function(e){var t=this,i=t.options,r,s=t.manager.getIdentifier(e),n=e.force||e.pressure||e.webkitForce||0,a={x:e.pageX,y:e.pageY},o=t.getOrCreate(s,a);o.identifier!==s&&t.manager.removeIdentifier(o.identifier),o.identifier=s;var l=function(u){u.trigger("start",u),t.trigger("start "+u.id+":start",u),u.show(),n>0&&t.pressureFn(e,u,u.identifier),t.processOnMove(e)};if((r=t.idles.indexOf(o))>=0&&t.idles.splice(r,1),t.actives.push(o),t.ids.push(o.identifier),i.mode!=="semi")l(o);else{var h=id(a,o.position);if(h<=i.catchDistance)l(o);else{o.destroy(),t.processOnStart(e);return}}return o};kt.prototype.getOrCreate=function(e,t){var i=this,r=i.options,s;return/(semi|static)/.test(r.mode)?(s=i.idles[0],s?(i.idles.splice(0,1),s):r.mode==="semi"?i.createNipple(t,e):(console.warn("Coudln't find the needed nipple."),!1)):(s=i.createNipple(t,e),s)};kt.prototype.processOnMove=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),s=t.nipples.get(r),n=t.manager.scroll;if(!r8(e)){this.processOnEnd(e);return}if(!s){console.error("Found zombie joystick with ID "+r),t.manager.removeIdentifier(r);return}if(i.dynamicPage){var a=s.el.getBoundingClientRect();s.position={x:n.x+a.left,y:n.y+a.top}}s.identifier=r;var o=s.options.size/2,l={x:e.pageX,y:e.pageY};i.lockX&&(l.y=s.position.y),i.lockY&&(l.x=s.position.x);var h=id(l,s.position),u=e8(l,s.position),c=Dm(u),d=h/o,p={distance:h,position:l},m,g;if(s.options.shape==="circle"?(m=Math.min(h,o),g=t8(s.position,m,u)):(g=a8(l,s.position,o),m=id(g,s.position)),i.follow){if(h>o){let b=l.x-g.x,x=l.y-g.y;s.position.x+=b,s.position.y+=x,s.el.style.top=s.position.y-(t.box.top+n.y)+"px",s.el.style.left=s.position.x-(t.box.left+n.x)+"px",h=id(l,s.position)}}else l=g,h=m;var f=l.x-s.position.x,v=l.y-s.position.y;s.frontPosition={x:f,y:v},i.dataOnly||Om(s.ui.front,s.frontPosition);var y={identifier:s.identifier,position:l,force:d,pressure:e.force||e.pressure||e.webkitForce||0,distance:h,angle:{radian:c,degree:u},vector:{x:f/o,y:-v/o},raw:p,instance:s,lockX:i.lockX,lockY:i.lockY};y=s.computeDirection(y),y.angle={radian:Dm(180-u),degree:180-u},s.trigger("move",y),t.trigger("move "+s.id+":move",y)};kt.prototype.processOnEnd=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),s=t.nipples.get(r),n=t.manager.removeIdentifier(s.identifier);!s||(i.dataOnly||s.hide(function(){i.mode==="dynamic"&&(s.trigger("removed",s),t.trigger("removed "+s.id+":removed",s),t.manager.trigger("removed "+s.id+":removed",s),s.destroy())}),clearInterval(t.pressureIntervals[s.identifier]),s.resetDirection(),s.trigger("end",s),t.trigger("end "+s.id+":end",s),t.ids.indexOf(s.identifier)>=0&&t.ids.splice(t.ids.indexOf(s.identifier),1),t.actives.indexOf(s)>=0&&t.actives.splice(t.actives.indexOf(s),1),/(semi|static)/.test(i.mode)?t.idles.push(s):t.nipples.indexOf(s)>=0&&t.nipples.splice(t.nipples.indexOf(s),1),t.manager.unbindDocument(),/(semi|static)/.test(i.mode)&&(t.manager.ids[n.id]=n.identifier))};kt.prototype.onDestroyed=function(e,t){var i=this;i.nipples.indexOf(t)>=0&&i.nipples.splice(i.nipples.indexOf(t),1),i.actives.indexOf(t)>=0&&i.actives.splice(i.actives.indexOf(t),1),i.idles.indexOf(t)>=0&&i.idles.splice(i.idles.indexOf(t),1),i.ids.indexOf(t.identifier)>=0&&i.ids.splice(i.ids.indexOf(t.identifier),1),i.manager.removeIdentifier(t.identifier),i.manager.unbindDocument()};kt.prototype.destroy=function(){var e=this;e.unbindEvt(e.options.zone,"start"),e.nipples.forEach(function(i){i.destroy()});for(var t in e.pressureIntervals)e.pressureIntervals.hasOwnProperty(t)&&clearInterval(e.pressureIntervals[t]);e.trigger("destroyed",e.nipples),e.manager.unbindDocument(),e.off()};var l8=kt;function ei(e){var t=this;t.ids={},t.index=0,t.collections=[],t.scroll=Gx(),t.config(e),t.prepareCollections();var i=function(){var s;t.collections.forEach(function(n){n.forEach(function(a){s=a.el.getBoundingClientRect(),a.position={x:t.scroll.x+s.left,y:t.scroll.y+s.top}})})};if(typeof window>"u")return t.collections;Yd(window,"resize",function(){jx(i)});var r=function(){t.scroll=Gx()};return Yd(window,"scroll",function(){jx(r)}),t.collections}ei.prototype=new ev;ei.constructor=ei;ei.prototype.prepareCollections=function(){var e=this;e.collections.create=e.create.bind(e),e.collections.on=e.on.bind(e),e.collections.off=e.off.bind(e),e.collections.destroy=e.destroy.bind(e),e.collections.get=function(t){var i;return e.collections.every(function(r){return i=r.get(t),!i}),i}};ei.prototype.create=function(e){return this.createCollection(e)};ei.prototype.createCollection=function(e){var t=this,i=new l8(t,e);return t.bindCollection(i),t.collections.push(i),i};ei.prototype.bindCollection=function(e){var t=this,i,r=function(s,n){i=s.type+" "+n.id+":"+s.type,t.trigger(i,n)};e.on("destroyed",t.onDestroyed.bind(t)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)};ei.prototype.bindDocument=function(){var e=this;e.binded||(e.bindEvt(document,"move").bindEvt(document,"end"),e.binded=!0)};ei.prototype.unbindDocument=function(e){var t=this;(!Object.keys(t.ids).length||e===!0)&&(t.unbindEvt(document,"move").unbindEvt(document,"end"),t.binded=!1)};ei.prototype.getIdentifier=function(e){var t;return e?(t=e.identifier===void 0?e.pointerId:e.identifier,t===void 0&&(t=this.latest||0)):t=this.index,this.ids[t]===void 0&&(this.ids[t]=this.index,this.index+=1),this.latest=t,this.ids[t]};ei.prototype.removeIdentifier=function(e){var t={};for(var i in this.ids)if(this.ids[i]===e){t.id=i,t.identifier=this.ids[i],delete this.ids[i];break}return t};ei.prototype.onmove=function(e){var t=this;return t.onAny("move",e),!1};ei.prototype.onend=function(e){var t=this;return t.onAny("end",e),!1};ei.prototype.oncancel=function(e){var t=this;return t.onAny("end",e),!1};ei.prototype.onAny=function(e,t){var i=this,r,s="processOn"+e.charAt(0).toUpperCase()+e.slice(1);t=XS(t);var n=function(o,l,h){h.ids.indexOf(l)>=0&&(h[s](o),o._found_=!0)},a=function(o){r=i.getIdentifier(o),Lm(i.collections,n.bind(null,o,r)),o._found_||i.removeIdentifier(r)};return Lm(t,a),!1};ei.prototype.destroy=function(){var e=this;e.unbindDocument(!0),e.ids={},e.index=0,e.collections.forEach(function(t){t.destroy()}),e.off()};ei.prototype.onDestroyed=function(e,t){var i=this;if(i.collections.indexOf(t)<0)return!1;i.collections.splice(i.collections.indexOf(t),1)};var h8=ei,Vx=new h8,c8={create:function(e){return Vx.create(e)},factory:Vx},d8=Jd(Ib());function Ha(e,t){let i=new ke;if(!e.getAttribute("position"))return i.setAttribute("position",new Ee([],3)),i.setIndex([]),i;let{positions:r,triIndices:s}=Gg(e.getAttribute("position"),e.getIndex());return i.setAttribute("position",new Ee(r,3)),i.setIndex(s),t&&i.applyMatrix4(t),i}var u8=new Se,p8=new Se,Vr=[[0,0,0],[0,0,0],[0,0,0]];function KS(e){let t=e.elements;Vr[0][0]=t[0],Vr[0][1]=t[4],Vr[0][2]=t[8],Vr[1][0]=t[1],Vr[1][1]=t[5],Vr[1][2]=t[9],Vr[2][0]=t[2],Vr[2][1]=t[6],Vr[2][2]=t[10];let{u:i,v:r}=(0,d8.SVD)(Vr),s=u8.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),n=p8.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1);return s.multiply(n.transpose())}var f8=class extends fw{constructor(){super(),this.layers.enable(3),this.layers.enable(8)}setFromCamera(e,t){t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):t.isPerspectiveCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):console.error("Raycaster: Unsupported camera type.")}intersectVisibleObjects(e,t=!0,i=[]){return e.forEach(r=>{r.visible&&this.intersectObject(r,t,i)}),i}createRaycastLineHelper(){let e=new bn({color:65280,linewidth:10}),t=new M(this.ray.origin.x,this.ray.origin.y,this.ray.origin.z),i=new M(this.ray.direction.x,this.ray.direction.y,this.ray.direction.z),r=this.camera.far-this.camera.near,s=new M().addVectors(t,i.multiplyScalar(r)),n=new ke;return n.setFromPoints([t,s]),new hd(n,e)}},JS=e=>e instanceof Cm||e instanceof bo;function m8(e,t){return e.distance-t.distance}function $S(e,t,i){if(!(!Wi(t)||!t.visible||t.raycastLock)){Es(t)&&t.raycast(e,i);for(let r of t.children)$S(e,r,i)}}function Im(e,t,i){if(!i.some(s=>qd(e,s)!==void 0))return[];let r=[];return t.children.forEach(s=>$S(e,s,r)),r.sort(m8),r}function Bm(e){let t=[];if(e.length){let i=e[0].object;Wi(i)&&t.push(i);let r=i.parent;for(;r;)JS(r)&&t.push(r),r=r.parent}return t}function qd(e,t){if(Es(t)){if(!t.raycastLock&&t.visible){let i=[];return t.raycast(e,i),i.length?i[0]:void 0}}else if(JS(t))return eA(e,t)}function eA(e,t){if(!(!Wi(t)||!t.visible||t.raycastLock)){if(Es(t)){let i=[];if(t.raycast(e,i),i.length)return i[0]}for(let i of t.children){let r=eA(e,i);if(r)return r}}}function g8(e,t,i){return{x:(e-(i.left+window.scrollX))/i.width*2-1,y:-((t-(i.top+window.scrollY))/i.height)*2+1}}var v8=class{constructor(e,t,i,r,s,n){this.isExport=n,this.raycaster=new f8,this.raycasterNeedsUpdate=!0,this.stopRaycast=!1,this._useWindowEvents=!1,this.sharedAssets=new vu(Fd.emptyData()),this.scene=new bu({...lm.defaultData},this.sharedAssets),this.camera=new Ls,this.renderer=e,this._useWindowEvents=t.data.publish.mouseEventTarget==="window",this.domElement=e.domElement,this.eventElement=this._useWindowEvents?window:e.domElement,this.stopRaycast=s,this.sharedAssets=r,this.scene=t,this.camera=i}set useWindowEvents(e){this._useWindowEvents=e,this.eventElement=e?window:this.renderer.domElement}get useWindowEvents(){return this._useWindowEvents}updateRaycaster(e){if(!this.raycasterNeedsUpdate)return;this.raycasterNeedsUpdate=!1;let{pageX:t,pageY:i}=e.touches!==void 0&&e.touches.length>0?e.touches[0]:e,r=this.domElement.getBoundingClientRect();this.raycaster.setFromCamera(g8(t,i,r),this.camera)}},tA=(e=>(e[e.keydown=0]="keydown",e[e.keyup=1]="keyup",e[e.pointerdown=2]="pointerdown",e[e.pointerup=3]="pointerup",e[e.pointermove=4]="pointermove",e[e.wheel=5]="wheel",e))(tA||{}),_n=class{constructor(e){this.eventContext=e,this.domEventsNeeded=new Set,this.hasVideoAction=!1}connect(){}disconnect(){}},iA=new Map,Gl=new Map,no=class{constructor(e,t,i,r){this.data=t;let{audio:s,volume:n,delay:a,loop:o}=t;if(!s)throw new Error("Missing property");let l=typeof s=="string"?r.getAudio(s).src:s.data;this.audioPlayer=new Rl({src:l,volume:n,delay:a,loop:o}),Gl.has(i.uuid)?Gl.get(i.uuid).push(this):Gl.set(i.uuid,[this]),iA.set(e,this)}playByToggle(){this.data.toggle==="stop"?this.audioPlayer.status==="playing"?this.audioPlayer.stop():(this.audioPlayer.stop(),this.audioPlayer.play()):this.data.toggle==="pause"?this.audioPlayer.status==="playing"?this.audioPlayer.pause():this.audioPlayer.play():(this.audioPlayer.stop(),this.audioPlayer.play())}dispose(){this.audioPlayer.stop()}},Rm=class{constructor(e){this.data=e}dispatch(){this.data.playAudio?this.pauseAudio(this.data.playAudio):this.data.object?this.pauseAllAudiosFromObject(this.data.object):this.pauseAllAudios()}pauseAudio(e){let t=iA.get(e);!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.audioPlayer[this.data.interaction](),this.disposeDelay()},this.data.delay)):t.audioPlayer[this.data.interaction]())}pauseAllAudiosFromObject(e){let t=Gl.get(e);!t?.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(i=>i.audioPlayer[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(i=>i.audioPlayer[this.data.interaction]()))}pauseAllAudios(){let e=[...Gl.values()];!e.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(t=>{t.forEach(i=>{i.audioPlayer[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(t=>{t.forEach(i=>{i.audioPlayer[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},ao=class{constructor(e,t,i,r){if(this.data=t,t.interaction==="play")this.interaction=new no(e,t,i,r);else if(t.interaction==="pause"||t.interaction==="stop")this.interaction=new Rm(t);else throw new Error("Missing property")}dispatchBasic(){this.interaction instanceof no?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){this.interaction instanceof no?this.interaction.audioPlayer.play():this.interaction.dispatch()}dispatchGameControl(e){this.interaction instanceof no&&(e==="start"?this.interaction.audioPlayer.play():this.interaction.audioPlayer.stop())}dispose(){this.interaction.dispose()}};function y8(e,t){let i=e.material.layers.find(r=>r.uuid===t);return i.color.texture.image.img instanceof HTMLVideoElement?i.color.texture.image.img:void 0}var rA=new Map,Vl=new Map,Wl=class{constructor(e,t,i){this.data=t,this.delay=0,this.status="stopped";let{layerId:r,loop:s,volume:n,delay:a}=t;if(this.object=i,r===void 0)throw new Error("Missing property");let o=y8(i,r);if(o)this.videoElement=o,this.videoElement.loop=s===1/0,this.videoElement.autoplay=!0,n!==void 0&&(this.videoElement.volume=n);else throw new Error("Missing property");a!==void 0&&(this.delay=a),Vl.has(i.uuid)?Vl.get(i.uuid).push(this):Vl.set(i.uuid,[this]),rA.set(e,this),this.pause()}mute(){this.videoElement.muted=!0}unMute(){this.videoElement.muted=!1}play(e){let t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e?(this.mute(),this.delay+=150):t?(this.mute(),window.setTimeout(()=>{this.unMute()},100)):this.unMute(),this.delayTimerId=window.setTimeout(()=>{this.videoElement.play(),this.clearDelay()},this.delay),this.status="playing"}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}pause(){this.videoElement.pause(),this.status="paused"}stop(){this.videoElement.pause(),this.videoElement.currentTime=0,this.status="stopped",this.clearDelay()}playByToggle(){this.data.toggle==="stop"?this.status==="playing"?this.stop():(this.stop(),this.play()):this.data.toggle==="pause"?this.status==="playing"?this.pause():this.play():(this.stop(),this.play())}dispose(){this.stop(),this.videoElement.muted=!0}},Nm=class{constructor(e){this.data=e}dispatch(){this.data.playVideo?this.pauseVideo(this.data.playVideo):this.data.object?this.pauseAllVideosFromObject(this.data.object):this.pauseAllVideos()}pauseVideo(e){let t=rA.get(e);!t||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t[this.data.interaction](),this.disposeDelay()},this.data.delay)):t[this.data.interaction]())}pauseAllVideosFromObject(e){let t=Vl.get(e);!t?.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(i=>i[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(i=>i[this.data.interaction]()))}pauseAllVideos(){let e=[...Vl.values()];!e.length||(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(t=>{t.forEach(i=>{i[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(t=>{t.forEach(i=>{i[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},Qd=class{constructor(e,t,i){if(this.data=t,t.interaction==="play")this.interaction=new Wl(e,t,i);else if(t.interaction==="pause"||t.interaction==="stop")this.interaction=new Nm(t);else throw new Error("Missing property")}dispatchBasic(){this.interaction instanceof Wl?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){this.interaction instanceof Wl?this.interaction.play():this.interaction.dispatch()}dispose(){this.interaction.dispose()}},x8="text/plain",b8="us-ascii",Wx=(e,t)=>t.some(i=>i instanceof RegExp?i.test(e):i===e),w8=(e,{stripHash:t})=>{let i=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!i)throw new Error(`Invalid URL: ${e}`);let{type:r,data:s,hash:n}=i.groups,a=r.split(";");n=t?"":n;let o=!1;a[a.length-1]==="base64"&&(a.pop(),o=!0);let l=(a.shift()||"").toLowerCase(),h=[...a.map(u=>{let[c,d=""]=u.split("=").map(p=>p.trim());return c==="charset"&&(d=d.toLowerCase(),d===b8)?"":`${c}${d?`=${d}`:""}`}).filter(Boolean)];return o&&h.push("base64"),(h.length>0||l&&l!==x8)&&h.unshift(l),`data:${h.join(";")},${o?s.trim():s}${n?`#${n}`:""}`};function _8(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return w8(e,t);if(/^view-source:/i.test(e))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let i=e.startsWith("//");!i&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let r=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&r.protocol==="https:"&&(r.protocol="http:"),t.forceHttps&&r.protocol==="http:"&&(r.protocol="https:"),t.stripAuthentication&&(r.username="",r.password=""),t.stripHash?r.hash="":t.stripTextFragment&&(r.hash=r.hash.replace(/#?:~:text.*?$/i,"")),r.pathname){let n=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,a=0,o="";for(;;){let h=n.exec(r.pathname);if(!h)break;let u=h[0],c=h.index,d=r.pathname.slice(a,c);o+=d.replace(/\/{2,}/g,"/"),o+=u,a=c+u.length}let l=r.pathname.slice(a,r.pathname.length);o+=l.replace(/\/{2,}/g,"/"),r.pathname=o}if(r.pathname)try{r.pathname=decodeURI(r.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=r.pathname.split("/"),a=n[n.length-1];Wx(a,t.removeDirectoryIndex)&&(n=n.slice(0,-1),r.pathname=n.slice(1).join("/")+"/")}if(r.hostname&&(r.hostname=r.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(r.hostname)&&(r.hostname=r.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let n of[...r.searchParams.keys()])Wx(n,t.removeQueryParameters)&&r.searchParams.delete(n);if(t.removeQueryParameters===!0&&(r.search=""),t.sortQueryParameters){r.searchParams.sort();try{r.search=decodeURIComponent(r.search)}catch{}}t.removeTrailingSlash&&(r.pathname=r.pathname.replace(/\/$/,""));let s=e;return e=r.toString(),!t.removeSingleSlash&&r.pathname==="/"&&!s.endsWith("/")&&r.hash===""&&(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||r.pathname==="/")&&r.hash===""&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),i&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}var S8=class{constructor({url:e,context:t},i){if(this.managers=i,!e)throw new Error("Missing property");this.url=e.startsWith("mailto:")?e:_8(e,{removeTrailingSlash:!1,removeSingleSlash:!1}),this.context=t??"tab"}dispatch(){om?window.location.assign(this.url):(this.context==="tab"?window.open(this.url,"_blank"):this.context==="window"?window.open(this.url,"_blank",`width=${window.innerWidth}, height=${window.innerHeight}`):window.open(this.url,"_parent"),this.managers.controlsManager.orbitControls?.onPointerUp(qe[0]),Mz())}},A8=class{constructor(e,t,i,r){this.scene=t,this.sharedAssets=i,this.sceneData=e,this.managers=r}dispatch(){wA(this.sceneData,this.scene,this.sharedAssets,!0),this.managers.eventManager?.reset(),this.managers.controlsManager.orbitControls?.reset(),this.managers.controlsManager?.gameControls.forEach(e=>e.reset(!0))}},sA={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},tv={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},M8=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],Zd={CSS:{},springs:{}};function ts(e,t,i){return Math.min(Math.max(e,t),i)}function Xl(e,t){return e.indexOf(t)>-1}function rf(e,t){return e.apply(null,t)}var Fe={arr:function(e){return Array.isArray(e)},obj:function(e){return Xl(Object.prototype.toString.call(e),"Object")},pth:function(e){return Fe.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return!("isNode"in e)&&(e.nodeType||Fe.svg(e))},str:function(e){return typeof e=="string"},fnc:function(e){return typeof e=="function"},und:function(e){return typeof e>"u"},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return Fe.hex(e)||Fe.rgb(e)||Fe.hsl(e)},key:function(e){return!sA.hasOwnProperty(e)&&!tv.hasOwnProperty(e)&&e!=="targets"&&e!=="keyframes"}};function nA(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map(function(i){return parseFloat(i)}):[]}function aA(e,t){var i=nA(e),r=ts(Fe.und(i[0])?1:i[0],.1,100),s=ts(Fe.und(i[1])?100:i[1],.1,100),n=ts(Fe.und(i[2])?10:i[2],.1,100),a=ts(Fe.und(i[3])?0:i[3],.1,100),o=Math.sqrt(s/r),l=n/(2*Math.sqrt(s*r)),h=l<1?o*Math.sqrt(1-l*l):0,u=1,c=l<1?(l*o+-a)/h:-a+o;function d(m){var g=t?t*m/1e3:m;return l<1?g=Math.exp(-g*l*o)*(u*Math.cos(h*g)+c*Math.sin(h*g)):g=(u+c*g)*Math.exp(-g*o),m===0||m===1?m:1-g}function p(){var m=Zd.springs[e];if(m)return m;for(var g=1/6,f=0,v=0;;)if(f+=g,d(f)===1){if(v++,v>=16)break}else v=0;var y=f*g*1e3;return Zd.springs[e]=y,y}return t?d:p}function E8(e){return e===void 0&&(e=10),function(t){return Math.ceil(ts(t,1e-6,1)*e)*(1/e)}}var C8=function(){var e=11,t=1/(e-1);function i(u,c){return 1-3*c+3*u}function r(u,c){return 3*c-6*u}function s(u){return 3*u}function n(u,c,d){return((i(c,d)*u+r(c,d))*u+s(c))*u}function a(u,c,d){return 3*i(c,d)*u*u+2*r(c,d)*u+s(c)}function o(u,c,d,p,m){var g,f,v=0;do f=c+(d-c)/2,g=n(f,p,m)-u,g>0?d=f:c=f;while(Math.abs(g)>1e-7&&++v<10);return f}function l(u,c,d,p){for(var m=0;m<4;++m){var g=a(c,d,p);if(g===0)return c;var f=n(c,d,p)-u;c-=f/g}return c}function h(u,c,d,p){if(!(0<=u&&u<=1&&0<=d&&d<=1))return;var m=new Float32Array(e);if(u!==c||d!==p)for(var g=0;g<e;++g)m[g]=n(g*t,u,d);function f(v){for(var y=0,b=1,x=e-1;b!==x&&m[b]<=v;++b)y+=t;--b;var w=(v-m[b])/(m[b+1]-m[b]),_=y+w*t,A=a(_,u,d);return A>=.001?l(v,_,u,d):A===0?_:o(v,y,y+t,u,d)}return function(v){return u===c&&d===p||v===0||v===1?v:n(f(v),c,p)}}return h}(),oA=function(){var e={linear:function(){return function(r){return r}}},t={Sine:function(){return function(r){return 1-Math.cos(r*Math.PI/2)}},Circ:function(){return function(r){return 1-Math.sqrt(1-r*r)}},Back:function(){return function(r){return r*r*(3*r-2)}},Bounce:function(){return function(r){for(var s,n=4;r<((s=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((s*3-2)/22-r,2)}},Elastic:function(r,s){r===void 0&&(r=1),s===void 0&&(s=.5);var n=ts(r,1,10),a=ts(s,.1,2);return function(o){return o===0||o===1?o:-n*Math.pow(2,10*(o-1))*Math.sin((o-1-a/(Math.PI*2)*Math.asin(1/n))*(Math.PI*2)/a)}}},i=["Quad","Cubic","Quart","Quint","Expo"];return i.forEach(function(r,s){t[r]=function(){return function(n){return Math.pow(n,s+2)}}}),Object.keys(t).forEach(function(r){var s=t[r];e["easeIn"+r]=s,e["easeOut"+r]=function(n,a){return function(o){return 1-s(n,a)(1-o)}},e["easeInOut"+r]=function(n,a){return function(o){return o<.5?s(n,a)(o*2)/2:1-s(n,a)(o*-2+2)/2}}}),e}();function iv(e,t){if(Fe.fnc(e))return e;var i=e.split("(")[0],r=oA[i],s=nA(e);switch(i){case"spring":return aA(e,t);case"cubicBezier":return rf(C8,s);case"steps":return rf(E8,s);default:return rf(r,s)}}function lA(e){try{var t=document.querySelectorAll(e);return t}catch{return}}function wu(e,t){for(var i=e.length,r=arguments.length>=2?arguments[1]:void 0,s=[],n=0;n<i;n++)if(n in e){var a=e[n];t.call(r,a,n,e)&&s.push(a)}return s}function _u(e){return e.reduce(function(t,i){return t.concat(Fe.arr(i)?_u(i):i)},[])}function Xx(e){return Fe.arr(e)?e:(Fe.str(e)&&(e=lA(e)||e),e instanceof NodeList||e instanceof HTMLCollection?[].slice.call(e):[e])}function rv(e,t){return e.some(function(i){return i===t})}function sv(e){var t={};for(var i in e)t[i]=e[i];return t}function zm(e,t){var i=sv(e);for(var r in e)i[r]=t.hasOwnProperty(r)?t[r]:e[r];return i}function Su(e,t){var i=sv(e);for(var r in t)i[r]=Fe.und(e[r])?t[r]:e[r];return i}function T8(e){var t=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e);return t?"rgba("+t[1]+",1)":e}function P8(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,i=e.replace(t,function(o,l,h,u){return l+l+h+h+u+u}),r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(i),s=parseInt(r[1],16),n=parseInt(r[2],16),a=parseInt(r[3],16);return"rgba("+s+","+n+","+a+",1)"}function D8(e){var t=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(e),i=parseInt(t[1],10)/360,r=parseInt(t[2],10)/100,s=parseInt(t[3],10)/100,n=t[4]||1;function a(d,p,m){return m<0&&(m+=1),m>1&&(m-=1),m<1/6?d+(p-d)*6*m:m<1/2?p:m<2/3?d+(p-d)*(2/3-m)*6:d}var o,l,h;if(r==0)o=l=h=s;else{var u=s<.5?s*(1+r):s+r-s*r,c=2*s-u;o=a(c,u,i+1/3),l=a(c,u,i),h=a(c,u,i-1/3)}return"rgba("+o*255+","+l*255+","+h*255+","+n+")"}function O8(e){if(Fe.rgb(e))return T8(e);if(Fe.hex(e))return P8(e);if(Fe.hsl(e))return D8(e)}function Ps(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function L8(e){if(Xl(e,"translate")||e==="perspective")return"px";if(Xl(e,"rotate")||Xl(e,"skew"))return"deg"}function Fm(e,t){return Fe.fnc(e)?e(t.target,t.id,t.total):e}function is(e,t){return e.getAttribute(t)}function nv(e,t,i){var r=Ps(t);if(rv([i,"deg","rad","turn"],r))return t;var s=Zd.CSS[t+i];if(!Fe.und(s))return s;var n=100,a=document.createElement(e.tagName),o=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;o.appendChild(a),a.style.position="absolute",a.style.width=n+i;var l=n/a.offsetWidth;o.removeChild(a);var h=l*parseFloat(t);return Zd.CSS[t+i]=h,h}function hA(e,t,i){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),s=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return i?nv(e,s,i):s}}function av(e,t){if(Fe.dom(e)&&!Fe.inp(e)&&(is(e,t)||Fe.svg(e)&&e[t]))return"attribute";if(Fe.dom(e)&&rv(M8,t))return"transform";if(Fe.dom(e)&&t!=="transform"&&hA(e,t))return"css";if(e[t]!=null)return"object"}function cA(e){if(Fe.dom(e)){for(var t=e.style.transform||"",i=/(\w+)\(([^)]*)\)/g,r=new Map,s;s=i.exec(t);)r.set(s[1],s[2]);return r}}function I8(e,t,i,r){var s=Xl(t,"scale")?1:0+L8(t),n=cA(e).get(t)||s;return i&&(i.transforms.list.set(t,n),i.transforms.last=t),r?nv(e,n,r):n}function ov(e,t,i,r){switch(av(e,t)){case"transform":return I8(e,t,r,i);case"css":return hA(e,t,i);case"attribute":return is(e,t);default:return e[t]||0}}function lv(e,t){var i=/^(\*=|\+=|-=)/.exec(e);if(!i)return e;var r=Ps(e)||0,s=parseFloat(t),n=parseFloat(e.replace(i[0],""));switch(i[0][0]){case"+":return s+n+r;case"-":return s-n+r;case"*":return s*n+r}}function dA(e,t){if(Fe.col(e))return O8(e);if(/\s/g.test(e))return e;var i=Ps(e),r=i?e.substr(0,e.length-i.length):e;return t?r+t:r}function hv(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function B8(e){return Math.PI*2*is(e,"r")}function R8(e){return is(e,"width")*2+is(e,"height")*2}function N8(e){return hv({x:is(e,"x1"),y:is(e,"y1")},{x:is(e,"x2"),y:is(e,"y2")})}function uA(e){for(var t=e.points,i=0,r,s=0;s<t.numberOfItems;s++){var n=t.getItem(s);s>0&&(i+=hv(r,n)),r=n}return i}function z8(e){var t=e.points;return uA(e)+hv(t.getItem(t.numberOfItems-1),t.getItem(0))}function pA(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return B8(e);case"rect":return R8(e);case"line":return N8(e);case"polyline":return uA(e);case"polygon":return z8(e)}}function F8(e){var t=pA(e);return e.setAttribute("stroke-dasharray",t),t}function U8(e){for(var t=e.parentNode;Fe.svg(t)&&Fe.svg(t.parentNode);)t=t.parentNode;return t}function fA(e,t){var i=t||{},r=i.el||U8(e),s=r.getBoundingClientRect(),n=is(r,"viewBox"),a=s.width,o=s.height,l=i.viewBox||(n?n.split(" "):[0,0,a,o]);return{el:r,viewBox:l,x:l[0]/1,y:l[1]/1,w:a/l[2],h:o/l[3]}}function k8(e,t){var i=Fe.str(e)?lA(e)[0]:e,r=t||100;return function(s){return{property:s,el:i,svg:fA(i),totalLength:pA(i)*(r/100)}}}function j8(e,t){function i(o){o===void 0&&(o=0);var l=t+o>=1?t+o:0;return e.el.getPointAtLength(l)}var r=fA(e.el,e.svg),s=i(),n=i(-1),a=i(1);switch(e.property){case"x":return(s.x-r.x)*r.w;case"y":return(s.y-r.y)*r.h;case"angle":return Math.atan2(a.y-n.y,a.x-n.x)*180/Math.PI}}function Yx(e,t){var i=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=dA(Fe.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(i)?r.match(i).map(Number):[0],strings:Fe.str(e)||t?r.split(i):[]}}function mA(e){var t=e?_u(Fe.arr(e)?e.map(Xx):Xx(e)):[];return wu(t,function(i,r,s){return s.indexOf(i)===r})}function gA(e){var t=mA(e);return t.map(function(i,r){return{target:i,id:r,total:t.length,transforms:{list:cA(i)}}})}function H8(e,t){var i=sv(t);if(/^spring/.test(i.easing)&&(i.duration=aA(i.easing)),Fe.arr(e)){var r=e.length,s=r===2&&!Fe.obj(e[0]);s?e={value:e}:Fe.fnc(t.duration)||(i.duration=t.duration/r)}var n=Fe.arr(e)?e:[e];return n.map(function(a,o){var l=Fe.obj(a)&&!Fe.pth(a)?a:{value:a};return Fe.und(l.delay)&&(l.delay=o?0:t.delay),Fe.und(l.endDelay)&&(l.endDelay=o===n.length-1?t.endDelay:0),l}).map(function(a){return Su(a,i)})}function G8(e){for(var t=wu(_u(e.map(function(n){return Object.keys(n)})),function(n){return Fe.key(n)}).reduce(function(n,a){return n.indexOf(a)<0&&n.push(a),n},[]),i={},r=function(n){var a=t[n];i[a]=e.map(function(o){var l={};for(var h in o)Fe.key(h)?h==a&&(l.value=o[h]):l[h]=o[h];return l})},s=0;s<t.length;s++)r(s);return i}function V8(e,t){var i=[],r=t.keyframes;r&&(t=Su(G8(r),t));for(var s in t)Fe.key(s)&&i.push({name:s,tweens:H8(t[s],e)});return i}function W8(e,t){var i={};for(var r in e){var s=Fm(e[r],t);Fe.arr(s)&&(s=s.map(function(n){return Fm(n,t)}),s.length===1&&(s=s[0])),i[r]=s}return i.duration=parseFloat(i.duration),i.delay=parseFloat(i.delay),i}function X8(e,t){var i;return e.tweens.map(function(r){var s=W8(r,t),n=s.value,a=Fe.arr(n)?n[1]:n,o=Ps(a),l=ov(t.target,e.name,o,t),h=i?i.to.original:l,u=Fe.arr(n)?n[0]:h,c=Ps(u)||Ps(l),d=o||c;return Fe.und(a)&&(a=h),s.from=Yx(u,d),s.to=Yx(lv(a,u),d),s.start=i?i.end:0,s.end=s.start+s.delay+s.duration+s.endDelay,s.easing=iv(s.easing,s.duration),s.isPath=Fe.pth(n),s.isColor=Fe.col(s.from.original),s.isColor&&(s.round=1),i=s,s})}var vA={css:function(e,t,i){return e.style[t]=i},attribute:function(e,t,i){return e.setAttribute(t,i)},object:function(e,t,i){return e[t]=i},transform:function(e,t,i,r,s){if(r.list.set(t,i),t===r.last||s){var n="";r.list.forEach(function(a,o){n+=o+"("+a+") "}),e.style.transform=n}}};function yA(e,t){var i=gA(e);i.forEach(function(r){for(var s in t){var n=Fm(t[s],r),a=r.target,o=Ps(n),l=ov(a,s,o,r),h=o||Ps(l),u=lv(dA(n,h),l),c=av(a,s);vA[c](a,s,u,r.transforms,!0)}})}function Y8(e,t){var i=av(e.target,t.name);if(i){var r=X8(t,e),s=r[r.length-1];return{type:i,property:t.name,animatable:e,tweens:r,duration:s.end,delay:r[0].delay,endDelay:s.endDelay}}}function q8(e,t){return wu(_u(e.map(function(i){return t.map(function(r){return Y8(i,r)})})),function(i){return!Fe.und(i)})}function xA(e,t){var i=e.length,r=function(n){return n.timelineOffset?n.timelineOffset:0},s={};return s.duration=i?Math.max.apply(Math,e.map(function(n){return r(n)+n.duration})):t.duration,s.delay=i?Math.min.apply(Math,e.map(function(n){return r(n)+n.delay})):t.delay,s.endDelay=i?s.duration-Math.max.apply(Math,e.map(function(n){return r(n)+n.duration-n.endDelay})):t.endDelay,s}var qx=0;function Q8(e){var t=zm(sA,e),i=zm(tv,e),r=V8(i,e),s=gA(e.targets),n=q8(s,r),a=xA(n,i),o=qx;return qx++,Su(t,{id:o,children:[],animatables:s,animations:n,duration:a.duration,delay:a.delay,endDelay:a.endDelay})}var ur=[],Qx=[],rd,Z8=function(){function e(){rd=requestAnimationFrame(t)}function t(i){var r=ur.length;if(r){for(var s=0;s<r;){var n=ur[s];n.paused?(ur.splice(s,1),r-=1):(n.tick(i),s++)}e()}else rd=cancelAnimationFrame(rd)}return e}();function K8(){document.hidden?(ur.forEach(function(e){return e.pause()}),Qx=ur.slice(0),Ht.running=ur=[]):Qx.forEach(function(e){return e.play()})}typeof document<"u"&&document.addEventListener("visibilitychange",K8);function Ht(e){e===void 0&&(e={});var t=0,i=0,r=0,s,n=0,a=null;function o(b){var x=window.Promise&&new Promise(function(w){return a=w});return b.finished=x,x}var l=Q8(e),h=o(l);function u(){var b=l.direction;b!=="alternate"&&(l.direction=b!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,s.forEach(function(x){return x.reversed=l.reversed})}function c(b){return l.reversed?l.duration-b:b}function d(){t=0,i=c(l.currentTime)*(1/Ht.speed)}function p(b,x){x&&x.seek(b-x.timelineOffset)}function m(b){if(l.reversePlayback)for(var x=n;x--;)p(b,s[x]);else for(var w=0;w<n;w++)p(b,s[w])}function g(b){var x=0,w=l.animations,_=w.length;for(l.reversePlayback===!0&&l.rewind===!1&&(b=l.duration+l.delay-l.endDelay-b);x<_;){var A=w[x],S=A.animatable,E=A.tweens,C=E.length-1,T=E[C];C&&(T=wu(E,function(q){return b<q.end})[0]||T);for(var P=ts(b-T.start-T.delay,0,T.duration)/T.duration,R=isNaN(P)?1:T.easing(P),O=T.to.strings,U=T.round,j=[],z=T.to.numbers.length,L=void 0,G=0;G<z;G++){var F=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var N=T.to.numbers[G],V=T.from.numbers[G]||0;else var V=T.to.numbers[G],N=T.from.numbers[G]||0;T.isPath?F=j8(T.value,R*V):F=N+R*(V-N),U&&(T.isColor&&G>2||(F=Math.round(F*U)/U)),j.push(F)}var X=O.length;if(!X)L=j[0];else{L=O[0];for(var Z=0;Z<X;Z++){var ee=O[Z],W=O[Z+1],ne=j[Z];isNaN(ne)||(W?L+=ne+W:L+=ne+" ")}}vA[A.type](S.target,A.property,L,S.transforms),A.currentValue=L,x++}}function f(b){l[b]&&!l.passThrough&&l[b](l)}function v(){l.remaining&&l.remaining!==!0&&l.remaining--}function y(b){var x=l.duration,w=l.delay,_=x-l.endDelay,A=c(b);l.progress=ts(A/x*100,0,100),l.reversePlayback=A<l.currentTime,s&&m(A),!l.began&&l.currentTime>=0&&(l.began=!0,f("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,f("loopBegin")),A<=w&&l.currentTime!==0&&(g(0),f("change")),(A>=_&&l.currentTime!==x||!x)&&(g(x),f("change")),A>w&&A<_?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,f("changeBegin")),f("change"),g(A)):l.changeBegan?(l.changeCompleted=!0,l.changeBegan=!1,f("change"),f("changeComplete")):l.began&&A>_&&(f("change"),f("changeComplete")),l.currentTime=ts(A,0,x),l.began&&f("update"),b>=x&&(i=0,v(),l.remaining?(t=r,f("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&u()):(l.paused=!0,l.completed||(l.completed=!0,f("loopComplete"),f("complete"),!l.passThrough&&"Promise"in window&&(a(),h=o(l)))))}return l.reset=function(){var b=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=b==="reverse",l.remaining=l.loop,s=l.children,n=s.length;for(var x=n;x--;)l.children[x].reset();(l.reversed&&l.loop!==!0||b==="alternate"&&l.loop===1)&&l.remaining++,g(l.reversed?l.duration:0)},l.set=function(b,x){return yA(b,x),l},l.tick=function(b){r=b,t||(t=r),y((r+(i-t))*Ht.speed)},l.seek=function(b){y(c(b))},l.pause=function(){l.paused=!0,d()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,ur.push(l),d(),rd||Z8())},l.reverse=function(){u(),l.completed=!l.reversed,d()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function Zx(e,t){for(var i=t.length;i--;)rv(e,t[i].animatable.target)&&t.splice(i,1)}function J8(e){for(var t=mA(e),i=ur.length;i--;){var r=ur[i],s=r.animations,n=r.children;Zx(t,s);for(var a=n.length;a--;){var o=n[a],l=o.animations;Zx(t,l),!l.length&&!o.children.length&&n.splice(a,1)}!s.length&&!n.length&&r.pause()}}function $8(e,t){t===void 0&&(t={});var i=t.direction||"normal",r=t.easing?iv(t.easing):null,s=t.grid,n=t.axis,a=t.from||0,o=a==="first",l=a==="center",h=a==="last",u=Fe.arr(e),c=parseFloat(u?e[0]:e),d=u?parseFloat(e[1]):0,p=Ps(u?e[1]:e)||0,m=t.start||0+(u?c:0),g=[],f=0;return function(v,y,b){if(o&&(a=0),l&&(a=(b-1)/2),h&&(a=b-1),!g.length){for(var x=0;x<b;x++){if(!s)g.push(Math.abs(a-x));else{var w=l?(s[0]-1)/2:a%s[0],_=l?(s[1]-1)/2:Math.floor(a/s[0]),A=x%s[0],S=Math.floor(x/s[0]),E=w-A,C=_-S,T=Math.sqrt(E*E+C*C);n==="x"&&(T=-E),n==="y"&&(T=-C),g.push(T)}f=Math.max.apply(Math,g)}r&&(g=g.map(function(R){return r(R/f)*f})),i==="reverse"&&(g=g.map(function(R){return n?R<0?R*-1:-R:Math.abs(f-R)}))}var P=u?(d-c)/f:c;return m+P*(Math.round(g[y]*100)/100)+p}}function ej(e){e===void 0&&(e={});var t=Ht(e);return t.duration=0,t.add=function(i,r){var s=ur.indexOf(t),n=t.children;s>-1&&ur.splice(s,1);function a(d){d.passThrough=!0}for(var o=0;o<n.length;o++)a(n[o]);var l=Su(i,zm(tv,e));l.targets=l.targets||e.targets;var h=t.duration;l.autoplay=!1,l.direction=t.direction,l.timelineOffset=Fe.und(r)?h:lv(r,h),a(t),l.rewind=t.rewind,t.seek(l.timelineOffset);var u=Ht(l);a(u),n.push(u);var c=xA(n,e);return t.delay=c.delay,t.endDelay=c.endDelay,t.duration=c.duration,t.seek(0),t.reset(),t.autoplay&&t.play(),t},t}Ht.version="3.2.0";Ht.speed=1;Ht.running=ur;Ht.remove=J8;Ht.get=ov;Ht.set=yA;Ht.convertPx=nv;Ht.path=k8;Ht.setDashoffset=F8;Ht.stagger=$8;Ht.timeline=ej;Ht.easing=iv;Ht.penner=oA;Ht.random=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var Nc=Ht,Kx=new M,Jx=new M,$x=new nt;function tj(e,t,i,r){if(r===0)return i.copy(e);if(r===1)return i.copy(t);let s=e.w*t.w+e.x*t.x+e.y*t.y+e.z*t.z;if(s>=1)return i.copy(e);let n=1-s*s;if(n<=Number.EPSILON){let u=1-r;return i.w=u*e.w+r*t.w,i.x=u*e.x+r*t.x,i.y=u*e.y+r*t.y,i.z=u*e.z+r*t.z,i.normalize(),i}let a=Math.sqrt(n),o=Math.atan2(a,s),l=Math.sin((1-r)*o)/a,h=Math.sin(r*o)/a;return i.w=e.w*l+t.w*h,i.x=e.x*l+t.x*h,i.y=e.y*l+t.y*h,i.z=e.z*l+t.z*h,i}function Mh(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(a==null)return;let o=n??t[e],l=a;if(o!==l)return{update:h=>{let u=rt.lerp(o,l,h);s?t[e]=Math.trunc(u):t[e]=u},start:()=>{t[e]=o},end:()=>{t[e]=l}}}function bA(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(!a)return;let o=t[e],l=[...n??o],h=[...a];if(!(l.length!==h.length||Mg(l,h)))return{update:u=>{l.forEach((c,d)=>{let p=rt.lerp(c,h[d],u);t[e][d]=s?Math.trunc(p):p})},start:()=>{Object.assign(t[e],l)},end:()=>{Object.assign(t[e],h)}}}function eb(e,t,i,r){let s=i[e]?i[e]:void 0,n=r[e];if(!n)return;let a=t[e],o=s?new M().fromArray(s):a.clone(),l=new M().fromArray(n);if(!o.equals(l))return{update:h=>{a.lerpVectors(o,l,h)},start:()=>{a.copy(o)},end:()=>{a.copy(l)}}}function ij(e,t,i,r){let s=i[e]?i[e]:void 0,n=r[e];if(!n)return;let a=t[e],o=s?new Se().fromArray(s):a.clone(),l=new M,h=new nt,u=new M;o.decompose(l,h,u);let c=new Se().fromArray(n),d=new M,p=new nt,m=new M;if(c.decompose(d,p,m),!o.equals(c))return{update:g=>{$x.slerpQuaternions(h,p,g),Kx.lerpVectors(l,d,g),Jx.lerpVectors(u,m,g),a.compose(Kx,$x,Jx)},start:()=>{a.compose(l,h,u)},end:()=>{a.compose(d,p,m)}}}function rj(e,t,i,r,s){let n=i[e]?i[e]:void 0,a=r[e];if(!a)return;let o=t[e],l=n?typeof n=="string"?s.getColor(n).clone():new Ue().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ue().setRGB(a.r,a.g,a.b);if(l.equals(h))return;let u=o.clone();return t[e]=u,{update:c=>{u.lerpColors(l,h,c)},start:()=>{u.copy(l)},end:()=>{u.copy(h)}}}function sj(e,t,i){let r=[],s=e.cameraType==="OrthographicCamera"?t.orthographic?.zoom:t.perspective?.zoom,n=e.cameraType==="OrthographicCamera"?i.orthographic?.zoom:i.perspective?.zoom;if(n!==void 0){let a=s??e.zoom,o=n;a!==o&&r.push({update:l=>{e.zoom=rt.lerp(a,o,l),e.updateProjectionMatrix()},start:()=>{e.zoom=a,e.updateProjectionMatrix()},end:()=>{e.zoom=o,e.updateProjectionMatrix()}})}if(i.targetOffset!==void 0){let a=Mh("targetOffset",e,t,i);a&&r.push(a)}return r}function nj(e,t,i,r){let s=[];if(!("geometry"in i))return s;let n="geometry"in t?t.geometry:{},a=i.geometry;if(e instanceof ch){let p=n.scaleBaked??e.data.geometry.scaleBaked,m=a.scaleBaked??e.data.geometry.scaleBaked;return $n.isEqual(p,m)||s.push({update:g=>{e.updateGeometryInteractions({scaleBaked:[rt.lerp(p[0],m[0],g),rt.lerp(p[1],m[1],g),rt.lerp(p[2],m[2],g)]},r),e.invalidateDownstreamBooleanData()},start:()=>{e.updateGeometryInteractions({scaleBaked:p},r),e.invalidateDownstreamBooleanData()},end:()=>{e.updateGeometryInteractions({scaleBaked:m},r),e.invalidateDownstreamBooleanData()}}),s}let{width:o,height:l,depth:h}=n,{width:u,height:c,depth:d}=a;if(u!==void 0||c!==void 0||d!==void 0){let{width:p,height:m,depth:g}=e.geometry.userData.parameters,f=o??p,v=l??m,y=h??g,b=u??p,x=c??m,w=d??g;(f!==b||v!==x||y!==w)&&s.push({update:_=>{e.updateGeometryInteractions({width:rt.lerp(f,b,_),height:rt.lerp(v,x,_),depth:rt.lerp(y,w,_)},r),e.updateGeometryGroupsIfNeeded(),e.invalidateDownstreamBooleanData()},start:()=>{e.updateGeometryInteractions({width:f,height:v,depth:y},r),e.invalidateDownstreamBooleanData()},end:()=>{e.updateGeometryInteractions({width:b,height:x,depth:w},r),e.invalidateDownstreamBooleanData()}})}return s}function aj(e,t,i,r){let s=[];if(i.intensity!==void 0){let n=Mh("intensity",e,t,i);n&&s.push(n)}if(i.color!==void 0){let n=rj("color",e,t,i,r);n&&s.push(n)}return s}function oj(e,t,i,r){let s=[];if(Array.isArray(e.material)){if(!("materials"in i&&i.materials))return s;let n="materials"in t&&t.materials?t.materials:[],a=i.materials;e.material.forEach((o,l)=>{if(!a[l])return;let h=n[l]??{},u=a[l];typeof h=="string"||typeof u=="string"||s.push(...tb(o,h,u,r))})}else{if(!("material"in i&&i.material))return s;let n="material"in t&&t.material?t.material:{},a=i.material;if(typeof n=="string"||typeof a=="string")return s;s.push(...tb(e.material,n,a,r))}return s}function tb(e,t,i,r){let s=[];e.transparent=Sm(i,r);for(let n of e.layers){let a=t.layers?.data(n.uuid),o=i.layers.data(n.uuid);if(!o||!(n.visible??!0)||!(o.visible??!0))continue;let l=n.getNames().filter(h=>!M_.some(u=>h.includes(u)));for(let h of l)try{let u=n.getValue(h),c;if(h==="colors")c=fj(n,a,o,h);else if(Array.isArray(u))h==="steps"&&(c=pj(n,a,o,h));else if(typeof u=="number")c=lj(n,a,o,h);else{if(typeof u=="boolean")continue;u instanceof H?c=hj(n,a,o,h):u instanceof M?c=cj(n,a,o,h):u instanceof Ni?c=uj(n,a,o,h,r):u instanceof Ue?c=dj(n,a,o,h,r):"isTexture"in u&&(c=mj(n,a,o,h))}c&&(Array.isArray(c)?s.push(...c):s.push(c))}catch(u){console.error(`lerpMaterial: unexpected material layer for ${h}`,u)}}return s}function lj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=t?t[r]:e.getValue(r),n=i[r];if(s!==n)return{update:a=>{e.setValue(r,rt.lerp(s,n,a))},start:()=>{e.setValue(r,s)},end:()=>{e.setValue(r,n)}}}function hj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=e.getValue(r),n=t?new H().fromArray(t[r]):s.clone(),a=new H().fromArray(i[r]);if(!n.equals(a))return{update:o=>{s.lerpVectors(n,a,o)},start:()=>{s.copy(n)},end:()=>{s.copy(a)}}}function cj(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let s=e.getValue(r),n=t?new M().fromArray(t[r]):s.clone(),a=new M().fromArray(i[r]);if(!n.equals(a))return{update:o=>{s.lerpVectors(n,a,o)},start:()=>{s.copy(n)},end:()=>{s.copy(a)}}}function dj(e,t,i,r,s){if(!e.hasValue(r)||!(r in i))return;let n=t?t[r]:void 0,a=i[r],o=e.getValue(r),l=n?typeof n=="string"?s.getColor(n).clone():new Ue().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ue().setRGB(a.r,a.g,a.b);if(l.equals(h))return;let u=o.clone();return e.setValue(r,u),{update:c=>{u.lerpColors(l,h,c)},start:()=>{u.copy(l)},end:()=>{u.copy(h)}}}function uj(e,t,i,r,s){if(!e.hasValue(r)||!(r in i))return;let n=t?t[r]:void 0,a=i[r],o=e.getValue(r),l=n?typeof n=="string"?s.getColor(n).clone():new Ue().setRGB(n.r,n.g,n.b):o.clone(),h=typeof a=="string"?s.getColor(a).clone():new Ni(a.r,a.g,a.b,a.a);if(l.equals(h))return;let u=o.clone();return e.setValue(r,u),{update:c=>{u.lerpColors(l,h,c)},start:()=>{u.copy(l)},end:()=>{u.copy(h)}}}function pj(e,t,i,r="steps"){if(!e.hasValue(r)||!(r in i))return;let s=[],n=e.getValue(r),a=t?t[r]:n,o=i[r];for(let l=0;l<n.length;++l){let h=a[l],u=o[l];h!==u&&s.push({update:c=>{n[l]=rt.lerp(h,u,c)},start:()=>{n[l]=h},end:()=>{n[l]=u}})}return s.length?s:void 0}function fj(e,t,i,r="colors"){if(!e.hasValue(r)||!(r in i))return;let s=[],n=e.getValue(r),a=t?t[r]:n.map(l=>l.toArray()),o=i[r];for(let l=0;l<n.length;++l){let h=[...a[l]],u=[...o[l]];Ed.isEqual(h,u)||s.push({update:c=>{n[l].fromArray(Ed.lerp(h,u,c))},start:()=>{n[l].fromArray(h)},end:()=>{n[l].fromArray(u)}})}return s.length?s:void 0}function mj(e,t,i,r="texture"){if(!e.hasValue(r)||!(r in i))return;let s=e.getNode("mat");if(!s)return;let n=t?t[r]:s,a=i[r],o=[...n.repeat],l=[...n.offset],h=[...a.repeat],u=[...a.offset];if(!eo.isEqual(o,h)||!eo.isEqual(l,u))return{update:c=>{s.repeat=eo.lerp(o,h,c),s.offset=eo.lerp(l,u,c),s.updateMatrix()},start:()=>{s.repeat=[...o],s.offset=[...l],s.updateMatrix()},end:()=>{s.repeat=[...h],s.offset=[...u],s.updateMatrix()}}}var sf=new M,ib=new ui;function gj(e,t,i,r){let s=[],n=eb("position",e,t,i);n&&s.push(n);let a=eb("scale",e,t,i);a&&s.push(a);let o=vj(e,t,i,r);o&&s.push(o);let l=ij("hiddenMatrix",e,t,i);if(l&&s.push(l),n||a||o||l){let h=()=>{e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD()),e.parent?.matrixWorldFusedFalse&&(e.matrixWorld.multiplyMatrices(e.parent.matrixWorldFusedFalse,e.matrix),e.matrixWorldNeedsUpdate=!1),Es(e)&&cn(e.parent)&&e.invalidateDownstreamBooleanData(!0)};s.push({update:h,start:h,end:h})}return s}function vj(e,t,i,r){let s=t?.rotation?t.rotation:void 0,n=i.rotation;if(!n)return;let a=s?new M().fromArray(s):new M().setFromEuler(e.rotation),o=new M().fromArray(n);if(a.equals(o))return;let l=sf.subVectors(o,a);if(r&&l.toArray().every(h=>Math.abs(h)<2*Math.PI)){let h=new nt().setFromEuler(ib.setFromVector3(a)),u=new nt().setFromEuler(ib.setFromVector3(o));return{update:c=>{tj(h,u,e.quaternion,c)},start:()=>{e.rotation.setFromVector3(a)},end:()=>{e.rotation.setFromVector3(o)}}}else return{update:h=>{sf.lerpVectors(a,o,h),e.rotation.setFromVector3(sf)},start:()=>{e.rotation.setFromVector3(a)},end:()=>{e.rotation.setFromVector3(o)}}}function Go(e,t,i,r){if(typeof t[e]=="number")return Mh(e,t,i??{},r);if(Array.isArray(t[e]))return bA(e,t,i??{},r)}function yj(e,t,i){let r=[];if(!("cloner"in i)||!e.cloner)return r;let s=e.cloner,n="cloner"in t?t.cloner:{},a=i.cloner;x_.forEach(d=>{let p;d==="count"?p=Mh("count",s.parameters,n,a,!0):p=Go(d,s.parameters,n??{},a),p&&r.push(p)});let o=xj(s,n,a);o?.length&&r.push(...o);let l=bj(s,n,a);l?.length&&r.push(...l);let h=wj(s,n,a);h?.length&&r.push(...h);let u=_j(s,n,a);u?.length&&r.push(...u);let c=Sj(s,n,a);return c?.length&&r.push(...c),r.length&&r.push({update:()=>{s.update()}}),r}function xj(e,t,i){if(e.parameters.type!=="radial")return;let r=t.radial,s=i.radial;if(!s)return;let n=e.parameters.radial,a=[];return b_.forEach(o=>{let l=Go(o,n,r??{},s);l&&a.push(l)}),a}function bj(e,t,i){if(e.parameters.type!=="linear")return;let r=t.linear,s=i.linear;if(!s)return;let n=[],a=e.parameters.linear;return w_.forEach(o=>{let l=Go(o,a,r??{},s);l&&n.push(l)}),n}function wj(e,t,i){if(e.parameters.type!=="grid")return;let r=t.grid,s=i.grid;if(!s)return;let n=[],a=e.parameters.grid;return __.forEach(o=>{let l;o==="count"?l=bA(o,a,r??{},s,!0):l=Go(o,a,r??{},s),l&&n.push(l)}),n}function _j(e,t,i){if(e.parameters.type!=="toObject")return;let r=t.toObject,s=i.toObject;if(!s)return;let n=[],a=e.parameters.toObject;return S_.forEach(o=>{let l;o==="count"?l=Mh(o,a,r??{},s,!0):l=Go(o,a,r??{},s),l&&n.push(l)}),n}function Sj(e,t,i){if(!e.parameters.randomness)return;let r=t.randomnessObject,s=i.randomnessObject;if(!s)return;let n=[],a=e.parameters.randomnessObject;return A_.forEach(o=>{let l=Go(o,a,r??{},s);l&&n.push(l)}),n}function bl(e,t,i,r,s){let n=[];return e.data.visible&&n.push(...gj(e,t,i,s)),e.data.visible&&n.push(...yj(e,t,i)),Es(e)?(e instanceof Or&&e.data.visible&&n.push(...nj(e,t,i,r)),e.data.visible&&n.push(...oj(e,t,i,r))):Ok(e)?e.data.visible&&n.push(...aj(e,t,i,r)):Dk(e)&&n.push(...sj(e,t,i)),n.length?{update:a=>{n.forEach(o=>o.update(a))},start:a=>{n.forEach(o=>o.start?.(a))},end:a=>{n.forEach(o=>o.end?.(a))}}:void 0}var rb=new M;function wA(e,t,i,r=!1){let s=[];t.traverseObject(n=>{if(r&&(n.rigidBody?.setTranslation(n.position0,!0),n.rigidBody?.setRotation(n.rotation0,!0),n.rigidBody?.setLinvel(rb,!0),n.rigidBody?.setAngvel(rb,!0)),!Ft.is(n))return;let a=n.uuid,o=n.data;if(delete n.states,!o.states)return;let l=!1;s.some(h=>e.objects.isDescendantOf(a,h))?l=!0:o.physics?.fusedBody===!0&&o.physics.rigidBody==="dynamic"&&s.push(a),n.data=o,n.currentState=null,n.reversibleToState=null,n.currentTransitionEvent=null;for(let h of o.states)e.environment.usePhysics===!0&&o.physics&&(o.physics.rigidBody==="dynamic"||l)&&(h.data.position!==void 0||h.data.rotation!==void 0||h.data.hiddenMatrix!==void 0)||(n.states||(n.states={}),n.states[h.id]=Wn.patch(o,h.data));Aj(t,n,null,i,o.events.find(h=>h.data.type==="Follow"||h.data.type==="LookAt")!==void 0)})}function Aj(e,t,i,r,s=!1){t instanceof Or&&t.removeInteractionGeometry(),t.changeSelectedState(i,{scene:e,shared:r},s),t instanceof Or&&t.updateGeometryGroupsIfNeeded()}function Mj(e){let t;switch(e.easing){case 0:t="cubicBezier( 0, 0, 1, 1 )";break;case 1:t="cubicBezier( .25, .1, .25, 1 )";break;case 2:t="cubicBezier( .42, 0, 1, 1 )";break;case 3:t="cubicBezier( 0, 0, .58, 1 )";break;case 4:t="cubicBezier( .42, 0, .58, 1 )";break;case 5:let{control1:i,control2:r}=e;t=`cubicBezier(
|
|
4912
4912
|
${i[0]}, ${i[1]}, ${r[0]}, ${r[1]}
|
|
4913
|
-
)`;break;case 6:let{mass:s,stiffness:n,damping:a,velocity:o}=e;t=`spring( ${s}, ${n}, ${a}, ${o} )`;break;default:t="linear"}return{duration:e.duration,easing:t}}function Ej(e){let t={delay:0,repeatDelay:0,loop:e.repeat===-1?!0:e.repeat+1};if(e.repeat===0)t.direction="normal",t.rewind=e.direction==="pingpong-rewind";else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1;break}switch(e.delayDirection){case"start-once":break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay;break}return t}var Cj=class{constructor(e,t,i,r,s,n){if(this.object=e,this.data=r,this.sharedAssets=s,this.allowSlerp=n,this.targets={t:0},this.firstLoop=!0,this.reverse=!1,this._playing=!1,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.dispatchEvent({type:"requestRender"})),this.targets.t===0?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):this.targets.t===1?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{let a,o;this.reverse?(a=this.to,o=this.from):(a=this.from,o=this.to),this.object.reversibleToState=o.id;let l=this.targets.t>.5?a.id:o.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=l,this.object.dispatchEvent({type:"beginState",state:l})},this.onChangeComplete=()=>{let a,o;this.reverse?(a=this.to,o=this.from):(a=this.from,o=this.to),this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=o.id;let l=this.targets.t<.5?a.id:o.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=l,this.object.dispatchEvent({type:"completeState",state:l})},this.onFirstLoop=()=>{if(this.useCurrentState){let a,o;this.reverse?(a=this.to,o=this.from):(a=this.from,o=this.to),this.callback=bl(this.object,a.data,o.data,this.sharedAssets,this.allowSlerp)}},t===i)throw new Error("Missing property");if(t===void 0){let a=this.getState(this.object.currentState===i?this.object.prevState:this.object.currentState);if(!a)throw new Error("Missing property");this.from=a}else{let a=this.getState(t);if(!a)throw new Error("Missing property");this.from=a}if(i===void 0)throw new Error("Missing property");{let a=this.getState(i);if(!a)throw new Error("Missing property");this.to=a}this.useCurrentState=t===void 0||i===void 0,this.params={targets:this.targets,t:1,autoplay:!1,...Ej(r),...Mj(r),change:this.onChange},this.callback=bl(this.object,t===void 0?{}:this.from.data,i===void 0?{}:this.to.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params}),this.core.finished.then(()=>this._playing=!1)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}get playing(){return this._playing}getState(e){let t,i;if(typeof e=="string"?(t=e,i=this.object.states?.[t]):e===null&&(t=null,i=this.object.data),!(t===void 0||i===void 0))return{id:t,data:i}}play(){if(this._playing)return!1;this.core.play(),this._playing=!0}pause(){this.core?.pause(),this._playing=!1}stop(){this.pause(),this.seek(0),this.core?.reset(),this._playing=!1}seek(e){let t=e*(this.core?.duration??1);this.core?.seek(t)}alternateDirection(){this._changeBegan=!1,this._changeCompleted=!0,this.targets.t=0;let e;this.object.reversibleToState===this.from.id?(this.reverse=!1,e=this.to):(this.reverse=!0,e=this.from),this.callback=bl(this.object,{},e.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params})}changeDirectionToNormal(){this._changeBegan=!1,this._changeCompleted=!0,this.targets.t=0,this.reverse=!1,this.callback=bl(this.object,{},this.to.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params})}changeDirectionToReverse(){this._changeBegan=!1,this._changeCompleted=!0,this.targets.t=0,this.reverse=!0,this.callback=bl(this.object,{},this.from.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params,loop:0})}dispose(){this.pause()}},oo=class extends zi{constructor(e,t,i){if(super(),this.data=e,this.scene=t,this.sharedAssets=i,!e.object)throw new Error("Missing property");let r=t.find(e.object);if(!r)throw new Error("Missing property");if(!r.states)throw new Error("Missing property");if(this.object=r,e.tweens.length<1)throw new Error("Missing property");this.startOnceDelay=e.tweens[1].data.delayDirection==="start-once"?e.tweens[1].data.delay:0}get playing(){return this.tween?.playing??!1}init(){try{let e=this.data.tweens[0],t=this.data.tweens[1];this.tween?.pause(),this.tween=new Cj(this.object,e.data.state,t.data.state,t.data,this.sharedAssets,this.data.allowSlerp??!1)}catch(e){e instanceof Error&&console.error(e.message)}}play(){if(this.playing)return!1;clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{try{this.init(),this.tween?.play()}catch(e){e instanceof Error&&console.error(e.message)}},this.startOnceDelay)}pause(){this.tween?.pause(),clearTimeout(this.timeoutId),delete this.timeoutId}stop(){this.tween?.stop(),clearTimeout(this.timeoutId),delete this.timeoutId}seek(e){this.tween?.seek(e)}toggle(){!this.tween||(clearTimeout(this.timeoutId),this.tween.changeCompleted?this.timeoutId=window.setTimeout(()=>{this.tween&&(this.tween.pause(),this.tween.alternateDirection(),this.tween.play())},this.startOnceDelay):(this.tween.pause(),this.tween.alternateDirection(),this.tween.play()))}playFromCurrent(){!this.tween||(clearTimeout(this.timeoutId),this.tween.changeCompleted?this.timeoutId=window.setTimeout(()=>{this.tween&&(this.tween.pause(),this.tween.changeDirectionToNormal(),this.tween.play())},this.startOnceDelay):(this.tween.pause(),this.tween.changeDirectionToNormal(),this.tween.play()))}reverseFromCurrent(){!this.tween||(clearTimeout(this.timeoutId),this.tween.changeCompleted?this.timeoutId=window.setTimeout(()=>{this.tween&&(this.tween.pause(),this.tween.changeDirectionToReverse(),this.tween.play())},this.startOnceDelay):(this.tween.pause(),this.tween.changeDirectionToReverse(),this.tween.play()))}dispose(){this.tween?.dispose()}};function oa(e,t,i,r,s,n){let a={Audio:[],Video:[],Link:[],Reset:[],Transition:[]};return t.forEach(({id:o,data:l})=>{try{l.type==="Audio"?al[e.type].includes("Audio")&&a.Audio.push(new ao(o,l,i,s)):l.type==="Video"?al[e.type].includes("Video")&&a.Video.push(new Qd(o,l,i)):l.type==="Link"?al[e.type].includes("Link")&&a.Link.push(new S8(l,n)):l.type==="Reset"?al[e.type].includes("Reset")&&a.Reset.push(new A8(r.data,r,s,n)):l.type==="Transition"&&al[e.type].includes("Transition")&&a.Transition.push(new oo(l,r,s))}catch{}}),a}function la(e){Object.values(e).forEach(t=>{t.forEach(i=>{(i instanceof ao||i instanceof Qd||i instanceof oo)&&i.dispose()})})}var cv=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],_A=e=>cv.find(([t,i])=>i===e)?.[0],Au=e=>cv.find(([t])=>t===e)?.[1],Tj=(e,t)=>{let i=_A(e);if(i){let r=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(r,"target",{writable:!1,value:t}),r}},Pj=class extends _n{constructor(e){super(e),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=i=>{if(!i.eventName||!i.target)return;let r=this.splineEvents[_A(i.eventName)]?.[i.target.uuid];if(!r)return;i.eventName==="Scroll"&&i.deltaY!==void 0&&Object.assign(r,{deltaY:i.deltaY});let{domElement:s}=this.eventContext;s.dispatchEvent(r)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{if(i.data?.events.length){for(let[r,s]of cv)if(i.data.events.some(n=>n.data.type===s&&!n.data.disabled)){this.objectsPerEvents.has(r)?this.objectsPerEvents.get(r)?.push(i):this.objectsPerEvents.set(r,[i]);let n={id:i.uuid,name:i.name},a=Tj(s,n),o=this.splineEvents[r];o?o[i.uuid]=a:this.splineEvents[r]={[i.uuid]:a}}}})}connect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.removeEventListener("beginEvent",this.onBeginEvent)})})}},Dj=class{constructor(e,t,i,r,s,n){if(this.id=e,this.data=t,this.object=i,this.entered=!1,this.useToggle=t.toggle,(t.type==="KeyDown"||t.type==="KeyUp"||t.type==="KeyPress")&&!t.key)throw new Error("Missing property");this.actions=oa(t,t.actions,i,r,s,n)}disconnect(){la(this.actions)}dispatch(){this.useToggle?(this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.actions.Transition.forEach(e=>{e.toggle()})):this.data.type==="MousePress"||this.data.type==="KeyPress"?(this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))):this.actions.Transition.some(e=>e.playing)||this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()})}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}},Oj=class extends _n{constructor(e,t,i){super(e),this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.onMouseDown=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseDown"))},this.onMouseUp=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent())},this.onMousePressRelease=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent(!0))},this.onKeyDown=n=>{this.heldKeys[n.key]||this.handleKeyEvent(n,"KeyDown"),this.heldKeys[n.key]=!0},this.onKeyUp=n=>{this.handleKeyEvent(n,"KeyUp")},this.onKeyPressDown=n=>{this.heldKeysPress[n.key]||this.handleKeyEvent(n,"KeyPress"),this.heldKeysPress[n.key]=!0},this.onKeyPressUp=n=>{this.handleKeyEvent(n,"KeyPress",!0)},this.releaseHeldKey=n=>{delete this.heldKeys[n.key]},this.releaseHeldKeyPress=n=>{delete this.heldKeysPress[n.key]},this._onUserEvent=({eventName:n,target:a,reverse:o})=>{if(!n||!a)return;let l=Au(n);l&&(l==="MouseDown"||l==="MouseUp"||l==="MousePress"?(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent(o)})):(l==="KeyDown"||l==="KeyUp"||l==="KeyPress")&&(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent()})))};let{scene:r,sharedAssets:s}=this.eventContext;r.traverseEntity(n=>{if(!n.data?.events.length)return;let a=n.visible?["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]:["KeyDown","KeyUp","KeyPress"];for(let o of a){let l=this.eventsPerObjects[o];n.data.events.filter(({data:h})=>h.type===o&&h.disabled!==!0).forEach(({id:h,data:u})=>{try{let c=new Dj(h,u,n,r,s,{controlsManager:t,eventManager:i});c.actions.Video.length&&(this.hasVideoAction=!0),l[n.uuid]?l[n.uuid].push(c):l[n.uuid]=[c]}catch{}}),l[n.uuid]?.length&&this.objectsPerTypes[o].push(n)}})}connect(){let{domElement:e}=this.eventContext;this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),this.objectsPerTypes.MouseDown?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.addEventListener("userEvent",this._onUserEvent)})})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(t=>{Object.values(t).forEach(i=>{i.forEach(r=>{r.disconnect()})})}),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.removeEventListener("userEvent",this._onUserEvent)})})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,scene:r}=this.eventContext,s=this.objectsPerTypes[e];if(s.length)if(t){let n=Im(i,r,s);Bm(n).forEach(a=>{this.eventsPerObjects[e][a.uuid]&&this.handleObjectMouseEventDispatch(a,e)})}else s.forEach(n=>{qd(i,n)&&this.handleObjectMouseEventDispatch(n,e)})}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=[];if(i.length){if(!e){let{stopRaycast:s,raycaster:n,scene:a}=this.eventContext;if(s){let o=Im(n,a,i);r=Bm(o)}else i.forEach(o=>{qd(n,o)&&r.push(o)})}this._prevObjects.length&&this._prevObjects.forEach(s=>{r.includes(s)||this.handleObjectMouseEventDispatchRelease(s,t)}),r.length&&r.forEach(s=>{this.handleObjectMouseEventDispatch(s,t)}),this._prevObjects=r}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let s=this.eventsPerObjects[t][r.uuid];s.some(({data:n})=>"key"in n&&n.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),s.forEach(n=>{"key"in n.data&&n.data.key===e.key&&(i?n.dispatchRelease():n.dispatch())})})}},Lj=new M,Ij=new M,SA=class{constructor(e,t,i,r){this.actionsIn=oa(e,e.inActions,t,i,r),this.actionsOut=oa(e,e.outActions,t,i,r)}disconnect(){la(this.actionsIn),la(this.actionsOut)}},Bj=class extends SA{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrix=()=>{let l=Lj.setFromMatrixPosition(this.objects[0].matrixWorld),h=Ij.setFromMatrixPosition(this.objects[1].matrixWorld),u=l.distanceTo(h)<=this.distance?"in":"out";if(this.stage!==u){(this.stage==="in"?this.actionsIn:this.actionsOut).Transition.forEach(d=>d.pause());let c=u==="in"?this.actionsIn:this.actionsOut;c.Audio.forEach(d=>d.dispatchConditional()),c.Video.forEach(d=>d.dispatchConditional()),this.object.currentTransitionEvent=this.id,c.Transition.forEach(d=>d.play()),this.stage=u}};let{distance:n,fromObject:a,toObject:o}=t.condition;this.distance=n;for(let l of[a,o]){if(!l)throw new Error("Missing property");let h=r.find(l);if(!h)throw new Error("Missing property");this.objects.push(h)}}connect(){this.objects.forEach(e=>{e.addEventListener("updateMatrix",this.onUpdateMatrix)}),this.onUpdateMatrix()}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrix",this.onUpdateMatrix)})}},Rj=class extends SA{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.onBegin=({target:o,state:l})=>{this.toState!==l&&(this.actionsOut.Audio.forEach(h=>h.dispatchConditional()),this.actionsOut.Video.forEach(h=>h.dispatchConditional()),this.actionsIn.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this.id,this.actionsOut.Transition.forEach(h=>h.play()))},this.onComplete=({target:o,state:l})=>{this.toState===l&&(this.actionsIn.Audio.forEach(h=>h.dispatchConditional()),this.actionsIn.Video.forEach(h=>h.dispatchConditional()),this.actionsOut.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this.id,this.actionsIn.Transition.forEach(h=>h.play()))};let{condition:n}=t;if(!n.object)throw new Error("Missing property");let a=r.find(n.object);if(!a)throw new Error("Missing property");if(this.toObject=a,n.state&&!this.toObject.states?.[n.state])throw new Error("Missing property");this.toState=n.state}connect(){(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.addEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.addEventListener("completeState",this.onComplete)}disconnect(){super.disconnect(),(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.removeEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.removeEventListener("completeState",this.onComplete)}},Nj=class extends _n{constructor(e){super(e),this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1;let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="Conditional")try{let a;n.condition.type==="Comparison"||(n.condition.type==="Distance"?a=new Bj(s,n,r,t,i):n.condition.type==="State"&&(a=new Rj(s,n,r,t,i))),a&&(this.eventsPerConditions[n.condition.type].push(a),(a.actionsIn.Video.length||a.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch{}}})}connect(){super.connect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.disconnect()))}},Ga=new M,nf=new M,af=new M,zc=new M,sb=new ar,nb=.01,zj={type:"requestRender"},Fj=function(){let e=new M,t=new M;return(i,r,s)=>s>0?(e.subVectors(i,r),e.length()<=s?i:t.copy(r).add(e.normalize().multiplyScalar(s))):r}(),ab=function(){let e=new Se;return(t,i)=>{t.position.copy(i),t.parent!==null&&(e.copy(t.parent.matrixWorld).invert(),t.position.applyMatrix4(e)),e.copy(t.hiddenMatrix).invert(),t.position.applyMatrix4(e),t.updateMatrix(),t.hasNonUniformScale&&(t.updateMatrixWorld(),t.updateMatrixWorldSVD()),t instanceof Zi&&cn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),Uj=class{constructor(e,t,i){this.data=e,this.object=t,this.tempPosition=new M,this.started=!1,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new M,this.target=e.target?i.find(e.target):void 0,this.maxDelta=e.maxDelta??0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.snapDampingFactor,this.object.getWorldPosition(this.worldPosition0)}},kj=class extends _n{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(qe.length>1)){this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="Follow"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new Uj(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.started=!1,i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tempPosition:t,object:i,maxDelta:r,plane:s}=e;if(i.getWorldPosition(af),e.isReset)zc.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(zc);else{let{camera:a,raycaster:o}=this.eventContext;if(s==="custom"?(a.getWorldDirection(nf),nf.negate(),Ga.copy(nf)):s==="xy"?Ga.set(0,0,1):s==="xz"?Ga.set(0,1,0):s==="yz"&&Ga.set(1,0,0),sb.setFromNormalAndCoplanarPoint(Ga,af),!o.ray.intersectPlane(sb,zc))return}let n=Fj(af,zc,r);if(e.currentDampingFactor>1||e.snapComplete===!1){e.started||(e.started=!0,t.copy(n));let a=Ga.subVectors(n,t).divideScalar(e.currentDampingFactor);t.add(a),ab(i,t),e.paused=a.length()<nb,e.snapComplete=a.length()<nb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)}else ab(i,n),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),i.dispatchEvent(zj)}},wl=new M,Fc=new M,Ln=new Se,_l=new nt,Va=new nt,Uc=new M,of=new M,Sl=new M,kc=new ar,ob=1e-5,jj={type:"requestRender"},Hj={type:"changeRotation"},Gj=function(){let e=new Se,t=new M,i=new M,r=new M;return(s,n)=>(n==="x"?(t.set(0,0,1),i.set(0,1,0),r.set(-1,0,0)):n==="y"?(t.set(1,0,0),i.set(0,0,1),r.set(0,-1,0)):(t.set(1,0,0),i.set(0,1,0),r.set(0,0,1)),t.applyMatrix4(s),i.applyMatrix4(s),r.applyMatrix4(s),e.makeBasis(t,i,r))}(),lb=function(){let e=new Se;return function(t,i){t.parent!==null?e.multiplyMatrices(t.parent.matrixWorld,t.hiddenMatrix):e.copy(t.hiddenMatrix),i.premultiply(KS(e).invert()),t.rotation.setFromRotationMatrix(i),t.updateMatrix(),t instanceof Zi&&cn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),Vj=class{constructor(e,t,i){this.data=e,this.object=t,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldQuaternion0=new nt,this.target=e.target?i.find(e.target):void 0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.distance=e.distance??0,this.tilt=e.tilt??"up",this.axis=e.axis??"z",this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.dampingFactor,this.object.getWorldQuaternion(this.worldQuaternion0)}},Wj=class extends _n{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(qe.length>1)){this._lastMouseEvent=i,this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onScroll=i=>{if(this._lastMouseEvent){let r=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(r)}},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="LookAt"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new Vj(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?t.addEventListener("scroll",this.onScroll):(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{target:t,tilt:i,axis:r,distance:s,plane:n,object:a}=e,{camera:o,raycaster:l}=this.eventContext;if(a.getWorldPosition(Uc),!e.isReset){if(e.target)e.target.getWorldPosition(of);else if(n==="custom"?(o.getWorldDirection(Fc),Fc.negate(),s>0?kc.set(Fc,-s):kc.setFromNormalAndCoplanarPoint(Fc,Uc)):(n==="xy"?wl.set(0,0,1):n==="xz"?wl.set(0,1,0):n==="yz"&&wl.set(1,0,0),kc.setFromNormalAndCoplanarPoint(wl,Uc)),!l.ray.intersectPlane(kc,of))return}e.isReset||(t?i==="up"?Sl.set(0,1,0):i==="target"&&Sl.copy(t.up).applyMatrix4(Ln.extractRotation(t.matrixWorld)).normalize():n==="custom"?Sl.set(0,1,0):Sl.copy(wl)),e.isReset?Va.copy(e.worldQuaternion0):(Ln.lookAt(of,Uc,Sl),Ln.copy(Gj(Ln,r)),Va.setFromRotationMatrix(Ln)),e.currentDampingFactor>1||e.snapComplete===!1?(a.updateWorldMatrix(!0,!1),_l.setFromRotationMatrix(KS(a.matrixWorld)),_l.slerp(Va,1/e.currentDampingFactor),lb(a,Ln.makeRotationFromQuaternion(_l)),e.paused=8*(1-_l.dot(Va))<ob,e.snapComplete=8*(1-_l.dot(Va))<ob*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)):(lb(a,Ln.makeRotationFromQuaternion(Va)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),a.dispatchEvent(jj),a.dispatchEvent(Hj)}},Xj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=oa(t,t.actions,i,r,s)}disconnect(){la(this.actions)}dispatchEnter(){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))}dispatchLeave(){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent())}},Yj=class extends _n{constructor(e){super(e),this.eventsPerObjects={},this.objects=[],this._prevObjects=[],this.onMouseDown=r=>{qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onMouseUp=r=>{qe.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=r=>{qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Au(r);a&&a==="MouseHover"&&(s.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[s.uuid]?.forEach(o=>o.dispatchUserEvent(n)))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(!(!r.visible||!r.data?.events.length)){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="MouseHover")try{let a=new Xj(s,n,r,t,i);this.eventsPerObjects[r.uuid]?this.eventsPerObjects[r.uuid].push(a):this.eventsPerObjects[r.uuid]=[a]}catch{}this.eventsPerObjects[r.uuid]?.length&&this.objects.push(r)}})}connect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Si&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),e.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Si&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(i=>{i.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:i,raycaster:r,scene:s}=this.eventContext;if(i){let n=Im(r,s,this.objects);t=Bm(n)}else this.objects.forEach(n=>{qd(r,n)&&t.push(n)})}this._prevObjects.length&&this._prevObjects.forEach(i=>{t.includes(i)||(i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchLeave()))}),t.length&&t.forEach(i=>{i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchEnter())}),this._prevObjects=t}},qj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=oa(t,t.actions,i,r,s)}connect(){this.scrollCounter=0}disconnect(){la(this.actions)}dispatch(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(r=>{r.init()}));let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(r=>r.seek(i))}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},Qj=class extends _n{constructor(e){super(e),this.eventsPerObject=new Map,this.onWheel=r=>{[...this.eventsPerObject.entries()].forEach(([s,n])=>{s.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:r.deltaY}),n.forEach(a=>a.dispatch(r.deltaY))})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Au(r);a&&a==="Scroll"&&(s.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Scroll")continue;let a=new qj(s,n,r,t,i);this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])}})}connect(){[...this.eventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.eventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel))}disconnect(){window.removeEventListener("wheel",this.onWheel),this.domEventsNeeded.clear(),[...this.eventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},Zj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.actions=oa(t,t.actions,i,r,s)}disconnect(){la(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()})}dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof no?t.interaction.audioPlayer.play():t.interaction instanceof Rm&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof Wl?t.interaction.play(i==="autoplay"):t.interaction instanceof Nm&&t.interaction.dispatch())})}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Audio.forEach(t=>{t.interaction instanceof no?t.interaction.audioPlayer.play():t.interaction instanceof Rm&&t.interaction.dispatch()}),this.actions.Video.forEach(t=>{t.interaction instanceof Wl?t.interaction.play():t.interaction instanceof Nm&&t.interaction.dispatch()})}},Kj=class extends _n{constructor(e){super(e),this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:r,isExport:s}=this.eventContext;(s?document:r).removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Start"}),a.forEach(o=>{o.dispatchAfter("any")})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("autoplay")})})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Au(r);a&&a==="Start"&&(s.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}),this.eventsAfterPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Start")continue;let a=new Zj(s,n,r,t,i);a.actions.Transition.length&&(this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])),a.actions.Audio.length&&(this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a])),a.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a]))}})}connect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.addEventListener("userEvent",this.onUserEvent)}),this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(i=>i.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.removeEventListener("userEvent",this.onUserEvent),s.forEach(n=>n.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(i=>i.disconnect())})}},Jj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.disabled=!0,this.actions=oa(t,t.actions,i,r,s),this.target=t.target,this.useToggle=t.toggle}disconnect(){la(this.actions)}dispatch(){this.disabled||(this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.useToggle?(this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.actions.Transition.forEach(e=>{e.toggle()})):this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}))}},Ot;HN.then(e=>Ot=e);var bi=new M,qs=new nt,In=new M,lf=new ui(0,0,0,"YXZ"),$j={type:"updateMatrix"},AA={type:"beginEvent",eventName:"Collision"};function eH(e){if(e.scene.environment.usePhysics)return!0;let t=!1;return e.scene.objects.traverse((i,r)=>{for(let s of r.events)if(s.data.disabled!==!0&&s.data.type==="GameControl"&&s.data.collisionEnabled){t=!0;break}}),t}var hb=e=>e.states.some(t=>t.data.position!==void 0||t.data.rotation!==void 0||t.data.hiddenMatrix!==void 0||t.data.cloner!==void 0),cb=e=>e.events.find(t=>t.data.disabled!==!0&&t.data.type==="Follow"),tH=class{constructor(e,t,i,r,s,n=!1){this.scene=t,this.sharedAssets=s,this.isExport=n,this.orbitControlsNeedsUpdate=!0,this.gameControls=[],this.gameControlStates=[],this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],eventsPerObjects:{},colliderToEntity:{},gamePads:[]},this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.processRigidBody=f=>{if(f.bodyType()!==Ot.RigidBodyType.Dynamic)return;f.isSleeping()||this.nActiveRigidBodies++;let[v,y,b]=this.rigidBodyToMesh.get(f.handle);if(bi.copy(f.translation()).multiplyScalar(this.pixelsPerMeter),qs.copy(f.rotation()),v.matrixWorld.compose(bi,qs,y),v.hasNonUniformScale&&v.matrixWorld.multiply(v.shearScale),v.dispatchEvent($j),b){let x=v.cloner;if(x&&x.objectForSample===void 0){x.matrixWorld.copy(v.matrixWorld);for(let w of x.children)w.updateMatrixWorld(!0)}for(let w of v.children)w.updateMatrixWorld(!0)}},this.handleCollisionEvents=(f,v,y)=>{if(y!==!1)if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[f])){let b=this.sharedGameControlGlobals.colliderToEntity[v],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[v])){let b=this.sharedGameControlGlobals.colliderToEntity[f],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else{let b=this.sharedGameControlGlobals.colliderToEntity[f],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x!==void 0)for(let A of x)A.data.target==="scene"&&this.dispatchCollisionEvent(A,b);let w=this.sharedGameControlGlobals.colliderToEntity[v],_=this.sharedGameControlGlobals.eventsPerObjects[w?.uuid];if(_!==void 0)for(let A of _)A.data.target==="scene"&&this.dispatchCollisionEvent(A,w)}},this.onBeginState=()=>{this.orbitControls&&(this.orbitControls.enabled=!1,this.orbitControlsNeedsUpdate=!1)},this.onCompleteState=({target:f})=>{this.orbitControls&&(this.orbitControls.enabled=!0,this.orbitControls.resetTo(f.getTarget(bi),f.position,f.zoom,f.isUpVectorFlipped),f.prevState=null,f.currentState=null,f.reversibleToState=null,f.currentTransitionEvent=null,this.orbitControlsNeedsUpdate=!0)},this.domElement=i.domElement;let a;e.scene.publish.playCamera===null?a=bu.PERSONAL_CAMERA_ID:a=e.scene.publish.playCamera;let o=this.scene.find(a),l=!1,h,u=5,c=8,d=9,p="drag";if(this.usePhysics=e.scene.environment.usePhysics??Hi.defaultData.usePhysics,this.pixelsPerMeter=e.scene.environment.pixelsPerMeter??Hi.defaultData.pixelsPerMeter,e.scene.objects.data(e.scene.publish.gameControlObject)?.events.forEach(f=>{f.data.disabled!==!0&&f.data.type==="GameControl"&&(h=f.data.keyAssignments,u=f.data.joystickPosLoc,c=f.data.joystickRotLoc,d=f.data.jumpTouchButtonLoc,p=f.data.rotByTouch)}),this.scene.traverseEntity(f=>{f.dataPatched.events.forEach(v=>{if(v.data.disabled||v.data.type!=="GameControl")return;let y=f;for(;(y=y.parent)?.parent!==null;)if(y.dataPatched.physics?.fusedBody)return;v.data.collisionEnabled&&(this.needsCollisionDetection=!0),this.gameControlStates.push([f,v.data])})}),this.usePhysics&&this.initPhysics(e.scene.environment.gravity??Hi.defaultData.gravity),this.gameControlStates.forEach(([f,v])=>{l=l||v.camera===o.uuid||f.uuid===o.uuid;let y=new MA(f,i.domElement,{...v,keyAssignments:h},e.scene.environment,this.sharedGameControlGlobals,f.uuid!==o.uuid&&v.camera===o.uuid,o,this.scene,s);y.addEventListener("change",r),y.addEventListener("end",r),y.addEventListener("start",r),this.gameControls.push(y),Si&&v.touchControl&&(this.joystickToGameControls[u]!==void 0?this.joystickToGameControls[u].push([y,"pos"]):this.joystickToGameControls[u]=[[y,"pos"]],v.moveMode==="walk"&&(this.joystickToGameControls[d]!==void 0?this.joystickToGameControls[d].push([y,"jmp"]):this.joystickToGameControls[d]=[[y,"jmp"]]),p==="joystick"&&(this.joystickToGameControls[c]!==void 0?this.joystickToGameControls[c].push([y,"rot"]):this.joystickToGameControls[c]=[[y,"rot"]]))}),l===!1){let{enableRotate:f,enablePan:v,enableZoom:y,autoRotate:b,hoverRotatePanMode:x}=e.scene.publish.orbitControls;if(f||v||y||b||x!==0){this.orbitControls=new EA(o,i.domElement,this.isExport),this.orbitControls.addEventListener("change",r),this.orbitControls.addEventListener("end",r),this.orbitControls.addEventListener("start",r),this.orbitControls.fromJSON(e.scene.publish.orbitControls,e.scene.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.connect(),this.orbitControls.update();let w=this.orbitControls.object;w.addEventListener("beginState",this.onBeginState),w.addEventListener("completeState",this.onCompleteState)}}let m=i.domElement.width/i.getPixelRatio(),g=i.domElement.height/i.getPixelRatio();this.joystickToGameControls.forEach((f,v)=>{let y=document.body.appendChild(document.createElement("div")),[b,x,w]=(e.scene.publish.joystickSizeAndXYOffset??To.defaultData.joystickSizeAndXYOffset)[v],_=(m-5*b)/4+b,A={},S=f.some(P=>P[1]==="jmp"),E=S?0:b;v<10?(v<5?A.top=E/2:A.bottom=E/2,A.left=E/2+v%5*_):v===10?(A.left=E/2,A.top=g/2):(A.right=E/2,A.top=g/2),A.top?A.top-=x[1]:A.bottom+=x[1],A.left?A.left+=x[0]:A.right-=x[0];for(let P in A)A[P]+="px";if(S){let P=y.appendChild(document.createElement("div"));Object.assign(P.style,A,{position:"absolute",width:b+"px",height:b+"px",backgroundColor:`rgba(255,255,255,${w==="show"?.4:0})`,zIndex:"9999",borderRadius:b+"px",border:w==="show"?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let R=b/16*16*.4;w==="show"&&(P.innerHTML=`
|
|
4913
|
+
)`;break;case 6:let{mass:s,stiffness:n,damping:a,velocity:o}=e;t=`spring( ${s}, ${n}, ${a}, ${o} )`;break;default:t="linear"}return{duration:e.duration,easing:t}}function Ej(e){let t={delay:0,repeatDelay:0,loop:e.repeat===-1?!0:e.repeat+1};if(e.repeat===0)t.direction="normal",t.rewind=e.direction==="pingpong-rewind";else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1;break}switch(e.delayDirection){case"start-once":break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay;break}return t}var Cj=class{constructor(e,t,i,r,s,n){if(this.object=e,this.data=r,this.sharedAssets=s,this.allowSlerp=n,this.targets={t:0},this.firstLoop=!0,this.reverse=!1,this._playing=!1,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.dispatchEvent({type:"requestRender"})),this.targets.t===0?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):this.targets.t===1?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{let a,o;this.reverse?(a=this.to,o=this.from):(a=this.from,o=this.to),this.object.reversibleToState=o.id;let l=this.targets.t>.5?a.id:o.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=l,this.object.dispatchEvent({type:"beginState",state:l})},this.onChangeComplete=()=>{let a,o;this.reverse?(a=this.to,o=this.from):(a=this.from,o=this.to),this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=o.id;let l=this.targets.t<.5?a.id:o.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=l,this.object.dispatchEvent({type:"completeState",state:l})},this.onFirstLoop=()=>{if(this.useCurrentState){let a,o;this.reverse?(a=this.to,o=this.from):(a=this.from,o=this.to),this.callback=bl(this.object,a.data,o.data,this.sharedAssets,this.allowSlerp)}},t===i)throw new Error("Missing property");if(t===void 0){let a=this.getState(this.object.currentState===i?this.object.prevState:this.object.currentState);if(!a)throw new Error("Missing property");this.from=a}else{let a=this.getState(t);if(!a)throw new Error("Missing property");this.from=a}if(i===void 0)throw new Error("Missing property");{let a=this.getState(i);if(!a)throw new Error("Missing property");this.to=a}this.useCurrentState=t===void 0||i===void 0,this.params={targets:this.targets,t:1,autoplay:!1,...Ej(r),...Mj(r),change:this.onChange},this.callback=bl(this.object,t===void 0?{}:this.from.data,i===void 0?{}:this.to.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params}),this.core.finished.then(()=>this._playing=!1)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}get playing(){return this._playing}getState(e){let t,i;if(typeof e=="string"?(t=e,i=this.object.states?.[t]):e===null&&(t=null,i=this.object.data),!(t===void 0||i===void 0))return{id:t,data:i}}play(){if(this._playing)return!1;this.core.play(),this._playing=!0}pause(){this.core?.pause(),this._playing=!1}stop(){this.pause(),this.seek(0),this.core?.reset(),this._playing=!1}seek(e){let t=e*(this.core?.duration??1);this.core?.seek(t)}alternateDirection(){this._changeBegan=!1,this._changeCompleted=!0,this.targets.t=0;let e;this.object.reversibleToState===this.from.id?(this.reverse=!1,e=this.to):(this.reverse=!0,e=this.from),this.callback=bl(this.object,{},e.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params})}changeDirectionToNormal(){this._changeBegan=!1,this._changeCompleted=!0,this.targets.t=0,this.reverse=!1,this.callback=bl(this.object,{},this.to.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params})}changeDirectionToReverse(){this._changeBegan=!1,this._changeCompleted=!0,this.targets.t=0,this.reverse=!0,this.callback=bl(this.object,{},this.from.data,this.sharedAssets,this.allowSlerp),this.core=Nc({...this.params,loop:0})}dispose(){this.pause()}},oo=class extends zi{constructor(e,t,i){if(super(),this.data=e,this.scene=t,this.sharedAssets=i,!e.object)throw new Error("Missing property");let r=t.find(e.object);if(!r)throw new Error("Missing property");if(!r.states)throw new Error("Missing property");if(this.object=r,e.tweens.length<1)throw new Error("Missing property");this.startOnceDelay=e.tweens[1].data.delayDirection==="start-once"?e.tweens[1].data.delay:0}get playing(){return this.tween?.playing??!1}init(){try{let e=this.data.tweens[0],t=this.data.tweens[1];this.tween?.pause(),this.tween=new Cj(this.object,e.data.state,t.data.state,t.data,this.sharedAssets,this.data.allowSlerp??!1)}catch(e){e instanceof Error&&console.error(e.message)}}play(){if(this.playing)return!1;clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{try{this.init(),this.tween?.play()}catch(e){e instanceof Error&&console.error(e.message)}},this.startOnceDelay)}pause(){this.tween?.pause(),clearTimeout(this.timeoutId),delete this.timeoutId}stop(){this.tween?.stop(),clearTimeout(this.timeoutId),delete this.timeoutId}seek(e){this.tween?.seek(e)}toggle(){!this.tween||(clearTimeout(this.timeoutId),this.tween.changeCompleted?this.timeoutId=window.setTimeout(()=>{this.tween&&(this.tween.pause(),this.tween.alternateDirection(),this.tween.play())},this.startOnceDelay):(this.tween.pause(),this.tween.alternateDirection(),this.tween.play()))}playFromCurrent(){!this.tween||(clearTimeout(this.timeoutId),this.tween.changeCompleted?this.timeoutId=window.setTimeout(()=>{this.tween&&(this.tween.pause(),this.tween.changeDirectionToNormal(),this.tween.play())},this.startOnceDelay):(this.tween.pause(),this.tween.changeDirectionToNormal(),this.tween.play()))}reverseFromCurrent(){!this.tween||(clearTimeout(this.timeoutId),this.tween.changeCompleted?this.timeoutId=window.setTimeout(()=>{this.tween&&(this.tween.pause(),this.tween.changeDirectionToReverse(),this.tween.play())},this.startOnceDelay):(this.tween.pause(),this.tween.changeDirectionToReverse(),this.tween.play()))}dispose(){this.tween?.dispose()}};function oa(e,t,i,r,s,n){let a={Audio:[],Video:[],Link:[],Reset:[],Transition:[]};return t.forEach(({id:o,data:l})=>{try{l.type==="Audio"?al[e.type].includes("Audio")&&a.Audio.push(new ao(o,l,i,s)):l.type==="Video"?al[e.type].includes("Video")&&a.Video.push(new Qd(o,l,i)):l.type==="Link"?al[e.type].includes("Link")&&a.Link.push(new S8(l,n)):l.type==="Reset"?al[e.type].includes("Reset")&&a.Reset.push(new A8(r.data,r,s,n)):l.type==="Transition"&&al[e.type].includes("Transition")&&a.Transition.push(new oo(l,r,s))}catch{}}),a}function la(e){Object.values(e).forEach(t=>{t.forEach(i=>{(i instanceof ao||i instanceof Qd||i instanceof oo)&&i.dispose()})})}var cv=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],_A=e=>cv.find(([t,i])=>i===e)?.[0],Au=e=>cv.find(([t])=>t===e)?.[1],Tj=(e,t)=>{let i=_A(e);if(i){let r=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(r,"target",{writable:!1,value:t}),r}},Pj=class extends _n{constructor(e){super(e),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=i=>{if(!i.eventName||!i.target)return;let r=this.splineEvents[_A(i.eventName)]?.[i.target.uuid];if(!r)return;i.eventName==="Scroll"&&i.deltaY!==void 0&&Object.assign(r,{deltaY:i.deltaY});let{domElement:s}=this.eventContext;s.dispatchEvent(r)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{if(i.data?.events.length){for(let[r,s]of cv)if(i.data.events.some(n=>n.data.type===s&&!n.data.disabled)){this.objectsPerEvents.has(r)?this.objectsPerEvents.get(r)?.push(i):this.objectsPerEvents.set(r,[i]);let n={id:i.uuid,name:i.name},a=Tj(s,n),o=this.splineEvents[r];o?o[i.uuid]=a:this.splineEvents[r]={[i.uuid]:a}}}})}connect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(t=>{t.removeEventListener("beginEvent",this.onBeginEvent)})})}},Dj=class{constructor(e,t,i,r,s,n){if(this.id=e,this.data=t,this.object=i,this.entered=!1,this.useToggle=t.toggle,(t.type==="KeyDown"||t.type==="KeyUp"||t.type==="KeyPress")&&!t.key)throw new Error("Missing property");this.actions=oa(t,t.actions,i,r,s,n)}disconnect(){la(this.actions)}dispatch(){this.useToggle?(this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.actions.Transition.forEach(e=>{e.toggle()})):this.data.type==="MousePress"||this.data.type==="KeyPress"?(this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))):this.actions.Transition.some(e=>e.playing)||this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()})}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Link.forEach(t=>{t.dispatch()}),this.actions.Reset.forEach(t=>{t.dispatch()}),this.actions.Audio.forEach(t=>{t.dispatchBasic()}),this.actions.Video.forEach(t=>{t.dispatchBasic()})}},Oj=class extends _n{constructor(e,t,i){super(e),this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.onMouseDown=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseDown"))},this.onMouseUp=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent())},this.onMousePressRelease=n=>{qe.length>1||(this.eventContext.updateRaycaster(n),this.handleMousePressEvent(!0))},this.onKeyDown=n=>{this.heldKeys[n.key]||this.handleKeyEvent(n,"KeyDown"),this.heldKeys[n.key]=!0},this.onKeyUp=n=>{this.handleKeyEvent(n,"KeyUp")},this.onKeyPressDown=n=>{this.heldKeysPress[n.key]||this.handleKeyEvent(n,"KeyPress"),this.heldKeysPress[n.key]=!0},this.onKeyPressUp=n=>{this.handleKeyEvent(n,"KeyPress",!0)},this.releaseHeldKey=n=>{delete this.heldKeys[n.key]},this.releaseHeldKeyPress=n=>{delete this.heldKeysPress[n.key]},this._onUserEvent=({eventName:n,target:a,reverse:o})=>{if(!n||!a)return;let l=Au(n);l&&(l==="MouseDown"||l==="MouseUp"||l==="MousePress"?(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent(o)})):(l==="KeyDown"||l==="KeyUp"||l==="KeyPress")&&(a.dispatchEvent({type:"beginEvent",eventName:l}),this.eventsPerObjects[l]?.[a.uuid]?.forEach(h=>{h.dispatchUserEvent()})))};let{scene:r,sharedAssets:s}=this.eventContext;r.traverseEntity(n=>{if(!n.data?.events.length)return;let a=n.visible?["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]:["KeyDown","KeyUp","KeyPress"];for(let o of a){let l=this.eventsPerObjects[o];n.data.events.filter(({data:h})=>h.type===o&&h.disabled!==!0).forEach(({id:h,data:u})=>{try{let c=new Dj(h,u,n,r,s,{controlsManager:t,eventManager:i});c.actions.Video.length&&(this.hasVideoAction=!0),l[n.uuid]?l[n.uuid].push(c):l[n.uuid]=[c]}catch{}}),l[n.uuid]?.length&&this.objectsPerTypes[o].push(n)}})}connect(){let{domElement:e}=this.eventContext;this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),this.objectsPerTypes.MouseDown?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.addEventListener("userEvent",this._onUserEvent)})})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(t=>{Object.values(t).forEach(i=>{i.forEach(r=>{r.disconnect()})})}),Object.entries(this.objectsPerTypes).forEach(([t,i])=>{i.forEach(r=>{r.removeEventListener("userEvent",this._onUserEvent)})})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,scene:r}=this.eventContext,s=this.objectsPerTypes[e];if(s.length)if(t){let n=Im(i,r,s);Bm(n).forEach(a=>{this.eventsPerObjects[e][a.uuid]&&this.handleObjectMouseEventDispatch(a,e)})}else s.forEach(n=>{qd(i,n)&&this.handleObjectMouseEventDispatch(n,e)})}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=[];if(i.length){if(!e){let{stopRaycast:s,raycaster:n,scene:a}=this.eventContext;if(s){let o=Im(n,a,i);r=Bm(o)}else i.forEach(o=>{qd(n,o)&&r.push(o)})}this._prevObjects.length&&this._prevObjects.forEach(s=>{r.includes(s)||this.handleObjectMouseEventDispatchRelease(s,t)}),r.length&&r.forEach(s=>{this.handleObjectMouseEventDispatch(s,t)}),this._prevObjects=r}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(i=>{i.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let s=this.eventsPerObjects[t][r.uuid];s.some(({data:n})=>"key"in n&&n.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),s.forEach(n=>{"key"in n.data&&n.data.key===e.key&&(i?n.dispatchRelease():n.dispatch())})})}},Lj=new M,Ij=new M,SA=class{constructor(e,t,i,r){this.actionsIn=oa(e,e.inActions,t,i,r),this.actionsOut=oa(e,e.outActions,t,i,r)}disconnect(){la(this.actionsIn),la(this.actionsOut)}},Bj=class extends SA{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrix=()=>{let l=Lj.setFromMatrixPosition(this.objects[0].matrixWorld),h=Ij.setFromMatrixPosition(this.objects[1].matrixWorld),u=l.distanceTo(h)<=this.distance?"in":"out";if(this.stage!==u){(this.stage==="in"?this.actionsIn:this.actionsOut).Transition.forEach(d=>d.pause());let c=u==="in"?this.actionsIn:this.actionsOut;c.Audio.forEach(d=>d.dispatchConditional()),c.Video.forEach(d=>d.dispatchConditional()),this.object.currentTransitionEvent=this.id,c.Transition.forEach(d=>d.play()),this.stage=u}};let{distance:n,fromObject:a,toObject:o}=t.condition;this.distance=n;for(let l of[a,o]){if(!l)throw new Error("Missing property");let h=r.find(l);if(!h)throw new Error("Missing property");this.objects.push(h)}}connect(){this.objects.forEach(e=>{e.addEventListener("updateMatrix",this.onUpdateMatrix)}),this.onUpdateMatrix()}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrix",this.onUpdateMatrix)})}},Rj=class extends SA{constructor(e,t,i,r,s){super(t,i,r,s),this.id=e,this.data=t,this.object=i,this.onBegin=({target:o,state:l})=>{this.toState!==l&&(this.actionsOut.Audio.forEach(h=>h.dispatchConditional()),this.actionsOut.Video.forEach(h=>h.dispatchConditional()),this.actionsIn.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this.id,this.actionsOut.Transition.forEach(h=>h.play()))},this.onComplete=({target:o,state:l})=>{this.toState===l&&(this.actionsIn.Audio.forEach(h=>h.dispatchConditional()),this.actionsIn.Video.forEach(h=>h.dispatchConditional()),this.actionsOut.Transition.forEach(h=>h.pause()),this.object.currentTransitionEvent=this.id,this.actionsIn.Transition.forEach(h=>h.play()))};let{condition:n}=t;if(!n.object)throw new Error("Missing property");let a=r.find(n.object);if(!a)throw new Error("Missing property");if(this.toObject=a,n.state&&!this.toObject.states?.[n.state])throw new Error("Missing property");this.toState=n.state}connect(){(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.addEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.addEventListener("completeState",this.onComplete)}disconnect(){super.disconnect(),(this.actionsOut.Audio.length||this.actionsOut.Video.length||this.actionsOut.Transition.length)&&this.toObject.removeEventListener("beginState",this.onBegin),(this.actionsIn.Audio.length||this.actionsIn.Video.length||this.actionsIn.Transition.length)&&this.toObject.removeEventListener("completeState",this.onComplete)}},Nj=class extends _n{constructor(e){super(e),this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1;let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="Conditional")try{let a;n.condition.type==="Comparison"||(n.condition.type==="Distance"?a=new Bj(s,n,r,t,i):n.condition.type==="State"&&(a=new Rj(s,n,r,t,i))),a&&(this.eventsPerConditions[n.condition.type].push(a),(a.actionsIn.Video.length||a.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch{}}})}connect(){super.connect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(t=>t.disconnect()))}},Ga=new M,nf=new M,af=new M,zc=new M,sb=new ar,nb=.01,zj={type:"requestRender"},Fj=function(){let e=new M,t=new M;return(i,r,s)=>s>0?(e.subVectors(i,r),e.length()<=s?i:t.copy(r).add(e.normalize().multiplyScalar(s))):r}(),ab=function(){let e=new Se;return(t,i)=>{t.position.copy(i),t.parent!==null&&(e.copy(t.parent.matrixWorld).invert(),t.position.applyMatrix4(e)),e.copy(t.hiddenMatrix).invert(),t.position.applyMatrix4(e),t.updateMatrix(),t.hasNonUniformScale&&(t.updateMatrixWorld(),t.updateMatrixWorldSVD()),t instanceof Zi&&cn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),Uj=class{constructor(e,t,i){this.data=e,this.object=t,this.tempPosition=new M,this.started=!1,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new M,this.target=e.target?i.find(e.target):void 0,this.maxDelta=e.maxDelta??0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.snapDampingFactor,this.object.getWorldPosition(this.worldPosition0)}},kj=class extends _n{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(qe.length>1)){this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.tempPosition.copy(r.object.position),r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="Follow"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new Uj(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.started=!1,i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tempPosition:t,object:i,maxDelta:r,plane:s}=e;if(i.getWorldPosition(af),e.isReset)zc.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(zc);else{let{camera:a,raycaster:o}=this.eventContext;if(s==="custom"?(a.getWorldDirection(nf),nf.negate(),Ga.copy(nf)):s==="xy"?Ga.set(0,0,1):s==="xz"?Ga.set(0,1,0):s==="yz"&&Ga.set(1,0,0),sb.setFromNormalAndCoplanarPoint(Ga,af),!o.ray.intersectPlane(sb,zc))return}let n=Fj(af,zc,r);if(e.currentDampingFactor>1||e.snapComplete===!1){e.started||(e.started=!0,t.copy(n));let a=Ga.subVectors(n,t).divideScalar(e.currentDampingFactor);t.add(a),ab(i,t),e.paused=a.length()<nb,e.snapComplete=a.length()<nb*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)}else ab(i,n),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),i.dispatchEvent(zj)}},wl=new M,Fc=new M,Ln=new Se,_l=new nt,Va=new nt,Uc=new M,of=new M,Sl=new M,kc=new ar,ob=1e-5,jj={type:"requestRender"},Hj={type:"changeRotation"},Gj=function(){let e=new Se,t=new M,i=new M,r=new M;return(s,n)=>(n==="x"?(t.set(0,0,1),i.set(0,1,0),r.set(-1,0,0)):n==="y"?(t.set(1,0,0),i.set(0,0,1),r.set(0,-1,0)):(t.set(1,0,0),i.set(0,1,0),r.set(0,0,1)),t.applyMatrix4(s),i.applyMatrix4(s),r.applyMatrix4(s),e.makeBasis(t,i,r))}(),lb=function(){let e=new Se;return function(t,i){t.parent!==null?e.multiplyMatrices(t.parent.matrixWorld,t.hiddenMatrix):e.copy(t.hiddenMatrix),i.premultiply(KS(e).invert()),t.rotation.setFromRotationMatrix(i),t.updateMatrix(),t instanceof Zi&&cn(t.parent)&&t.invalidateDownstreamBooleanData(!0)}}(),Vj=class{constructor(e,t,i){this.data=e,this.object=t,this.paused=!0,this.snapComplete=!1,this.isReset=!1,this.worldQuaternion0=new nt,this.target=e.target?i.find(e.target):void 0,this.dampingFactor=e.dampingFactor?Math.max(e.dampingFactor,1):1,this.distance=e.distance??0,this.tilt=e.tilt??"up",this.axis=e.axis??"z",this.plane=e.plane??"custom",this.snapDampingFactor=8,this.currentDampingFactor=this.dampingFactor,this.object.getWorldQuaternion(this.worldQuaternion0)}},Wj=class extends _n{constructor(e){super(e),this.events=[],this.pairOfEventListeners=[],this.onMouseMove=i=>{if(!(qe.length>1)){this._lastMouseEvent=i,this.eventContext.updateRaycaster(i);for(let r of this.events)r.target===void 0&&this.updateSingleEvent(r)}},this.onMouseEnter=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,r.isReset=!1,r.currentDampingFactor=r.snapDampingFactor)},this.onMouseLeave=i=>{for(let r of this.events)r.target===void 0&&(r.snapComplete=!1,(r.data.resetOnPointerLeave??!1)&&(r.isReset=!0,r.currentDampingFactor=r.snapDampingFactor),this.updateSingleEvent(r))},this.onScroll=i=>{if(this._lastMouseEvent){let r=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(r)}},this.onTargetChange=i=>()=>{this.updateSingleEvent(i)};let{scene:t}=this.eventContext;t.traverseEntity(i=>{let r=i.data?.events.find(s=>s.data.type==="LookAt"&&!s.data.disabled);r&&(!t.data.environment.usePhysics||i.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new Vj(r.data,i,t))})}connect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),t.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?t.addEventListener("scroll",this.onScroll):(e.addEventListener("pointerenter",this.onMouseEnter),e.addEventListener("pointerleave",this.onMouseLeave));for(let i of this.events)if(i.target!==void 0){let r=i.target,s=this.onTargetChange(i);this.pairOfEventListeners.push([r,s]),r.addEventListener("requestRender",s)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;this.domEventsNeeded.clear(),Si&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll);for(let[i,r]of this.pairOfEventListeners)i.removeEventListener("requestRender",r);for(let i of this.events)i.paused=!0,i.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{target:t,tilt:i,axis:r,distance:s,plane:n,object:a}=e,{camera:o,raycaster:l}=this.eventContext;if(a.getWorldPosition(Uc),!e.isReset){if(e.target)e.target.getWorldPosition(of);else if(n==="custom"?(o.getWorldDirection(Fc),Fc.negate(),s>0?kc.set(Fc,-s):kc.setFromNormalAndCoplanarPoint(Fc,Uc)):(n==="xy"?wl.set(0,0,1):n==="xz"?wl.set(0,1,0):n==="yz"&&wl.set(1,0,0),kc.setFromNormalAndCoplanarPoint(wl,Uc)),!l.ray.intersectPlane(kc,of))return}e.isReset||(t?i==="up"?Sl.set(0,1,0):i==="target"&&Sl.copy(t.up).applyMatrix4(Ln.extractRotation(t.matrixWorld)).normalize():n==="custom"?Sl.set(0,1,0):Sl.copy(wl)),e.isReset?Va.copy(e.worldQuaternion0):(Ln.lookAt(of,Uc,Sl),Ln.copy(Gj(Ln,r)),Va.setFromRotationMatrix(Ln)),e.currentDampingFactor>1||e.snapComplete===!1?(a.updateWorldMatrix(!0,!1),_l.setFromRotationMatrix(KS(a.matrixWorld)),_l.slerp(Va,1/e.currentDampingFactor),lb(a,Ln.makeRotationFromQuaternion(_l)),e.paused=8*(1-_l.dot(Va))<ob,e.snapComplete=8*(1-_l.dot(Va))<ob*100,e.snapComplete&&(e.currentDampingFactor=e.dampingFactor)):(lb(a,Ln.makeRotationFromQuaternion(Va)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),a.dispatchEvent(jj),a.dispatchEvent(Hj)}},Xj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=oa(t,t.actions,i,r,s)}disconnect(){la(this.actions)}dispatchEnter(){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()))}dispatchLeave(){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent())}},Yj=class extends _n{constructor(e){super(e),this.eventsPerObjects={},this.objects=[],this._prevObjects=[],this.onMouseDown=r=>{qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onMouseUp=r=>{qe.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=r=>{qe.length>1||(this.eventContext.updateRaycaster(r),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Au(r);a&&a==="MouseHover"&&(s.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[s.uuid]?.forEach(o=>o.dispatchUserEvent(n)))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(!(!r.visible||!r.data?.events.length)){for(let{id:s,data:n}of r.data.events)if(!n.disabled&&n.type==="MouseHover")try{let a=new Xj(s,n,r,t,i);this.eventsPerObjects[r.uuid]?this.eventsPerObjects[r.uuid].push(a):this.eventsPerObjects[r.uuid]=[a]}catch{}this.eventsPerObjects[r.uuid]?.length&&this.objects.push(r)}})}connect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Si&&(this.domEventsNeeded.add("pointerdown"),e.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),e.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),e.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),Si&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(i=>{i.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:i,raycaster:r,scene:s}=this.eventContext;if(i){let n=Im(r,s,this.objects);t=Bm(n)}else this.objects.forEach(n=>{qd(r,n)&&t.push(n)})}this._prevObjects.length&&this._prevObjects.forEach(i=>{t.includes(i)||(i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchLeave()))}),t.length&&t.forEach(i=>{i.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[i.uuid]?.forEach(r=>r.dispatchEnter())}),this._prevObjects=t}},qj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=oa(t,t.actions,i,r,s)}connect(){this.scrollCounter=0}disconnect(){la(this.actions)}dispatch(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(r=>{r.init()}));let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(r=>r.seek(i))}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>{t.playFromCurrent()})}},Qj=class extends _n{constructor(e){super(e),this.eventsPerObject=new Map,this.onWheel=r=>{console.log("onWheel",r),!r.ctrlKey&&[...this.eventsPerObject.entries()].forEach(([s,n])=>{s.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:r.deltaY}),n.forEach(a=>a.dispatch(r.deltaY))})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Au(r);a&&a==="Scroll"&&(s.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Scroll")continue;let a=new qj(s,n,r,t,i);this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])}})}connect(){[...this.eventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.eventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel))}disconnect(){window.removeEventListener("wheel",this.onWheel),this.domEventsNeeded.clear(),[...this.eventsPerObject.entries()].forEach(([e,t])=>{t.forEach(i=>i.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},Zj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.actions=oa(t,t.actions,i,r,s)}disconnect(){la(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()})}dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof no?t.interaction.audioPlayer.play():t.interaction instanceof Rm&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof Wl?t.interaction.play(i==="autoplay"):t.interaction instanceof Nm&&t.interaction.dispatch())})}dispatchUserEvent(e){this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(t=>{t.init()})),e?this.actions.Transition.forEach(t=>t.reverseFromCurrent()):this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Audio.forEach(t=>{t.interaction instanceof no?t.interaction.audioPlayer.play():t.interaction instanceof Rm&&t.interaction.dispatch()}),this.actions.Video.forEach(t=>{t.interaction instanceof Wl?t.interaction.play():t.interaction instanceof Nm&&t.interaction.dispatch()})}},Kj=class extends _n{constructor(e){super(e),this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:r,isExport:s}=this.eventContext;(s?document:r).removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([n,a])=>{n.dispatchEvent({type:"beginEvent",eventName:"Start"}),a.forEach(o=>{o.dispatchAfter("any")})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.dispatchEvent({type:"beginEvent",eventName:"Start"}),s.forEach(n=>{n.dispatchAfter("autoplay")})})},this.onUserEvent=({eventName:r,target:s,reverse:n})=>{if(!r||!s)return;let a=Au(r);a&&a==="Start"&&(s.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}),this.eventsAfterPerObject.get(s)?.forEach(o=>{o.dispatchUserEvent(n)}))};let{scene:t,sharedAssets:i}=this.eventContext;t.traverseEntity(r=>{if(r.data?.events.length)for(let{id:s,data:n}of r.data.events){if(n.disabled||n.type!=="Start")continue;let a=new Zj(s,n,r,t,i);a.actions.Transition.length&&(this.eventsPerObject.has(r)?this.eventsPerObject.get(r)?.push(a):this.eventsPerObject.set(r,[a])),a.actions.Audio.length&&(this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a])),a.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(r)?this.eventsAfterPerObject.get(r)?.push(a):this.eventsAfterPerObject.set(r,[a]))}})}connect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.addEventListener("userEvent",this.onUserEvent)}),this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(i=>i.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([r,s])=>{r.removeEventListener("userEvent",this.onUserEvent),s.forEach(n=>n.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(i=>i.disconnect())})}},Jj=class{constructor(e,t,i,r,s){this.id=e,this.data=t,this.object=i,this.disabled=!0,this.actions=oa(t,t.actions,i,r,s),this.target=t.target,this.useToggle=t.toggle}disconnect(){la(this.actions)}dispatch(){this.disabled||(this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.useToggle?(this.object.currentTransitionEvent!==this.id&&(this.object.currentTransitionEvent=this.id,this.actions.Transition.forEach(e=>{e.init()})),this.actions.Transition.forEach(e=>{e.toggle()})):this.actions.Transition.forEach(e=>{e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}))}},Ot;HN.then(e=>Ot=e);var bi=new M,qs=new nt,In=new M,lf=new ui(0,0,0,"YXZ"),$j={type:"updateMatrix"},AA={type:"beginEvent",eventName:"Collision"};function eH(e){if(e.scene.environment.usePhysics)return!0;let t=!1;return e.scene.objects.traverse((i,r)=>{for(let s of r.events)if(s.data.disabled!==!0&&s.data.type==="GameControl"&&s.data.collisionEnabled){t=!0;break}}),t}var hb=e=>e.states.some(t=>t.data.position!==void 0||t.data.rotation!==void 0||t.data.hiddenMatrix!==void 0||t.data.cloner!==void 0),cb=e=>e.events.find(t=>t.data.disabled!==!0&&t.data.type==="Follow"),tH=class{constructor(e,t,i,r,s,n=!1){this.scene=t,this.sharedAssets=s,this.isExport=n,this.orbitControlsNeedsUpdate=!0,this.gameControls=[],this.gameControlStates=[],this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],eventsPerObjects:{},colliderToEntity:{},gamePads:[]},this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.processRigidBody=f=>{if(f.bodyType()!==Ot.RigidBodyType.Dynamic)return;f.isSleeping()||this.nActiveRigidBodies++;let[v,y,b]=this.rigidBodyToMesh.get(f.handle);if(bi.copy(f.translation()).multiplyScalar(this.pixelsPerMeter),qs.copy(f.rotation()),v.matrixWorld.compose(bi,qs,y),v.hasNonUniformScale&&v.matrixWorld.multiply(v.shearScale),v.dispatchEvent($j),b){let x=v.cloner;if(x&&x.objectForSample===void 0){x.matrixWorld.copy(v.matrixWorld);for(let w of x.children)w.updateMatrixWorld(!0)}for(let w of v.children)w.updateMatrixWorld(!0)}},this.handleCollisionEvents=(f,v,y)=>{if(y!==!1)if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[f])){let b=this.sharedGameControlGlobals.colliderToEntity[v],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else if(this.gameControls.some(b=>b.object===this.sharedGameControlGlobals.colliderToEntity[v])){let b=this.sharedGameControlGlobals.colliderToEntity[f],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x===void 0)return;for(let w of x)w.data.target==="character"&&this.dispatchCollisionEvent(w,b)}else{let b=this.sharedGameControlGlobals.colliderToEntity[f],x=this.sharedGameControlGlobals.eventsPerObjects[b.uuid];if(x!==void 0)for(let A of x)A.data.target==="scene"&&this.dispatchCollisionEvent(A,b);let w=this.sharedGameControlGlobals.colliderToEntity[v],_=this.sharedGameControlGlobals.eventsPerObjects[w?.uuid];if(_!==void 0)for(let A of _)A.data.target==="scene"&&this.dispatchCollisionEvent(A,w)}},this.onBeginState=()=>{this.orbitControls&&(this.orbitControls.enabled=!1,this.orbitControlsNeedsUpdate=!1)},this.onCompleteState=({target:f})=>{this.orbitControls&&(this.orbitControls.enabled=!0,this.orbitControls.resetTo(f.getTarget(bi),f.position,f.zoom,f.isUpVectorFlipped),f.prevState=null,f.currentState=null,f.reversibleToState=null,f.currentTransitionEvent=null,this.orbitControlsNeedsUpdate=!0)},this.domElement=i.domElement;let a;e.scene.publish.playCamera===null?a=bu.PERSONAL_CAMERA_ID:a=e.scene.publish.playCamera;let o=this.scene.find(a),l=!1,h,u=5,c=8,d=9,p="drag";if(this.usePhysics=e.scene.environment.usePhysics??Hi.defaultData.usePhysics,this.pixelsPerMeter=e.scene.environment.pixelsPerMeter??Hi.defaultData.pixelsPerMeter,e.scene.objects.data(e.scene.publish.gameControlObject)?.events.forEach(f=>{f.data.disabled!==!0&&f.data.type==="GameControl"&&(h=f.data.keyAssignments,u=f.data.joystickPosLoc,c=f.data.joystickRotLoc,d=f.data.jumpTouchButtonLoc,p=f.data.rotByTouch)}),this.scene.traverseEntity(f=>{f.dataPatched.events.forEach(v=>{if(v.data.disabled||v.data.type!=="GameControl")return;let y=f;for(;(y=y.parent)?.parent!==null;)if(y.dataPatched.physics?.fusedBody)return;v.data.collisionEnabled&&(this.needsCollisionDetection=!0),this.gameControlStates.push([f,v.data])})}),this.usePhysics&&this.initPhysics(e.scene.environment.gravity??Hi.defaultData.gravity),this.gameControlStates.forEach(([f,v])=>{l=l||v.camera===o.uuid||f.uuid===o.uuid;let y=new MA(f,i.domElement,{...v,keyAssignments:h},e.scene.environment,this.sharedGameControlGlobals,f.uuid!==o.uuid&&v.camera===o.uuid,o,this.scene,s);y.addEventListener("change",r),y.addEventListener("end",r),y.addEventListener("start",r),this.gameControls.push(y),Si&&v.touchControl&&(this.joystickToGameControls[u]!==void 0?this.joystickToGameControls[u].push([y,"pos"]):this.joystickToGameControls[u]=[[y,"pos"]],v.moveMode==="walk"&&(this.joystickToGameControls[d]!==void 0?this.joystickToGameControls[d].push([y,"jmp"]):this.joystickToGameControls[d]=[[y,"jmp"]]),p==="joystick"&&(this.joystickToGameControls[c]!==void 0?this.joystickToGameControls[c].push([y,"rot"]):this.joystickToGameControls[c]=[[y,"rot"]]))}),l===!1){let{enableRotate:f,enablePan:v,enableZoom:y,autoRotate:b,hoverRotatePanMode:x}=e.scene.publish.orbitControls;if(f||v||y||b||x!==0){this.orbitControls=new EA(o,i.domElement,this.isExport),this.orbitControls.addEventListener("change",r),this.orbitControls.addEventListener("end",r),this.orbitControls.addEventListener("start",r),this.orbitControls.fromJSON(e.scene.publish.orbitControls,e.scene.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.connect(),this.orbitControls.update();let w=this.orbitControls.object;w.addEventListener("beginState",this.onBeginState),w.addEventListener("completeState",this.onCompleteState)}}let m=i.domElement.width/i.getPixelRatio(),g=i.domElement.height/i.getPixelRatio();this.joystickToGameControls.forEach((f,v)=>{let y=document.body.appendChild(document.createElement("div")),[b,x,w]=(e.scene.publish.joystickSizeAndXYOffset??To.defaultData.joystickSizeAndXYOffset)[v],_=(m-5*b)/4+b,A={},S=f.some(P=>P[1]==="jmp"),E=S?0:b;v<10?(v<5?A.top=E/2:A.bottom=E/2,A.left=E/2+v%5*_):v===10?(A.left=E/2,A.top=g/2):(A.right=E/2,A.top=g/2),A.top?A.top-=x[1]:A.bottom+=x[1],A.left?A.left+=x[0]:A.right-=x[0];for(let P in A)A[P]+="px";if(S){let P=y.appendChild(document.createElement("div"));Object.assign(P.style,A,{position:"absolute",width:b+"px",height:b+"px",backgroundColor:`rgba(255,255,255,${w==="show"?.4:0})`,zIndex:"9999",borderRadius:b+"px",border:w==="show"?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let R=b/16*16*.4;w==="show"&&(P.innerHTML=`
|
|
4914
4914
|
<svg width="${R}" height="${b*.4}" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
4915
4915
|
<path d="M2 10L8 4L14 10" stroke="black" stroke-opacity="40%" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4916
4916
|
</svg>
|
|
@@ -5279,7 +5279,7 @@ outputColor=vec4(color,inputColor.a);}`,Wc={DEFAULT:0,ESKIL:1},WG=class extends
|
|
|
5279
5279
|
/>
|
|
5280
5280
|
</svg>
|
|
5281
5281
|
</a>
|
|
5282
|
-
</div>`,Ti=class extends An{constructor(){super();this.url=null;this.width=void 0;this.height=void 0;this.background=void 0;this.loading="auto";this.unloadable=!1;this.eventsTarget=void 0;this.
|
|
5282
|
+
</div>`,Ti=class extends An{constructor(){super();this.url=null;this.width=void 0;this.height=void 0;this.background=void 0;this.loading="auto";this.unloadable=!1;this.eventsTarget=void 0;this.preloader=!1;this._intersectionObserver=null;this._isElementInViewport=!1;this._loaded=!1;this._loadedUrl=null;this._wasContextLost=!1;this._handleContextLost=()=>{this._wasContextLost=!0,this._loadedUrl=null,this._spline.dispose(),this._isElementInViewport&&this.load(),this.dispatchEvent(new CustomEvent("context-loss",{detail:{}}))};this._handleContextRestored=()=>{};this.onLoaded=()=>{this._loaded=!0,this.eventsTarget!==void 0&&this._spline.eventManager.updateUseWindowEvents(this.eventsTarget==="global"),this.background!==void 0&&this._spline?.setBackgroundColor(this.background),this._spline?.data.scene.publish.settings.web.logo!==!1&&(this._logo.style.display="flex"),this.preloader&&(this._preloader.style.display="none"),setTimeout(()=>{this._canvas.style.visibility="visible"}),this.dispatchEvent(new CustomEvent("load-complete",{detail:{url:this.url}})),(this.hint??this._spline.data.scene.publish.settings.web.hint)&&(this._canvas.addEventListener("pointerdown",this.onInteract),this._canvas.addEventListener("pointerup",this.onInteract),this._hintDrag.style.display="block")};this.onInteract=()=>{this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none"};this.attachShadow({mode:"open"});let i=this.shadowRoot;Ou(xV,i),this._container=i.querySelector("#container"),this._canvas=i.querySelector("#spline"),this._logo=i.querySelector("#logo"),this._hintDrag=i.querySelector("#hint-drag"),this._preloader=i.querySelector("#preloader"),this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new pv(this._canvas),Lu?this._intersectionObserver=new IntersectionObserver(r=>{for(let s of r)s.target===this&&(this._isElementInViewport=s.isIntersecting,this._isElementInViewport&&(!this._loaded||this._wasContextLost)?this.load():this.unloadable&&!this._isElementInViewport&&this._loaded&&this.unload(),this.dispatchEvent(new CustomEvent("viewport-intersection",{detail:{intersection:this._isElementInViewport}})))},{root:null,rootMargin:"0px",threshold:1e-5}):this._isElementInViewport=!0}unload(){!this._loaded||(this._loaded=!1,this._loadedUrl=null,this._spline.dispose(),this.dispatchEvent(new CustomEvent("unload",{detail:{}})))}recreateCanvas(){let i=this._canvas;i.removeEventListener("pointerdown",this.onInteract),i.removeEventListener("pointerup",this.onInteract),i.removeEventListener("webglcontextlost",this._handleContextLost),i.removeEventListener("webglcontextrestored",this._handleContextRestored);let r=document.createElement("canvas");this._container.insertBefore(r,this._canvas),this._container.removeChild(this._canvas),r.setAttribute("id","spline"),this._canvas=r,this._canvas.addEventListener("webglcontextlost",this._handleContextLost),this._canvas.addEventListener("webglcontextrestored",this._handleContextRestored),this._spline=new pv(this._canvas)}load(){this._loaded&&!this._wasContextLost||!this._isElementInViewport&&this.loading!=="eager"||!this.url||this.url===this._loadedUrl||(this.preloader&&(this._preloader.style.display="flex"),this._canvas.style.visibility="hidden",this.dispatchEvent(new CustomEvent("load-start",{detail:{url:this.url}})),this._wasContextLost&&this.recreateCanvas(),this._canvas.removeEventListener("pointerdown",this.onInteract),this._canvas.removeEventListener("pointerup",this.onInteract),this._hintDrag.style.display="none",this._loadedUrl=this.url,this._spline.load(this.url).then(this.onLoaded))}updated(i){if(super.updated(i),i.has("url")&&(this.url==null&&this._loaded?this.unload():this.url!==this._loadedUrl&&this.load()),i.has("width")&&this.width!==void 0&&(this._container.style.width=this.width+"px"),i.has("height")&&this.height!==void 0&&(this._container.style.height=this.height+"px"),i.has("eventsTarget")&&this.eventsTarget!==void 0){let r=this.eventsTarget==="global";this._spline?.eventManager?.updateUseWindowEvents(r),this._spline?.controls?.updateUseWindowEvents(r)}}connectedCallback(){super.connectedCallback(),Lu&&this._intersectionObserver.observe(this)}disconnectedCallback(){Lu&&this._intersectionObserver.unobserve(this),super.disconnectedCallback()}};Ti.styles=mv`
|
|
5283
5283
|
:host {
|
|
5284
5284
|
display: block;
|
|
5285
5285
|
}
|