ocearo-ui 2.1.0 → 2.1.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.
- package/404.html +1 -1
- package/__next.__PAGE__.txt +3 -3
- package/__next._full.txt +3 -3
- package/__next._tree.txt +2 -2
- package/_next/static/chunks/0-19-ljntm5ig.js +1 -0
- package/_next/static/chunks/{096zaxs1gf_3q.js → 0-g-ujyrfgutp.js} +2 -2
- package/_next/static/chunks/0c91q-13wh8hk.js +1 -0
- package/_next/static/chunks/{2aivnrnff0avu.js → 0fv1wwxeyagln.js} +2 -2
- package/_next/static/chunks/0nq1o9-m7bhjg.js +1 -0
- package/_next/static/chunks/0o7hu-sypv2u9.js +1 -0
- package/_next/static/chunks/{2wayx8t5r5fi9.js → 0ujzg6ofy2r73.js} +1 -1
- package/_next/static/chunks/162bfkgcudvew.js +9 -0
- package/_next/static/chunks/{1l-jew0-1-3eq.js → 1bvrvkcwf3ge-.js} +2 -2
- package/_next/static/chunks/{33u782y6vhw-f.js → 1do-2zwq3ws0f.js} +1 -1
- package/_next/static/chunks/{1u6o5_s2b39xh.js → 1ho2ekxa9io1_.js} +1 -1
- package/_next/static/chunks/1m3-nchdgcxy1.css +3 -0
- package/_next/static/chunks/{3qik_nv7zlj4e.js → 1quvj-861o57h.js} +1 -1
- package/_next/static/chunks/{0j11dppxb9l0b.js → 1zuex-na8y-w4.js} +1 -1
- package/_next/static/chunks/{2r98jty3a4wel.js → 271ys-u920uqd.js} +5 -5
- package/_next/static/chunks/2_iau6x7s0vil.js +1131 -0
- package/_next/static/chunks/2ab6q6u6uo_bf.js +1 -0
- package/_next/static/chunks/2pt-apz8_pa4j.js +1 -0
- package/_next/static/chunks/2rnpgrmuyhpkd.js +119 -0
- package/_next/static/chunks/3e5jmzthktu9w.js +1 -0
- package/_next/static/chunks/3l25j666ze4c1.js +1 -0
- package/_next/static/chunks/3r8nellt-dsed.js +1 -0
- package/_next/static/chunks/{2gr1d26f-ymoh.js → 3utjjgdhnlx86.js} +1 -1
- package/_next/static/chunks/44f5hh9caupby.js +1 -0
- package/_not-found/__next._full.txt +2 -2
- package/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/_not-found/__next._tree.txt +2 -2
- package/_not-found.html +1 -1
- package/_not-found.txt +2 -2
- package/index.html +1 -1
- package/index.txt +3 -3
- package/package.json +1 -1
- package/settings/__next._full.txt +3 -3
- package/settings/__next._tree.txt +2 -2
- package/settings/__next.settings.__PAGE__.txt +3 -3
- package/settings.html +1 -1
- package/settings.txt +3 -3
- package/_next/static/chunks/0b3cus8izqkmg.js +0 -119
- package/_next/static/chunks/0zvzu5fnwh4_a.js +0 -9
- package/_next/static/chunks/1_g85m2d7jjpo.css +0 -3
- package/_next/static/chunks/1arvue9o-atui.js +0 -739
- package/_next/static/chunks/1cp1kkarm5gxz.js +0 -1
- package/_next/static/chunks/1hz_mzl8l35j8.js +0 -1
- package/_next/static/chunks/1k72cpd0x8veh.js +0 -1
- package/_next/static/chunks/2fe99e03gnvg9.js +0 -1
- package/_next/static/chunks/2fthh9f57zzm2.js +0 -1
- package/_next/static/chunks/2v6ebsavxlgyw.js +0 -1
- package/_next/static/chunks/3qzb9nvvw-b-k.js +0 -1
- package/_next/static/chunks/3td9mnhvcj9cq.js +0 -1
- package/_next/static/chunks/41mro59si-xxc.js +0 -1
- /package/_next/static/{EuchA2ImhjrwCnR5WjCLX → m52l9mE01yTljNwbWjYQ7}/_buildManifest.js +0 -0
- /package/_next/static/{EuchA2ImhjrwCnR5WjCLX → m52l9mE01yTljNwbWjYQ7}/_clientMiddlewareManifest.js +0 -0
- /package/_next/static/{EuchA2ImhjrwCnR5WjCLX → m52l9mE01yTljNwbWjYQ7}/_ssgManifest.js +0 -0
|
@@ -263,7 +263,7 @@ void main() {
|
|
|
263
263
|
// Uniform colours are linear: convert for the screen like built-in materials
|
|
264
264
|
#include <colorspace_fragment>
|
|
265
265
|
}
|
|
266
|
-
`;e.s(["default",0,({y:e=-.32})=>{let{scene:t}=(0,tG.default)(),{heading:n,offset:i}=(0,tk.default)(),o=(0,a.useMemo)(()=>new h.ShaderMaterial({uniforms:{uGround:{value:new h.Color},uLine:{value:new h.Color},uBackground:{value:new h.Color},uOffset:{value:new h.Vector2},uSpacing:{value:50*tP()},uFadeNear:{value:220},uFadeFar:{value:1100}},vertexShader:tL,fragmentShader:tO,depthWrite:!1}),[]);return(0,a.useEffect)(()=>{o.uniforms.uGround.value.set(t.ground),o.uniforms.uLine.value.set(t.grid),o.uniforms.uBackground.value.set(t.background)},[o,t]),(0,a.useEffect)(()=>{let e=o.uniforms.uSpacing.value,t=tP();o.uniforms.uOffset.value.set(i.x*t%e,i.y*t%e)},[o,i]),(0,a.useEffect)(()=>()=>o.dispose(),[o]),(0,r.jsx)("group",{rotation:[0,n,0],position:[0,e,0],children:(0,r.jsx)("mesh",{rotation:[-Math.PI/2,0,0],material:o,renderOrder:-1,children:(0,r.jsx)("circleGeometry",{args:[2400,64]})})})}],20440)},30297,82897,e=>{"use strict";var t=e.i(31067),r=e.i(90874),a=e.i(95393),n=e.i(71645),i=e.i(90072),o=Object.defineProperty;class s{constructor(){((e,t)=>{let r,a;a=void 0,(r="symbol"!=typeof t?t+"":t)in e?o(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,a=r.length;t<a;t++)r[t].call(this,e);e.target=null}}}var l=Object.defineProperty,u=(e,t,r)=>{let a;return(a="symbol"!=typeof t?t+"":t)in e?l(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,r};let h=new i.Ray,c=new i.Plane,d=Math.cos(Math.PI/180*70),f=(e,t)=>(e%t+t)%t;class p extends s{constructor(e,t){super(),u(this,"object"),u(this,"domElement"),u(this,"enabled",!0),u(this,"target",new i.Vector3),u(this,"minDistance",0),u(this,"maxDistance",1/0),u(this,"minZoom",0),u(this,"maxZoom",1/0),u(this,"minPolarAngle",0),u(this,"maxPolarAngle",Math.PI),u(this,"minAzimuthAngle",-1/0),u(this,"maxAzimuthAngle",1/0),u(this,"enableDamping",!1),u(this,"dampingFactor",.05),u(this,"enableZoom",!0),u(this,"zoomSpeed",1),u(this,"enableRotate",!0),u(this,"rotateSpeed",1),u(this,"enablePan",!0),u(this,"panSpeed",1),u(this,"screenSpacePanning",!0),u(this,"keyPanSpeed",7),u(this,"zoomToCursor",!1),u(this,"autoRotate",!1),u(this,"autoRotateSpeed",2),u(this,"reverseOrbit",!1),u(this,"reverseHorizontalOrbit",!1),u(this,"reverseVerticalOrbit",!1),u(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),u(this,"mouseButtons",{LEFT:i.MOUSE.ROTATE,MIDDLE:i.MOUSE.DOLLY,RIGHT:i.MOUSE.PAN}),u(this,"touches",{ONE:i.TOUCH.ROTATE,TWO:i.TOUCH.DOLLY_PAN}),u(this,"target0"),u(this,"position0"),u(this,"zoom0"),u(this,"_domElementKeyEvents",null),u(this,"getPolarAngle"),u(this,"getAzimuthalAngle"),u(this,"setPolarAngle"),u(this,"setAzimuthalAngle"),u(this,"getDistance"),u(this,"getZoomScale"),u(this,"listenToKeyEvents"),u(this,"stopListenToKeyEvents"),u(this,"saveState"),u(this,"reset"),u(this,"update"),u(this,"connect"),u(this,"dispose"),u(this,"dollyIn"),u(this,"dollyOut"),u(this,"getScale"),u(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>m.phi,this.getAzimuthalAngle=()=>m.theta,this.setPolarAngle=e=>{let t=f(e,2*Math.PI),a=m.phi;a<0&&(a+=2*Math.PI),t<0&&(t+=2*Math.PI);let n=Math.abs(t-a);2*Math.PI-n<n&&(t<a?t+=2*Math.PI:a+=2*Math.PI),g.phi=t-a,r.update()},this.setAzimuthalAngle=e=>{let t=f(e,2*Math.PI),a=m.theta;a<0&&(a+=2*Math.PI),t<0&&(t+=2*Math.PI);let n=Math.abs(t-a);2*Math.PI-n<n&&(t<a?t+=2*Math.PI:a+=2*Math.PI),g.theta=t-a,r.update()},this.getDistance=()=>r.object.position.distanceTo(r.target),this.listenToKeyEvents=e=>{e.addEventListener("keydown",ee),this._domElementKeyEvents=e},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",ee),this._domElementKeyEvents=null},this.saveState=()=>{r.target0.copy(r.target),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.reset=()=>{r.target.copy(r.target0),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(a),r.update(),l=s.NONE},this.update=(()=>{let t=new i.Vector3,n=new i.Vector3(0,1,0),o=new i.Quaternion().setFromUnitVectors(e.up,n),u=o.clone().invert(),f=new i.Vector3,B=new i.Quaternion,y=2*Math.PI;return function(){let C=r.object.position;o.setFromUnitVectors(e.up,n),u.copy(o).invert(),t.copy(C).sub(r.target),t.applyQuaternion(o),m.setFromVector3(t),r.autoRotate&&l===s.NONE&&U(2*Math.PI/60/60*r.autoRotateSpeed),r.enableDamping?(m.theta+=g.theta*r.dampingFactor,m.phi+=g.phi*r.dampingFactor):(m.theta+=g.theta,m.phi+=g.phi);let b=r.minAzimuthAngle,M=r.maxAzimuthAngle;isFinite(b)&&isFinite(M)&&(b<-Math.PI?b+=y:b>Math.PI&&(b-=y),M<-Math.PI?M+=y:M>Math.PI&&(M-=y),b<=M?m.theta=Math.max(b,Math.min(M,m.theta)):m.theta=m.theta>(b+M)/2?Math.max(b,m.theta):Math.min(M,m.theta)),m.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,m.phi)),m.makeSafe(),!0===r.enableDamping?r.target.addScaledVector(v,r.dampingFactor):r.target.add(v),r.zoomToCursor&&I||r.object.isOrthographicCamera?m.radius=j(m.radius):m.radius=j(m.radius*A),t.setFromSpherical(m),t.applyQuaternion(u),C.copy(r.target).add(t),r.object.matrixAutoUpdate||r.object.updateMatrix(),r.object.lookAt(r.target),!0===r.enableDamping?(g.theta*=1-r.dampingFactor,g.phi*=1-r.dampingFactor,v.multiplyScalar(1-r.dampingFactor)):(g.set(0,0,0),v.set(0,0,0));let x=!1;if(r.zoomToCursor&&I){let a=null;if(r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera){let e=t.length();a=j(e*A);let n=e-a;r.object.position.addScaledVector(T,n),r.object.updateMatrixWorld()}else if(r.object.isOrthographicCamera){let e=new i.Vector3(S.x,S.y,0);e.unproject(r.object),r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/A)),r.object.updateProjectionMatrix(),x=!0;let n=new i.Vector3(S.x,S.y,0);n.unproject(r.object),r.object.position.sub(n).add(e),r.object.updateMatrixWorld(),a=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),r.zoomToCursor=!1;null!==a&&(r.screenSpacePanning?r.target.set(0,0,-1).transformDirection(r.object.matrix).multiplyScalar(a).add(r.object.position):(h.origin.copy(r.object.position),h.direction.set(0,0,-1).transformDirection(r.object.matrix),Math.abs(r.object.up.dot(h.direction))<d?e.lookAt(r.target):(c.setFromNormalAndCoplanarPoint(r.object.up,r.target),h.intersectPlane(c,r.target))))}else r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera&&(x=1!==A)&&(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/A)),r.object.updateProjectionMatrix());return A=1,I=!1,!!(x||f.distanceToSquared(r.object.position)>p||8*(1-B.dot(r.object.quaternion))>p)&&(r.dispatchEvent(a),f.copy(r.object.position),B.copy(r.object.quaternion),x=!1,!0)}})(),this.connect=e=>{r.domElement=e,r.domElement.style.touchAction="none",r.domElement.addEventListener("contextmenu",et),r.domElement.addEventListener("pointerdown",Y),r.domElement.addEventListener("pointercancel",q),r.domElement.addEventListener("wheel",$)},this.dispose=()=>{var e,t,a,n,i,o;r.domElement&&(r.domElement.style.touchAction="auto"),null==(e=r.domElement)||e.removeEventListener("contextmenu",et),null==(t=r.domElement)||t.removeEventListener("pointerdown",Y),null==(a=r.domElement)||a.removeEventListener("pointercancel",q),null==(n=r.domElement)||n.removeEventListener("wheel",$),null==(i=r.domElement)||i.ownerDocument.removeEventListener("pointermove",Z),null==(o=r.domElement)||o.ownerDocument.removeEventListener("pointerup",q),null!==r._domElementKeyEvents&&r._domElementKeyEvents.removeEventListener("keydown",ee)};const r=this,a={type:"change"},n={type:"start"},o={type:"end"},s={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=s.NONE;const p=1e-6,m=new i.Spherical,g=new i.Spherical;let A=1;const v=new i.Vector3,B=new i.Vector2,y=new i.Vector2,C=new i.Vector2,b=new i.Vector2,M=new i.Vector2,x=new i.Vector2,w=new i.Vector2,E=new i.Vector2,F=new i.Vector2,T=new i.Vector3,S=new i.Vector2;let I=!1;const R=[],D={};function G(){return Math.pow(.95,r.zoomSpeed)}function U(e){r.reverseOrbit||r.reverseHorizontalOrbit?g.theta+=e:g.theta-=e}function _(e){r.reverseOrbit||r.reverseVerticalOrbit?g.phi+=e:g.phi-=e}const k=(()=>{let e=new i.Vector3;return function(t,r){e.setFromMatrixColumn(r,0),e.multiplyScalar(-t),v.add(e)}})(),P=(()=>{let e=new i.Vector3;return function(t,a){!0===r.screenSpacePanning?e.setFromMatrixColumn(a,1):(e.setFromMatrixColumn(a,0),e.crossVectors(r.object.up,e)),e.multiplyScalar(t),v.add(e)}})(),L=(()=>{let e=new i.Vector3;return function(t,a){let n=r.domElement;if(n&&r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera){let i=r.object.position;e.copy(i).sub(r.target);let o=e.length();k(2*t*(o*=Math.tan(r.object.fov/2*Math.PI/180))/n.clientHeight,r.object.matrix),P(2*a*o/n.clientHeight,r.object.matrix)}else n&&r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera?(k(t*(r.object.right-r.object.left)/r.object.zoom/n.clientWidth,r.object.matrix),P(a*(r.object.top-r.object.bottom)/r.object.zoom/n.clientHeight,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)}})();function O(e){r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera||r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera?A=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function H(e){if(!r.zoomToCursor||!r.domElement)return;I=!0;let t=r.domElement.getBoundingClientRect(),a=e.clientX-t.left,n=e.clientY-t.top,i=t.width,o=t.height;S.x=a/i*2-1,S.y=-(n/o*2)+1,T.set(S.x,S.y,1).unproject(r.object).sub(r.object.position).normalize()}function j(e){return Math.max(r.minDistance,Math.min(r.maxDistance,e))}function J(e){B.set(e.clientX,e.clientY)}function N(e){b.set(e.clientX,e.clientY)}function K(){if(1==R.length)B.set(R[0].pageX,R[0].pageY);else{let e=.5*(R[0].pageX+R[1].pageX),t=.5*(R[0].pageY+R[1].pageY);B.set(e,t)}}function X(){if(1==R.length)b.set(R[0].pageX,R[0].pageY);else{let e=.5*(R[0].pageX+R[1].pageX),t=.5*(R[0].pageY+R[1].pageY);b.set(e,t)}}function V(){let e=R[0].pageX-R[1].pageX,t=R[0].pageY-R[1].pageY,r=Math.sqrt(e*e+t*t);w.set(0,r)}function W(e){if(1==R.length)y.set(e.pageX,e.pageY);else{let t=ea(e),r=.5*(e.pageX+t.x),a=.5*(e.pageY+t.y);y.set(r,a)}C.subVectors(y,B).multiplyScalar(r.rotateSpeed);let t=r.domElement;t&&(U(2*Math.PI*C.x/t.clientHeight),_(2*Math.PI*C.y/t.clientHeight)),B.copy(y)}function Q(e){if(1==R.length)M.set(e.pageX,e.pageY);else{let t=ea(e),r=.5*(e.pageX+t.x),a=.5*(e.pageY+t.y);M.set(r,a)}x.subVectors(M,b).multiplyScalar(r.panSpeed),L(x.x,x.y),b.copy(M)}function z(e){var t;let a=ea(e),n=e.pageX-a.x,i=e.pageY-a.y,o=Math.sqrt(n*n+i*i);E.set(0,o),F.set(0,Math.pow(E.y/w.y,r.zoomSpeed)),t=F.y,O(A/t),w.copy(E)}function Y(e){var t,a,o;!1!==r.enabled&&(0===R.length&&(null==(t=r.domElement)||t.ownerDocument.addEventListener("pointermove",Z),null==(a=r.domElement)||a.ownerDocument.addEventListener("pointerup",q)),o=e,R.push(o),"touch"===e.pointerType?function(e){switch(er(e),R.length){case 1:switch(r.touches.ONE){case i.TOUCH.ROTATE:if(!1===r.enableRotate)return;K(),l=s.TOUCH_ROTATE;break;case i.TOUCH.PAN:if(!1===r.enablePan)return;X(),l=s.TOUCH_PAN;break;default:l=s.NONE}break;case 2:switch(r.touches.TWO){case i.TOUCH.DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&V(),r.enablePan&&X(),l=s.TOUCH_DOLLY_PAN;break;case i.TOUCH.DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&V(),r.enableRotate&&K(),l=s.TOUCH_DOLLY_ROTATE;break;default:l=s.NONE}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(n)}(e):function(e){let t;switch(e.button){case 0:t=r.mouseButtons.LEFT;break;case 1:t=r.mouseButtons.MIDDLE;break;case 2:t=r.mouseButtons.RIGHT;break;default:t=-1}switch(t){case i.MOUSE.DOLLY:if(!1===r.enableZoom)return;H(e),w.set(e.clientX,e.clientY),l=s.DOLLY;break;case i.MOUSE.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enablePan)return;N(e),l=s.PAN}else{if(!1===r.enableRotate)return;J(e),l=s.ROTATE}break;case i.MOUSE.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enableRotate)return;J(e),l=s.ROTATE}else{if(!1===r.enablePan)return;N(e),l=s.PAN}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(n)}(e))}function Z(e){!1!==r.enabled&&("touch"===e.pointerType?function(e){switch(er(e),l){case s.TOUCH_ROTATE:if(!1===r.enableRotate)return;W(e),r.update();break;case s.TOUCH_PAN:if(!1===r.enablePan)return;Q(e),r.update();break;case s.TOUCH_DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&z(e),r.enablePan&&Q(e),r.update();break;case s.TOUCH_DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&z(e),r.enableRotate&&W(e),r.update();break;default:l=s.NONE}}(e):function(e){if(!1!==r.enabled)switch(l){case s.ROTATE:let t;if(!1===r.enableRotate)return;y.set(e.clientX,e.clientY),C.subVectors(y,B).multiplyScalar(r.rotateSpeed),(t=r.domElement)&&(U(2*Math.PI*C.x/t.clientHeight),_(2*Math.PI*C.y/t.clientHeight)),B.copy(y),r.update();break;case s.DOLLY:var a,n;if(!1===r.enableZoom)return;(E.set(e.clientX,e.clientY),F.subVectors(E,w),F.y>0)?(a=G(),O(A/a)):F.y<0&&(n=G(),O(A*n)),w.copy(E),r.update();break;case s.PAN:if(!1===r.enablePan)return;M.set(e.clientX,e.clientY),x.subVectors(M,b).multiplyScalar(r.panSpeed),L(x.x,x.y),b.copy(M),r.update()}}(e))}function q(e){var t,a,n;(function(e){delete D[e.pointerId];for(let t=0;t<R.length;t++)if(R[t].pointerId==e.pointerId)return void R.splice(t,1)})(e),0===R.length&&(null==(t=r.domElement)||t.releasePointerCapture(e.pointerId),null==(a=r.domElement)||a.ownerDocument.removeEventListener("pointermove",Z),null==(n=r.domElement)||n.ownerDocument.removeEventListener("pointerup",q)),r.dispatchEvent(o),l=s.NONE}function $(e){if(!1!==r.enabled&&!1!==r.enableZoom&&(l===s.NONE||l===s.ROTATE)){var t,a;e.preventDefault(),r.dispatchEvent(n),(H(e),e.deltaY<0)?(t=G(),O(A*t)):e.deltaY>0&&(a=G(),O(A/a)),r.update(),r.dispatchEvent(o)}}function ee(e){if(!1!==r.enabled&&!1!==r.enablePan){let t=!1;switch(e.code){case r.keys.UP:L(0,r.keyPanSpeed),t=!0;break;case r.keys.BOTTOM:L(0,-r.keyPanSpeed),t=!0;break;case r.keys.LEFT:L(r.keyPanSpeed,0),t=!0;break;case r.keys.RIGHT:L(-r.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),r.update())}}function et(e){!1!==r.enabled&&e.preventDefault()}function er(e){let t=D[e.pointerId];void 0===t&&(t=new i.Vector2,D[e.pointerId]=t),t.set(e.pageX,e.pageY)}function ea(e){return D[(e.pointerId===R[0].pointerId?R[1]:R[0]).pointerId]}this.dollyIn=(e=G())=>{O(A*e),r.update()},this.dollyOut=(e=G())=>{O(A/e),r.update()},this.getScale=()=>A,this.setScale=e=>{O(e),r.update()},this.getZoomScale=()=>G(),void 0!==t&&this.connect(t),this.update()}}let m=n.forwardRef(({makeDefault:e,camera:i,regress:o,domElement:s,enableDamping:l=!0,keyEvents:u=!1,onChange:h,onStart:c,onEnd:d,...f},m)=>{let g=(0,r.useThree)(e=>e.invalidate),A=(0,r.useThree)(e=>e.camera),v=(0,r.useThree)(e=>e.gl),B=(0,r.useThree)(e=>e.events),y=(0,r.useThree)(e=>e.setEvents),C=(0,r.useThree)(e=>e.set),b=(0,r.useThree)(e=>e.get),M=(0,r.useThree)(e=>e.performance),x=i||A,w=s||B.connected||v.domElement,E=n.useMemo(()=>new p(x),[x]);return(0,a.useFrame)(()=>{E.enabled&&E.update()},-1),n.useEffect(()=>(u&&E.connect(!0===u?w:u),E.connect(w),()=>void E.dispose()),[u,w,o,E,g]),n.useEffect(()=>{let e=e=>{g(),o&&M.regress(),h&&h(e)},t=e=>{c&&c(e)},r=e=>{d&&d(e)};return E.addEventListener("change",e),E.addEventListener("start",t),E.addEventListener("end",r),()=>{E.removeEventListener("start",t),E.removeEventListener("end",r),E.removeEventListener("change",e)}},[h,c,d,E,g,y]),n.useEffect(()=>{if(e){let e=b().controls;return C({controls:E}),()=>C({controls:e})}},[e,E]),n.createElement("primitive",(0,t.default)({ref:m,object:E,enableDamping:l},f))});e.s(["OrbitControls",0,m],30297);let g=n.forwardRef(({envMap:e,resolution:o=256,frames:s=1/0,makeDefault:l,children:u,...h},c)=>{let d=(0,r.useThree)(({set:e})=>e),f=(0,r.useThree)(({camera:e})=>e),p=(0,r.useThree)(({size:e})=>e),m=n.useRef(null);n.useImperativeHandle(c,()=>m.current,[]);let g=n.useRef(null),A=function(e){let t=(0,r.useThree)(e=>e.size),a=(0,r.useThree)(e=>e.viewport),o="number"==typeof e?e:t.width*a.dpr,s=t.height*a.dpr,l=("number"==typeof e?void 0:e)||{},{samples:u=0,depth:h,...c}=l,d=null!=h?h:l.depthBuffer,f=n.useMemo(()=>{let e=new i.WebGLRenderTarget(o,s,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,type:i.HalfFloatType,...c});return d&&(e.depthTexture=new i.DepthTexture(o,s,i.FloatType)),e.samples=u,e},[]);return n.useLayoutEffect(()=>{f.setSize(o,s),u&&(f.samples=u)},[u,f,o,s]),n.useEffect(()=>()=>f.dispose(),[]),f}(o);n.useLayoutEffect(()=>{h.manual||(m.current.aspect=p.width/p.height)},[p,h]),n.useLayoutEffect(()=>{m.current.updateProjectionMatrix()});let v=0,B=null,y="function"==typeof u;return(0,a.useFrame)(t=>{y&&(s===1/0||v<s)&&(g.current.visible=!1,t.gl.setRenderTarget(A),B=t.scene.background,e&&(t.scene.background=e),t.gl.render(t.scene,m.current),t.scene.background=B,t.gl.setRenderTarget(null),g.current.visible=!0,v++)}),n.useLayoutEffect(()=>{if(l)return d(()=>({camera:m.current})),()=>d(()=>({camera:f}))},[m,l,d]),n.createElement(n.Fragment,null,n.createElement("perspectiveCamera",(0,t.default)({ref:m},h),!y&&u),n.createElement("group",{ref:g},y&&u(A.texture)))});e.s(["PerspectiveCamera",0,g],82897)},93282,e=>{"use strict";var t=e.i(61949);e.s(["useLoader",()=>t.H])},80566,e=>{"use strict";var t=e.i(61949);e.s(["extend",()=>t.e])},1888,93059,e=>{"use strict";var t=e.i(61949);e.s(["createPortal",()=>t.q],1888),e.s(["applyProps",()=>t.v],93059)},46457,68911,27543,21359,e=>{"use strict";let t;var r=e.i(90072);function a(e,t){if(t===r.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==r.TriangleFanDrawMode&&t!==r.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let a=e.getIndex();if(null===a){let t=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),a=e.getIndex()}let n=a.count-2,i=[];if(a)if(t===r.TriangleFanDrawMode)for(let e=1;e<=n;e++)i.push(a.getX(0)),i.push(a.getX(e)),i.push(a.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(i.push(a.getX(e)),i.push(a.getX(e+1)),i.push(a.getX(e+2))):(i.push(a.getX(e+2)),i.push(a.getX(e+1)),i.push(a.getX(e)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let o=e.clone();return o.setIndex(i),o.clearGroups(),o}}e.s(["toCreasedNormals",0,function(e,t=Math.PI/3){let a=Math.cos(t),n=(1+1e-10)*100,i=[new r.Vector3,new r.Vector3,new r.Vector3],o=new r.Vector3,s=new r.Vector3,l=new r.Vector3,u=new r.Vector3;function h(e){let t=~~(e.x*n),r=~~(e.y*n),a=~~(e.z*n);return`${t},${r},${a}`}let c=e.index?e.toNonIndexed():e,d=c.attributes.position,f={};for(let e=0,t=d.count/3;e<t;e++){let t=3*e,a=i[0].fromBufferAttribute(d,t+0),n=i[1].fromBufferAttribute(d,t+1),l=i[2].fromBufferAttribute(d,t+2);o.subVectors(l,n),s.subVectors(a,n);let u=new r.Vector3().crossVectors(o,s).normalize();for(let e=0;e<3;e++){let t=h(i[e]);t in f||(f[t]=[]),f[t].push(u)}}let p=new Float32Array(3*d.count),m=new r.BufferAttribute(p,3,!1);for(let e=0,t=d.count/3;e<t;e++){let t=3*e,r=i[0].fromBufferAttribute(d,t+0),n=i[1].fromBufferAttribute(d,t+1),c=i[2].fromBufferAttribute(d,t+2);o.subVectors(c,n),s.subVectors(r,n),l.crossVectors(o,s).normalize();for(let e=0;e<3;e++){let r=f[h(i[e])];u.set(0,0,0);for(let e=0,t=r.length;e<t;e++){let t=r[e];l.dot(t)>a&&u.add(t)}u.normalize(),m.setXYZ(t+e,u.x,u.y,u.z)}}return c.setAttribute("normal",m),c},"toTrianglesDrawMode",0,a],68911);var n=e.i(31497);function i(e){if("u">typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,a=e.length;r<a;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let o="srgb",s="srgb-linear";class l extends r.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new p(e)}),this.register(function(e){return new m(e)}),this.register(function(e){return new x(e)}),this.register(function(e){return new w(e)}),this.register(function(e){return new E(e)}),this.register(function(e){return new A(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new B(e)}),this.register(function(e){return new y(e)}),this.register(function(e){return new f(e)}),this.register(function(e){return new C(e)}),this.register(function(e){return new g(e)}),this.register(function(e){return new M(e)}),this.register(function(e){return new b(e)}),this.register(function(e){return new c(e)}),this.register(function(e){return new F(e)}),this.register(function(e){return new T(e)})}load(e,t,a,n){let i,o=this;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){let t=r.LoaderUtils.extractUrlBase(e);i=r.LoaderUtils.resolveURL(t,this.path)}else i=r.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){n?n(t):console.error(t),o.manager.itemError(e),o.manager.itemEnd(e)},l=new r.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(r){try{o.parse(r,i,function(r){t(r),o.manager.itemEnd(e)},s)}catch(e){s(e)}},a,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,a){let n,o={},s={};if("string"==typeof e)n=JSON.parse(e);else if(e instanceof ArrayBuffer)if(i(new Uint8Array(e.slice(0,4)))===S){try{o[h.KHR_BINARY_GLTF]=new I(e)}catch(e){a&&a(e);return}n=JSON.parse(o[h.KHR_BINARY_GLTF].content)}else n=JSON.parse(i(new Uint8Array(e)));else n=e;if(void 0===n.asset||n.asset.version[0]<2){a&&a(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let l=new Y(n,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](l);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[t.name]=t,o[t.name]=!0}if(n.extensionsUsed)for(let e=0;e<n.extensionsUsed.length;++e){let t=n.extensionsUsed[e],r=n.extensionsRequired||[];switch(t){case h.KHR_MATERIALS_UNLIT:o[t]=new d;break;case h.KHR_DRACO_MESH_COMPRESSION:o[t]=new R(n,this.dracoLoader);break;case h.KHR_TEXTURE_TRANSFORM:o[t]=new D;break;case h.KHR_MESH_QUANTIZATION:o[t]=new G;break;default:r.indexOf(t)>=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(o),l.setPlugins(s),l.parse(r,a)}parseAsync(e,t){let r=this;return new Promise(function(a,n){r.parse(e,t,a,n)})}}function u(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let h={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 c{constructor(e){this.parser=e,this.name=h.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,a=t.length;r<a;r++){let a=t[r];a.extensions&&a.extensions[this.name]&&void 0!==a.extensions[this.name].light&&e._addNodeRef(this.cache,a.extensions[this.name].light)}}_loadLight(e){let t,a=this.parser,n="light:"+e,i=a.cache.get(n);if(i)return i;let o=a.json,l=((o.extensions&&o.extensions[this.name]||{}).lights||[])[e],u=new r.Color(0xffffff);void 0!==l.color&&u.setRGB(l.color[0],l.color[1],l.color[2],s);let h=void 0!==l.range?l.range:0;switch(l.type){case"directional":(t=new r.DirectionalLight(u)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new r.PointLight(u)).distance=h;break;case"spot":(t=new r.SpotLight(u)).distance=h,l.spot=l.spot||{},l.spot.innerConeAngle=void 0!==l.spot.innerConeAngle?l.spot.innerConeAngle:0,l.spot.outerConeAngle=void 0!==l.spot.outerConeAngle?l.spot.outerConeAngle:Math.PI/4,t.angle=l.spot.outerConeAngle,t.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return t.position.set(0,0,0),t.decay=2,V(t,l),void 0!==l.intensity&&(t.intensity=l.intensity),t.name=a.createUniqueName(l.name||"light_"+e),i=Promise.resolve(t),a.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,a=r.json.nodes[e],n=(a.extensions&&a.extensions[this.name]||{}).light;return void 0===n?null:this._loadLight(n).then(function(e){return r._getNodeRef(t.cache,n,e)})}}class d{constructor(){this.name=h.KHR_MATERIALS_UNLIT}getMaterialType(){return r.MeshBasicMaterial}extendParams(e,t,a){let n=[];e.color=new r.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],s),e.opacity=t[3]}void 0!==i.baseColorTexture&&n.push(a.assignTexture(e,"map",i.baseColorTexture,o))}return Promise.all(n)}}class f{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let a=r.extensions[this.name].emissiveStrength;return void 0!==a&&(t.emissiveIntensity=a),Promise.resolve()}}class p{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],o=n.extensions[this.name];if(void 0!==o.clearcoatFactor&&(t.clearcoat=o.clearcoatFactor),void 0!==o.clearcoatTexture&&i.push(a.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),void 0!==o.clearcoatRoughnessFactor&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),void 0!==o.clearcoatRoughnessTexture&&i.push(a.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),void 0!==o.clearcoatNormalTexture&&(i.push(a.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),void 0!==o.clearcoatNormalTexture.scale)){let e=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new r.Vector2(e,e)}return Promise.all(i)}}class m{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_DISPERSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let a=r.extensions[this.name];return t.dispersion=void 0!==a.dispersion?a.dispersion:0,Promise.resolve()}}class g{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return void 0!==i.iridescenceFactor&&(t.iridescence=i.iridescenceFactor),void 0!==i.iridescenceTexture&&n.push(r.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),void 0!==i.iridescenceIor&&(t.iridescenceIOR=i.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==i.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),void 0!==i.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),void 0!==i.iridescenceThicknessTexture&&n.push(r.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(n)}}class A{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_SHEEN}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[];t.sheenColor=new r.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;let l=n.extensions[this.name];if(void 0!==l.sheenColorFactor){let e=l.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],s)}return void 0!==l.sheenRoughnessFactor&&(t.sheenRoughness=l.sheenRoughnessFactor),void 0!==l.sheenColorTexture&&i.push(a.assignTexture(t,"sheenColorMap",l.sheenColorTexture,o)),void 0!==l.sheenRoughnessTexture&&i.push(a.assignTexture(t,"sheenRoughnessMap",l.sheenRoughnessTexture)),Promise.all(i)}}class v{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return void 0!==i.transmissionFactor&&(t.transmission=i.transmissionFactor),void 0!==i.transmissionTexture&&n.push(r.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(n)}}class B{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_VOLUME}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],o=n.extensions[this.name];t.thickness=void 0!==o.thicknessFactor?o.thicknessFactor:0,void 0!==o.thicknessTexture&&i.push(a.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;let l=o.attenuationColor||[1,1,1];return t.attenuationColor=new r.Color().setRGB(l[0],l[1],l[2],s),Promise.all(i)}}class y{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_IOR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let a=r.extensions[this.name];return t.ior=void 0!==a.ior?a.ior:1.5,Promise.resolve()}}class C{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_SPECULAR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],l=n.extensions[this.name];t.specularIntensity=void 0!==l.specularFactor?l.specularFactor:1,void 0!==l.specularTexture&&i.push(a.assignTexture(t,"specularIntensityMap",l.specularTexture));let u=l.specularColorFactor||[1,1,1];return t.specularColor=new r.Color().setRGB(u[0],u[1],u[2],s),void 0!==l.specularColorTexture&&i.push(a.assignTexture(t,"specularColorMap",l.specularColorTexture,o)),Promise.all(i)}}class b{constructor(e){this.parser=e,this.name=h.EXT_MATERIALS_BUMP}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return t.bumpScale=void 0!==i.bumpFactor?i.bumpFactor:1,void 0!==i.bumpTexture&&n.push(r.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(n)}}class M{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return void 0!==i.anisotropyStrength&&(t.anisotropy=i.anisotropyStrength),void 0!==i.anisotropyRotation&&(t.anisotropyRotation=i.anisotropyRotation),void 0!==i.anisotropyTexture&&n.push(r.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(n)}}class x{constructor(e){this.parser=e,this.name=h.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,r=t.json,a=r.textures[e];if(!a.extensions||!a.extensions[this.name])return null;let n=a.extensions[this.name],i=t.options.ktx2Loader;if(!i)if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,n.source,i)}}class w{constructor(e){this.parser=e,this.name=h.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,a=r.json,n=a.textures[e];if(!n.extensions||!n.extensions[t])return null;let i=n.extensions[t],o=a.images[i.source],s=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then(function(n){if(n)return r.loadTextureImage(e,i.source,s);if(a.extensionsRequired&&a.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class E{constructor(e){this.parser=e,this.name=h.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,a=r.json,n=a.textures[e];if(!n.extensions||!n.extensions[t])return null;let i=n.extensions[t],o=a.images[i.source],s=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then(function(n){if(n)return r.loadTextureImage(e,i.source,s);if(a.extensionsRequired&&a.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class F{constructor(e){this.name=h.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],a=this.parser.getDependency("buffer",e.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return a.then(function(t){let r=e.byteOffset||0,a=e.byteLength||0,i=e.count,o=e.byteStride,s=new Uint8Array(t,r,a);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(i,o,s,e.mode,e.filter).then(function(e){return e.buffer}):n.ready.then(function(){let t=new ArrayBuffer(i*o);return n.decodeGltfBuffer(new Uint8Array(t),i,o,s,e.mode,e.filter),t})})}}}class T{constructor(e){this.name=h.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||void 0===a.mesh)return null;for(let e of t.meshes[a.mesh].primitives)if(e.mode!==P.TRIANGLES&&e.mode!==P.TRIANGLE_STRIP&&e.mode!==P.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=a.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),a=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of a){let t=new r.Matrix4,a=new r.Vector3,s=new r.Quaternion,l=new r.Vector3(1,1,1),u=new r.InstancedMesh(e.geometry,e.material,n);for(let e=0;e<n;e++)o.TRANSLATION&&a.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&s.fromBufferAttribute(o.ROTATION,e),o.SCALE&&l.fromBufferAttribute(o.SCALE,e),u.setMatrixAt(e,t.compose(a,s,l));for(let t in o)if("_COLOR_0"===t){let e=o[t];u.instanceColor=new r.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,o[t]);r.Object3D.prototype.copy.call(u,e),this.parser.assignFinalMaterial(u),i.push(u)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}}let S="glTF";class I{constructor(e){this.name=h.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:i(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==S)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-12,a=new DataView(e,12);let n=0;for(;n<r;){const t=a.getUint32(n,!0);n+=4;const r=a.getUint32(n,!0);if(n+=4,0x4e4f534a===r){const r=new Uint8Array(e,12+n,t);this.content=i(r)}else if(5130562===r){const r=12+n;this.body=e.slice(r,r+t)}n+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class R{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=h.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let r=this.json,a=this.dracoLoader,n=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,o={},l={},u={};for(let e in i)o[J[e]||e.toLowerCase()]=i[e];for(let t in e.attributes){let a=J[t]||t.toLowerCase();if(void 0!==i[t]){let n=r.accessors[e.attributes[t]],i=L[n.componentType];u[a]=i.name,l[a]=!0===n.normalized}}return t.getDependency("bufferView",n).then(function(e){return new Promise(function(t,r){a.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],a=l[t];void 0!==a&&(r.normalized=a)}t(e)},o,u,s,r)})})}}class D{constructor(){this.name=h.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class G{constructor(){this.name=h.KHR_MESH_QUANTIZATION}}class U extends r.Interpolant{constructor(e,t,r,a){super(e,t,r,a)}copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,a=this.valueSize,n=e*a*3+a;for(let e=0;e!==a;e++)t[e]=r[n+e];return t}interpolate_(e,t,r,a){let n=this.resultBuffer,i=this.sampleValues,o=this.valueSize,s=2*o,l=3*o,u=a-t,h=(r-t)/u,c=h*h,d=c*h,f=e*l,p=f-l,m=-2*d+3*c,g=d-c,A=1-m,v=g-c+h;for(let e=0;e!==o;e++){let t=i[p+e+o],r=i[p+e+s]*u,a=i[f+e+o],l=i[f+e]*u;n[e]=A*t+v*r+m*a+g*l}return n}}let _=new r.Quaternion;class k extends U{interpolate_(e,t,r,a){let n=super.interpolate_(e,t,r,a);return _.fromArray(n).normalize().toArray(n),n}}let P={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},L={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},O={9728:r.NearestFilter,9729:r.LinearFilter,9984:r.NearestMipmapNearestFilter,9985:r.LinearMipmapNearestFilter,9986:r.NearestMipmapLinearFilter,9987:r.LinearMipmapLinearFilter},H={33071:r.ClampToEdgeWrapping,33648:r.MirroredRepeatWrapping,10497:r.RepeatWrapping},j={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},J={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...n.version>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},N={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},K={CUBICSPLINE:void 0,LINEAR:r.InterpolateLinear,STEP:r.InterpolateDiscrete};function X(e,t,r){for(let a in r.extensions)void 0===e[a]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[a]=r.extensions[a])}function V(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function W(e){let t="",r=Object.keys(e).sort();for(let a=0,n=r.length;a<n;a++)t+=r[a]+":"+e[r[a]]+";";return t}function Q(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let z=new r.Matrix4;class Y{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new u,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 a=!1,n=!1,i=-1;"u">typeof navigator&&void 0!==navigator.userAgent&&(a=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"<typeof createImageBitmap||a||n&&i<98?this.textureLoader=new r.TextureLoader(this.options.manager):this.textureLoader=new r.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new r.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,a=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let i={scene:t[0][a.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:a.asset,parser:r,userData:{}};return X(n,i,a),V(i,a),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(let e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,a=t.length;r<a;r++){let a=t[r].joints;for(let t=0,r=a.length;t<r;t++)e[a[t]].isBone=!0}for(let t=0,a=e.length;t<a;t++){let a=e[t];void 0!==a.mesh&&(this._addNodeRef(this.meshCache,a.mesh),void 0!==a.skin&&(r[a.mesh].isSkinnedMesh=!0)),void 0!==a.camera&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let a=r.clone(),n=(e,t)=>{let r=this.associations.get(e);for(let[a,i]of(null!=r&&this.associations.set(t,r),e.children.entries()))n(i,t.children[a])};return n(r,a),a.name+="_instance_"+e.uses[t]++,a}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let a=e(t[r]);if(a)return a}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let a=0;a<t.length;a++){let n=e(t[a]);n&&r.push(n)}return r}getDependency(e,t){let r=e+":"+t,a=this.cache.get(r);if(!a){switch(e){case"scene":a=this.loadScene(t);break;case"node":a=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":a=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":a=this.loadAccessor(t);break;case"bufferView":a=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":a=this.loadBuffer(t);break;case"material":a=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":a=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":a=this.loadSkin(t);break;case"animation":a=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":a=this.loadCamera(t);break;default:if(!(a=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,a)}return a}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,a){return r.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],a=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[h.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,i){a.load(r.LoaderUtils.resolveURL(t.uri,n.path),e,void 0,function(){i(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,a=t.byteOffset||0;return e.slice(a,a+r)})}loadAccessor(e){let t=this,a=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=j[n.type],t=L[n.componentType],a=!0===n.normalized,i=new t(n.count*e);return Promise.resolve(new r.BufferAttribute(i,e,a))}let i=[];return void 0!==n.bufferView?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),void 0!==n.sparse&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(e){let i,o,s=e[0],l=j[n.type],u=L[n.componentType],h=u.BYTES_PER_ELEMENT,c=h*l,d=n.byteOffset||0,f=void 0!==n.bufferView?a.bufferViews[n.bufferView].byteStride:void 0,p=!0===n.normalized;if(f&&f!==c){let e=Math.floor(d/f),a="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,c=t.cache.get(a);c||(i=new u(s,e*f,n.count*f/h),c=new r.InterleavedBuffer(i,f/h),t.cache.add(a,c)),o=new r.InterleavedBufferAttribute(c,l,d%f/h,p)}else i=null===s?new u(n.count*l):new u(s,d,n.count*l),o=new r.BufferAttribute(i,l,p);if(void 0!==n.sparse){let t=j.SCALAR,a=L[n.sparse.indices.componentType],i=n.sparse.indices.byteOffset||0,h=n.sparse.values.byteOffset||0,c=new a(e[1],i,n.sparse.count*t),d=new u(e[2],h,n.sparse.count*l);null!==s&&(o=new r.BufferAttribute(o.array.slice(),o.itemSize,o.normalized));for(let e=0,t=c.length;e<t;e++){let t=c[e];if(o.setX(t,d[e*l]),l>=2&&o.setY(t,d[e*l+1]),l>=3&&o.setZ(t,d[e*l+2]),l>=4&&o.setW(t,d[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,a=t.textures[e].source,n=t.images[a],i=this.textureLoader;if(n.uri){let e=r.manager.getHandler(n.uri);null!==e&&(i=e)}return this.loadTextureImage(e,a,i)}loadTextureImage(e,t,a){let n=this,i=this.json,o=i.textures[e],s=i.images[t],l=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];let u=this.loadImageSource(t,a).then(function(t){t.flipY=!1,t.name=o.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let a=(i.samplers||{})[o.sampler]||{};return t.magFilter=O[a.magFilter]||r.LinearFilter,t.minFilter=O[a.minFilter]||r.LinearMipmapLinearFilter,t.wrapS=H[a.wrapS]||r.RepeatWrapping,t.wrapT=H[a.wrapT]||r.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){let a=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=a.images[e],o=self.URL||self.webkitURL,s=i.uri||"",l=!1;if(void 0!==i.bufferView)s=this.getDependency("bufferView",i.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:i.mimeType});return s=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let u=Promise.resolve(s).then(function(e){return new Promise(function(a,i){let o=a;!0===t.isImageBitmapLoader&&(o=function(e){let t=new r.Texture(e);t.needsUpdate=!0,a(t)}),t.load(r.LoaderUtils.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===l&&o.revokeObjectURL(s),V(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,r,a){let n=this;return this.getDependency("texture",r.index).then(function(i){if(!i)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((i=i.clone()).channel=r.texCoord),n.extensions[h.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[h.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=n.associations.get(i);i=n.extensions[h.KHR_TEXTURE_TRANSFORM].extendTexture(i,e),n.associations.set(i,t)}}return void 0!==a&&("number"==typeof a&&(a=3001===a?o:s),"colorSpace"in i?i.colorSpace=a:i.encoding=a===o?3001:3e3),e[t]=i,i})}assignFinalMaterial(e){let t=e.geometry,a=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+a.uuid,t=this.cache.get(e);t||(t=new r.PointsMaterial,r.Material.prototype.copy.call(t,a),t.color.copy(a.color),t.map=a.map,t.sizeAttenuation=!1,this.cache.add(e,t)),a=t}else if(e.isLine){let e="LineBasicMaterial:"+a.uuid,t=this.cache.get(e);t||(t=new r.LineBasicMaterial,r.Material.prototype.copy.call(t,a),t.color.copy(a.color),t.map=a.map,this.cache.add(e,t)),a=t}if(n||i||o){let e="ClonedMaterial:"+a.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=a.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(a))),a=t}e.material=a}getMaterialType(){return r.MeshStandardMaterial}loadMaterial(e){let t,a=this,n=this.json,i=this.extensions,l=n.materials[e],u={},c=l.extensions||{},d=[];if(c[h.KHR_MATERIALS_UNLIT]){let e=i[h.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),d.push(e.extendParams(u,l,a))}else{let n=l.pbrMetallicRoughness||{};if(u.color=new r.Color(1,1,1),u.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;u.color.setRGB(e[0],e[1],e[2],s),u.opacity=e[3]}void 0!==n.baseColorTexture&&d.push(a.assignTexture(u,"map",n.baseColorTexture,o)),u.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,u.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(d.push(a.assignTexture(u,"metalnessMap",n.metallicRoughnessTexture)),d.push(a.assignTexture(u,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),d.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,u)})))}!0===l.doubleSided&&(u.side=r.DoubleSide);let f=l.alphaMode||"OPAQUE";if("BLEND"===f?(u.transparent=!0,u.depthWrite=!1):(u.transparent=!1,"MASK"===f&&(u.alphaTest=void 0!==l.alphaCutoff?l.alphaCutoff:.5)),void 0!==l.normalTexture&&t!==r.MeshBasicMaterial&&(d.push(a.assignTexture(u,"normalMap",l.normalTexture)),u.normalScale=new r.Vector2(1,1),void 0!==l.normalTexture.scale)){let e=l.normalTexture.scale;u.normalScale.set(e,e)}if(void 0!==l.occlusionTexture&&t!==r.MeshBasicMaterial&&(d.push(a.assignTexture(u,"aoMap",l.occlusionTexture)),void 0!==l.occlusionTexture.strength&&(u.aoMapIntensity=l.occlusionTexture.strength)),void 0!==l.emissiveFactor&&t!==r.MeshBasicMaterial){let e=l.emissiveFactor;u.emissive=new r.Color().setRGB(e[0],e[1],e[2],s)}return void 0!==l.emissiveTexture&&t!==r.MeshBasicMaterial&&d.push(a.assignTexture(u,"emissiveMap",l.emissiveTexture,o)),Promise.all(d).then(function(){let r=new t(u);return l.name&&(r.name=l.name),V(r,l),a.associations.set(r,{materials:e}),l.extensions&&X(i,r,l),r})}createUniqueName(e){let t=r.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,a=this.extensions,n=this.primitiveCache,i=[];for(let o=0,s=e.length;o<s;o++){let s=e[o],l=function(e){let t,r=e.extensions&&e.extensions[h.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+W(r.attributes):e.indices+":"+W(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,a=e.targets.length;r<a;r++)t+=":"+W(e.targets[r]);return t}(s),u=n[l];if(u)i.push(u.promise);else{let e;e=s.extensions&&s.extensions[h.KHR_DRACO_MESH_COMPRESSION]?function(e){return a[h.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return Z(r,e,t)})}(s):Z(new r.BufferGeometry,s,t),n[l]={primitive:s,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){let t=this,n=this.json,i=this.extensions,o=n.meshes[e],s=o.primitives,l=[];for(let e=0,t=s.length;e<t;e++){var u;let t=void 0===s[e].material?(void 0===(u=this.cache).DefaultMaterial&&(u.DefaultMaterial=new r.MeshStandardMaterial({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:r.FrontSide})),u.DefaultMaterial):this.getDependency("material",s[e].material);l.push(t)}return l.push(t.loadGeometries(s)),Promise.all(l).then(function(n){let l=n.slice(0,n.length-1),u=n[n.length-1],h=[];for(let n=0,c=u.length;n<c;n++){let c,d=u[n],f=s[n],p=l[n];if(f.mode===P.TRIANGLES||f.mode===P.TRIANGLE_STRIP||f.mode===P.TRIANGLE_FAN||void 0===f.mode)!0===(c=!0===o.isSkinnedMesh?new r.SkinnedMesh(d,p):new r.Mesh(d,p)).isSkinnedMesh&&c.normalizeSkinWeights(),f.mode===P.TRIANGLE_STRIP?c.geometry=a(c.geometry,r.TriangleStripDrawMode):f.mode===P.TRIANGLE_FAN&&(c.geometry=a(c.geometry,r.TriangleFanDrawMode));else if(f.mode===P.LINES)c=new r.LineSegments(d,p);else if(f.mode===P.LINE_STRIP)c=new r.Line(d,p);else if(f.mode===P.LINE_LOOP)c=new r.LineLoop(d,p);else if(f.mode===P.POINTS)c=new r.Points(d,p);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+f.mode);Object.keys(c.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,a=t.weights.length;r<a;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,a=r.length;t<a;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(c,o),c.name=t.createUniqueName(o.name||"mesh_"+e),V(c,o),f.extensions&&X(i,c,f),t.assignFinalMaterial(c),h.push(c)}for(let r=0,a=h.length;r<a;r++)t.associations.set(h[r],{meshes:e,primitives:r});if(1===h.length)return o.extensions&&X(i,h[0],o),h[0];let c=new r.Group;o.extensions&&X(i,c,o),t.associations.set(c,{meshes:e});for(let e=0,t=h.length;e<t;e++)c.add(h[e]);return c})}loadCamera(e){let t,a=this.json.cameras[e],n=a[a.type];return n?("perspective"===a.type?t=new r.PerspectiveCamera(r.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===a.type&&(t=new r.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),V(t,a),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],a=[];for(let e=0,r=t.joints.length;e<r;e++)a.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(e){let a=e.pop(),n=[],i=[];for(let o=0,s=e.length;o<s;o++){let s=e[o];if(s){n.push(s);let e=new r.Matrix4;null!==a&&e.fromArray(a.array,16*o),i.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[o])}return new r.Skeleton(n,i)})}loadAnimation(e){let t=this.json,a=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,o=[],s=[],l=[],u=[],h=[];for(let e=0,t=n.channels.length;e<t;e++){let t=n.channels[e],r=n.samplers[t.sampler],a=t.target,i=a.node,c=void 0!==n.parameters?n.parameters[r.input]:r.input,d=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==a.node&&(o.push(this.getDependency("node",i)),s.push(this.getDependency("accessor",c)),l.push(this.getDependency("accessor",d)),u.push(r),h.push(a))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u),Promise.all(h)]).then(function(e){let t=e[0],n=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=n[e],h=o[e],c=s[e],d=l[e];if(void 0===r)continue;r.updateMatrix&&r.updateMatrix();let f=a._createAnimationTracks(r,i,h,c,d);if(f)for(let e=0;e<f.length;e++)u.push(f[e])}return new r.AnimationClip(i,void 0,u)})}createNodeMesh(e){let t=this.json,r=this,a=t.nodes[e];return void 0===a.mesh?null:r.getDependency("mesh",a.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,a.mesh,e);return void 0!==a.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=a.weights.length;t<r;t++)e.morphTargetInfluences[t]=a.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),a=[],n=t.children||[];for(let e=0,t=n.length;e<t;e++)a.push(this.getDependency("node",n[e]));let i=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(a),i]).then(function(e){let t=e[0],r=e[1],a=e[2];null!==a&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(a,z)});for(let e=0,a=r.length;e<a;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,a=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let i=t.nodes[e],o=i.name?n.createUniqueName(i.name):"",s=[],l=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return l&&s.push(l),void 0!==i.camera&&s.push(n.getDependency("camera",i.camera).then(function(e){return n._getNodeRef(n.cameraCache,i.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){s.push(e)}),this.nodeCache[e]=Promise.all(s).then(function(t){let s;if((s=!0===i.isBone?new r.Bone:t.length>1?new r.Group:1===t.length?t[0]:new r.Object3D)!==t[0])for(let e=0,r=t.length;e<r;e++)s.add(t[e]);if(i.name&&(s.userData.name=i.name,s.name=o),V(s,i),i.extensions&&X(a,s,i),void 0!==i.matrix){let e=new r.Matrix4;e.fromArray(i.matrix),s.applyMatrix4(e)}else void 0!==i.translation&&s.position.fromArray(i.translation),void 0!==i.rotation&&s.quaternion.fromArray(i.rotation),void 0!==i.scale&&s.scale.fromArray(i.scale);return n.associations.has(s)||n.associations.set(s,{}),n.associations.get(s).nodes=e,s}),this.nodeCache[e]}loadScene(e){let t=this.extensions,a=this.json.scenes[e],n=this,i=new r.Group;a.name&&(i.name=n.createUniqueName(a.name)),V(i,a),a.extensions&&X(t,i,a);let o=a.nodes||[],s=[];for(let e=0,t=o.length;e<t;e++)s.push(n.getDependency("node",o[e]));return Promise.all(s).then(function(e){for(let t=0,r=e.length;t<r;t++)i.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,a]of n.associations)(e instanceof r.Material||e instanceof r.Texture)&&t.set(e,a);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,a,n,i){let o,s=[],l=e.name?e.name:e.uuid,u=[];switch(N[i.path]===N.weights?e.traverse(function(e){e.morphTargetInfluences&&u.push(e.name?e.name:e.uuid)}):u.push(l),N[i.path]){case N.weights:o=r.NumberKeyframeTrack;break;case N.rotation:o=r.QuaternionKeyframeTrack;break;case N.position:case N.scale:o=r.VectorKeyframeTrack;break;default:o=1===a.itemSize?r.NumberKeyframeTrack:r.VectorKeyframeTrack}let h=void 0!==n.interpolation?K[n.interpolation]:r.InterpolateLinear,c=this._getArrayFromAccessor(a);for(let e=0,r=u.length;e<r;e++){let r=new o(u[e]+"."+N[i.path],t.array,c,h);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),s.push(r)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=Q(t.constructor),r=new Float32Array(t.length);for(let a=0,n=t.length;a<n;a++)r[a]=t[a]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof r.QuaternionKeyframeTrack?k:U)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Z(e,t,a){let n=t.attributes,i=[];for(let t in n){let r=J[t]||t.toLowerCase();r in e.attributes||i.push(function(t,r){return a.getDependency("accessor",t).then(function(t){e.setAttribute(r,t)})}(n[t],r))}if(void 0!==t.indices&&!e.index){let r=a.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});i.push(r)}return V(e,t),!function(e,t,a){let n=t.attributes,i=new r.Box3;if(void 0===n.POSITION)return;{let e=a.json.accessors[n.POSITION],t=e.min,o=e.max;if(void 0===t||void 0===o)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(i.set(new r.Vector3(t[0],t[1],t[2]),new r.Vector3(o[0],o[1],o[2])),e.normalized){let t=Q(L[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}let o=t.targets;if(void 0!==o){let e=new r.Vector3,t=new r.Vector3;for(let r=0,n=o.length;r<n;r++){let n=o[r];if(void 0!==n.POSITION){let r=a.json.accessors[n.POSITION],i=r.min,o=r.max;if(void 0!==i&&void 0!==o){if(t.setX(Math.max(Math.abs(i[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(i[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(i[2]),Math.abs(o[2]))),r.normalized){let e=Q(L[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(e)}e.boundingBox=i;let s=new r.Sphere;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=s}(e,t,a),Promise.all(i).then(function(){return void 0!==t.targets?function(e,t,r){let a=!1,n=!1,i=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(a=!0),void 0!==r.NORMAL&&(n=!0),void 0!==r.COLOR_0&&(i=!0),a&&n&&i)break}if(!a&&!n&&!i)return Promise.resolve(e);let o=[],s=[],l=[];for(let u=0,h=t.length;u<h;u++){let h=t[u];if(a){let t=void 0!==h.POSITION?r.getDependency("accessor",h.POSITION):e.attributes.position;o.push(t)}if(n){let t=void 0!==h.NORMAL?r.getDependency("accessor",h.NORMAL):e.attributes.normal;s.push(t)}if(i){let t=void 0!==h.COLOR_0?r.getDependency("accessor",h.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l)]).then(function(t){let r=t[0],o=t[1],s=t[2];return a&&(e.morphAttributes.position=r),n&&(e.morphAttributes.normal=o),i&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}(e,t.targets,a):e})}e.s(["GLTFLoader",0,l],46457);var q=r;let $=new WeakMap;class ee extends q.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,a){let n=new q.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(a)},r,a)}decodeDracoFile(e,t,r,a){let n={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:a||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,n).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let a=JSON.stringify(t);if($.has(e)){let t=$.get(e);if(t.key===a)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n=this.workerNextTaskID++,i=e.byteLength,o=this._getWorker(n,i).then(a=>(r=a,new Promise((a,i)=>{r._callbacks[n]={resolve:a,reject:i},r.postMessage({type:"decode",id:n,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&n&&this._releaseTask(r,n)}),$.set(e,{key:a,promise:o}),o}_createGeometry(e){let t=new q.BufferGeometry;e.index&&t.setIndex(new q.BufferAttribute(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let a=e.attributes[r],n=a.name,i=a.array,o=a.itemSize;t.setAttribute(n,new q.BufferAttribute(i,o))}return t}_loadLibrary(e,t){let r=new q.FileLoader(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,a)=>{r.load(e,t,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let a=et.toString(),n=["/* draco decoder */",r,"\n/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([n]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function et(){let e,t;onmessage=function(r){let a=r.data;switch(a.type){case"init":e=a.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let n=a.buffer,i=a.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,o=new t.DecoderBuffer;o.Init(new Int8Array(n),n.byteLength);try{let e=function(e,t,r,a){var n,i,o;let s,l,u,h,c,d,f=a.attributeIDs,p=a.attributeTypes,m=t.GetEncodedGeometryType(r);if(m===e.TRIANGULAR_MESH)c=new e.Mesh,d=t.DecodeBufferToMesh(r,c);else if(m===e.POINT_CLOUD)c=new e.PointCloud,d=t.DecodeBufferToPointCloud(r,c);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!d.ok()||0===c.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+d.error_msg());let g={index:null,attributes:[]};for(let r in f){let n,i,o=self[p[r]];if(a.useUniqueIDs)i=f[r],n=t.GetAttributeByUniqueId(c,i);else{if(-1===(i=t.GetAttributeId(c,e[f[r]])))continue;n=t.GetAttribute(c,i)}g.attributes.push(function(e,t,r,a,n,i){let o=i.num_components(),s=r.num_points()*o,l=s*n.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,n),h=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,i,u,l,h);let c=new n(e.HEAPF32.buffer,h,s).slice();return e._free(h),{name:a,array:c,itemSize:o}}(e,t,c,r,o,n))}return m===e.TRIANGULAR_MESH&&(n=e,i=t,o=c,s=3*o.num_faces(),l=4*s,u=n._malloc(l),i.GetTrianglesUInt32Array(o,l,u),h=new Uint32Array(n.HEAPF32.buffer,u,s).slice(),n._free(u),g.index={array:h,itemSize:1}),e.destroy(c),g}(t,r,o,i),n=e.attributes.map(e=>e.array.buffer);e.index&&n.push(e.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:e},n)}catch(e){console.error(e),self.postMessage({type:"error",id:a.id,error:e.message})}finally{t.destroy(o),t.destroy(r)}})}}}e.s(["DRACOLoader",0,ee],27543),e.s(["MeshoptDecoder",0,()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),a=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let n="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";WebAssembly.validate(r)&&(n="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");let i=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let a=e.charCodeAt(r);t[r]=a>96?a-71:a>64?a-65:a>47?a+4:a>46?63:62}let r=0;for(let n=0;n<e.length;++n)t[r++]=t[n]<60?a[t[n]]:(t[n]-60)*64+t[++n];return t.buffer.slice(0,r)}(n),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function o(t,r,a,n,i,o){let s=e.exports.sbrk,l=a+3&-4,u=s(l*n),h=s(i.length),c=new Uint8Array(e.exports.memory.buffer);c.set(i,h);let d=t(u,a,n,h,i.length);if(0===d&&o&&o(u,l,n),r.set(c.subarray(u,u+a*n)),s(u-s(0)),0!==d)throw Error(`Malformed buffer data: ${d}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:i,supported:!0,decodeVertexBuffer(t,r,a,n,i){o(e.exports.meshopt_decodeVertexBuffer,t,r,a,n,e.exports[s[i]])},decodeIndexBuffer(t,r,a,n){o(e.exports.meshopt_decodeIndexBuffer,t,r,a,n)},decodeIndexSequence(t,r,a,n){o(e.exports.meshopt_decodeIndexSequence,t,r,a,n)},decodeGltfBuffer(t,r,a,n,i,u){o(e.exports[l[i]],t,r,a,n,e.exports[s[u]])}}}],21359)},53314,e=>{"use strict";var t=e.i(90072),r=e.i(31497);class a extends t.Mesh{constructor(e,a){var n,i;const o=(e=>e&&e.isCubeTexture)(e),s=Math.floor(Math.log2((null!=(i=o?null==(n=e.image[0])?void 0:n.width:e.image.width)?i:1024)/4)),l=Math.pow(2,s),u=3*Math.max(l,112),h=`
|
|
266
|
+
`;e.s(["default",0,({y:e=-.32})=>{let{scene:t}=(0,tG.default)(),{heading:n,offset:i}=(0,tk.default)(),o=(0,a.useMemo)(()=>new h.ShaderMaterial({uniforms:{uGround:{value:new h.Color},uLine:{value:new h.Color},uBackground:{value:new h.Color},uOffset:{value:new h.Vector2},uSpacing:{value:50*tP()},uFadeNear:{value:220},uFadeFar:{value:1100}},vertexShader:tL,fragmentShader:tO,depthWrite:!1}),[]);return(0,a.useEffect)(()=>{o.uniforms.uGround.value.set(t.ground),o.uniforms.uLine.value.set(t.grid),o.uniforms.uBackground.value.set(t.background)},[o,t]),(0,a.useEffect)(()=>{let e=o.uniforms.uSpacing.value,t=tP();o.uniforms.uOffset.value.set(i.x*t%e,i.y*t%e)},[o,i]),(0,a.useEffect)(()=>()=>o.dispose(),[o]),(0,r.jsx)("group",{rotation:[0,n,0],position:[0,e,0],children:(0,r.jsx)("mesh",{rotation:[-Math.PI/2,0,0],material:o,renderOrder:-1,children:(0,r.jsx)("circleGeometry",{args:[2400,64]})})})}],20440)},82897,44909,e=>{"use strict";var t=e.i(31067),r=e.i(71645),a=e.i(90874),n=e.i(95393),i=e.i(90072);let o=r.forwardRef(({envMap:e,resolution:o=256,frames:s=1/0,makeDefault:l,children:u,...h},c)=>{let d=(0,a.useThree)(({set:e})=>e),f=(0,a.useThree)(({camera:e})=>e),p=(0,a.useThree)(({size:e})=>e),m=r.useRef(null);r.useImperativeHandle(c,()=>m.current,[]);let g=r.useRef(null),A=function(e){let t=(0,a.useThree)(e=>e.size),n=(0,a.useThree)(e=>e.viewport),o="number"==typeof e?e:t.width*n.dpr,s=t.height*n.dpr,l=("number"==typeof e?void 0:e)||{},{samples:u=0,depth:h,...c}=l,d=null!=h?h:l.depthBuffer,f=r.useMemo(()=>{let e=new i.WebGLRenderTarget(o,s,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,type:i.HalfFloatType,...c});return d&&(e.depthTexture=new i.DepthTexture(o,s,i.FloatType)),e.samples=u,e},[]);return r.useLayoutEffect(()=>{f.setSize(o,s),u&&(f.samples=u)},[u,f,o,s]),r.useEffect(()=>()=>f.dispose(),[]),f}(o);r.useLayoutEffect(()=>{h.manual||(m.current.aspect=p.width/p.height)},[p,h]),r.useLayoutEffect(()=>{m.current.updateProjectionMatrix()});let v=0,B=null,y="function"==typeof u;return(0,n.useFrame)(t=>{y&&(s===1/0||v<s)&&(g.current.visible=!1,t.gl.setRenderTarget(A),B=t.scene.background,e&&(t.scene.background=e),t.gl.render(t.scene,m.current),t.scene.background=B,t.gl.setRenderTarget(null),g.current.visible=!0,v++)}),r.useLayoutEffect(()=>{if(l)return d(()=>({camera:m.current})),()=>d(()=>({camera:f}))},[m,l,d]),r.createElement(r.Fragment,null,r.createElement("perspectiveCamera",(0,t.default)({ref:m},h),!y&&u),r.createElement("group",{ref:g},y&&u(A.texture)))});e.s(["PerspectiveCamera",0,o],82897);var s=e.i(43476),l=Object.defineProperty;class u{constructor(){((e,t)=>{let r,a;a=void 0,(r="symbol"!=typeof t?t+"":t)in e?l(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,a=r.length;t<a;t++)r[t].call(this,e);e.target=null}}}var h=Object.defineProperty,c=(e,t,r)=>{let a;return(a="symbol"!=typeof t?t+"":t)in e?h(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,r};let d=new i.Ray,f=new i.Plane,p=Math.cos(Math.PI/180*70),m=(e,t)=>(e%t+t)%t;class g extends u{constructor(e,t){super(),c(this,"object"),c(this,"domElement"),c(this,"enabled",!0),c(this,"target",new i.Vector3),c(this,"minDistance",0),c(this,"maxDistance",1/0),c(this,"minZoom",0),c(this,"maxZoom",1/0),c(this,"minPolarAngle",0),c(this,"maxPolarAngle",Math.PI),c(this,"minAzimuthAngle",-1/0),c(this,"maxAzimuthAngle",1/0),c(this,"enableDamping",!1),c(this,"dampingFactor",.05),c(this,"enableZoom",!0),c(this,"zoomSpeed",1),c(this,"enableRotate",!0),c(this,"rotateSpeed",1),c(this,"enablePan",!0),c(this,"panSpeed",1),c(this,"screenSpacePanning",!0),c(this,"keyPanSpeed",7),c(this,"zoomToCursor",!1),c(this,"autoRotate",!1),c(this,"autoRotateSpeed",2),c(this,"reverseOrbit",!1),c(this,"reverseHorizontalOrbit",!1),c(this,"reverseVerticalOrbit",!1),c(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),c(this,"mouseButtons",{LEFT:i.MOUSE.ROTATE,MIDDLE:i.MOUSE.DOLLY,RIGHT:i.MOUSE.PAN}),c(this,"touches",{ONE:i.TOUCH.ROTATE,TWO:i.TOUCH.DOLLY_PAN}),c(this,"target0"),c(this,"position0"),c(this,"zoom0"),c(this,"_domElementKeyEvents",null),c(this,"getPolarAngle"),c(this,"getAzimuthalAngle"),c(this,"setPolarAngle"),c(this,"setAzimuthalAngle"),c(this,"getDistance"),c(this,"getZoomScale"),c(this,"listenToKeyEvents"),c(this,"stopListenToKeyEvents"),c(this,"saveState"),c(this,"reset"),c(this,"update"),c(this,"connect"),c(this,"dispose"),c(this,"dollyIn"),c(this,"dollyOut"),c(this,"getScale"),c(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>h.phi,this.getAzimuthalAngle=()=>h.theta,this.setPolarAngle=e=>{let t=m(e,2*Math.PI),a=h.phi;a<0&&(a+=2*Math.PI),t<0&&(t+=2*Math.PI);let n=Math.abs(t-a);2*Math.PI-n<n&&(t<a?t+=2*Math.PI:a+=2*Math.PI),g.phi=t-a,r.update()},this.setAzimuthalAngle=e=>{let t=m(e,2*Math.PI),a=h.theta;a<0&&(a+=2*Math.PI),t<0&&(t+=2*Math.PI);let n=Math.abs(t-a);2*Math.PI-n<n&&(t<a?t+=2*Math.PI:a+=2*Math.PI),g.theta=t-a,r.update()},this.getDistance=()=>r.object.position.distanceTo(r.target),this.listenToKeyEvents=e=>{e.addEventListener("keydown",ee),this._domElementKeyEvents=e},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",ee),this._domElementKeyEvents=null},this.saveState=()=>{r.target0.copy(r.target),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.reset=()=>{r.target.copy(r.target0),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(a),r.update(),l=s.NONE},this.update=(()=>{let t=new i.Vector3,n=new i.Vector3(0,1,0),o=new i.Quaternion().setFromUnitVectors(e.up,n),c=o.clone().invert(),m=new i.Vector3,B=new i.Quaternion,y=2*Math.PI;return function(){let C=r.object.position;o.setFromUnitVectors(e.up,n),c.copy(o).invert(),t.copy(C).sub(r.target),t.applyQuaternion(o),h.setFromVector3(t),r.autoRotate&&l===s.NONE&&U(2*Math.PI/60/60*r.autoRotateSpeed),r.enableDamping?(h.theta+=g.theta*r.dampingFactor,h.phi+=g.phi*r.dampingFactor):(h.theta+=g.theta,h.phi+=g.phi);let b=r.minAzimuthAngle,M=r.maxAzimuthAngle;isFinite(b)&&isFinite(M)&&(b<-Math.PI?b+=y:b>Math.PI&&(b-=y),M<-Math.PI?M+=y:M>Math.PI&&(M-=y),b<=M?h.theta=Math.max(b,Math.min(M,h.theta)):h.theta=h.theta>(b+M)/2?Math.max(b,h.theta):Math.min(M,h.theta)),h.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,h.phi)),h.makeSafe(),!0===r.enableDamping?r.target.addScaledVector(v,r.dampingFactor):r.target.add(v),r.zoomToCursor&&I||r.object.isOrthographicCamera?h.radius=j(h.radius):h.radius=j(h.radius*A),t.setFromSpherical(h),t.applyQuaternion(c),C.copy(r.target).add(t),r.object.matrixAutoUpdate||r.object.updateMatrix(),r.object.lookAt(r.target),!0===r.enableDamping?(g.theta*=1-r.dampingFactor,g.phi*=1-r.dampingFactor,v.multiplyScalar(1-r.dampingFactor)):(g.set(0,0,0),v.set(0,0,0));let x=!1;if(r.zoomToCursor&&I){let a=null;if(r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera){let e=t.length();a=j(e*A);let n=e-a;r.object.position.addScaledVector(T,n),r.object.updateMatrixWorld()}else if(r.object.isOrthographicCamera){let e=new i.Vector3(S.x,S.y,0);e.unproject(r.object),r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/A)),r.object.updateProjectionMatrix(),x=!0;let n=new i.Vector3(S.x,S.y,0);n.unproject(r.object),r.object.position.sub(n).add(e),r.object.updateMatrixWorld(),a=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),r.zoomToCursor=!1;null!==a&&(r.screenSpacePanning?r.target.set(0,0,-1).transformDirection(r.object.matrix).multiplyScalar(a).add(r.object.position):(d.origin.copy(r.object.position),d.direction.set(0,0,-1).transformDirection(r.object.matrix),Math.abs(r.object.up.dot(d.direction))<p?e.lookAt(r.target):(f.setFromNormalAndCoplanarPoint(r.object.up,r.target),d.intersectPlane(f,r.target))))}else r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera&&(x=1!==A)&&(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/A)),r.object.updateProjectionMatrix());return A=1,I=!1,!!(x||m.distanceToSquared(r.object.position)>u||8*(1-B.dot(r.object.quaternion))>u)&&(r.dispatchEvent(a),m.copy(r.object.position),B.copy(r.object.quaternion),x=!1,!0)}})(),this.connect=e=>{r.domElement=e,r.domElement.style.touchAction="none",r.domElement.addEventListener("contextmenu",et),r.domElement.addEventListener("pointerdown",Y),r.domElement.addEventListener("pointercancel",q),r.domElement.addEventListener("wheel",$)},this.dispose=()=>{var e,t,a,n,i,o;r.domElement&&(r.domElement.style.touchAction="auto"),null==(e=r.domElement)||e.removeEventListener("contextmenu",et),null==(t=r.domElement)||t.removeEventListener("pointerdown",Y),null==(a=r.domElement)||a.removeEventListener("pointercancel",q),null==(n=r.domElement)||n.removeEventListener("wheel",$),null==(i=r.domElement)||i.ownerDocument.removeEventListener("pointermove",Z),null==(o=r.domElement)||o.ownerDocument.removeEventListener("pointerup",q),null!==r._domElementKeyEvents&&r._domElementKeyEvents.removeEventListener("keydown",ee)};const r=this,a={type:"change"},n={type:"start"},o={type:"end"},s={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=s.NONE;const u=1e-6,h=new i.Spherical,g=new i.Spherical;let A=1;const v=new i.Vector3,B=new i.Vector2,y=new i.Vector2,C=new i.Vector2,b=new i.Vector2,M=new i.Vector2,x=new i.Vector2,w=new i.Vector2,E=new i.Vector2,F=new i.Vector2,T=new i.Vector3,S=new i.Vector2;let I=!1;const R=[],D={};function G(){return Math.pow(.95,r.zoomSpeed)}function U(e){r.reverseOrbit||r.reverseHorizontalOrbit?g.theta+=e:g.theta-=e}function _(e){r.reverseOrbit||r.reverseVerticalOrbit?g.phi+=e:g.phi-=e}const k=(()=>{let e=new i.Vector3;return function(t,r){e.setFromMatrixColumn(r,0),e.multiplyScalar(-t),v.add(e)}})(),P=(()=>{let e=new i.Vector3;return function(t,a){!0===r.screenSpacePanning?e.setFromMatrixColumn(a,1):(e.setFromMatrixColumn(a,0),e.crossVectors(r.object.up,e)),e.multiplyScalar(t),v.add(e)}})(),L=(()=>{let e=new i.Vector3;return function(t,a){let n=r.domElement;if(n&&r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera){let i=r.object.position;e.copy(i).sub(r.target);let o=e.length();k(2*t*(o*=Math.tan(r.object.fov/2*Math.PI/180))/n.clientHeight,r.object.matrix),P(2*a*o/n.clientHeight,r.object.matrix)}else n&&r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera?(k(t*(r.object.right-r.object.left)/r.object.zoom/n.clientWidth,r.object.matrix),P(a*(r.object.top-r.object.bottom)/r.object.zoom/n.clientHeight,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)}})();function O(e){r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera||r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera?A=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function H(e){if(!r.zoomToCursor||!r.domElement)return;I=!0;let t=r.domElement.getBoundingClientRect(),a=e.clientX-t.left,n=e.clientY-t.top,i=t.width,o=t.height;S.x=a/i*2-1,S.y=-(n/o*2)+1,T.set(S.x,S.y,1).unproject(r.object).sub(r.object.position).normalize()}function j(e){return Math.max(r.minDistance,Math.min(r.maxDistance,e))}function J(e){B.set(e.clientX,e.clientY)}function N(e){b.set(e.clientX,e.clientY)}function K(){if(1==R.length)B.set(R[0].pageX,R[0].pageY);else{let e=.5*(R[0].pageX+R[1].pageX),t=.5*(R[0].pageY+R[1].pageY);B.set(e,t)}}function X(){if(1==R.length)b.set(R[0].pageX,R[0].pageY);else{let e=.5*(R[0].pageX+R[1].pageX),t=.5*(R[0].pageY+R[1].pageY);b.set(e,t)}}function V(){let e=R[0].pageX-R[1].pageX,t=R[0].pageY-R[1].pageY,r=Math.sqrt(e*e+t*t);w.set(0,r)}function W(e){if(1==R.length)y.set(e.pageX,e.pageY);else{let t=ea(e),r=.5*(e.pageX+t.x),a=.5*(e.pageY+t.y);y.set(r,a)}C.subVectors(y,B).multiplyScalar(r.rotateSpeed);let t=r.domElement;t&&(U(2*Math.PI*C.x/t.clientHeight),_(2*Math.PI*C.y/t.clientHeight)),B.copy(y)}function Q(e){if(1==R.length)M.set(e.pageX,e.pageY);else{let t=ea(e),r=.5*(e.pageX+t.x),a=.5*(e.pageY+t.y);M.set(r,a)}x.subVectors(M,b).multiplyScalar(r.panSpeed),L(x.x,x.y),b.copy(M)}function z(e){var t;let a=ea(e),n=e.pageX-a.x,i=e.pageY-a.y,o=Math.sqrt(n*n+i*i);E.set(0,o),F.set(0,Math.pow(E.y/w.y,r.zoomSpeed)),t=F.y,O(A/t),w.copy(E)}function Y(e){var t,a,o;!1!==r.enabled&&(0===R.length&&(null==(t=r.domElement)||t.ownerDocument.addEventListener("pointermove",Z),null==(a=r.domElement)||a.ownerDocument.addEventListener("pointerup",q)),o=e,R.push(o),"touch"===e.pointerType?function(e){switch(er(e),R.length){case 1:switch(r.touches.ONE){case i.TOUCH.ROTATE:if(!1===r.enableRotate)return;K(),l=s.TOUCH_ROTATE;break;case i.TOUCH.PAN:if(!1===r.enablePan)return;X(),l=s.TOUCH_PAN;break;default:l=s.NONE}break;case 2:switch(r.touches.TWO){case i.TOUCH.DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&V(),r.enablePan&&X(),l=s.TOUCH_DOLLY_PAN;break;case i.TOUCH.DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&V(),r.enableRotate&&K(),l=s.TOUCH_DOLLY_ROTATE;break;default:l=s.NONE}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(n)}(e):function(e){let t;switch(e.button){case 0:t=r.mouseButtons.LEFT;break;case 1:t=r.mouseButtons.MIDDLE;break;case 2:t=r.mouseButtons.RIGHT;break;default:t=-1}switch(t){case i.MOUSE.DOLLY:if(!1===r.enableZoom)return;H(e),w.set(e.clientX,e.clientY),l=s.DOLLY;break;case i.MOUSE.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enablePan)return;N(e),l=s.PAN}else{if(!1===r.enableRotate)return;J(e),l=s.ROTATE}break;case i.MOUSE.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enableRotate)return;J(e),l=s.ROTATE}else{if(!1===r.enablePan)return;N(e),l=s.PAN}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(n)}(e))}function Z(e){!1!==r.enabled&&("touch"===e.pointerType?function(e){switch(er(e),l){case s.TOUCH_ROTATE:if(!1===r.enableRotate)return;W(e),r.update();break;case s.TOUCH_PAN:if(!1===r.enablePan)return;Q(e),r.update();break;case s.TOUCH_DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&z(e),r.enablePan&&Q(e),r.update();break;case s.TOUCH_DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&z(e),r.enableRotate&&W(e),r.update();break;default:l=s.NONE}}(e):function(e){if(!1!==r.enabled)switch(l){case s.ROTATE:let t;if(!1===r.enableRotate)return;y.set(e.clientX,e.clientY),C.subVectors(y,B).multiplyScalar(r.rotateSpeed),(t=r.domElement)&&(U(2*Math.PI*C.x/t.clientHeight),_(2*Math.PI*C.y/t.clientHeight)),B.copy(y),r.update();break;case s.DOLLY:var a,n;if(!1===r.enableZoom)return;(E.set(e.clientX,e.clientY),F.subVectors(E,w),F.y>0)?(a=G(),O(A/a)):F.y<0&&(n=G(),O(A*n)),w.copy(E),r.update();break;case s.PAN:if(!1===r.enablePan)return;M.set(e.clientX,e.clientY),x.subVectors(M,b).multiplyScalar(r.panSpeed),L(x.x,x.y),b.copy(M),r.update()}}(e))}function q(e){var t,a,n;(function(e){delete D[e.pointerId];for(let t=0;t<R.length;t++)if(R[t].pointerId==e.pointerId)return void R.splice(t,1)})(e),0===R.length&&(null==(t=r.domElement)||t.releasePointerCapture(e.pointerId),null==(a=r.domElement)||a.ownerDocument.removeEventListener("pointermove",Z),null==(n=r.domElement)||n.ownerDocument.removeEventListener("pointerup",q)),r.dispatchEvent(o),l=s.NONE}function $(e){if(!1!==r.enabled&&!1!==r.enableZoom&&(l===s.NONE||l===s.ROTATE)){var t,a;e.preventDefault(),r.dispatchEvent(n),(H(e),e.deltaY<0)?(t=G(),O(A*t)):e.deltaY>0&&(a=G(),O(A/a)),r.update(),r.dispatchEvent(o)}}function ee(e){if(!1!==r.enabled&&!1!==r.enablePan){let t=!1;switch(e.code){case r.keys.UP:L(0,r.keyPanSpeed),t=!0;break;case r.keys.BOTTOM:L(0,-r.keyPanSpeed),t=!0;break;case r.keys.LEFT:L(r.keyPanSpeed,0),t=!0;break;case r.keys.RIGHT:L(-r.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),r.update())}}function et(e){!1!==r.enabled&&e.preventDefault()}function er(e){let t=D[e.pointerId];void 0===t&&(t=new i.Vector2,D[e.pointerId]=t),t.set(e.pageX,e.pageY)}function ea(e){return D[(e.pointerId===R[0].pointerId?R[1]:R[0]).pointerId]}this.dollyIn=(e=G())=>{O(A*e),r.update()},this.dollyOut=(e=G())=>{O(A/e),r.update()},this.getScale=()=>A,this.setScale=e=>{O(e),r.update()},this.getZoomScale=()=>G(),void 0!==t&&this.connect(t),this.update()}}let A=r.forwardRef(({makeDefault:e,camera:i,regress:o,domElement:s,enableDamping:l=!0,keyEvents:u=!1,onChange:h,onStart:c,onEnd:d,...f},p)=>{let m=(0,a.useThree)(e=>e.invalidate),A=(0,a.useThree)(e=>e.camera),v=(0,a.useThree)(e=>e.gl),B=(0,a.useThree)(e=>e.events),y=(0,a.useThree)(e=>e.setEvents),C=(0,a.useThree)(e=>e.set),b=(0,a.useThree)(e=>e.get),M=(0,a.useThree)(e=>e.performance),x=i||A,w=s||B.connected||v.domElement,E=r.useMemo(()=>new g(x),[x]);return(0,n.useFrame)(()=>{E.enabled&&E.update()},-1),r.useEffect(()=>(u&&E.connect(!0===u?w:u),E.connect(w),()=>void E.dispose()),[u,w,o,E,m]),r.useEffect(()=>{let e=e=>{m(),o&&M.regress(),h&&h(e)},t=e=>{c&&c(e)},r=e=>{d&&d(e)};return E.addEventListener("change",e),E.addEventListener("start",t),E.addEventListener("end",r),()=>{E.removeEventListener("start",t),E.removeEventListener("end",r),E.removeEventListener("change",e)}},[h,c,d,E,m,y]),r.useEffect(()=>{if(e){let e=b().controls;return C({controls:E}),()=>C({controls:e})}},[e,E]),r.createElement("primitive",(0,t.default)({ref:p,object:E,enableDamping:l},f))});var v=e.i(9617);let B=[0,0,0];e.s(["default",0,({home:e,homeTarget:t,...n})=>{let i=(0,r.useRef)(),{camera:o,invalidate:l}=(0,a.useThree)();(0,r.useEffect)(()=>(0,v.onRecenter)(()=>{let r=i.current;o.position.set(...e);let a=t||B;r?(r.target.set(...a),r.update()):o.lookAt(...a),l()}),[o,l,e,t]),(0,r.useEffect)(()=>()=>(0,v.setCameraMoved)(!1),[]);let u=(0,r.useRef)(!1);return(0,s.jsx)(A,{ref:i,...t?{target:t}:{},onStart:()=>{u.current=!0},onChange:()=>{u.current&&(0,v.setCameraMoved)(!0)},onEnd:()=>{u.current=!1},...n})}],44909)},93282,e=>{"use strict";var t=e.i(61949);e.s(["useLoader",()=>t.H])},80566,e=>{"use strict";var t=e.i(61949);e.s(["extend",()=>t.e])},1888,93059,e=>{"use strict";var t=e.i(61949);e.s(["createPortal",()=>t.q],1888),e.s(["applyProps",()=>t.v],93059)},46457,68911,27543,21359,e=>{"use strict";let t;var r=e.i(90072);function a(e,t){if(t===r.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==r.TriangleFanDrawMode&&t!==r.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let a=e.getIndex();if(null===a){let t=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),a=e.getIndex()}let n=a.count-2,i=[];if(a)if(t===r.TriangleFanDrawMode)for(let e=1;e<=n;e++)i.push(a.getX(0)),i.push(a.getX(e)),i.push(a.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(i.push(a.getX(e)),i.push(a.getX(e+1)),i.push(a.getX(e+2))):(i.push(a.getX(e+2)),i.push(a.getX(e+1)),i.push(a.getX(e)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let o=e.clone();return o.setIndex(i),o.clearGroups(),o}}e.s(["toCreasedNormals",0,function(e,t=Math.PI/3){let a=Math.cos(t),n=(1+1e-10)*100,i=[new r.Vector3,new r.Vector3,new r.Vector3],o=new r.Vector3,s=new r.Vector3,l=new r.Vector3,u=new r.Vector3;function h(e){let t=~~(e.x*n),r=~~(e.y*n),a=~~(e.z*n);return`${t},${r},${a}`}let c=e.index?e.toNonIndexed():e,d=c.attributes.position,f={};for(let e=0,t=d.count/3;e<t;e++){let t=3*e,a=i[0].fromBufferAttribute(d,t+0),n=i[1].fromBufferAttribute(d,t+1),l=i[2].fromBufferAttribute(d,t+2);o.subVectors(l,n),s.subVectors(a,n);let u=new r.Vector3().crossVectors(o,s).normalize();for(let e=0;e<3;e++){let t=h(i[e]);t in f||(f[t]=[]),f[t].push(u)}}let p=new Float32Array(3*d.count),m=new r.BufferAttribute(p,3,!1);for(let e=0,t=d.count/3;e<t;e++){let t=3*e,r=i[0].fromBufferAttribute(d,t+0),n=i[1].fromBufferAttribute(d,t+1),c=i[2].fromBufferAttribute(d,t+2);o.subVectors(c,n),s.subVectors(r,n),l.crossVectors(o,s).normalize();for(let e=0;e<3;e++){let r=f[h(i[e])];u.set(0,0,0);for(let e=0,t=r.length;e<t;e++){let t=r[e];l.dot(t)>a&&u.add(t)}u.normalize(),m.setXYZ(t+e,u.x,u.y,u.z)}}return c.setAttribute("normal",m),c},"toTrianglesDrawMode",0,a],68911);var n=e.i(31497);function i(e){if("u">typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,a=e.length;r<a;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let o="srgb",s="srgb-linear";class l extends r.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new p(e)}),this.register(function(e){return new m(e)}),this.register(function(e){return new x(e)}),this.register(function(e){return new w(e)}),this.register(function(e){return new E(e)}),this.register(function(e){return new A(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new B(e)}),this.register(function(e){return new y(e)}),this.register(function(e){return new f(e)}),this.register(function(e){return new C(e)}),this.register(function(e){return new g(e)}),this.register(function(e){return new M(e)}),this.register(function(e){return new b(e)}),this.register(function(e){return new c(e)}),this.register(function(e){return new F(e)}),this.register(function(e){return new T(e)})}load(e,t,a,n){let i,o=this;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){let t=r.LoaderUtils.extractUrlBase(e);i=r.LoaderUtils.resolveURL(t,this.path)}else i=r.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){n?n(t):console.error(t),o.manager.itemError(e),o.manager.itemEnd(e)},l=new r.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(r){try{o.parse(r,i,function(r){t(r),o.manager.itemEnd(e)},s)}catch(e){s(e)}},a,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,a){let n,o={},s={};if("string"==typeof e)n=JSON.parse(e);else if(e instanceof ArrayBuffer)if(i(new Uint8Array(e.slice(0,4)))===S){try{o[h.KHR_BINARY_GLTF]=new I(e)}catch(e){a&&a(e);return}n=JSON.parse(o[h.KHR_BINARY_GLTF].content)}else n=JSON.parse(i(new Uint8Array(e)));else n=e;if(void 0===n.asset||n.asset.version[0]<2){a&&a(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let l=new Y(n,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](l);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[t.name]=t,o[t.name]=!0}if(n.extensionsUsed)for(let e=0;e<n.extensionsUsed.length;++e){let t=n.extensionsUsed[e],r=n.extensionsRequired||[];switch(t){case h.KHR_MATERIALS_UNLIT:o[t]=new d;break;case h.KHR_DRACO_MESH_COMPRESSION:o[t]=new R(n,this.dracoLoader);break;case h.KHR_TEXTURE_TRANSFORM:o[t]=new D;break;case h.KHR_MESH_QUANTIZATION:o[t]=new G;break;default:r.indexOf(t)>=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(o),l.setPlugins(s),l.parse(r,a)}parseAsync(e,t){let r=this;return new Promise(function(a,n){r.parse(e,t,a,n)})}}function u(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let h={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 c{constructor(e){this.parser=e,this.name=h.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,a=t.length;r<a;r++){let a=t[r];a.extensions&&a.extensions[this.name]&&void 0!==a.extensions[this.name].light&&e._addNodeRef(this.cache,a.extensions[this.name].light)}}_loadLight(e){let t,a=this.parser,n="light:"+e,i=a.cache.get(n);if(i)return i;let o=a.json,l=((o.extensions&&o.extensions[this.name]||{}).lights||[])[e],u=new r.Color(0xffffff);void 0!==l.color&&u.setRGB(l.color[0],l.color[1],l.color[2],s);let h=void 0!==l.range?l.range:0;switch(l.type){case"directional":(t=new r.DirectionalLight(u)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new r.PointLight(u)).distance=h;break;case"spot":(t=new r.SpotLight(u)).distance=h,l.spot=l.spot||{},l.spot.innerConeAngle=void 0!==l.spot.innerConeAngle?l.spot.innerConeAngle:0,l.spot.outerConeAngle=void 0!==l.spot.outerConeAngle?l.spot.outerConeAngle:Math.PI/4,t.angle=l.spot.outerConeAngle,t.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return t.position.set(0,0,0),t.decay=2,V(t,l),void 0!==l.intensity&&(t.intensity=l.intensity),t.name=a.createUniqueName(l.name||"light_"+e),i=Promise.resolve(t),a.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,a=r.json.nodes[e],n=(a.extensions&&a.extensions[this.name]||{}).light;return void 0===n?null:this._loadLight(n).then(function(e){return r._getNodeRef(t.cache,n,e)})}}class d{constructor(){this.name=h.KHR_MATERIALS_UNLIT}getMaterialType(){return r.MeshBasicMaterial}extendParams(e,t,a){let n=[];e.color=new r.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],s),e.opacity=t[3]}void 0!==i.baseColorTexture&&n.push(a.assignTexture(e,"map",i.baseColorTexture,o))}return Promise.all(n)}}class f{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let a=r.extensions[this.name].emissiveStrength;return void 0!==a&&(t.emissiveIntensity=a),Promise.resolve()}}class p{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],o=n.extensions[this.name];if(void 0!==o.clearcoatFactor&&(t.clearcoat=o.clearcoatFactor),void 0!==o.clearcoatTexture&&i.push(a.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),void 0!==o.clearcoatRoughnessFactor&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),void 0!==o.clearcoatRoughnessTexture&&i.push(a.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),void 0!==o.clearcoatNormalTexture&&(i.push(a.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),void 0!==o.clearcoatNormalTexture.scale)){let e=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new r.Vector2(e,e)}return Promise.all(i)}}class m{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_DISPERSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let a=r.extensions[this.name];return t.dispersion=void 0!==a.dispersion?a.dispersion:0,Promise.resolve()}}class g{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return void 0!==i.iridescenceFactor&&(t.iridescence=i.iridescenceFactor),void 0!==i.iridescenceTexture&&n.push(r.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),void 0!==i.iridescenceIor&&(t.iridescenceIOR=i.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==i.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),void 0!==i.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),void 0!==i.iridescenceThicknessTexture&&n.push(r.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(n)}}class A{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_SHEEN}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[];t.sheenColor=new r.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;let l=n.extensions[this.name];if(void 0!==l.sheenColorFactor){let e=l.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],s)}return void 0!==l.sheenRoughnessFactor&&(t.sheenRoughness=l.sheenRoughnessFactor),void 0!==l.sheenColorTexture&&i.push(a.assignTexture(t,"sheenColorMap",l.sheenColorTexture,o)),void 0!==l.sheenRoughnessTexture&&i.push(a.assignTexture(t,"sheenRoughnessMap",l.sheenRoughnessTexture)),Promise.all(i)}}class v{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return void 0!==i.transmissionFactor&&(t.transmission=i.transmissionFactor),void 0!==i.transmissionTexture&&n.push(r.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(n)}}class B{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_VOLUME}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],o=n.extensions[this.name];t.thickness=void 0!==o.thicknessFactor?o.thicknessFactor:0,void 0!==o.thicknessTexture&&i.push(a.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;let l=o.attenuationColor||[1,1,1];return t.attenuationColor=new r.Color().setRGB(l[0],l[1],l[2],s),Promise.all(i)}}class y{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_IOR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let a=r.extensions[this.name];return t.ior=void 0!==a.ior?a.ior:1.5,Promise.resolve()}}class C{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_SPECULAR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let a=this.parser,n=a.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],l=n.extensions[this.name];t.specularIntensity=void 0!==l.specularFactor?l.specularFactor:1,void 0!==l.specularTexture&&i.push(a.assignTexture(t,"specularIntensityMap",l.specularTexture));let u=l.specularColorFactor||[1,1,1];return t.specularColor=new r.Color().setRGB(u[0],u[1],u[2],s),void 0!==l.specularColorTexture&&i.push(a.assignTexture(t,"specularColorMap",l.specularColorTexture,o)),Promise.all(i)}}class b{constructor(e){this.parser=e,this.name=h.EXT_MATERIALS_BUMP}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return t.bumpScale=void 0!==i.bumpFactor?i.bumpFactor:1,void 0!==i.bumpTexture&&n.push(r.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(n)}}class M{constructor(e){this.parser=e,this.name=h.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?r.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,a=r.json.materials[e];if(!a.extensions||!a.extensions[this.name])return Promise.resolve();let n=[],i=a.extensions[this.name];return void 0!==i.anisotropyStrength&&(t.anisotropy=i.anisotropyStrength),void 0!==i.anisotropyRotation&&(t.anisotropyRotation=i.anisotropyRotation),void 0!==i.anisotropyTexture&&n.push(r.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(n)}}class x{constructor(e){this.parser=e,this.name=h.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,r=t.json,a=r.textures[e];if(!a.extensions||!a.extensions[this.name])return null;let n=a.extensions[this.name],i=t.options.ktx2Loader;if(!i)if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,n.source,i)}}class w{constructor(e){this.parser=e,this.name=h.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,a=r.json,n=a.textures[e];if(!n.extensions||!n.extensions[t])return null;let i=n.extensions[t],o=a.images[i.source],s=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then(function(n){if(n)return r.loadTextureImage(e,i.source,s);if(a.extensionsRequired&&a.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class E{constructor(e){this.parser=e,this.name=h.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,a=r.json,n=a.textures[e];if(!n.extensions||!n.extensions[t])return null;let i=n.extensions[t],o=a.images[i.source],s=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then(function(n){if(n)return r.loadTextureImage(e,i.source,s);if(a.extensionsRequired&&a.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class F{constructor(e){this.name=h.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],a=this.parser.getDependency("buffer",e.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return a.then(function(t){let r=e.byteOffset||0,a=e.byteLength||0,i=e.count,o=e.byteStride,s=new Uint8Array(t,r,a);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(i,o,s,e.mode,e.filter).then(function(e){return e.buffer}):n.ready.then(function(){let t=new ArrayBuffer(i*o);return n.decodeGltfBuffer(new Uint8Array(t),i,o,s,e.mode,e.filter),t})})}}}class T{constructor(e){this.name=h.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,a=t.nodes[e];if(!a.extensions||!a.extensions[this.name]||void 0===a.mesh)return null;for(let e of t.meshes[a.mesh].primitives)if(e.mode!==P.TRIANGLES&&e.mode!==P.TRIANGLE_STRIP&&e.mode!==P.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=a.extensions[this.name].attributes,i=[],o={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),a=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of a){let t=new r.Matrix4,a=new r.Vector3,s=new r.Quaternion,l=new r.Vector3(1,1,1),u=new r.InstancedMesh(e.geometry,e.material,n);for(let e=0;e<n;e++)o.TRANSLATION&&a.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&s.fromBufferAttribute(o.ROTATION,e),o.SCALE&&l.fromBufferAttribute(o.SCALE,e),u.setMatrixAt(e,t.compose(a,s,l));for(let t in o)if("_COLOR_0"===t){let e=o[t];u.instanceColor=new r.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,o[t]);r.Object3D.prototype.copy.call(u,e),this.parser.assignFinalMaterial(u),i.push(u)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}}let S="glTF";class I{constructor(e){this.name=h.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:i(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==S)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-12,a=new DataView(e,12);let n=0;for(;n<r;){const t=a.getUint32(n,!0);n+=4;const r=a.getUint32(n,!0);if(n+=4,0x4e4f534a===r){const r=new Uint8Array(e,12+n,t);this.content=i(r)}else if(5130562===r){const r=12+n;this.body=e.slice(r,r+t)}n+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class R{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=h.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let r=this.json,a=this.dracoLoader,n=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,o={},l={},u={};for(let e in i)o[J[e]||e.toLowerCase()]=i[e];for(let t in e.attributes){let a=J[t]||t.toLowerCase();if(void 0!==i[t]){let n=r.accessors[e.attributes[t]],i=L[n.componentType];u[a]=i.name,l[a]=!0===n.normalized}}return t.getDependency("bufferView",n).then(function(e){return new Promise(function(t,r){a.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],a=l[t];void 0!==a&&(r.normalized=a)}t(e)},o,u,s,r)})})}}class D{constructor(){this.name=h.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class G{constructor(){this.name=h.KHR_MESH_QUANTIZATION}}class U extends r.Interpolant{constructor(e,t,r,a){super(e,t,r,a)}copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,a=this.valueSize,n=e*a*3+a;for(let e=0;e!==a;e++)t[e]=r[n+e];return t}interpolate_(e,t,r,a){let n=this.resultBuffer,i=this.sampleValues,o=this.valueSize,s=2*o,l=3*o,u=a-t,h=(r-t)/u,c=h*h,d=c*h,f=e*l,p=f-l,m=-2*d+3*c,g=d-c,A=1-m,v=g-c+h;for(let e=0;e!==o;e++){let t=i[p+e+o],r=i[p+e+s]*u,a=i[f+e+o],l=i[f+e]*u;n[e]=A*t+v*r+m*a+g*l}return n}}let _=new r.Quaternion;class k extends U{interpolate_(e,t,r,a){let n=super.interpolate_(e,t,r,a);return _.fromArray(n).normalize().toArray(n),n}}let P={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},L={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},O={9728:r.NearestFilter,9729:r.LinearFilter,9984:r.NearestMipmapNearestFilter,9985:r.LinearMipmapNearestFilter,9986:r.NearestMipmapLinearFilter,9987:r.LinearMipmapLinearFilter},H={33071:r.ClampToEdgeWrapping,33648:r.MirroredRepeatWrapping,10497:r.RepeatWrapping},j={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},J={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...n.version>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},N={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},K={CUBICSPLINE:void 0,LINEAR:r.InterpolateLinear,STEP:r.InterpolateDiscrete};function X(e,t,r){for(let a in r.extensions)void 0===e[a]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[a]=r.extensions[a])}function V(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function W(e){let t="",r=Object.keys(e).sort();for(let a=0,n=r.length;a<n;a++)t+=r[a]+":"+e[r[a]]+";";return t}function Q(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let z=new r.Matrix4;class Y{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new u,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 a=!1,n=!1,i=-1;"u">typeof navigator&&void 0!==navigator.userAgent&&(a=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"<typeof createImageBitmap||a||n&&i<98?this.textureLoader=new r.TextureLoader(this.options.manager):this.textureLoader=new r.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new r.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,a=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let i={scene:t[0][a.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:a.asset,parser:r,userData:{}};return X(n,i,a),V(i,a),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(let e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,a=t.length;r<a;r++){let a=t[r].joints;for(let t=0,r=a.length;t<r;t++)e[a[t]].isBone=!0}for(let t=0,a=e.length;t<a;t++){let a=e[t];void 0!==a.mesh&&(this._addNodeRef(this.meshCache,a.mesh),void 0!==a.skin&&(r[a.mesh].isSkinnedMesh=!0)),void 0!==a.camera&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let a=r.clone(),n=(e,t)=>{let r=this.associations.get(e);for(let[a,i]of(null!=r&&this.associations.set(t,r),e.children.entries()))n(i,t.children[a])};return n(r,a),a.name+="_instance_"+e.uses[t]++,a}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let a=e(t[r]);if(a)return a}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let a=0;a<t.length;a++){let n=e(t[a]);n&&r.push(n)}return r}getDependency(e,t){let r=e+":"+t,a=this.cache.get(r);if(!a){switch(e){case"scene":a=this.loadScene(t);break;case"node":a=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":a=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":a=this.loadAccessor(t);break;case"bufferView":a=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":a=this.loadBuffer(t);break;case"material":a=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":a=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":a=this.loadSkin(t);break;case"animation":a=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":a=this.loadCamera(t);break;default:if(!(a=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,a)}return a}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,a){return r.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],a=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[h.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,i){a.load(r.LoaderUtils.resolveURL(t.uri,n.path),e,void 0,function(){i(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,a=t.byteOffset||0;return e.slice(a,a+r)})}loadAccessor(e){let t=this,a=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=j[n.type],t=L[n.componentType],a=!0===n.normalized,i=new t(n.count*e);return Promise.resolve(new r.BufferAttribute(i,e,a))}let i=[];return void 0!==n.bufferView?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),void 0!==n.sparse&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(e){let i,o,s=e[0],l=j[n.type],u=L[n.componentType],h=u.BYTES_PER_ELEMENT,c=h*l,d=n.byteOffset||0,f=void 0!==n.bufferView?a.bufferViews[n.bufferView].byteStride:void 0,p=!0===n.normalized;if(f&&f!==c){let e=Math.floor(d/f),a="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,c=t.cache.get(a);c||(i=new u(s,e*f,n.count*f/h),c=new r.InterleavedBuffer(i,f/h),t.cache.add(a,c)),o=new r.InterleavedBufferAttribute(c,l,d%f/h,p)}else i=null===s?new u(n.count*l):new u(s,d,n.count*l),o=new r.BufferAttribute(i,l,p);if(void 0!==n.sparse){let t=j.SCALAR,a=L[n.sparse.indices.componentType],i=n.sparse.indices.byteOffset||0,h=n.sparse.values.byteOffset||0,c=new a(e[1],i,n.sparse.count*t),d=new u(e[2],h,n.sparse.count*l);null!==s&&(o=new r.BufferAttribute(o.array.slice(),o.itemSize,o.normalized));for(let e=0,t=c.length;e<t;e++){let t=c[e];if(o.setX(t,d[e*l]),l>=2&&o.setY(t,d[e*l+1]),l>=3&&o.setZ(t,d[e*l+2]),l>=4&&o.setW(t,d[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,a=t.textures[e].source,n=t.images[a],i=this.textureLoader;if(n.uri){let e=r.manager.getHandler(n.uri);null!==e&&(i=e)}return this.loadTextureImage(e,a,i)}loadTextureImage(e,t,a){let n=this,i=this.json,o=i.textures[e],s=i.images[t],l=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];let u=this.loadImageSource(t,a).then(function(t){t.flipY=!1,t.name=o.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let a=(i.samplers||{})[o.sampler]||{};return t.magFilter=O[a.magFilter]||r.LinearFilter,t.minFilter=O[a.minFilter]||r.LinearMipmapLinearFilter,t.wrapS=H[a.wrapS]||r.RepeatWrapping,t.wrapT=H[a.wrapT]||r.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){let a=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=a.images[e],o=self.URL||self.webkitURL,s=i.uri||"",l=!1;if(void 0!==i.bufferView)s=this.getDependency("bufferView",i.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:i.mimeType});return s=o.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let u=Promise.resolve(s).then(function(e){return new Promise(function(a,i){let o=a;!0===t.isImageBitmapLoader&&(o=function(e){let t=new r.Texture(e);t.needsUpdate=!0,a(t)}),t.load(r.LoaderUtils.resolveURL(e,n.path),o,void 0,i)})}).then(function(e){var t;return!0===l&&o.revokeObjectURL(s),V(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,r,a){let n=this;return this.getDependency("texture",r.index).then(function(i){if(!i)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((i=i.clone()).channel=r.texCoord),n.extensions[h.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[h.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=n.associations.get(i);i=n.extensions[h.KHR_TEXTURE_TRANSFORM].extendTexture(i,e),n.associations.set(i,t)}}return void 0!==a&&("number"==typeof a&&(a=3001===a?o:s),"colorSpace"in i?i.colorSpace=a:i.encoding=a===o?3001:3e3),e[t]=i,i})}assignFinalMaterial(e){let t=e.geometry,a=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+a.uuid,t=this.cache.get(e);t||(t=new r.PointsMaterial,r.Material.prototype.copy.call(t,a),t.color.copy(a.color),t.map=a.map,t.sizeAttenuation=!1,this.cache.add(e,t)),a=t}else if(e.isLine){let e="LineBasicMaterial:"+a.uuid,t=this.cache.get(e);t||(t=new r.LineBasicMaterial,r.Material.prototype.copy.call(t,a),t.color.copy(a.color),t.map=a.map,this.cache.add(e,t)),a=t}if(n||i||o){let e="ClonedMaterial:"+a.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=a.clone(),i&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(a))),a=t}e.material=a}getMaterialType(){return r.MeshStandardMaterial}loadMaterial(e){let t,a=this,n=this.json,i=this.extensions,l=n.materials[e],u={},c=l.extensions||{},d=[];if(c[h.KHR_MATERIALS_UNLIT]){let e=i[h.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),d.push(e.extendParams(u,l,a))}else{let n=l.pbrMetallicRoughness||{};if(u.color=new r.Color(1,1,1),u.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;u.color.setRGB(e[0],e[1],e[2],s),u.opacity=e[3]}void 0!==n.baseColorTexture&&d.push(a.assignTexture(u,"map",n.baseColorTexture,o)),u.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,u.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(d.push(a.assignTexture(u,"metalnessMap",n.metallicRoughnessTexture)),d.push(a.assignTexture(u,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),d.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,u)})))}!0===l.doubleSided&&(u.side=r.DoubleSide);let f=l.alphaMode||"OPAQUE";if("BLEND"===f?(u.transparent=!0,u.depthWrite=!1):(u.transparent=!1,"MASK"===f&&(u.alphaTest=void 0!==l.alphaCutoff?l.alphaCutoff:.5)),void 0!==l.normalTexture&&t!==r.MeshBasicMaterial&&(d.push(a.assignTexture(u,"normalMap",l.normalTexture)),u.normalScale=new r.Vector2(1,1),void 0!==l.normalTexture.scale)){let e=l.normalTexture.scale;u.normalScale.set(e,e)}if(void 0!==l.occlusionTexture&&t!==r.MeshBasicMaterial&&(d.push(a.assignTexture(u,"aoMap",l.occlusionTexture)),void 0!==l.occlusionTexture.strength&&(u.aoMapIntensity=l.occlusionTexture.strength)),void 0!==l.emissiveFactor&&t!==r.MeshBasicMaterial){let e=l.emissiveFactor;u.emissive=new r.Color().setRGB(e[0],e[1],e[2],s)}return void 0!==l.emissiveTexture&&t!==r.MeshBasicMaterial&&d.push(a.assignTexture(u,"emissiveMap",l.emissiveTexture,o)),Promise.all(d).then(function(){let r=new t(u);return l.name&&(r.name=l.name),V(r,l),a.associations.set(r,{materials:e}),l.extensions&&X(i,r,l),r})}createUniqueName(e){let t=r.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,a=this.extensions,n=this.primitiveCache,i=[];for(let o=0,s=e.length;o<s;o++){let s=e[o],l=function(e){let t,r=e.extensions&&e.extensions[h.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+W(r.attributes):e.indices+":"+W(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,a=e.targets.length;r<a;r++)t+=":"+W(e.targets[r]);return t}(s),u=n[l];if(u)i.push(u.promise);else{let e;e=s.extensions&&s.extensions[h.KHR_DRACO_MESH_COMPRESSION]?function(e){return a[h.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return Z(r,e,t)})}(s):Z(new r.BufferGeometry,s,t),n[l]={primitive:s,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){let t=this,n=this.json,i=this.extensions,o=n.meshes[e],s=o.primitives,l=[];for(let e=0,t=s.length;e<t;e++){var u;let t=void 0===s[e].material?(void 0===(u=this.cache).DefaultMaterial&&(u.DefaultMaterial=new r.MeshStandardMaterial({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:r.FrontSide})),u.DefaultMaterial):this.getDependency("material",s[e].material);l.push(t)}return l.push(t.loadGeometries(s)),Promise.all(l).then(function(n){let l=n.slice(0,n.length-1),u=n[n.length-1],h=[];for(let n=0,c=u.length;n<c;n++){let c,d=u[n],f=s[n],p=l[n];if(f.mode===P.TRIANGLES||f.mode===P.TRIANGLE_STRIP||f.mode===P.TRIANGLE_FAN||void 0===f.mode)!0===(c=!0===o.isSkinnedMesh?new r.SkinnedMesh(d,p):new r.Mesh(d,p)).isSkinnedMesh&&c.normalizeSkinWeights(),f.mode===P.TRIANGLE_STRIP?c.geometry=a(c.geometry,r.TriangleStripDrawMode):f.mode===P.TRIANGLE_FAN&&(c.geometry=a(c.geometry,r.TriangleFanDrawMode));else if(f.mode===P.LINES)c=new r.LineSegments(d,p);else if(f.mode===P.LINE_STRIP)c=new r.Line(d,p);else if(f.mode===P.LINE_LOOP)c=new r.LineLoop(d,p);else if(f.mode===P.POINTS)c=new r.Points(d,p);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+f.mode);Object.keys(c.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,a=t.weights.length;r<a;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,a=r.length;t<a;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(c,o),c.name=t.createUniqueName(o.name||"mesh_"+e),V(c,o),f.extensions&&X(i,c,f),t.assignFinalMaterial(c),h.push(c)}for(let r=0,a=h.length;r<a;r++)t.associations.set(h[r],{meshes:e,primitives:r});if(1===h.length)return o.extensions&&X(i,h[0],o),h[0];let c=new r.Group;o.extensions&&X(i,c,o),t.associations.set(c,{meshes:e});for(let e=0,t=h.length;e<t;e++)c.add(h[e]);return c})}loadCamera(e){let t,a=this.json.cameras[e],n=a[a.type];return n?("perspective"===a.type?t=new r.PerspectiveCamera(r.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===a.type&&(t=new r.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),a.name&&(t.name=this.createUniqueName(a.name)),V(t,a),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],a=[];for(let e=0,r=t.joints.length;e<r;e++)a.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?a.push(this.getDependency("accessor",t.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(e){let a=e.pop(),n=[],i=[];for(let o=0,s=e.length;o<s;o++){let s=e[o];if(s){n.push(s);let e=new r.Matrix4;null!==a&&e.fromArray(a.array,16*o),i.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[o])}return new r.Skeleton(n,i)})}loadAnimation(e){let t=this.json,a=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,o=[],s=[],l=[],u=[],h=[];for(let e=0,t=n.channels.length;e<t;e++){let t=n.channels[e],r=n.samplers[t.sampler],a=t.target,i=a.node,c=void 0!==n.parameters?n.parameters[r.input]:r.input,d=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==a.node&&(o.push(this.getDependency("node",i)),s.push(this.getDependency("accessor",c)),l.push(this.getDependency("accessor",d)),u.push(r),h.push(a))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u),Promise.all(h)]).then(function(e){let t=e[0],n=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=n[e],h=o[e],c=s[e],d=l[e];if(void 0===r)continue;r.updateMatrix&&r.updateMatrix();let f=a._createAnimationTracks(r,i,h,c,d);if(f)for(let e=0;e<f.length;e++)u.push(f[e])}return new r.AnimationClip(i,void 0,u)})}createNodeMesh(e){let t=this.json,r=this,a=t.nodes[e];return void 0===a.mesh?null:r.getDependency("mesh",a.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,a.mesh,e);return void 0!==a.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=a.weights.length;t<r;t++)e.morphTargetInfluences[t]=a.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),a=[],n=t.children||[];for(let e=0,t=n.length;e<t;e++)a.push(this.getDependency("node",n[e]));let i=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(a),i]).then(function(e){let t=e[0],r=e[1],a=e[2];null!==a&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(a,z)});for(let e=0,a=r.length;e<a;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,a=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let i=t.nodes[e],o=i.name?n.createUniqueName(i.name):"",s=[],l=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return l&&s.push(l),void 0!==i.camera&&s.push(n.getDependency("camera",i.camera).then(function(e){return n._getNodeRef(n.cameraCache,i.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){s.push(e)}),this.nodeCache[e]=Promise.all(s).then(function(t){let s;if((s=!0===i.isBone?new r.Bone:t.length>1?new r.Group:1===t.length?t[0]:new r.Object3D)!==t[0])for(let e=0,r=t.length;e<r;e++)s.add(t[e]);if(i.name&&(s.userData.name=i.name,s.name=o),V(s,i),i.extensions&&X(a,s,i),void 0!==i.matrix){let e=new r.Matrix4;e.fromArray(i.matrix),s.applyMatrix4(e)}else void 0!==i.translation&&s.position.fromArray(i.translation),void 0!==i.rotation&&s.quaternion.fromArray(i.rotation),void 0!==i.scale&&s.scale.fromArray(i.scale);return n.associations.has(s)||n.associations.set(s,{}),n.associations.get(s).nodes=e,s}),this.nodeCache[e]}loadScene(e){let t=this.extensions,a=this.json.scenes[e],n=this,i=new r.Group;a.name&&(i.name=n.createUniqueName(a.name)),V(i,a),a.extensions&&X(t,i,a);let o=a.nodes||[],s=[];for(let e=0,t=o.length;e<t;e++)s.push(n.getDependency("node",o[e]));return Promise.all(s).then(function(e){for(let t=0,r=e.length;t<r;t++)i.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,a]of n.associations)(e instanceof r.Material||e instanceof r.Texture)&&t.set(e,a);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,a,n,i){let o,s=[],l=e.name?e.name:e.uuid,u=[];switch(N[i.path]===N.weights?e.traverse(function(e){e.morphTargetInfluences&&u.push(e.name?e.name:e.uuid)}):u.push(l),N[i.path]){case N.weights:o=r.NumberKeyframeTrack;break;case N.rotation:o=r.QuaternionKeyframeTrack;break;case N.position:case N.scale:o=r.VectorKeyframeTrack;break;default:o=1===a.itemSize?r.NumberKeyframeTrack:r.VectorKeyframeTrack}let h=void 0!==n.interpolation?K[n.interpolation]:r.InterpolateLinear,c=this._getArrayFromAccessor(a);for(let e=0,r=u.length;e<r;e++){let r=new o(u[e]+"."+N[i.path],t.array,c,h);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),s.push(r)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=Q(t.constructor),r=new Float32Array(t.length);for(let a=0,n=t.length;a<n;a++)r[a]=t[a]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof r.QuaternionKeyframeTrack?k:U)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Z(e,t,a){let n=t.attributes,i=[];for(let t in n){let r=J[t]||t.toLowerCase();r in e.attributes||i.push(function(t,r){return a.getDependency("accessor",t).then(function(t){e.setAttribute(r,t)})}(n[t],r))}if(void 0!==t.indices&&!e.index){let r=a.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});i.push(r)}return V(e,t),!function(e,t,a){let n=t.attributes,i=new r.Box3;if(void 0===n.POSITION)return;{let e=a.json.accessors[n.POSITION],t=e.min,o=e.max;if(void 0===t||void 0===o)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(i.set(new r.Vector3(t[0],t[1],t[2]),new r.Vector3(o[0],o[1],o[2])),e.normalized){let t=Q(L[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}let o=t.targets;if(void 0!==o){let e=new r.Vector3,t=new r.Vector3;for(let r=0,n=o.length;r<n;r++){let n=o[r];if(void 0!==n.POSITION){let r=a.json.accessors[n.POSITION],i=r.min,o=r.max;if(void 0!==i&&void 0!==o){if(t.setX(Math.max(Math.abs(i[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(i[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(i[2]),Math.abs(o[2]))),r.normalized){let e=Q(L[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(e)}e.boundingBox=i;let s=new r.Sphere;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=s}(e,t,a),Promise.all(i).then(function(){return void 0!==t.targets?function(e,t,r){let a=!1,n=!1,i=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(a=!0),void 0!==r.NORMAL&&(n=!0),void 0!==r.COLOR_0&&(i=!0),a&&n&&i)break}if(!a&&!n&&!i)return Promise.resolve(e);let o=[],s=[],l=[];for(let u=0,h=t.length;u<h;u++){let h=t[u];if(a){let t=void 0!==h.POSITION?r.getDependency("accessor",h.POSITION):e.attributes.position;o.push(t)}if(n){let t=void 0!==h.NORMAL?r.getDependency("accessor",h.NORMAL):e.attributes.normal;s.push(t)}if(i){let t=void 0!==h.COLOR_0?r.getDependency("accessor",h.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l)]).then(function(t){let r=t[0],o=t[1],s=t[2];return a&&(e.morphAttributes.position=r),n&&(e.morphAttributes.normal=o),i&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}(e,t.targets,a):e})}e.s(["GLTFLoader",0,l],46457);var q=r;let $=new WeakMap;class ee extends q.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,a){let n=new q.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(a)},r,a)}decodeDracoFile(e,t,r,a){let n={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:a||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,n).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let a=JSON.stringify(t);if($.has(e)){let t=$.get(e);if(t.key===a)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n=this.workerNextTaskID++,i=e.byteLength,o=this._getWorker(n,i).then(a=>(r=a,new Promise((a,i)=>{r._callbacks[n]={resolve:a,reject:i},r.postMessage({type:"decode",id:n,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&n&&this._releaseTask(r,n)}),$.set(e,{key:a,promise:o}),o}_createGeometry(e){let t=new q.BufferGeometry;e.index&&t.setIndex(new q.BufferAttribute(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let a=e.attributes[r],n=a.name,i=a.array,o=a.itemSize;t.setAttribute(n,new q.BufferAttribute(i,o))}return t}_loadLibrary(e,t){let r=new q.FileLoader(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,a)=>{r.load(e,t,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let a=et.toString(),n=["/* draco decoder */",r,"\n/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([n]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function et(){let e,t;onmessage=function(r){let a=r.data;switch(a.type){case"init":e=a.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let n=a.buffer,i=a.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,o=new t.DecoderBuffer;o.Init(new Int8Array(n),n.byteLength);try{let e=function(e,t,r,a){var n,i,o;let s,l,u,h,c,d,f=a.attributeIDs,p=a.attributeTypes,m=t.GetEncodedGeometryType(r);if(m===e.TRIANGULAR_MESH)c=new e.Mesh,d=t.DecodeBufferToMesh(r,c);else if(m===e.POINT_CLOUD)c=new e.PointCloud,d=t.DecodeBufferToPointCloud(r,c);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!d.ok()||0===c.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+d.error_msg());let g={index:null,attributes:[]};for(let r in f){let n,i,o=self[p[r]];if(a.useUniqueIDs)i=f[r],n=t.GetAttributeByUniqueId(c,i);else{if(-1===(i=t.GetAttributeId(c,e[f[r]])))continue;n=t.GetAttribute(c,i)}g.attributes.push(function(e,t,r,a,n,i){let o=i.num_components(),s=r.num_points()*o,l=s*n.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,n),h=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,i,u,l,h);let c=new n(e.HEAPF32.buffer,h,s).slice();return e._free(h),{name:a,array:c,itemSize:o}}(e,t,c,r,o,n))}return m===e.TRIANGULAR_MESH&&(n=e,i=t,o=c,s=3*o.num_faces(),l=4*s,u=n._malloc(l),i.GetTrianglesUInt32Array(o,l,u),h=new Uint32Array(n.HEAPF32.buffer,u,s).slice(),n._free(u),g.index={array:h,itemSize:1}),e.destroy(c),g}(t,r,o,i),n=e.attributes.map(e=>e.array.buffer);e.index&&n.push(e.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:e},n)}catch(e){console.error(e),self.postMessage({type:"error",id:a.id,error:e.message})}finally{t.destroy(o),t.destroy(r)}})}}}e.s(["DRACOLoader",0,ee],27543),e.s(["MeshoptDecoder",0,()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),a=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let n="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";WebAssembly.validate(r)&&(n="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB");let i=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let a=e.charCodeAt(r);t[r]=a>96?a-71:a>64?a-65:a>47?a+4:a>46?63:62}let r=0;for(let n=0;n<e.length;++n)t[r++]=t[n]<60?a[t[n]]:(t[n]-60)*64+t[++n];return t.buffer.slice(0,r)}(n),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function o(t,r,a,n,i,o){let s=e.exports.sbrk,l=a+3&-4,u=s(l*n),h=s(i.length),c=new Uint8Array(e.exports.memory.buffer);c.set(i,h);let d=t(u,a,n,h,i.length);if(0===d&&o&&o(u,l,n),r.set(c.subarray(u,u+a*n)),s(u-s(0)),0!==d)throw Error(`Malformed buffer data: ${d}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:i,supported:!0,decodeVertexBuffer(t,r,a,n,i){o(e.exports.meshopt_decodeVertexBuffer,t,r,a,n,e.exports[s[i]])},decodeIndexBuffer(t,r,a,n){o(e.exports.meshopt_decodeIndexBuffer,t,r,a,n)},decodeIndexSequence(t,r,a,n){o(e.exports.meshopt_decodeIndexSequence,t,r,a,n)},decodeGltfBuffer(t,r,a,n,i,u){o(e.exports[l[i]],t,r,a,n,e.exports[s[u]])}}}],21359)},53314,e=>{"use strict";var t=e.i(90072),r=e.i(31497);class a extends t.Mesh{constructor(e,a){var n,i;const o=(e=>e&&e.isCubeTexture)(e),s=Math.floor(Math.log2((null!=(i=o?null==(n=e.image[0])?void 0:n.width:e.image.width)?i:1024)/4)),l=Math.pow(2,s),u=3*Math.max(l,112),h=`
|
|
267
267
|
varying vec3 vWorldPosition;
|
|
268
268
|
void main()
|
|
269
269
|
{
|