maplibre-gl-components 0.16.1 → 0.16.2

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.
@@ -4540,7 +4540,7 @@ void main() {
4540
4540
 
4541
4541
  }
4542
4542
 
4543
- }`;class sve{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){const i=new $a,r=e.properties.get(i);r.__webglTexture=t.texture,(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new Vl({vertexShader:nve,fragmentShader:ive,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Gr(new RT(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}let rve=class extends gp{constructor(e,t){super();const n=this;let i=null,r=1,a=null,o="local-floor",c=1,h=null,d=null,f=null,m=null,_=null,y=null;const x=new sve,w=t.getContextAttributes();let b=null,I=null;const T=[],B=[],O=new di;let Q=null;const U=new Xr;U.viewport=new fi;const D=new Xr;D.viewport=new fi;const P=[U,D],k=new _me;let N=null,W=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ce){let we=T[ce];return we===void 0&&(we=new Mw,T[ce]=we),we.getTargetRaySpace()},this.getControllerGrip=function(ce){let we=T[ce];return we===void 0&&(we=new Mw,T[ce]=we),we.getGripSpace()},this.getHand=function(ce){let we=T[ce];return we===void 0&&(we=new Mw,T[ce]=we),we.getHandSpace()};function X(ce){const we=B.indexOf(ce.inputSource);if(we===-1)return;const Re=T[we];Re!==void 0&&(Re.update(ce.inputSource,ce.frame,h||a),Re.dispatchEvent({type:ce.type,data:ce.inputSource}))}function j(){i.removeEventListener("select",X),i.removeEventListener("selectstart",X),i.removeEventListener("selectend",X),i.removeEventListener("squeeze",X),i.removeEventListener("squeezestart",X),i.removeEventListener("squeezeend",X),i.removeEventListener("end",j),i.removeEventListener("inputsourceschange",$);for(let ce=0;ce<T.length;ce++){const we=B[ce];we!==null&&(B[ce]=null,T[ce].disconnect(we))}N=null,W=null,x.reset(),e.setRenderTarget(b),_=null,m=null,f=null,i=null,I=null,ye.stop(),n.isPresenting=!1,e.setPixelRatio(Q),e.setSize(O.width,O.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(ce){r=ce,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(ce){o=ce,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return h||a},this.setReferenceSpace=function(ce){h=ce},this.getBaseLayer=function(){return m!==null?m:_},this.getBinding=function(){return f},this.getFrame=function(){return y},this.getSession=function(){return i},this.setSession=async function(ce){if(i=ce,i!==null){if(b=e.getRenderTarget(),i.addEventListener("select",X),i.addEventListener("selectstart",X),i.addEventListener("selectend",X),i.addEventListener("squeeze",X),i.addEventListener("squeezestart",X),i.addEventListener("squeezeend",X),i.addEventListener("end",j),i.addEventListener("inputsourceschange",$),w.xrCompatible!==!0&&await t.makeXRCompatible(),Q=e.getPixelRatio(),e.getSize(O),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let Re=null,Ne=null,ge=null;w.depth&&(ge=w.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,Re=w.stencil?F_:D_,Ne=w.stencil?N_:ao);const tt={colorFormat:t.RGBA8,depthFormat:ge,scaleFactor:r};f=new XRWebGLBinding(i,t),m=f.createProjectionLayer(tt),i.updateRenderState({layers:[m]}),e.setPixelRatio(1),e.setSize(m.textureWidth,m.textureHeight,!1),I=new Mc(m.textureWidth,m.textureHeight,{format:zr,type:Ga,depthTexture:new N8(m.textureWidth,m.textureHeight,Ne,void 0,void 0,void 0,void 0,void 0,void 0,Re),stencilBuffer:w.stencil,colorSpace:e.outputColorSpace,samples:w.antialias?4:0,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1})}else{const Re={antialias:w.antialias,alpha:!0,depth:w.depth,stencil:w.stencil,framebufferScaleFactor:r};_=new XRWebGLLayer(i,t,Re),i.updateRenderState({baseLayer:_}),e.setPixelRatio(1),e.setSize(_.framebufferWidth,_.framebufferHeight,!1),I=new Mc(_.framebufferWidth,_.framebufferHeight,{format:zr,type:Ga,colorSpace:e.outputColorSpace,stencilBuffer:w.stencil,resolveDepthBuffer:_.ignoreDepthValues===!1,resolveStencilBuffer:_.ignoreDepthValues===!1})}I.isXRRenderTarget=!0,this.setFoveation(c),h=null,a=await i.requestReferenceSpace(o),ye.setContext(i),ye.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode},this.getDepthTexture=function(){return x.getDepthTexture()};function $(ce){for(let we=0;we<ce.removed.length;we++){const Re=ce.removed[we],Ne=B.indexOf(Re);Ne>=0&&(B[Ne]=null,T[Ne].disconnect(Re))}for(let we=0;we<ce.added.length;we++){const Re=ce.added[we];let Ne=B.indexOf(Re);if(Ne===-1){for(let tt=0;tt<T.length;tt++)if(tt>=B.length){B.push(Re),Ne=tt;break}else if(B[tt]===null){B[tt]=Re,Ne=tt;break}if(Ne===-1)break}const ge=T[Ne];ge&&ge.connect(Re)}}const V=new Oe,Z=new Oe;function K(ce,we,Re){V.setFromMatrixPosition(we.matrixWorld),Z.setFromMatrixPosition(Re.matrixWorld);const Ne=V.distanceTo(Z),ge=we.projectionMatrix.elements,tt=Re.projectionMatrix.elements,ze=ge[14]/(ge[10]-1),He=ge[14]/(ge[10]+1),re=(ge[9]+1)/ge[5],nt=(ge[9]-1)/ge[5],_e=(ge[8]-1)/ge[0],pt=(tt[8]+1)/tt[0],vt=ze*_e,Ee=ze*pt,me=Ne/(-_e+pt),ke=me*-_e;if(we.matrixWorld.decompose(ce.position,ce.quaternion,ce.scale),ce.translateX(ke),ce.translateZ(me),ce.matrixWorld.compose(ce.position,ce.quaternion,ce.scale),ce.matrixWorldInverse.copy(ce.matrixWorld).invert(),ge[10]===-1)ce.projectionMatrix.copy(we.projectionMatrix),ce.projectionMatrixInverse.copy(we.projectionMatrixInverse);else{const et=ze+me,ht=He+me,zt=vt-ke,xe=Ee+(Ne-ke),ne=re*He/ht*et,Qe=nt*He/ht*et;ce.projectionMatrix.makePerspective(zt,xe,ne,Qe,et,ht),ce.projectionMatrixInverse.copy(ce.projectionMatrix).invert()}}function se(ce,we){we===null?ce.matrixWorld.copy(ce.matrix):ce.matrixWorld.multiplyMatrices(we.matrixWorld,ce.matrix),ce.matrixWorldInverse.copy(ce.matrixWorld).invert()}this.updateCamera=function(ce){if(i===null)return;let we=ce.near,Re=ce.far;x.texture!==null&&(x.depthNear>0&&(we=x.depthNear),x.depthFar>0&&(Re=x.depthFar)),k.near=D.near=U.near=we,k.far=D.far=U.far=Re,(N!==k.near||W!==k.far)&&(i.updateRenderState({depthNear:k.near,depthFar:k.far}),N=k.near,W=k.far),U.layers.mask=ce.layers.mask|2,D.layers.mask=ce.layers.mask|4,k.layers.mask=U.layers.mask|D.layers.mask;const Ne=ce.parent,ge=k.cameras;se(k,Ne);for(let tt=0;tt<ge.length;tt++)se(ge[tt],Ne);ge.length===2?K(k,U,D):k.projectionMatrix.copy(U.projectionMatrix),oe(ce,k,Ne)};function oe(ce,we,Re){Re===null?ce.matrix.copy(we.matrixWorld):(ce.matrix.copy(Re.matrixWorld),ce.matrix.invert(),ce.matrix.multiply(we.matrixWorld)),ce.matrix.decompose(ce.position,ce.quaternion,ce.scale),ce.updateMatrixWorld(!0),ce.projectionMatrix.copy(we.projectionMatrix),ce.projectionMatrixInverse.copy(we.projectionMatrixInverse),ce.isPerspectiveCamera&&(ce.fov=km*2*Math.atan(1/ce.projectionMatrix.elements[5]),ce.zoom=1)}this.getCamera=function(){return k},this.getFoveation=function(){if(!(m===null&&_===null))return c},this.setFoveation=function(ce){c=ce,m!==null&&(m.fixedFoveation=ce),_!==null&&_.fixedFoveation!==void 0&&(_.fixedFoveation=ce)},this.hasDepthSensing=function(){return x.texture!==null},this.getDepthSensingMesh=function(){return x.getMesh(k)};let ue=null;function be(ce,we){if(d=we.getViewerPose(h||a),y=we,d!==null){const Re=d.views;_!==null&&(e.setRenderTargetFramebuffer(I,_.framebuffer),e.setRenderTarget(I));let Ne=!1;Re.length!==k.cameras.length&&(k.cameras.length=0,Ne=!0);for(let ze=0;ze<Re.length;ze++){const He=Re[ze];let re=null;if(_!==null)re=_.getViewport(He);else{const _e=f.getViewSubImage(m,He);re=_e.viewport,ze===0&&(e.setRenderTargetTextures(I,_e.colorTexture,_e.depthStencilTexture),e.setRenderTarget(I))}let nt=P[ze];nt===void 0&&(nt=new Xr,nt.layers.enable(ze),nt.viewport=new fi,P[ze]=nt),nt.matrix.fromArray(He.transform.matrix),nt.matrix.decompose(nt.position,nt.quaternion,nt.scale),nt.projectionMatrix.fromArray(He.projectionMatrix),nt.projectionMatrixInverse.copy(nt.projectionMatrix).invert(),nt.viewport.set(re.x,re.y,re.width,re.height),ze===0&&(k.matrix.copy(nt.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),Ne===!0&&k.cameras.push(nt)}const ge=i.enabledFeatures;if(ge&&ge.includes("depth-sensing")&&i.depthUsage=="gpu-optimized"&&f){const ze=f.getDepthInformation(Re[0]);ze&&ze.isValid&&ze.texture&&x.init(e,ze,i.renderState)}}for(let Re=0;Re<T.length;Re++){const Ne=B[Re],ge=T[Re];Ne!==null&&ge!==void 0&&ge.update(Ne,we,h||a)}ue&&ue(ce,we),we.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:we}),y=null}const ye=new G8;ye.setAnimationLoop(be),this.setAnimationLoop=function(ce){ue=ce},this.dispose=function(){}}};const Pd=new zu,ave=new Nn;function ove(s,e){function t(w,b){w.matrixAutoUpdate===!0&&w.updateMatrix(),b.value.copy(w.matrix)}function n(w,b){b.color.getRGB(w.fogColor.value,S8(s)),b.isFog?(w.fogNear.value=b.near,w.fogFar.value=b.far):b.isFogExp2&&(w.fogDensity.value=b.density)}function i(w,b,I,T,B){b.isMeshBasicMaterial||b.isMeshLambertMaterial?r(w,b):b.isMeshToonMaterial?(r(w,b),f(w,b)):b.isMeshPhongMaterial?(r(w,b),d(w,b)):b.isMeshStandardMaterial?(r(w,b),m(w,b),b.isMeshPhysicalMaterial&&_(w,b,B)):b.isMeshMatcapMaterial?(r(w,b),y(w,b)):b.isMeshDepthMaterial?r(w,b):b.isMeshDistanceMaterial?(r(w,b),x(w,b)):b.isMeshNormalMaterial?r(w,b):b.isLineBasicMaterial?(a(w,b),b.isLineDashedMaterial&&o(w,b)):b.isPointsMaterial?c(w,b,I,T):b.isSpriteMaterial?h(w,b):b.isShadowMaterial?(w.color.value.copy(b.color),w.opacity.value=b.opacity):b.isShaderMaterial&&(b.uniformsNeedUpdate=!1)}function r(w,b){w.opacity.value=b.opacity,b.color&&w.diffuse.value.copy(b.color),b.emissive&&w.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity),b.map&&(w.map.value=b.map,t(b.map,w.mapTransform)),b.alphaMap&&(w.alphaMap.value=b.alphaMap,t(b.alphaMap,w.alphaMapTransform)),b.bumpMap&&(w.bumpMap.value=b.bumpMap,t(b.bumpMap,w.bumpMapTransform),w.bumpScale.value=b.bumpScale,b.side===ro&&(w.bumpScale.value*=-1)),b.normalMap&&(w.normalMap.value=b.normalMap,t(b.normalMap,w.normalMapTransform),w.normalScale.value.copy(b.normalScale),b.side===ro&&w.normalScale.value.negate()),b.displacementMap&&(w.displacementMap.value=b.displacementMap,t(b.displacementMap,w.displacementMapTransform),w.displacementScale.value=b.displacementScale,w.displacementBias.value=b.displacementBias),b.emissiveMap&&(w.emissiveMap.value=b.emissiveMap,t(b.emissiveMap,w.emissiveMapTransform)),b.specularMap&&(w.specularMap.value=b.specularMap,t(b.specularMap,w.specularMapTransform)),b.alphaTest>0&&(w.alphaTest.value=b.alphaTest);const I=e.get(b),T=I.envMap,B=I.envMapRotation;T&&(w.envMap.value=T,Pd.copy(B),Pd.x*=-1,Pd.y*=-1,Pd.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(Pd.y*=-1,Pd.z*=-1),w.envMapRotation.value.setFromMatrix4(ave.makeRotationFromEuler(Pd)),w.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,w.reflectivity.value=b.reflectivity,w.ior.value=b.ior,w.refractionRatio.value=b.refractionRatio),b.lightMap&&(w.lightMap.value=b.lightMap,w.lightMapIntensity.value=b.lightMapIntensity,t(b.lightMap,w.lightMapTransform)),b.aoMap&&(w.aoMap.value=b.aoMap,w.aoMapIntensity.value=b.aoMapIntensity,t(b.aoMap,w.aoMapTransform))}function a(w,b){w.diffuse.value.copy(b.color),w.opacity.value=b.opacity,b.map&&(w.map.value=b.map,t(b.map,w.mapTransform))}function o(w,b){w.dashSize.value=b.dashSize,w.totalSize.value=b.dashSize+b.gapSize,w.scale.value=b.scale}function c(w,b,I,T){w.diffuse.value.copy(b.color),w.opacity.value=b.opacity,w.size.value=b.size*I,w.scale.value=T*.5,b.map&&(w.map.value=b.map,t(b.map,w.uvTransform)),b.alphaMap&&(w.alphaMap.value=b.alphaMap,t(b.alphaMap,w.alphaMapTransform)),b.alphaTest>0&&(w.alphaTest.value=b.alphaTest)}function h(w,b){w.diffuse.value.copy(b.color),w.opacity.value=b.opacity,w.rotation.value=b.rotation,b.map&&(w.map.value=b.map,t(b.map,w.mapTransform)),b.alphaMap&&(w.alphaMap.value=b.alphaMap,t(b.alphaMap,w.alphaMapTransform)),b.alphaTest>0&&(w.alphaTest.value=b.alphaTest)}function d(w,b){w.specular.value.copy(b.specular),w.shininess.value=Math.max(b.shininess,1e-4)}function f(w,b){b.gradientMap&&(w.gradientMap.value=b.gradientMap)}function m(w,b){w.metalness.value=b.metalness,b.metalnessMap&&(w.metalnessMap.value=b.metalnessMap,t(b.metalnessMap,w.metalnessMapTransform)),w.roughness.value=b.roughness,b.roughnessMap&&(w.roughnessMap.value=b.roughnessMap,t(b.roughnessMap,w.roughnessMapTransform)),b.envMap&&(w.envMapIntensity.value=b.envMapIntensity)}function _(w,b,I){w.ior.value=b.ior,b.sheen>0&&(w.sheenColor.value.copy(b.sheenColor).multiplyScalar(b.sheen),w.sheenRoughness.value=b.sheenRoughness,b.sheenColorMap&&(w.sheenColorMap.value=b.sheenColorMap,t(b.sheenColorMap,w.sheenColorMapTransform)),b.sheenRoughnessMap&&(w.sheenRoughnessMap.value=b.sheenRoughnessMap,t(b.sheenRoughnessMap,w.sheenRoughnessMapTransform))),b.clearcoat>0&&(w.clearcoat.value=b.clearcoat,w.clearcoatRoughness.value=b.clearcoatRoughness,b.clearcoatMap&&(w.clearcoatMap.value=b.clearcoatMap,t(b.clearcoatMap,w.clearcoatMapTransform)),b.clearcoatRoughnessMap&&(w.clearcoatRoughnessMap.value=b.clearcoatRoughnessMap,t(b.clearcoatRoughnessMap,w.clearcoatRoughnessMapTransform)),b.clearcoatNormalMap&&(w.clearcoatNormalMap.value=b.clearcoatNormalMap,t(b.clearcoatNormalMap,w.clearcoatNormalMapTransform),w.clearcoatNormalScale.value.copy(b.clearcoatNormalScale),b.side===ro&&w.clearcoatNormalScale.value.negate())),b.dispersion>0&&(w.dispersion.value=b.dispersion),b.iridescence>0&&(w.iridescence.value=b.iridescence,w.iridescenceIOR.value=b.iridescenceIOR,w.iridescenceThicknessMinimum.value=b.iridescenceThicknessRange[0],w.iridescenceThicknessMaximum.value=b.iridescenceThicknessRange[1],b.iridescenceMap&&(w.iridescenceMap.value=b.iridescenceMap,t(b.iridescenceMap,w.iridescenceMapTransform)),b.iridescenceThicknessMap&&(w.iridescenceThicknessMap.value=b.iridescenceThicknessMap,t(b.iridescenceThicknessMap,w.iridescenceThicknessMapTransform))),b.transmission>0&&(w.transmission.value=b.transmission,w.transmissionSamplerMap.value=I.texture,w.transmissionSamplerSize.value.set(I.width,I.height),b.transmissionMap&&(w.transmissionMap.value=b.transmissionMap,t(b.transmissionMap,w.transmissionMapTransform)),w.thickness.value=b.thickness,b.thicknessMap&&(w.thicknessMap.value=b.thicknessMap,t(b.thicknessMap,w.thicknessMapTransform)),w.attenuationDistance.value=b.attenuationDistance,w.attenuationColor.value.copy(b.attenuationColor)),b.anisotropy>0&&(w.anisotropyVector.value.set(b.anisotropy*Math.cos(b.anisotropyRotation),b.anisotropy*Math.sin(b.anisotropyRotation)),b.anisotropyMap&&(w.anisotropyMap.value=b.anisotropyMap,t(b.anisotropyMap,w.anisotropyMapTransform))),w.specularIntensity.value=b.specularIntensity,w.specularColor.value.copy(b.specularColor),b.specularColorMap&&(w.specularColorMap.value=b.specularColorMap,t(b.specularColorMap,w.specularColorMapTransform)),b.specularIntensityMap&&(w.specularIntensityMap.value=b.specularIntensityMap,t(b.specularIntensityMap,w.specularIntensityMapTransform))}function y(w,b){b.matcap&&(w.matcap.value=b.matcap)}function x(w,b){const I=e.get(b).light;w.referencePosition.value.setFromMatrixPosition(I.matrixWorld),w.nearDistance.value=I.shadow.camera.near,w.farDistance.value=I.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function lve(s,e,t,n){let i={},r={},a=[];const o=s.getParameter(s.MAX_UNIFORM_BUFFER_BINDINGS);function c(I,T){const B=T.program;n.uniformBlockBinding(I,B)}function h(I,T){let B=i[I.id];B===void 0&&(y(I),B=d(I),i[I.id]=B,I.addEventListener("dispose",w));const O=T.program;n.updateUBOMapping(I,O);const Q=e.render.frame;r[I.id]!==Q&&(m(I),r[I.id]=Q)}function d(I){const T=f();I.__bindingPointIndex=T;const B=s.createBuffer(),O=I.__size,Q=I.usage;return s.bindBuffer(s.UNIFORM_BUFFER,B),s.bufferData(s.UNIFORM_BUFFER,O,Q),s.bindBuffer(s.UNIFORM_BUFFER,null),s.bindBufferBase(s.UNIFORM_BUFFER,T,B),B}function f(){for(let I=0;I<o;I++)if(a.indexOf(I)===-1)return a.push(I),I;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function m(I){const T=i[I.id],B=I.uniforms,O=I.__cache;s.bindBuffer(s.UNIFORM_BUFFER,T);for(let Q=0,U=B.length;Q<U;Q++){const D=Array.isArray(B[Q])?B[Q]:[B[Q]];for(let P=0,k=D.length;P<k;P++){const N=D[P];if(_(N,Q,P,O)===!0){const W=N.__offset,X=Array.isArray(N.value)?N.value:[N.value];let j=0;for(let $=0;$<X.length;$++){const V=X[$],Z=x(V);typeof V=="number"||typeof V=="boolean"?(N.__data[0]=V,s.bufferSubData(s.UNIFORM_BUFFER,W+j,N.__data)):V.isMatrix3?(N.__data[0]=V.elements[0],N.__data[1]=V.elements[1],N.__data[2]=V.elements[2],N.__data[3]=0,N.__data[4]=V.elements[3],N.__data[5]=V.elements[4],N.__data[6]=V.elements[5],N.__data[7]=0,N.__data[8]=V.elements[6],N.__data[9]=V.elements[7],N.__data[10]=V.elements[8],N.__data[11]=0):(V.toArray(N.__data,j),j+=Z.storage/Float32Array.BYTES_PER_ELEMENT)}s.bufferSubData(s.UNIFORM_BUFFER,W,N.__data)}}}s.bindBuffer(s.UNIFORM_BUFFER,null)}function _(I,T,B,O){const Q=I.value,U=T+"_"+B;if(O[U]===void 0)return typeof Q=="number"||typeof Q=="boolean"?O[U]=Q:O[U]=Q.clone(),!0;{const D=O[U];if(typeof Q=="number"||typeof Q=="boolean"){if(D!==Q)return O[U]=Q,!0}else if(D.equals(Q)===!1)return D.copy(Q),!0}return!1}function y(I){const T=I.uniforms;let B=0;const O=16;for(let U=0,D=T.length;U<D;U++){const P=Array.isArray(T[U])?T[U]:[T[U]];for(let k=0,N=P.length;k<N;k++){const W=P[k],X=Array.isArray(W.value)?W.value:[W.value];for(let j=0,$=X.length;j<$;j++){const V=X[j],Z=x(V),K=B%O,se=K%Z.boundary,oe=K+se;B+=se,oe!==0&&O-oe<Z.storage&&(B+=O-oe),W.__data=new Float32Array(Z.storage/Float32Array.BYTES_PER_ELEMENT),W.__offset=B,B+=Z.storage}}}const Q=B%O;return Q>0&&(B+=O-Q),I.__size=B,I.__cache={},this}function x(I){const T={boundary:0,storage:0};return typeof I=="number"||typeof I=="boolean"?(T.boundary=4,T.storage=4):I.isVector2?(T.boundary=8,T.storage=8):I.isVector3||I.isColor?(T.boundary=16,T.storage=12):I.isVector4?(T.boundary=16,T.storage=16):I.isMatrix3?(T.boundary=48,T.storage=48):I.isMatrix4?(T.boundary=64,T.storage=64):I.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",I),T}function w(I){const T=I.target;T.removeEventListener("dispose",w);const B=a.indexOf(T.__bindingPointIndex);a.splice(B,1),s.deleteBuffer(i[T.id]),delete i[T.id],delete r[T.id]}function b(){for(const I in i)s.deleteBuffer(i[I]);a=[],i={},r={}}return{bind:c,update:h,dispose:b}}let cve=class{constructor(e={}){const{canvas:t=ofe(),context:n=null,depth:i=!0,stencil:r=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:h=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:f=!1,reverseDepthBuffer:m=!1}=e;this.isWebGLRenderer=!0;let _;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");_=n.getContextAttributes().alpha}else _=a;const y=new Uint32Array(4),x=new Int32Array(4);let w=null,b=null;const I=[],T=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=Lu,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const B=this;let O=!1;this._outputColorSpace=xr;let Q=0,U=0,D=null,P=-1,k=null;const N=new fi,W=new fi;let X=null;const j=new Hn(0);let $=0,V=t.width,Z=t.height,K=1,se=null,oe=null;const ue=new fi(0,0,V,Z),be=new fi(0,0,V,Z);let ye=!1;const ce=new BT;let we=!1,Re=!1;const Ne=new Nn,ge=new Nn,tt=new Oe,ze=new fi,He={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let re=!1;function nt(){return D===null?K:1}let _e=n;function pt(fe,$e){return t.getContext(fe,$e)}try{const fe={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:c,preserveDrawingBuffer:h,powerPreference:d,failIfMajorPerformanceCaveat:f};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${vT}`),t.addEventListener("webglcontextlost",sn,!1),t.addEventListener("webglcontextrestored",Pt,!1),t.addEventListener("webglcontextcreationerror",At,!1),_e===null){const $e="webgl2";if(_e=pt($e,fe),_e===null)throw pt($e)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(fe){throw console.error("THREE.WebGLRenderer: "+fe.message),fe}let vt,Ee,me,ke,et,ht,zt,xe,ne,Qe,We,Ce,De,at,rt,Je,Rt,gt,$t,Tt,Kt,Gt,xn,Ge;function Yt(){vt=new v_e(_e),vt.init(),Gt=new tve(_e,vt),Ee=new d_e(_e,vt,e,Gt),me=new KAe(_e,vt),Ee.reverseDepthBuffer&&m&&me.buffers.depth.setReversed(!0),ke=new x_e(_e),et=new zAe,ht=new eve(_e,vt,me,et,Ee,Gt,ke),zt=new f_e(B),xe=new A_e(B),ne=new Mme(_e),xn=new h_e(_e,ne),Qe=new y_e(_e,ne,ke,xn),We=new w_e(_e,Qe,ne,ke),$t=new C_e(_e,Ee,ht),Je=new p_e(et),Ce=new UAe(B,zt,xe,vt,Ee,xn,Je),De=new ove(B,et),at=new QAe,rt=new YAe(vt),gt=new c_e(B,zt,xe,me,We,_,c),Rt=new ZAe(B,We,Ee),Ge=new lve(_e,ke,Ee,me),Tt=new u_e(_e,vt,ke),Kt=new b_e(_e,vt,ke),ke.programs=Ce.programs,B.capabilities=Ee,B.extensions=vt,B.properties=et,B.renderLists=at,B.shadowMap=Rt,B.state=me,B.info=ke}Yt();const St=new rve(B,_e);this.xr=St,this.getContext=function(){return _e},this.getContextAttributes=function(){return _e.getContextAttributes()},this.forceContextLoss=function(){const fe=vt.get("WEBGL_lose_context");fe&&fe.loseContext()},this.forceContextRestore=function(){const fe=vt.get("WEBGL_lose_context");fe&&fe.restoreContext()},this.getPixelRatio=function(){return K},this.setPixelRatio=function(fe){fe!==void 0&&(K=fe,this.setSize(V,Z,!1))},this.getSize=function(fe){return fe.set(V,Z)},this.setSize=function(fe,$e,ut=!0){if(St.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}V=fe,Z=$e,t.width=Math.floor(fe*K),t.height=Math.floor($e*K),ut===!0&&(t.style.width=fe+"px",t.style.height=$e+"px"),this.setViewport(0,0,fe,$e)},this.getDrawingBufferSize=function(fe){return fe.set(V*K,Z*K).floor()},this.setDrawingBufferSize=function(fe,$e,ut){V=fe,Z=$e,K=ut,t.width=Math.floor(fe*ut),t.height=Math.floor($e*ut),this.setViewport(0,0,fe,$e)},this.getCurrentViewport=function(fe){return fe.copy(N)},this.getViewport=function(fe){return fe.copy(ue)},this.setViewport=function(fe,$e,ut,ct){fe.isVector4?ue.set(fe.x,fe.y,fe.z,fe.w):ue.set(fe,$e,ut,ct),me.viewport(N.copy(ue).multiplyScalar(K).round())},this.getScissor=function(fe){return fe.copy(be)},this.setScissor=function(fe,$e,ut,ct){fe.isVector4?be.set(fe.x,fe.y,fe.z,fe.w):be.set(fe,$e,ut,ct),me.scissor(W.copy(be).multiplyScalar(K).round())},this.getScissorTest=function(){return ye},this.setScissorTest=function(fe){me.setScissorTest(ye=fe)},this.setOpaqueSort=function(fe){se=fe},this.setTransparentSort=function(fe){oe=fe},this.getClearColor=function(fe){return fe.copy(gt.getClearColor())},this.setClearColor=function(){gt.setClearColor(...arguments)},this.getClearAlpha=function(){return gt.getClearAlpha()},this.setClearAlpha=function(){gt.setClearAlpha(...arguments)},this.clear=function(fe=!0,$e=!0,ut=!0){let ct=0;if(fe){let qe=!1;if(D!==null){const It=D.texture.format;qe=It===Ch||It===ex||It===wT}if(qe){const It=D.texture.type,Dt=It===Ga||It===ao||It===P_||It===N_||It===bT||It===xT,an=gt.getClearColor(),qt=gt.getClearAlpha(),Sn=an.r,Ln=an.g,Rn=an.b;Dt?(y[0]=Sn,y[1]=Ln,y[2]=Rn,y[3]=qt,_e.clearBufferuiv(_e.COLOR,0,y)):(x[0]=Sn,x[1]=Ln,x[2]=Rn,x[3]=qt,_e.clearBufferiv(_e.COLOR,0,x))}else ct|=_e.COLOR_BUFFER_BIT}$e&&(ct|=_e.DEPTH_BUFFER_BIT),ut&&(ct|=_e.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),_e.clear(ct)},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",sn,!1),t.removeEventListener("webglcontextrestored",Pt,!1),t.removeEventListener("webglcontextcreationerror",At,!1),gt.dispose(),at.dispose(),rt.dispose(),et.dispose(),zt.dispose(),xe.dispose(),We.dispose(),xn.dispose(),Ge.dispose(),Ce.dispose(),St.dispose(),St.removeEventListener("sessionstart",uo),St.removeEventListener("sessionend",ia),Be.stop()};function sn(fe){fe.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),O=!0}function Pt(){console.log("THREE.WebGLRenderer: Context Restored."),O=!1;const fe=ke.autoReset,$e=Rt.enabled,ut=Rt.autoUpdate,ct=Rt.needsUpdate,qe=Rt.type;Yt(),ke.autoReset=fe,Rt.enabled=$e,Rt.autoUpdate=ut,Rt.needsUpdate=ct,Rt.type=qe}function At(fe){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",fe.statusMessage)}function ln(fe){const $e=fe.target;$e.removeEventListener("dispose",ln),cn($e)}function cn(fe){xt(fe),et.remove(fe)}function xt(fe){const $e=et.get(fe).programs;$e!==void 0&&($e.forEach(function(ut){Ce.releaseProgram(ut)}),fe.isShaderMaterial&&Ce.releaseShaderCache(fe))}this.renderBufferDirect=function(fe,$e,ut,ct,qe,It){$e===null&&($e=He);const Dt=qe.isMesh&&qe.matrixWorld.determinant()<0,an=Kn(fe,$e,ut,ct,qe);me.setMaterial(ct,Dt);let qt=ut.index,Sn=1;if(ct.wireframe===!0){if(qt=Qe.getWireframeAttribute(ut),qt===void 0)return;Sn=2}const Ln=ut.drawRange,Rn=ut.attributes.position;let Zn=Ln.start*Sn,li=(Ln.start+Ln.count)*Sn;It!==null&&(Zn=Math.max(Zn,It.start*Sn),li=Math.min(li,(It.start+It.count)*Sn)),qt!==null?(Zn=Math.max(Zn,0),li=Math.min(li,qt.count)):Rn!=null&&(Zn=Math.max(Zn,0),li=Math.min(li,Rn.count));const Wi=li-Zn;if(Wi<0||Wi===1/0)return;xn.setup(qe,ct,an,ut,qt);let Ci,Bi=Tt;if(qt!==null&&(Ci=ne.get(qt),Bi=Kt,Bi.setIndex(Ci)),qe.isMesh)ct.wireframe===!0?(me.setLineWidth(ct.wireframeLinewidth*nt()),Bi.setMode(_e.LINES)):Bi.setMode(_e.TRIANGLES);else if(qe.isLine){let kn=ct.linewidth;kn===void 0&&(kn=1),me.setLineWidth(kn*nt()),qe.isLineSegments?Bi.setMode(_e.LINES):qe.isLineLoop?Bi.setMode(_e.LINE_LOOP):Bi.setMode(_e.LINE_STRIP)}else qe.isPoints?Bi.setMode(_e.POINTS):qe.isSprite&&Bi.setMode(_e.TRIANGLES);if(qe.isBatchedMesh)if(qe._multiDrawInstances!==null)gm("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Bi.renderMultiDrawInstances(qe._multiDrawStarts,qe._multiDrawCounts,qe._multiDrawCount,qe._multiDrawInstances);else if(vt.get("WEBGL_multi_draw"))Bi.renderMultiDraw(qe._multiDrawStarts,qe._multiDrawCounts,qe._multiDrawCount);else{const kn=qe._multiDrawStarts,Gi=qe._multiDrawCounts,ci=qe._multiDrawCount,ss=qt?ne.get(qt).bytesPerElement:1,rs=et.get(ct).currentProgram.getUniforms();for(let Ys=0;Ys<ci;Ys++)rs.setValue(_e,"_gl_DrawID",Ys),Bi.render(kn[Ys]/ss,Gi[Ys])}else if(qe.isInstancedMesh)Bi.renderInstances(Zn,Wi,qe.count);else if(ut.isInstancedBufferGeometry){const kn=ut._maxInstanceCount!==void 0?ut._maxInstanceCount:1/0,Gi=Math.min(ut.instanceCount,kn);Bi.renderInstances(Zn,Wi,Gi)}else Bi.render(Zn,Wi)};function Xn(fe,$e,ut){fe.transparent===!0&&fe.side===Nl&&fe.forceSinglePass===!1?(fe.side=ro,fe.needsUpdate=!0,In(fe,$e,ut),fe.side=Ph,fe.needsUpdate=!0,In(fe,$e,ut),fe.side=Nl):In(fe,$e,ut)}this.compile=function(fe,$e,ut=null){ut===null&&(ut=fe),b=rt.get(ut),b.init($e),T.push(b),ut.traverseVisible(function(qe){qe.isLight&&qe.layers.test($e.layers)&&(b.pushLight(qe),qe.castShadow&&b.pushShadow(qe))}),fe!==ut&&fe.traverseVisible(function(qe){qe.isLight&&qe.layers.test($e.layers)&&(b.pushLight(qe),qe.castShadow&&b.pushShadow(qe))}),b.setupLights();const ct=new Set;return fe.traverse(function(qe){if(!(qe.isMesh||qe.isPoints||qe.isLine||qe.isSprite))return;const It=qe.material;if(It)if(Array.isArray(It))for(let Dt=0;Dt<It.length;Dt++){const an=It[Dt];Xn(an,ut,qe),ct.add(an)}else Xn(It,ut,qe),ct.add(It)}),b=T.pop(),ct},this.compileAsync=function(fe,$e,ut=null){const ct=this.compile(fe,$e,ut);return new Promise(qe=>{function It(){if(ct.forEach(function(Dt){et.get(Dt).currentProgram.isReady()&&ct.delete(Dt)}),ct.size===0){qe(fe);return}setTimeout(It,10)}vt.get("KHR_parallel_shader_compile")!==null?It():setTimeout(It,10)})};let us=null;function Ts(fe){us&&us(fe)}function uo(){Be.stop()}function ia(){Be.start()}const Be=new G8;Be.setAnimationLoop(Ts),typeof self<"u"&&Be.setContext(self),this.setAnimationLoop=function(fe){us=fe,St.setAnimationLoop(fe),fe===null?Be.stop():Be.start()},St.addEventListener("sessionstart",uo),St.addEventListener("sessionend",ia),this.render=function(fe,$e){if($e!==void 0&&$e.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(O===!0)return;if(fe.matrixWorldAutoUpdate===!0&&fe.updateMatrixWorld(),$e.parent===null&&$e.matrixWorldAutoUpdate===!0&&$e.updateMatrixWorld(),St.enabled===!0&&St.isPresenting===!0&&(St.cameraAutoUpdate===!0&&St.updateCamera($e),$e=St.getCamera()),fe.isScene===!0&&fe.onBeforeRender(B,fe,$e,D),b=rt.get(fe,T.length),b.init($e),T.push(b),ge.multiplyMatrices($e.projectionMatrix,$e.matrixWorldInverse),ce.setFromProjectionMatrix(ge),Re=this.localClippingEnabled,we=Je.init(this.clippingPlanes,Re),w=at.get(fe,I.length),w.init(),I.push(w),St.enabled===!0&&St.isPresenting===!0){const It=B.xr.getDepthSensingMesh();It!==null&&Ye(It,$e,-1/0,B.sortObjects)}Ye(fe,$e,0,B.sortObjects),w.finish(),B.sortObjects===!0&&w.sort(se,oe),re=St.enabled===!1||St.isPresenting===!1||St.hasDepthSensing()===!1,re&&gt.addToRenderList(w,fe),this.info.render.frame++,we===!0&&Je.beginShadows();const ut=b.state.shadowsArray;Rt.render(ut,fe,$e),we===!0&&Je.endShadows(),this.info.autoReset===!0&&this.info.reset();const ct=w.opaque,qe=w.transmissive;if(b.setupLights(),$e.isArrayCamera){const It=$e.cameras;if(qe.length>0)for(let Dt=0,an=It.length;Dt<an;Dt++){const qt=It[Dt];it(ct,qe,fe,qt)}re&&gt.render(fe);for(let Dt=0,an=It.length;Dt<an;Dt++){const qt=It[Dt];mt(w,fe,qt,qt.viewport)}}else qe.length>0&&it(ct,qe,fe,$e),re&&gt.render(fe),mt(w,fe,$e);D!==null&&U===0&&(ht.updateMultisampleRenderTarget(D),ht.updateRenderTargetMipmap(D)),fe.isScene===!0&&fe.onAfterRender(B,fe,$e),xn.resetDefaultState(),P=-1,k=null,T.pop(),T.length>0?(b=T[T.length-1],we===!0&&Je.setGlobalState(B.clippingPlanes,b.state.camera)):b=null,I.pop(),I.length>0?w=I[I.length-1]:w=null};function Ye(fe,$e,ut,ct){if(fe.visible===!1)return;if(fe.layers.test($e.layers)){if(fe.isGroup)ut=fe.renderOrder;else if(fe.isLOD)fe.autoUpdate===!0&&fe.update($e);else if(fe.isLight)b.pushLight(fe),fe.castShadow&&b.pushShadow(fe);else if(fe.isSprite){if(!fe.frustumCulled||ce.intersectsSprite(fe)){ct&&ze.setFromMatrixPosition(fe.matrixWorld).applyMatrix4(ge);const Dt=We.update(fe),an=fe.material;an.visible&&w.push(fe,Dt,an,ut,ze.z,null)}}else if((fe.isMesh||fe.isLine||fe.isPoints)&&(!fe.frustumCulled||ce.intersectsObject(fe))){const Dt=We.update(fe),an=fe.material;if(ct&&(fe.boundingSphere!==void 0?(fe.boundingSphere===null&&fe.computeBoundingSphere(),ze.copy(fe.boundingSphere.center)):(Dt.boundingSphere===null&&Dt.computeBoundingSphere(),ze.copy(Dt.boundingSphere.center)),ze.applyMatrix4(fe.matrixWorld).applyMatrix4(ge)),Array.isArray(an)){const qt=Dt.groups;for(let Sn=0,Ln=qt.length;Sn<Ln;Sn++){const Rn=qt[Sn],Zn=an[Rn.materialIndex];Zn&&Zn.visible&&w.push(fe,Dt,Zn,ut,ze.z,Rn)}}else an.visible&&w.push(fe,Dt,an,ut,ze.z,null)}}const It=fe.children;for(let Dt=0,an=It.length;Dt<an;Dt++)Ye(It[Dt],$e,ut,ct)}function mt(fe,$e,ut,ct){const qe=fe.opaque,It=fe.transmissive,Dt=fe.transparent;b.setupLightsView(ut),we===!0&&Je.setGlobalState(B.clippingPlanes,ut),ct&&me.viewport(N.copy(ct)),qe.length>0&&Ct(qe,$e,ut),It.length>0&&Ct(It,$e,ut),Dt.length>0&&Ct(Dt,$e,ut),me.buffers.depth.setTest(!0),me.buffers.depth.setMask(!0),me.buffers.color.setMask(!0),me.setPolygonOffset(!1)}function it(fe,$e,ut,ct){if((ut.isScene===!0?ut.overrideMaterial:null)!==null)return;b.state.transmissionRenderTarget[ct.id]===void 0&&(b.state.transmissionRenderTarget[ct.id]=new Mc(1,1,{generateMipmaps:!0,type:vt.has("EXT_color_buffer_half_float")||vt.has("EXT_color_buffer_float")?yA:Ga,minFilter:Ah,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Ii.workingColorSpace}));const It=b.state.transmissionRenderTarget[ct.id],Dt=ct.viewport||N;It.setSize(Dt.z*B.transmissionResolutionScale,Dt.w*B.transmissionResolutionScale);const an=B.getRenderTarget(),qt=B.getActiveCubeFace(),Sn=B.getActiveMipmapLevel();B.setRenderTarget(It),B.getClearColor(j),$=B.getClearAlpha(),$<1&&B.setClearColor(16777215,.5),B.clear(),re&&gt.render(ut);const Ln=B.toneMapping;B.toneMapping=Lu;const Rn=ct.viewport;if(ct.viewport!==void 0&&(ct.viewport=void 0),b.setupLightsView(ct),we===!0&&Je.setGlobalState(B.clippingPlanes,ct),Ct(fe,ut,ct),ht.updateMultisampleRenderTarget(It),ht.updateRenderTargetMipmap(It),vt.has("WEBGL_multisampled_render_to_texture")===!1){let Zn=!1;for(let li=0,Wi=$e.length;li<Wi;li++){const Ci=$e[li],Bi=Ci.object,kn=Ci.geometry,Gi=Ci.material,ci=Ci.group;if(Gi.side===Nl&&Bi.layers.test(ct.layers)){const ss=Gi.side;Gi.side=ro,Gi.needsUpdate=!0,bn(Bi,ut,ct,kn,Gi,ci),Gi.side=ss,Gi.needsUpdate=!0,Zn=!0}}Zn===!0&&(ht.updateMultisampleRenderTarget(It),ht.updateRenderTargetMipmap(It))}B.setRenderTarget(an,qt,Sn),B.setClearColor(j,$),Rn!==void 0&&(ct.viewport=Rn),B.toneMapping=Ln}function Ct(fe,$e,ut){const ct=$e.isScene===!0?$e.overrideMaterial:null;for(let qe=0,It=fe.length;qe<It;qe++){const Dt=fe[qe],an=Dt.object,qt=Dt.geometry,Sn=Dt.group;let Ln=Dt.material;Ln.allowOverride===!0&&ct!==null&&(Ln=ct),an.layers.test(ut.layers)&&bn(an,$e,ut,qt,Ln,Sn)}}function bn(fe,$e,ut,ct,qe,It){fe.onBeforeRender(B,$e,ut,ct,qe,It),fe.modelViewMatrix.multiplyMatrices(ut.matrixWorldInverse,fe.matrixWorld),fe.normalMatrix.getNormalMatrix(fe.modelViewMatrix),qe.onBeforeRender(B,$e,ut,ct,fe,It),qe.transparent===!0&&qe.side===Nl&&qe.forceSinglePass===!1?(qe.side=ro,qe.needsUpdate=!0,B.renderBufferDirect(ut,$e,ct,qe,fe,It),qe.side=Ph,qe.needsUpdate=!0,B.renderBufferDirect(ut,$e,ct,qe,fe,It),qe.side=Nl):B.renderBufferDirect(ut,$e,ct,qe,fe,It),fe.onAfterRender(B,$e,ut,ct,qe,It)}function In(fe,$e,ut){$e.isScene!==!0&&($e=He);const ct=et.get(fe),qe=b.state.lights,It=b.state.shadowsArray,Dt=qe.state.version,an=Ce.getParameters(fe,qe.state,It,$e,ut),qt=Ce.getProgramCacheKey(an);let Sn=ct.programs;ct.environment=fe.isMeshStandardMaterial?$e.environment:null,ct.fog=$e.fog,ct.envMap=(fe.isMeshStandardMaterial?xe:zt).get(fe.envMap||ct.environment),ct.envMapRotation=ct.environment!==null&&fe.envMap===null?$e.environmentRotation:fe.envMapRotation,Sn===void 0&&(fe.addEventListener("dispose",ln),Sn=new Map,ct.programs=Sn);let Ln=Sn.get(qt);if(Ln!==void 0){if(ct.currentProgram===Ln&&ct.lightsStateVersion===Dt)return qn(fe,an),Ln}else an.uniforms=Ce.getUniforms(fe),fe.onBeforeCompile(an,B),Ln=Ce.acquireProgram(an,qt),Sn.set(qt,Ln),ct.uniforms=an.uniforms;const Rn=ct.uniforms;return(!fe.isShaderMaterial&&!fe.isRawShaderMaterial||fe.clipping===!0)&&(Rn.clippingPlanes=Je.uniform),qn(fe,an),ct.needsLights=Wn(fe),ct.lightsStateVersion=Dt,ct.needsLights&&(Rn.ambientLightColor.value=qe.state.ambient,Rn.lightProbe.value=qe.state.probe,Rn.directionalLights.value=qe.state.directional,Rn.directionalLightShadows.value=qe.state.directionalShadow,Rn.spotLights.value=qe.state.spot,Rn.spotLightShadows.value=qe.state.spotShadow,Rn.rectAreaLights.value=qe.state.rectArea,Rn.ltc_1.value=qe.state.rectAreaLTC1,Rn.ltc_2.value=qe.state.rectAreaLTC2,Rn.pointLights.value=qe.state.point,Rn.pointLightShadows.value=qe.state.pointShadow,Rn.hemisphereLights.value=qe.state.hemi,Rn.directionalShadowMap.value=qe.state.directionalShadowMap,Rn.directionalShadowMatrix.value=qe.state.directionalShadowMatrix,Rn.spotShadowMap.value=qe.state.spotShadowMap,Rn.spotLightMatrix.value=qe.state.spotLightMatrix,Rn.spotLightMap.value=qe.state.spotLightMap,Rn.pointShadowMap.value=qe.state.pointShadowMap,Rn.pointShadowMatrix.value=qe.state.pointShadowMatrix),ct.currentProgram=Ln,ct.uniformsList=null,Ln}function rn(fe){if(fe.uniformsList===null){const $e=fe.currentProgram.getUniforms();fe.uniformsList=Rb.seqWithValue($e.seq,fe.uniforms)}return fe.uniformsList}function qn(fe,$e){const ut=et.get(fe);ut.outputColorSpace=$e.outputColorSpace,ut.batching=$e.batching,ut.batchingColor=$e.batchingColor,ut.instancing=$e.instancing,ut.instancingColor=$e.instancingColor,ut.instancingMorph=$e.instancingMorph,ut.skinning=$e.skinning,ut.morphTargets=$e.morphTargets,ut.morphNormals=$e.morphNormals,ut.morphColors=$e.morphColors,ut.morphTargetsCount=$e.morphTargetsCount,ut.numClippingPlanes=$e.numClippingPlanes,ut.numIntersection=$e.numClipIntersection,ut.vertexAlphas=$e.vertexAlphas,ut.vertexTangents=$e.vertexTangents,ut.toneMapping=$e.toneMapping}function Kn(fe,$e,ut,ct,qe){$e.isScene!==!0&&($e=He),ht.resetTextureUnits();const It=$e.fog,Dt=ct.isMeshStandardMaterial?$e.environment:null,an=D===null?B.outputColorSpace:D.isXRRenderTarget===!0?D.texture.colorSpace:Qa,qt=(ct.isMeshStandardMaterial?xe:zt).get(ct.envMap||Dt),Sn=ct.vertexColors===!0&&!!ut.attributes.color&&ut.attributes.color.itemSize===4,Ln=!!ut.attributes.tangent&&(!!ct.normalMap||ct.anisotropy>0),Rn=!!ut.morphAttributes.position,Zn=!!ut.morphAttributes.normal,li=!!ut.morphAttributes.color;let Wi=Lu;ct.toneMapped&&(D===null||D.isXRRenderTarget===!0)&&(Wi=B.toneMapping);const Ci=ut.morphAttributes.position||ut.morphAttributes.normal||ut.morphAttributes.color,Bi=Ci!==void 0?Ci.length:0,kn=et.get(ct),Gi=b.state.lights;if(we===!0&&(Re===!0||fe!==k)){const Xs=fe===k&&ct.id===P;Je.setState(ct,fe,Xs)}let ci=!1;ct.version===kn.__version?(kn.needsLights&&kn.lightsStateVersion!==Gi.state.version||kn.outputColorSpace!==an||qe.isBatchedMesh&&kn.batching===!1||!qe.isBatchedMesh&&kn.batching===!0||qe.isBatchedMesh&&kn.batchingColor===!0&&qe.colorTexture===null||qe.isBatchedMesh&&kn.batchingColor===!1&&qe.colorTexture!==null||qe.isInstancedMesh&&kn.instancing===!1||!qe.isInstancedMesh&&kn.instancing===!0||qe.isSkinnedMesh&&kn.skinning===!1||!qe.isSkinnedMesh&&kn.skinning===!0||qe.isInstancedMesh&&kn.instancingColor===!0&&qe.instanceColor===null||qe.isInstancedMesh&&kn.instancingColor===!1&&qe.instanceColor!==null||qe.isInstancedMesh&&kn.instancingMorph===!0&&qe.morphTexture===null||qe.isInstancedMesh&&kn.instancingMorph===!1&&qe.morphTexture!==null||kn.envMap!==qt||ct.fog===!0&&kn.fog!==It||kn.numClippingPlanes!==void 0&&(kn.numClippingPlanes!==Je.numPlanes||kn.numIntersection!==Je.numIntersection)||kn.vertexAlphas!==Sn||kn.vertexTangents!==Ln||kn.morphTargets!==Rn||kn.morphNormals!==Zn||kn.morphColors!==li||kn.toneMapping!==Wi||kn.morphTargetsCount!==Bi)&&(ci=!0):(ci=!0,kn.__version=ct.version);let ss=kn.currentProgram;ci===!0&&(ss=In(ct,$e,qe));let rs=!1,Ys=!1,sa=!1;const Qi=ss.getUniforms(),rr=kn.uniforms;if(me.useProgram(ss.program)&&(rs=!0,Ys=!0,sa=!0),ct.id!==P&&(P=ct.id,Ys=!0),rs||k!==fe){me.buffers.depth.getReversed()?(Ne.copy(fe.projectionMatrix),cfe(Ne),hfe(Ne),Qi.setValue(_e,"projectionMatrix",Ne)):Qi.setValue(_e,"projectionMatrix",fe.projectionMatrix),Qi.setValue(_e,"viewMatrix",fe.matrixWorldInverse);const js=Qi.map.cameraPosition;js!==void 0&&js.setValue(_e,tt.setFromMatrixPosition(fe.matrixWorld)),Ee.logarithmicDepthBuffer&&Qi.setValue(_e,"logDepthBufFC",2/(Math.log(fe.far+1)/Math.LN2)),(ct.isMeshPhongMaterial||ct.isMeshToonMaterial||ct.isMeshLambertMaterial||ct.isMeshBasicMaterial||ct.isMeshStandardMaterial||ct.isShaderMaterial)&&Qi.setValue(_e,"isOrthographic",fe.isOrthographicCamera===!0),k!==fe&&(k=fe,Ys=!0,sa=!0)}if(qe.isSkinnedMesh){Qi.setOptional(_e,qe,"bindMatrix"),Qi.setOptional(_e,qe,"bindMatrixInverse");const Xs=qe.skeleton;Xs&&(Xs.boneTexture===null&&Xs.computeBoneTexture(),Qi.setValue(_e,"boneTexture",Xs.boneTexture,ht))}qe.isBatchedMesh&&(Qi.setOptional(_e,qe,"batchingTexture"),Qi.setValue(_e,"batchingTexture",qe._matricesTexture,ht),Qi.setOptional(_e,qe,"batchingIdTexture"),Qi.setValue(_e,"batchingIdTexture",qe._indirectTexture,ht),Qi.setOptional(_e,qe,"batchingColorTexture"),qe._colorsTexture!==null&&Qi.setValue(_e,"batchingColorTexture",qe._colorsTexture,ht));const Qs=ut.morphAttributes;if((Qs.position!==void 0||Qs.normal!==void 0||Qs.color!==void 0)&&$t.update(qe,ut,ss),(Ys||kn.receiveShadow!==qe.receiveShadow)&&(kn.receiveShadow=qe.receiveShadow,Qi.setValue(_e,"receiveShadow",qe.receiveShadow)),ct.isMeshGouraudMaterial&&ct.envMap!==null&&(rr.envMap.value=qt,rr.flipEnvMap.value=qt.isCubeTexture&&qt.isRenderTargetTexture===!1?-1:1),ct.isMeshStandardMaterial&&ct.envMap===null&&$e.environment!==null&&(rr.envMapIntensity.value=$e.environmentIntensity),Ys&&(Qi.setValue(_e,"toneMappingExposure",B.toneMappingExposure),kn.needsLights&&$n(rr,sa),It&&ct.fog===!0&&De.refreshFogUniforms(rr,It),De.refreshMaterialUniforms(rr,ct,K,Z,b.state.transmissionRenderTarget[fe.id]),Rb.upload(_e,rn(kn),rr,ht)),ct.isShaderMaterial&&ct.uniformsNeedUpdate===!0&&(Rb.upload(_e,rn(kn),rr,ht),ct.uniformsNeedUpdate=!1),ct.isSpriteMaterial&&Qi.setValue(_e,"center",qe.center),Qi.setValue(_e,"modelViewMatrix",qe.modelViewMatrix),Qi.setValue(_e,"normalMatrix",qe.normalMatrix),Qi.setValue(_e,"modelMatrix",qe.matrixWorld),ct.isShaderMaterial||ct.isRawShaderMaterial){const Xs=ct.uniformsGroups;for(let js=0,mr=Xs.length;js<mr;js++){const Va=Xs[js];Ge.update(Va,ss),Ge.bind(Va,ss)}}return ss}function $n(fe,$e){fe.ambientLightColor.needsUpdate=$e,fe.lightProbe.needsUpdate=$e,fe.directionalLights.needsUpdate=$e,fe.directionalLightShadows.needsUpdate=$e,fe.pointLights.needsUpdate=$e,fe.pointLightShadows.needsUpdate=$e,fe.spotLights.needsUpdate=$e,fe.spotLightShadows.needsUpdate=$e,fe.rectAreaLights.needsUpdate=$e,fe.hemisphereLights.needsUpdate=$e}function Wn(fe){return fe.isMeshLambertMaterial||fe.isMeshToonMaterial||fe.isMeshPhongMaterial||fe.isMeshStandardMaterial||fe.isShadowMaterial||fe.isShaderMaterial&&fe.lights===!0}this.getActiveCubeFace=function(){return Q},this.getActiveMipmapLevel=function(){return U},this.getRenderTarget=function(){return D},this.setRenderTargetTextures=function(fe,$e,ut){const ct=et.get(fe);ct.__autoAllocateDepthBuffer=fe.resolveDepthBuffer===!1,ct.__autoAllocateDepthBuffer===!1&&(ct.__useRenderToTexture=!1),et.get(fe.texture).__webglTexture=$e,et.get(fe.depthTexture).__webglTexture=ct.__autoAllocateDepthBuffer?void 0:ut,ct.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(fe,$e){const ut=et.get(fe);ut.__webglFramebuffer=$e,ut.__useDefaultFramebuffer=$e===void 0};const Si=_e.createFramebuffer();this.setRenderTarget=function(fe,$e=0,ut=0){D=fe,Q=$e,U=ut;let ct=!0,qe=null,It=!1,Dt=!1;if(fe){const qt=et.get(fe);if(qt.__useDefaultFramebuffer!==void 0)me.bindFramebuffer(_e.FRAMEBUFFER,null),ct=!1;else if(qt.__webglFramebuffer===void 0)ht.setupRenderTarget(fe);else if(qt.__hasExternalTextures)ht.rebindTextures(fe,et.get(fe.texture).__webglTexture,et.get(fe.depthTexture).__webglTexture);else if(fe.depthBuffer){const Rn=fe.depthTexture;if(qt.__boundDepthTexture!==Rn){if(Rn!==null&&et.has(Rn)&&(fe.width!==Rn.image.width||fe.height!==Rn.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");ht.setupDepthRenderbuffer(fe)}}const Sn=fe.texture;(Sn.isData3DTexture||Sn.isDataArrayTexture||Sn.isCompressedArrayTexture)&&(Dt=!0);const Ln=et.get(fe).__webglFramebuffer;fe.isWebGLCubeRenderTarget?(Array.isArray(Ln[$e])?qe=Ln[$e][ut]:qe=Ln[$e],It=!0):fe.samples>0&&ht.useMultisampledRTT(fe)===!1?qe=et.get(fe).__webglMultisampledFramebuffer:Array.isArray(Ln)?qe=Ln[ut]:qe=Ln,N.copy(fe.viewport),W.copy(fe.scissor),X=fe.scissorTest}else N.copy(ue).multiplyScalar(K).floor(),W.copy(be).multiplyScalar(K).floor(),X=ye;if(ut!==0&&(qe=Si),me.bindFramebuffer(_e.FRAMEBUFFER,qe)&&ct&&me.drawBuffers(fe,qe),me.viewport(N),me.scissor(W),me.setScissorTest(X),It){const qt=et.get(fe.texture);_e.framebufferTexture2D(_e.FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_CUBE_MAP_POSITIVE_X+$e,qt.__webglTexture,ut)}else if(Dt){const qt=et.get(fe.texture),Sn=$e;_e.framebufferTextureLayer(_e.FRAMEBUFFER,_e.COLOR_ATTACHMENT0,qt.__webglTexture,ut,Sn)}else if(fe!==null&&ut!==0){const qt=et.get(fe.texture);_e.framebufferTexture2D(_e.FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_2D,qt.__webglTexture,ut)}P=-1},this.readRenderTargetPixels=function(fe,$e,ut,ct,qe,It,Dt,an=0){if(!(fe&&fe.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let qt=et.get(fe).__webglFramebuffer;if(fe.isWebGLCubeRenderTarget&&Dt!==void 0&&(qt=qt[Dt]),qt){me.bindFramebuffer(_e.FRAMEBUFFER,qt);try{const Sn=fe.textures[an],Ln=Sn.format,Rn=Sn.type;if(!Ee.textureFormatReadable(Ln)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Ee.textureTypeReadable(Rn)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}$e>=0&&$e<=fe.width-ct&&ut>=0&&ut<=fe.height-qe&&(fe.textures.length>1&&_e.readBuffer(_e.COLOR_ATTACHMENT0+an),_e.readPixels($e,ut,ct,qe,Gt.convert(Ln),Gt.convert(Rn),It))}finally{const Sn=D!==null?et.get(D).__webglFramebuffer:null;me.bindFramebuffer(_e.FRAMEBUFFER,Sn)}}},this.readRenderTargetPixelsAsync=async function(fe,$e,ut,ct,qe,It,Dt,an=0){if(!(fe&&fe.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let qt=et.get(fe).__webglFramebuffer;if(fe.isWebGLCubeRenderTarget&&Dt!==void 0&&(qt=qt[Dt]),qt)if($e>=0&&$e<=fe.width-ct&&ut>=0&&ut<=fe.height-qe){me.bindFramebuffer(_e.FRAMEBUFFER,qt);const Sn=fe.textures[an],Ln=Sn.format,Rn=Sn.type;if(!Ee.textureFormatReadable(Ln))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Ee.textureTypeReadable(Rn))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Zn=_e.createBuffer();_e.bindBuffer(_e.PIXEL_PACK_BUFFER,Zn),_e.bufferData(_e.PIXEL_PACK_BUFFER,It.byteLength,_e.STREAM_READ),fe.textures.length>1&&_e.readBuffer(_e.COLOR_ATTACHMENT0+an),_e.readPixels($e,ut,ct,qe,Gt.convert(Ln),Gt.convert(Rn),0);const li=D!==null?et.get(D).__webglFramebuffer:null;me.bindFramebuffer(_e.FRAMEBUFFER,li);const Wi=_e.fenceSync(_e.SYNC_GPU_COMMANDS_COMPLETE,0);return _e.flush(),await lfe(_e,Wi,4),_e.bindBuffer(_e.PIXEL_PACK_BUFFER,Zn),_e.getBufferSubData(_e.PIXEL_PACK_BUFFER,0,It),_e.deleteBuffer(Zn),_e.deleteSync(Wi),It}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(fe,$e=null,ut=0){const ct=Math.pow(2,-ut),qe=Math.floor(fe.image.width*ct),It=Math.floor(fe.image.height*ct),Dt=$e!==null?$e.x:0,an=$e!==null?$e.y:0;ht.setTexture2D(fe,0),_e.copyTexSubImage2D(_e.TEXTURE_2D,ut,0,0,Dt,an,qe,It),me.unbindTexture()};const sr=_e.createFramebuffer(),jn=_e.createFramebuffer();this.copyTextureToTexture=function(fe,$e,ut=null,ct=null,qe=0,It=null){It===null&&(qe!==0?(gm("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),It=qe,qe=0):It=0);let Dt,an,qt,Sn,Ln,Rn,Zn,li,Wi;const Ci=fe.isCompressedTexture?fe.mipmaps[It]:fe.image;if(ut!==null)Dt=ut.max.x-ut.min.x,an=ut.max.y-ut.min.y,qt=ut.isBox3?ut.max.z-ut.min.z:1,Sn=ut.min.x,Ln=ut.min.y,Rn=ut.isBox3?ut.min.z:0;else{const Qs=Math.pow(2,-qe);Dt=Math.floor(Ci.width*Qs),an=Math.floor(Ci.height*Qs),fe.isDataArrayTexture?qt=Ci.depth:fe.isData3DTexture?qt=Math.floor(Ci.depth*Qs):qt=1,Sn=0,Ln=0,Rn=0}ct!==null?(Zn=ct.x,li=ct.y,Wi=ct.z):(Zn=0,li=0,Wi=0);const Bi=Gt.convert($e.format),kn=Gt.convert($e.type);let Gi;$e.isData3DTexture?(ht.setTexture3D($e,0),Gi=_e.TEXTURE_3D):$e.isDataArrayTexture||$e.isCompressedArrayTexture?(ht.setTexture2DArray($e,0),Gi=_e.TEXTURE_2D_ARRAY):(ht.setTexture2D($e,0),Gi=_e.TEXTURE_2D),_e.pixelStorei(_e.UNPACK_FLIP_Y_WEBGL,$e.flipY),_e.pixelStorei(_e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$e.premultiplyAlpha),_e.pixelStorei(_e.UNPACK_ALIGNMENT,$e.unpackAlignment);const ci=_e.getParameter(_e.UNPACK_ROW_LENGTH),ss=_e.getParameter(_e.UNPACK_IMAGE_HEIGHT),rs=_e.getParameter(_e.UNPACK_SKIP_PIXELS),Ys=_e.getParameter(_e.UNPACK_SKIP_ROWS),sa=_e.getParameter(_e.UNPACK_SKIP_IMAGES);_e.pixelStorei(_e.UNPACK_ROW_LENGTH,Ci.width),_e.pixelStorei(_e.UNPACK_IMAGE_HEIGHT,Ci.height),_e.pixelStorei(_e.UNPACK_SKIP_PIXELS,Sn),_e.pixelStorei(_e.UNPACK_SKIP_ROWS,Ln),_e.pixelStorei(_e.UNPACK_SKIP_IMAGES,Rn);const Qi=fe.isDataArrayTexture||fe.isData3DTexture,rr=$e.isDataArrayTexture||$e.isData3DTexture;if(fe.isDepthTexture){const Qs=et.get(fe),Xs=et.get($e),js=et.get(Qs.__renderTarget),mr=et.get(Xs.__renderTarget);me.bindFramebuffer(_e.READ_FRAMEBUFFER,js.__webglFramebuffer),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,mr.__webglFramebuffer);for(let Va=0;Va<qt;Va++)Qi&&(_e.framebufferTextureLayer(_e.READ_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,et.get(fe).__webglTexture,qe,Rn+Va),_e.framebufferTextureLayer(_e.DRAW_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,et.get($e).__webglTexture,It,Wi+Va)),_e.blitFramebuffer(Sn,Ln,Dt,an,Zn,li,Dt,an,_e.DEPTH_BUFFER_BIT,_e.NEAREST);me.bindFramebuffer(_e.READ_FRAMEBUFFER,null),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,null)}else if(qe!==0||fe.isRenderTargetTexture||et.has(fe)){const Qs=et.get(fe),Xs=et.get($e);me.bindFramebuffer(_e.READ_FRAMEBUFFER,sr),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,jn);for(let js=0;js<qt;js++)Qi?_e.framebufferTextureLayer(_e.READ_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,Qs.__webglTexture,qe,Rn+js):_e.framebufferTexture2D(_e.READ_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_2D,Qs.__webglTexture,qe),rr?_e.framebufferTextureLayer(_e.DRAW_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,Xs.__webglTexture,It,Wi+js):_e.framebufferTexture2D(_e.DRAW_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_2D,Xs.__webglTexture,It),qe!==0?_e.blitFramebuffer(Sn,Ln,Dt,an,Zn,li,Dt,an,_e.COLOR_BUFFER_BIT,_e.NEAREST):rr?_e.copyTexSubImage3D(Gi,It,Zn,li,Wi+js,Sn,Ln,Dt,an):_e.copyTexSubImage2D(Gi,It,Zn,li,Sn,Ln,Dt,an);me.bindFramebuffer(_e.READ_FRAMEBUFFER,null),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,null)}else rr?fe.isDataTexture||fe.isData3DTexture?_e.texSubImage3D(Gi,It,Zn,li,Wi,Dt,an,qt,Bi,kn,Ci.data):$e.isCompressedArrayTexture?_e.compressedTexSubImage3D(Gi,It,Zn,li,Wi,Dt,an,qt,Bi,Ci.data):_e.texSubImage3D(Gi,It,Zn,li,Wi,Dt,an,qt,Bi,kn,Ci):fe.isDataTexture?_e.texSubImage2D(_e.TEXTURE_2D,It,Zn,li,Dt,an,Bi,kn,Ci.data):fe.isCompressedTexture?_e.compressedTexSubImage2D(_e.TEXTURE_2D,It,Zn,li,Ci.width,Ci.height,Bi,Ci.data):_e.texSubImage2D(_e.TEXTURE_2D,It,Zn,li,Dt,an,Bi,kn,Ci);_e.pixelStorei(_e.UNPACK_ROW_LENGTH,ci),_e.pixelStorei(_e.UNPACK_IMAGE_HEIGHT,ss),_e.pixelStorei(_e.UNPACK_SKIP_PIXELS,rs),_e.pixelStorei(_e.UNPACK_SKIP_ROWS,Ys),_e.pixelStorei(_e.UNPACK_SKIP_IMAGES,sa),It===0&&$e.generateMipmaps&&_e.generateMipmap(Gi),me.unbindTexture()},this.copyTextureToTexture3D=function(fe,$e,ut=null,ct=null,qe=0){return gm('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(fe,$e,ut,ct,qe)},this.initRenderTarget=function(fe){et.get(fe).__webglFramebuffer===void 0&&ht.setupRenderTarget(fe)},this.initTexture=function(fe){fe.isCubeTexture?ht.setTextureCube(fe,0):fe.isData3DTexture?ht.setTexture3D(fe,0):fe.isDataArrayTexture||fe.isCompressedArrayTexture?ht.setTexture2DArray(fe,0):ht.setTexture2D(fe,0),me.unbindTexture()},this.resetState=function(){Q=0,U=0,D=null,me.reset(),xn.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return vh}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Ii._getDrawingBufferColorSpace(e),t.unpackColorSpace=Ii._getUnpackColorSpace()}};function JP(s,e){if(e===kpe)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),s;if(e===SI||e===c8){let t=s.getIndex();if(t===null){const a=[],o=s.getAttribute("position");if(o!==void 0){for(let c=0;c<o.count;c++)a.push(c);s.setIndex(a),t=s.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),s}const n=t.count-2,i=[];if(e===SI)for(let a=1;a<=n;a++)i.push(t.getX(0)),i.push(t.getX(a)),i.push(t.getX(a+1));else for(let a=0;a<n;a++)a%2===0?(i.push(t.getX(a)),i.push(t.getX(a+1)),i.push(t.getX(a+2))):(i.push(t.getX(a+2)),i.push(t.getX(a+1)),i.push(t.getX(a)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=s.clone();return r.setIndex(i),r.clearGroups(),r}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),s}class hve extends _p{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new mve(t)}),this.register(function(t){return new gve(t)}),this.register(function(t){return new Eve(t)}),this.register(function(t){return new Sve(t)}),this.register(function(t){return new Ive(t)}),this.register(function(t){return new Ave(t)}),this.register(function(t){return new vve(t)}),this.register(function(t){return new yve(t)}),this.register(function(t){return new bve(t)}),this.register(function(t){return new fve(t)}),this.register(function(t){return new xve(t)}),this.register(function(t){return new _ve(t)}),this.register(function(t){return new wve(t)}),this.register(function(t){return new Cve(t)}),this.register(function(t){return new dve(t)}),this.register(function(t){return new Mve(t)}),this.register(function(t){return new Tve(t)})}load(e,t,n,i){const r=this;let a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){const h=d_.extractUrlBase(e);a=d_.resolveURL(h,this.path)}else a=d_.extractUrlBase(e);this.manager.itemStart(e);const o=function(h){i?i(h):console.error(h),r.manager.itemError(e),r.manager.itemEnd(e)},c=new PT(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(h){try{r.parse(h,a,function(d){t(d),r.manager.itemEnd(e)},o)}catch(d){o(d)}},n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let r;const a={},o={},c=new TextDecoder;if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.decode(new Uint8Array(e,0,4))===W8){try{a[vi.KHR_BINARY_GLTF]=new Bve(e)}catch(f){i&&i(f);return}r=JSON.parse(a[vi.KHR_BINARY_GLTF].content)}else r=JSON.parse(c.decode(e));else r=e;if(r.asset===void 0||r.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const h=new $ve(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});h.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d<this.pluginCallbacks.length;d++){const f=this.pluginCallbacks[d](h);f.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[f.name]=f,a[f.name]=!0}if(r.extensionsUsed)for(let d=0;d<r.extensionsUsed.length;++d){const f=r.extensionsUsed[d],m=r.extensionsRequired||[];switch(f){case vi.KHR_MATERIALS_UNLIT:a[f]=new pve;break;case vi.KHR_DRACO_MESH_COMPRESSION:a[f]=new Lve(r,this.dracoLoader);break;case vi.KHR_TEXTURE_TRANSFORM:a[f]=new Rve;break;case vi.KHR_MESH_QUANTIZATION:a[f]=new kve;break;default:m.indexOf(f)>=0&&o[f]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+f+'".')}}h.setExtensions(a),h.setPlugins(o),h.parse(n,i)}parseAsync(e,t){const n=this;return new Promise(function(i,r){n.parse(e,t,i,r)})}}function uve(){let s={};return{get:function(e){return s[e]},add:function(e,t){s[e]=t},remove:function(e){delete s[e]},removeAll:function(){s={}}}}const vi={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class dve{constructor(e){this.parser=e,this.name=vi.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){const r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let i=t.cache.get(n);if(i)return i;const r=t.json,c=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let h;const d=new Hn(16777215);c.color!==void 0&&d.setRGB(c.color[0],c.color[1],c.color[2],Qa);const f=c.range!==void 0?c.range:0;switch(c.type){case"directional":h=new U8(d),h.target.position.set(0,0,-1),h.add(h.target);break;case"point":h=new dme(d),h.distance=f;break;case"spot":h=new hme(d),h.distance=f,c.spot=c.spot||{},c.spot.innerConeAngle=c.spot.innerConeAngle!==void 0?c.spot.innerConeAngle:0,c.spot.outerConeAngle=c.spot.outerConeAngle!==void 0?c.spot.outerConeAngle:Math.PI/4,h.angle=c.spot.outerConeAngle,h.penumbra=1-c.spot.innerConeAngle/c.spot.outerConeAngle,h.target.position.set(0,0,-1),h.add(h.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+c.type)}return h.position.set(0,0,0),mh(h,c),c.intensity!==void 0&&(h.intensity=c.intensity),h.name=t.createUniqueName(c.name||"light_"+e),i=Promise.resolve(h),t.cache.add(n,i),i}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,r=n.json.nodes[e],o=(r.extensions&&r.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(c){return n._getNodeRef(t.cache,o,c)})}}class pve{constructor(){this.name=vi.KHR_MATERIALS_UNLIT}getMaterialType(){return jd}extendParams(e,t,n){const i=[];e.color=new Hn(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const a=r.baseColorFactor;e.color.setRGB(a[0],a[1],a[2],Qa),e.opacity=a[3]}r.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",r.baseColorTexture,xr))}return Promise.all(i)}}class fve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name].emissiveStrength;return r!==void 0&&(t.emissiveIntensity=r),Promise.resolve()}}class mve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];if(a.clearcoatFactor!==void 0&&(t.clearcoat=a.clearcoatFactor),a.clearcoatTexture!==void 0&&r.push(n.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),a.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),a.clearcoatRoughnessTexture!==void 0&&r.push(n.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),a.clearcoatNormalTexture!==void 0&&(r.push(n.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),a.clearcoatNormalTexture.scale!==void 0)){const o=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new di(o,o)}return Promise.all(r)}}class gve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_DISPERSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return t.dispersion=r.dispersion!==void 0?r.dispersion:0,Promise.resolve()}}class _ve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return a.iridescenceFactor!==void 0&&(t.iridescence=a.iridescenceFactor),a.iridescenceTexture!==void 0&&r.push(n.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),a.iridescenceIor!==void 0&&(t.iridescenceIOR=a.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),a.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),a.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),a.iridescenceThicknessTexture!==void 0&&r.push(n.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(r)}}class Ave{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new Hn(0,0,0),t.sheenRoughness=0,t.sheen=1;const a=i.extensions[this.name];if(a.sheenColorFactor!==void 0){const o=a.sheenColorFactor;t.sheenColor.setRGB(o[0],o[1],o[2],Qa)}return a.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=a.sheenRoughnessFactor),a.sheenColorTexture!==void 0&&r.push(n.assignTexture(t,"sheenColorMap",a.sheenColorTexture,xr)),a.sheenRoughnessTexture!==void 0&&r.push(n.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(r)}}class vve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return a.transmissionFactor!==void 0&&(t.transmission=a.transmissionFactor),a.transmissionTexture!==void 0&&r.push(n.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(r)}}class yve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];t.thickness=a.thicknessFactor!==void 0?a.thicknessFactor:0,a.thicknessTexture!==void 0&&r.push(n.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;const o=a.attenuationColor||[1,1,1];return t.attenuationColor=new Hn().setRGB(o[0],o[1],o[2],Qa),Promise.all(r)}}class bve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return t.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}}class xve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];t.specularIntensity=a.specularFactor!==void 0?a.specularFactor:1,a.specularTexture!==void 0&&r.push(n.assignTexture(t,"specularIntensityMap",a.specularTexture));const o=a.specularColorFactor||[1,1,1];return t.specularColor=new Hn().setRGB(o[0],o[1],o[2],Qa),a.specularColorTexture!==void 0&&r.push(n.assignTexture(t,"specularColorMap",a.specularColorTexture,xr)),Promise.all(r)}}class Cve{constructor(e){this.parser=e,this.name=vi.EXT_MATERIALS_BUMP}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return t.bumpScale=a.bumpFactor!==void 0?a.bumpFactor:1,a.bumpTexture!==void 0&&r.push(n.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(r)}}class wve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return a.anisotropyStrength!==void 0&&(t.anisotropy=a.anisotropyStrength),a.anisotropyRotation!==void 0&&(t.anisotropyRotation=a.anisotropyRotation),a.anisotropyTexture!==void 0&&r.push(n.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(r)}}class Eve{constructor(e){this.parser=e,this.name=vi.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,a)}}class Sve{constructor(e){this.parser=e,this.name=vi.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const a=r.extensions[t],o=i.images[a.source];let c=n.textureLoader;if(o.uri){const h=n.options.manager.getHandler(o.uri);h!==null&&(c=h)}return n.loadTextureImage(e,a.source,c)}}class Ive{constructor(e){this.parser=e,this.name=vi.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const a=r.extensions[t],o=i.images[a.source];let c=n.textureLoader;if(o.uri){const h=n.options.manager.getHandler(o.uri);h!==null&&(c=h)}return n.loadTextureImage(e,a.source,c)}}class Mve{constructor(e){this.name=vi.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const i=n.extensions[this.name],r=this.parser.getDependency("buffer",i.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(o){const c=i.byteOffset||0,h=i.byteLength||0,d=i.count,f=i.byteStride,m=new Uint8Array(o,c,h);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(d,f,m,i.mode,i.filter).then(function(_){return _.buffer}):a.ready.then(function(){const _=new ArrayBuffer(d*f);return a.decodeGltfBuffer(new Uint8Array(_),d,f,m,i.mode,i.filter),_})})}else return null}}class Tve{constructor(e){this.name=vi.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const i=t.meshes[n.mesh];for(const h of i.primitives)if(h.mode!==Ko.TRIANGLES&&h.mode!==Ko.TRIANGLE_STRIP&&h.mode!==Ko.TRIANGLE_FAN&&h.mode!==void 0)return null;const a=n.extensions[this.name].attributes,o=[],c={};for(const h in a)o.push(this.parser.getDependency("accessor",a[h]).then(d=>(c[h]=d,c[h])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(h=>{const d=h.pop(),f=d.isGroup?d.children:[d],m=h[0].count,_=[];for(const y of f){const x=new Nn,w=new Oe,b=new Ws,I=new Oe(1,1,1),T=new Ufe(y.geometry,y.material,m);for(let B=0;B<m;B++)c.TRANSLATION&&w.fromBufferAttribute(c.TRANSLATION,B),c.ROTATION&&b.fromBufferAttribute(c.ROTATION,B),c.SCALE&&I.fromBufferAttribute(c.SCALE,B),T.setMatrixAt(B,x.compose(w,b,I));for(const B in c)if(B==="_COLOR_0"){const O=c[B];T.instanceColor=new y1(O.array,O.itemSize,O.normalized)}else B!=="TRANSLATION"&&B!=="ROTATION"&&B!=="SCALE"&&y.geometry.setAttribute(B,c[B]);qs.prototype.copy.call(T,y),this.parser.assignFinalMaterial(T),_.push(T)}return d.isGroup?(d.clear(),d.add(..._),d):_[0]}))}}const W8="glTF",_0=12,KP={JSON:1313821514,BIN:5130562};class Bve{constructor(e){this.name=vi.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,_0),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==W8)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-_0,r=new DataView(e,_0);let a=0;for(;a<i;){const o=r.getUint32(a,!0);a+=4;const c=r.getUint32(a,!0);if(a+=4,c===KP.JSON){const h=new Uint8Array(e,_0+a,o);this.content=n.decode(h)}else if(c===KP.BIN){const h=_0+a;this.body=e.slice(h,h+o)}a+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Lve{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=vi.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,i=this.dracoLoader,r=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},c={},h={};for(const d in a){const f=RI[d]||d.toLowerCase();o[f]=a[d]}for(const d in e.attributes){const f=RI[d]||d.toLowerCase();if(a[d]!==void 0){const m=n.accessors[e.attributes[d]],_=Am[m.componentType];h[f]=_.name,c[f]=m.normalized===!0}}return t.getDependency("bufferView",r).then(function(d){return new Promise(function(f,m){i.decodeDracoFile(d,function(_){for(const y in _.attributes){const x=_.attributes[y],w=c[y];w!==void 0&&(x.normalized=w)}f(_)},o,h,Qa,m)})})}}class Rve{constructor(){this.name=vi.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class kve{constructor(){this.name=vi.KHR_MESH_QUANTIZATION}}class q8 extends bA{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i;for(let a=0;a!==i;a++)t[a]=n[r+a];return t}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=o*2,h=o*3,d=i-t,f=(n-t)/d,m=f*f,_=m*f,y=e*h,x=y-h,w=-2*_+3*m,b=_-m,I=1-w,T=b-m+f;for(let B=0;B!==o;B++){const O=a[x+B+o],Q=a[x+B+c]*d,U=a[y+B+o],D=a[y+B]*d;r[B]=I*O+T*Q+w*U+b*D}return r}}const Pve=new Ws;class Nve extends q8{interpolate_(e,t,n,i){const r=super.interpolate_(e,t,n,i);return Pve.fromArray(r).normalize().toArray(r),r}}const Ko={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Am={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},eN={9728:Er,9729:Lo,9984:t8,9985:wb,9986:V0,9987:Ah},tN={33071:Eu,33648:g1,10497:Rm},Qw={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},RI={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ru={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Dve={CUBICSPLINE:void 0,LINEAR:U_,STEP:O_},$w={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Fve(s){return s.DefaultMaterial===void 0&&(s.DefaultMaterial=new G_({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Ph})),s.DefaultMaterial}function Nd(s,e,t){for(const n in t.extensions)s[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function mh(s,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(s.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Ove(s,e,t){let n=!1,i=!1,r=!1;for(let h=0,d=e.length;h<d;h++){const f=e[h];if(f.POSITION!==void 0&&(n=!0),f.NORMAL!==void 0&&(i=!0),f.COLOR_0!==void 0&&(r=!0),n&&i&&r)break}if(!n&&!i&&!r)return Promise.resolve(s);const a=[],o=[],c=[];for(let h=0,d=e.length;h<d;h++){const f=e[h];if(n){const m=f.POSITION!==void 0?t.getDependency("accessor",f.POSITION):s.attributes.position;a.push(m)}if(i){const m=f.NORMAL!==void 0?t.getDependency("accessor",f.NORMAL):s.attributes.normal;o.push(m)}if(r){const m=f.COLOR_0!==void 0?t.getDependency("accessor",f.COLOR_0):s.attributes.color;c.push(m)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(c)]).then(function(h){const d=h[0],f=h[1],m=h[2];return n&&(s.morphAttributes.position=d),i&&(s.morphAttributes.normal=f),r&&(s.morphAttributes.color=m),s.morphTargetsRelative=!0,s})}function Uve(s,e){if(s.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)s.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(s.morphTargetInfluences.length===t.length){s.morphTargetDictionary={};for(let n=0,i=t.length;n<i;n++)s.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function zve(s){let e;const t=s.extensions&&s.extensions[vi.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+Hw(t.attributes):e=s.indices+":"+Hw(s.attributes)+":"+s.mode,s.targets!==void 0)for(let n=0,i=s.targets.length;n<i;n++)e+=":"+Hw(s.targets[n]);return e}function Hw(s){let e="";const t=Object.keys(s).sort();for(let n=0,i=t.length;n<i;n++)e+=t[n]+":"+s[t[n]]+";";return e}function kI(s){switch(s){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Gve(s){return s.search(/\.jpe?g($|\?)/i)>0||s.search(/^data\:image\/jpeg/)===0?"image/jpeg":s.search(/\.webp($|\?)/i)>0||s.search(/^data\:image\/webp/)===0?"image/webp":s.search(/\.ktx2($|\?)/i)>0||s.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Qve=new Nn;class $ve{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new uve,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,i=-1,r=!1,a=-1;if(typeof navigator<"u"){const o=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(o)===!0;const c=o.match(/Version\/(\d+)/);i=n&&c?parseInt(c[1],10):-1,r=o.indexOf("Firefox")>-1,a=r?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||n&&i<17||r&&a<98?this.textureLoader=new lme(this.options.manager):this.textureLoader=new gme(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new PT(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,i=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(a){const o={scene:a[0][i.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:i.asset,parser:n,userData:{}};return Nd(r,o,i),mh(o,i),Promise.all(n._invokeAll(function(c){return c.afterRoot&&c.afterRoot(o)})).then(function(){for(const c of o.scenes)c.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let i=0,r=t.length;i<r;i++){const a=t[i].joints;for(let o=0,c=a.length;o<c;o++)e[a[o]].isBone=!0}for(let i=0,r=e.length;i<r;i++){const a=e[i];a.mesh!==void 0&&(this._addNodeRef(this.meshCache,a.mesh),a.skin!==void 0&&(n[a.mesh].isSkinnedMesh=!0)),a.camera!==void 0&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const i=n.clone(),r=(a,o)=>{const c=this.associations.get(a);c!=null&&this.associations.set(o,c);for(const[h,d]of a.children.entries())r(d,o.children[h])};return r(n,i),i.name+="_instance_"+e.uses[t]++,i}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const i=e(t[n]);if(i)return i}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let i=0;i<t.length;i++){const r=e(t[i]);r&&n.push(r)}return n}getDependency(e,t){const n=e+":"+t;let i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this._invokeOne(function(r){return r.loadNode&&r.loadNode(t)});break;case"mesh":i=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:if(i=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!i)throw new Error("Unknown type: "+e);break}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(i.map(function(r,a){return n.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[vi.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(r,a){n.load(d_.resolveURL(t.uri,i.path),r,void 0,function(){a(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const i=t.byteLength||0,r=t.byteOffset||0;return n.slice(r,r+i)})}loadAccessor(e){const t=this,n=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){const a=Qw[i.type],o=Am[i.componentType],c=i.normalized===!0,h=new o(i.count*a);return Promise.resolve(new Jr(h,a,c))}const r=[];return i.bufferView!==void 0?r.push(this.getDependency("bufferView",i.bufferView)):r.push(null),i.sparse!==void 0&&(r.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(r).then(function(a){const o=a[0],c=Qw[i.type],h=Am[i.componentType],d=h.BYTES_PER_ELEMENT,f=d*c,m=i.byteOffset||0,_=i.bufferView!==void 0?n.bufferViews[i.bufferView].byteStride:void 0,y=i.normalized===!0;let x,w;if(_&&_!==f){const b=Math.floor(m/_),I="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+b+":"+i.count;let T=t.cache.get(I);T||(x=new h(o,b*_,i.count*_/d),T=new kfe(x,_/d),t.cache.add(I,T)),w=new Pfe(T,c,m%_/d,y)}else o===null?x=new h(i.count*c):x=new h(o,m,i.count*c),w=new Jr(x,c,y);if(i.sparse!==void 0){const b=Qw.SCALAR,I=Am[i.sparse.indices.componentType],T=i.sparse.indices.byteOffset||0,B=i.sparse.values.byteOffset||0,O=new I(a[1],T,i.sparse.count*b),Q=new h(a[2],B,i.sparse.count*c);o!==null&&(w=new Jr(w.array.slice(),w.itemSize,w.normalized)),w.normalized=!1;for(let U=0,D=O.length;U<D;U++){const P=O[U];if(w.setX(P,Q[U*c]),c>=2&&w.setY(P,Q[U*c+1]),c>=3&&w.setZ(P,Q[U*c+2]),c>=4&&w.setW(P,Q[U*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}w.normalized=y}return w})}loadTexture(e){const t=this.json,n=this.options,r=t.textures[e].source,a=t.images[r];let o=this.textureLoader;if(a.uri){const c=n.manager.getHandler(a.uri);c!==null&&(o=c)}return this.loadTextureImage(e,r,o)}loadTextureImage(e,t,n){const i=this,r=this.json,a=r.textures[e],o=r.images[t],c=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[c])return this.textureCache[c];const h=this.loadImageSource(t,n).then(function(d){d.flipY=!1,d.name=a.name||o.name||"",d.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(d.name=o.uri);const m=(r.samplers||{})[a.sampler]||{};return d.magFilter=eN[m.magFilter]||Lo,d.minFilter=eN[m.minFilter]||Ah,d.wrapS=tN[m.wrapS]||Rm,d.wrapT=tN[m.wrapT]||Rm,d.generateMipmaps=!d.isCompressedTexture&&d.minFilter!==Er&&d.minFilter!==Lo,i.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[c]=h,h}loadImageSource(e,t){const n=this,i=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(f=>f.clone());const a=i.images[e],o=self.URL||self.webkitURL;let c=a.uri||"",h=!1;if(a.bufferView!==void 0)c=n.getDependency("bufferView",a.bufferView).then(function(f){h=!0;const m=new Blob([f],{type:a.mimeType});return c=o.createObjectURL(m),c});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(c).then(function(f){return new Promise(function(m,_){let y=m;t.isImageBitmapLoader===!0&&(y=function(x){const w=new $a(x);w.needsUpdate=!0,m(w)}),t.load(d_.resolveURL(f,r.path),y,void 0,_)})}).then(function(f){return h===!0&&o.revokeObjectURL(c),mh(f,a),f.userData.mimeType=a.mimeType||Gve(a.uri),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),f});return this.sourceCache[e]=d,d}assignTexture(e,t,n,i){const r=this;return this.getDependency("texture",n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),r.extensions[vi.KHR_TEXTURE_TRANSFORM]){const o=n.extensions!==void 0?n.extensions[vi.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const c=r.associations.get(a);a=r.extensions[vi.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),r.associations.set(a,c)}}return i!==void 0&&(a.colorSpace=i),e[t]=a,a})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const i=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+n.uuid;let c=this.cache.get(o);c||(c=new P8,Gl.prototype.copy.call(c,n),c.color.copy(n.color),c.map=n.map,c.sizeAttenuation=!1,this.cache.add(o,c)),n=c}else if(e.isLine){const o="LineBasicMaterial:"+n.uuid;let c=this.cache.get(o);c||(c=new k8,Gl.prototype.copy.call(c,n),c.color.copy(n.color),c.map=n.map,this.cache.add(o,c)),n=c}if(i||r||a){let o="ClonedMaterial:"+n.uuid+":";i&&(o+="derivative-tangents:"),r&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let c=this.cache.get(o);c||(c=n.clone(),r&&(c.vertexColors=!0),a&&(c.flatShading=!0),i&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(o,c),this.associations.set(c,this.associations.get(n))),n=c}e.material=n}getMaterialType(){return G_}loadMaterial(e){const t=this,n=this.json,i=this.extensions,r=n.materials[e];let a;const o={},c=r.extensions||{},h=[];if(c[vi.KHR_MATERIALS_UNLIT]){const f=i[vi.KHR_MATERIALS_UNLIT];a=f.getMaterialType(),h.push(f.extendParams(o,r,t))}else{const f=r.pbrMetallicRoughness||{};if(o.color=new Hn(1,1,1),o.opacity=1,Array.isArray(f.baseColorFactor)){const m=f.baseColorFactor;o.color.setRGB(m[0],m[1],m[2],Qa),o.opacity=m[3]}f.baseColorTexture!==void 0&&h.push(t.assignTexture(o,"map",f.baseColorTexture,xr)),o.metalness=f.metallicFactor!==void 0?f.metallicFactor:1,o.roughness=f.roughnessFactor!==void 0?f.roughnessFactor:1,f.metallicRoughnessTexture!==void 0&&(h.push(t.assignTexture(o,"metalnessMap",f.metallicRoughnessTexture)),h.push(t.assignTexture(o,"roughnessMap",f.metallicRoughnessTexture))),a=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),h.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,o)})))}r.doubleSided===!0&&(o.side=Nl);const d=r.alphaMode||$w.OPAQUE;if(d===$w.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,d===$w.MASK&&(o.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&a!==jd&&(h.push(t.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new di(1,1),r.normalTexture.scale!==void 0)){const f=r.normalTexture.scale;o.normalScale.set(f,f)}if(r.occlusionTexture!==void 0&&a!==jd&&(h.push(t.assignTexture(o,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&a!==jd){const f=r.emissiveFactor;o.emissive=new Hn().setRGB(f[0],f[1],f[2],Qa)}return r.emissiveTexture!==void 0&&a!==jd&&h.push(t.assignTexture(o,"emissiveMap",r.emissiveTexture,xr)),Promise.all(h).then(function(){const f=new a(o);return r.name&&(f.name=r.name),mh(f,r),t.associations.set(f,{materials:e}),r.extensions&&Nd(i,f,r),f})}createUniqueName(e){const t=Ds.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,i=this.primitiveCache;function r(o){return n[vi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(c){return nN(c,o,t)})}const a=[];for(let o=0,c=e.length;o<c;o++){const h=e[o],d=zve(h),f=i[d];if(f)a.push(f.promise);else{let m;h.extensions&&h.extensions[vi.KHR_DRACO_MESH_COMPRESSION]?m=r(h):m=nN(new Xl,h,t),i[d]={primitive:h,promise:m},a.push(m)}}return Promise.all(a)}loadMesh(e){const t=this,n=this.json,i=this.extensions,r=n.meshes[e],a=r.primitives,o=[];for(let c=0,h=a.length;c<h;c++){const d=a[c].material===void 0?Fve(this.cache):this.getDependency("material",a[c].material);o.push(d)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(c){const h=c.slice(0,c.length-1),d=c[c.length-1],f=[];for(let _=0,y=d.length;_<y;_++){const x=d[_],w=a[_];let b;const I=h[_];if(w.mode===Ko.TRIANGLES||w.mode===Ko.TRIANGLE_STRIP||w.mode===Ko.TRIANGLE_FAN||w.mode===void 0)b=r.isSkinnedMesh===!0?new Dfe(x,I):new Gr(x,I),b.isSkinnedMesh===!0&&b.normalizeSkinWeights(),w.mode===Ko.TRIANGLE_STRIP?b.geometry=JP(b.geometry,c8):w.mode===Ko.TRIANGLE_FAN&&(b.geometry=JP(b.geometry,SI));else if(w.mode===Ko.LINES)b=new $fe(x,I);else if(w.mode===Ko.LINE_STRIP)b=new LT(x,I);else if(w.mode===Ko.LINE_LOOP)b=new Hfe(x,I);else if(w.mode===Ko.POINTS)b=new Vfe(x,I);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+w.mode);Object.keys(b.geometry.morphAttributes).length>0&&Uve(b,r),b.name=t.createUniqueName(r.name||"mesh_"+e),mh(b,r),w.extensions&&Nd(i,b,w),t.assignFinalMaterial(b),f.push(b)}for(let _=0,y=f.length;_<y;_++)t.associations.set(f[_],{meshes:e,primitives:_});if(f.length===1)return r.extensions&&Nd(i,f[0],r),f[0];const m=new xc;r.extensions&&Nd(i,m,r),t.associations.set(m,{meshes:e});for(let _=0,y=f.length;_<y;_++)m.add(f[_]);return m})}loadCamera(e){let t;const n=this.json.cameras[e],i=n[n.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new Xr(zd.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):n.type==="orthographic"&&(t=new ix(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),mh(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let i=0,r=t.joints.length;i<r;i++)n.push(this._loadNodeShallow(t.joints[i]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(i){const r=i.pop(),a=i,o=[],c=[];for(let h=0,d=a.length;h<d;h++){const f=a[h];if(f){o.push(f);const m=new Nn;r!==null&&m.fromArray(r.array,h*16),c.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[h])}return new TT(o,c)})}loadAnimation(e){const t=this.json,n=this,i=t.animations[e],r=i.name?i.name:"animation_"+e,a=[],o=[],c=[],h=[],d=[];for(let f=0,m=i.channels.length;f<m;f++){const _=i.channels[f],y=i.samplers[_.sampler],x=_.target,w=x.node,b=i.parameters!==void 0?i.parameters[y.input]:y.input,I=i.parameters!==void 0?i.parameters[y.output]:y.output;x.node!==void 0&&(a.push(this.getDependency("node",w)),o.push(this.getDependency("accessor",b)),c.push(this.getDependency("accessor",I)),h.push(y),d.push(x))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(c),Promise.all(h),Promise.all(d)]).then(function(f){const m=f[0],_=f[1],y=f[2],x=f[3],w=f[4],b=[];for(let I=0,T=m.length;I<T;I++){const B=m[I],O=_[I],Q=y[I],U=x[I],D=w[I];if(B===void 0)continue;B.updateMatrix&&B.updateMatrix();const P=n._createAnimationTracks(B,O,Q,U,D);if(P)for(let k=0;k<P.length;k++)b.push(P[k])}return new tme(r,void 0,b)})}createNodeMesh(e){const t=this.json,n=this,i=t.nodes[e];return i.mesh===void 0?null:n.getDependency("mesh",i.mesh).then(function(r){const a=n._getNodeRef(n.meshCache,i.mesh,r);return i.weights!==void 0&&a.traverse(function(o){if(o.isMesh)for(let c=0,h=i.weights.length;c<h;c++)o.morphTargetInfluences[c]=i.weights[c]}),a})}loadNode(e){const t=this.json,n=this,i=t.nodes[e],r=n._loadNodeShallow(e),a=[],o=i.children||[];for(let h=0,d=o.length;h<d;h++)a.push(n.getDependency("node",o[h]));const c=i.skin===void 0?Promise.resolve(null):n.getDependency("skin",i.skin);return Promise.all([r,Promise.all(a),c]).then(function(h){const d=h[0],f=h[1],m=h[2];m!==null&&d.traverse(function(_){_.isSkinnedMesh&&_.bind(m,Qve)});for(let _=0,y=f.length;_<y;_++)d.add(f[_]);return d})}_loadNodeShallow(e){const t=this.json,n=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const r=t.nodes[e],a=r.name?i.createUniqueName(r.name):"",o=[],c=i._invokeOne(function(h){return h.createNodeMesh&&h.createNodeMesh(e)});return c&&o.push(c),r.camera!==void 0&&o.push(i.getDependency("camera",r.camera).then(function(h){return i._getNodeRef(i.cameraCache,r.camera,h)})),i._invokeAll(function(h){return h.createNodeAttachment&&h.createNodeAttachment(e)}).forEach(function(h){o.push(h)}),this.nodeCache[e]=Promise.all(o).then(function(h){let d;if(r.isBone===!0?d=new R8:h.length>1?d=new xc:h.length===1?d=h[0]:d=new qs,d!==h[0])for(let f=0,m=h.length;f<m;f++)d.add(h[f]);if(r.name&&(d.userData.name=r.name,d.name=a),mh(d,r),r.extensions&&Nd(n,d,r),r.matrix!==void 0){const f=new Nn;f.fromArray(r.matrix),d.applyMatrix4(f)}else r.translation!==void 0&&d.position.fromArray(r.translation),r.rotation!==void 0&&d.quaternion.fromArray(r.rotation),r.scale!==void 0&&d.scale.fromArray(r.scale);if(!i.associations.has(d))i.associations.set(d,{});else if(r.mesh!==void 0&&i.meshCache.refs[r.mesh]>1){const f=i.associations.get(d);i.associations.set(d,{...f})}return i.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],i=this,r=new xc;n.name&&(r.name=i.createUniqueName(n.name)),mh(r,n),n.extensions&&Nd(t,r,n);const a=n.nodes||[],o=[];for(let c=0,h=a.length;c<h;c++)o.push(i.getDependency("node",a[c]));return Promise.all(o).then(function(c){for(let d=0,f=c.length;d<f;d++)r.add(c[d]);const h=d=>{const f=new Map;for(const[m,_]of i.associations)(m instanceof Gl||m instanceof $a)&&f.set(m,_);return d.traverse(m=>{const _=i.associations.get(m);_!=null&&f.set(m,_)}),f};return i.associations=h(r),r})}_createAnimationTracks(e,t,n,i,r){const a=[],o=e.name?e.name:e.uuid,c=[];ru[r.path]===ru.weights?e.traverse(function(m){m.morphTargetInfluences&&c.push(m.name?m.name:m.uuid)}):c.push(o);let h;switch(ru[r.path]){case ru.weights:h=Nm;break;case ru.rotation:h=Dm;break;case ru.translation:case ru.scale:h=Fm;break;default:n.itemSize===1?h=Nm:h=Fm;break}const d=i.interpolation!==void 0?Dve[i.interpolation]:U_,f=this._getArrayFromAccessor(n);for(let m=0,_=c.length;m<_;m++){const y=new h(c[m]+"."+ru[r.path],t.array,f,d);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(y),a.push(y)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const n=kI(t.constructor),i=new Float32Array(t.length);for(let r=0,a=t.length;r<a;r++)i[r]=t[r]*n;t=i}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(n){const i=this instanceof Dm?Nve:q8;return new i(this.times,this.values,this.getValueSize()/3,n)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Hve(s,e,t){const n=e.attributes,i=new Po;if(n.POSITION!==void 0){const o=t.json.accessors[n.POSITION],c=o.min,h=o.max;if(c!==void 0&&h!==void 0){if(i.set(new Oe(c[0],c[1],c[2]),new Oe(h[0],h[1],h[2])),o.normalized){const d=kI(Am[o.componentType]);i.min.multiplyScalar(d),i.max.multiplyScalar(d)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=e.targets;if(r!==void 0){const o=new Oe,c=new Oe;for(let h=0,d=r.length;h<d;h++){const f=r[h];if(f.POSITION!==void 0){const m=t.json.accessors[f.POSITION],_=m.min,y=m.max;if(_!==void 0&&y!==void 0){if(c.setX(Math.max(Math.abs(_[0]),Math.abs(y[0]))),c.setY(Math.max(Math.abs(_[1]),Math.abs(y[1]))),c.setZ(Math.max(Math.abs(_[2]),Math.abs(y[2]))),m.normalized){const x=kI(Am[m.componentType]);c.multiplyScalar(x)}o.max(c)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(o)}s.boundingBox=i;const a=new Rc;i.getCenter(a.center),a.radius=i.min.distanceTo(i.max)/2,s.boundingSphere=a}function nN(s,e,t){const n=e.attributes,i=[];function r(a,o){return t.getDependency("accessor",a).then(function(c){s.setAttribute(o,c)})}for(const a in n){const o=RI[a]||a.toLowerCase();o in s.attributes||i.push(r(n[a],o))}if(e.indices!==void 0&&!s.index){const a=t.getDependency("accessor",e.indices).then(function(o){s.setIndex(o)});i.push(a)}return Ii.workingColorSpace!==Qa&&"COLOR_0"in n&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Ii.workingColorSpace}" not supported.`),mh(s,e),Hve(s,e,t),Promise.all(i).then(function(){return e.targets!==void 0?Ove(s,e.targets,t):s})}var $d=63710088e-1,p_=2*Math.PI*$d,Yr=Math.PI/180,mf=1024e3/p_,Vve=512,Wve=class{static clamp(s,e,t){return Math.min(t,Math.max(e,s))}static makePerspectiveMatrix(s,e,t,n){let i=1/Math.tan(s/2),r=1/(t-n);return[i/e,0,0,0,0,i,0,0,0,0,(n+t)*r,-1,0,0,2*n*t*r,0]}static mercatorXFromLng(s){return(180+s)/360}static mercatorYFromLat(s){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+s*Math.PI/360)))/360}static getViewInfo(s,e,t){let n=s.fov*Yr,i=s.pitch*Yr,r=null;if(Array.isArray(e)&&(r={lng:e[0],lat:e[1],alt:e[2]||0}),typeof e=="string"){let f=e.split(",");r={lng:+f[0],lat:+f[1],alt:+f[2]||0}}let a=Math.max(t.x,t.y,t.z)/(2*Math.tan(n/2))*Math.cos(i)+r.alt,o=Math.abs(Math.cos(i)*s.cameraToCenterDistance),c=p_*Math.abs(Math.cos(r.lat*Yr)),h=o/a*c,d=Math.round(Math.log2(h/s.tileSize));return{center:[r.lng,r.lat],cameraHeight:a,zoom:d}}static getHeightByZoom(s,e,t,n){let i=Math.abs(Math.cos(n*Yr)*s.cameraToCenterDistance),r=p_*Math.abs(Math.cos(t*Yr)),a=Math.pow(2,e)*s.tileSize;return i*r/a}static getZoomByHeight(s,e,t,n){let i=Math.abs(Math.cos(n*Yr)*s.cameraToCenterDistance),r=p_*Math.abs(Math.cos(t*Yr)),a=i/e*r;return Math.round(Math.log2(a/s.tileSize))}},Zd=Wve,iN=new Nn,sN=new Nn,rN=85.051129,qve=class{constructor(s,e,t){Vi(this,"_map"),Vi(this,"_world"),Vi(this,"_camera"),Vi(this,"_translateCenter"),Vi(this,"_worldSizeRatio"),this._map=s,this._world=e,this._camera=t,this._translateCenter=new Nn().makeTranslation(1024e3/2,-1024e3/2,0),this._worldSizeRatio=Vve/1024e3,this._map.on("move",()=>{this.syncCamera(!1)}),this._map.on("resize",()=>{this.syncCamera(!0)})}syncCamera(s){let e=this._map.transform,t=e.pitch*Yr,n=e.bearing*Yr;if(s){let f=e.fov*Yr,m=e.centerOffset||new Oe;this._camera.aspect=e.width/e.height,iN.elements=Zd.makePerspectiveMatrix(f,this._camera.aspect,e.height/50,e.farZ),this._camera.projectionMatrix=iN,this._camera.projectionMatrix.elements[8]=-m.x*2/e.width,this._camera.projectionMatrix.elements[9]=m.y*2/e.height}sN.makeTranslation(0,0,e.cameraToCenterDistance);let i=new Nn().premultiply(sN).premultiply(new Nn().makeRotationX(t)).premultiply(new Nn().makeRotationZ(-n));e.elevation&&(i.elements[14]=e.cameraToCenterDistance*Math.cos(t)),this._camera.matrixWorld.copy(i);let r=e.scale*this._worldSizeRatio,a=new Nn().makeScale(r,r,r),o=e.x,c=e.y;if(!o||!c){let f=e.center,m=Zd.clamp(f.lat,-rN,rN);o=Zd.mercatorXFromLng(f.lng)*e.worldSize,c=Zd.mercatorYFromLat(m)*e.worldSize}let h=new Nn().makeTranslation(-o,c,0),d=new Nn().makeRotationZ(Math.PI);this._world.matrix=new Nn().premultiply(d).premultiply(this._translateCenter).premultiply(a).premultiply(h)}},Yve=qve,Xve=class{constructor(s,e){Vi(this,"_id"),Vi(this,"_mapScene"),Vi(this,"_cameraSync"),this._id=s,this._mapScene=e,this._cameraSync=new Yve(this._mapScene.map,this._mapScene.world,this._mapScene.camera)}get id(){return this._id}get type(){return"custom"}get renderingMode(){return"3d"}onAdd(){this._cameraSync.syncCamera(!0)}render(){this._mapScene.render()}onRemove(){this._cameraSync=null,this._mapScene=null}},jve=Xve,Zve=class{static projectedMercatorUnitsPerMeter(){return this.projectedUnitsPerMeter(0)}static projectedUnitsPerMeter(s){return Math.abs(1024e3/Math.cos(Yr*s)/p_)}static lngLatToVector3(s,e,t){let n=[0,0,0];return Array.isArray(s)?(n=[-$d*Yr*s[0]*mf,-$d*Math.log(Math.tan(Math.PI*.25+.5*Yr*s[1]))*mf],s[2]?n.push(s[2]*this.projectedUnitsPerMeter(s[1])):n.push(0)):(n=[-$d*Yr*s*mf,-$d*Math.log(Math.tan(Math.PI*.25+.5*Yr*(e||0)))*mf],t?n.push(t*this.projectedUnitsPerMeter(e||0)):n.push(0)),new Oe(n[0],n[1],n[2])}static vector3ToLngLat(s){let e=[0,0,0];return s&&(e[0]=-s.x/($d*Yr*mf),e[1]=2*(Math.atan(Math.exp(s.y/(mf*-$d)))-Math.PI/4)/Yr,e[2]=s.z/this.projectedUnitsPerMeter(e[1])),e}},Xf=Zve,Jve={scene:null,camera:null,renderer:null,renderLoop:null,preserveDrawingBuffer:!1},Kve=class{constructor(s,e={}){if(Vi(this,"_map"),Vi(this,"_options"),Vi(this,"_canvas"),Vi(this,"_scene"),Vi(this,"_camera"),Vi(this,"_renderer"),Vi(this,"_lights"),Vi(this,"_world"),Vi(this,"_event"),!s)throw"missing map";this._map=s,this._options={...Jve,...e},this._canvas=s.getCanvas(),this._scene=this._options.scene||new Rfe,this._camera=this._options.camera||new Xr(this._map.transform.fov,this._map.transform.width/this._map.transform.height,.001,1e21),this._camera.matrixAutoUpdate=!1,this._renderer=this._options.renderer||new cve({alpha:!0,antialias:!0,preserveDrawingBuffer:this._options.preserveDrawingBuffer,canvas:this._canvas,context:this._canvas.getContext("webgl2")}),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.setSize(this._canvas.clientWidth,this._canvas.clientHeight),this._renderer.autoClear=!1,this._lights=new xc,this._lights.name="lights",this._scene.add(this._lights),this._world=new xc,this._world.name="world",this._world.userData={isWorld:!0,name:"world"},this._world.position.set(1024e3/2,1024e3/2,0),this._world.matrixAutoUpdate=!1,this._scene.add(this._world),this._map.on("render",this._onMapRender.bind(this)),this._event=new gp}get map(){return this._map}get canvas(){return this._canvas}get camera(){return this._camera}get scene(){return this._scene}get lights(){return this._lights}get world(){return this._world}get renderer(){return this._renderer}_onMapRender(){this._map.getLayer("map_scene_layer")||this._map.addLayer(new jve("map_scene_layer",this))}render(){if(this._options.renderLoop)this._options.renderLoop(this);else{let s={center:this._map.getCenter(),scene:this._scene,camera:this._camera,renderer:this._renderer};this._event.dispatchEvent({type:"preReset",frameState:s}),this.renderer.resetState(),this._event.dispatchEvent({type:"postReset",frameState:s}),this._event.dispatchEvent({type:"preRender",frameState:s}),this.renderer.render(this._scene,this._camera),this._event.dispatchEvent({type:"postRender",frameState:s})}return this}addLight(s){return this._lights.add(s.delegate||s),this}removeLight(s){return this._lights.remove(s.delegate||s),this}addObject(s){let e="delegate"in s?s.delegate:s;return this._world.add(e),this}removeObject(s){let e="delegate"in s?s.delegate:s;return this._world.remove(e),e.traverse(t=>{t.geometry&&t.geometry.dispose(),t.material&&(Array.isArray(t.material)?t.material.forEach(n=>n.dispose()):t.material.dispose()),t.texture&&t.texture.dispose()}),this}getViewPosition(){let s=this._map.transform,e=s.center;return{position:[e.lng,e.lat,Zd.getHeightByZoom(s,s.zoom,e.lat,s.pitch)],heading:s.bearing,pitch:s.pitch}}flyTo(s,e,t){if(s&&s.position){t&&this._map.once("moveend",t);let n=s.size;n||(n=new Oe,new Po().setFromObject(s.delegate||s,!0).getSize(n));let i=Zd.getViewInfo(this._map.transform,Xf.vector3ToLngLat(s.position),n);this._map.flyTo({center:i.center,zoom:i.zoom,duration:(e||3)*1e3})}return this}zoomTo(s,e){return this.flyTo(s,0,e)}flyToPosition(s,e=[0,0,0],t,n=3){return t&&this._map.once("moveend",t),this._map.flyTo({center:[s[0],s[1]],zoom:Zd.getZoomByHeight(this._map.transform,s[2],s[1],e[1]||0),bearing:e[0],pitch:e[1],duration:n*1e3}),this}zoomToPosition(s,e=[0,0,0],t){return this.flyToPosition(s,e,t,0)}on(s,e){return this._event.addEventListener(s,e),this}off(s,e){return this._event.removeEventListener(s,e),this}},eye=class{static createRTCGroup(s,e,t){let n=new xc;if(n.name="rtc",n.position.copy(Xf.lngLatToVector3(s)),e?(n.rotateX(e[0]||0),n.rotateY(e[1]||0),n.rotateZ(e[2]||0)):(n.rotateX(Math.PI/2),n.rotateY(Math.PI)),t)n.scale.set(t[0]||1,t[1]||1,t[2]||1);else{let i=1;Array.isArray(s)&&(i=Xf.projectedUnitsPerMeter(s[1])),n.scale.set(i,i,i)}return n}static createMercatorRTCGroup(s,e,t){let n=this.createRTCGroup(s,e,t);if(!t){let i=1,r=Xf.projectedMercatorUnitsPerMeter();Array.isArray(s)&&(i=Xf.projectedUnitsPerMeter(s[1])),n.scale.set(r,r,i)}return n}static createShadowGround(s,e,t){let n=new RT(e||100,t||100),i=new Wfe({opacity:.5,transparent:!0}),r=new Gr(n,i);return r.position.copy(Xf.lngLatToVector3(s)),r.receiveShadow=!0,r.name="shadow-ground",r}},aN=eye;const tye=new ix(-1,1,1,-1,0,1);class nye extends Xl{constructor(){super(),this.setAttribute("position",new Ql([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Ql([0,2,0,0,2,0],2))}}const iye=new nye;class Y8{constructor(e){this._mesh=new Gr(iye,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,tye)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}var Or=Uint8Array,f_=Uint16Array,sye=Int32Array,X8=new Or([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),j8=new Or([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rye=new Or([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Z8=function(s,e){for(var t=new f_(31),n=0;n<31;++n)t[n]=e+=1<<s[n-1];for(var i=new sye(t[30]),n=1;n<30;++n)for(var r=t[n];r<t[n+1];++r)i[r]=r-t[n]<<5|n;return{b:t,r:i}},J8=Z8(X8,2),K8=J8.b,aye=J8.r;K8[28]=258,aye[258]=28;var oye=Z8(j8,0),lye=oye.b,ez=new f_(32768);for(var ys=0;ys<32768;++ys){var au=(ys&43690)>>1|(ys&21845)<<1;au=(au&52428)>>2|(au&13107)<<2,au=(au&61680)>>4|(au&3855)<<4,ez[ys]=((au&65280)>>8|(au&255)<<8)>>1}var m_=function(s,e,t){for(var n=s.length,i=0,r=new f_(e);i<n;++i)s[i]&&++r[s[i]-1];var a=new f_(e);for(i=1;i<e;++i)a[i]=a[i-1]+r[i-1]<<1;var o;{o=new f_(1<<e);var c=15-e;for(i=0;i<n;++i)if(s[i])for(var h=i<<4|s[i],d=e-s[i],f=a[s[i]-1]++<<d,m=f|(1<<d)-1;f<=m;++f)o[ez[f]>>c]=h}return o},xA=new Or(288);for(var ys=0;ys<144;++ys)xA[ys]=8;for(var ys=144;ys<256;++ys)xA[ys]=9;for(var ys=256;ys<280;++ys)xA[ys]=7;for(var ys=280;ys<288;++ys)xA[ys]=8;var tz=new Or(32);for(var ys=0;ys<32;++ys)tz[ys]=5;var cye=m_(xA,9),hye=m_(tz,5),Vw=function(s){for(var e=s[0],t=1;t<s.length;++t)s[t]>e&&(e=s[t]);return e},Ml=function(s,e,t){var n=e/8|0;return(s[n]|s[n+1]<<8)>>(e&7)&t},Ww=function(s,e){var t=e/8|0;return(s[t]|s[t+1]<<8|s[t+2]<<16)>>(e&7)},nz=function(s){return(s+7)/8|0},vm=function(s,e,t){return(e==null||e<0)&&(e=0),(t==null||t>s.length)&&(t=s.length),new Or(s.subarray(e,t))},uye=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Ba=function(s,e,t){var n=new Error(e||uye[s]);if(n.code=s,Error.captureStackTrace&&Error.captureStackTrace(n,Ba),!t)throw n;return n},iz=function(s,e,t,n){var i=s.length,r=n?n.length:0;if(!i||e.f&&!e.l)return t||new Or(0);var a=!t,o=a||e.i!=2,c=e.i;a&&(t=new Or(i*3));var h=function(He){var re=t.length;if(He>re){var nt=new Or(Math.max(re*2,He));nt.set(t),t=nt}},d=e.f||0,f=e.p||0,m=e.b||0,_=e.l,y=e.d,x=e.m,w=e.n,b=i*8;do{if(!_){d=Ml(s,f,1);var I=Ml(s,f+1,3);if(f+=3,I)if(I==1)_=cye,y=hye,x=9,w=5;else if(I==2){var Q=Ml(s,f,31)+257,U=Ml(s,f+10,15)+4,D=Q+Ml(s,f+5,31)+1;f+=14;for(var P=new Or(D),k=new Or(19),N=0;N<U;++N)k[rye[N]]=Ml(s,f+N*3,7);f+=U*3;for(var W=Vw(k),X=(1<<W)-1,j=m_(k,W),N=0;N<D;){var $=j[Ml(s,f,X)];f+=$&15;var T=$>>4;if(T<16)P[N++]=T;else{var V=0,Z=0;for(T==16?(Z=3+Ml(s,f,3),f+=2,V=P[N-1]):T==17?(Z=3+Ml(s,f,7),f+=3):T==18&&(Z=11+Ml(s,f,127),f+=7);Z--;)P[N++]=V}}var K=P.subarray(0,Q),se=P.subarray(Q);x=Vw(K),w=Vw(se),_=m_(K,x),y=m_(se,w)}else Ba(1);else{var T=nz(f)+4,B=s[T-4]|s[T-3]<<8,O=T+B;if(O>i){c&&Ba(0);break}o&&h(m+B),t.set(s.subarray(T,O),m),e.b=m+=B,e.p=f=O*8,e.f=d;continue}if(f>b){c&&Ba(0);break}}o&&h(m+131072);for(var oe=(1<<x)-1,ue=(1<<w)-1,be=f;;be=f){var V=_[Ww(s,f)&oe],ye=V>>4;if(f+=V&15,f>b){c&&Ba(0);break}if(V||Ba(2),ye<256)t[m++]=ye;else if(ye==256){be=f,_=null;break}else{var ce=ye-254;if(ye>264){var N=ye-257,we=X8[N];ce=Ml(s,f,(1<<we)-1)+K8[N],f+=we}var Re=y[Ww(s,f)&ue],Ne=Re>>4;Re||Ba(3),f+=Re&15;var se=lye[Ne];if(Ne>3){var we=j8[Ne];se+=Ww(s,f)&(1<<we)-1,f+=we}if(f>b){c&&Ba(0);break}o&&h(m+131072);var ge=m+ce;if(m<se){var tt=r-se,ze=Math.min(se,ge);for(tt+m<0&&Ba(3);m<ze;++m)t[m]=n[tt+m]}for(;m<ge;++m)t[m]=t[m-se]}}e.l=_,e.p=be,e.b=m,e.f=d,_&&(d=1,e.m=x,e.d=y,e.n=w)}while(!d);return m!=t.length&&a?vm(t,0,m):t.subarray(0,m)},dye=new Or(0),Ac=function(s,e){return s[e]|s[e+1]<<8},Pl=function(s,e){return(s[e]|s[e+1]<<8|s[e+2]<<16|s[e+3]<<24)>>>0},qw=function(s,e){return Pl(s,e)+Pl(s,e+4)*4294967296},pye=function(s){(s[0]!=31||s[1]!=139||s[2]!=8)&&Ba(6,"invalid gzip data");var e=s[3],t=10;e&4&&(t+=(s[10]|s[11]<<8)+2);for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!s[t++]);return t+(e&2)},Yw=(function(){function s(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new Or(32768),this.p=new Or(0),n&&this.o.set(n)}return s.prototype.e=function(e){if(this.ondata||Ba(5),this.d&&Ba(4),!this.p.length)this.p=e;else if(e.length){var t=new Or(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},s.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=iz(this.p,this.s,this.o);this.ondata(vm(n,t,this.s.b),this.d),this.o=vm(n,this.s.b-32768),this.s.b=this.o.length,this.p=vm(this.p,this.s.p/8|0),this.s.p&=7},s.prototype.push=function(e,t){this.e(e),this.c(t)},s})();function fye(s,e){return iz(s,{i:2},e&&e.out,e&&e.dictionary)}var mye=(function(){function s(e,t){this.v=1,this.r=0,Yw.call(this,e,t)}return s.prototype.push=function(e,t){if(Yw.prototype.e.call(this,e),this.r+=e.length,this.v){var n=this.p.subarray(this.v-1),i=n.length>3?pye(n):4;if(i>n.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-n.length);this.p=n.subarray(i),this.v=0}Yw.prototype.c.call(this,t),this.s.f&&!this.s.l&&!t&&(this.v=nz(this.s.p)+9,this.s={i:0},this.o=new Or(0),this.push(new Or(0),t))},s})(),PI=typeof TextDecoder<"u"&&new TextDecoder,gye=0;try{PI.decode(dye,{stream:!0}),gye=1}catch{}var _ye=function(s){for(var e="",t=0;;){var n=s[t++],i=(n>127)+(n>223)+(n>239);if(t+i>s.length)return{s:e,r:vm(s,t-1)};i?i==3?(n=((n&15)<<18|(s[t++]&63)<<12|(s[t++]&63)<<6|s[t++]&63)-65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023)):i&1?e+=String.fromCharCode((n&31)<<6|s[t++]&63):e+=String.fromCharCode((n&15)<<12|(s[t++]&63)<<6|s[t++]&63):e+=String.fromCharCode(n)}};function Aye(s,e){if(e){for(var t="",n=0;n<s.length;n+=16384)t+=String.fromCharCode.apply(null,s.subarray(n,n+16384));return t}else{if(PI)return PI.decode(s);var i=_ye(s),r=i.s,t=i.r;return t.length&&Ba(8),r}}var vye=function(s,e){return e+30+Ac(s,e+26)+Ac(s,e+28)},yye=function(s,e,t){var n=Ac(s,e+28),i=Aye(s.subarray(e+46,e+46+n),!(Ac(s,e+8)&2048)),r=e+46+n,a=Pl(s,e+20),o=t&&a==4294967295?bye(s,r):[a,Pl(s,e+24),Pl(s,e+42)],c=o[0],h=o[1],d=o[2];return[Ac(s,e+10),c,h,i,r+Ac(s,e+30)+Ac(s,e+32),d]},bye=function(s,e){for(;Ac(s,e)!=1;e+=4+Ac(s,e+2));return[qw(s,e+12),qw(s,e+4),qw(s,e+20)]};function xye(s,e){for(var t={},n=s.length-22;Pl(s,n)!=101010256;--n)(!n||s.length-n>65558)&&Ba(13);var i=Ac(s,n+8);if(!i)return{};var r=Pl(s,n+16),a=r==4294967295||i==65535;if(a){var o=Pl(s,n-12);a=Pl(s,o)==101075792,a&&(i=Pl(s,o+32),r=Pl(s,o+48))}for(var c=e&&e.filter,h=0;h<i;++h){var d=yye(s,r,a),f=d[0],m=d[1],_=d[2],y=d[3],x=d[4],w=d[5],b=vye(s,w);r=x,(!c||c({name:y,size:m,originalSize:_,compression:f}))&&(f?f==8?t[y]=fye(s.subarray(b,b+m),{out:new Or(_)}):Ba(14,"unknown compression type "+f):t[y]=vm(s,b,b+m))}return t}let Eh;const sz=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&sz.decode();let q0=null;function Cye(){return(q0===null||q0.byteLength===0)&&(q0=new Uint8Array(Eh.memory.buffer)),q0}function wye(s,e){return s=s>>>0,sz.decode(Cye().subarray(s,s+e))}function Eye(s,e,t,n,i,r,a,o,c,h,d,f,m){return Eh.raycast_splats(s,e,t,n,i,r,a,o,c,h,d,f,m)}async function Sye(s,e){if(typeof Response=="function"&&s instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(s,e)}catch(n){if(s.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}const t=await s.arrayBuffer();return await WebAssembly.instantiate(t,e)}else{const t=await WebAssembly.instantiate(s,e);return t instanceof WebAssembly.Instance?{instance:t,module:s}:t}}function Iye(){const s={};return s.wbg={},s.wbg.__wbg_buffer_609cc3eee51ed158=function(e){return e.buffer},s.wbg.__wbg_length_3b4f022188ae8db6=function(e){return e.length},s.wbg.__wbg_length_6ca527665d89694d=function(e){return e.length},s.wbg.__wbg_length_8cfd2c6409af88ad=function(e){return e.length},s.wbg.__wbg_new_9fee97a409b32b68=function(e){return new Uint16Array(e)},s.wbg.__wbg_new_e3b321dcfef89fc7=function(e){return new Uint32Array(e)},s.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(e,t,n){return new Float32Array(e,t>>>0,n>>>0)},s.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(e,t,n){return new Uint32Array(e,t>>>0,n>>>0)},s.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(e){return new Float32Array(e>>>0)},s.wbg.__wbg_set_10bad9bee0e9c58b=function(e,t,n){e.set(t,n>>>0)},s.wbg.__wbg_set_d23661d19148b229=function(e,t,n){e.set(t,n>>>0)},s.wbg.__wbg_set_f4f1f0daa30696fc=function(e,t,n){e.set(t,n>>>0)},s.wbg.__wbg_subarray_3aaeec89bb2544f0=function(e,t,n){return e.subarray(t>>>0,n>>>0)},s.wbg.__wbg_subarray_769e1e0f81bb259b=function(e,t,n){return e.subarray(t>>>0,n>>>0)},s.wbg.__wbindgen_init_externref_table=function(){const e=Eh.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)},s.wbg.__wbindgen_memory=function(){return Eh.memory},s.wbg.__wbindgen_throw=function(e,t){throw new Error(wye(e,t))},s}function Mye(s,e){return Eh=s.exports,rz.__wbindgen_wasm_module=e,q0=null,Eh.__wbindgen_start(),Eh}async function rz(s){if(Eh!==void 0)return Eh;typeof s<"u"&&(Object.getPrototypeOf(s)===Object.prototype?{module_or_path:s}=s:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof s>"u"&&(s=new URL("data:application/wasm;base64,AGFzbQEAAAABzAEeYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AX9gA39/fwBgAX8AYAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAFvAW9gA29vfwBgAW8Bf2AAAX9gBH9/f38AYAAAYAR/f39/AX9gA39vbwF/YAF/AW9gAAFvYAF9AX1gBn9/f39/fwBgDX19fX19fX19f29/fX0Bb2AGf39/f39/AX9gBX9/fH9/AGAEf3x/fwBgBX9/fX9/AGAEf31/fwBgBX9/fn9/AGAEf35/fwBgAn19AX0C8gQRA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAKA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAALA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAcDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAoDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAsDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2U2YjdlNjlhY2Q0YzczNTQABwN3YmcaX193Ymdfc2V0XzEwYmFkOWJlZTBlOWM1OGIACgN3YmcdX193YmdfbGVuZ3RoXzNiNGYwMjIxODhhZThkYjYACwN3YmcfX193Ymdfc3ViYXJyYXlfNzY5ZTFlMGY4MWJiMjU5YgAHA3diZx9fX3diZ19zdWJhcnJheV8zYWFlZWM4OWJiMjU0NGYwAAcDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfNWE1ZWZlMzEzY2ZkNTlmMQARA3diZxBfX3diaW5kZ2VuX3Rocm93AAEDd2JnEV9fd2JpbmRnZW5fbWVtb3J5ABIDd2JnH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUADgNhYAMAAQIIBQQCEwEMAAEBAgAAAQwBBAYFBQQAAQYFFAENBAAGBQQEAQQOAgECAQAIBAAVARYG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ACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC/MCAQR/IwBBMGsiACQAAkACQEGQksAAKAIARQRAQaiSwAAoAgAhAUGoksAAQQA2AgAgAUUNASAAQRhqIAERBQAgAEEQaiICIABBJGopAgA3AwAgACAAKQIcNwMIIAAoAhghAUGQksAAKAIAIgMNAgJAIANFDQBBlJLAACgCACICRQ0AQZiSwAAoAgAgAkECdBBlC0GUksAAIAE2AgBBkJLAAEEBNgIAQZiSwAAgACkDCDcCAEGgksAAIABBEGopAwA3AgALIABBMGokAEGUksAADwsgAEEANgIoIABBATYCHCAAQaCHwAA2AhggAEIENwIgIABBGGpBiIjAABBDAAsgAEEoaiACKQMANwIAIAAgACkDCDcCICAAIAE2AhwgAEEBNgIYAkAgAEEYaiIBKAIARQ0AIAEoAgQiAkUNACABKAIIIAJBAnQQZQsgAEEANgIoIABBATYCHCAAQaiIwAA2AhggAEIENwIgIAFBsIjAABBDAAuoAgIDfwF+IwBBQGoiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBJGoiBEEANgIAIAJCgICAgBA3AhwgAkEwaiADKAIAIgNBCGopAgA3AwAgAkE4aiADQRBqKQIANwMAIAIgAykCADcDKCACQRxqQcCIwAAgAkEoahAYGiACQRhqIAQoAgAiAzYCACACIAIpAhwiBTcDECABQQhqIAM2AgAgASAFNwIACyABKQIAIQUgAUKAgICAEDcCACACQQhqIgMgAUEIaiIBKAIANgIAIAFBADYCAEGxk8AALQAAGiACIAU3AwBBDEEEEF0iAUUEQEEEQQwQbQALIAEgAikDADcCACABQQhqIAMoAgA2AgAgAEHgisAANgIEIAAgATYCACACQUBrJAAL0gECBH8BfiMAQSBrIgMkACABIAEgAmoiAksEQEEAQQAQUgALQQggACgCACIEQQF0IgEgAiABIAJLGyICIAJBCEkbIgKtIgdCIIhQRQRAQQBBABBSAAsCQCAHpyIFQf////8HTQRAIAMgBAR/IAMgBDYCHCADIAAoAgQ2AhRBAQVBAAs2AhggA0EIakEBIAUgA0EUahAwIAMoAghBAUcNASADKAIMIQYgAygCECEBCyAGIAEQUgALIAMoAgwhASAAIAI2AgAgACABNgIEIANBIGokAAvrAQIEfwF+IwBBIGsiBSQAIAEgASACaiICSwRAQQBBABBSAAtBACEBIAMgBGpBAWtBACADa3GtQQQgACgCACIHQQF0IgYgAiACIAZJGyICIAJBBE0bIgKtfiIJQiCIUEUEQEEAQQAQUgALAkAgCaciBkGAgICAeCADa00EfyAFIAcEfyAFIAQgB2w2AhwgBSAAKAIENgIUIAMFQQALNgIYIAVBCGogAyAGIAVBFGoQMCAFKAIIQQFHDQEgBSgCECEIIAUoAgwFIAELIAgQUgALIAUoAgwhASAAIAI2AgAgACABNgIEIAVBIGokAAvTAQEFfyMAQSBrIgEkACAAKAIAIgJBf0YEQEEAQQAQUgALIAJBAXQiAyACQQFqIgUgAyAFSxsiA0H/////A0sEQEEAQQAQUgALAkBBBCADIANBBE0bIgNBAnQiBUH8////B00EfyABIAIEfyABIAJBAnQ2AhwgASAAKAIENgIUQQQFQQALNgIYIAFBCGpBBCAFIAFBFGoQMCABKAIIQQFHDQEgASgCECEEIAEoAgwFIAQLIAQQUgALIAEoAgwhAiAAIAM2AgAgACACNgIEIAFBIGokAAuyAQEEfyMAQSBrIgEkACAAKAIAIgJBf0YEQEEAQQAQUgALQQggAkEBdCIDIAJBAWoiBCADIARLGyIDIANBCE0bIgNBAEgEQEEAQQAQUgALIAEgAgR/IAEgAjYCHCABIAAoAgQ2AhRBAQVBAAs2AhggAUEIakEBIAMgAUEUahAwIAEoAghBAUYEQCABKAIMIAEoAhAQUgALIAEoAgwhAiAAIAM2AgAgACACNgIEIAFBIGokAAuyAQECfyMAQSBrIgMkACABIAEgAmoiAksEQEEAQQAQUgALQQggACgCACIBQQF0IgQgAiACIARJGyICIAJBCE0bIgRBAEgEQEEAQQAQUgALIAMgAQR/IAMgATYCHCADIAAoAgQ2AhRBAQVBAAs2AhggA0EIakEBIAQgA0EUahAwIAMoAghBAUYEQCADKAIMIAMoAhAQUgALIAMoAgwhASAAIAQ2AgAgACABNgIEIANBIGokAAudAQEDfwJAIAFBEEkEQCAAIQIMAQsgAEEAIABrQQNxIgRqIQMgBARAIAAhAgNAIAJBADoAACACQQFqIgIgA0kNAAsLIAMgASAEayIBQXxxIgRqIQIgBEEASgRAA0AgA0EANgIAIANBBGoiAyACSQ0ACwsgAUEDcSEBCyABBEAgASACaiEBA0AgAkEAOgAAIAJBAWoiAiABSQ0ACwsgAAvBAQIDfwF+IwBBMGsiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBFGoiBEEANgIAIAJCgICAgBA3AgwgAkEgaiADKAIAIgNBCGopAgA3AwAgAkEoaiADQRBqKQIANwMAIAIgAykCADcDGCACQQxqQcCIwAAgAkEYahAYGiACQQhqIAQoAgAiAzYCACACIAIpAgwiBTcDACABQQhqIAM2AgAgASAFNwIACyAAQeCKwAA2AgQgACABNgIAIAJBMGokAAuWAgECfyMAQSBrIgUkAEHMk8AAQcyTwAAoAgAiBkEBajYCAAJAAn9BACAGQQBIDQAaQQFBmJfAAC0AAA0AGkGYl8AAQQE6AABBlJfAAEGUl8AAKAIAQQFqNgIAQQILQf8BcSIGQQJHBEAgBkEBcUUNASAFQQhqIAAgASgCGBEBAAALQcCTwAAoAgAiBkEASA0AQcCTwAAgBkEBajYCAEHAk8AAQcSTwAAoAgAEfyAFIAAgASgCFBEBACAFIAQ6AB0gBSADOgAcIAUgAjYCGCAFIAUpAwA3AhBBxJPAACgCACAFQRBqQciTwAAoAgAoAhQRAQBBwJPAACgCAEEBawUgBgs2AgBBmJfAAEEAOgAAIANFDQAACwALrwEBBn8CQAJAIABBhAFJDQAgANBvJgEQIyIBKAIMIQUgASgCECECIAFCADcCDCABKAIIIQMgASgCBCEEIAFCBDcCBCABKAIAIQYgAUEANgIAIAAgAkkNASAAIAJrIgAgA08NASAEIABBAnRqIAU2AgAgASACNgIQIAEgADYCDCABIAM2AgggASgCBCABIAQ2AgQgASgCACEAIAEgBjYCACAARQ0AIABBAnQQZQsPCwALowEBAX8jAEEQayIGJAACQCABBEAgBkEEaiABIAMgBCAFIAIoAhARBgACQCAGKAIEIgIgBigCDCIBTQRAIAYoAgghBQwBCyACQQJ0IQIgBigCCCEDIAFFBEBBBCEFIAMgAhBlDAELIAMgAkEEIAFBAnQiAhBUIgVFDQILIAAgATYCBCAAIAU2AgAgBkEQaiQADwtBxIbAAEEyEGgAC0EEIAIQUgALrAEBA38gASgCDCECAkACQAJAAkACQAJAIAEoAgQOAgABAgsgAg0BQQEhA0EAIQFBASECDAMLIAJFDQELIAAgARAdDwsgASgCACICKAIEIgFBAEgNASACKAIAIQMgAUUEQEEBIQJBACEBDAELQbGTwAAtAAAaQQEhBCABQQEQXSICRQ0BCyACIAMgARAfIQIgACABNgIIIAAgAjYCBCAAIAE2AgAPCyAEIAEQUgALiQEBAX8CQCACQQBOBEACfyADKAIEBEACQCADKAIIIgRFBEAMAQsgAygCACAEIAEgAhBUDAILCyABIAJFDQAaQbGTwAAtAAAaIAIgARBdCyIDBEAgACACNgIIIAAgAzYCBCAAQQA2AgAPCyAAIAI2AgggACABNgIEDAELIABBADYCBAsgAEEBNgIAC5cBAgR/AW8jAEEgayIDJAAgACgCACIGEHAhACADIAI2AgQgAyAANgIAIAAgAkYEQBBbIgQQUyIFJQEgASACEAQhBxAbIgAgByYBIARBhAFPBEAgBBAtCyAFQYQBTwRAIAUQLQsgBiAAQQAQZCAAQYQBTwRAIAAQLQsgA0EgaiQADwsgA0EANgIIIAMgA0EEaiADQQhqEEAAC3kBAX8jAEEgayICJAACfyAAKAIAQYCAgIB4RwRAIAEgACgCBCAAKAIIEFYMAQsgAkEQaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEYaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIUIAEoAhggAkEIahAYCyACQSBqJAALewEBfyMAQUBqIgUkACAFIAE2AgwgBSAANgIIIAUgAzYCFCAFIAI2AhAgBUECNgIcIAVBoI/AADYCGCAFQgI3AiQgBSAFQRBqrUKAgICAsAWENwM4IAUgBUEIaq1CgICAgMAFhDcDMCAFIAVBMGo2AiAgBUEYaiAEEEMAC24BAX8jAEEwayIBJAAgASAANgIAIAFBgAE2AgQgAUECNgIMIAFB2JHAADYCCCABQgI3AhQgASABQQRqrUKAgICA4ACENwMoIAEgAa1CgICAgOAAhDcDICABIAFBIGo2AhAgAUEIakHIj8AAEEMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQfyNwAA2AgggA0ICNwIUIANCgICAgOAAIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBDAAtpAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0H4kcAANgIIIANCAjcCFCADQoCAgIDgACIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQQwALZgAjAEEwayIAJABBsJPAAC0AAARAIABBAjYCDCAAQbCKwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIDgAIQ3AyAgACAAQSBqNgIQIABBCGpB0IrAABBDAAsgAEEwaiQAC5QBAgN/AW8jAEEgayIDJAAgAyAAKAIAEHAiBDYCACADIAI2AgQgAiAERwRAIANBADYCCCADIANBBGogA0EIahBAAAsQWyIEEFMiBSUBEAUhBhAbIgIgBiYBIAVBhAFPBEAgBRAtCyACIAAoAgAgAUECdhBkIAJBhAFPBEAgAhAtCyAEQYQBTwRAIAQQLQsgA0EgaiQAC08BAX8jAEEwayIAJAAgAEEBNgIMIABBwI3AADYCCCAAQgE3AhQgACAAQS9qrUKAgICAoAWENwMgIAAgAEEgajYCECAAQQhqQcSBwAAQQwALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhAlIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALTQECf0Gxk8AALQAAGiABKAIEIQIgASgCACEDQQhBBBBdIgFFBEBBBEEIEG0ACyABIAI2AgQgASADNgIAIABB8IrAADYCBCAAIAE2AgALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhApIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALQQEBfyMAQSBrIgIkACACQQA2AhAgAkEBNgIEIAJCBDcCCCACQS42AhwgAiAANgIYIAIgAkEYajYCACACIAEQQwALswIBA38gACgCACECIAEoAhwiAEEQcUUE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ZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkTGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkdgMQACoAAAAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5ycwCoAxAAXwAAAAgDAAAZAAAAcmVlbnRyYW50IGluaXQAABgEEAAOAAAAqAMQAF8AAAB6AgAADQAAABYAAAAMAAAABAAAABcAAAAYAAAAGQAAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZABYBBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAWAQQACkAAACuBAAADQAAAEFjY2Vzc0Vycm9ybWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAAAsFEAAVAAAAIAUQAA0AAABzdGQvc3JjL2FsbG9jLnJzQAUQABAAAABjAQAACQAAABYAAAAMAAAABAAAABoAAAAAAAAACAAAAAQAAAAbAAAAAAAAAAgAAAAEAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAQAAAABAAAACEAAAAiAAAAIwAAACQAAABFcnJvcgAAACUAAAAMAAAABAAAACYAAAAnAAAAKAAAAGNhcGFjaXR5IG92ZXJmbG93AAAA2AUQABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5yc/QFEAAUAAAAGAAAAAUAQaCMwAAL8AUBAAAAKQAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAfgYQABAAAAB+AgAADgAAAEJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogrgYQABIAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAyAYQACAAAADoBhAAEgAAAD09IT1tYXRjaGVzYXNzZXJ0aW9uIGBsZWZ0ICByaWdodGAgZmFpbGVkCiAgbGVmdDogCiByaWdodDogABcHEAAQAAAAJwcQABcAAAA+BxAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAAAXBxAAEAAAAGAHEAAQAAAAcAcQAAkAAAA+BxAACQAAADogAAABAAAAAAAAAJwHEAACAAAAfSB9Y29yZS9zcmMvZm10L251bS5ycwAAswcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBzdGFydCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAACiCBAAEgAAALQIEAAiAAAAcmFuZ2UgZW5kIGluZGV4IOgIEAAQAAAAtAgQACIAAAAAAAA/AAAAvwBBqJLAAAsBFABwCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS44My4wICg5MGIzNWE2MjMgMjAyNC0xMS0yNikGd2FscnVzBjAuMjMuMwx3YXNtLWJpbmRnZW4HMC4yLjEwMABJD3RhcmdldF9mZWF0dXJlcwQrD211dGFibGUtZ2xvYmFscysIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==",typeof document>"u"?require("url").pathToFileURL(__filename).href:yC&&yC.tagName.toUpperCase()==="SCRIPT"&&yC.src||new URL("ControlGrid-y9Ko3OWk.cjs",document.baseURI).href));const e=Iye();(typeof s=="string"||typeof Request=="function"&&s instanceof Request||typeof URL=="function"&&s instanceof URL)&&(s=fetch(s));const{instance:t,module:n}=await Sye(await s,e);return Mye(t,n)}const Nh=-12,Dh=9,Tye=-30,Xw=Math.exp(Tye),Bye=11,Lye=11,ls=1<<Bye,Jd=1<<Lye,Rye=1;function kye(s){return s==="bool"||s==="bvec2"||s==="bvec3"||s==="bvec4"}function Kd(s){return s==="int"||s==="ivec2"||s==="ivec3"||s==="ivec4"}function ep(s){return s==="uint"||s==="uvec2"||s==="uvec3"||s==="uvec4"}function Pye(s){return s==="float"||s==="vec2"||s==="vec3"||s==="vec4"}function Nye(s){return s==="mat2"||s==="mat2x2"||s==="mat2x3"||s==="mat2x4"||s==="mat3"||s==="mat3x2"||s==="mat3x3"||s==="mat3x4"||s==="mat4"||s==="mat4x2"||s==="mat4x3"||s==="mat4x4"}function Q_(s){return Pye(s)||Nye(s)}function gf(s){return s==="mat2"||s==="mat2x2"}function _f(s){return s==="mat3"||s==="mat3x3"}function Af(s){return s==="mat4"||s==="mat4x4"}function Dye(s){switch(s){case"vec2":return"float";case"vec3":return"float";case"vec4":return"float";case"ivec2":return"int";case"ivec3":return"int";case"ivec4":return"int";case"uvec2":return"uint";case"uvec3":return"uint";case"uvec4":return"uint";default:throw new Error(`Invalid vector type: ${s}`)}}function Fye(s){switch(s){case"vec2":case"ivec2":case"uvec2":return 2;case"vec3":case"ivec3":case"uvec3":return 3;case"vec4":case"ivec4":case"uvec4":return 4;default:throw new Error(`Invalid vector type: ${s}`)}}function vr(s){return Math.trunc(s).toString()}function yr(s){return`${Math.max(0,Math.trunc(s)).toString()}u`}function Pi(s){return s===Number.POSITIVE_INFINITY?"INFINITY":s===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(s)?s.toFixed(1):s.toString()}function bh(s){return s instanceof tp?s.type:s.dynoOut().type}class tp{constructor(e){this.__isDynoValue=!0,this.type=e}}class oo extends tp{constructor(e,t){super(e.outTypes[t]),this.dyno=e,this.key=t}}class kb extends tp{constructor(e,t){super(e),this.literal=t}getLiteral(){return this.literal}}class Oye extends kb{constructor(e,t){super(e,""),this.value=t}getLiteral(){const{type:e,value:t}=this;switch(e){case"bool":return t?"true":"false";case"uint":return yr(t);case"int":return vr(t);case"float":return Pi(t);case"bvec2":{const n=t;return`bvec2(${n[0]}, ${n[1]})`}case"uvec2":{if(t instanceof di)return`uvec2(${yr(t.x)}, ${yr(t.y)})`;const n=t;return`uvec2(${yr(n[0])}, ${yr(n[1])})`}case"ivec2":{if(t instanceof di)return`ivec2(${vr(t.x)}, ${vr(t.y)})`;const n=t;return`ivec2(${vr(n[0])}, ${vr(n[1])})`}case"vec2":{if(t instanceof di)return`vec2(${Pi(t.x)}, ${Pi(t.y)})`;const n=t;return`vec2(${Pi(n[0])}, ${Pi(n[1])})`}case"bvec3":{const n=t;return`bvec3(${n[0]}, ${n[1]}, ${n[2]})`}case"uvec3":{if(t instanceof Oe)return`uvec3(${yr(t.x)}, ${yr(t.y)}, ${yr(t.z)})`;const n=t;return`uvec3(${yr(n[0])}, ${yr(n[1])}, ${yr(n[2])})`}case"ivec3":{if(t instanceof Oe)return`ivec3(${vr(t.x)}, ${vr(t.y)}, ${vr(t.z)})`;const n=t;return`ivec3(${vr(n[0])}, ${vr(n[1])}, ${vr(n[2])})`}case"vec3":{if(t instanceof Oe)return`vec3(${Pi(t.x)}, ${Pi(t.y)}, ${Pi(t.z)})`;const n=t;return`vec3(${Pi(n[0])}, ${Pi(n[1])}, ${Pi(n[2])})`}case"bvec4":{const n=t;return`bvec4(${n[0]}, ${n[1]}, ${n[2]}, ${n[3]})`}case"uvec4":{if(t instanceof fi)return`uvec4(${yr(t.x)}, ${yr(t.y)}, ${yr(t.z)}, ${yr(t.w)})`;const n=t;return`uvec4(${yr(n[0])}, ${yr(n[1])}, ${yr(n[2])}, ${yr(n[3])})`}case"ivec4":{if(t instanceof fi)return`ivec4(${vr(t.x)}, ${vr(t.y)}, ${vr(t.z)}, ${vr(t.w)})`;const n=t;return`ivec4(${vr(n[0])}, ${vr(n[1])}, ${vr(n[2])}, ${vr(n[3])})`}case"vec4":{if(t instanceof fi)return`vec4(${Pi(t.x)}, ${Pi(t.y)}, ${Pi(t.z)}, ${Pi(t.w)})`;if(t instanceof Ws)return`vec4(${Pi(t.x)}, ${Pi(t.y)}, ${Pi(t.z)}, ${Pi(t.w)})`;const n=t;return`vec4(${Pi(n[0])}, ${Pi(n[1])}, ${Pi(n[2])}, ${Pi(n[3])})`}case"mat2":case"mat2x2":{const n=t,i=n instanceof sx?n.elements:t,r=new Array(4).fill(0).map((a,o)=>Pi(i[o]));return`${e}(${r.join(", ")})`}case"mat2x3":{const n=t,i=new Array(6).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat2x4":{const n=t,i=new Array(8).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat3":case"mat3x3":{const n=t,i=n instanceof ui?n.elements:t,r=new Array(9).fill(0).map((a,o)=>Pi(i[o]));return`${e}(${r.join(", ")})`}case"mat3x2":{const n=t,i=new Array(6).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat3x4":{const n=t,i=new Array(12).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat4":case"mat4x4":{const n=t,i=n instanceof Nn?n.elements:t,r=new Array(16).fill(0).map((a,o)=>Pi(i[o]));return`${e}(${r.join(", ")})`}case"mat4x2":{const n=t,i=new Array(8).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat4x3":{const n=t,i=new Array(12).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}default:throw new Error(`Type not implemented: ${String(e)}`)}}}function g_(s,e){return new Oye(s,e)}function hy(s){const e=String(s);if(kye(s))return`${e}(false)`;if(Q_(s))return`${e}(0.0)`;if(Kd(s))return`${e}(0)`;if(ep(s))return`${e}(0u)`;throw new Error(`Type not implemented: ${e}`)}const oN=" ";class Uye{constructor({indent:e}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=oN,this.indent=e??oN}nextSequence(){return this.sequence++}}class Qr{constructor({inTypes:e,outTypes:t,inputs:n,update:i,globals:r,statements:a,generate:o}){this.inTypes=e??{},this.outTypes=t??{},this.inputs=n??{},this.update=i,this.globals=r,this.statements=a,this.generate=o??(({inputs:c,outputs:h,compile:d})=>{var f,m;return{globals:(f=this.globals)==null?void 0:f.call(this,{inputs:c,outputs:h,compile:d}),statements:(m=this.statements)==null?void 0:m.call(this,{inputs:c,outputs:h,compile:d})}})}get outputs(){const e={};for(const t in this.outTypes)e[t]=new oo(this,t);return e}apply(e){return Object.assign(this.inputs,e),this.outputs}compile({inputs:e,outputs:t,compile:n}){const i=[`// ${this.constructor.name}(${Object.values(e).join(", ")}) => (${Object.values(t).join(", ")})`],r=[];for(const h in t){const d=t[h];d&&!n.declares.has(d)&&(n.declares.add(d),r.push(h))}const{globals:a,statements:o,uniforms:c}=this.generate({inputs:e,outputs:t,compile:n});for(const h of a??[])n.globals.add(h);for(const h in c)n.uniforms[h]=c[h];this.update&&n.updaters.push(this.update);for(const h of r){const d=t[h];d&&(n.uniforms[d]||i.push(`${az(d,this.outTypes[h])};`))}return o?.length&&(i.push("{"),i.push(...o.map(h=>n.indent+h)),i.push("}")),i}}class zye extends Qr{constructor({inTypes:e,outTypes:t,inputs:n,update:i,globals:r,construct:a}){super({inTypes:e,outTypes:t,inputs:n,update:i,globals:r,generate:o=>this.generateBlock(o)}),this.construct=a}generateBlock({inputs:e,outputs:t,compile:n}){var i,r;const a={},o={};for(const w in e)e[w]!=null&&(a[w]=new kb(this.inTypes[w],e[w]));for(const w in t)t[w]!=null&&(o[w]=new tp(this.outTypes[w]));const c={roots:[]},h=this.construct(a,o,c);for(const w of((i=this.globals)==null?void 0:i.call(this,{inputs:e,outputs:t,compile:n}))??[])n.globals.add(w);const d=[],f=new Map;function m(w,b,I){let T=f.get(w);if(!T){T={sequence:n.nextSequence(),outNames:new Map,newOuts:new Set},f.set(w,T);for(const B in w.inputs){let O=w.inputs[B];for(;O;){if(O instanceof tp){O instanceof oo&&m(O.dyno,O.key);break}O=O.dynoOut()}}d.push(w)}b&&(I||T.newOuts.add(b),T.outNames.set(b,I??`${b}_${T.sequence}`))}for(const w of c.roots)m(w);for(const w in o){let b=h?.[w]??o[w];for(;b;){if(b instanceof tp){b instanceof oo&&m(b.dyno,b.key,t[w]);break}b=b.dynoOut()}o[w]=b}const _=[];for(const w of d){const b={},I={};for(const O in w.inputs){let Q=w.inputs[O];for(;Q;){if(Q instanceof tp){if(Q instanceof kb)b[O]=Q.getLiteral();else if(Q instanceof oo){const U=(r=f.get(Q.dyno))==null?void 0:r.outNames.get(Q.key);if(!U)throw new Error(`Source not found for ${Q.dyno.constructor.name}.${Q.key}`);b[O]=U}break}Q=Q.dynoOut()}}const T=f.get(w)??{outNames:new Map};for(const[O,Q]of T.outNames.entries())I[O]=Q;const B=w.compile({inputs:b,outputs:I,compile:n});_.push(B)}const y=[];for(const w in t)o[w]instanceof kb&&y.push(`${t[w]} = ${o[w].getLiteral()};`);return y.length>0&&_.push(y),{statements:_.flatMap((w,b)=>b===0?w:["",...w])}}}function Fh(s,e,t,{update:n,globals:i}={}){return new zye({inTypes:s,outTypes:e,construct:t,update:n,globals:i})}function ax({inTypes:s,outTypes:e,inputs:t,update:n,globals:i,statements:r,generate:a}){return new Qr({inTypes:s,outTypes:e,inputs:t,update:n,globals:i,statements:r,generate:a})}function az(s,e,t){const n=typeof e=="string"?e:e.type;if(!n)throw new Error(`Invalid DynoType: ${String(e)}`);return`${n} ${s}${t!=null?`[${t}]`:""}`}function Pc(s){var e;let t=!1;const n=s.split(`
4543
+ }`;class sve{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){const i=new $a,r=e.properties.get(i);r.__webglTexture=t.texture,(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new Vl({vertexShader:nve,fragmentShader:ive,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Gr(new RT(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}let rve=class extends gp{constructor(e,t){super();const n=this;let i=null,r=1,a=null,o="local-floor",c=1,h=null,d=null,f=null,m=null,_=null,y=null;const x=new sve,w=t.getContextAttributes();let b=null,I=null;const T=[],B=[],O=new di;let Q=null;const U=new Xr;U.viewport=new fi;const D=new Xr;D.viewport=new fi;const P=[U,D],k=new _me;let N=null,W=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ce){let we=T[ce];return we===void 0&&(we=new Mw,T[ce]=we),we.getTargetRaySpace()},this.getControllerGrip=function(ce){let we=T[ce];return we===void 0&&(we=new Mw,T[ce]=we),we.getGripSpace()},this.getHand=function(ce){let we=T[ce];return we===void 0&&(we=new Mw,T[ce]=we),we.getHandSpace()};function X(ce){const we=B.indexOf(ce.inputSource);if(we===-1)return;const Re=T[we];Re!==void 0&&(Re.update(ce.inputSource,ce.frame,h||a),Re.dispatchEvent({type:ce.type,data:ce.inputSource}))}function j(){i.removeEventListener("select",X),i.removeEventListener("selectstart",X),i.removeEventListener("selectend",X),i.removeEventListener("squeeze",X),i.removeEventListener("squeezestart",X),i.removeEventListener("squeezeend",X),i.removeEventListener("end",j),i.removeEventListener("inputsourceschange",$);for(let ce=0;ce<T.length;ce++){const we=B[ce];we!==null&&(B[ce]=null,T[ce].disconnect(we))}N=null,W=null,x.reset(),e.setRenderTarget(b),_=null,m=null,f=null,i=null,I=null,ye.stop(),n.isPresenting=!1,e.setPixelRatio(Q),e.setSize(O.width,O.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(ce){r=ce,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(ce){o=ce,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return h||a},this.setReferenceSpace=function(ce){h=ce},this.getBaseLayer=function(){return m!==null?m:_},this.getBinding=function(){return f},this.getFrame=function(){return y},this.getSession=function(){return i},this.setSession=async function(ce){if(i=ce,i!==null){if(b=e.getRenderTarget(),i.addEventListener("select",X),i.addEventListener("selectstart",X),i.addEventListener("selectend",X),i.addEventListener("squeeze",X),i.addEventListener("squeezestart",X),i.addEventListener("squeezeend",X),i.addEventListener("end",j),i.addEventListener("inputsourceschange",$),w.xrCompatible!==!0&&await t.makeXRCompatible(),Q=e.getPixelRatio(),e.getSize(O),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let Re=null,Ne=null,ge=null;w.depth&&(ge=w.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,Re=w.stencil?F_:D_,Ne=w.stencil?N_:ao);const tt={colorFormat:t.RGBA8,depthFormat:ge,scaleFactor:r};f=new XRWebGLBinding(i,t),m=f.createProjectionLayer(tt),i.updateRenderState({layers:[m]}),e.setPixelRatio(1),e.setSize(m.textureWidth,m.textureHeight,!1),I=new Mc(m.textureWidth,m.textureHeight,{format:zr,type:Ga,depthTexture:new N8(m.textureWidth,m.textureHeight,Ne,void 0,void 0,void 0,void 0,void 0,void 0,Re),stencilBuffer:w.stencil,colorSpace:e.outputColorSpace,samples:w.antialias?4:0,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1})}else{const Re={antialias:w.antialias,alpha:!0,depth:w.depth,stencil:w.stencil,framebufferScaleFactor:r};_=new XRWebGLLayer(i,t,Re),i.updateRenderState({baseLayer:_}),e.setPixelRatio(1),e.setSize(_.framebufferWidth,_.framebufferHeight,!1),I=new Mc(_.framebufferWidth,_.framebufferHeight,{format:zr,type:Ga,colorSpace:e.outputColorSpace,stencilBuffer:w.stencil,resolveDepthBuffer:_.ignoreDepthValues===!1,resolveStencilBuffer:_.ignoreDepthValues===!1})}I.isXRRenderTarget=!0,this.setFoveation(c),h=null,a=await i.requestReferenceSpace(o),ye.setContext(i),ye.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode},this.getDepthTexture=function(){return x.getDepthTexture()};function $(ce){for(let we=0;we<ce.removed.length;we++){const Re=ce.removed[we],Ne=B.indexOf(Re);Ne>=0&&(B[Ne]=null,T[Ne].disconnect(Re))}for(let we=0;we<ce.added.length;we++){const Re=ce.added[we];let Ne=B.indexOf(Re);if(Ne===-1){for(let tt=0;tt<T.length;tt++)if(tt>=B.length){B.push(Re),Ne=tt;break}else if(B[tt]===null){B[tt]=Re,Ne=tt;break}if(Ne===-1)break}const ge=T[Ne];ge&&ge.connect(Re)}}const V=new Oe,Z=new Oe;function K(ce,we,Re){V.setFromMatrixPosition(we.matrixWorld),Z.setFromMatrixPosition(Re.matrixWorld);const Ne=V.distanceTo(Z),ge=we.projectionMatrix.elements,tt=Re.projectionMatrix.elements,ze=ge[14]/(ge[10]-1),He=ge[14]/(ge[10]+1),re=(ge[9]+1)/ge[5],nt=(ge[9]-1)/ge[5],_e=(ge[8]-1)/ge[0],pt=(tt[8]+1)/tt[0],vt=ze*_e,Ee=ze*pt,me=Ne/(-_e+pt),ke=me*-_e;if(we.matrixWorld.decompose(ce.position,ce.quaternion,ce.scale),ce.translateX(ke),ce.translateZ(me),ce.matrixWorld.compose(ce.position,ce.quaternion,ce.scale),ce.matrixWorldInverse.copy(ce.matrixWorld).invert(),ge[10]===-1)ce.projectionMatrix.copy(we.projectionMatrix),ce.projectionMatrixInverse.copy(we.projectionMatrixInverse);else{const et=ze+me,ht=He+me,zt=vt-ke,xe=Ee+(Ne-ke),ne=re*He/ht*et,Qe=nt*He/ht*et;ce.projectionMatrix.makePerspective(zt,xe,ne,Qe,et,ht),ce.projectionMatrixInverse.copy(ce.projectionMatrix).invert()}}function se(ce,we){we===null?ce.matrixWorld.copy(ce.matrix):ce.matrixWorld.multiplyMatrices(we.matrixWorld,ce.matrix),ce.matrixWorldInverse.copy(ce.matrixWorld).invert()}this.updateCamera=function(ce){if(i===null)return;let we=ce.near,Re=ce.far;x.texture!==null&&(x.depthNear>0&&(we=x.depthNear),x.depthFar>0&&(Re=x.depthFar)),k.near=D.near=U.near=we,k.far=D.far=U.far=Re,(N!==k.near||W!==k.far)&&(i.updateRenderState({depthNear:k.near,depthFar:k.far}),N=k.near,W=k.far),U.layers.mask=ce.layers.mask|2,D.layers.mask=ce.layers.mask|4,k.layers.mask=U.layers.mask|D.layers.mask;const Ne=ce.parent,ge=k.cameras;se(k,Ne);for(let tt=0;tt<ge.length;tt++)se(ge[tt],Ne);ge.length===2?K(k,U,D):k.projectionMatrix.copy(U.projectionMatrix),oe(ce,k,Ne)};function oe(ce,we,Re){Re===null?ce.matrix.copy(we.matrixWorld):(ce.matrix.copy(Re.matrixWorld),ce.matrix.invert(),ce.matrix.multiply(we.matrixWorld)),ce.matrix.decompose(ce.position,ce.quaternion,ce.scale),ce.updateMatrixWorld(!0),ce.projectionMatrix.copy(we.projectionMatrix),ce.projectionMatrixInverse.copy(we.projectionMatrixInverse),ce.isPerspectiveCamera&&(ce.fov=km*2*Math.atan(1/ce.projectionMatrix.elements[5]),ce.zoom=1)}this.getCamera=function(){return k},this.getFoveation=function(){if(!(m===null&&_===null))return c},this.setFoveation=function(ce){c=ce,m!==null&&(m.fixedFoveation=ce),_!==null&&_.fixedFoveation!==void 0&&(_.fixedFoveation=ce)},this.hasDepthSensing=function(){return x.texture!==null},this.getDepthSensingMesh=function(){return x.getMesh(k)};let ue=null;function be(ce,we){if(d=we.getViewerPose(h||a),y=we,d!==null){const Re=d.views;_!==null&&(e.setRenderTargetFramebuffer(I,_.framebuffer),e.setRenderTarget(I));let Ne=!1;Re.length!==k.cameras.length&&(k.cameras.length=0,Ne=!0);for(let ze=0;ze<Re.length;ze++){const He=Re[ze];let re=null;if(_!==null)re=_.getViewport(He);else{const _e=f.getViewSubImage(m,He);re=_e.viewport,ze===0&&(e.setRenderTargetTextures(I,_e.colorTexture,_e.depthStencilTexture),e.setRenderTarget(I))}let nt=P[ze];nt===void 0&&(nt=new Xr,nt.layers.enable(ze),nt.viewport=new fi,P[ze]=nt),nt.matrix.fromArray(He.transform.matrix),nt.matrix.decompose(nt.position,nt.quaternion,nt.scale),nt.projectionMatrix.fromArray(He.projectionMatrix),nt.projectionMatrixInverse.copy(nt.projectionMatrix).invert(),nt.viewport.set(re.x,re.y,re.width,re.height),ze===0&&(k.matrix.copy(nt.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),Ne===!0&&k.cameras.push(nt)}const ge=i.enabledFeatures;if(ge&&ge.includes("depth-sensing")&&i.depthUsage=="gpu-optimized"&&f){const ze=f.getDepthInformation(Re[0]);ze&&ze.isValid&&ze.texture&&x.init(e,ze,i.renderState)}}for(let Re=0;Re<T.length;Re++){const Ne=B[Re],ge=T[Re];Ne!==null&&ge!==void 0&&ge.update(Ne,we,h||a)}ue&&ue(ce,we),we.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:we}),y=null}const ye=new G8;ye.setAnimationLoop(be),this.setAnimationLoop=function(ce){ue=ce},this.dispose=function(){}}};const Pd=new zu,ave=new Nn;function ove(s,e){function t(w,b){w.matrixAutoUpdate===!0&&w.updateMatrix(),b.value.copy(w.matrix)}function n(w,b){b.color.getRGB(w.fogColor.value,S8(s)),b.isFog?(w.fogNear.value=b.near,w.fogFar.value=b.far):b.isFogExp2&&(w.fogDensity.value=b.density)}function i(w,b,I,T,B){b.isMeshBasicMaterial||b.isMeshLambertMaterial?r(w,b):b.isMeshToonMaterial?(r(w,b),f(w,b)):b.isMeshPhongMaterial?(r(w,b),d(w,b)):b.isMeshStandardMaterial?(r(w,b),m(w,b),b.isMeshPhysicalMaterial&&_(w,b,B)):b.isMeshMatcapMaterial?(r(w,b),y(w,b)):b.isMeshDepthMaterial?r(w,b):b.isMeshDistanceMaterial?(r(w,b),x(w,b)):b.isMeshNormalMaterial?r(w,b):b.isLineBasicMaterial?(a(w,b),b.isLineDashedMaterial&&o(w,b)):b.isPointsMaterial?c(w,b,I,T):b.isSpriteMaterial?h(w,b):b.isShadowMaterial?(w.color.value.copy(b.color),w.opacity.value=b.opacity):b.isShaderMaterial&&(b.uniformsNeedUpdate=!1)}function r(w,b){w.opacity.value=b.opacity,b.color&&w.diffuse.value.copy(b.color),b.emissive&&w.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity),b.map&&(w.map.value=b.map,t(b.map,w.mapTransform)),b.alphaMap&&(w.alphaMap.value=b.alphaMap,t(b.alphaMap,w.alphaMapTransform)),b.bumpMap&&(w.bumpMap.value=b.bumpMap,t(b.bumpMap,w.bumpMapTransform),w.bumpScale.value=b.bumpScale,b.side===ro&&(w.bumpScale.value*=-1)),b.normalMap&&(w.normalMap.value=b.normalMap,t(b.normalMap,w.normalMapTransform),w.normalScale.value.copy(b.normalScale),b.side===ro&&w.normalScale.value.negate()),b.displacementMap&&(w.displacementMap.value=b.displacementMap,t(b.displacementMap,w.displacementMapTransform),w.displacementScale.value=b.displacementScale,w.displacementBias.value=b.displacementBias),b.emissiveMap&&(w.emissiveMap.value=b.emissiveMap,t(b.emissiveMap,w.emissiveMapTransform)),b.specularMap&&(w.specularMap.value=b.specularMap,t(b.specularMap,w.specularMapTransform)),b.alphaTest>0&&(w.alphaTest.value=b.alphaTest);const I=e.get(b),T=I.envMap,B=I.envMapRotation;T&&(w.envMap.value=T,Pd.copy(B),Pd.x*=-1,Pd.y*=-1,Pd.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(Pd.y*=-1,Pd.z*=-1),w.envMapRotation.value.setFromMatrix4(ave.makeRotationFromEuler(Pd)),w.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,w.reflectivity.value=b.reflectivity,w.ior.value=b.ior,w.refractionRatio.value=b.refractionRatio),b.lightMap&&(w.lightMap.value=b.lightMap,w.lightMapIntensity.value=b.lightMapIntensity,t(b.lightMap,w.lightMapTransform)),b.aoMap&&(w.aoMap.value=b.aoMap,w.aoMapIntensity.value=b.aoMapIntensity,t(b.aoMap,w.aoMapTransform))}function a(w,b){w.diffuse.value.copy(b.color),w.opacity.value=b.opacity,b.map&&(w.map.value=b.map,t(b.map,w.mapTransform))}function o(w,b){w.dashSize.value=b.dashSize,w.totalSize.value=b.dashSize+b.gapSize,w.scale.value=b.scale}function c(w,b,I,T){w.diffuse.value.copy(b.color),w.opacity.value=b.opacity,w.size.value=b.size*I,w.scale.value=T*.5,b.map&&(w.map.value=b.map,t(b.map,w.uvTransform)),b.alphaMap&&(w.alphaMap.value=b.alphaMap,t(b.alphaMap,w.alphaMapTransform)),b.alphaTest>0&&(w.alphaTest.value=b.alphaTest)}function h(w,b){w.diffuse.value.copy(b.color),w.opacity.value=b.opacity,w.rotation.value=b.rotation,b.map&&(w.map.value=b.map,t(b.map,w.mapTransform)),b.alphaMap&&(w.alphaMap.value=b.alphaMap,t(b.alphaMap,w.alphaMapTransform)),b.alphaTest>0&&(w.alphaTest.value=b.alphaTest)}function d(w,b){w.specular.value.copy(b.specular),w.shininess.value=Math.max(b.shininess,1e-4)}function f(w,b){b.gradientMap&&(w.gradientMap.value=b.gradientMap)}function m(w,b){w.metalness.value=b.metalness,b.metalnessMap&&(w.metalnessMap.value=b.metalnessMap,t(b.metalnessMap,w.metalnessMapTransform)),w.roughness.value=b.roughness,b.roughnessMap&&(w.roughnessMap.value=b.roughnessMap,t(b.roughnessMap,w.roughnessMapTransform)),b.envMap&&(w.envMapIntensity.value=b.envMapIntensity)}function _(w,b,I){w.ior.value=b.ior,b.sheen>0&&(w.sheenColor.value.copy(b.sheenColor).multiplyScalar(b.sheen),w.sheenRoughness.value=b.sheenRoughness,b.sheenColorMap&&(w.sheenColorMap.value=b.sheenColorMap,t(b.sheenColorMap,w.sheenColorMapTransform)),b.sheenRoughnessMap&&(w.sheenRoughnessMap.value=b.sheenRoughnessMap,t(b.sheenRoughnessMap,w.sheenRoughnessMapTransform))),b.clearcoat>0&&(w.clearcoat.value=b.clearcoat,w.clearcoatRoughness.value=b.clearcoatRoughness,b.clearcoatMap&&(w.clearcoatMap.value=b.clearcoatMap,t(b.clearcoatMap,w.clearcoatMapTransform)),b.clearcoatRoughnessMap&&(w.clearcoatRoughnessMap.value=b.clearcoatRoughnessMap,t(b.clearcoatRoughnessMap,w.clearcoatRoughnessMapTransform)),b.clearcoatNormalMap&&(w.clearcoatNormalMap.value=b.clearcoatNormalMap,t(b.clearcoatNormalMap,w.clearcoatNormalMapTransform),w.clearcoatNormalScale.value.copy(b.clearcoatNormalScale),b.side===ro&&w.clearcoatNormalScale.value.negate())),b.dispersion>0&&(w.dispersion.value=b.dispersion),b.iridescence>0&&(w.iridescence.value=b.iridescence,w.iridescenceIOR.value=b.iridescenceIOR,w.iridescenceThicknessMinimum.value=b.iridescenceThicknessRange[0],w.iridescenceThicknessMaximum.value=b.iridescenceThicknessRange[1],b.iridescenceMap&&(w.iridescenceMap.value=b.iridescenceMap,t(b.iridescenceMap,w.iridescenceMapTransform)),b.iridescenceThicknessMap&&(w.iridescenceThicknessMap.value=b.iridescenceThicknessMap,t(b.iridescenceThicknessMap,w.iridescenceThicknessMapTransform))),b.transmission>0&&(w.transmission.value=b.transmission,w.transmissionSamplerMap.value=I.texture,w.transmissionSamplerSize.value.set(I.width,I.height),b.transmissionMap&&(w.transmissionMap.value=b.transmissionMap,t(b.transmissionMap,w.transmissionMapTransform)),w.thickness.value=b.thickness,b.thicknessMap&&(w.thicknessMap.value=b.thicknessMap,t(b.thicknessMap,w.thicknessMapTransform)),w.attenuationDistance.value=b.attenuationDistance,w.attenuationColor.value.copy(b.attenuationColor)),b.anisotropy>0&&(w.anisotropyVector.value.set(b.anisotropy*Math.cos(b.anisotropyRotation),b.anisotropy*Math.sin(b.anisotropyRotation)),b.anisotropyMap&&(w.anisotropyMap.value=b.anisotropyMap,t(b.anisotropyMap,w.anisotropyMapTransform))),w.specularIntensity.value=b.specularIntensity,w.specularColor.value.copy(b.specularColor),b.specularColorMap&&(w.specularColorMap.value=b.specularColorMap,t(b.specularColorMap,w.specularColorMapTransform)),b.specularIntensityMap&&(w.specularIntensityMap.value=b.specularIntensityMap,t(b.specularIntensityMap,w.specularIntensityMapTransform))}function y(w,b){b.matcap&&(w.matcap.value=b.matcap)}function x(w,b){const I=e.get(b).light;w.referencePosition.value.setFromMatrixPosition(I.matrixWorld),w.nearDistance.value=I.shadow.camera.near,w.farDistance.value=I.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function lve(s,e,t,n){let i={},r={},a=[];const o=s.getParameter(s.MAX_UNIFORM_BUFFER_BINDINGS);function c(I,T){const B=T.program;n.uniformBlockBinding(I,B)}function h(I,T){let B=i[I.id];B===void 0&&(y(I),B=d(I),i[I.id]=B,I.addEventListener("dispose",w));const O=T.program;n.updateUBOMapping(I,O);const Q=e.render.frame;r[I.id]!==Q&&(m(I),r[I.id]=Q)}function d(I){const T=f();I.__bindingPointIndex=T;const B=s.createBuffer(),O=I.__size,Q=I.usage;return s.bindBuffer(s.UNIFORM_BUFFER,B),s.bufferData(s.UNIFORM_BUFFER,O,Q),s.bindBuffer(s.UNIFORM_BUFFER,null),s.bindBufferBase(s.UNIFORM_BUFFER,T,B),B}function f(){for(let I=0;I<o;I++)if(a.indexOf(I)===-1)return a.push(I),I;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function m(I){const T=i[I.id],B=I.uniforms,O=I.__cache;s.bindBuffer(s.UNIFORM_BUFFER,T);for(let Q=0,U=B.length;Q<U;Q++){const D=Array.isArray(B[Q])?B[Q]:[B[Q]];for(let P=0,k=D.length;P<k;P++){const N=D[P];if(_(N,Q,P,O)===!0){const W=N.__offset,X=Array.isArray(N.value)?N.value:[N.value];let j=0;for(let $=0;$<X.length;$++){const V=X[$],Z=x(V);typeof V=="number"||typeof V=="boolean"?(N.__data[0]=V,s.bufferSubData(s.UNIFORM_BUFFER,W+j,N.__data)):V.isMatrix3?(N.__data[0]=V.elements[0],N.__data[1]=V.elements[1],N.__data[2]=V.elements[2],N.__data[3]=0,N.__data[4]=V.elements[3],N.__data[5]=V.elements[4],N.__data[6]=V.elements[5],N.__data[7]=0,N.__data[8]=V.elements[6],N.__data[9]=V.elements[7],N.__data[10]=V.elements[8],N.__data[11]=0):(V.toArray(N.__data,j),j+=Z.storage/Float32Array.BYTES_PER_ELEMENT)}s.bufferSubData(s.UNIFORM_BUFFER,W,N.__data)}}}s.bindBuffer(s.UNIFORM_BUFFER,null)}function _(I,T,B,O){const Q=I.value,U=T+"_"+B;if(O[U]===void 0)return typeof Q=="number"||typeof Q=="boolean"?O[U]=Q:O[U]=Q.clone(),!0;{const D=O[U];if(typeof Q=="number"||typeof Q=="boolean"){if(D!==Q)return O[U]=Q,!0}else if(D.equals(Q)===!1)return D.copy(Q),!0}return!1}function y(I){const T=I.uniforms;let B=0;const O=16;for(let U=0,D=T.length;U<D;U++){const P=Array.isArray(T[U])?T[U]:[T[U]];for(let k=0,N=P.length;k<N;k++){const W=P[k],X=Array.isArray(W.value)?W.value:[W.value];for(let j=0,$=X.length;j<$;j++){const V=X[j],Z=x(V),K=B%O,se=K%Z.boundary,oe=K+se;B+=se,oe!==0&&O-oe<Z.storage&&(B+=O-oe),W.__data=new Float32Array(Z.storage/Float32Array.BYTES_PER_ELEMENT),W.__offset=B,B+=Z.storage}}}const Q=B%O;return Q>0&&(B+=O-Q),I.__size=B,I.__cache={},this}function x(I){const T={boundary:0,storage:0};return typeof I=="number"||typeof I=="boolean"?(T.boundary=4,T.storage=4):I.isVector2?(T.boundary=8,T.storage=8):I.isVector3||I.isColor?(T.boundary=16,T.storage=12):I.isVector4?(T.boundary=16,T.storage=16):I.isMatrix3?(T.boundary=48,T.storage=48):I.isMatrix4?(T.boundary=64,T.storage=64):I.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",I),T}function w(I){const T=I.target;T.removeEventListener("dispose",w);const B=a.indexOf(T.__bindingPointIndex);a.splice(B,1),s.deleteBuffer(i[T.id]),delete i[T.id],delete r[T.id]}function b(){for(const I in i)s.deleteBuffer(i[I]);a=[],i={},r={}}return{bind:c,update:h,dispose:b}}let cve=class{constructor(e={}){const{canvas:t=ofe(),context:n=null,depth:i=!0,stencil:r=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:h=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:f=!1,reverseDepthBuffer:m=!1}=e;this.isWebGLRenderer=!0;let _;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");_=n.getContextAttributes().alpha}else _=a;const y=new Uint32Array(4),x=new Int32Array(4);let w=null,b=null;const I=[],T=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=Lu,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const B=this;let O=!1;this._outputColorSpace=xr;let Q=0,U=0,D=null,P=-1,k=null;const N=new fi,W=new fi;let X=null;const j=new Hn(0);let $=0,V=t.width,Z=t.height,K=1,se=null,oe=null;const ue=new fi(0,0,V,Z),be=new fi(0,0,V,Z);let ye=!1;const ce=new BT;let we=!1,Re=!1;const Ne=new Nn,ge=new Nn,tt=new Oe,ze=new fi,He={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let re=!1;function nt(){return D===null?K:1}let _e=n;function pt(fe,$e){return t.getContext(fe,$e)}try{const fe={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:c,preserveDrawingBuffer:h,powerPreference:d,failIfMajorPerformanceCaveat:f};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${vT}`),t.addEventListener("webglcontextlost",sn,!1),t.addEventListener("webglcontextrestored",Pt,!1),t.addEventListener("webglcontextcreationerror",At,!1),_e===null){const $e="webgl2";if(_e=pt($e,fe),_e===null)throw pt($e)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(fe){throw console.error("THREE.WebGLRenderer: "+fe.message),fe}let vt,Ee,me,ke,et,ht,zt,xe,ne,Qe,We,Ce,De,at,rt,Je,Rt,gt,$t,Tt,Kt,Gt,xn,Ge;function Yt(){vt=new v_e(_e),vt.init(),Gt=new tve(_e,vt),Ee=new d_e(_e,vt,e,Gt),me=new KAe(_e,vt),Ee.reverseDepthBuffer&&m&&me.buffers.depth.setReversed(!0),ke=new x_e(_e),et=new zAe,ht=new eve(_e,vt,me,et,Ee,Gt,ke),zt=new f_e(B),xe=new A_e(B),ne=new Mme(_e),xn=new h_e(_e,ne),Qe=new y_e(_e,ne,ke,xn),We=new w_e(_e,Qe,ne,ke),$t=new C_e(_e,Ee,ht),Je=new p_e(et),Ce=new UAe(B,zt,xe,vt,Ee,xn,Je),De=new ove(B,et),at=new QAe,rt=new YAe(vt),gt=new c_e(B,zt,xe,me,We,_,c),Rt=new ZAe(B,We,Ee),Ge=new lve(_e,ke,Ee,me),Tt=new u_e(_e,vt,ke),Kt=new b_e(_e,vt,ke),ke.programs=Ce.programs,B.capabilities=Ee,B.extensions=vt,B.properties=et,B.renderLists=at,B.shadowMap=Rt,B.state=me,B.info=ke}Yt();const St=new rve(B,_e);this.xr=St,this.getContext=function(){return _e},this.getContextAttributes=function(){return _e.getContextAttributes()},this.forceContextLoss=function(){const fe=vt.get("WEBGL_lose_context");fe&&fe.loseContext()},this.forceContextRestore=function(){const fe=vt.get("WEBGL_lose_context");fe&&fe.restoreContext()},this.getPixelRatio=function(){return K},this.setPixelRatio=function(fe){fe!==void 0&&(K=fe,this.setSize(V,Z,!1))},this.getSize=function(fe){return fe.set(V,Z)},this.setSize=function(fe,$e,ut=!0){if(St.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}V=fe,Z=$e,t.width=Math.floor(fe*K),t.height=Math.floor($e*K),ut===!0&&(t.style.width=fe+"px",t.style.height=$e+"px"),this.setViewport(0,0,fe,$e)},this.getDrawingBufferSize=function(fe){return fe.set(V*K,Z*K).floor()},this.setDrawingBufferSize=function(fe,$e,ut){V=fe,Z=$e,K=ut,t.width=Math.floor(fe*ut),t.height=Math.floor($e*ut),this.setViewport(0,0,fe,$e)},this.getCurrentViewport=function(fe){return fe.copy(N)},this.getViewport=function(fe){return fe.copy(ue)},this.setViewport=function(fe,$e,ut,ct){fe.isVector4?ue.set(fe.x,fe.y,fe.z,fe.w):ue.set(fe,$e,ut,ct),me.viewport(N.copy(ue).multiplyScalar(K).round())},this.getScissor=function(fe){return fe.copy(be)},this.setScissor=function(fe,$e,ut,ct){fe.isVector4?be.set(fe.x,fe.y,fe.z,fe.w):be.set(fe,$e,ut,ct),me.scissor(W.copy(be).multiplyScalar(K).round())},this.getScissorTest=function(){return ye},this.setScissorTest=function(fe){me.setScissorTest(ye=fe)},this.setOpaqueSort=function(fe){se=fe},this.setTransparentSort=function(fe){oe=fe},this.getClearColor=function(fe){return fe.copy(gt.getClearColor())},this.setClearColor=function(){gt.setClearColor(...arguments)},this.getClearAlpha=function(){return gt.getClearAlpha()},this.setClearAlpha=function(){gt.setClearAlpha(...arguments)},this.clear=function(fe=!0,$e=!0,ut=!0){let ct=0;if(fe){let qe=!1;if(D!==null){const It=D.texture.format;qe=It===Ch||It===ex||It===wT}if(qe){const It=D.texture.type,Dt=It===Ga||It===ao||It===P_||It===N_||It===bT||It===xT,an=gt.getClearColor(),qt=gt.getClearAlpha(),Sn=an.r,Ln=an.g,Rn=an.b;Dt?(y[0]=Sn,y[1]=Ln,y[2]=Rn,y[3]=qt,_e.clearBufferuiv(_e.COLOR,0,y)):(x[0]=Sn,x[1]=Ln,x[2]=Rn,x[3]=qt,_e.clearBufferiv(_e.COLOR,0,x))}else ct|=_e.COLOR_BUFFER_BIT}$e&&(ct|=_e.DEPTH_BUFFER_BIT),ut&&(ct|=_e.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),_e.clear(ct)},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",sn,!1),t.removeEventListener("webglcontextrestored",Pt,!1),t.removeEventListener("webglcontextcreationerror",At,!1),gt.dispose(),at.dispose(),rt.dispose(),et.dispose(),zt.dispose(),xe.dispose(),We.dispose(),xn.dispose(),Ge.dispose(),Ce.dispose(),St.dispose(),St.removeEventListener("sessionstart",uo),St.removeEventListener("sessionend",ia),Be.stop()};function sn(fe){fe.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),O=!0}function Pt(){console.log("THREE.WebGLRenderer: Context Restored."),O=!1;const fe=ke.autoReset,$e=Rt.enabled,ut=Rt.autoUpdate,ct=Rt.needsUpdate,qe=Rt.type;Yt(),ke.autoReset=fe,Rt.enabled=$e,Rt.autoUpdate=ut,Rt.needsUpdate=ct,Rt.type=qe}function At(fe){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",fe.statusMessage)}function ln(fe){const $e=fe.target;$e.removeEventListener("dispose",ln),cn($e)}function cn(fe){xt(fe),et.remove(fe)}function xt(fe){const $e=et.get(fe).programs;$e!==void 0&&($e.forEach(function(ut){Ce.releaseProgram(ut)}),fe.isShaderMaterial&&Ce.releaseShaderCache(fe))}this.renderBufferDirect=function(fe,$e,ut,ct,qe,It){$e===null&&($e=He);const Dt=qe.isMesh&&qe.matrixWorld.determinant()<0,an=Kn(fe,$e,ut,ct,qe);me.setMaterial(ct,Dt);let qt=ut.index,Sn=1;if(ct.wireframe===!0){if(qt=Qe.getWireframeAttribute(ut),qt===void 0)return;Sn=2}const Ln=ut.drawRange,Rn=ut.attributes.position;let Zn=Ln.start*Sn,li=(Ln.start+Ln.count)*Sn;It!==null&&(Zn=Math.max(Zn,It.start*Sn),li=Math.min(li,(It.start+It.count)*Sn)),qt!==null?(Zn=Math.max(Zn,0),li=Math.min(li,qt.count)):Rn!=null&&(Zn=Math.max(Zn,0),li=Math.min(li,Rn.count));const Wi=li-Zn;if(Wi<0||Wi===1/0)return;xn.setup(qe,ct,an,ut,qt);let Ci,Bi=Tt;if(qt!==null&&(Ci=ne.get(qt),Bi=Kt,Bi.setIndex(Ci)),qe.isMesh)ct.wireframe===!0?(me.setLineWidth(ct.wireframeLinewidth*nt()),Bi.setMode(_e.LINES)):Bi.setMode(_e.TRIANGLES);else if(qe.isLine){let kn=ct.linewidth;kn===void 0&&(kn=1),me.setLineWidth(kn*nt()),qe.isLineSegments?Bi.setMode(_e.LINES):qe.isLineLoop?Bi.setMode(_e.LINE_LOOP):Bi.setMode(_e.LINE_STRIP)}else qe.isPoints?Bi.setMode(_e.POINTS):qe.isSprite&&Bi.setMode(_e.TRIANGLES);if(qe.isBatchedMesh)if(qe._multiDrawInstances!==null)gm("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Bi.renderMultiDrawInstances(qe._multiDrawStarts,qe._multiDrawCounts,qe._multiDrawCount,qe._multiDrawInstances);else if(vt.get("WEBGL_multi_draw"))Bi.renderMultiDraw(qe._multiDrawStarts,qe._multiDrawCounts,qe._multiDrawCount);else{const kn=qe._multiDrawStarts,Gi=qe._multiDrawCounts,ci=qe._multiDrawCount,ss=qt?ne.get(qt).bytesPerElement:1,rs=et.get(ct).currentProgram.getUniforms();for(let Ys=0;Ys<ci;Ys++)rs.setValue(_e,"_gl_DrawID",Ys),Bi.render(kn[Ys]/ss,Gi[Ys])}else if(qe.isInstancedMesh)Bi.renderInstances(Zn,Wi,qe.count);else if(ut.isInstancedBufferGeometry){const kn=ut._maxInstanceCount!==void 0?ut._maxInstanceCount:1/0,Gi=Math.min(ut.instanceCount,kn);Bi.renderInstances(Zn,Wi,Gi)}else Bi.render(Zn,Wi)};function Xn(fe,$e,ut){fe.transparent===!0&&fe.side===Nl&&fe.forceSinglePass===!1?(fe.side=ro,fe.needsUpdate=!0,In(fe,$e,ut),fe.side=Ph,fe.needsUpdate=!0,In(fe,$e,ut),fe.side=Nl):In(fe,$e,ut)}this.compile=function(fe,$e,ut=null){ut===null&&(ut=fe),b=rt.get(ut),b.init($e),T.push(b),ut.traverseVisible(function(qe){qe.isLight&&qe.layers.test($e.layers)&&(b.pushLight(qe),qe.castShadow&&b.pushShadow(qe))}),fe!==ut&&fe.traverseVisible(function(qe){qe.isLight&&qe.layers.test($e.layers)&&(b.pushLight(qe),qe.castShadow&&b.pushShadow(qe))}),b.setupLights();const ct=new Set;return fe.traverse(function(qe){if(!(qe.isMesh||qe.isPoints||qe.isLine||qe.isSprite))return;const It=qe.material;if(It)if(Array.isArray(It))for(let Dt=0;Dt<It.length;Dt++){const an=It[Dt];Xn(an,ut,qe),ct.add(an)}else Xn(It,ut,qe),ct.add(It)}),b=T.pop(),ct},this.compileAsync=function(fe,$e,ut=null){const ct=this.compile(fe,$e,ut);return new Promise(qe=>{function It(){if(ct.forEach(function(Dt){et.get(Dt).currentProgram.isReady()&&ct.delete(Dt)}),ct.size===0){qe(fe);return}setTimeout(It,10)}vt.get("KHR_parallel_shader_compile")!==null?It():setTimeout(It,10)})};let us=null;function Ts(fe){us&&us(fe)}function uo(){Be.stop()}function ia(){Be.start()}const Be=new G8;Be.setAnimationLoop(Ts),typeof self<"u"&&Be.setContext(self),this.setAnimationLoop=function(fe){us=fe,St.setAnimationLoop(fe),fe===null?Be.stop():Be.start()},St.addEventListener("sessionstart",uo),St.addEventListener("sessionend",ia),this.render=function(fe,$e){if($e!==void 0&&$e.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(O===!0)return;if(fe.matrixWorldAutoUpdate===!0&&fe.updateMatrixWorld(),$e.parent===null&&$e.matrixWorldAutoUpdate===!0&&$e.updateMatrixWorld(),St.enabled===!0&&St.isPresenting===!0&&(St.cameraAutoUpdate===!0&&St.updateCamera($e),$e=St.getCamera()),fe.isScene===!0&&fe.onBeforeRender(B,fe,$e,D),b=rt.get(fe,T.length),b.init($e),T.push(b),ge.multiplyMatrices($e.projectionMatrix,$e.matrixWorldInverse),ce.setFromProjectionMatrix(ge),Re=this.localClippingEnabled,we=Je.init(this.clippingPlanes,Re),w=at.get(fe,I.length),w.init(),I.push(w),St.enabled===!0&&St.isPresenting===!0){const It=B.xr.getDepthSensingMesh();It!==null&&Ye(It,$e,-1/0,B.sortObjects)}Ye(fe,$e,0,B.sortObjects),w.finish(),B.sortObjects===!0&&w.sort(se,oe),re=St.enabled===!1||St.isPresenting===!1||St.hasDepthSensing()===!1,re&&gt.addToRenderList(w,fe),this.info.render.frame++,we===!0&&Je.beginShadows();const ut=b.state.shadowsArray;Rt.render(ut,fe,$e),we===!0&&Je.endShadows(),this.info.autoReset===!0&&this.info.reset();const ct=w.opaque,qe=w.transmissive;if(b.setupLights(),$e.isArrayCamera){const It=$e.cameras;if(qe.length>0)for(let Dt=0,an=It.length;Dt<an;Dt++){const qt=It[Dt];it(ct,qe,fe,qt)}re&&gt.render(fe);for(let Dt=0,an=It.length;Dt<an;Dt++){const qt=It[Dt];mt(w,fe,qt,qt.viewport)}}else qe.length>0&&it(ct,qe,fe,$e),re&&gt.render(fe),mt(w,fe,$e);D!==null&&U===0&&(ht.updateMultisampleRenderTarget(D),ht.updateRenderTargetMipmap(D)),fe.isScene===!0&&fe.onAfterRender(B,fe,$e),xn.resetDefaultState(),P=-1,k=null,T.pop(),T.length>0?(b=T[T.length-1],we===!0&&Je.setGlobalState(B.clippingPlanes,b.state.camera)):b=null,I.pop(),I.length>0?w=I[I.length-1]:w=null};function Ye(fe,$e,ut,ct){if(fe.visible===!1)return;if(fe.layers.test($e.layers)){if(fe.isGroup)ut=fe.renderOrder;else if(fe.isLOD)fe.autoUpdate===!0&&fe.update($e);else if(fe.isLight)b.pushLight(fe),fe.castShadow&&b.pushShadow(fe);else if(fe.isSprite){if(!fe.frustumCulled||ce.intersectsSprite(fe)){ct&&ze.setFromMatrixPosition(fe.matrixWorld).applyMatrix4(ge);const Dt=We.update(fe),an=fe.material;an.visible&&w.push(fe,Dt,an,ut,ze.z,null)}}else if((fe.isMesh||fe.isLine||fe.isPoints)&&(!fe.frustumCulled||ce.intersectsObject(fe))){const Dt=We.update(fe),an=fe.material;if(ct&&(fe.boundingSphere!==void 0?(fe.boundingSphere===null&&fe.computeBoundingSphere(),ze.copy(fe.boundingSphere.center)):(Dt.boundingSphere===null&&Dt.computeBoundingSphere(),ze.copy(Dt.boundingSphere.center)),ze.applyMatrix4(fe.matrixWorld).applyMatrix4(ge)),Array.isArray(an)){const qt=Dt.groups;for(let Sn=0,Ln=qt.length;Sn<Ln;Sn++){const Rn=qt[Sn],Zn=an[Rn.materialIndex];Zn&&Zn.visible&&w.push(fe,Dt,Zn,ut,ze.z,Rn)}}else an.visible&&w.push(fe,Dt,an,ut,ze.z,null)}}const It=fe.children;for(let Dt=0,an=It.length;Dt<an;Dt++)Ye(It[Dt],$e,ut,ct)}function mt(fe,$e,ut,ct){const qe=fe.opaque,It=fe.transmissive,Dt=fe.transparent;b.setupLightsView(ut),we===!0&&Je.setGlobalState(B.clippingPlanes,ut),ct&&me.viewport(N.copy(ct)),qe.length>0&&Ct(qe,$e,ut),It.length>0&&Ct(It,$e,ut),Dt.length>0&&Ct(Dt,$e,ut),me.buffers.depth.setTest(!0),me.buffers.depth.setMask(!0),me.buffers.color.setMask(!0),me.setPolygonOffset(!1)}function it(fe,$e,ut,ct){if((ut.isScene===!0?ut.overrideMaterial:null)!==null)return;b.state.transmissionRenderTarget[ct.id]===void 0&&(b.state.transmissionRenderTarget[ct.id]=new Mc(1,1,{generateMipmaps:!0,type:vt.has("EXT_color_buffer_half_float")||vt.has("EXT_color_buffer_float")?yA:Ga,minFilter:Ah,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Ii.workingColorSpace}));const It=b.state.transmissionRenderTarget[ct.id],Dt=ct.viewport||N;It.setSize(Dt.z*B.transmissionResolutionScale,Dt.w*B.transmissionResolutionScale);const an=B.getRenderTarget(),qt=B.getActiveCubeFace(),Sn=B.getActiveMipmapLevel();B.setRenderTarget(It),B.getClearColor(j),$=B.getClearAlpha(),$<1&&B.setClearColor(16777215,.5),B.clear(),re&&gt.render(ut);const Ln=B.toneMapping;B.toneMapping=Lu;const Rn=ct.viewport;if(ct.viewport!==void 0&&(ct.viewport=void 0),b.setupLightsView(ct),we===!0&&Je.setGlobalState(B.clippingPlanes,ct),Ct(fe,ut,ct),ht.updateMultisampleRenderTarget(It),ht.updateRenderTargetMipmap(It),vt.has("WEBGL_multisampled_render_to_texture")===!1){let Zn=!1;for(let li=0,Wi=$e.length;li<Wi;li++){const Ci=$e[li],Bi=Ci.object,kn=Ci.geometry,Gi=Ci.material,ci=Ci.group;if(Gi.side===Nl&&Bi.layers.test(ct.layers)){const ss=Gi.side;Gi.side=ro,Gi.needsUpdate=!0,bn(Bi,ut,ct,kn,Gi,ci),Gi.side=ss,Gi.needsUpdate=!0,Zn=!0}}Zn===!0&&(ht.updateMultisampleRenderTarget(It),ht.updateRenderTargetMipmap(It))}B.setRenderTarget(an,qt,Sn),B.setClearColor(j,$),Rn!==void 0&&(ct.viewport=Rn),B.toneMapping=Ln}function Ct(fe,$e,ut){const ct=$e.isScene===!0?$e.overrideMaterial:null;for(let qe=0,It=fe.length;qe<It;qe++){const Dt=fe[qe],an=Dt.object,qt=Dt.geometry,Sn=Dt.group;let Ln=Dt.material;Ln.allowOverride===!0&&ct!==null&&(Ln=ct),an.layers.test(ut.layers)&&bn(an,$e,ut,qt,Ln,Sn)}}function bn(fe,$e,ut,ct,qe,It){fe.onBeforeRender(B,$e,ut,ct,qe,It),fe.modelViewMatrix.multiplyMatrices(ut.matrixWorldInverse,fe.matrixWorld),fe.normalMatrix.getNormalMatrix(fe.modelViewMatrix),qe.onBeforeRender(B,$e,ut,ct,fe,It),qe.transparent===!0&&qe.side===Nl&&qe.forceSinglePass===!1?(qe.side=ro,qe.needsUpdate=!0,B.renderBufferDirect(ut,$e,ct,qe,fe,It),qe.side=Ph,qe.needsUpdate=!0,B.renderBufferDirect(ut,$e,ct,qe,fe,It),qe.side=Nl):B.renderBufferDirect(ut,$e,ct,qe,fe,It),fe.onAfterRender(B,$e,ut,ct,qe,It)}function In(fe,$e,ut){$e.isScene!==!0&&($e=He);const ct=et.get(fe),qe=b.state.lights,It=b.state.shadowsArray,Dt=qe.state.version,an=Ce.getParameters(fe,qe.state,It,$e,ut),qt=Ce.getProgramCacheKey(an);let Sn=ct.programs;ct.environment=fe.isMeshStandardMaterial?$e.environment:null,ct.fog=$e.fog,ct.envMap=(fe.isMeshStandardMaterial?xe:zt).get(fe.envMap||ct.environment),ct.envMapRotation=ct.environment!==null&&fe.envMap===null?$e.environmentRotation:fe.envMapRotation,Sn===void 0&&(fe.addEventListener("dispose",ln),Sn=new Map,ct.programs=Sn);let Ln=Sn.get(qt);if(Ln!==void 0){if(ct.currentProgram===Ln&&ct.lightsStateVersion===Dt)return qn(fe,an),Ln}else an.uniforms=Ce.getUniforms(fe),fe.onBeforeCompile(an,B),Ln=Ce.acquireProgram(an,qt),Sn.set(qt,Ln),ct.uniforms=an.uniforms;const Rn=ct.uniforms;return(!fe.isShaderMaterial&&!fe.isRawShaderMaterial||fe.clipping===!0)&&(Rn.clippingPlanes=Je.uniform),qn(fe,an),ct.needsLights=Wn(fe),ct.lightsStateVersion=Dt,ct.needsLights&&(Rn.ambientLightColor.value=qe.state.ambient,Rn.lightProbe.value=qe.state.probe,Rn.directionalLights.value=qe.state.directional,Rn.directionalLightShadows.value=qe.state.directionalShadow,Rn.spotLights.value=qe.state.spot,Rn.spotLightShadows.value=qe.state.spotShadow,Rn.rectAreaLights.value=qe.state.rectArea,Rn.ltc_1.value=qe.state.rectAreaLTC1,Rn.ltc_2.value=qe.state.rectAreaLTC2,Rn.pointLights.value=qe.state.point,Rn.pointLightShadows.value=qe.state.pointShadow,Rn.hemisphereLights.value=qe.state.hemi,Rn.directionalShadowMap.value=qe.state.directionalShadowMap,Rn.directionalShadowMatrix.value=qe.state.directionalShadowMatrix,Rn.spotShadowMap.value=qe.state.spotShadowMap,Rn.spotLightMatrix.value=qe.state.spotLightMatrix,Rn.spotLightMap.value=qe.state.spotLightMap,Rn.pointShadowMap.value=qe.state.pointShadowMap,Rn.pointShadowMatrix.value=qe.state.pointShadowMatrix),ct.currentProgram=Ln,ct.uniformsList=null,Ln}function rn(fe){if(fe.uniformsList===null){const $e=fe.currentProgram.getUniforms();fe.uniformsList=Rb.seqWithValue($e.seq,fe.uniforms)}return fe.uniformsList}function qn(fe,$e){const ut=et.get(fe);ut.outputColorSpace=$e.outputColorSpace,ut.batching=$e.batching,ut.batchingColor=$e.batchingColor,ut.instancing=$e.instancing,ut.instancingColor=$e.instancingColor,ut.instancingMorph=$e.instancingMorph,ut.skinning=$e.skinning,ut.morphTargets=$e.morphTargets,ut.morphNormals=$e.morphNormals,ut.morphColors=$e.morphColors,ut.morphTargetsCount=$e.morphTargetsCount,ut.numClippingPlanes=$e.numClippingPlanes,ut.numIntersection=$e.numClipIntersection,ut.vertexAlphas=$e.vertexAlphas,ut.vertexTangents=$e.vertexTangents,ut.toneMapping=$e.toneMapping}function Kn(fe,$e,ut,ct,qe){$e.isScene!==!0&&($e=He),ht.resetTextureUnits();const It=$e.fog,Dt=ct.isMeshStandardMaterial?$e.environment:null,an=D===null?B.outputColorSpace:D.isXRRenderTarget===!0?D.texture.colorSpace:Qa,qt=(ct.isMeshStandardMaterial?xe:zt).get(ct.envMap||Dt),Sn=ct.vertexColors===!0&&!!ut.attributes.color&&ut.attributes.color.itemSize===4,Ln=!!ut.attributes.tangent&&(!!ct.normalMap||ct.anisotropy>0),Rn=!!ut.morphAttributes.position,Zn=!!ut.morphAttributes.normal,li=!!ut.morphAttributes.color;let Wi=Lu;ct.toneMapped&&(D===null||D.isXRRenderTarget===!0)&&(Wi=B.toneMapping);const Ci=ut.morphAttributes.position||ut.morphAttributes.normal||ut.morphAttributes.color,Bi=Ci!==void 0?Ci.length:0,kn=et.get(ct),Gi=b.state.lights;if(we===!0&&(Re===!0||fe!==k)){const Xs=fe===k&&ct.id===P;Je.setState(ct,fe,Xs)}let ci=!1;ct.version===kn.__version?(kn.needsLights&&kn.lightsStateVersion!==Gi.state.version||kn.outputColorSpace!==an||qe.isBatchedMesh&&kn.batching===!1||!qe.isBatchedMesh&&kn.batching===!0||qe.isBatchedMesh&&kn.batchingColor===!0&&qe.colorTexture===null||qe.isBatchedMesh&&kn.batchingColor===!1&&qe.colorTexture!==null||qe.isInstancedMesh&&kn.instancing===!1||!qe.isInstancedMesh&&kn.instancing===!0||qe.isSkinnedMesh&&kn.skinning===!1||!qe.isSkinnedMesh&&kn.skinning===!0||qe.isInstancedMesh&&kn.instancingColor===!0&&qe.instanceColor===null||qe.isInstancedMesh&&kn.instancingColor===!1&&qe.instanceColor!==null||qe.isInstancedMesh&&kn.instancingMorph===!0&&qe.morphTexture===null||qe.isInstancedMesh&&kn.instancingMorph===!1&&qe.morphTexture!==null||kn.envMap!==qt||ct.fog===!0&&kn.fog!==It||kn.numClippingPlanes!==void 0&&(kn.numClippingPlanes!==Je.numPlanes||kn.numIntersection!==Je.numIntersection)||kn.vertexAlphas!==Sn||kn.vertexTangents!==Ln||kn.morphTargets!==Rn||kn.morphNormals!==Zn||kn.morphColors!==li||kn.toneMapping!==Wi||kn.morphTargetsCount!==Bi)&&(ci=!0):(ci=!0,kn.__version=ct.version);let ss=kn.currentProgram;ci===!0&&(ss=In(ct,$e,qe));let rs=!1,Ys=!1,sa=!1;const Qi=ss.getUniforms(),rr=kn.uniforms;if(me.useProgram(ss.program)&&(rs=!0,Ys=!0,sa=!0),ct.id!==P&&(P=ct.id,Ys=!0),rs||k!==fe){me.buffers.depth.getReversed()?(Ne.copy(fe.projectionMatrix),cfe(Ne),hfe(Ne),Qi.setValue(_e,"projectionMatrix",Ne)):Qi.setValue(_e,"projectionMatrix",fe.projectionMatrix),Qi.setValue(_e,"viewMatrix",fe.matrixWorldInverse);const js=Qi.map.cameraPosition;js!==void 0&&js.setValue(_e,tt.setFromMatrixPosition(fe.matrixWorld)),Ee.logarithmicDepthBuffer&&Qi.setValue(_e,"logDepthBufFC",2/(Math.log(fe.far+1)/Math.LN2)),(ct.isMeshPhongMaterial||ct.isMeshToonMaterial||ct.isMeshLambertMaterial||ct.isMeshBasicMaterial||ct.isMeshStandardMaterial||ct.isShaderMaterial)&&Qi.setValue(_e,"isOrthographic",fe.isOrthographicCamera===!0),k!==fe&&(k=fe,Ys=!0,sa=!0)}if(qe.isSkinnedMesh){Qi.setOptional(_e,qe,"bindMatrix"),Qi.setOptional(_e,qe,"bindMatrixInverse");const Xs=qe.skeleton;Xs&&(Xs.boneTexture===null&&Xs.computeBoneTexture(),Qi.setValue(_e,"boneTexture",Xs.boneTexture,ht))}qe.isBatchedMesh&&(Qi.setOptional(_e,qe,"batchingTexture"),Qi.setValue(_e,"batchingTexture",qe._matricesTexture,ht),Qi.setOptional(_e,qe,"batchingIdTexture"),Qi.setValue(_e,"batchingIdTexture",qe._indirectTexture,ht),Qi.setOptional(_e,qe,"batchingColorTexture"),qe._colorsTexture!==null&&Qi.setValue(_e,"batchingColorTexture",qe._colorsTexture,ht));const Qs=ut.morphAttributes;if((Qs.position!==void 0||Qs.normal!==void 0||Qs.color!==void 0)&&$t.update(qe,ut,ss),(Ys||kn.receiveShadow!==qe.receiveShadow)&&(kn.receiveShadow=qe.receiveShadow,Qi.setValue(_e,"receiveShadow",qe.receiveShadow)),ct.isMeshGouraudMaterial&&ct.envMap!==null&&(rr.envMap.value=qt,rr.flipEnvMap.value=qt.isCubeTexture&&qt.isRenderTargetTexture===!1?-1:1),ct.isMeshStandardMaterial&&ct.envMap===null&&$e.environment!==null&&(rr.envMapIntensity.value=$e.environmentIntensity),Ys&&(Qi.setValue(_e,"toneMappingExposure",B.toneMappingExposure),kn.needsLights&&$n(rr,sa),It&&ct.fog===!0&&De.refreshFogUniforms(rr,It),De.refreshMaterialUniforms(rr,ct,K,Z,b.state.transmissionRenderTarget[fe.id]),Rb.upload(_e,rn(kn),rr,ht)),ct.isShaderMaterial&&ct.uniformsNeedUpdate===!0&&(Rb.upload(_e,rn(kn),rr,ht),ct.uniformsNeedUpdate=!1),ct.isSpriteMaterial&&Qi.setValue(_e,"center",qe.center),Qi.setValue(_e,"modelViewMatrix",qe.modelViewMatrix),Qi.setValue(_e,"normalMatrix",qe.normalMatrix),Qi.setValue(_e,"modelMatrix",qe.matrixWorld),ct.isShaderMaterial||ct.isRawShaderMaterial){const Xs=ct.uniformsGroups;for(let js=0,mr=Xs.length;js<mr;js++){const Va=Xs[js];Ge.update(Va,ss),Ge.bind(Va,ss)}}return ss}function $n(fe,$e){fe.ambientLightColor.needsUpdate=$e,fe.lightProbe.needsUpdate=$e,fe.directionalLights.needsUpdate=$e,fe.directionalLightShadows.needsUpdate=$e,fe.pointLights.needsUpdate=$e,fe.pointLightShadows.needsUpdate=$e,fe.spotLights.needsUpdate=$e,fe.spotLightShadows.needsUpdate=$e,fe.rectAreaLights.needsUpdate=$e,fe.hemisphereLights.needsUpdate=$e}function Wn(fe){return fe.isMeshLambertMaterial||fe.isMeshToonMaterial||fe.isMeshPhongMaterial||fe.isMeshStandardMaterial||fe.isShadowMaterial||fe.isShaderMaterial&&fe.lights===!0}this.getActiveCubeFace=function(){return Q},this.getActiveMipmapLevel=function(){return U},this.getRenderTarget=function(){return D},this.setRenderTargetTextures=function(fe,$e,ut){const ct=et.get(fe);ct.__autoAllocateDepthBuffer=fe.resolveDepthBuffer===!1,ct.__autoAllocateDepthBuffer===!1&&(ct.__useRenderToTexture=!1),et.get(fe.texture).__webglTexture=$e,et.get(fe.depthTexture).__webglTexture=ct.__autoAllocateDepthBuffer?void 0:ut,ct.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(fe,$e){const ut=et.get(fe);ut.__webglFramebuffer=$e,ut.__useDefaultFramebuffer=$e===void 0};const Si=_e.createFramebuffer();this.setRenderTarget=function(fe,$e=0,ut=0){D=fe,Q=$e,U=ut;let ct=!0,qe=null,It=!1,Dt=!1;if(fe){const qt=et.get(fe);if(qt.__useDefaultFramebuffer!==void 0)me.bindFramebuffer(_e.FRAMEBUFFER,null),ct=!1;else if(qt.__webglFramebuffer===void 0)ht.setupRenderTarget(fe);else if(qt.__hasExternalTextures)ht.rebindTextures(fe,et.get(fe.texture).__webglTexture,et.get(fe.depthTexture).__webglTexture);else if(fe.depthBuffer){const Rn=fe.depthTexture;if(qt.__boundDepthTexture!==Rn){if(Rn!==null&&et.has(Rn)&&(fe.width!==Rn.image.width||fe.height!==Rn.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");ht.setupDepthRenderbuffer(fe)}}const Sn=fe.texture;(Sn.isData3DTexture||Sn.isDataArrayTexture||Sn.isCompressedArrayTexture)&&(Dt=!0);const Ln=et.get(fe).__webglFramebuffer;fe.isWebGLCubeRenderTarget?(Array.isArray(Ln[$e])?qe=Ln[$e][ut]:qe=Ln[$e],It=!0):fe.samples>0&&ht.useMultisampledRTT(fe)===!1?qe=et.get(fe).__webglMultisampledFramebuffer:Array.isArray(Ln)?qe=Ln[ut]:qe=Ln,N.copy(fe.viewport),W.copy(fe.scissor),X=fe.scissorTest}else N.copy(ue).multiplyScalar(K).floor(),W.copy(be).multiplyScalar(K).floor(),X=ye;if(ut!==0&&(qe=Si),me.bindFramebuffer(_e.FRAMEBUFFER,qe)&&ct&&me.drawBuffers(fe,qe),me.viewport(N),me.scissor(W),me.setScissorTest(X),It){const qt=et.get(fe.texture);_e.framebufferTexture2D(_e.FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_CUBE_MAP_POSITIVE_X+$e,qt.__webglTexture,ut)}else if(Dt){const qt=et.get(fe.texture),Sn=$e;_e.framebufferTextureLayer(_e.FRAMEBUFFER,_e.COLOR_ATTACHMENT0,qt.__webglTexture,ut,Sn)}else if(fe!==null&&ut!==0){const qt=et.get(fe.texture);_e.framebufferTexture2D(_e.FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_2D,qt.__webglTexture,ut)}P=-1},this.readRenderTargetPixels=function(fe,$e,ut,ct,qe,It,Dt,an=0){if(!(fe&&fe.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let qt=et.get(fe).__webglFramebuffer;if(fe.isWebGLCubeRenderTarget&&Dt!==void 0&&(qt=qt[Dt]),qt){me.bindFramebuffer(_e.FRAMEBUFFER,qt);try{const Sn=fe.textures[an],Ln=Sn.format,Rn=Sn.type;if(!Ee.textureFormatReadable(Ln)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Ee.textureTypeReadable(Rn)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}$e>=0&&$e<=fe.width-ct&&ut>=0&&ut<=fe.height-qe&&(fe.textures.length>1&&_e.readBuffer(_e.COLOR_ATTACHMENT0+an),_e.readPixels($e,ut,ct,qe,Gt.convert(Ln),Gt.convert(Rn),It))}finally{const Sn=D!==null?et.get(D).__webglFramebuffer:null;me.bindFramebuffer(_e.FRAMEBUFFER,Sn)}}},this.readRenderTargetPixelsAsync=async function(fe,$e,ut,ct,qe,It,Dt,an=0){if(!(fe&&fe.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let qt=et.get(fe).__webglFramebuffer;if(fe.isWebGLCubeRenderTarget&&Dt!==void 0&&(qt=qt[Dt]),qt)if($e>=0&&$e<=fe.width-ct&&ut>=0&&ut<=fe.height-qe){me.bindFramebuffer(_e.FRAMEBUFFER,qt);const Sn=fe.textures[an],Ln=Sn.format,Rn=Sn.type;if(!Ee.textureFormatReadable(Ln))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Ee.textureTypeReadable(Rn))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Zn=_e.createBuffer();_e.bindBuffer(_e.PIXEL_PACK_BUFFER,Zn),_e.bufferData(_e.PIXEL_PACK_BUFFER,It.byteLength,_e.STREAM_READ),fe.textures.length>1&&_e.readBuffer(_e.COLOR_ATTACHMENT0+an),_e.readPixels($e,ut,ct,qe,Gt.convert(Ln),Gt.convert(Rn),0);const li=D!==null?et.get(D).__webglFramebuffer:null;me.bindFramebuffer(_e.FRAMEBUFFER,li);const Wi=_e.fenceSync(_e.SYNC_GPU_COMMANDS_COMPLETE,0);return _e.flush(),await lfe(_e,Wi,4),_e.bindBuffer(_e.PIXEL_PACK_BUFFER,Zn),_e.getBufferSubData(_e.PIXEL_PACK_BUFFER,0,It),_e.deleteBuffer(Zn),_e.deleteSync(Wi),It}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(fe,$e=null,ut=0){const ct=Math.pow(2,-ut),qe=Math.floor(fe.image.width*ct),It=Math.floor(fe.image.height*ct),Dt=$e!==null?$e.x:0,an=$e!==null?$e.y:0;ht.setTexture2D(fe,0),_e.copyTexSubImage2D(_e.TEXTURE_2D,ut,0,0,Dt,an,qe,It),me.unbindTexture()};const sr=_e.createFramebuffer(),jn=_e.createFramebuffer();this.copyTextureToTexture=function(fe,$e,ut=null,ct=null,qe=0,It=null){It===null&&(qe!==0?(gm("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),It=qe,qe=0):It=0);let Dt,an,qt,Sn,Ln,Rn,Zn,li,Wi;const Ci=fe.isCompressedTexture?fe.mipmaps[It]:fe.image;if(ut!==null)Dt=ut.max.x-ut.min.x,an=ut.max.y-ut.min.y,qt=ut.isBox3?ut.max.z-ut.min.z:1,Sn=ut.min.x,Ln=ut.min.y,Rn=ut.isBox3?ut.min.z:0;else{const Qs=Math.pow(2,-qe);Dt=Math.floor(Ci.width*Qs),an=Math.floor(Ci.height*Qs),fe.isDataArrayTexture?qt=Ci.depth:fe.isData3DTexture?qt=Math.floor(Ci.depth*Qs):qt=1,Sn=0,Ln=0,Rn=0}ct!==null?(Zn=ct.x,li=ct.y,Wi=ct.z):(Zn=0,li=0,Wi=0);const Bi=Gt.convert($e.format),kn=Gt.convert($e.type);let Gi;$e.isData3DTexture?(ht.setTexture3D($e,0),Gi=_e.TEXTURE_3D):$e.isDataArrayTexture||$e.isCompressedArrayTexture?(ht.setTexture2DArray($e,0),Gi=_e.TEXTURE_2D_ARRAY):(ht.setTexture2D($e,0),Gi=_e.TEXTURE_2D),_e.pixelStorei(_e.UNPACK_FLIP_Y_WEBGL,$e.flipY),_e.pixelStorei(_e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$e.premultiplyAlpha),_e.pixelStorei(_e.UNPACK_ALIGNMENT,$e.unpackAlignment);const ci=_e.getParameter(_e.UNPACK_ROW_LENGTH),ss=_e.getParameter(_e.UNPACK_IMAGE_HEIGHT),rs=_e.getParameter(_e.UNPACK_SKIP_PIXELS),Ys=_e.getParameter(_e.UNPACK_SKIP_ROWS),sa=_e.getParameter(_e.UNPACK_SKIP_IMAGES);_e.pixelStorei(_e.UNPACK_ROW_LENGTH,Ci.width),_e.pixelStorei(_e.UNPACK_IMAGE_HEIGHT,Ci.height),_e.pixelStorei(_e.UNPACK_SKIP_PIXELS,Sn),_e.pixelStorei(_e.UNPACK_SKIP_ROWS,Ln),_e.pixelStorei(_e.UNPACK_SKIP_IMAGES,Rn);const Qi=fe.isDataArrayTexture||fe.isData3DTexture,rr=$e.isDataArrayTexture||$e.isData3DTexture;if(fe.isDepthTexture){const Qs=et.get(fe),Xs=et.get($e),js=et.get(Qs.__renderTarget),mr=et.get(Xs.__renderTarget);me.bindFramebuffer(_e.READ_FRAMEBUFFER,js.__webglFramebuffer),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,mr.__webglFramebuffer);for(let Va=0;Va<qt;Va++)Qi&&(_e.framebufferTextureLayer(_e.READ_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,et.get(fe).__webglTexture,qe,Rn+Va),_e.framebufferTextureLayer(_e.DRAW_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,et.get($e).__webglTexture,It,Wi+Va)),_e.blitFramebuffer(Sn,Ln,Dt,an,Zn,li,Dt,an,_e.DEPTH_BUFFER_BIT,_e.NEAREST);me.bindFramebuffer(_e.READ_FRAMEBUFFER,null),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,null)}else if(qe!==0||fe.isRenderTargetTexture||et.has(fe)){const Qs=et.get(fe),Xs=et.get($e);me.bindFramebuffer(_e.READ_FRAMEBUFFER,sr),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,jn);for(let js=0;js<qt;js++)Qi?_e.framebufferTextureLayer(_e.READ_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,Qs.__webglTexture,qe,Rn+js):_e.framebufferTexture2D(_e.READ_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_2D,Qs.__webglTexture,qe),rr?_e.framebufferTextureLayer(_e.DRAW_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,Xs.__webglTexture,It,Wi+js):_e.framebufferTexture2D(_e.DRAW_FRAMEBUFFER,_e.COLOR_ATTACHMENT0,_e.TEXTURE_2D,Xs.__webglTexture,It),qe!==0?_e.blitFramebuffer(Sn,Ln,Dt,an,Zn,li,Dt,an,_e.COLOR_BUFFER_BIT,_e.NEAREST):rr?_e.copyTexSubImage3D(Gi,It,Zn,li,Wi+js,Sn,Ln,Dt,an):_e.copyTexSubImage2D(Gi,It,Zn,li,Sn,Ln,Dt,an);me.bindFramebuffer(_e.READ_FRAMEBUFFER,null),me.bindFramebuffer(_e.DRAW_FRAMEBUFFER,null)}else rr?fe.isDataTexture||fe.isData3DTexture?_e.texSubImage3D(Gi,It,Zn,li,Wi,Dt,an,qt,Bi,kn,Ci.data):$e.isCompressedArrayTexture?_e.compressedTexSubImage3D(Gi,It,Zn,li,Wi,Dt,an,qt,Bi,Ci.data):_e.texSubImage3D(Gi,It,Zn,li,Wi,Dt,an,qt,Bi,kn,Ci):fe.isDataTexture?_e.texSubImage2D(_e.TEXTURE_2D,It,Zn,li,Dt,an,Bi,kn,Ci.data):fe.isCompressedTexture?_e.compressedTexSubImage2D(_e.TEXTURE_2D,It,Zn,li,Ci.width,Ci.height,Bi,Ci.data):_e.texSubImage2D(_e.TEXTURE_2D,It,Zn,li,Dt,an,Bi,kn,Ci);_e.pixelStorei(_e.UNPACK_ROW_LENGTH,ci),_e.pixelStorei(_e.UNPACK_IMAGE_HEIGHT,ss),_e.pixelStorei(_e.UNPACK_SKIP_PIXELS,rs),_e.pixelStorei(_e.UNPACK_SKIP_ROWS,Ys),_e.pixelStorei(_e.UNPACK_SKIP_IMAGES,sa),It===0&&$e.generateMipmaps&&_e.generateMipmap(Gi),me.unbindTexture()},this.copyTextureToTexture3D=function(fe,$e,ut=null,ct=null,qe=0){return gm('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(fe,$e,ut,ct,qe)},this.initRenderTarget=function(fe){et.get(fe).__webglFramebuffer===void 0&&ht.setupRenderTarget(fe)},this.initTexture=function(fe){fe.isCubeTexture?ht.setTextureCube(fe,0):fe.isData3DTexture?ht.setTexture3D(fe,0):fe.isDataArrayTexture||fe.isCompressedArrayTexture?ht.setTexture2DArray(fe,0):ht.setTexture2D(fe,0),me.unbindTexture()},this.resetState=function(){Q=0,U=0,D=null,me.reset(),xn.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return vh}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=Ii._getDrawingBufferColorSpace(e),t.unpackColorSpace=Ii._getUnpackColorSpace()}};function JP(s,e){if(e===kpe)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),s;if(e===SI||e===c8){let t=s.getIndex();if(t===null){const a=[],o=s.getAttribute("position");if(o!==void 0){for(let c=0;c<o.count;c++)a.push(c);s.setIndex(a),t=s.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),s}const n=t.count-2,i=[];if(e===SI)for(let a=1;a<=n;a++)i.push(t.getX(0)),i.push(t.getX(a)),i.push(t.getX(a+1));else for(let a=0;a<n;a++)a%2===0?(i.push(t.getX(a)),i.push(t.getX(a+1)),i.push(t.getX(a+2))):(i.push(t.getX(a+2)),i.push(t.getX(a+1)),i.push(t.getX(a)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=s.clone();return r.setIndex(i),r.clearGroups(),r}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),s}class hve extends _p{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new mve(t)}),this.register(function(t){return new gve(t)}),this.register(function(t){return new Eve(t)}),this.register(function(t){return new Sve(t)}),this.register(function(t){return new Ive(t)}),this.register(function(t){return new Ave(t)}),this.register(function(t){return new vve(t)}),this.register(function(t){return new yve(t)}),this.register(function(t){return new bve(t)}),this.register(function(t){return new fve(t)}),this.register(function(t){return new xve(t)}),this.register(function(t){return new _ve(t)}),this.register(function(t){return new wve(t)}),this.register(function(t){return new Cve(t)}),this.register(function(t){return new dve(t)}),this.register(function(t){return new Mve(t)}),this.register(function(t){return new Tve(t)})}load(e,t,n,i){const r=this;let a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){const h=d_.extractUrlBase(e);a=d_.resolveURL(h,this.path)}else a=d_.extractUrlBase(e);this.manager.itemStart(e);const o=function(h){i?i(h):console.error(h),r.manager.itemError(e),r.manager.itemEnd(e)},c=new PT(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(h){try{r.parse(h,a,function(d){t(d),r.manager.itemEnd(e)},o)}catch(d){o(d)}},n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let r;const a={},o={},c=new TextDecoder;if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.decode(new Uint8Array(e,0,4))===W8){try{a[vi.KHR_BINARY_GLTF]=new Bve(e)}catch(f){i&&i(f);return}r=JSON.parse(a[vi.KHR_BINARY_GLTF].content)}else r=JSON.parse(c.decode(e));else r=e;if(r.asset===void 0||r.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const h=new $ve(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});h.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d<this.pluginCallbacks.length;d++){const f=this.pluginCallbacks[d](h);f.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[f.name]=f,a[f.name]=!0}if(r.extensionsUsed)for(let d=0;d<r.extensionsUsed.length;++d){const f=r.extensionsUsed[d],m=r.extensionsRequired||[];switch(f){case vi.KHR_MATERIALS_UNLIT:a[f]=new pve;break;case vi.KHR_DRACO_MESH_COMPRESSION:a[f]=new Lve(r,this.dracoLoader);break;case vi.KHR_TEXTURE_TRANSFORM:a[f]=new Rve;break;case vi.KHR_MESH_QUANTIZATION:a[f]=new kve;break;default:m.indexOf(f)>=0&&o[f]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+f+'".')}}h.setExtensions(a),h.setPlugins(o),h.parse(n,i)}parseAsync(e,t){const n=this;return new Promise(function(i,r){n.parse(e,t,i,r)})}}function uve(){let s={};return{get:function(e){return s[e]},add:function(e,t){s[e]=t},remove:function(e){delete s[e]},removeAll:function(){s={}}}}const vi={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class dve{constructor(e){this.parser=e,this.name=vi.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){const r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let i=t.cache.get(n);if(i)return i;const r=t.json,c=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let h;const d=new Hn(16777215);c.color!==void 0&&d.setRGB(c.color[0],c.color[1],c.color[2],Qa);const f=c.range!==void 0?c.range:0;switch(c.type){case"directional":h=new U8(d),h.target.position.set(0,0,-1),h.add(h.target);break;case"point":h=new dme(d),h.distance=f;break;case"spot":h=new hme(d),h.distance=f,c.spot=c.spot||{},c.spot.innerConeAngle=c.spot.innerConeAngle!==void 0?c.spot.innerConeAngle:0,c.spot.outerConeAngle=c.spot.outerConeAngle!==void 0?c.spot.outerConeAngle:Math.PI/4,h.angle=c.spot.outerConeAngle,h.penumbra=1-c.spot.innerConeAngle/c.spot.outerConeAngle,h.target.position.set(0,0,-1),h.add(h.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+c.type)}return h.position.set(0,0,0),mh(h,c),c.intensity!==void 0&&(h.intensity=c.intensity),h.name=t.createUniqueName(c.name||"light_"+e),i=Promise.resolve(h),t.cache.add(n,i),i}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,r=n.json.nodes[e],o=(r.extensions&&r.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(c){return n._getNodeRef(t.cache,o,c)})}}class pve{constructor(){this.name=vi.KHR_MATERIALS_UNLIT}getMaterialType(){return jd}extendParams(e,t,n){const i=[];e.color=new Hn(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const a=r.baseColorFactor;e.color.setRGB(a[0],a[1],a[2],Qa),e.opacity=a[3]}r.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",r.baseColorTexture,xr))}return Promise.all(i)}}class fve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name].emissiveStrength;return r!==void 0&&(t.emissiveIntensity=r),Promise.resolve()}}class mve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];if(a.clearcoatFactor!==void 0&&(t.clearcoat=a.clearcoatFactor),a.clearcoatTexture!==void 0&&r.push(n.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),a.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),a.clearcoatRoughnessTexture!==void 0&&r.push(n.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),a.clearcoatNormalTexture!==void 0&&(r.push(n.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),a.clearcoatNormalTexture.scale!==void 0)){const o=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new di(o,o)}return Promise.all(r)}}class gve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_DISPERSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return t.dispersion=r.dispersion!==void 0?r.dispersion:0,Promise.resolve()}}class _ve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return a.iridescenceFactor!==void 0&&(t.iridescence=a.iridescenceFactor),a.iridescenceTexture!==void 0&&r.push(n.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),a.iridescenceIor!==void 0&&(t.iridescenceIOR=a.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),a.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),a.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),a.iridescenceThicknessTexture!==void 0&&r.push(n.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(r)}}class Ave{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new Hn(0,0,0),t.sheenRoughness=0,t.sheen=1;const a=i.extensions[this.name];if(a.sheenColorFactor!==void 0){const o=a.sheenColorFactor;t.sheenColor.setRGB(o[0],o[1],o[2],Qa)}return a.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=a.sheenRoughnessFactor),a.sheenColorTexture!==void 0&&r.push(n.assignTexture(t,"sheenColorMap",a.sheenColorTexture,xr)),a.sheenRoughnessTexture!==void 0&&r.push(n.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(r)}}class vve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return a.transmissionFactor!==void 0&&(t.transmission=a.transmissionFactor),a.transmissionTexture!==void 0&&r.push(n.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(r)}}class yve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];t.thickness=a.thicknessFactor!==void 0?a.thicknessFactor:0,a.thicknessTexture!==void 0&&r.push(n.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;const o=a.attenuationColor||[1,1,1];return t.attenuationColor=new Hn().setRGB(o[0],o[1],o[2],Qa),Promise.all(r)}}class bve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return t.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}}class xve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];t.specularIntensity=a.specularFactor!==void 0?a.specularFactor:1,a.specularTexture!==void 0&&r.push(n.assignTexture(t,"specularIntensityMap",a.specularTexture));const o=a.specularColorFactor||[1,1,1];return t.specularColor=new Hn().setRGB(o[0],o[1],o[2],Qa),a.specularColorTexture!==void 0&&r.push(n.assignTexture(t,"specularColorMap",a.specularColorTexture,xr)),Promise.all(r)}}class Cve{constructor(e){this.parser=e,this.name=vi.EXT_MATERIALS_BUMP}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return t.bumpScale=a.bumpFactor!==void 0?a.bumpFactor:1,a.bumpTexture!==void 0&&r.push(n.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(r)}}class wve{constructor(e){this.parser=e,this.name=vi.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:kc}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return a.anisotropyStrength!==void 0&&(t.anisotropy=a.anisotropyStrength),a.anisotropyRotation!==void 0&&(t.anisotropyRotation=a.anisotropyRotation),a.anisotropyTexture!==void 0&&r.push(n.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(r)}}class Eve{constructor(e){this.parser=e,this.name=vi.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,a)}}class Sve{constructor(e){this.parser=e,this.name=vi.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const a=r.extensions[t],o=i.images[a.source];let c=n.textureLoader;if(o.uri){const h=n.options.manager.getHandler(o.uri);h!==null&&(c=h)}return n.loadTextureImage(e,a.source,c)}}class Ive{constructor(e){this.parser=e,this.name=vi.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const a=r.extensions[t],o=i.images[a.source];let c=n.textureLoader;if(o.uri){const h=n.options.manager.getHandler(o.uri);h!==null&&(c=h)}return n.loadTextureImage(e,a.source,c)}}class Mve{constructor(e){this.name=vi.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const i=n.extensions[this.name],r=this.parser.getDependency("buffer",i.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(o){const c=i.byteOffset||0,h=i.byteLength||0,d=i.count,f=i.byteStride,m=new Uint8Array(o,c,h);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(d,f,m,i.mode,i.filter).then(function(_){return _.buffer}):a.ready.then(function(){const _=new ArrayBuffer(d*f);return a.decodeGltfBuffer(new Uint8Array(_),d,f,m,i.mode,i.filter),_})})}else return null}}class Tve{constructor(e){this.name=vi.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const i=t.meshes[n.mesh];for(const h of i.primitives)if(h.mode!==Ko.TRIANGLES&&h.mode!==Ko.TRIANGLE_STRIP&&h.mode!==Ko.TRIANGLE_FAN&&h.mode!==void 0)return null;const a=n.extensions[this.name].attributes,o=[],c={};for(const h in a)o.push(this.parser.getDependency("accessor",a[h]).then(d=>(c[h]=d,c[h])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(h=>{const d=h.pop(),f=d.isGroup?d.children:[d],m=h[0].count,_=[];for(const y of f){const x=new Nn,w=new Oe,b=new Ws,I=new Oe(1,1,1),T=new Ufe(y.geometry,y.material,m);for(let B=0;B<m;B++)c.TRANSLATION&&w.fromBufferAttribute(c.TRANSLATION,B),c.ROTATION&&b.fromBufferAttribute(c.ROTATION,B),c.SCALE&&I.fromBufferAttribute(c.SCALE,B),T.setMatrixAt(B,x.compose(w,b,I));for(const B in c)if(B==="_COLOR_0"){const O=c[B];T.instanceColor=new y1(O.array,O.itemSize,O.normalized)}else B!=="TRANSLATION"&&B!=="ROTATION"&&B!=="SCALE"&&y.geometry.setAttribute(B,c[B]);qs.prototype.copy.call(T,y),this.parser.assignFinalMaterial(T),_.push(T)}return d.isGroup?(d.clear(),d.add(..._),d):_[0]}))}}const W8="glTF",_0=12,KP={JSON:1313821514,BIN:5130562};class Bve{constructor(e){this.name=vi.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,_0),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==W8)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-_0,r=new DataView(e,_0);let a=0;for(;a<i;){const o=r.getUint32(a,!0);a+=4;const c=r.getUint32(a,!0);if(a+=4,c===KP.JSON){const h=new Uint8Array(e,_0+a,o);this.content=n.decode(h)}else if(c===KP.BIN){const h=_0+a;this.body=e.slice(h,h+o)}a+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Lve{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=vi.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,i=this.dracoLoader,r=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},c={},h={};for(const d in a){const f=RI[d]||d.toLowerCase();o[f]=a[d]}for(const d in e.attributes){const f=RI[d]||d.toLowerCase();if(a[d]!==void 0){const m=n.accessors[e.attributes[d]],_=Am[m.componentType];h[f]=_.name,c[f]=m.normalized===!0}}return t.getDependency("bufferView",r).then(function(d){return new Promise(function(f,m){i.decodeDracoFile(d,function(_){for(const y in _.attributes){const x=_.attributes[y],w=c[y];w!==void 0&&(x.normalized=w)}f(_)},o,h,Qa,m)})})}}class Rve{constructor(){this.name=vi.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class kve{constructor(){this.name=vi.KHR_MESH_QUANTIZATION}}class q8 extends bA{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i;for(let a=0;a!==i;a++)t[a]=n[r+a];return t}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=o*2,h=o*3,d=i-t,f=(n-t)/d,m=f*f,_=m*f,y=e*h,x=y-h,w=-2*_+3*m,b=_-m,I=1-w,T=b-m+f;for(let B=0;B!==o;B++){const O=a[x+B+o],Q=a[x+B+c]*d,U=a[y+B+o],D=a[y+B]*d;r[B]=I*O+T*Q+w*U+b*D}return r}}const Pve=new Ws;class Nve extends q8{interpolate_(e,t,n,i){const r=super.interpolate_(e,t,n,i);return Pve.fromArray(r).normalize().toArray(r),r}}const Ko={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Am={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},eN={9728:Er,9729:Lo,9984:t8,9985:wb,9986:V0,9987:Ah},tN={33071:Eu,33648:g1,10497:Rm},Qw={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},RI={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ru={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Dve={CUBICSPLINE:void 0,LINEAR:U_,STEP:O_},$w={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Fve(s){return s.DefaultMaterial===void 0&&(s.DefaultMaterial=new G_({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Ph})),s.DefaultMaterial}function Nd(s,e,t){for(const n in t.extensions)s[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function mh(s,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(s.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Ove(s,e,t){let n=!1,i=!1,r=!1;for(let h=0,d=e.length;h<d;h++){const f=e[h];if(f.POSITION!==void 0&&(n=!0),f.NORMAL!==void 0&&(i=!0),f.COLOR_0!==void 0&&(r=!0),n&&i&&r)break}if(!n&&!i&&!r)return Promise.resolve(s);const a=[],o=[],c=[];for(let h=0,d=e.length;h<d;h++){const f=e[h];if(n){const m=f.POSITION!==void 0?t.getDependency("accessor",f.POSITION):s.attributes.position;a.push(m)}if(i){const m=f.NORMAL!==void 0?t.getDependency("accessor",f.NORMAL):s.attributes.normal;o.push(m)}if(r){const m=f.COLOR_0!==void 0?t.getDependency("accessor",f.COLOR_0):s.attributes.color;c.push(m)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(c)]).then(function(h){const d=h[0],f=h[1],m=h[2];return n&&(s.morphAttributes.position=d),i&&(s.morphAttributes.normal=f),r&&(s.morphAttributes.color=m),s.morphTargetsRelative=!0,s})}function Uve(s,e){if(s.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)s.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(s.morphTargetInfluences.length===t.length){s.morphTargetDictionary={};for(let n=0,i=t.length;n<i;n++)s.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function zve(s){let e;const t=s.extensions&&s.extensions[vi.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+Hw(t.attributes):e=s.indices+":"+Hw(s.attributes)+":"+s.mode,s.targets!==void 0)for(let n=0,i=s.targets.length;n<i;n++)e+=":"+Hw(s.targets[n]);return e}function Hw(s){let e="";const t=Object.keys(s).sort();for(let n=0,i=t.length;n<i;n++)e+=t[n]+":"+s[t[n]]+";";return e}function kI(s){switch(s){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Gve(s){return s.search(/\.jpe?g($|\?)/i)>0||s.search(/^data\:image\/jpeg/)===0?"image/jpeg":s.search(/\.webp($|\?)/i)>0||s.search(/^data\:image\/webp/)===0?"image/webp":s.search(/\.ktx2($|\?)/i)>0||s.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Qve=new Nn;class $ve{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new uve,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,i=-1,r=!1,a=-1;if(typeof navigator<"u"){const o=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(o)===!0;const c=o.match(/Version\/(\d+)/);i=n&&c?parseInt(c[1],10):-1,r=o.indexOf("Firefox")>-1,a=r?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||n&&i<17||r&&a<98?this.textureLoader=new lme(this.options.manager):this.textureLoader=new gme(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new PT(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,i=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(a){const o={scene:a[0][i.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:i.asset,parser:n,userData:{}};return Nd(r,o,i),mh(o,i),Promise.all(n._invokeAll(function(c){return c.afterRoot&&c.afterRoot(o)})).then(function(){for(const c of o.scenes)c.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let i=0,r=t.length;i<r;i++){const a=t[i].joints;for(let o=0,c=a.length;o<c;o++)e[a[o]].isBone=!0}for(let i=0,r=e.length;i<r;i++){const a=e[i];a.mesh!==void 0&&(this._addNodeRef(this.meshCache,a.mesh),a.skin!==void 0&&(n[a.mesh].isSkinnedMesh=!0)),a.camera!==void 0&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const i=n.clone(),r=(a,o)=>{const c=this.associations.get(a);c!=null&&this.associations.set(o,c);for(const[h,d]of a.children.entries())r(d,o.children[h])};return r(n,i),i.name+="_instance_"+e.uses[t]++,i}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const i=e(t[n]);if(i)return i}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let i=0;i<t.length;i++){const r=e(t[i]);r&&n.push(r)}return n}getDependency(e,t){const n=e+":"+t;let i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this._invokeOne(function(r){return r.loadNode&&r.loadNode(t)});break;case"mesh":i=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:if(i=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!i)throw new Error("Unknown type: "+e);break}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(i.map(function(r,a){return n.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[vi.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(r,a){n.load(d_.resolveURL(t.uri,i.path),r,void 0,function(){a(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const i=t.byteLength||0,r=t.byteOffset||0;return n.slice(r,r+i)})}loadAccessor(e){const t=this,n=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){const a=Qw[i.type],o=Am[i.componentType],c=i.normalized===!0,h=new o(i.count*a);return Promise.resolve(new Jr(h,a,c))}const r=[];return i.bufferView!==void 0?r.push(this.getDependency("bufferView",i.bufferView)):r.push(null),i.sparse!==void 0&&(r.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(r).then(function(a){const o=a[0],c=Qw[i.type],h=Am[i.componentType],d=h.BYTES_PER_ELEMENT,f=d*c,m=i.byteOffset||0,_=i.bufferView!==void 0?n.bufferViews[i.bufferView].byteStride:void 0,y=i.normalized===!0;let x,w;if(_&&_!==f){const b=Math.floor(m/_),I="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+b+":"+i.count;let T=t.cache.get(I);T||(x=new h(o,b*_,i.count*_/d),T=new kfe(x,_/d),t.cache.add(I,T)),w=new Pfe(T,c,m%_/d,y)}else o===null?x=new h(i.count*c):x=new h(o,m,i.count*c),w=new Jr(x,c,y);if(i.sparse!==void 0){const b=Qw.SCALAR,I=Am[i.sparse.indices.componentType],T=i.sparse.indices.byteOffset||0,B=i.sparse.values.byteOffset||0,O=new I(a[1],T,i.sparse.count*b),Q=new h(a[2],B,i.sparse.count*c);o!==null&&(w=new Jr(w.array.slice(),w.itemSize,w.normalized)),w.normalized=!1;for(let U=0,D=O.length;U<D;U++){const P=O[U];if(w.setX(P,Q[U*c]),c>=2&&w.setY(P,Q[U*c+1]),c>=3&&w.setZ(P,Q[U*c+2]),c>=4&&w.setW(P,Q[U*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}w.normalized=y}return w})}loadTexture(e){const t=this.json,n=this.options,r=t.textures[e].source,a=t.images[r];let o=this.textureLoader;if(a.uri){const c=n.manager.getHandler(a.uri);c!==null&&(o=c)}return this.loadTextureImage(e,r,o)}loadTextureImage(e,t,n){const i=this,r=this.json,a=r.textures[e],o=r.images[t],c=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[c])return this.textureCache[c];const h=this.loadImageSource(t,n).then(function(d){d.flipY=!1,d.name=a.name||o.name||"",d.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(d.name=o.uri);const m=(r.samplers||{})[a.sampler]||{};return d.magFilter=eN[m.magFilter]||Lo,d.minFilter=eN[m.minFilter]||Ah,d.wrapS=tN[m.wrapS]||Rm,d.wrapT=tN[m.wrapT]||Rm,d.generateMipmaps=!d.isCompressedTexture&&d.minFilter!==Er&&d.minFilter!==Lo,i.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[c]=h,h}loadImageSource(e,t){const n=this,i=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(f=>f.clone());const a=i.images[e],o=self.URL||self.webkitURL;let c=a.uri||"",h=!1;if(a.bufferView!==void 0)c=n.getDependency("bufferView",a.bufferView).then(function(f){h=!0;const m=new Blob([f],{type:a.mimeType});return c=o.createObjectURL(m),c});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(c).then(function(f){return new Promise(function(m,_){let y=m;t.isImageBitmapLoader===!0&&(y=function(x){const w=new $a(x);w.needsUpdate=!0,m(w)}),t.load(d_.resolveURL(f,r.path),y,void 0,_)})}).then(function(f){return h===!0&&o.revokeObjectURL(c),mh(f,a),f.userData.mimeType=a.mimeType||Gve(a.uri),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),f});return this.sourceCache[e]=d,d}assignTexture(e,t,n,i){const r=this;return this.getDependency("texture",n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),r.extensions[vi.KHR_TEXTURE_TRANSFORM]){const o=n.extensions!==void 0?n.extensions[vi.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const c=r.associations.get(a);a=r.extensions[vi.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),r.associations.set(a,c)}}return i!==void 0&&(a.colorSpace=i),e[t]=a,a})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const i=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+n.uuid;let c=this.cache.get(o);c||(c=new P8,Gl.prototype.copy.call(c,n),c.color.copy(n.color),c.map=n.map,c.sizeAttenuation=!1,this.cache.add(o,c)),n=c}else if(e.isLine){const o="LineBasicMaterial:"+n.uuid;let c=this.cache.get(o);c||(c=new k8,Gl.prototype.copy.call(c,n),c.color.copy(n.color),c.map=n.map,this.cache.add(o,c)),n=c}if(i||r||a){let o="ClonedMaterial:"+n.uuid+":";i&&(o+="derivative-tangents:"),r&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let c=this.cache.get(o);c||(c=n.clone(),r&&(c.vertexColors=!0),a&&(c.flatShading=!0),i&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(o,c),this.associations.set(c,this.associations.get(n))),n=c}e.material=n}getMaterialType(){return G_}loadMaterial(e){const t=this,n=this.json,i=this.extensions,r=n.materials[e];let a;const o={},c=r.extensions||{},h=[];if(c[vi.KHR_MATERIALS_UNLIT]){const f=i[vi.KHR_MATERIALS_UNLIT];a=f.getMaterialType(),h.push(f.extendParams(o,r,t))}else{const f=r.pbrMetallicRoughness||{};if(o.color=new Hn(1,1,1),o.opacity=1,Array.isArray(f.baseColorFactor)){const m=f.baseColorFactor;o.color.setRGB(m[0],m[1],m[2],Qa),o.opacity=m[3]}f.baseColorTexture!==void 0&&h.push(t.assignTexture(o,"map",f.baseColorTexture,xr)),o.metalness=f.metallicFactor!==void 0?f.metallicFactor:1,o.roughness=f.roughnessFactor!==void 0?f.roughnessFactor:1,f.metallicRoughnessTexture!==void 0&&(h.push(t.assignTexture(o,"metalnessMap",f.metallicRoughnessTexture)),h.push(t.assignTexture(o,"roughnessMap",f.metallicRoughnessTexture))),a=this._invokeOne(function(m){return m.getMaterialType&&m.getMaterialType(e)}),h.push(Promise.all(this._invokeAll(function(m){return m.extendMaterialParams&&m.extendMaterialParams(e,o)})))}r.doubleSided===!0&&(o.side=Nl);const d=r.alphaMode||$w.OPAQUE;if(d===$w.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,d===$w.MASK&&(o.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&a!==jd&&(h.push(t.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new di(1,1),r.normalTexture.scale!==void 0)){const f=r.normalTexture.scale;o.normalScale.set(f,f)}if(r.occlusionTexture!==void 0&&a!==jd&&(h.push(t.assignTexture(o,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&a!==jd){const f=r.emissiveFactor;o.emissive=new Hn().setRGB(f[0],f[1],f[2],Qa)}return r.emissiveTexture!==void 0&&a!==jd&&h.push(t.assignTexture(o,"emissiveMap",r.emissiveTexture,xr)),Promise.all(h).then(function(){const f=new a(o);return r.name&&(f.name=r.name),mh(f,r),t.associations.set(f,{materials:e}),r.extensions&&Nd(i,f,r),f})}createUniqueName(e){const t=Ds.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,i=this.primitiveCache;function r(o){return n[vi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(c){return nN(c,o,t)})}const a=[];for(let o=0,c=e.length;o<c;o++){const h=e[o],d=zve(h),f=i[d];if(f)a.push(f.promise);else{let m;h.extensions&&h.extensions[vi.KHR_DRACO_MESH_COMPRESSION]?m=r(h):m=nN(new Xl,h,t),i[d]={primitive:h,promise:m},a.push(m)}}return Promise.all(a)}loadMesh(e){const t=this,n=this.json,i=this.extensions,r=n.meshes[e],a=r.primitives,o=[];for(let c=0,h=a.length;c<h;c++){const d=a[c].material===void 0?Fve(this.cache):this.getDependency("material",a[c].material);o.push(d)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(c){const h=c.slice(0,c.length-1),d=c[c.length-1],f=[];for(let _=0,y=d.length;_<y;_++){const x=d[_],w=a[_];let b;const I=h[_];if(w.mode===Ko.TRIANGLES||w.mode===Ko.TRIANGLE_STRIP||w.mode===Ko.TRIANGLE_FAN||w.mode===void 0)b=r.isSkinnedMesh===!0?new Dfe(x,I):new Gr(x,I),b.isSkinnedMesh===!0&&b.normalizeSkinWeights(),w.mode===Ko.TRIANGLE_STRIP?b.geometry=JP(b.geometry,c8):w.mode===Ko.TRIANGLE_FAN&&(b.geometry=JP(b.geometry,SI));else if(w.mode===Ko.LINES)b=new $fe(x,I);else if(w.mode===Ko.LINE_STRIP)b=new LT(x,I);else if(w.mode===Ko.LINE_LOOP)b=new Hfe(x,I);else if(w.mode===Ko.POINTS)b=new Vfe(x,I);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+w.mode);Object.keys(b.geometry.morphAttributes).length>0&&Uve(b,r),b.name=t.createUniqueName(r.name||"mesh_"+e),mh(b,r),w.extensions&&Nd(i,b,w),t.assignFinalMaterial(b),f.push(b)}for(let _=0,y=f.length;_<y;_++)t.associations.set(f[_],{meshes:e,primitives:_});if(f.length===1)return r.extensions&&Nd(i,f[0],r),f[0];const m=new xc;r.extensions&&Nd(i,m,r),t.associations.set(m,{meshes:e});for(let _=0,y=f.length;_<y;_++)m.add(f[_]);return m})}loadCamera(e){let t;const n=this.json.cameras[e],i=n[n.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new Xr(zd.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):n.type==="orthographic"&&(t=new ix(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),mh(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let i=0,r=t.joints.length;i<r;i++)n.push(this._loadNodeShallow(t.joints[i]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(i){const r=i.pop(),a=i,o=[],c=[];for(let h=0,d=a.length;h<d;h++){const f=a[h];if(f){o.push(f);const m=new Nn;r!==null&&m.fromArray(r.array,h*16),c.push(m)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[h])}return new TT(o,c)})}loadAnimation(e){const t=this.json,n=this,i=t.animations[e],r=i.name?i.name:"animation_"+e,a=[],o=[],c=[],h=[],d=[];for(let f=0,m=i.channels.length;f<m;f++){const _=i.channels[f],y=i.samplers[_.sampler],x=_.target,w=x.node,b=i.parameters!==void 0?i.parameters[y.input]:y.input,I=i.parameters!==void 0?i.parameters[y.output]:y.output;x.node!==void 0&&(a.push(this.getDependency("node",w)),o.push(this.getDependency("accessor",b)),c.push(this.getDependency("accessor",I)),h.push(y),d.push(x))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(c),Promise.all(h),Promise.all(d)]).then(function(f){const m=f[0],_=f[1],y=f[2],x=f[3],w=f[4],b=[];for(let I=0,T=m.length;I<T;I++){const B=m[I],O=_[I],Q=y[I],U=x[I],D=w[I];if(B===void 0)continue;B.updateMatrix&&B.updateMatrix();const P=n._createAnimationTracks(B,O,Q,U,D);if(P)for(let k=0;k<P.length;k++)b.push(P[k])}return new tme(r,void 0,b)})}createNodeMesh(e){const t=this.json,n=this,i=t.nodes[e];return i.mesh===void 0?null:n.getDependency("mesh",i.mesh).then(function(r){const a=n._getNodeRef(n.meshCache,i.mesh,r);return i.weights!==void 0&&a.traverse(function(o){if(o.isMesh)for(let c=0,h=i.weights.length;c<h;c++)o.morphTargetInfluences[c]=i.weights[c]}),a})}loadNode(e){const t=this.json,n=this,i=t.nodes[e],r=n._loadNodeShallow(e),a=[],o=i.children||[];for(let h=0,d=o.length;h<d;h++)a.push(n.getDependency("node",o[h]));const c=i.skin===void 0?Promise.resolve(null):n.getDependency("skin",i.skin);return Promise.all([r,Promise.all(a),c]).then(function(h){const d=h[0],f=h[1],m=h[2];m!==null&&d.traverse(function(_){_.isSkinnedMesh&&_.bind(m,Qve)});for(let _=0,y=f.length;_<y;_++)d.add(f[_]);return d})}_loadNodeShallow(e){const t=this.json,n=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const r=t.nodes[e],a=r.name?i.createUniqueName(r.name):"",o=[],c=i._invokeOne(function(h){return h.createNodeMesh&&h.createNodeMesh(e)});return c&&o.push(c),r.camera!==void 0&&o.push(i.getDependency("camera",r.camera).then(function(h){return i._getNodeRef(i.cameraCache,r.camera,h)})),i._invokeAll(function(h){return h.createNodeAttachment&&h.createNodeAttachment(e)}).forEach(function(h){o.push(h)}),this.nodeCache[e]=Promise.all(o).then(function(h){let d;if(r.isBone===!0?d=new R8:h.length>1?d=new xc:h.length===1?d=h[0]:d=new qs,d!==h[0])for(let f=0,m=h.length;f<m;f++)d.add(h[f]);if(r.name&&(d.userData.name=r.name,d.name=a),mh(d,r),r.extensions&&Nd(n,d,r),r.matrix!==void 0){const f=new Nn;f.fromArray(r.matrix),d.applyMatrix4(f)}else r.translation!==void 0&&d.position.fromArray(r.translation),r.rotation!==void 0&&d.quaternion.fromArray(r.rotation),r.scale!==void 0&&d.scale.fromArray(r.scale);if(!i.associations.has(d))i.associations.set(d,{});else if(r.mesh!==void 0&&i.meshCache.refs[r.mesh]>1){const f=i.associations.get(d);i.associations.set(d,{...f})}return i.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],i=this,r=new xc;n.name&&(r.name=i.createUniqueName(n.name)),mh(r,n),n.extensions&&Nd(t,r,n);const a=n.nodes||[],o=[];for(let c=0,h=a.length;c<h;c++)o.push(i.getDependency("node",a[c]));return Promise.all(o).then(function(c){for(let d=0,f=c.length;d<f;d++)r.add(c[d]);const h=d=>{const f=new Map;for(const[m,_]of i.associations)(m instanceof Gl||m instanceof $a)&&f.set(m,_);return d.traverse(m=>{const _=i.associations.get(m);_!=null&&f.set(m,_)}),f};return i.associations=h(r),r})}_createAnimationTracks(e,t,n,i,r){const a=[],o=e.name?e.name:e.uuid,c=[];ru[r.path]===ru.weights?e.traverse(function(m){m.morphTargetInfluences&&c.push(m.name?m.name:m.uuid)}):c.push(o);let h;switch(ru[r.path]){case ru.weights:h=Nm;break;case ru.rotation:h=Dm;break;case ru.translation:case ru.scale:h=Fm;break;default:n.itemSize===1?h=Nm:h=Fm;break}const d=i.interpolation!==void 0?Dve[i.interpolation]:U_,f=this._getArrayFromAccessor(n);for(let m=0,_=c.length;m<_;m++){const y=new h(c[m]+"."+ru[r.path],t.array,f,d);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(y),a.push(y)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const n=kI(t.constructor),i=new Float32Array(t.length);for(let r=0,a=t.length;r<a;r++)i[r]=t[r]*n;t=i}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(n){const i=this instanceof Dm?Nve:q8;return new i(this.times,this.values,this.getValueSize()/3,n)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Hve(s,e,t){const n=e.attributes,i=new Po;if(n.POSITION!==void 0){const o=t.json.accessors[n.POSITION],c=o.min,h=o.max;if(c!==void 0&&h!==void 0){if(i.set(new Oe(c[0],c[1],c[2]),new Oe(h[0],h[1],h[2])),o.normalized){const d=kI(Am[o.componentType]);i.min.multiplyScalar(d),i.max.multiplyScalar(d)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=e.targets;if(r!==void 0){const o=new Oe,c=new Oe;for(let h=0,d=r.length;h<d;h++){const f=r[h];if(f.POSITION!==void 0){const m=t.json.accessors[f.POSITION],_=m.min,y=m.max;if(_!==void 0&&y!==void 0){if(c.setX(Math.max(Math.abs(_[0]),Math.abs(y[0]))),c.setY(Math.max(Math.abs(_[1]),Math.abs(y[1]))),c.setZ(Math.max(Math.abs(_[2]),Math.abs(y[2]))),m.normalized){const x=kI(Am[m.componentType]);c.multiplyScalar(x)}o.max(c)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(o)}s.boundingBox=i;const a=new Rc;i.getCenter(a.center),a.radius=i.min.distanceTo(i.max)/2,s.boundingSphere=a}function nN(s,e,t){const n=e.attributes,i=[];function r(a,o){return t.getDependency("accessor",a).then(function(c){s.setAttribute(o,c)})}for(const a in n){const o=RI[a]||a.toLowerCase();o in s.attributes||i.push(r(n[a],o))}if(e.indices!==void 0&&!s.index){const a=t.getDependency("accessor",e.indices).then(function(o){s.setIndex(o)});i.push(a)}return Ii.workingColorSpace!==Qa&&"COLOR_0"in n&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Ii.workingColorSpace}" not supported.`),mh(s,e),Hve(s,e,t),Promise.all(i).then(function(){return e.targets!==void 0?Ove(s,e.targets,t):s})}var $d=63710088e-1,p_=2*Math.PI*$d,Yr=Math.PI/180,mf=1024e3/p_,Vve=512,Wve=class{static clamp(s,e,t){return Math.min(t,Math.max(e,s))}static makePerspectiveMatrix(s,e,t,n){let i=1/Math.tan(s/2),r=1/(t-n);return[i/e,0,0,0,0,i,0,0,0,0,(n+t)*r,-1,0,0,2*n*t*r,0]}static mercatorXFromLng(s){return(180+s)/360}static mercatorYFromLat(s){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+s*Math.PI/360)))/360}static getViewInfo(s,e,t){let n=s.fov*Yr,i=s.pitch*Yr,r=null;if(Array.isArray(e)&&(r={lng:e[0],lat:e[1],alt:e[2]||0}),typeof e=="string"){let f=e.split(",");r={lng:+f[0],lat:+f[1],alt:+f[2]||0}}let a=Math.max(t.x,t.y,t.z)/(2*Math.tan(n/2))*Math.cos(i)+r.alt,o=Math.abs(Math.cos(i)*s.cameraToCenterDistance),c=p_*Math.abs(Math.cos(r.lat*Yr)),h=o/a*c,d=Math.round(Math.log2(h/s.tileSize));return{center:[r.lng,r.lat],cameraHeight:a,zoom:d}}static getHeightByZoom(s,e,t,n){let i=Math.abs(Math.cos(n*Yr)*s.cameraToCenterDistance),r=p_*Math.abs(Math.cos(t*Yr)),a=Math.pow(2,e)*s.tileSize;return i*r/a}static getZoomByHeight(s,e,t,n){let i=Math.abs(Math.cos(n*Yr)*s.cameraToCenterDistance),r=p_*Math.abs(Math.cos(t*Yr)),a=i/e*r;return Math.round(Math.log2(a/s.tileSize))}},Zd=Wve,iN=new Nn,sN=new Nn,rN=85.051129,qve=class{constructor(s,e,t){Vi(this,"_map"),Vi(this,"_world"),Vi(this,"_camera"),Vi(this,"_translateCenter"),Vi(this,"_worldSizeRatio"),this._map=s,this._world=e,this._camera=t,this._translateCenter=new Nn().makeTranslation(1024e3/2,-1024e3/2,0),this._worldSizeRatio=Vve/1024e3,this._map.on("move",()=>{this.syncCamera(!1)}),this._map.on("resize",()=>{this.syncCamera(!0)})}syncCamera(s){let e=this._map.transform,t=e.pitch*Yr,n=e.bearing*Yr;if(s){let f=e.fov*Yr,m=e.centerOffset||new Oe;this._camera.aspect=e.width/e.height,iN.elements=Zd.makePerspectiveMatrix(f,this._camera.aspect,e.height/50,e.farZ),this._camera.projectionMatrix=iN,this._camera.projectionMatrix.elements[8]=-m.x*2/e.width,this._camera.projectionMatrix.elements[9]=m.y*2/e.height}sN.makeTranslation(0,0,e.cameraToCenterDistance);let i=new Nn().premultiply(sN).premultiply(new Nn().makeRotationX(t)).premultiply(new Nn().makeRotationZ(-n));e.elevation&&(i.elements[14]=e.cameraToCenterDistance*Math.cos(t)),this._camera.matrixWorld.copy(i);let r=e.scale*this._worldSizeRatio,a=new Nn().makeScale(r,r,r),o=e.x,c=e.y;if(!o||!c){let f=e.center,m=Zd.clamp(f.lat,-rN,rN);o=Zd.mercatorXFromLng(f.lng)*e.worldSize,c=Zd.mercatorYFromLat(m)*e.worldSize}let h=new Nn().makeTranslation(-o,c,0),d=new Nn().makeRotationZ(Math.PI);this._world.matrix=new Nn().premultiply(d).premultiply(this._translateCenter).premultiply(a).premultiply(h)}},Yve=qve,Xve=class{constructor(s,e){Vi(this,"_id"),Vi(this,"_mapScene"),Vi(this,"_cameraSync"),this._id=s,this._mapScene=e,this._cameraSync=new Yve(this._mapScene.map,this._mapScene.world,this._mapScene.camera)}get id(){return this._id}get type(){return"custom"}get renderingMode(){return"3d"}onAdd(){this._cameraSync.syncCamera(!0)}render(){this._mapScene.render()}onRemove(){this._cameraSync=null,this._mapScene=null}},jve=Xve,Zve=class{static projectedMercatorUnitsPerMeter(){return this.projectedUnitsPerMeter(0)}static projectedUnitsPerMeter(s){return Math.abs(1024e3/Math.cos(Yr*s)/p_)}static lngLatToVector3(s,e,t){let n=[0,0,0];return Array.isArray(s)?(n=[-$d*Yr*s[0]*mf,-$d*Math.log(Math.tan(Math.PI*.25+.5*Yr*s[1]))*mf],s[2]?n.push(s[2]*this.projectedUnitsPerMeter(s[1])):n.push(0)):(n=[-$d*Yr*s*mf,-$d*Math.log(Math.tan(Math.PI*.25+.5*Yr*(e||0)))*mf],t?n.push(t*this.projectedUnitsPerMeter(e||0)):n.push(0)),new Oe(n[0],n[1],n[2])}static vector3ToLngLat(s){let e=[0,0,0];return s&&(e[0]=-s.x/($d*Yr*mf),e[1]=2*(Math.atan(Math.exp(s.y/(mf*-$d)))-Math.PI/4)/Yr,e[2]=s.z/this.projectedUnitsPerMeter(e[1])),e}},Xf=Zve,Jve={scene:null,camera:null,renderer:null,renderLoop:null,preserveDrawingBuffer:!1},Kve=class{constructor(s,e={}){if(Vi(this,"_map"),Vi(this,"_options"),Vi(this,"_canvas"),Vi(this,"_scene"),Vi(this,"_camera"),Vi(this,"_renderer"),Vi(this,"_lights"),Vi(this,"_world"),Vi(this,"_event"),!s)throw"missing map";this._map=s,this._options={...Jve,...e},this._canvas=s.getCanvas(),this._scene=this._options.scene||new Rfe,this._camera=this._options.camera||new Xr(this._map.transform.fov,this._map.transform.width/this._map.transform.height,.001,1e21),this._camera.matrixAutoUpdate=!1,this._renderer=this._options.renderer||new cve({alpha:!0,antialias:!0,preserveDrawingBuffer:this._options.preserveDrawingBuffer,canvas:this._canvas,context:this._canvas.getContext("webgl2")}),this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.setSize(this._canvas.clientWidth,this._canvas.clientHeight),this._renderer.autoClear=!1,this._lights=new xc,this._lights.name="lights",this._scene.add(this._lights),this._world=new xc,this._world.name="world",this._world.userData={isWorld:!0,name:"world"},this._world.position.set(1024e3/2,1024e3/2,0),this._world.matrixAutoUpdate=!1,this._scene.add(this._world),this._map.on("render",this._onMapRender.bind(this)),this._event=new gp}get map(){return this._map}get canvas(){return this._canvas}get camera(){return this._camera}get scene(){return this._scene}get lights(){return this._lights}get world(){return this._world}get renderer(){return this._renderer}_onMapRender(){this._map.getLayer("map_scene_layer")||this._map.addLayer(new jve("map_scene_layer",this))}render(){if(this._options.renderLoop)this._options.renderLoop(this);else{let s={center:this._map.getCenter(),scene:this._scene,camera:this._camera,renderer:this._renderer};this._event.dispatchEvent({type:"preReset",frameState:s}),this.renderer.resetState(),this._event.dispatchEvent({type:"postReset",frameState:s}),this._event.dispatchEvent({type:"preRender",frameState:s}),this.renderer.render(this._scene,this._camera),this._event.dispatchEvent({type:"postRender",frameState:s})}return this}addLight(s){return this._lights.add(s.delegate||s),this}removeLight(s){return this._lights.remove(s.delegate||s),this}addObject(s){let e="delegate"in s?s.delegate:s;return this._world.add(e),this}removeObject(s){let e="delegate"in s?s.delegate:s;return this._world.remove(e),e.traverse(t=>{t.geometry&&t.geometry.dispose(),t.material&&(Array.isArray(t.material)?t.material.forEach(n=>n.dispose()):t.material.dispose()),t.texture&&t.texture.dispose()}),this}getViewPosition(){let s=this._map.transform,e=s.center;return{position:[e.lng,e.lat,Zd.getHeightByZoom(s,s.zoom,e.lat,s.pitch)],heading:s.bearing,pitch:s.pitch}}flyTo(s,e,t){if(s&&s.position){t&&this._map.once("moveend",t);let n=s.size;n||(n=new Oe,new Po().setFromObject(s.delegate||s,!0).getSize(n));let i=Zd.getViewInfo(this._map.transform,Xf.vector3ToLngLat(s.position),n);this._map.flyTo({center:i.center,zoom:i.zoom,duration:(e||3)*1e3})}return this}zoomTo(s,e){return this.flyTo(s,0,e)}flyToPosition(s,e=[0,0,0],t,n=3){return t&&this._map.once("moveend",t),this._map.flyTo({center:[s[0],s[1]],zoom:Zd.getZoomByHeight(this._map.transform,s[2],s[1],e[1]||0),bearing:e[0],pitch:e[1],duration:n*1e3}),this}zoomToPosition(s,e=[0,0,0],t){return this.flyToPosition(s,e,t,0)}on(s,e){return this._event.addEventListener(s,e),this}off(s,e){return this._event.removeEventListener(s,e),this}},eye=class{static createRTCGroup(s,e,t){let n=new xc;if(n.name="rtc",n.position.copy(Xf.lngLatToVector3(s)),e?(n.rotateX(e[0]||0),n.rotateY(e[1]||0),n.rotateZ(e[2]||0)):(n.rotateX(Math.PI/2),n.rotateY(Math.PI)),t)n.scale.set(t[0]||1,t[1]||1,t[2]||1);else{let i=1;Array.isArray(s)&&(i=Xf.projectedUnitsPerMeter(s[1])),n.scale.set(i,i,i)}return n}static createMercatorRTCGroup(s,e,t){let n=this.createRTCGroup(s,e,t);if(!t){let i=1,r=Xf.projectedMercatorUnitsPerMeter();Array.isArray(s)&&(i=Xf.projectedUnitsPerMeter(s[1])),n.scale.set(r,r,i)}return n}static createShadowGround(s,e,t){let n=new RT(e||100,t||100),i=new Wfe({opacity:.5,transparent:!0}),r=new Gr(n,i);return r.position.copy(Xf.lngLatToVector3(s)),r.receiveShadow=!0,r.name="shadow-ground",r}},aN=eye;const tye=new ix(-1,1,1,-1,0,1);class nye extends Xl{constructor(){super(),this.setAttribute("position",new Ql([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Ql([0,2,0,0,2,0],2))}}const iye=new nye;class Y8{constructor(e){this._mesh=new Gr(iye,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,tye)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}var Or=Uint8Array,f_=Uint16Array,sye=Int32Array,X8=new Or([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),j8=new Or([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rye=new Or([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Z8=function(s,e){for(var t=new f_(31),n=0;n<31;++n)t[n]=e+=1<<s[n-1];for(var i=new sye(t[30]),n=1;n<30;++n)for(var r=t[n];r<t[n+1];++r)i[r]=r-t[n]<<5|n;return{b:t,r:i}},J8=Z8(X8,2),K8=J8.b,aye=J8.r;K8[28]=258,aye[258]=28;var oye=Z8(j8,0),lye=oye.b,ez=new f_(32768);for(var ys=0;ys<32768;++ys){var au=(ys&43690)>>1|(ys&21845)<<1;au=(au&52428)>>2|(au&13107)<<2,au=(au&61680)>>4|(au&3855)<<4,ez[ys]=((au&65280)>>8|(au&255)<<8)>>1}var m_=function(s,e,t){for(var n=s.length,i=0,r=new f_(e);i<n;++i)s[i]&&++r[s[i]-1];var a=new f_(e);for(i=1;i<e;++i)a[i]=a[i-1]+r[i-1]<<1;var o;{o=new f_(1<<e);var c=15-e;for(i=0;i<n;++i)if(s[i])for(var h=i<<4|s[i],d=e-s[i],f=a[s[i]-1]++<<d,m=f|(1<<d)-1;f<=m;++f)o[ez[f]>>c]=h}return o},xA=new Or(288);for(var ys=0;ys<144;++ys)xA[ys]=8;for(var ys=144;ys<256;++ys)xA[ys]=9;for(var ys=256;ys<280;++ys)xA[ys]=7;for(var ys=280;ys<288;++ys)xA[ys]=8;var tz=new Or(32);for(var ys=0;ys<32;++ys)tz[ys]=5;var cye=m_(xA,9),hye=m_(tz,5),Vw=function(s){for(var e=s[0],t=1;t<s.length;++t)s[t]>e&&(e=s[t]);return e},Ml=function(s,e,t){var n=e/8|0;return(s[n]|s[n+1]<<8)>>(e&7)&t},Ww=function(s,e){var t=e/8|0;return(s[t]|s[t+1]<<8|s[t+2]<<16)>>(e&7)},nz=function(s){return(s+7)/8|0},vm=function(s,e,t){return(e==null||e<0)&&(e=0),(t==null||t>s.length)&&(t=s.length),new Or(s.subarray(e,t))},uye=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Ba=function(s,e,t){var n=new Error(e||uye[s]);if(n.code=s,Error.captureStackTrace&&Error.captureStackTrace(n,Ba),!t)throw n;return n},iz=function(s,e,t,n){var i=s.length,r=n?n.length:0;if(!i||e.f&&!e.l)return t||new Or(0);var a=!t,o=a||e.i!=2,c=e.i;a&&(t=new Or(i*3));var h=function(He){var re=t.length;if(He>re){var nt=new Or(Math.max(re*2,He));nt.set(t),t=nt}},d=e.f||0,f=e.p||0,m=e.b||0,_=e.l,y=e.d,x=e.m,w=e.n,b=i*8;do{if(!_){d=Ml(s,f,1);var I=Ml(s,f+1,3);if(f+=3,I)if(I==1)_=cye,y=hye,x=9,w=5;else if(I==2){var Q=Ml(s,f,31)+257,U=Ml(s,f+10,15)+4,D=Q+Ml(s,f+5,31)+1;f+=14;for(var P=new Or(D),k=new Or(19),N=0;N<U;++N)k[rye[N]]=Ml(s,f+N*3,7);f+=U*3;for(var W=Vw(k),X=(1<<W)-1,j=m_(k,W),N=0;N<D;){var $=j[Ml(s,f,X)];f+=$&15;var T=$>>4;if(T<16)P[N++]=T;else{var V=0,Z=0;for(T==16?(Z=3+Ml(s,f,3),f+=2,V=P[N-1]):T==17?(Z=3+Ml(s,f,7),f+=3):T==18&&(Z=11+Ml(s,f,127),f+=7);Z--;)P[N++]=V}}var K=P.subarray(0,Q),se=P.subarray(Q);x=Vw(K),w=Vw(se),_=m_(K,x),y=m_(se,w)}else Ba(1);else{var T=nz(f)+4,B=s[T-4]|s[T-3]<<8,O=T+B;if(O>i){c&&Ba(0);break}o&&h(m+B),t.set(s.subarray(T,O),m),e.b=m+=B,e.p=f=O*8,e.f=d;continue}if(f>b){c&&Ba(0);break}}o&&h(m+131072);for(var oe=(1<<x)-1,ue=(1<<w)-1,be=f;;be=f){var V=_[Ww(s,f)&oe],ye=V>>4;if(f+=V&15,f>b){c&&Ba(0);break}if(V||Ba(2),ye<256)t[m++]=ye;else if(ye==256){be=f,_=null;break}else{var ce=ye-254;if(ye>264){var N=ye-257,we=X8[N];ce=Ml(s,f,(1<<we)-1)+K8[N],f+=we}var Re=y[Ww(s,f)&ue],Ne=Re>>4;Re||Ba(3),f+=Re&15;var se=lye[Ne];if(Ne>3){var we=j8[Ne];se+=Ww(s,f)&(1<<we)-1,f+=we}if(f>b){c&&Ba(0);break}o&&h(m+131072);var ge=m+ce;if(m<se){var tt=r-se,ze=Math.min(se,ge);for(tt+m<0&&Ba(3);m<ze;++m)t[m]=n[tt+m]}for(;m<ge;++m)t[m]=t[m-se]}}e.l=_,e.p=be,e.b=m,e.f=d,_&&(d=1,e.m=x,e.d=y,e.n=w)}while(!d);return m!=t.length&&a?vm(t,0,m):t.subarray(0,m)},dye=new Or(0),Ac=function(s,e){return s[e]|s[e+1]<<8},Pl=function(s,e){return(s[e]|s[e+1]<<8|s[e+2]<<16|s[e+3]<<24)>>>0},qw=function(s,e){return Pl(s,e)+Pl(s,e+4)*4294967296},pye=function(s){(s[0]!=31||s[1]!=139||s[2]!=8)&&Ba(6,"invalid gzip data");var e=s[3],t=10;e&4&&(t+=(s[10]|s[11]<<8)+2);for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!s[t++]);return t+(e&2)},Yw=(function(){function s(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new Or(32768),this.p=new Or(0),n&&this.o.set(n)}return s.prototype.e=function(e){if(this.ondata||Ba(5),this.d&&Ba(4),!this.p.length)this.p=e;else if(e.length){var t=new Or(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},s.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=iz(this.p,this.s,this.o);this.ondata(vm(n,t,this.s.b),this.d),this.o=vm(n,this.s.b-32768),this.s.b=this.o.length,this.p=vm(this.p,this.s.p/8|0),this.s.p&=7},s.prototype.push=function(e,t){this.e(e),this.c(t)},s})();function fye(s,e){return iz(s,{i:2},e&&e.out,e&&e.dictionary)}var mye=(function(){function s(e,t){this.v=1,this.r=0,Yw.call(this,e,t)}return s.prototype.push=function(e,t){if(Yw.prototype.e.call(this,e),this.r+=e.length,this.v){var n=this.p.subarray(this.v-1),i=n.length>3?pye(n):4;if(i>n.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-n.length);this.p=n.subarray(i),this.v=0}Yw.prototype.c.call(this,t),this.s.f&&!this.s.l&&!t&&(this.v=nz(this.s.p)+9,this.s={i:0},this.o=new Or(0),this.push(new Or(0),t))},s})(),PI=typeof TextDecoder<"u"&&new TextDecoder,gye=0;try{PI.decode(dye,{stream:!0}),gye=1}catch{}var _ye=function(s){for(var e="",t=0;;){var n=s[t++],i=(n>127)+(n>223)+(n>239);if(t+i>s.length)return{s:e,r:vm(s,t-1)};i?i==3?(n=((n&15)<<18|(s[t++]&63)<<12|(s[t++]&63)<<6|s[t++]&63)-65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023)):i&1?e+=String.fromCharCode((n&31)<<6|s[t++]&63):e+=String.fromCharCode((n&15)<<12|(s[t++]&63)<<6|s[t++]&63):e+=String.fromCharCode(n)}};function Aye(s,e){if(e){for(var t="",n=0;n<s.length;n+=16384)t+=String.fromCharCode.apply(null,s.subarray(n,n+16384));return t}else{if(PI)return PI.decode(s);var i=_ye(s),r=i.s,t=i.r;return t.length&&Ba(8),r}}var vye=function(s,e){return e+30+Ac(s,e+26)+Ac(s,e+28)},yye=function(s,e,t){var n=Ac(s,e+28),i=Aye(s.subarray(e+46,e+46+n),!(Ac(s,e+8)&2048)),r=e+46+n,a=Pl(s,e+20),o=t&&a==4294967295?bye(s,r):[a,Pl(s,e+24),Pl(s,e+42)],c=o[0],h=o[1],d=o[2];return[Ac(s,e+10),c,h,i,r+Ac(s,e+30)+Ac(s,e+32),d]},bye=function(s,e){for(;Ac(s,e)!=1;e+=4+Ac(s,e+2));return[qw(s,e+12),qw(s,e+4),qw(s,e+20)]};function xye(s,e){for(var t={},n=s.length-22;Pl(s,n)!=101010256;--n)(!n||s.length-n>65558)&&Ba(13);var i=Ac(s,n+8);if(!i)return{};var r=Pl(s,n+16),a=r==4294967295||i==65535;if(a){var o=Pl(s,n-12);a=Pl(s,o)==101075792,a&&(i=Pl(s,o+32),r=Pl(s,o+48))}for(var c=e&&e.filter,h=0;h<i;++h){var d=yye(s,r,a),f=d[0],m=d[1],_=d[2],y=d[3],x=d[4],w=d[5],b=vye(s,w);r=x,(!c||c({name:y,size:m,originalSize:_,compression:f}))&&(f?f==8?t[y]=fye(s.subarray(b,b+m),{out:new Or(_)}):Ba(14,"unknown compression type "+f):t[y]=vm(s,b,b+m))}return t}let Eh;const sz=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&sz.decode();let q0=null;function Cye(){return(q0===null||q0.byteLength===0)&&(q0=new Uint8Array(Eh.memory.buffer)),q0}function wye(s,e){return s=s>>>0,sz.decode(Cye().subarray(s,s+e))}function Eye(s,e,t,n,i,r,a,o,c,h,d,f,m){return Eh.raycast_splats(s,e,t,n,i,r,a,o,c,h,d,f,m)}async function Sye(s,e){if(typeof Response=="function"&&s instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(s,e)}catch(n){if(s.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}const t=await s.arrayBuffer();return await WebAssembly.instantiate(t,e)}else{const t=await WebAssembly.instantiate(s,e);return t instanceof WebAssembly.Instance?{instance:t,module:s}:t}}function Iye(){const s={};return s.wbg={},s.wbg.__wbg_buffer_609cc3eee51ed158=function(e){return e.buffer},s.wbg.__wbg_length_3b4f022188ae8db6=function(e){return e.length},s.wbg.__wbg_length_6ca527665d89694d=function(e){return e.length},s.wbg.__wbg_length_8cfd2c6409af88ad=function(e){return e.length},s.wbg.__wbg_new_9fee97a409b32b68=function(e){return new Uint16Array(e)},s.wbg.__wbg_new_e3b321dcfef89fc7=function(e){return new Uint32Array(e)},s.wbg.__wbg_newwithbyteoffsetandlength_e6b7e69acd4c7354=function(e,t,n){return new Float32Array(e,t>>>0,n>>>0)},s.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(e,t,n){return new Uint32Array(e,t>>>0,n>>>0)},s.wbg.__wbg_newwithlength_5a5efe313cfd59f1=function(e){return new Float32Array(e>>>0)},s.wbg.__wbg_set_10bad9bee0e9c58b=function(e,t,n){e.set(t,n>>>0)},s.wbg.__wbg_set_d23661d19148b229=function(e,t,n){e.set(t,n>>>0)},s.wbg.__wbg_set_f4f1f0daa30696fc=function(e,t,n){e.set(t,n>>>0)},s.wbg.__wbg_subarray_3aaeec89bb2544f0=function(e,t,n){return e.subarray(t>>>0,n>>>0)},s.wbg.__wbg_subarray_769e1e0f81bb259b=function(e,t,n){return e.subarray(t>>>0,n>>>0)},s.wbg.__wbindgen_init_externref_table=function(){const e=Eh.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)},s.wbg.__wbindgen_memory=function(){return Eh.memory},s.wbg.__wbindgen_throw=function(e,t){throw new Error(wye(e,t))},s}function Mye(s,e){return Eh=s.exports,rz.__wbindgen_wasm_module=e,q0=null,Eh.__wbindgen_start(),Eh}async function rz(s){if(Eh!==void 0)return Eh;typeof s<"u"&&(Object.getPrototypeOf(s)===Object.prototype?{module_or_path:s}=s:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof s>"u"&&(s=new URL("data:application/wasm;base64,AGFzbQEAAAABzAEeYAJ/fwF/YAJ/fwBgA39/fwF/YAF/AX9gA39/fwBgAX8AYAV/f39/fwBgA29/fwFvYAV/f39/fwF/YAFvAW9gA29vfwBgAW8Bf2AAAX9gBH9/f38AYAAAYAR/f39/AX9gA39vbwF/YAF/AW9gAAFvYAF9AX1gBn9/f39/fwBgDX19fX19fX19f29/fX0Bb2AGf39/f39/AX9gBX9/fH9/AGAEf3x/fwBgBX9/fX9/AGAEf31/fwBgBX9/fn9/AGAEf35/fwBgAn19AX0C8gQRA3diZx1fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OAAJA3diZxpfX3diZ19uZXdfOWZlZTk3YTQwOWIzMmI2OAAJA3diZxpfX3diZ19zZXRfZjRmMWYwZGFhMzA2OTZmYwAKA3diZx1fX3diZ19sZW5ndGhfOGNmZDJjNjQwOWFmODhhZAALA3diZzFfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyAAcDd2JnGl9fd2JnX25ld19lM2IzMjFkY2ZlZjg5ZmM3AAkDd2JnGl9fd2JnX3NldF9kMjM2NjFkMTkxNDhiMjI5AAoDd2JnHV9fd2JnX2xlbmd0aF82Y2E1Mjc2NjVkODk2OTRkAAsDd2JnMV9fd2JnX25ld3dpdGhieXRlb2Zmc2V0YW5kbGVuZ3RoX2U2YjdlNjlhY2Q0YzczNTQABwN3YmcaX193Ymdfc2V0XzEwYmFkOWJlZTBlOWM1OGIACgN3YmcdX193YmdfbGVuZ3RoXzNiNGYwMjIxODhhZThkYjYACwN3YmcfX193Ymdfc3ViYXJyYXlfNzY5ZTFlMGY4MWJiMjU5YgAHA3diZx9fX3diZ19zdWJhcnJheV8zYWFlZWM4OWJiMjU0NGYwAAcDd2JnJF9fd2JnX25ld3dpdGhsZW5ndGhfNWE1ZWZlMzEzY2ZkNTlmMQARA3diZxBfX3diaW5kZ2VuX3Rocm93AAEDd2JnEV9fd2JpbmRnZW5fbWVtb3J5ABIDd2JnH19fd2JpbmRnZW5faW5pdF9leHRlcm5yZWZfdGFibGUADgNhYAMAAQIIBQQCEwEMAAEBAgAAAQwBBAYFBQQAAQYFFAENBAAGBQQEAQQOAgECAQAIBAAVARYG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ACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC/MCAQR/IwBBMGsiACQAAkACQEGQksAAKAIARQRAQaiSwAAoAgAhAUGoksAAQQA2AgAgAUUNASAAQRhqIAERBQAgAEEQaiICIABBJGopAgA3AwAgACAAKQIcNwMIIAAoAhghAUGQksAAKAIAIgMNAgJAIANFDQBBlJLAACgCACICRQ0AQZiSwAAoAgAgAkECdBBlC0GUksAAIAE2AgBBkJLAAEEBNgIAQZiSwAAgACkDCDcCAEGgksAAIABBEGopAwA3AgALIABBMGokAEGUksAADwsgAEEANgIoIABBATYCHCAAQaCHwAA2AhggAEIENwIgIABBGGpBiIjAABBDAAsgAEEoaiACKQMANwIAIAAgACkDCDcCICAAIAE2AhwgAEEBNgIYAkAgAEEYaiIBKAIARQ0AIAEoAgQiAkUNACABKAIIIAJBAnQQZQsgAEEANgIoIABBATYCHCAAQaiIwAA2AhggAEIENwIgIAFBsIjAABBDAAuoAgIDfwF+IwBBQGoiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBJGoiBEEANgIAIAJCgICAgBA3AhwgAkEwaiADKAIAIgNBCGopAgA3AwAgAkE4aiADQRBqKQIANwMAIAIgAykCADcDKCACQRxqQcCIwAAgAkEoahAYGiACQRhqIAQoAgAiAzYCACACIAIpAhwiBTcDECABQQhqIAM2AgAgASAFNwIACyABKQIAIQUgAUKAgICAEDcCACACQQhqIgMgAUEIaiIBKAIANgIAIAFBADYCAEGxk8AALQAAGiACIAU3AwBBDEEEEF0iAUUEQEEEQQwQbQALIAEgAikDADcCACABQQhqIAMoAgA2AgAgAEHgisAANgIEIAAgATYCACACQUBrJAAL0gECBH8BfiMAQSBrIgMkACABIAEgAmoiAksEQEEAQQAQUgALQQggACgCACIEQQF0IgEgAiABIAJLGyICIAJBCEkb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QQRqrUKAgICA4ACENwMoIAEgAa1CgICAgOAAhDcDICABIAFBIGo2AhAgAUEIakHIj8AAEEMAC2kCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQfyNwAA2AgggA0ICNwIUIANCgICAgOAAIgQgA62ENwMoIAMgBCADQQRqrYQ3AyAgAyADQSBqNgIQIANBCGogAhBDAAtpAgF/AX4jAEEwayIDJAAgAyAANgIAIAMgATYCBCADQQI2AgwgA0H4kcAANgIIIANCAjcCFCADQoCAgIDgACIEIANBBGqthDcDKCADIAQgA62ENwMgIAMgA0EgajYCECADQQhqIAIQQwALZgAjAEEwayIAJABBsJPAAC0AAARAIABBAjYCDCAAQbCKwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIDgAIQ3AyAgACAAQSBqNgIQIABBCGpB0IrAABBDAAsgAEEwaiQAC5QBAgN/AW8jAEEgayIDJAAgAyAAKAIAEHAiBDYCACADIAI2AgQgAiAERwRAIANBADYCCCADIANBBGogA0EIahBAAAsQWyIEEFMiBSUBEAUhBhAbIgIgBiYBIAVBhAFPBEAgBRAtCyACIAAoAgAgAUECdhBkIAJBhAFPBEAgAhAtCyAEQYQBTwRAIAQQLQsgA0EgaiQAC08BAX8jAEEwayIAJAAgAEEBNgIMIABBwI3AADYCCCAAQgE3AhQgACAAQS9qrUKAgICAoAWENwMgIAAgAEEgajYCECAAQQhqQcSBwAAQQwALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhAlIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALTQECf0Gxk8AALQAAGiABKAIEIQIgASgCACEDQQhBBBBdIgFFBEBBBEEIEG0ACyABIAI2AgQgASADNgIAIABB8IrAADYCBCAAIAE2AgALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhApIAAoAgghAwsgACgCBCADaiABIAIQHxogACACIANqNgIIQQALQQEBfyMAQSBrIgIkACACQQA2AhAgAkEBNgIEIAJCBDcCCCACQS42AhwgAiAANgIYIAIgAkEYajYCACACIAEQQwALswIBA38gACgCACECIAEoAhwiAEEQcUUE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ZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkTGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkdgMQACoAAAAvVXNlcnMvZG1hcmNvcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL29uY2VfY2VsbC0xLjIxLjMvc3JjL2xpYi5ycwCoAxAAXwAAAAgDAAAZAAAAcmVlbnRyYW50IGluaXQAABgEEAAOAAAAqAMQAF8AAAB6AgAADQAAABYAAAAMAAAABAAAABcAAAAYAAAAGQAAAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZABYBBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAWAQQACkAAACuBAAADQAAAEFjY2Vzc0Vycm9ybWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAAAsFEAAVAAAAIAUQAA0AAABzdGQvc3JjL2FsbG9jLnJzQAUQABAAAABjAQAACQAAABYAAAAMAAAABAAAABoAAAAAAAAACAAAAAQAAAAbAAAAAAAAAAgAAAAEAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAQAAAABAAAACEAAAAiAAAAIwAAACQAAABFcnJvcgAAACUAAAAMAAAABAAAACYAAAAnAAAAKAAAAGNhcGFjaXR5IG92ZXJmbG93AAAA2AUQABEAAABhbGxvYy9zcmMvcmF3X3ZlYy5yc/QFEAAUAAAAGAAAAAUAQaCMwAAL8AUBAAAAKQAAAGEgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBkaWQgbm90YWxsb2Mvc3JjL2ZtdC5ycwAAfgYQABAAAAB+AgAADgAAAEJvcnJvd011dEVycm9yYWxyZWFkeSBib3Jyb3dlZDogrgYQABIAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAyAYQACAAAADoBhAAEgAAAD09IT1tYXRjaGVzYXNzZXJ0aW9uIGBsZWZ0ICByaWdodGAgZmFpbGVkCiAgbGVmdDogCiByaWdodDogABcHEAAQAAAAJwcQABcAAAA+BxAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAAAXBxAAEAAAAGAHEAAQAAAAcAcQAAkAAAA+BxAACQAAADogAAABAAAAAAAAAJwHEAACAAAAfSB9Y29yZS9zcmMvZm10L251bS5ycwAAswcQABMAAABmAAAAFwAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlyYW5nZSBzdGFydCBpbmRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAACiCBAAEgAAALQIEAAiAAAAcmFuZ2UgZW5kIGluZGV4IOgIEAAQAAAAtAgQACIAAAAAAAA/AAAAvwBBqJLAAAsBFABwCXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS44My4wICg5MGIzNWE2MjMgMjAyNC0xMS0yNikGd2FscnVzBjAuMjMuMwx3YXNtLWJpbmRnZW4HMC4yLjEwMABJD3RhcmdldF9mZWF0dXJlcwQrD211dGFibGUtZ2xvYmFscysIc2lnbi1leHQrD3JlZmVyZW5jZS10eXBlcysKbXVsdGl2YWx1ZQ==",typeof document>"u"?require("url").pathToFileURL(__filename).href:yC&&yC.tagName.toUpperCase()==="SCRIPT"&&yC.src||new URL("ControlGrid-Bukna_at.cjs",document.baseURI).href));const e=Iye();(typeof s=="string"||typeof Request=="function"&&s instanceof Request||typeof URL=="function"&&s instanceof URL)&&(s=fetch(s));const{instance:t,module:n}=await Sye(await s,e);return Mye(t,n)}const Nh=-12,Dh=9,Tye=-30,Xw=Math.exp(Tye),Bye=11,Lye=11,ls=1<<Bye,Jd=1<<Lye,Rye=1;function kye(s){return s==="bool"||s==="bvec2"||s==="bvec3"||s==="bvec4"}function Kd(s){return s==="int"||s==="ivec2"||s==="ivec3"||s==="ivec4"}function ep(s){return s==="uint"||s==="uvec2"||s==="uvec3"||s==="uvec4"}function Pye(s){return s==="float"||s==="vec2"||s==="vec3"||s==="vec4"}function Nye(s){return s==="mat2"||s==="mat2x2"||s==="mat2x3"||s==="mat2x4"||s==="mat3"||s==="mat3x2"||s==="mat3x3"||s==="mat3x4"||s==="mat4"||s==="mat4x2"||s==="mat4x3"||s==="mat4x4"}function Q_(s){return Pye(s)||Nye(s)}function gf(s){return s==="mat2"||s==="mat2x2"}function _f(s){return s==="mat3"||s==="mat3x3"}function Af(s){return s==="mat4"||s==="mat4x4"}function Dye(s){switch(s){case"vec2":return"float";case"vec3":return"float";case"vec4":return"float";case"ivec2":return"int";case"ivec3":return"int";case"ivec4":return"int";case"uvec2":return"uint";case"uvec3":return"uint";case"uvec4":return"uint";default:throw new Error(`Invalid vector type: ${s}`)}}function Fye(s){switch(s){case"vec2":case"ivec2":case"uvec2":return 2;case"vec3":case"ivec3":case"uvec3":return 3;case"vec4":case"ivec4":case"uvec4":return 4;default:throw new Error(`Invalid vector type: ${s}`)}}function vr(s){return Math.trunc(s).toString()}function yr(s){return`${Math.max(0,Math.trunc(s)).toString()}u`}function Pi(s){return s===Number.POSITIVE_INFINITY?"INFINITY":s===Number.NEGATIVE_INFINITY?"-INFINITY":Number.isInteger(s)?s.toFixed(1):s.toString()}function bh(s){return s instanceof tp?s.type:s.dynoOut().type}class tp{constructor(e){this.__isDynoValue=!0,this.type=e}}class oo extends tp{constructor(e,t){super(e.outTypes[t]),this.dyno=e,this.key=t}}class kb extends tp{constructor(e,t){super(e),this.literal=t}getLiteral(){return this.literal}}class Oye extends kb{constructor(e,t){super(e,""),this.value=t}getLiteral(){const{type:e,value:t}=this;switch(e){case"bool":return t?"true":"false";case"uint":return yr(t);case"int":return vr(t);case"float":return Pi(t);case"bvec2":{const n=t;return`bvec2(${n[0]}, ${n[1]})`}case"uvec2":{if(t instanceof di)return`uvec2(${yr(t.x)}, ${yr(t.y)})`;const n=t;return`uvec2(${yr(n[0])}, ${yr(n[1])})`}case"ivec2":{if(t instanceof di)return`ivec2(${vr(t.x)}, ${vr(t.y)})`;const n=t;return`ivec2(${vr(n[0])}, ${vr(n[1])})`}case"vec2":{if(t instanceof di)return`vec2(${Pi(t.x)}, ${Pi(t.y)})`;const n=t;return`vec2(${Pi(n[0])}, ${Pi(n[1])})`}case"bvec3":{const n=t;return`bvec3(${n[0]}, ${n[1]}, ${n[2]})`}case"uvec3":{if(t instanceof Oe)return`uvec3(${yr(t.x)}, ${yr(t.y)}, ${yr(t.z)})`;const n=t;return`uvec3(${yr(n[0])}, ${yr(n[1])}, ${yr(n[2])})`}case"ivec3":{if(t instanceof Oe)return`ivec3(${vr(t.x)}, ${vr(t.y)}, ${vr(t.z)})`;const n=t;return`ivec3(${vr(n[0])}, ${vr(n[1])}, ${vr(n[2])})`}case"vec3":{if(t instanceof Oe)return`vec3(${Pi(t.x)}, ${Pi(t.y)}, ${Pi(t.z)})`;const n=t;return`vec3(${Pi(n[0])}, ${Pi(n[1])}, ${Pi(n[2])})`}case"bvec4":{const n=t;return`bvec4(${n[0]}, ${n[1]}, ${n[2]}, ${n[3]})`}case"uvec4":{if(t instanceof fi)return`uvec4(${yr(t.x)}, ${yr(t.y)}, ${yr(t.z)}, ${yr(t.w)})`;const n=t;return`uvec4(${yr(n[0])}, ${yr(n[1])}, ${yr(n[2])}, ${yr(n[3])})`}case"ivec4":{if(t instanceof fi)return`ivec4(${vr(t.x)}, ${vr(t.y)}, ${vr(t.z)}, ${vr(t.w)})`;const n=t;return`ivec4(${vr(n[0])}, ${vr(n[1])}, ${vr(n[2])}, ${vr(n[3])})`}case"vec4":{if(t instanceof fi)return`vec4(${Pi(t.x)}, ${Pi(t.y)}, ${Pi(t.z)}, ${Pi(t.w)})`;if(t instanceof Ws)return`vec4(${Pi(t.x)}, ${Pi(t.y)}, ${Pi(t.z)}, ${Pi(t.w)})`;const n=t;return`vec4(${Pi(n[0])}, ${Pi(n[1])}, ${Pi(n[2])}, ${Pi(n[3])})`}case"mat2":case"mat2x2":{const n=t,i=n instanceof sx?n.elements:t,r=new Array(4).fill(0).map((a,o)=>Pi(i[o]));return`${e}(${r.join(", ")})`}case"mat2x3":{const n=t,i=new Array(6).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat2x4":{const n=t,i=new Array(8).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat3":case"mat3x3":{const n=t,i=n instanceof ui?n.elements:t,r=new Array(9).fill(0).map((a,o)=>Pi(i[o]));return`${e}(${r.join(", ")})`}case"mat3x2":{const n=t,i=new Array(6).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat3x4":{const n=t,i=new Array(12).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat4":case"mat4x4":{const n=t,i=n instanceof Nn?n.elements:t,r=new Array(16).fill(0).map((a,o)=>Pi(i[o]));return`${e}(${r.join(", ")})`}case"mat4x2":{const n=t,i=new Array(8).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}case"mat4x3":{const n=t,i=new Array(12).fill(0).map((r,a)=>Pi(n[a]));return`${e}(${i.join(", ")})`}default:throw new Error(`Type not implemented: ${String(e)}`)}}}function g_(s,e){return new Oye(s,e)}function hy(s){const e=String(s);if(kye(s))return`${e}(false)`;if(Q_(s))return`${e}(0.0)`;if(Kd(s))return`${e}(0)`;if(ep(s))return`${e}(0u)`;throw new Error(`Type not implemented: ${e}`)}const oN=" ";class Uye{constructor({indent:e}={}){this.globals=new Set,this.statements=[],this.uniforms={},this.declares=new Set,this.updaters=[],this.sequence=0,this.indent=oN,this.indent=e??oN}nextSequence(){return this.sequence++}}class Qr{constructor({inTypes:e,outTypes:t,inputs:n,update:i,globals:r,statements:a,generate:o}){this.inTypes=e??{},this.outTypes=t??{},this.inputs=n??{},this.update=i,this.globals=r,this.statements=a,this.generate=o??(({inputs:c,outputs:h,compile:d})=>{var f,m;return{globals:(f=this.globals)==null?void 0:f.call(this,{inputs:c,outputs:h,compile:d}),statements:(m=this.statements)==null?void 0:m.call(this,{inputs:c,outputs:h,compile:d})}})}get outputs(){const e={};for(const t in this.outTypes)e[t]=new oo(this,t);return e}apply(e){return Object.assign(this.inputs,e),this.outputs}compile({inputs:e,outputs:t,compile:n}){const i=[`// ${this.constructor.name}(${Object.values(e).join(", ")}) => (${Object.values(t).join(", ")})`],r=[];for(const h in t){const d=t[h];d&&!n.declares.has(d)&&(n.declares.add(d),r.push(h))}const{globals:a,statements:o,uniforms:c}=this.generate({inputs:e,outputs:t,compile:n});for(const h of a??[])n.globals.add(h);for(const h in c)n.uniforms[h]=c[h];this.update&&n.updaters.push(this.update);for(const h of r){const d=t[h];d&&(n.uniforms[d]||i.push(`${az(d,this.outTypes[h])};`))}return o?.length&&(i.push("{"),i.push(...o.map(h=>n.indent+h)),i.push("}")),i}}class zye extends Qr{constructor({inTypes:e,outTypes:t,inputs:n,update:i,globals:r,construct:a}){super({inTypes:e,outTypes:t,inputs:n,update:i,globals:r,generate:o=>this.generateBlock(o)}),this.construct=a}generateBlock({inputs:e,outputs:t,compile:n}){var i,r;const a={},o={};for(const w in e)e[w]!=null&&(a[w]=new kb(this.inTypes[w],e[w]));for(const w in t)t[w]!=null&&(o[w]=new tp(this.outTypes[w]));const c={roots:[]},h=this.construct(a,o,c);for(const w of((i=this.globals)==null?void 0:i.call(this,{inputs:e,outputs:t,compile:n}))??[])n.globals.add(w);const d=[],f=new Map;function m(w,b,I){let T=f.get(w);if(!T){T={sequence:n.nextSequence(),outNames:new Map,newOuts:new Set},f.set(w,T);for(const B in w.inputs){let O=w.inputs[B];for(;O;){if(O instanceof tp){O instanceof oo&&m(O.dyno,O.key);break}O=O.dynoOut()}}d.push(w)}b&&(I||T.newOuts.add(b),T.outNames.set(b,I??`${b}_${T.sequence}`))}for(const w of c.roots)m(w);for(const w in o){let b=h?.[w]??o[w];for(;b;){if(b instanceof tp){b instanceof oo&&m(b.dyno,b.key,t[w]);break}b=b.dynoOut()}o[w]=b}const _=[];for(const w of d){const b={},I={};for(const O in w.inputs){let Q=w.inputs[O];for(;Q;){if(Q instanceof tp){if(Q instanceof kb)b[O]=Q.getLiteral();else if(Q instanceof oo){const U=(r=f.get(Q.dyno))==null?void 0:r.outNames.get(Q.key);if(!U)throw new Error(`Source not found for ${Q.dyno.constructor.name}.${Q.key}`);b[O]=U}break}Q=Q.dynoOut()}}const T=f.get(w)??{outNames:new Map};for(const[O,Q]of T.outNames.entries())I[O]=Q;const B=w.compile({inputs:b,outputs:I,compile:n});_.push(B)}const y=[];for(const w in t)o[w]instanceof kb&&y.push(`${t[w]} = ${o[w].getLiteral()};`);return y.length>0&&_.push(y),{statements:_.flatMap((w,b)=>b===0?w:["",...w])}}}function Fh(s,e,t,{update:n,globals:i}={}){return new zye({inTypes:s,outTypes:e,construct:t,update:n,globals:i})}function ax({inTypes:s,outTypes:e,inputs:t,update:n,globals:i,statements:r,generate:a}){return new Qr({inTypes:s,outTypes:e,inputs:t,update:n,globals:i,statements:r,generate:a})}function az(s,e,t){const n=typeof e=="string"?e:e.type;if(!n)throw new Error(`Invalid DynoType: ${String(e)}`);return`${n} ${s}${t!=null?`[${t}]`:""}`}function Pc(s){var e;let t=!1;const n=s.split(`
4544
4544
  `).map(a=>{const o=a.trimEnd();return t?o:o.length>0?(t=!0,o):null}).filter(a=>a!=null);for(;n.length>0&&n[n.length-1].length===0;)n.pop();if(n.length===0)return[];const i=(e=n[0].match(/^\s*/))==null?void 0:e[0];if(!i)return n;const r=new RegExp(`^${i}`);return n.map(a=>a.replace(r,""))}function ho(s){return Pc(s).join(`
4545
4545
  `)}class ox extends Qr{constructor({a:e,outKey:t,outTypeFunc:n}){const i={a:bh(e)},r=n(bh(e)),a={[t]:r};super({inTypes:i,outTypes:a,inputs:{a:e}}),this.outKey=t}dynoOut(){return new oo(this,this.outKey)}}class lx extends Qr{constructor({a:e,b:t,outKey:n,outTypeFunc:i}){const r={a:bh(e),b:bh(t)},a=i(bh(e),bh(t)),o={[n]:a};super({inTypes:r,outTypes:o,inputs:{a:e,b:t}}),this.outKey=n}dynoOut(){return new oo(this,this.outKey)}}const Tr={type:"Gsplat"},cx={type:"PackedSplats"},__=(s,e)=>new Qye({packedSplats:s,index:e}),Gye=(s,e,t,n)=>new $ye({packedSplats:s,index:e,base:t,count:n}),Pb=s=>new Hye({gsplat:s}),jw=({gsplat:s,flags:e,index:t,center:n,scales:i,quaternion:r,rgba:a,rgb:o,opacity:c,x:h,y:d,z:f,r:m,g:_,b:y})=>new Vye({gsplat:s,flags:e,index:t,center:n,scales:i,quaternion:r,rgba:a,rgb:o,opacity:c,x:h,y:d,z:f,r:m,g:_,b:y}),oz=(s,{scale:e,rotate:t,translate:n,recolor:i})=>new Wye({gsplat:s,scale:e,rotate:t,translate:n,recolor:i}),Nc=ho(`
4546
4546
  struct Gsplat {
@@ -17059,4 +17059,4 @@ void main()
17059
17059
  <rect x="2" y="2" width="6" height="6" rx="1" stroke-dasharray="2 1"/>
17060
17060
  </svg>
17061
17061
  </span>
17062
- `,t.addEventListener("click",()=>this.toggle()),e.appendChild(t),e}_createPanel(){const e=document.createElement("div");e.className="usgs-lidar-control-panel",e.style.width=`${this._options.panelWidth}px`,e.style.maxHeight=`${this._options.maxHeight}px`;const t=document.createElement("div");t.className="usgs-lidar-control-header";const n=document.createElement("span");n.className="usgs-lidar-control-title",n.textContent=this._options.title;const i=document.createElement("button");i.className="usgs-lidar-control-close",i.type="button",i.setAttribute("aria-label","Close panel"),i.innerHTML="&times;",i.addEventListener("click",()=>this.collapse()),t.appendChild(n),t.appendChild(i),this._panelBuilder=new fDe({onSearchByExtent:()=>this.searchByExtent(),onStartDrawing:()=>this.startDrawing(),onStopDrawing:()=>this.stopDrawing(),onSearchByDrawn:()=>{this._state.drawnBbox&&this.searchByBbox(this._state.drawnBbox)},onClearDrawn:()=>this.clearDrawnBbox(),onItemSelect:a=>this.toggleItemSelection(a),onItemLoad:a=>{this.loadItem(a).catch(()=>{})},onLoadSelected:()=>{this.loadSelectedItems().catch(()=>{})},onCopySignedUrls:()=>{this.copySignedUrls().catch(a=>{console.error("Failed to copy signed URLs:",a)})},onDownloadSelected:()=>{this.downloadSelected().catch(a=>{console.error("Failed to download selected:",a)})},onClearResults:()=>this.clearResults(),onUnloadItem:a=>this.unloadItem(a),onClearLoaded:()=>this.clearLoadedItems(),onPointSizeChange:a=>this.setPointSize(a),onOpacityChange:a=>this.setOpacity(a),onColorSchemeChange:a=>this.setColorScheme(a),onZOffsetChange:a=>this.setZOffset(a),onPickableChange:a=>this.setPickable(a),onElevationRangeChange:a=>this.setElevationRange(a),onClassificationToggle:(a,o)=>this.setClassificationVisibility(a,o),onClassificationShowAll:()=>this.showAllClassifications(),onClassificationHideAll:()=>this.hideAllClassifications(),onDataSourceChange:a=>this.setDataSource(a),onColormapChange:a=>this.setColormap(a),onColorRangeChange:a=>this.setColorRange(a),onShowMetadata:a=>this.showMetadata(a),onCrossSectionPanel:()=>this.getCrossSectionPanel()},this._state);const r=this._panelBuilder.build();return e.appendChild(t),e.appendChild(r),e}_setupEventListeners(){var e;const t=n=>{var i,r,a,o,c;const h=n.target;if((i=this._container)!=null&&i.contains(h)||(r=this._panel)!=null&&r.contains(h)||(o=(a=this._mapContainer)==null?void 0:a.querySelector(".maplibregl-canvas"))!=null&&o.contains(h))return;const d=document.querySelector(".lidar-metadata-backdrop, .lidar-chart-popup-backdrop");d?.contains(h)||(c=h.closest)!=null&&c.call(h,".lidar-metadata-backdrop, .lidar-metadata-panel, .lidar-chart-popup-backdrop, .lidar-chart-popup")||this._state.collapsed||this.collapse()};document.addEventListener("click",t,!0),window.addEventListener("resize",()=>{this._state.collapsed||this._updatePanelPosition()}),(e=this._map)==null||e.on("resize",()=>{this._state.collapsed||this._updatePanelPosition()})}_getControlPosition(){var e;const t=(e=this._container)==null?void 0:e.parentElement;return t?t.classList.contains("maplibregl-ctrl-top-left")?"top-left":t.classList.contains("maplibregl-ctrl-top-right")?"top-right":t.classList.contains("maplibregl-ctrl-bottom-left")?"bottom-left":t.classList.contains("maplibregl-ctrl-bottom-right")?"bottom-right":"top-right":"top-right"}_updatePanelPosition(){if(!this._container||!this._panel||!this._mapContainer)return;const e=this._container.querySelector(".usgs-lidar-control-toggle");if(!e)return;const t=e.getBoundingClientRect(),n=this._mapContainer.getBoundingClientRect(),i=this._getControlPosition(),r=t.top-n.top,a=n.bottom-t.bottom,o=t.left-n.left,c=n.right-t.right,h=5;switch(this._panel.style.top="",this._panel.style.bottom="",this._panel.style.left="",this._panel.style.right="",i){case"top-left":this._panel.style.top=`${r+t.height+h}px`,this._panel.style.left=`${o}px`;break;case"top-right":this._panel.style.top=`${r+t.height+h}px`,this._panel.style.right=`${c}px`;break;case"bottom-left":this._panel.style.bottom=`${a+t.height+h}px`,this._panel.style.left=`${o}px`;break;case"bottom-right":this._panel.style.bottom=`${a+t.height+h}px`,this._panel.style.right=`${c}px`;break}}getPanelElement(){return this._panel??null}}var gDe=Object.defineProperty,_De=(s,e,t)=>e in s?gDe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,pb=(s,e,t)=>_De(s,typeof e!="symbol"?e+"":e,t);class a${constructor(e){pb(this,"type","usgs-lidar"),pb(this,"_usgsControl"),pb(this,"_changeCallbacks",[]),pb(this,"_unsubscribe"),this._usgsControl=e,this._setupEventListeners()}_setupEventListeners(){const e=n=>{var i;if((i=n.pointCloud)!=null&&i.id){const r=this._usgsControl.getState();for(const[a,o]of r.loadedItems.entries())if(o.id===n.pointCloud.id){this._notifyLayerAdded(a);break}}},t=n=>{n.itemId&&this._notifyLayerRemoved(n.itemId)};this._usgsControl.on("loadcomplete",e),this._usgsControl.on("unload",t),this._unsubscribe=()=>{this._usgsControl.off("loadcomplete",e),this._usgsControl.off("unload",t)}}getLayerIds(){const e=this._usgsControl.getState();return Array.from(e.loadedItems.keys())}getLayerState(e){var t;const n=this._usgsControl.getState(),i=n.loadedItems.get(e);if(!i)return null;const r=this._usgsControl.getLidarControl(),a=r?._pointCloudManager,o=a?.getPointCloudVisibility(i.id)??!0,c=a?.getPointCloudOpacity(i.id)??((t=n.lidarState)==null?void 0:t.opacity)??1;return{visible:o,opacity:c,name:this.getName(e),isCustomLayer:!0,customLayerType:"usgs-lidar"}}setVisibility(e,t){const i=this._usgsControl.getState().loadedItems.get(e);if(!i)return;const r=this._usgsControl.getLidarControl(),a=r?._pointCloudManager;a?.setPointCloudVisibility(i.id,t)}setOpacity(e,t){const i=this._usgsControl.getState().loadedItems.get(e);if(!i)return;const r=this._usgsControl.getLidarControl(),a=r?._pointCloudManager;a?.setPointCloudOpacity(i.id,t)}getName(e){const n=this._usgsControl.getState().loadedItems.get(e);return n?n.name:e.replace(/[-_]/g," ").replace(/\b\w/g,i=>i.toUpperCase())}getSymbolType(e){return"circle"}onLayerChange(e){return this._changeCallbacks.push(e),()=>{const t=this._changeCallbacks.indexOf(e);t>=0&&this._changeCallbacks.splice(t,1)}}_notifyLayerAdded(e){this._changeCallbacks.forEach(t=>t("add",e))}_notifyLayerRemoved(e){this._changeCallbacks.forEach(t=>t("remove",e))}destroy(){var e;(e=this._unsubscribe)==null||e.call(this),this._changeCallbacks=[]}}const ADe={},vDe={title:"",position:"top-right",className:"",visible:!0,collapsible:!0,collapsed:!0,rows:1,columns:3,showRowColumnControls:!0,controls:[],backgroundColor:"rgba(255, 255, 255, 0.9)",padding:10,borderRadius:4,opacity:1,gap:6,minzoom:0,maxzoom:24,basemapStyleUrl:void 0,excludeLayers:void 0,streetViewOptions:void 0},yDe='<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>',bDe='<svg xmlns="http://www.w3.org/2000/svg" width="29" height="29" viewBox="0 0 29 29"><path d="m10.5 14 4-8 4 8z" fill="#333"/><path d="m10.5 16 4 8 4-8z" fill="#ccc"/></svg>';class xDe{_map;_container;_icon;_rotateHandler;onAdd(e){this._map=e,this._container=document.createElement("div"),this._container.className="maplibregl-ctrl maplibregl-ctrl-group";const t=document.createElement("button");return t.className="maplibregl-ctrl-compass",t.type="button",t.title="Reset bearing to north",t.setAttribute("aria-label","Reset bearing to north"),this._icon=document.createElement("span"),this._icon.className="maplibregl-ctrl-icon",this._icon.setAttribute("aria-hidden","true"),this._icon.style.backgroundImage=`url("data:image/svg+xml,${encodeURIComponent(bDe)}")`,this._icon.style.backgroundSize="contain",this._icon.style.width="29px",this._icon.style.height="29px",this._icon.style.display="block",t.appendChild(this._icon),t.addEventListener("click",()=>this._map?.resetNorth()),this._container.appendChild(t),this._rotateHandler=()=>{this._icon&&this._map&&(this._icon.style.transform=`rotate(${-this._map.getBearing()}deg)`)},this._map.on("rotate",this._rotateHandler),this._rotateHandler(),this._container}onRemove(){this._map&&this._rotateHandler&&this._map.off("rotate",this._rotateHandler),this._container?.parentNode?.removeChild(this._container),this._map=void 0,this._container=void 0,this._icon=void 0}}const lS="maplibre-gl-components-terrain-dem",CDe="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png";class wDe{_inner;_addSource(e){e.getSource(lS)||e.addSource(lS,{type:"raster-dem",tiles:[CDe],tileSize:256,encoding:"terrarium"})}onAdd(e){return e.isStyleLoaded()?this._addSource(e):e.once("styledata",()=>this._addSource(e)),this._inner=new nr.TerrainControl({source:lS}),this._inner.onAdd(e)}onRemove(){this._inner?.onRemove(),this._inner=void 0}}const EDe={fullscreen:"Toggle fullscreen",globe:"Toggle globe projection",spinGlobe:"Spin globe",north:"Reset bearing to north",terrain:"Toggle terrain",search:"Search places",viewState:"View map state",inspect:"Inspect features",vectorDataset:"Add vector dataset",basemap:"Basemaps",cogLayer:"COG Layer",minimap:"Toggle minimap",measure:"Measure distances and areas",bookmark:"Bookmarks",print:"Export map",zarrLayer:"Zarr Layer",pmtilesLayer:"PMTiles Layer",stacLayer:"STAC Layer",stacSearch:"STAC Search",addVector:"Add vector layer",geoEditor:"Geo Editor",lidar:"LiDAR Layer",planetaryComputer:"Planetary Computer",gaussianSplat:"Gaussian Splat",streetView:"Street View",swipe:"Layer Swipe",usgsLidar:"USGS LiDAR",colorbarGui:"Colorbar",legendGui:"Legend",htmlGui:"HTML Control",tileLayer:"Tile Layer"};class SDe{_container;_gridEl;_options;_state;_children=[];_eventHandlers=new Map;_map;_handleZoom;_zoomVisible=!0;_floatingEntry=null;_floatingPanel=null;_clickInGrid=!1;_docCaptureHandler;_docBubbleHandler;constructor(e){this._options={...vDe,...e},this._state={visible:this._options.visible,collapsed:this._options.collapsed,rows:this._options.rows,columns:this._options.columns},(e?.controls??this._options.controls??[]).forEach(i=>this._children.push({control:i,element:null,expandable:this._isExpandable(i),collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null}));const n=e?.defaultControls??[];for(const i of n){const r=this._createDefaultControl(i);r&&this._children.push({control:r,element:null,expandable:this._isExpandable(r),collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null,tooltip:EDe[i]})}this._autoGrowRows()}_createDefaultControl(e){switch(e){case"fullscreen":return new nr.FullscreenControl;case"globe":return new nr.GlobeControl;case"spinGlobe":return new OO;case"north":return new xDe;case"terrain":return new wDe;case"search":return new cO({collapsed:!0});case"viewState":return new CO({collapsed:!0,enableBBox:!0});case"inspect":return new xO;case"vectorDataset":return new bO;case"basemap":return new lO({collapsed:!0});case"cogLayer":return new uS({collapsed:!0,defaultUrl:"https://data.source.coop/giswqs/opengeos/nlcd_2021_land_cover_30m.tif",defaultColormap:"none",defaultRescaleMin:0,defaultRescaleMax:4e3});case"minimap":return new EO({collapsed:!0,interactive:!0});case"measure":return new SO({collapsed:!0});case"bookmark":return new IO({collapsed:!0});case"print":return new TO({collapsed:!0});case"zarrLayer":return new dS({collapsed:!0,defaultUrl:"https://carbonplan-maps.s3.us-west-2.amazonaws.com/v2/demo/4d/tavg-prec-month",defaultVariable:"climate",defaultColormap:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],defaultClim:[0,300],defaultSelector:{band:"prec",month:1},defaultOpacity:.8});case"pmtilesLayer":return new pS({collapsed:!0,defaultUrl:"https://pmtiles.io/protomaps(vector)ODbL_firenze.pmtiles",defaultOpacity:.8,defaultFillColor:"steelblue",defaultLineColor:"#333"});case"stacLayer":return new fS({collapsed:!0,defaultUrl:"https://earth-search.aws.element84.com/v1/collections/sentinel-2-l2a/items/S2B_10SEG_20251229_0_L2A",defaultRescaleMin:0,defaultRescaleMax:255,defaultColormap:"none"});case"stacSearch":return new kO({collapsed:!0,catalogs:[{name:"Element84 Earth Search",url:"https://earth-search.aws.element84.com/v1"},{name:"Microsoft Planetary Computer",url:"https://planetarycomputer.microsoft.com/api/stac/v1"}],maxItems:20,defaultRescaleMin:0,defaultRescaleMax:1e4,showFootprints:!0});case"addVector":return new mS({collapsed:!0,defaultUrl:"https://flatgeobuf.org/test/data/UScounties.fgb"});case"choropleth":return new PO({collapsed:!0,defaultUrl:"https://data.source.coop/giswqs/opengeos/h3_res4_geo.parquet",defaultColormap:"viridis",defaultScheme:"quantile",defaultK:5});case"geoEditor":return new LS({collapsed:!0,columns:2});case"lidar":return new m1({collapsed:!0,maxHeight:500});case"planetaryComputer":return new QS({collapsed:!0,maxHeight:500});case"gaussianSplat":return new $I({collapsed:!0,maxHeight:500});case"streetView":{const t=ADe,n=t?.VITE_GOOGLE_MAPS_API_KEY,i=t?.VITE_MAPILLARY_ACCESS_TOKEN,r=!n&&i?"mapillary":"google";return new i$({collapsed:!0,panelWidth:450,panelHeight:350,maxHeight:500,defaultProvider:r,clickToView:!0,showMarker:!0,maxSearchRadius:200,markerOptions:{color:"#ff5722",showDirection:!1,directionColor:"#1976d2"},googleApiKey:n,mapillaryAccessToken:i,...this._options.streetViewOptions})}case"swipe":return new s$({collapsed:!0,maxHeight:500,active:!1,basemapStyle:this._options.basemapStyleUrl,excludeLayers:this._options.excludeLayers});case"usgsLidar":return new SM({collapsed:!0,maxHeight:500});case"colorbarGui":return new NO({collapsed:!0});case"legendGui":return new DO({collapsed:!0});case"htmlGui":return new FO({collapsed:!0});case"tileLayer":return new UO({collapsed:!0});default:return null}}onAdd(e){return this._map=e,this._container=this._createContainer(),this._handleZoom=()=>this._checkZoomVisibility(),this._map.on("zoom",this._handleZoom),this._checkZoomVisibility(),this._docCaptureHandler=t=>{const n=t.target,i=this._container?.contains(n),r=this._floatingPanel?.contains(n);this._clickInGrid=!!(i&&!r)},this._docBubbleHandler=()=>{this._clickInGrid=!1},document.addEventListener("click",this._docCaptureHandler,!0),document.addEventListener("click",this._docBubbleHandler,!1),this._render(),this._mountChildren(),this._container}onRemove(){this._docCaptureHandler&&(document.removeEventListener("click",this._docCaptureHandler,!0),this._docCaptureHandler=void 0),this._docBubbleHandler&&(document.removeEventListener("click",this._docBubbleHandler,!1),this._docBubbleHandler=void 0),this._map&&this._handleZoom&&(this._map.off("zoom",this._handleZoom),this._handleZoom=void 0),this._unmountChildren(),this._map=void 0,this._container?.parentNode?.removeChild(this._container),this._container=void 0,this._gridEl=void 0,this._children=[],this._eventHandlers.clear()}addControl(e){if(this._children.some(n=>n.control===e))return;const t={control:e,element:null,expandable:this._isExpandable(e),collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null};this._children.push(t),this._autoGrowRows(),this._map&&this._gridEl&&(t.element=e.onAdd(this._map),t.expandable&&(t.collapsedSnapshot=t.element.cloneNode(!0),this._attachExpandListeners(t)),this._gridEl.appendChild(t.element)),this._emit("controladd",e)}removeControl(e){const t=this._children.findIndex(i=>i.control===e);if(t===-1)return;const n=this._children[t];this._floatingEntry===n&&this._clearFloating(),this._detachExpandListeners(n),n._placeholder?.parentNode&&n._placeholder.parentNode.removeChild(n._placeholder),n.element?.parentNode&&n.element.parentNode.removeChild(n.element),this._map&&e.onRemove(this._map),this._children.splice(t,1),this._emit("controlremove",e)}setRows(e){const t=Math.max(1,Math.min(12,Math.round(e)));this._state.rows!==t&&(this._state.rows=t,this._applyGridStyle(),this._emit("update"))}setColumns(e){const t=Math.max(1,Math.min(12,Math.round(e)));this._state.columns!==t&&(this._state.columns=t,this._applyGridStyle(),this._emit("update"))}getControls(){return this._children.map(e=>e.control)}getAdapters(){const e=[];for(const t of this._children){const n=t.control;n instanceof uS?e.push(new zO(n)):n instanceof dS?e.push(new GO(n)):n instanceof pS?e.push(new QO(n)):n instanceof fS?e.push(new HO(n)):n instanceof mS?e.push(new $O(n)):n instanceof m1?e.push(new XU(n)):n instanceof QS?e.push(new ZU(n)):n instanceof $I?e.push(new Rz(n)):n instanceof SM?e.push(new a$(n)):n instanceof LS&&e.push(new F5(n))}return e}show(){this._state.visible||(this._state.visible=!0,this._updateDisplayState(),this._emit("show"))}hide(){this._state.visible&&(this._state.visible=!1,this._updateDisplayState(),this._emit("hide"))}expand(){this._state.collapsed&&(this._state.collapsed=!1,this._render(),this._emit("expand"))}collapse(){this._state.collapsed||(this._state.collapsed=!0,this._render(),this._emit("collapse"))}toggle(){this._state.collapsed?this.expand():this.collapse()}getState(){return{...this._state}}update(e){this._options={...this._options,...e},e.visible!==void 0&&(this._state.visible=e.visible),e.collapsed!==void 0&&(this._state.collapsed=e.collapsed),e.rows!==void 0&&(this._state.rows=Math.max(1,Math.min(12,e.rows))),e.columns!==void 0&&(this._state.columns=Math.max(1,Math.min(12,e.columns))),this._render(),this._emit("update")}on(e,t){this._eventHandlers.has(e)||this._eventHandlers.set(e,new Set),this._eventHandlers.get(e).add(t)}off(e,t){this._eventHandlers.get(e)?.delete(t)}_emit(e,t){const n=this._eventHandlers.get(e);if(n){const i={type:e,state:this.getState(),control:t};n.forEach(r=>r(i))}}_checkZoomVisibility(){if(!this._map)return;const e=this._map.getZoom(),{minzoom:t,maxzoom:n}=this._options,i=e>=t&&e<=n;i!==this._zoomVisible&&(this._zoomVisible=i,this._updateDisplayState())}_updateDisplayState(){if(!this._container)return;const e=this._state.visible&&this._zoomVisible;this._container.style.display=e?"block":"none"}_createContainer(){const e=document.createElement("div");return e.className=`maplibregl-ctrl maplibre-gl-control-grid${this._options.className?` ${this._options.className}`:""}`,this._state.visible&&this._zoomVisible||(e.style.display="none"),e.addEventListener("click",n=>n.stopPropagation()),e}_autoGrowRows(){const e=this._state.rows*this._state.columns;this._children.length>e&&(this._state.rows=Math.ceil(this._children.length/this._state.columns),this._applyGridStyle())}_applyGridStyle(){if(!this._gridEl)return;if(this._state.collapsed){this._gridEl.style.display="none";return}const e=this._options.gap;this._gridEl.style.display="grid",this._gridEl.style.gridTemplateColumns=`repeat(${this._state.columns}, auto)`,this._gridEl.style.gridTemplateRows=`repeat(${this._state.rows}, auto)`,this._gridEl.style.gap=`${e}px`,this._gridEl.style.width="100%",this._gridEl.style.justifyContent="center",this._gridEl.style.alignContent="center",this._gridEl.style.justifyItems="center",this._gridEl.style.alignItems="center"}_mountChildren(){!this._map||!this._gridEl||this._children.forEach(e=>{e.element||(e.element=e.control.onAdd(this._map),e.tooltip&&this._applyTooltip(e.element,e.tooltip),e.expandable&&!e.collapsedSnapshot&&(e.collapsedSnapshot=e.element.cloneNode(!0)),this._attachExpandListeners(e)),this._floatingEntry===e?this._mountAsFloating(e):e.element.parentNode!==this._gridEl&&this._gridEl.appendChild(e.element)})}_applyTooltip(e,t){const n=e.querySelector("button");n&&!n.title&&(n.title=t)}_unmountChildren(){this._clearFloating();const e=this._map;this._children.forEach(t=>{this._detachExpandListeners(t),t._placeholder?.parentNode&&t._placeholder.parentNode.removeChild(t._placeholder),t._placeholder=null,t.element?.parentNode&&t.element.parentNode.removeChild(t.element),e&&t.control.onRemove(e)}),this._children=this._children.map(t=>({control:t.control,element:null,expandable:t.expandable,collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null}))}_isExpandable(e){const t=e;return typeof t.on=="function"&&typeof t.collapse=="function"}_attachExpandListeners(e){if(!e.expandable)return;const t=e.control;e.expandHandler=()=>this._onChildExpand(e),e.collapseHandler=()=>this._onChildCollapse(e),t.on("expand",e.expandHandler),t.on("collapse",e.collapseHandler)}_detachExpandListeners(e){if(!e.expandable)return;const t=e.control;e.expandHandler&&t.off("expand",e.expandHandler),e.collapseHandler&&t.off("collapse",e.collapseHandler),e.expandHandler=null,e.collapseHandler=null}_onChildExpand(e){if(this._floatingEntry&&this._floatingEntry!==e&&this._collapseFloatingChild(),!e.element||!this._gridEl)return;const t=e.collapsedSnapshot?e.collapsedSnapshot.cloneNode(!0):document.createElement("div");t.classList.add("maplibre-gl-control-grid-placeholder--active"),t.addEventListener("click",()=>{e.control.collapse(),this._floatingEntry===e&&this._onChildCollapse(e)}),e._placeholder=t,this._gridEl.replaceChild(t,e.element);const n=this._ensureFloatingPanel();n.appendChild(e.element),this._floatingEntry=e,this._relocateExternalPanel(e,n),this._hideFloatingButton(e)}_onChildCollapse(e){if(this._floatingEntry!==e)return;this._showFloatingButton(e),this._restoreExternalPanel(e),e._placeholder&&e.element&&this._gridEl&&(e._placeholder.parentNode===this._gridEl?this._gridEl.replaceChild(e.element,e._placeholder):this._gridEl.appendChild(e.element)),e._placeholder=null,this._floatingPanel&&(this._floatingPanel.style.display="none"),this._floatingEntry=null;const t=e.control;typeof t.collapse=="function"&&t.collapse(),e.element&&(e.collapsedSnapshot=e.element.cloneNode(!0))}_mountAsFloating(e){if(!this._gridEl||!e.element)return;const t=e.collapsedSnapshot?e.collapsedSnapshot.cloneNode(!0):document.createElement("div");t.classList.add("maplibre-gl-control-grid-placeholder--active"),t.addEventListener("click",()=>{e.control.collapse(),this._floatingEntry===e&&this._onChildCollapse(e)}),e._placeholder=t,this._gridEl.appendChild(t);const n=this._ensureFloatingPanel();n.appendChild(e.element),this._relocateExternalPanel(e,n),e._externalPanel&&(n.style.right="0px"),this._hideFloatingButton(e)}_ensureFloatingPanel(){this._floatingPanel||(this._floatingPanel=document.createElement("div"),this._floatingPanel.className="maplibre-gl-control-grid-floating-panel",this._floatingPanel.addEventListener("click",r=>r.stopPropagation())),this._container&&this._floatingPanel.parentNode!==this._container&&this._container.appendChild(this._floatingPanel);const e=this._state.collapsed&&(this._options.title||this._options.collapsible),t=Math.max(0,this._options.padding-1),n=Math.max(0,this._options.padding-10),i=e?t-n:t;return this._floatingPanel.style.right=`-${i}px`,this._floatingPanel.style.display="block",this._floatingPanel}_clearFloating(){this._floatingEntry&&(this._showFloatingButton(this._floatingEntry),this._restoreExternalPanel(this._floatingEntry),this._floatingEntry._placeholder=null),this._floatingEntry=null,this._floatingPanel&&(this._floatingPanel.remove(),this._floatingPanel=null)}_collapseFloatingChild(){this._floatingEntry&&this._onChildCollapse(this._floatingEntry)}_hideFloatingButton(e){if(e._externalPanel)return;const t=e.control;if(t._button&&(t._button.style.display="none",e.element)){const n=e.element.classList.contains("maplibregl-ctrl-group");n&&(e.element.classList.remove("maplibregl-ctrl-group"),e.element.dataset.hadCtrlGroup="1"),!n&&!e.element.dataset.hadCtrlGroup&&(e.element.style.marginRight="0")}}_showFloatingButton(e){const t=e.control;t._button&&(t._button.style.display="",e.element&&(e.element.dataset.hadCtrlGroup?(e.element.classList.add("maplibregl-ctrl-group"),delete e.element.dataset.hadCtrlGroup):e.element.style.marginRight=""))}_relocateExternalPanel(e,t){const n=e.control;let i=null;if(typeof n.getPanelElement=="function"?i=n.getPanelElement():n._panel instanceof HTMLElement?i=n._panel:n._panel&&typeof n._panel.getElement=="function"&&(i=n._panel.getElement()),!i||!e.element||e.element.contains(i)||e._externalPanel)return;e._externalPanelParent=i.parentNode,e._externalPanel=i,i.classList.add("maplibre-gl-control-grid-relocated");const r=["_updatePanelPosition","updatePanelPosition"];e._savedPositionMethods={};for(const c of r)typeof n[c]=="function"&&(e._savedPositionMethods[c]=n[c].bind(n),n[c]=()=>{});const a=n._panel;a&&typeof a.positionRelativeTo=="function"&&(e._savedPositionMethods["_panel.positionRelativeTo"]=a.positionRelativeTo.bind(a),a.positionRelativeTo=()=>{}),typeof n.collapse=="function"&&(e._savedPositionMethods.collapse=n.collapse.bind(n),n.collapse=()=>{this._floatingEntry===e&&!this._clickInGrid&&this._onChildCollapse(e)});const o=(c,h)=>i.style.setProperty(c,h,"important");o("position","static"),o("top","auto"),o("bottom","auto"),o("left","auto"),o("right","auto"),o("z-index","auto"),t.appendChild(i),t.style.right="0px",e.element&&(e.element.style.display="none")}_restoreExternalPanel(e){if(!e._externalPanel||!e._externalPanelParent)return;const t=e._externalPanel;t.classList.remove("maplibre-gl-control-grid-relocated");const n=["position","top","bottom","left","right","z-index"];for(const i of n)t.style.removeProperty(i);if(e._externalPanelParent.appendChild(t),e._externalPanel=null,e._externalPanelParent=null,e._savedPositionMethods){const i=e.control;for(const[r,a]of Object.entries(e._savedPositionMethods))if(r==="_panel.positionRelativeTo"){const o=i._panel;o&&(o.positionRelativeTo=a)}else i[r]=a;e._savedPositionMethods=null}e.element&&(e.element.style.display="")}_render(){if(!this._container)return;const{title:e,collapsible:t,backgroundColor:n,opacity:i,borderRadius:r,padding:a,showRowColumnControls:o}=this._options;this._container.innerHTML="",this._state.collapsed?this._container.classList.add("maplibre-gl-control-grid--collapsed"):this._container.classList.remove("maplibre-gl-control-grid--collapsed");const c=this._state.collapsed&&(e||t),h=c?0:a,d=c?0:a,f=c?0:Math.max(0,a-4),m=this._state.visible&&this._zoomVisible;if(Object.assign(this._container.style,{backgroundColor:n,opacity:String(i),borderRadius:`${r}px`,padding:`${h}px ${f}px ${h}px ${d}px`,boxShadow:"0 0 0 2px rgba(0, 0, 0, 0.1)",display:m?"block":"none",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',color:"#1a1a1a"}),t||e){const y=document.createElement("div");if(y.className="maplibre-gl-control-grid-header",Object.assign(y.style,{display:"flex",alignItems:"center",justifyContent:this._state.collapsed?"center":"space-between",flexWrap:"wrap",gap:"6px",paddingBottom:(this._state.collapsed,"0"),cursor:t?"pointer":"default"}),this._state.collapsed&&t){const x=document.createElement("span");x.className="maplibre-gl-control-grid-wrench",x.innerHTML=yDe,Object.assign(x.style,{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"29px",height:"29px",lineHeight:"0",boxSizing:"border-box"}),x.setAttribute("aria-label","Map tools"),y.appendChild(x),y.addEventListener("click",()=>this.toggle())}else{const x=document.createElement("div");if(x.style.display="flex",x.style.alignItems="center",x.style.gap="6px",e){const w=document.createElement("span");w.className="maplibre-gl-control-grid-title",w.textContent=e,w.style.fontWeight="600",w.style.color="#333",x.appendChild(w)}if(o&&!this._state.collapsed){const w=document.createElement("label");w.style.display="inline-flex",w.style.alignItems="center",w.style.gap="2px",w.style.fontSize="11px",w.style.color="#333",w.innerHTML="R:";const b=document.createElement("input");b.type="number",b.min="1",b.max="12",b.value=String(this._state.rows),b.style.width="40px",b.style.padding="2px 2px",b.style.boxSizing="border-box",b.style.textAlign="center",b.style.color="#333",b.addEventListener("change",()=>this.setRows(Number(b.value)||1)),w.appendChild(b);const I=document.createElement("label");I.style.display="inline-flex",I.style.alignItems="center",I.style.gap="2px",I.style.fontSize="11px",I.style.color="#333",I.innerHTML="C:";const T=document.createElement("input");T.type="number",T.min="1",T.max="12",T.value=String(this._state.columns),T.style.width="40px",T.style.padding="2px 2px",T.style.boxSizing="border-box",T.style.textAlign="center",T.style.color="#333",T.addEventListener("change",()=>this.setColumns(Number(T.value)||1)),I.appendChild(T),x.appendChild(w),x.appendChild(I)}if(y.appendChild(x),t){const w=document.createElement("span");w.className="maplibre-gl-control-grid-toggle",w.innerHTML="&#9660;",Object.assign(w.style,{fontSize:"10px",userSelect:"none",color:"#333"}),y.appendChild(w),y.addEventListener("click",b=>{(!o||!x.contains(b.target))&&this.toggle()})}}this._container.appendChild(y)}const _=document.createElement("div");_.className="maplibre-gl-control-grid-content",Object.assign(_.style,{display:this._state.collapsed?"none":"block"}),this._gridEl=_,this._applyGridStyle(),this._container.appendChild(_),this._mountChildren()}}exports.ADVANCED_EXTENSIONS=dO;exports.ALL_EXTENSIONS=pO;exports.AddVectorAdapter=$O;exports.AddVectorControl=mS;exports.BasemapControl=lO;exports.BookmarkControl=IO;exports.COLORMAPS=S_;exports.CSV_EXTENSIONS=UM;exports.ChoroplethControl=PO;exports.CogLayerAdapter=zO;exports.CogLayerControl=uS;exports.Colorbar=aO;exports.ColorbarGuiControl=NO;exports.ControlGrid=SDe;exports.DUCKDB_EXTENSIONS=uO;exports.DXF_EXTENSIONS=GM;exports.FLATGEOBUF_EXTENSIONS=DM;exports.GEOJSON_EXTENSIONS=X1;exports.GEOPACKAGE_EXTENSIONS=LM;exports.GEOPARQUET_EXTENSIONS=RM;exports.GML_EXTENSIONS=FM;exports.GOOGLE_BASEMAPS=rO;exports.GPX_EXTENSIONS=NM;exports.GaussianSplatControl=$I;exports.GaussianSplatLayerAdapter=Rz;exports.GeoEditor=LS;exports.GeoEditorLayerAdapter=F5;exports.HtmlControl=oO;exports.HtmlGuiControl=FO;exports.InspectControl=xO;exports.KML_EXTENSIONS=kM;exports.KMZ_EXTENSIONS=PM;exports.Legend=TM;exports.LegendGuiControl=DO;exports.LidarControl=m1;exports.LidarLayerAdapter=XU;exports.MeasureControl=SO;exports.MinimapControl=EO;exports.PMTilesLayerAdapter=QO;exports.PMTilesLayerControl=pS;exports.PlanetaryComputerControl=QS;exports.PlanetaryComputerLayerAdapter=ZU;exports.PrintControl=TO;exports.RdBu=UF;exports.RdYlBu=zF;exports.RdYlGn=GF;exports.SHAPEFILE_EXTENSIONS=BM;exports.SHPJS_EXTENSIONS=hO;exports.SearchControl=cO;exports.SpinGlobeControl=OO;exports.StacLayerAdapter=HO;exports.StacLayerControl=fS;exports.StacSearchControl=kO;exports.StreetViewControl=i$;exports.SwipeControl=s$;exports.TOPOJSON_EXTENSIONS=OM;exports.TerrainControl=RK;exports.TileLayerControl=UO;exports.UsgsLidarControl=SM;exports.UsgsLidarLayerAdapter=a$;exports.VectorDatasetControl=bO;exports.ViewStateControl=CO;exports.XLSX_EXTENSIONS=zM;exports.XYZSERVICES_URL=IM;exports.ZarrLayerAdapter=GO;exports.ZarrLayerControl=dS;exports.bone=ZF;exports.buildTileUrl=Hb;exports.bwr=FF;exports.cividis=NF;exports.clamp=vK;exports.classNames=bK;exports.cool=XF;exports.coolwarm=DF;exports.debounce=KF;exports.detectFormat=fO;exports.fetchProviders=wK;exports.filterBasemaps=sO;exports.formatNumericValue=JF;exports.generateGradientCSS=xK;exports.generateId=Ec;exports.generateThumbnailUrl=CK;exports.getAcceptedExtensions=$M;exports.getColorAtPosition=nO;exports.getColormap=so;exports.getColormapNames=Y1;exports.getFileExtension=QM;exports.getFormatDescription=NK;exports.getFormatDisplayName=vO;exports.gray=jF;exports.groupBasemaps=iO;exports.hexToRgb=cS;exports.hot=YF;exports.inferno=kF;exports.interpolateColor=tO;exports.isValidColormap=q1;exports.isValidExtension=AO;exports.jet=$F;exports.magma=PF;exports.ocean=qF;exports.parseProviders=MM;exports.plasma=RF;exports.rainbow=HF;exports.readFileAsBuffer=_O;exports.requiresConversion=gO;exports.requiresDuckDB=mO;exports.rgbToHex=eO;exports.seismic=OF;exports.spectral=QF;exports.terrain=WF;exports.throttle=yK;exports.turbo=VF;exports.viridis=LF;
17062
+ `,t.addEventListener("click",()=>this.toggle()),e.appendChild(t),e}_createPanel(){const e=document.createElement("div");e.className="usgs-lidar-control-panel",e.style.width=`${this._options.panelWidth}px`,e.style.maxHeight=`${this._options.maxHeight}px`;const t=document.createElement("div");t.className="usgs-lidar-control-header";const n=document.createElement("span");n.className="usgs-lidar-control-title",n.textContent=this._options.title;const i=document.createElement("button");i.className="usgs-lidar-control-close",i.type="button",i.setAttribute("aria-label","Close panel"),i.innerHTML="&times;",i.addEventListener("click",()=>this.collapse()),t.appendChild(n),t.appendChild(i),this._panelBuilder=new fDe({onSearchByExtent:()=>this.searchByExtent(),onStartDrawing:()=>this.startDrawing(),onStopDrawing:()=>this.stopDrawing(),onSearchByDrawn:()=>{this._state.drawnBbox&&this.searchByBbox(this._state.drawnBbox)},onClearDrawn:()=>this.clearDrawnBbox(),onItemSelect:a=>this.toggleItemSelection(a),onItemLoad:a=>{this.loadItem(a).catch(()=>{})},onLoadSelected:()=>{this.loadSelectedItems().catch(()=>{})},onCopySignedUrls:()=>{this.copySignedUrls().catch(a=>{console.error("Failed to copy signed URLs:",a)})},onDownloadSelected:()=>{this.downloadSelected().catch(a=>{console.error("Failed to download selected:",a)})},onClearResults:()=>this.clearResults(),onUnloadItem:a=>this.unloadItem(a),onClearLoaded:()=>this.clearLoadedItems(),onPointSizeChange:a=>this.setPointSize(a),onOpacityChange:a=>this.setOpacity(a),onColorSchemeChange:a=>this.setColorScheme(a),onZOffsetChange:a=>this.setZOffset(a),onPickableChange:a=>this.setPickable(a),onElevationRangeChange:a=>this.setElevationRange(a),onClassificationToggle:(a,o)=>this.setClassificationVisibility(a,o),onClassificationShowAll:()=>this.showAllClassifications(),onClassificationHideAll:()=>this.hideAllClassifications(),onDataSourceChange:a=>this.setDataSource(a),onColormapChange:a=>this.setColormap(a),onColorRangeChange:a=>this.setColorRange(a),onShowMetadata:a=>this.showMetadata(a),onCrossSectionPanel:()=>this.getCrossSectionPanel()},this._state);const r=this._panelBuilder.build();return e.appendChild(t),e.appendChild(r),e}_setupEventListeners(){var e;const t=n=>{var i,r,a,o,c;const h=n.target;if((i=this._container)!=null&&i.contains(h)||(r=this._panel)!=null&&r.contains(h)||(o=(a=this._mapContainer)==null?void 0:a.querySelector(".maplibregl-canvas"))!=null&&o.contains(h))return;const d=document.querySelector(".lidar-metadata-backdrop, .lidar-chart-popup-backdrop");d?.contains(h)||(c=h.closest)!=null&&c.call(h,".lidar-metadata-backdrop, .lidar-metadata-panel, .lidar-chart-popup-backdrop, .lidar-chart-popup")||this._state.collapsed||this.collapse()};document.addEventListener("click",t,!0),window.addEventListener("resize",()=>{this._state.collapsed||this._updatePanelPosition()}),(e=this._map)==null||e.on("resize",()=>{this._state.collapsed||this._updatePanelPosition()})}_getControlPosition(){var e;const t=(e=this._container)==null?void 0:e.parentElement;return t?t.classList.contains("maplibregl-ctrl-top-left")?"top-left":t.classList.contains("maplibregl-ctrl-top-right")?"top-right":t.classList.contains("maplibregl-ctrl-bottom-left")?"bottom-left":t.classList.contains("maplibregl-ctrl-bottom-right")?"bottom-right":"top-right":"top-right"}_updatePanelPosition(){if(!this._container||!this._panel||!this._mapContainer)return;const e=this._container.querySelector(".usgs-lidar-control-toggle");if(!e)return;const t=e.getBoundingClientRect(),n=this._mapContainer.getBoundingClientRect(),i=this._getControlPosition(),r=t.top-n.top,a=n.bottom-t.bottom,o=t.left-n.left,c=n.right-t.right,h=5;switch(this._panel.style.top="",this._panel.style.bottom="",this._panel.style.left="",this._panel.style.right="",i){case"top-left":this._panel.style.top=`${r+t.height+h}px`,this._panel.style.left=`${o}px`;break;case"top-right":this._panel.style.top=`${r+t.height+h}px`,this._panel.style.right=`${c}px`;break;case"bottom-left":this._panel.style.bottom=`${a+t.height+h}px`,this._panel.style.left=`${o}px`;break;case"bottom-right":this._panel.style.bottom=`${a+t.height+h}px`,this._panel.style.right=`${c}px`;break}}getPanelElement(){return this._panel??null}}var gDe=Object.defineProperty,_De=(s,e,t)=>e in s?gDe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,pb=(s,e,t)=>_De(s,typeof e!="symbol"?e+"":e,t);class a${constructor(e){pb(this,"type","usgs-lidar"),pb(this,"_usgsControl"),pb(this,"_changeCallbacks",[]),pb(this,"_unsubscribe"),this._usgsControl=e,this._setupEventListeners()}_setupEventListeners(){const e=n=>{var i;if((i=n.pointCloud)!=null&&i.id){const r=this._usgsControl.getState();for(const[a,o]of r.loadedItems.entries())if(o.id===n.pointCloud.id){this._notifyLayerAdded(a);break}}},t=n=>{n.itemId&&this._notifyLayerRemoved(n.itemId)};this._usgsControl.on("loadcomplete",e),this._usgsControl.on("unload",t),this._unsubscribe=()=>{this._usgsControl.off("loadcomplete",e),this._usgsControl.off("unload",t)}}getLayerIds(){const e=this._usgsControl.getState();return Array.from(e.loadedItems.keys())}getLayerState(e){var t;const n=this._usgsControl.getState(),i=n.loadedItems.get(e);if(!i)return null;const r=this._usgsControl.getLidarControl(),a=r?._pointCloudManager,o=a?.getPointCloudVisibility(i.id)??!0,c=a?.getPointCloudOpacity(i.id)??((t=n.lidarState)==null?void 0:t.opacity)??1;return{visible:o,opacity:c,name:this.getName(e),isCustomLayer:!0,customLayerType:"usgs-lidar"}}setVisibility(e,t){const i=this._usgsControl.getState().loadedItems.get(e);if(!i)return;const r=this._usgsControl.getLidarControl(),a=r?._pointCloudManager;a?.setPointCloudVisibility(i.id,t)}setOpacity(e,t){const i=this._usgsControl.getState().loadedItems.get(e);if(!i)return;const r=this._usgsControl.getLidarControl(),a=r?._pointCloudManager;a?.setPointCloudOpacity(i.id,t)}getName(e){const n=this._usgsControl.getState().loadedItems.get(e);return n?n.name:e.replace(/[-_]/g," ").replace(/\b\w/g,i=>i.toUpperCase())}getSymbolType(e){return"circle"}onLayerChange(e){return this._changeCallbacks.push(e),()=>{const t=this._changeCallbacks.indexOf(e);t>=0&&this._changeCallbacks.splice(t,1)}}_notifyLayerAdded(e){this._changeCallbacks.forEach(t=>t("add",e))}_notifyLayerRemoved(e){this._changeCallbacks.forEach(t=>t("remove",e))}destroy(){var e;(e=this._unsubscribe)==null||e.call(this),this._changeCallbacks=[]}}const ADe={},vDe={title:"",position:"top-right",className:"",visible:!0,collapsible:!0,collapsed:!0,rows:1,columns:3,showRowColumnControls:!0,controls:[],backgroundColor:"rgba(255, 255, 255, 0.9)",padding:10,borderRadius:4,opacity:1,gap:6,minzoom:0,maxzoom:24,basemapStyleUrl:void 0,excludeLayers:void 0,streetViewOptions:void 0,bookmarkOptions:void 0},yDe='<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>',bDe='<svg xmlns="http://www.w3.org/2000/svg" width="29" height="29" viewBox="0 0 29 29"><path d="m10.5 14 4-8 4 8z" fill="#333"/><path d="m10.5 16 4 8 4-8z" fill="#ccc"/></svg>';class xDe{_map;_container;_icon;_rotateHandler;onAdd(e){this._map=e,this._container=document.createElement("div"),this._container.className="maplibregl-ctrl maplibregl-ctrl-group";const t=document.createElement("button");return t.className="maplibregl-ctrl-compass",t.type="button",t.title="Reset bearing to north",t.setAttribute("aria-label","Reset bearing to north"),this._icon=document.createElement("span"),this._icon.className="maplibregl-ctrl-icon",this._icon.setAttribute("aria-hidden","true"),this._icon.style.backgroundImage=`url("data:image/svg+xml,${encodeURIComponent(bDe)}")`,this._icon.style.backgroundSize="contain",this._icon.style.width="29px",this._icon.style.height="29px",this._icon.style.display="block",t.appendChild(this._icon),t.addEventListener("click",()=>this._map?.resetNorth()),this._container.appendChild(t),this._rotateHandler=()=>{this._icon&&this._map&&(this._icon.style.transform=`rotate(${-this._map.getBearing()}deg)`)},this._map.on("rotate",this._rotateHandler),this._rotateHandler(),this._container}onRemove(){this._map&&this._rotateHandler&&this._map.off("rotate",this._rotateHandler),this._container?.parentNode?.removeChild(this._container),this._map=void 0,this._container=void 0,this._icon=void 0}}const lS="maplibre-gl-components-terrain-dem",CDe="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png";class wDe{_inner;_addSource(e){e.getSource(lS)||e.addSource(lS,{type:"raster-dem",tiles:[CDe],tileSize:256,encoding:"terrarium"})}onAdd(e){return e.isStyleLoaded()?this._addSource(e):e.once("styledata",()=>this._addSource(e)),this._inner=new nr.TerrainControl({source:lS}),this._inner.onAdd(e)}onRemove(){this._inner?.onRemove(),this._inner=void 0}}const EDe={fullscreen:"Toggle fullscreen",globe:"Toggle globe projection",spinGlobe:"Spin globe",north:"Reset bearing to north",terrain:"Toggle terrain",search:"Search places",viewState:"View map state",inspect:"Inspect features",vectorDataset:"Add vector dataset",basemap:"Basemaps",cogLayer:"COG Layer",minimap:"Toggle minimap",measure:"Measure distances and areas",bookmark:"Bookmarks",print:"Export map",zarrLayer:"Zarr Layer",pmtilesLayer:"PMTiles Layer",stacLayer:"STAC Layer",stacSearch:"STAC Search",addVector:"Add vector layer",geoEditor:"Geo Editor",lidar:"LiDAR Layer",planetaryComputer:"Planetary Computer",gaussianSplat:"Gaussian Splat",streetView:"Street View",swipe:"Layer Swipe",usgsLidar:"USGS LiDAR",colorbarGui:"Colorbar",legendGui:"Legend",htmlGui:"HTML Control",tileLayer:"Tile Layer"};class SDe{_container;_gridEl;_options;_state;_children=[];_eventHandlers=new Map;_map;_handleZoom;_zoomVisible=!0;_floatingEntry=null;_floatingPanel=null;_clickInGrid=!1;_docCaptureHandler;_docBubbleHandler;constructor(e){this._options={...vDe,...e},this._state={visible:this._options.visible,collapsed:this._options.collapsed,rows:this._options.rows,columns:this._options.columns},(e?.controls??this._options.controls??[]).forEach(i=>this._children.push({control:i,element:null,expandable:this._isExpandable(i),collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null}));const n=e?.defaultControls??[];for(const i of n){const r=this._createDefaultControl(i);r&&this._children.push({control:r,element:null,expandable:this._isExpandable(r),collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null,tooltip:EDe[i]})}this._autoGrowRows()}_createDefaultControl(e){switch(e){case"fullscreen":return new nr.FullscreenControl;case"globe":return new nr.GlobeControl;case"spinGlobe":return new OO;case"north":return new xDe;case"terrain":return new wDe;case"search":return new cO({collapsed:!0});case"viewState":return new CO({collapsed:!0,enableBBox:!0});case"inspect":return new xO;case"vectorDataset":return new bO;case"basemap":return new lO({collapsed:!0});case"cogLayer":return new uS({collapsed:!0,defaultUrl:"https://data.source.coop/giswqs/opengeos/nlcd_2021_land_cover_30m.tif",defaultColormap:"none",defaultRescaleMin:0,defaultRescaleMax:4e3});case"minimap":return new EO({collapsed:!0,interactive:!0});case"measure":return new SO({collapsed:!0});case"bookmark":return new IO({collapsed:!0,...this._options.bookmarkOptions});case"print":return new TO({collapsed:!0});case"zarrLayer":return new dS({collapsed:!0,defaultUrl:"https://carbonplan-maps.s3.us-west-2.amazonaws.com/v2/demo/4d/tavg-prec-month",defaultVariable:"climate",defaultColormap:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],defaultClim:[0,300],defaultSelector:{band:"prec",month:1},defaultOpacity:.8});case"pmtilesLayer":return new pS({collapsed:!0,defaultUrl:"https://pmtiles.io/protomaps(vector)ODbL_firenze.pmtiles",defaultOpacity:.8,defaultFillColor:"steelblue",defaultLineColor:"#333"});case"stacLayer":return new fS({collapsed:!0,defaultUrl:"https://earth-search.aws.element84.com/v1/collections/sentinel-2-l2a/items/S2B_10SEG_20251229_0_L2A",defaultRescaleMin:0,defaultRescaleMax:255,defaultColormap:"none"});case"stacSearch":return new kO({collapsed:!0,catalogs:[{name:"Element84 Earth Search",url:"https://earth-search.aws.element84.com/v1"},{name:"Microsoft Planetary Computer",url:"https://planetarycomputer.microsoft.com/api/stac/v1"}],maxItems:20,defaultRescaleMin:0,defaultRescaleMax:1e4,showFootprints:!0});case"addVector":return new mS({collapsed:!0,defaultUrl:"https://flatgeobuf.org/test/data/UScounties.fgb"});case"choropleth":return new PO({collapsed:!0,defaultUrl:"https://data.source.coop/giswqs/opengeos/h3_res4_geo.parquet",defaultColormap:"viridis",defaultScheme:"quantile",defaultK:5});case"geoEditor":return new LS({collapsed:!0,columns:2});case"lidar":return new m1({collapsed:!0,maxHeight:500});case"planetaryComputer":return new QS({collapsed:!0,maxHeight:500});case"gaussianSplat":return new $I({collapsed:!0,maxHeight:500});case"streetView":{const t=ADe,n=t?.VITE_GOOGLE_MAPS_API_KEY,i=t?.VITE_MAPILLARY_ACCESS_TOKEN,r=!n&&i?"mapillary":"google";return new i$({collapsed:!0,panelWidth:450,panelHeight:350,maxHeight:500,defaultProvider:r,clickToView:!0,showMarker:!0,maxSearchRadius:200,markerOptions:{color:"#ff5722",showDirection:!1,directionColor:"#1976d2"},googleApiKey:n,mapillaryAccessToken:i,...this._options.streetViewOptions})}case"swipe":return new s$({collapsed:!0,maxHeight:500,active:!1,basemapStyle:this._options.basemapStyleUrl,excludeLayers:this._options.excludeLayers});case"usgsLidar":return new SM({collapsed:!0,maxHeight:500});case"colorbarGui":return new NO({collapsed:!0});case"legendGui":return new DO({collapsed:!0});case"htmlGui":return new FO({collapsed:!0});case"tileLayer":return new UO({collapsed:!0});default:return null}}onAdd(e){return this._map=e,this._container=this._createContainer(),this._handleZoom=()=>this._checkZoomVisibility(),this._map.on("zoom",this._handleZoom),this._checkZoomVisibility(),this._docCaptureHandler=t=>{const n=t.target,i=this._container?.contains(n),r=this._floatingPanel?.contains(n);this._clickInGrid=!!(i&&!r)},this._docBubbleHandler=()=>{this._clickInGrid=!1},document.addEventListener("click",this._docCaptureHandler,!0),document.addEventListener("click",this._docBubbleHandler,!1),this._render(),this._mountChildren(),this._container}onRemove(){this._docCaptureHandler&&(document.removeEventListener("click",this._docCaptureHandler,!0),this._docCaptureHandler=void 0),this._docBubbleHandler&&(document.removeEventListener("click",this._docBubbleHandler,!1),this._docBubbleHandler=void 0),this._map&&this._handleZoom&&(this._map.off("zoom",this._handleZoom),this._handleZoom=void 0),this._unmountChildren(),this._map=void 0,this._container?.parentNode?.removeChild(this._container),this._container=void 0,this._gridEl=void 0,this._children=[],this._eventHandlers.clear()}addControl(e){if(this._children.some(n=>n.control===e))return;const t={control:e,element:null,expandable:this._isExpandable(e),collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null};this._children.push(t),this._autoGrowRows(),this._map&&this._gridEl&&(t.element=e.onAdd(this._map),t.expandable&&(t.collapsedSnapshot=t.element.cloneNode(!0),this._attachExpandListeners(t)),this._gridEl.appendChild(t.element)),this._emit("controladd",e)}removeControl(e){const t=this._children.findIndex(i=>i.control===e);if(t===-1)return;const n=this._children[t];this._floatingEntry===n&&this._clearFloating(),this._detachExpandListeners(n),n._placeholder?.parentNode&&n._placeholder.parentNode.removeChild(n._placeholder),n.element?.parentNode&&n.element.parentNode.removeChild(n.element),this._map&&e.onRemove(this._map),this._children.splice(t,1),this._emit("controlremove",e)}setRows(e){const t=Math.max(1,Math.min(12,Math.round(e)));this._state.rows!==t&&(this._state.rows=t,this._applyGridStyle(),this._emit("update"))}setColumns(e){const t=Math.max(1,Math.min(12,Math.round(e)));this._state.columns!==t&&(this._state.columns=t,this._applyGridStyle(),this._emit("update"))}getControls(){return this._children.map(e=>e.control)}getAdapters(){const e=[];for(const t of this._children){const n=t.control;n instanceof uS?e.push(new zO(n)):n instanceof dS?e.push(new GO(n)):n instanceof pS?e.push(new QO(n)):n instanceof fS?e.push(new HO(n)):n instanceof mS?e.push(new $O(n)):n instanceof m1?e.push(new XU(n)):n instanceof QS?e.push(new ZU(n)):n instanceof $I?e.push(new Rz(n)):n instanceof SM?e.push(new a$(n)):n instanceof LS&&e.push(new F5(n))}return e}show(){this._state.visible||(this._state.visible=!0,this._updateDisplayState(),this._emit("show"))}hide(){this._state.visible&&(this._state.visible=!1,this._updateDisplayState(),this._emit("hide"))}expand(){this._state.collapsed&&(this._state.collapsed=!1,this._render(),this._emit("expand"))}collapse(){this._state.collapsed||(this._state.collapsed=!0,this._render(),this._emit("collapse"))}toggle(){this._state.collapsed?this.expand():this.collapse()}getState(){return{...this._state}}update(e){this._options={...this._options,...e},e.visible!==void 0&&(this._state.visible=e.visible),e.collapsed!==void 0&&(this._state.collapsed=e.collapsed),e.rows!==void 0&&(this._state.rows=Math.max(1,Math.min(12,e.rows))),e.columns!==void 0&&(this._state.columns=Math.max(1,Math.min(12,e.columns))),this._render(),this._emit("update")}on(e,t){this._eventHandlers.has(e)||this._eventHandlers.set(e,new Set),this._eventHandlers.get(e).add(t)}off(e,t){this._eventHandlers.get(e)?.delete(t)}_emit(e,t){const n=this._eventHandlers.get(e);if(n){const i={type:e,state:this.getState(),control:t};n.forEach(r=>r(i))}}_checkZoomVisibility(){if(!this._map)return;const e=this._map.getZoom(),{minzoom:t,maxzoom:n}=this._options,i=e>=t&&e<=n;i!==this._zoomVisible&&(this._zoomVisible=i,this._updateDisplayState())}_updateDisplayState(){if(!this._container)return;const e=this._state.visible&&this._zoomVisible;this._container.style.display=e?"block":"none"}_createContainer(){const e=document.createElement("div");return e.className=`maplibregl-ctrl maplibre-gl-control-grid${this._options.className?` ${this._options.className}`:""}`,this._state.visible&&this._zoomVisible||(e.style.display="none"),e.addEventListener("click",n=>n.stopPropagation()),e}_autoGrowRows(){const e=this._state.rows*this._state.columns;this._children.length>e&&(this._state.rows=Math.ceil(this._children.length/this._state.columns),this._applyGridStyle())}_applyGridStyle(){if(!this._gridEl)return;if(this._state.collapsed){this._gridEl.style.display="none";return}const e=this._options.gap;this._gridEl.style.display="grid",this._gridEl.style.gridTemplateColumns=`repeat(${this._state.columns}, auto)`,this._gridEl.style.gridTemplateRows=`repeat(${this._state.rows}, auto)`,this._gridEl.style.gap=`${e}px`,this._gridEl.style.width="100%",this._gridEl.style.justifyContent="center",this._gridEl.style.alignContent="center",this._gridEl.style.justifyItems="center",this._gridEl.style.alignItems="center"}_mountChildren(){!this._map||!this._gridEl||this._children.forEach(e=>{e.element||(e.element=e.control.onAdd(this._map),e.tooltip&&this._applyTooltip(e.element,e.tooltip),e.expandable&&!e.collapsedSnapshot&&(e.collapsedSnapshot=e.element.cloneNode(!0)),this._attachExpandListeners(e)),this._floatingEntry===e?this._mountAsFloating(e):e.element.parentNode!==this._gridEl&&this._gridEl.appendChild(e.element)})}_applyTooltip(e,t){const n=e.querySelector("button");n&&!n.title&&(n.title=t)}_unmountChildren(){this._clearFloating();const e=this._map;this._children.forEach(t=>{this._detachExpandListeners(t),t._placeholder?.parentNode&&t._placeholder.parentNode.removeChild(t._placeholder),t._placeholder=null,t.element?.parentNode&&t.element.parentNode.removeChild(t.element),e&&t.control.onRemove(e)}),this._children=this._children.map(t=>({control:t.control,element:null,expandable:t.expandable,collapsedSnapshot:null,expandHandler:null,collapseHandler:null,_placeholder:null,_externalPanel:null,_externalPanelParent:null,_savedPositionMethods:null}))}_isExpandable(e){const t=e;return typeof t.on=="function"&&typeof t.collapse=="function"}_attachExpandListeners(e){if(!e.expandable)return;const t=e.control;e.expandHandler=()=>this._onChildExpand(e),e.collapseHandler=()=>this._onChildCollapse(e),t.on("expand",e.expandHandler),t.on("collapse",e.collapseHandler)}_detachExpandListeners(e){if(!e.expandable)return;const t=e.control;e.expandHandler&&t.off("expand",e.expandHandler),e.collapseHandler&&t.off("collapse",e.collapseHandler),e.expandHandler=null,e.collapseHandler=null}_onChildExpand(e){if(this._floatingEntry&&this._floatingEntry!==e&&this._collapseFloatingChild(),!e.element||!this._gridEl)return;const t=e.collapsedSnapshot?e.collapsedSnapshot.cloneNode(!0):document.createElement("div");t.classList.add("maplibre-gl-control-grid-placeholder--active"),t.addEventListener("click",()=>{e.control.collapse(),this._floatingEntry===e&&this._onChildCollapse(e)}),e._placeholder=t,this._gridEl.replaceChild(t,e.element);const n=this._ensureFloatingPanel();n.appendChild(e.element),this._floatingEntry=e,this._relocateExternalPanel(e,n),this._hideFloatingButton(e)}_onChildCollapse(e){if(this._floatingEntry!==e)return;this._showFloatingButton(e),this._restoreExternalPanel(e),e._placeholder&&e.element&&this._gridEl&&(e._placeholder.parentNode===this._gridEl?this._gridEl.replaceChild(e.element,e._placeholder):this._gridEl.appendChild(e.element)),e._placeholder=null,this._floatingPanel&&(this._floatingPanel.style.display="none"),this._floatingEntry=null;const t=e.control;typeof t.collapse=="function"&&t.collapse(),e.element&&(e.collapsedSnapshot=e.element.cloneNode(!0))}_mountAsFloating(e){if(!this._gridEl||!e.element)return;const t=e.collapsedSnapshot?e.collapsedSnapshot.cloneNode(!0):document.createElement("div");t.classList.add("maplibre-gl-control-grid-placeholder--active"),t.addEventListener("click",()=>{e.control.collapse(),this._floatingEntry===e&&this._onChildCollapse(e)}),e._placeholder=t,this._gridEl.appendChild(t);const n=this._ensureFloatingPanel();n.appendChild(e.element),this._relocateExternalPanel(e,n),e._externalPanel&&(n.style.right="0px"),this._hideFloatingButton(e)}_ensureFloatingPanel(){this._floatingPanel||(this._floatingPanel=document.createElement("div"),this._floatingPanel.className="maplibre-gl-control-grid-floating-panel",this._floatingPanel.addEventListener("click",r=>r.stopPropagation())),this._container&&this._floatingPanel.parentNode!==this._container&&this._container.appendChild(this._floatingPanel);const e=this._state.collapsed&&(this._options.title||this._options.collapsible),t=Math.max(0,this._options.padding-1),n=Math.max(0,this._options.padding-10),i=e?t-n:t;return this._floatingPanel.style.right=`-${i}px`,this._floatingPanel.style.display="block",this._floatingPanel}_clearFloating(){this._floatingEntry&&(this._showFloatingButton(this._floatingEntry),this._restoreExternalPanel(this._floatingEntry),this._floatingEntry._placeholder=null),this._floatingEntry=null,this._floatingPanel&&(this._floatingPanel.remove(),this._floatingPanel=null)}_collapseFloatingChild(){this._floatingEntry&&this._onChildCollapse(this._floatingEntry)}_hideFloatingButton(e){if(e._externalPanel)return;const t=e.control;if(t._button&&(t._button.style.display="none",e.element)){const n=e.element.classList.contains("maplibregl-ctrl-group");n&&(e.element.classList.remove("maplibregl-ctrl-group"),e.element.dataset.hadCtrlGroup="1"),!n&&!e.element.dataset.hadCtrlGroup&&(e.element.style.marginRight="0")}}_showFloatingButton(e){const t=e.control;t._button&&(t._button.style.display="",e.element&&(e.element.dataset.hadCtrlGroup?(e.element.classList.add("maplibregl-ctrl-group"),delete e.element.dataset.hadCtrlGroup):e.element.style.marginRight=""))}_relocateExternalPanel(e,t){const n=e.control;let i=null;if(typeof n.getPanelElement=="function"?i=n.getPanelElement():n._panel instanceof HTMLElement?i=n._panel:n._panel&&typeof n._panel.getElement=="function"&&(i=n._panel.getElement()),!i||!e.element||e.element.contains(i)||e._externalPanel)return;e._externalPanelParent=i.parentNode,e._externalPanel=i,i.classList.add("maplibre-gl-control-grid-relocated");const r=["_updatePanelPosition","updatePanelPosition"];e._savedPositionMethods={};for(const c of r)typeof n[c]=="function"&&(e._savedPositionMethods[c]=n[c].bind(n),n[c]=()=>{});const a=n._panel;a&&typeof a.positionRelativeTo=="function"&&(e._savedPositionMethods["_panel.positionRelativeTo"]=a.positionRelativeTo.bind(a),a.positionRelativeTo=()=>{}),typeof n.collapse=="function"&&(e._savedPositionMethods.collapse=n.collapse.bind(n),n.collapse=()=>{this._floatingEntry===e&&!this._clickInGrid&&this._onChildCollapse(e)});const o=(c,h)=>i.style.setProperty(c,h,"important");o("position","static"),o("top","auto"),o("bottom","auto"),o("left","auto"),o("right","auto"),o("z-index","auto"),t.appendChild(i),t.style.right="0px",e.element&&(e.element.style.display="none")}_restoreExternalPanel(e){if(!e._externalPanel||!e._externalPanelParent)return;const t=e._externalPanel;t.classList.remove("maplibre-gl-control-grid-relocated");const n=["position","top","bottom","left","right","z-index"];for(const i of n)t.style.removeProperty(i);if(e._externalPanelParent.appendChild(t),e._externalPanel=null,e._externalPanelParent=null,e._savedPositionMethods){const i=e.control;for(const[r,a]of Object.entries(e._savedPositionMethods))if(r==="_panel.positionRelativeTo"){const o=i._panel;o&&(o.positionRelativeTo=a)}else i[r]=a;e._savedPositionMethods=null}e.element&&(e.element.style.display="")}_render(){if(!this._container)return;const{title:e,collapsible:t,backgroundColor:n,opacity:i,borderRadius:r,padding:a,showRowColumnControls:o}=this._options;this._container.innerHTML="",this._state.collapsed?this._container.classList.add("maplibre-gl-control-grid--collapsed"):this._container.classList.remove("maplibre-gl-control-grid--collapsed");const c=this._state.collapsed&&(e||t),h=c?0:a,d=c?0:a,f=c?0:Math.max(0,a-4),m=this._state.visible&&this._zoomVisible;if(Object.assign(this._container.style,{backgroundColor:n,opacity:String(i),borderRadius:`${r}px`,padding:`${h}px ${f}px ${h}px ${d}px`,boxShadow:"0 0 0 2px rgba(0, 0, 0, 0.1)",display:m?"block":"none",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',color:"#1a1a1a"}),t||e){const y=document.createElement("div");if(y.className="maplibre-gl-control-grid-header",Object.assign(y.style,{display:"flex",alignItems:"center",justifyContent:this._state.collapsed?"center":"space-between",flexWrap:"wrap",gap:"6px",paddingBottom:(this._state.collapsed,"0"),cursor:t?"pointer":"default"}),this._state.collapsed&&t){const x=document.createElement("span");x.className="maplibre-gl-control-grid-wrench",x.innerHTML=yDe,Object.assign(x.style,{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"29px",height:"29px",lineHeight:"0",boxSizing:"border-box"}),x.setAttribute("aria-label","Map tools"),y.appendChild(x),y.addEventListener("click",()=>this.toggle())}else{const x=document.createElement("div");if(x.style.display="flex",x.style.alignItems="center",x.style.gap="6px",e){const w=document.createElement("span");w.className="maplibre-gl-control-grid-title",w.textContent=e,w.style.fontWeight="600",w.style.color="#333",x.appendChild(w)}if(o&&!this._state.collapsed){const w=document.createElement("label");w.style.display="inline-flex",w.style.alignItems="center",w.style.gap="2px",w.style.fontSize="11px",w.style.color="#333",w.innerHTML="R:";const b=document.createElement("input");b.type="number",b.min="1",b.max="12",b.value=String(this._state.rows),b.style.width="40px",b.style.padding="2px 2px",b.style.boxSizing="border-box",b.style.textAlign="center",b.style.color="#333",b.addEventListener("change",()=>this.setRows(Number(b.value)||1)),w.appendChild(b);const I=document.createElement("label");I.style.display="inline-flex",I.style.alignItems="center",I.style.gap="2px",I.style.fontSize="11px",I.style.color="#333",I.innerHTML="C:";const T=document.createElement("input");T.type="number",T.min="1",T.max="12",T.value=String(this._state.columns),T.style.width="40px",T.style.padding="2px 2px",T.style.boxSizing="border-box",T.style.textAlign="center",T.style.color="#333",T.addEventListener("change",()=>this.setColumns(Number(T.value)||1)),I.appendChild(T),x.appendChild(w),x.appendChild(I)}if(y.appendChild(x),t){const w=document.createElement("span");w.className="maplibre-gl-control-grid-toggle",w.innerHTML="&#9660;",Object.assign(w.style,{fontSize:"10px",userSelect:"none",color:"#333"}),y.appendChild(w),y.addEventListener("click",b=>{(!o||!x.contains(b.target))&&this.toggle()})}}this._container.appendChild(y)}const _=document.createElement("div");_.className="maplibre-gl-control-grid-content",Object.assign(_.style,{display:this._state.collapsed?"none":"block"}),this._gridEl=_,this._applyGridStyle(),this._container.appendChild(_),this._mountChildren()}}exports.ADVANCED_EXTENSIONS=dO;exports.ALL_EXTENSIONS=pO;exports.AddVectorAdapter=$O;exports.AddVectorControl=mS;exports.BasemapControl=lO;exports.BookmarkControl=IO;exports.COLORMAPS=S_;exports.CSV_EXTENSIONS=UM;exports.ChoroplethControl=PO;exports.CogLayerAdapter=zO;exports.CogLayerControl=uS;exports.Colorbar=aO;exports.ColorbarGuiControl=NO;exports.ControlGrid=SDe;exports.DUCKDB_EXTENSIONS=uO;exports.DXF_EXTENSIONS=GM;exports.FLATGEOBUF_EXTENSIONS=DM;exports.GEOJSON_EXTENSIONS=X1;exports.GEOPACKAGE_EXTENSIONS=LM;exports.GEOPARQUET_EXTENSIONS=RM;exports.GML_EXTENSIONS=FM;exports.GOOGLE_BASEMAPS=rO;exports.GPX_EXTENSIONS=NM;exports.GaussianSplatControl=$I;exports.GaussianSplatLayerAdapter=Rz;exports.GeoEditor=LS;exports.GeoEditorLayerAdapter=F5;exports.HtmlControl=oO;exports.HtmlGuiControl=FO;exports.InspectControl=xO;exports.KML_EXTENSIONS=kM;exports.KMZ_EXTENSIONS=PM;exports.Legend=TM;exports.LegendGuiControl=DO;exports.LidarControl=m1;exports.LidarLayerAdapter=XU;exports.MeasureControl=SO;exports.MinimapControl=EO;exports.PMTilesLayerAdapter=QO;exports.PMTilesLayerControl=pS;exports.PlanetaryComputerControl=QS;exports.PlanetaryComputerLayerAdapter=ZU;exports.PrintControl=TO;exports.RdBu=UF;exports.RdYlBu=zF;exports.RdYlGn=GF;exports.SHAPEFILE_EXTENSIONS=BM;exports.SHPJS_EXTENSIONS=hO;exports.SearchControl=cO;exports.SpinGlobeControl=OO;exports.StacLayerAdapter=HO;exports.StacLayerControl=fS;exports.StacSearchControl=kO;exports.StreetViewControl=i$;exports.SwipeControl=s$;exports.TOPOJSON_EXTENSIONS=OM;exports.TerrainControl=RK;exports.TileLayerControl=UO;exports.UsgsLidarControl=SM;exports.UsgsLidarLayerAdapter=a$;exports.VectorDatasetControl=bO;exports.ViewStateControl=CO;exports.XLSX_EXTENSIONS=zM;exports.XYZSERVICES_URL=IM;exports.ZarrLayerAdapter=GO;exports.ZarrLayerControl=dS;exports.bone=ZF;exports.buildTileUrl=Hb;exports.bwr=FF;exports.cividis=NF;exports.clamp=vK;exports.classNames=bK;exports.cool=XF;exports.coolwarm=DF;exports.debounce=KF;exports.detectFormat=fO;exports.fetchProviders=wK;exports.filterBasemaps=sO;exports.formatNumericValue=JF;exports.generateGradientCSS=xK;exports.generateId=Ec;exports.generateThumbnailUrl=CK;exports.getAcceptedExtensions=$M;exports.getColorAtPosition=nO;exports.getColormap=so;exports.getColormapNames=Y1;exports.getFileExtension=QM;exports.getFormatDescription=NK;exports.getFormatDisplayName=vO;exports.gray=jF;exports.groupBasemaps=iO;exports.hexToRgb=cS;exports.hot=YF;exports.inferno=kF;exports.interpolateColor=tO;exports.isValidColormap=q1;exports.isValidExtension=AO;exports.jet=$F;exports.magma=PF;exports.ocean=qF;exports.parseProviders=MM;exports.plasma=RF;exports.rainbow=HF;exports.readFileAsBuffer=_O;exports.requiresConversion=gO;exports.requiresDuckDB=mO;exports.rgbToHex=eO;exports.seismic=OF;exports.spectral=QF;exports.terrain=WF;exports.throttle=yK;exports.turbo=VF;exports.viridis=LF;