(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[316],{6665:function(e,t,n){"use strict";n.d(t,{z:function(){return c}});var r=n(7462),o=n(6447),a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=n(2212);const l=(e,t)=>(e%t+t)%t;class u extends s.EventDispatcher{constructor(e,t){super(),i(this,"object",void 0),i(this,"domElement",void 0),i(this,"enabled",!0),i(this,"target",new s.Vector3),i(this,"minDistance",0),i(this,"maxDistance",1/0),i(this,"minZoom",0),i(this,"maxZoom",1/0),i(this,"minPolarAngle",0),i(this,"maxPolarAngle",Math.PI),i(this,"minAzimuthAngle",-1/0),i(this,"maxAzimuthAngle",1/0),i(this,"enableDamping",!1),i(this,"dampingFactor",.05),i(this,"enableZoom",!0),i(this,"zoomSpeed",1),i(this,"enableRotate",!0),i(this,"rotateSpeed",1),i(this,"enablePan",!0),i(this,"panSpeed",1),i(this,"screenSpacePanning",!0),i(this,"keyPanSpeed",7),i(this,"autoRotate",!1),i(this,"autoRotateSpeed",2),i(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),i(this,"mouseButtons",{LEFT:s.MOUSE.ROTATE,MIDDLE:s.MOUSE.DOLLY,RIGHT:s.MOUSE.PAN}),i(this,"touches",{ONE:s.TOUCH.ROTATE,TWO:s.TOUCH.DOLLY_PAN}),i(this,"target0",void 0),i(this,"position0",void 0),i(this,"zoom0",void 0),i(this,"_domElementKeyEvents",null),i(this,"getPolarAngle",void 0),i(this,"getAzimuthalAngle",void 0),i(this,"setPolarAngle",void 0),i(this,"setAzimuthalAngle",void 0),i(this,"getDistance",void 0),i(this,"listenToKeyEvents",void 0),i(this,"saveState",void 0),i(this,"reset",void 0),i(this,"update",void 0),i(this,"connect",void 0),i(this,"dispose",void 0),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object instanceof s.PerspectiveCamera?this.object.zoom:1,this.getPolarAngle=()=>d.phi,this.getAzimuthalAngle=()=>d.theta,this.setPolarAngle=e=>{let t=l(e,2*Math.PI),r=d.phi;r<0&&(r+=2*Math.PI),t<0&&(t+=2*Math.PI);let o=Math.abs(t-r);2*Math.PI-o{let t=l(e,2*Math.PI),r=d.theta;r<0&&(r+=2*Math.PI),t<0&&(t+=2*Math.PI);let o=Math.abs(t-r);2*Math.PI-on.object.position.distanceTo(n.target),this.listenToKeyEvents=e=>{e.addEventListener("keydown",X),this._domElementKeyEvents=e},this.saveState=()=>{n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object instanceof s.PerspectiveCamera?n.object.zoom:1},this.reset=()=>{n.target.copy(n.target0),n.object.position.copy(n.position0),n.object instanceof s.PerspectiveCamera&&(n.object.zoom=n.zoom0,n.object.updateProjectionMatrix()),n.dispatchEvent(r),n.update(),c=u.NONE},this.update=(()=>{const t=new s.Vector3,o=(new s.Quaternion).setFromUnitVectors(e.up,new s.Vector3(0,1,0)),a=o.clone().invert(),i=new s.Vector3,l=new s.Quaternion,v=2*Math.PI;return function(){const e=n.object.position;t.copy(e).sub(n.target),t.applyQuaternion(o),d.setFromVector3(t),n.autoRotate&&c===u.NONE&&C(2*Math.PI/60/60*n.autoRotateSpeed),n.enableDamping?(d.theta+=p.theta*n.dampingFactor,d.phi+=p.phi*n.dampingFactor):(d.theta+=p.theta,d.phi+=p.phi);let s=n.minAzimuthAngle,y=n.maxAzimuthAngle;return isFinite(s)&&isFinite(y)&&(s<-Math.PI?s+=v:s>Math.PI&&(s-=v),y<-Math.PI?y+=v:y>Math.PI&&(y-=v),d.theta=s<=y?Math.max(s,Math.min(y,d.theta)):d.theta>(s+y)/2?Math.max(s,d.theta):Math.min(y,d.theta)),d.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,d.phi)),d.makeSafe(),d.radius*=h,d.radius=Math.max(n.minDistance,Math.min(n.maxDistance,d.radius)),!0===n.enableDamping?n.target.addScaledVector(m,n.dampingFactor):n.target.add(m),t.setFromSpherical(d),t.applyQuaternion(a),e.copy(n.target).add(t),n.object.lookAt(n.target),!0===n.enableDamping?(p.theta*=1-n.dampingFactor,p.phi*=1-n.dampingFactor,m.multiplyScalar(1-n.dampingFactor)):(p.set(0,0,0),m.set(0,0,0)),h=1,!!(g||i.distanceToSquared(n.object.position)>f||8*(1-l.dot(n.object.quaternion))>f)&&(n.dispatchEvent(r),i.copy(n.object.position),l.copy(n.object.quaternion),g=!1,!0)}})(),this.connect=e=>{e===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),n.domElement=e,n.domElement.style.touchAction="none",n.domElement.addEventListener("contextmenu",Y),n.domElement.addEventListener("pointerdown",W),n.domElement.addEventListener("pointercancel",Q),n.domElement.addEventListener("wheel",q)},this.dispose=()=>{var e,t,r,o,a,i;null===(e=n.domElement)||void 0===e||e.removeEventListener("contextmenu",Y),null===(t=n.domElement)||void 0===t||t.removeEventListener("pointerdown",W),null===(r=n.domElement)||void 0===r||r.removeEventListener("pointercancel",Q),null===(o=n.domElement)||void 0===o||o.removeEventListener("wheel",q),null===(a=n.domElement)||void 0===a||a.ownerDocument.removeEventListener("pointermove",G),null===(i=n.domElement)||void 0===i||i.ownerDocument.removeEventListener("pointerup",K),null!==n._domElementKeyEvents&&n._domElementKeyEvents.removeEventListener("keydown",X)};const n=this,r={type:"change"},o={type:"start"},a={type:"end"},u={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let c=u.NONE;const f=1e-6,d=new s.Spherical,p=new s.Spherical;let h=1;const m=new s.Vector3;let g=!1;const v=new s.Vector2,y=new s.Vector2,b=new s.Vector2,x=new s.Vector2,w=new s.Vector2,E=new s.Vector2,S=new s.Vector2,T=new s.Vector2,M=new s.Vector2,P=[],_={};function k(){return Math.pow(.95,n.zoomSpeed)}function C(e){p.theta-=e}function R(e){p.phi-=e}const A=(()=>{const e=new s.Vector3;return function(t,n){e.setFromMatrixColumn(n,0),e.multiplyScalar(-t),m.add(e)}})(),L=(()=>{const e=new s.Vector3;return function(t,r){!0===n.screenSpacePanning?e.setFromMatrixColumn(r,1):(e.setFromMatrixColumn(r,0),e.crossVectors(n.object.up,e)),e.multiplyScalar(t),m.add(e)}})(),N=(()=>{const e=new s.Vector3;return function(t,r){const o=n.domElement;if(o&&n.object instanceof s.PerspectiveCamera&&n.object.isPerspectiveCamera){const a=n.object.position;e.copy(a).sub(n.target);let i=e.length();i*=Math.tan(n.object.fov/2*Math.PI/180),A(2*t*i/o.clientHeight,n.object.matrix),L(2*r*i/o.clientHeight,n.object.matrix)}else o&&n.object instanceof s.OrthographicCamera&&n.object.isOrthographicCamera?(A(t*(n.object.right-n.object.left)/n.object.zoom/o.clientWidth,n.object.matrix),L(r*(n.object.top-n.object.bottom)/n.object.zoom/o.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}})();function I(e){n.object instanceof s.PerspectiveCamera&&n.object.isPerspectiveCamera?h/=e:n.object instanceof s.OrthographicCamera&&n.object.isOrthographicCamera?(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom*e)),n.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function O(e){n.object instanceof s.PerspectiveCamera&&n.object.isPerspectiveCamera?h*=e:n.object instanceof s.OrthographicCamera&&n.object.isOrthographicCamera?(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/e)),n.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function z(e){v.set(e.clientX,e.clientY)}function j(e){x.set(e.clientX,e.clientY)}function U(){if(1==P.length)v.set(P[0].pageX,P[0].pageY);else{const e=.5*(P[0].pageX+P[1].pageX),t=.5*(P[0].pageY+P[1].pageY);v.set(e,t)}}function F(){if(1==P.length)x.set(P[0].pageX,P[0].pageY);else{const e=.5*(P[0].pageX+P[1].pageX),t=.5*(P[0].pageY+P[1].pageY);x.set(e,t)}}function D(){const e=P[0].pageX-P[1].pageX,t=P[0].pageY-P[1].pageY,n=Math.sqrt(e*e+t*t);S.set(0,n)}function H(e){if(1==P.length)y.set(e.pageX,e.pageY);else{const t=J(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);y.set(n,r)}b.subVectors(y,v).multiplyScalar(n.rotateSpeed);const t=n.domElement;t&&(C(2*Math.PI*b.x/t.clientHeight),R(2*Math.PI*b.y/t.clientHeight)),v.copy(y)}function V(e){if(1==P.length)w.set(e.pageX,e.pageY);else{const t=J(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);w.set(n,r)}E.subVectors(w,x).multiplyScalar(n.panSpeed),N(E.x,E.y),x.copy(w)}function B(e){const t=J(e),r=e.pageX-t.x,o=e.pageY-t.y,a=Math.sqrt(r*r+o*o);T.set(0,a),M.set(0,Math.pow(T.y/S.y,n.zoomSpeed)),I(M.y),S.copy(T)}function W(e){if(!1!==n.enabled){var t,r;if(0===P.length)null===(t=n.domElement)||void 0===t||t.ownerDocument.addEventListener("pointermove",G),null===(r=n.domElement)||void 0===r||r.ownerDocument.addEventListener("pointerup",K);!function(e){P.push(e)}(e),"touch"===e.pointerType?function(e){switch(Z(e),P.length){case 1:switch(n.touches.ONE){case s.TOUCH.ROTATE:if(!1===n.enableRotate)return;U(),c=u.TOUCH_ROTATE;break;case s.TOUCH.PAN:if(!1===n.enablePan)return;F(),c=u.TOUCH_PAN;break;default:c=u.NONE}break;case 2:switch(n.touches.TWO){case s.TOUCH.DOLLY_PAN:if(!1===n.enableZoom&&!1===n.enablePan)return;n.enableZoom&&D(),n.enablePan&&F(),c=u.TOUCH_DOLLY_PAN;break;case s.TOUCH.DOLLY_ROTATE:if(!1===n.enableZoom&&!1===n.enableRotate)return;n.enableZoom&&D(),n.enableRotate&&U(),c=u.TOUCH_DOLLY_ROTATE;break;default:c=u.NONE}break;default:c=u.NONE}c!==u.NONE&&n.dispatchEvent(o)}(e):function(e){let t;switch(e.button){case 0:t=n.mouseButtons.LEFT;break;case 1:t=n.mouseButtons.MIDDLE;break;case 2:t=n.mouseButtons.RIGHT;break;default:t=-1}switch(t){case s.MOUSE.DOLLY:if(!1===n.enableZoom)return;!function(e){S.set(e.clientX,e.clientY)}(e),c=u.DOLLY;break;case s.MOUSE.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===n.enablePan)return;j(e),c=u.PAN}else{if(!1===n.enableRotate)return;z(e),c=u.ROTATE}break;case s.MOUSE.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===n.enableRotate)return;z(e),c=u.ROTATE}else{if(!1===n.enablePan)return;j(e),c=u.PAN}break;default:c=u.NONE}c!==u.NONE&&n.dispatchEvent(o)}(e)}}function G(e){!1!==n.enabled&&("touch"===e.pointerType?function(e){switch(Z(e),c){case u.TOUCH_ROTATE:if(!1===n.enableRotate)return;H(e),n.update();break;case u.TOUCH_PAN:if(!1===n.enablePan)return;V(e),n.update();break;case u.TOUCH_DOLLY_PAN:if(!1===n.enableZoom&&!1===n.enablePan)return;!function(e){n.enableZoom&&B(e),n.enablePan&&V(e)}(e),n.update();break;case u.TOUCH_DOLLY_ROTATE:if(!1===n.enableZoom&&!1===n.enableRotate)return;!function(e){n.enableZoom&&B(e),n.enableRotate&&H(e)}(e),n.update();break;default:c=u.NONE}}(e):function(e){if(!1===n.enabled)return;switch(c){case u.ROTATE:if(!1===n.enableRotate)return;!function(e){y.set(e.clientX,e.clientY),b.subVectors(y,v).multiplyScalar(n.rotateSpeed);const t=n.domElement;t&&(C(2*Math.PI*b.x/t.clientHeight),R(2*Math.PI*b.y/t.clientHeight)),v.copy(y),n.update()}(e);break;case u.DOLLY:if(!1===n.enableZoom)return;!function(e){T.set(e.clientX,e.clientY),M.subVectors(T,S),M.y>0?I(k()):M.y<0&&O(k()),S.copy(T),n.update()}(e);break;case u.PAN:if(!1===n.enablePan)return;!function(e){w.set(e.clientX,e.clientY),E.subVectors(w,x).multiplyScalar(n.panSpeed),N(E.x,E.y),x.copy(w),n.update()}(e)}}(e))}function K(e){var t,r,o;($(e),0===P.length)&&(null===(t=n.domElement)||void 0===t||t.releasePointerCapture(e.pointerId),null===(r=n.domElement)||void 0===r||r.ownerDocument.removeEventListener("pointermove",G),null===(o=n.domElement)||void 0===o||o.ownerDocument.removeEventListener("pointerup",K));n.dispatchEvent(a),c=u.NONE}function Q(e){$(e)}function q(e){!1===n.enabled||!1===n.enableZoom||c!==u.NONE&&c!==u.ROTATE||(e.preventDefault(),n.dispatchEvent(o),function(e){e.deltaY<0?O(k()):e.deltaY>0&&I(k()),n.update()}(e),n.dispatchEvent(a))}function X(e){!1!==n.enabled&&!1!==n.enablePan&&function(e){let t=!1;switch(e.code){case n.keys.UP:N(0,n.keyPanSpeed),t=!0;break;case n.keys.BOTTOM:N(0,-n.keyPanSpeed),t=!0;break;case n.keys.LEFT:N(n.keyPanSpeed,0),t=!0;break;case n.keys.RIGHT:N(-n.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),n.update())}(e)}function Y(e){!1!==n.enabled&&e.preventDefault()}function $(e){delete _[e.pointerId];for(let t=0;t{const h=(0,o.Ky)((({invalidate:e})=>e)),m=(0,o.Ky)((({camera:e})=>e)),g=(0,o.Ky)((({gl:e})=>e)),v=(0,o.Ky)((({events:e})=>e)),y=(0,o.Ky)((({set:e})=>e)),b=(0,o.Ky)((({get:e})=>e)),x=(0,o.Ky)((({performance:e})=>e)),w=t||m,E=i||("boolean"!==typeof v.connected?v.connected:g.domElement),S=a.useMemo((()=>new u(w)),[w]);return(0,o.xQ)((()=>{S.enabled&&S.update()})),a.useEffect((()=>{const e=e=>{h(),n&&x.regress(),l&&l(e)};return S.connect(E),S.addEventListener("change",e),c&&S.addEventListener("start",c),f&&S.addEventListener("end",f),()=>{S.removeEventListener("change",e),c&&S.removeEventListener("start",c),f&&S.removeEventListener("end",f),S.dispose()}}),[E,l,c,f,n,S,h]),a.useEffect((()=>{if(e){const e=b().controls;return y({controls:S}),()=>y({controls:e})}}),[e,S]),a.createElement("primitive",(0,r.Z)({ref:p,object:S,enableDamping:s},d))}))},7854:function(e,t,n){"use strict";n.d(t,{V:function(){return v}});var r=n(7462),o=n(7294),a=n(3935),i=n(2212),s=n(6447);const l=new i.Vector3,u=new i.Vector3,c=new i.Vector3;function f(e,t,n){const r=l.setFromMatrixPosition(e.matrixWorld);r.project(t);const o=n.width/2,a=n.height/2;return[r.x*o+o,-r.y*a+a]}const d=e=>Math.abs(e)<1e-10?0:e;function p(e,t,n=""){let r="matrix3d(";for(let o=0;16!==o;o++)r+=d(t[o]*e.elements[o])+(15!==o?",":")");return n+r}const h=(m=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>p(e,m));var m;const g=(e,t)=>{return p(e,[1/(n=t),1/n,1/n,1,-1/n,-1/n,-1/n,-1,1/n,1/n,1/n,1,1,1,1,1],"translate(-50%,-50%)");var n},v=o.forwardRef((({children:e,eps:t=.001,style:n,className:p,prepend:m,center:v,fullscreen:y,portal:b,distanceFactor:x,sprite:w=!1,transform:E=!1,occlude:S,onOcclude:T,zIndexRange:M=[16777271,0],calculatePosition:P=f,as:_="div",wrapperClass:k,pointerEvents:C="auto",...R},A)=>{var L;const N=(0,s.Ky)((({gl:e})=>e)),I=(0,s.Ky)((({camera:e})=>e)),O=(0,s.Ky)((({scene:e})=>e)),z=(0,s.Ky)((({size:e})=>e)),j=(0,s.Ky)((({raycaster:e})=>e)),[U]=o.useState((()=>document.createElement(_))),F=o.useRef(null),D=o.useRef(0),H=o.useRef([0,0]),V=o.useRef(null),B=o.useRef(null),W=null!==(L=null==b?void 0:b.current)&&void 0!==L?L:N.domElement.parentNode;o.useEffect((()=>{if(F.current){if(O.updateMatrixWorld(),E)U.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const e=P(F.current,I,z);U.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return W&&(m?W.prepend(U):W.appendChild(U)),()=>{W&&W.removeChild(U),a.unmountComponentAtNode(U)}}}),[W,E]),o.useLayoutEffect((()=>{k&&(U.className=k)}),[k]);const G=o.useMemo((()=>E?{position:"absolute",top:0,left:0,width:z.width,height:z.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:v?"translate3d(-50%,-50%,0)":"none",...y&&{top:-z.height/2,left:-z.width/2,width:z.width,height:z.height},...n}),[n,v,y,z,E]),K=o.useMemo((()=>({position:"absolute",pointerEvents:C})),[C]);o.useLayoutEffect((()=>{E?a.render(o.createElement("div",{ref:V,style:G},o.createElement("div",{ref:B,style:K},o.createElement("div",{ref:A,className:p,style:n,children:e}))),U):a.render(o.createElement("div",{ref:A,style:G,className:p,children:e}),U)}));const Q=o.useRef(!0);return(0,s.xQ)((()=>{if(F.current){I.updateMatrixWorld(),F.current.updateWorldMatrix(!0,!1);const e=E?H.current:P(F.current,I,z);if(E||Math.abs(D.current-I.zoom)>t||Math.abs(H.current[0]-e[0])>t||Math.abs(H.current[1]-e[1])>t){const t=function(e,t){const n=l.setFromMatrixPosition(e.matrixWorld),r=u.setFromMatrixPosition(t.matrixWorld),o=n.sub(r),a=t.getWorldDirection(c);return o.angleTo(a)>Math.PI/2}(F.current,I);let n=!1;"boolean"===typeof S?!0===S&&(n=[O]):Array.isArray(S)&&(n=S.map((e=>e.current)));const r=Q.current;if(n){const e=function(e,t,n,r){const o=l.setFromMatrixPosition(e.matrixWorld),a=o.clone();a.project(t),n.setFromCamera(a,t);const i=n.intersectObjects(r,!0);if(i.length){const e=i[0].distance;return o.distanceTo(n.ray.origin){const o="function"===typeof e?e(t):e;if(o!==t){const e=t;t=r?o:Object.assign({},t,o),n.forEach((n=>n(t,e)))}},o=()=>t,a={setState:r,getState:o,subscribe:(e,r,a)=>r||a?((e,r=o,a=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let i=r(t);function s(){const n=r(t);if(!a(i,n)){const t=i;e(i=n,t)}}return n.add(s),()=>n.delete(s)})(e,r,a):(n.add(e),()=>n.delete(e)),destroy:()=>n.clear()};return t=e(r,o,a),a}const i="undefined"===typeof window||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent)?o.useEffect:o.useLayoutEffect;var s=n(6525),l=n.n(s),u=n(3840),c=n(4063),f=n.n(c);const d=[];function p(e,t,n,r=0,o=!1){for(const i of t)if(f()(n,i.args)){if(o)return;if(i.error)throw i.error;if(i.response)return i.response;throw i.promise}const a={args:n,promise:e(...n).then((e=>a.response=null==e||e)).catch((e=>a.error=null!=e?e:"unknown error")).then((()=>{r>0&&setTimeout((()=>{const e=t.indexOf(a);-1!==e&&t.splice(e,1)}),r)}))};if(t.push(a),!o)throw a.promise}function h(e,...t){if(void 0===t||0===t.length)e.splice(0,e.length);else{const n=e.find((e=>f()(t,e.args)));if(n){const t=e.indexOf(n);-1!==t&&e.splice(t,1)}}}function m(e,...t){return p(e,d,t,m.lifespan)}m.lifespan=0,m.clear=(...e)=>h(d,...e),m.preload=(e,...t)=>{p(e,d,t,m.lifespan,!0)},m.peek=(...e)=>{var t;return null==(t=d.find((t=>f()(e,t.args))))?void 0:t.response};var g=function(e){return function(t){e.forEach((function(e){"function"===typeof e?e(t):null!=e&&(e.current=t)}))}},v=n(296),y=n.n(v);function b(e){let{debounce:t,scroll:n,polyfill:r,offsetSize:a}=void 0===e?{debounce:0,scroll:!1,offsetSize:!1}:e;const i=r||("undefined"===typeof window?class{}:window.ResizeObserver);if(!i)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[s,l]=(0,o.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),u=(0,o.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:s}),c=t?"number"===typeof t?t:t.scroll:null,f=t?"number"===typeof t?t:t.resize:null,d=(0,o.useRef)(!1);(0,o.useEffect)((()=>(d.current=!0,()=>{d.current=!1})));const[p,h,m]=(0,o.useMemo)((()=>{const e=()=>{if(!u.current.element)return;const{left:e,top:t,width:n,height:r,bottom:o,right:i,x:s,y:c}=u.current.element.getBoundingClientRect(),f={left:e,top:t,width:n,height:r,bottom:o,right:i,x:s,y:c};u.current.element instanceof HTMLElement&&a&&(f.height=u.current.element.offsetHeight,f.width=u.current.element.offsetWidth),Object.freeze(f),d.current&&!E(u.current.lastBounds,f)&&l(u.current.lastBounds=f)};return[e,f?y()(e,f):e,c?y()(e,c):e]}),[l,a,c,f]);function g(){u.current.scrollContainers&&(u.current.scrollContainers.forEach((e=>e.removeEventListener("scroll",m,!0))),u.current.scrollContainers=null),u.current.resizeObserver&&(u.current.resizeObserver.disconnect(),u.current.resizeObserver=null)}function v(){u.current.element&&(u.current.resizeObserver=new i(m),u.current.resizeObserver.observe(u.current.element),n&&u.current.scrollContainers&&u.current.scrollContainers.forEach((e=>e.addEventListener("scroll",m,{capture:!0,passive:!0}))))}var b,w,S;return b=m,w=Boolean(n),(0,o.useEffect)((()=>{if(w){const e=b;return window.addEventListener("scroll",e,{capture:!0,passive:!0}),()=>{window.removeEventListener("scroll",e,!0)}}}),[b,w]),S=h,(0,o.useEffect)((()=>{const e=S;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[S]),(0,o.useEffect)((()=>{g(),v()}),[n,m,h]),(0,o.useEffect)((()=>g),[]),[e=>{e&&e!==u.current.element&&(g(),u.current.element=e,u.current.scrollContainers=x(e),v())},s,p]}function x(e){const t=[];if(!e||e===document.body)return t;const{overflow:n,overflowX:r,overflowY:o}=window.getComputedStyle(e);return[n,r,o].some((e=>"auto"===e||"scroll"===e))&&t.push(e),[...t,...x(e.parentElement)]}const w=["x","y","top","bottom","left","right","width","height"],E=(e,t)=>w.every((n=>e[n]===t[n]));const S={obj:e=>e===Object(e)&&!S.arr(e)&&"function"!==typeof e,fun:e=>"function"===typeof e,str:e=>"string"===typeof e,num:e=>"number"===typeof e,und:e=>void 0===e,arr:e=>Array.isArray(e),equ(e,t){if(typeof e!==typeof t||!!e!==!!t)return!1;if(S.str(e)||S.num(e)||S.obj(e))return e===t;if(S.arr(e)&&e==t)return!0;let n;for(n in e)if(!(n in t))return!1;for(n in t)if(e[n]!==t[n])return!1;return!S.und(n)||e===t}};function T(e){return(e.eventObject||e.object).uuid+"/"+e.index+e.instanceId}function M(e,t,n,r){const o=n.get(t);o&&(n.delete(t),0===n.size&&(e.delete(r),o.target.releasePointerCapture(r)))}function P(e){const t=new r.Vector3;function n(e){return e.filter((e=>["Move","Over","Enter","Out","Leave"].some((t=>{var n;return null==(n=e.__r3f)?void 0:n.handlers["onPointer"+t]}))))}function o(t){const{internal:n}=e.getState();Array.from(n.hovered.values()).forEach((e=>{if(!t.length||!t.find((t=>t.object===e.object&&t.index===e.index&&t.instanceId===e.instanceId))){const r=e.eventObject.__r3f,o=null==r?void 0:r.handlers;if(n.hovered.delete(T(e)),null!=r&&r.eventCount){const n={...e,intersections:t||[]};null==o.onPointerOut||o.onPointerOut(n),null==o.onPointerLeave||o.onPointerLeave(n)}}}))}function a(e,t){t.forEach((t=>{var n;return null==(n=t.__r3f)||null==n.handlers.onPointerMissed?void 0:n.handlers.onPointerMissed(e)}))}return{handlePointer:r=>{switch(r){case"onPointerLeave":case"onPointerCancel":return()=>o([]);case"onLostPointerCapture":return t=>{const{internal:n}=e.getState();"pointerId"in t&&!n.capturedMap.has(t.pointerId)&&(n.capturedMap.delete(t.pointerId),o([]))}}return i=>{const{onPointerMissed:s,internal:l}=e.getState();!function(t){var n;const r=e.getState(),{raycaster:o,mouse:a,camera:i,size:s}=r,{offsetX:l,offsetY:u}=null!=(n=null==o.computeOffsets?void 0:o.computeOffsets(t,r))?n:t,{width:c,height:f}=s;a.set(l/c*2-1,-u/f*2+1),o.setFromCamera(a,i)}(i),l.lastEvent.current=i;const u="onPointerMove"===r,c="onClick"===r||"onContextMenu"===r||"onDoubleClick"===r,f=function(t,n){const{internal:r}=e.getState();if("pointerId"in n&&r.capturedMap.has(n.pointerId))for(let e of r.capturedMap.get(n.pointerId).values())t.push(e.intersection);return t}(function(t){const n=e.getState(),{raycaster:r,internal:o}=n;if(!r.enabled)return[];const a=new Set,i=[],s=t?t(o.interaction):o.interaction;let l=r.intersectObjects(s,!0).filter((e=>{const t=T(e);return!a.has(t)&&(a.add(t),!0)}));r.filter&&(l=r.filter(l,n));for(const e of l){let t=e.object;for(;t;){var u;null!=(u=t.__r3f)&&u.eventCount&&i.push({...e,eventObject:t}),t=t.parent}}return i}(u?n:void 0),i),d=c?function(t){const{internal:n}=e.getState(),r=t.offsetX-n.initialClick[0],o=t.offsetY-n.initialClick[1];return Math.round(Math.sqrt(r*r+o*o))}(i):0;"onPointerDown"===r&&(l.initialClick=[i.offsetX,i.offsetY],l.initialHits=f.map((e=>e.eventObject))),c&&!f.length&&d<=2&&(a(i,l.interaction),s&&s(i)),u&&o(f),function(n,r,a,i){const{raycaster:s,mouse:l,camera:u,internal:c}=e.getState();if(n.length){const e=t.set(l.x,l.y,0).unproject(u),f={stopped:!1};for(const t of n){const d=e=>{var n,r;return null!=(n=null==(r=c.capturedMap.get(e))?void 0:r.has(t.eventObject))&&n},p=e=>{const n={intersection:t,target:r.target};c.capturedMap.has(e)?c.capturedMap.get(e).set(t.eventObject,n):c.capturedMap.set(e,new Map([[t.eventObject,n]])),r.target.setPointerCapture(e)},h=e=>{const n=c.capturedMap.get(e);n&&M(c.capturedMap,t.eventObject,n,e)};let m={};for(let e in r){let t=r[e];"function"!==typeof t&&(m[e]=t)}let g={...t,...m,spaceX:l.x,spaceY:l.y,intersections:n,stopped:f.stopped,delta:a,unprojectedPoint:e,ray:s.ray,camera:u,stopPropagation:()=>{const e="pointerId"in r&&c.capturedMap.get(r.pointerId);(!e||e.has(t.eventObject))&&(g.stopped=f.stopped=!0,c.hovered.size&&Array.from(c.hovered.values()).find((e=>e.eventObject===t.eventObject)))&&o([...n.slice(0,n.indexOf(t)),t])},target:{hasPointerCapture:d,setPointerCapture:p,releasePointerCapture:h},currentTarget:{hasPointerCapture:d,setPointerCapture:p,releasePointerCapture:h},sourceEvent:r,nativeEvent:r};if(i(g),!0===f.stopped)break}}}(f,i,d,(e=>{const t=e.eventObject,n=t.__r3f,o=null==n?void 0:n.handlers;if(null!=n&&n.eventCount)if(u){if(o.onPointerOver||o.onPointerEnter||o.onPointerOut||o.onPointerLeave){const t=T(e),n=l.hovered.get(t);n?n.stopped&&e.stopPropagation():(l.hovered.set(t,e),null==o.onPointerOver||o.onPointerOver(e),null==o.onPointerEnter||o.onPointerEnter(e))}null==o.onPointerMove||o.onPointerMove(e)}else{const n=o[r];n?c&&!l.initialHits.includes(t)||(a(i,l.interaction.filter((e=>!l.initialHits.includes(e)))),n(e)):c&&l.initialHits.includes(t)&&a(i,l.interaction.filter((e=>!l.initialHits.includes(e))))}}))}}}}const _=e=>e&&!!e.getState,k=(e,t)=>{var n,r;return{root:_(e)?e:null!=(n=null==(r=e.__r3f)?void 0:r.root)?n:t.__r3f.root,container:_(e)?e.getState().scene:e}},C="__default",R={};let A={};function L(e,t){const n=e;return(null!=t&&t.primitive||!n.__r3f)&&(n.__r3f={root:null,memoizedProps:{},eventCount:0,handlers:{},objects:[],parent:null,...t}),e}const N=e=>e&&e.isOrthographicCamera;function I(e){return Array.isArray(e)?Math.min(Math.max(e[0],window.devicePixelRatio),e[1]):e}const O=o.createContext(null),z=(e,t,n,s)=>{const{gl:l,size:u,shadows:c=!1,linear:f=!1,flat:d=!1,vr:p=!1,orthographic:h=!1,frameloop:m="always",dpr:g=1,performance:v,clock:y=new r.Clock,raycaster:b,camera:x,onPointerMissed:w}=s;c&&(l.shadowMap.enabled=!0,"object"===typeof c?Object.assign(l.shadowMap,c):l.shadowMap.type=r.PCFSoftShadowMap),f&&(l.outputEncoding=r.LinearEncoding),d&&(l.toneMapping=r.NoToneMapping),"never"===m&&(y.stop(),y.elapsedTime=0);const E=function(e){const t="function"===typeof e?a(e):e,n=(e=t.getState,n=Object.is)=>{const[,r]=(0,o.useReducer)((e=>e+1),0),a=t.getState(),s=(0,o.useRef)(a),l=(0,o.useRef)(e),u=(0,o.useRef)(n),c=(0,o.useRef)(!1),f=(0,o.useRef)();let d;void 0===f.current&&(f.current=e(a));let p=!1;(s.current!==a||l.current!==e||u.current!==n||c.current)&&(d=e(a),p=!n(f.current,d)),i((()=>{p&&(f.current=d),s.current=a,l.current=e,u.current=n,c.current=!1}));const h=(0,o.useRef)(a);i((()=>{const e=()=>{try{const e=t.getState(),n=l.current(e);u.current(f.current,n)||(s.current=e,f.current=n,r())}catch(e){c.current=!0,r()}},n=t.subscribe(e);return t.getState()!==h.current&&e(),n}),[]);const m=p?d:f.current;return(0,o.useDebugValue)(m),m};return Object.assign(n,t),n[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const e=[n,t];return{next(){const t=e.length<=0;return{value:e.shift(),done:t}}}},n}(((a,i)=>{const u=new r.Raycaster,{params:c,...E}=b||{};e(u,{enabled:!0,...E,params:{...u.params,...c}});const S=x instanceof r.Camera,T=S?x:h?new r.OrthographicCamera(0,0,0,0,.1,1e3):new r.PerspectiveCamera(75,0,.1,1e3);S||(T.position.z=5,x&&e(T,x),null!=x&&x.rotation||T.lookAt(0,0,0));const M=I(g),P=new r.Vector3,_=new r.Vector3,k=new r.Vector3;function C(e=i().camera,t=_,n=i().size){const{width:o,height:a}=n,s=o/a;t instanceof r.Vector3?k.copy(t):k.set(...t);const l=e.getWorldPosition(P).distanceTo(k);if(N(e))return{width:o/e.zoom,height:a/e.zoom,factor:1,distance:l,aspect:s};{const t=e.fov*Math.PI/180,n=2*Math.tan(t/2)*l,r=n*(o/a);return{width:r,height:n,factor:o/r,distance:l,aspect:s}}}let R;const A=e=>a((t=>({performance:{...t.performance,current:e}})));return{gl:l,set:a,get:i,invalidate:()=>t(i()),advance:(e,t)=>n(e,t,i()),linear:f,flat:d,scene:L(new r.Scene),camera:T,controls:null,raycaster:u,clock:y,mouse:new r.Vector2,vr:p,frameloop:m,onPointerMissed:w,performance:{current:1,min:.5,max:1,debounce:200,...v,regress:()=>{const e=i();R&&clearTimeout(R),e.performance.current!==e.performance.min&&A(e.performance.min),R=setTimeout((()=>A(i().performance.max)),e.performance.debounce)}},size:{width:0,height:0},viewport:{initialDpr:M,dpr:M,width:0,height:0,aspect:0,distance:0,factor:0,getCurrentViewport:C},setSize:(e,t)=>{const n={width:e,height:t};a((e=>({size:n,viewport:{...e.viewport,...C(T,_,n)}})))},setDpr:e=>a((t=>({viewport:{...t.viewport,dpr:I(e)}}))),setFrameloop:(e="always")=>a((()=>({frameloop:e}))),events:{connected:!1},internal:{active:!1,priority:0,frames:0,lastProps:s,lastEvent:o.createRef(),interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,subscribe:(e,t=0)=>(a((({internal:n})=>({internal:{...n,priority:n.priority+(t>0?1:0),subscribers:[...n.subscribers,{ref:e,priority:t}].sort(((e,t)=>e.priority-t.priority))}}))),()=>{a((({internal:n})=>({internal:{...n,priority:n.priority-(t>0?1:0),subscribers:n.subscribers.filter((t=>t.ref!==e))}})))})}}})),S=E.getState();let T=S.size,M=S.viewport.dpr;return E.subscribe((()=>{const{camera:e,size:t,viewport:n,internal:o}=E.getState();t===T&&n.dpr===M||(e.manual||o.lastProps.camera instanceof r.Camera||(N(e)?(e.left=t.width/-2,e.right=t.width/2,e.top=t.height/2,e.bottom=t.height/-2):e.aspect=t.width/t.height,e.updateProjectionMatrix(),e.updateMatrixWorld()),l.setPixelRatio(n.dpr),l.setSize(t.width,t.height),T=t,M=n.dpr)})),u&&S.setSize(u.width,u.height),E.subscribe((e=>t(e))),E};let j,U=[],F=[],D=[];function H(e,t){for(j=0;j({...e,[n]:t(n)})),{}),connect:t=>{var r;const{set:o,events:a}=e.getState();null==a.disconnect||a.disconnect(),o((e=>({events:{...e.events,connected:t}}))),Object.entries(null!=(r=null==a?void 0:a.handlers)?r:[]).forEach((([e,r])=>{const[o,a]=n[e];t.addEventListener(o,r,{passive:a})}))},disconnect:()=>{const{set:t,events:r}=e.getState();var o;r.connected&&(Object.entries(null!=(o=r.handlers)?o:[]).forEach((([e,t])=>{if(r&&r.connected instanceof HTMLElement){const[o]=n[e];r.connected.removeEventListener(o,t)}})),t((e=>({events:{...e.events,connected:!1}}))))}}}const W="undefined"!==typeof window?o.useLayoutEffect:o.useEffect;function G({set:e}){return W((()=>(e(new Promise((()=>null))),()=>e(!1))),[]),null}class K extends o.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}K.getDerivedStateFromError=()=>({error:!0});const Q=o.forwardRef((function({children:e,fallback:t,tabIndex:n,resize:a,id:i,style:s,className:l,events:u,...c},f){const[d,{width:p,height:h}]=b({scroll:!0,debounce:{scroll:50,resize:0},...a}),m=o.useRef(null),[v,y]=o.useState(!1),[x,w]=o.useState(!1);if(v)throw v;if(x)throw x;return W((()=>{p>0&&h>0&&function(e,t,{gl:n,size:a,mode:i=te[1],events:s,onCreated:l,...u}={}){var c,f,d,p,h;a||(a={width:null!=(f=null==(d=t.parentElement)?void 0:d.clientWidth)?f:0,height:null!=(p=null==(h=t.parentElement)?void 0:h.clientHeight)?p:0});let m=ee.get(t),g=null==m?void 0:m.fiber,v=null==m?void 0:m.store,y=null==(c=v)?void 0:c.getState();if(g&&y){void 0===u.dpr||S.equ(y.viewport.dpr,I(u.dpr))||y.setDpr(u.dpr),y.size.width===a.width&&y.size.height===a.height||y.setSize(a.width,a.height),y.frameloop!==u.frameloop&&y.setFrameloop(u.frameloop);u.linear!==y.internal.lastProps.linear&&(se(t),g=void 0)}if(!g){const e=((e,t)=>{const n="function"===typeof e?e(t):e;if(o=n,null!=o&&o.render)return n;var o;const a=new r.WebGLRenderer({powerPreference:"high-performance",canvas:t,antialias:!0,alpha:!0,...e});a.outputEncoding=r.sRGBEncoding,a.toneMapping=r.ACESFilmicToneMapping,e&&ae(a,e);return a})(n,t);u.vr&&(e.xr.enabled=!0,e.setAnimationLoop((e=>re(e,!0)))),v=z(ae,ne,re,{gl:e,size:a,...u});const o=v.getState();g=oe.createContainer(v,te.indexOf(i),!1,null),ee.set(t,{fiber:g,store:v}),s&&o.set({events:s(v)})}if(v&&g)return oe.updateContainer(o.createElement(ie,{store:v,element:e,onCreated:l,target:t}),g,null,(()=>{})),v;throw"Error creating root!"}(o.createElement(K,{set:w},o.createElement(o.Suspense,{fallback:o.createElement(G,{set:y})},e)),m.current,{...c,size:{width:p,height:h},events:u||B})}),[p,h,e]),W((()=>{const e=m.current;return()=>se(e)}),[]),o.createElement("div",{ref:d,id:i,className:l,tabIndex:n,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",...s}},o.createElement("canvas",{ref:g([m,f]),style:{display:"block"}},t))}));function q(){const e=o.useContext(O);if(!e)throw"R3F hooks can only be used within the Canvas component!";return e}function X(e=(e=>e),t){return q()(e,t)}function Y(e,t=0){const n=q().getState().internal.subscribe,r=o.useRef(e);return o.useLayoutEffect((()=>{r.current=e}),[e]),o.useLayoutEffect((()=>n(r,t)),[t,n]),null}function $(e){const t={nodes:{},materials:{}};return e&&e.traverse((e=>{e.name&&(t.nodes[e.name]=e),e.material&&!t.materials[e.material.name]&&(t.materials[e.material.name]=e.material)})),t}function Z(e,t){return function(n,...r){const o=new n;return e&&e(o),Promise.all(r.map((e=>new Promise(((n,r)=>o.load(e,(e=>{e.scene&&Object.assign(e,$(e.scene)),n(e)}),t,(t=>r(`Could not load ${e}: ${t.message}`))))))))}}function J(e,t,n,r){const o=Array.isArray(t)?t:[t],a=m(Z(n,r),e,...o);return Array.isArray(t)?a:a[0]}J.preload=function(e,t,n){const r=Array.isArray(t)?t:[t];return m.preload(Z(n),e,...r)},J.clear=function(e,t){const n=Array.isArray(t)?t:[t];return m.clear(e,...n)};const ee=new Map,te=["legacy","blocking","concurrent"],{invalidate:ne,advance:re}=function(e){let t,n=!1;function r(o){if(n=!0,t=0,H(U,o),e.forEach((e=>{const n=e.store.getState();n.internal.active&&("always"===n.frameloop||n.internal.frames>0)&&(t+=V(o,n))})),H(F,o),t>0)return requestAnimationFrame(r);H(D,o),n=!1}return{loop:r,invalidate:function t(o){if(!o)return e.forEach((e=>t(e.store.getState())));!o.vr&&o.internal.active&&"never"!==o.frameloop&&(o.internal.frames=Math.min(60,o.internal.frames+1),n||(n=!0,requestAnimationFrame(r)))},advance:function(t,n=!0,r){n&&H(U,t),r?V(t,r):e.forEach((e=>V(t,e.store.getState()))),n&&H(F,t)}}}(ee),{reconciler:oe,applyProps:ae}=function(e){function t(e,{children:t,key:n,ref:r,...o},{children:a,key:i,ref:s,...l}={},u=!1){var c;const f=null!=(c=null==e?void 0:e.__r3f)?c:{},d=Object.entries(o),p=[];if(u){const e=Object.keys(l);for(let t=0;t{var r,o,a;if(null!=(r=e.__r3f)&&r.primitive&&"object"===t)return;if(o=n,a=l[t],S.arr(o)&&S.equ(o,a)||o===a)return;if(/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(t))return p.push([t,n,!0,[]]);let i=[];t.includes("-")&&(i=t.split("-")),p.push([t,n,!1,i])}));const h={...o};return f.memoizedProps&&f.memoizedProps.args&&(h.args=f.memoizedProps.args),f.memoizedProps&&f.memoizedProps.attach&&(h.attach=f.memoizedProps.attach),{accumulative:u,memoized:h,changes:p}}function n(e,n){var i,s,l;const u=null!=(i=null==e?void 0:e.__r3f)?i:{},c=u.root,f=null!=(s=null==c||null==c.getState?void 0:c.getState())?s:{},{memoized:d,changes:p}=(h=n)&&h.memoized&&h.changes?n:t(e,n);var h;const m=u.eventCount;if(e.__r3f&&(e.__r3f.memoizedProps=d),p.forEach((([t,n,a,i])=>{let s=e,l=s[t];if(i.length&&(l=i.reduce(((e,t)=>e[t]),e),!l||!l.set)){const[n,...r]=i.reverse();s=r.reverse().reduce(((e,t)=>e[t]),e),t=n}if(n===C+"remove")if(l&&l.constructor)n=new l.constructor(d.args);else if(s.constructor){const e=new s.constructor(s.__r3f.memoizedProps.args);n=e[l],e.dispose&&e.dispose()}else n=0;if(a)n?u.handlers[t]=n:delete u.handlers[t],u.eventCount=Object.keys(u.handlers).length;else if(l&&l.set&&(l.copy||l instanceof r.Layers)){if(Array.isArray(n))l.fromArray?l.fromArray(n):l.set(...n);else if(l.copy&&n&&n.constructor&&l.constructor.name===n.constructor.name)l.copy(n);else if(void 0!==n){const e=l instanceof r.Color;!e&&l.setScalar?l.setScalar(n):l instanceof r.Layers&&n instanceof r.Layers?l.mask=n.mask:l.set(n),!f.linear&&e&&l.convertSRGBToLinear()}}else s[t]=n,!f.linear&&s[t]instanceof r.Texture&&(s[t].encoding=r.sRGBEncoding);o(e)})),u.parent&&f.internal&&e.raycast&&m!==u.eventCount){const t=f.internal.interaction.indexOf(e);t>-1&&f.internal.interaction.splice(t,1),u.eventCount&&f.internal.interaction.push(e)}return p.length&&null!=(l=e.__r3f)&&l.parent&&a(e),e}function o(e){var t,n;const r=null==(t=e.__r3f)||null==(n=t.root)||null==n.getState?void 0:n.getState();r&&0===r.internal.frames&&r.invalidate()}function a(e){null==e.onUpdate||e.onUpdate(e)}function i(e,{args:t=[],...o},a,i,s){let l,u=`${e[0].toUpperCase()}${e.slice(1)}`;if(!_(a)&&s){const e=t=>t.return?e(t.return):t.stateNode&&t.stateNode.containerInfo;a=e(s)}if(!a||!_(a))throw`No valid root for ${u}!`;if("primitive"===e){if(void 0===o.object)throw"Primitives without 'object' are invalid!";l=L(o.object,{root:a,primitive:!0})}else{const e=A[u]||r[u];if(!e)throw`${u} is not part of the THREE namespace! Did you forget to extend? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`;if(!Array.isArray(t))throw"The args prop must be an array!";l=L(new e(...t),{root:a,memoizedProps:{args:0===t.length?null:t}})}return"attachFns"in o||(u.endsWith("Geometry")?o={attach:"geometry",...o}:u.endsWith("Material")&&(o={attach:"material",...o})),n(l,o),l}function s(e,t){let n=!1;if(t){if(t.attachArray)S.arr(e[t.attachArray])||(e[t.attachArray]=[]),e[t.attachArray].push(t);else if(t.attachObject)S.obj(e[t.attachObject[0]])||(e[t.attachObject[0]]={}),e[t.attachObject[0]][t.attachObject[1]]=t;else if(t.attach&&!S.fun(t.attach))e[t.attach]=t;else if(S.arr(t.attachFns)){const[n]=t.attachFns;S.str(n)&&S.fun(e[n])?e[n](t):S.fun(n)&&n(t,e)}else t.isObject3D&&e.isObject3D&&(e.add(t),n=!0);n||e.__r3f.objects.push(t),t.__r3f||L(t,{}),t.__r3f.parent=e,a(t),o(t)}}function c(e,t,n){let r=!1;if(t){if(t.attachArray){const r=e[t.attachArray];S.arr(r)||(e[t.attachArray]=[]),r.splice(r.indexOf(n),0,t)}else{if(t.attachObject||t.attach&&!S.fun(t.attach))return s(e,t);if(t.isObject3D&&e.isObject3D){t.parent=e,t.dispatchEvent({type:"added"});const o=e.children.filter((e=>e!==t)),a=o.indexOf(n);e.children=[...o.slice(0,a),t,...o.slice(a)],r=!0}}r||e.__r3f.objects.push(t),t.__r3f||L(t,{}),t.__r3f.parent=e,a(t),o(t)}}function f(e,t,n=!1){e&&[...e].forEach((e=>d(t,e,n)))}function d(e,t,n){if(t){var r,a;if(t.__r3f&&(t.__r3f.parent=null),null!=(r=e.__r3f)&&r.objects&&(e.__r3f.objects=e.__r3f.objects.filter((e=>e!==t))),t.attachArray)e[t.attachArray]=e[t.attachArray].filter((e=>e!==t));else if(t.attachObject)delete e[t.attachObject[0]][t.attachObject[1]];else if(t.attach&&!S.fun(t.attach)&&e[t.attach]===t)e[t.attach]=null;else if(S.arr(t.attachFns)){const[,n]=t.attachFns;S.str(n)&&S.fun(e[n])?e[n](t):S.fun(n)&&n(t,e)}else if(t.isObject3D&&e.isObject3D){var i;e.remove(t),null!=(i=t.__r3f)&&i.root&&function(e,t){const{internal:n}=e.getState();n.interaction=n.interaction.filter((e=>e!==t)),n.initialHits=n.initialHits.filter((e=>e!==t)),n.hovered.forEach(((e,r)=>{e.eventObject!==t&&e.object!==t||n.hovered.delete(r)})),n.capturedMap.forEach(((e,r)=>{M(n.capturedMap,t,e,r)}))}(t.__r3f.root,t)}const l=null==(a=t.__r3f)?void 0:a.primitive,c=void 0===n?null!==t.dispose&&!l:n;var s;if(!l)f(null==(s=t.__r3f)?void 0:s.objects,t,c),f(t.children,t,c);t.__r3f&&(delete t.__r3f.root,delete t.__r3f.objects,delete t.__r3f.handlers,delete t.__r3f.memoizedProps,l||delete t.__r3f),c&&t.dispose&&"Scene"!==t.type&&(0,u.unstable_runWithPriority)(u.unstable_IdlePriority,(()=>{try{t.dispose()}catch(e){}})),o(e)}}return{reconciler:l()({now:u.unstable_now,createInstance:i,removeChild:d,appendChild:s,appendInitialChild:s,insertBefore:c,warnsIfNotActing:!0,supportsMutation:!0,isPrimaryRenderer:!1,scheduleTimeout:S.fun(setTimeout)?setTimeout:void 0,cancelTimeout:S.fun(clearTimeout)?clearTimeout:void 0,setTimeout:S.fun(setTimeout)?setTimeout:void 0,clearTimeout:S.fun(clearTimeout)?clearTimeout:void 0,noTimeout:-1,appendChildToContainer:(e,t)=>{const{container:n,root:r}=k(e,t);n.__r3f.root=r,s(n,t)},removeChildFromContainer:(e,t)=>d(k(e,t).container,t),insertInContainerBefore:(e,t,n)=>c(k(e,t).container,t,n),prepareUpdate(e,n,r,o){if(e.__r3f.primitive&&o.object&&o.object!==e)return[!0];{const{args:n=[],children:a,...i}=o,{args:l=[],children:u,...c}=r;if(!Array.isArray(n))throw"The args prop must be an array!";if(n.some(((e,t)=>e!==l[t])))return[!0];const f=t(e,i,c,!0);if(f.changes.length)return[!1,f];if(e.attach&&"function"!==typeof e.attach){const t=e.__r3f.parent;t&&t[e.attach]!==e&&s(t,e)}return null}},commitUpdate(e,[t,r],o,a,l,u){t?function(e,t,n,r){var o;const a=null==(o=e.__r3f)?void 0:o.parent;if(!a)return;const l=i(t,n,e.__r3f.root);"primitive"!==t&&e.children&&(e.children.forEach((e=>s(l,e))),e.children=[]),e.__r3f.objects.forEach((e=>s(l,e))),e.__r3f.objects=[],d(a,e),s(a,l),[r,r.alternate].forEach((e=>{null!==e&&(e.stateNode=l,e.ref&&("function"===typeof e.ref?e.ref(l):e.ref.current=l))}))}(e,o,l,u):n(e,r)},hideInstance(e){e.isObject3D&&(e.visible=!1,o(e))},unhideInstance(e,t){(e.isObject3D&&null==t.visible||t.visible)&&(e.visible=!0,o(e))},hideTextInstance(){throw new Error("Text is not allowed in the R3F tree.")},getPublicInstance:e=>e,getRootHostContext:e=>R,getChildHostContext:e=>e,createTextInstance(){},finalizeInitialChildren(e){var t;return!!(null!=(t=null==e?void 0:e.__r3f)?t:{}).handlers},commitMount(e){var t;const n=null!=(t=null==e?void 0:e.__r3f)?t:{};e.raycast&&n.handlers&&n.eventCount&&e.__r3f.root.getState().internal.interaction.push(e)},shouldDeprioritizeSubtree:()=>!1,prepareForCommit:()=>null,preparePortalMount(e){L(e)},resetAfterCommit(){},shouldSetTextContent:()=>!1,clearContainer:()=>!1}),applyProps:n}}();function ie({store:e,element:t,onCreated:n,target:r}){return o.useEffect((()=>{const t=e.getState();t.set((e=>({internal:{...e.internal,active:!0}}))),null==t.events.connect||t.events.connect(r),n&&n(t)}),[]),o.createElement(O.Provider,{value:e},t)}function se(e,t){const n=ee.get(e),r=null==n?void 0:n.fiber;if(r){const o=null==n?void 0:n.store.getState();o&&(o.internal.active=!1),oe.updateContainer(null,r,null,(()=>{o&&setTimeout((()=>{var n,r,a;null==o.events.disconnect||o.events.disconnect(),null==(n=o.gl)||null==(r=n.renderLists)||null==r.dispose||r.dispose(),null==(a=o.gl)||null==a.forceContextLoss||a.forceContextLoss(),function(e){e.dispose&&"Scene"!==e.type&&e.dispose();for(const r in e){var t,n;null==(t=(n=r).dispose)||t.call(n),delete e[r]}}(o),ee.delete(e),t&&t(e)}),500)}))}}oe.act;oe.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:"17.0.2"})},296:function(e){function t(e,t,n){var r,o,a,i,s;function l(){var u=Date.now()-i;u=0?r=setTimeout(l,t-u):(r=null,n||(s=e.apply(a,o),a=o=null))}null==t&&(t=100);var u=function(){a=this,o=arguments,i=Date.now();var u=n&&!r;return r||(r=setTimeout(l,t)),u&&(s=e.apply(a,o),a=o=null),s};return u.clear=function(){r&&(clearTimeout(r),r=null)},u.flush=function(){r&&(s=e.apply(a,o),a=o=null,clearTimeout(r),r=null)},u}t.debounce=t,e.exports=t},4063:function(e){"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,o,a;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(o=r;0!==o--;)if(!e(t[o],n[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(a=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(o=r;0!==o--;)if(!Object.prototype.hasOwnProperty.call(n,a[o]))return!1;for(o=r;0!==o--;){var i=a[o];if(!e(t[i],n[i]))return!1}return!0}return t!==t&&n!==n}},9008:function(e,t,n){e.exports=n(5443)},1163:function(e,t,n){e.exports=n(387)},7287:function(e,t,n){(e=n.nmd(e)).exports=function(t){var r={},o=n(6086),a=n(7294),i=n(3840);function s(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n--s||o[i]!==a[s])return"\n"+o[i].replace(" at new "," at ")}while(1<=i&&0<=s);break}}}finally{Qe=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ke(e):""}var Xe=[],Ye=-1;function $e(e){return{current:e}}function Ze(e){0>Ye||(e.current=Xe[Ye],Xe[Ye]=null,Ye--)}function Je(e,t){Ye++,Xe[Ye]=e.current,e.current=t}var et={},tt=$e(et),nt=$e(!1),rt=et;function ot(e,t){var n=e.type.contextTypes;if(!n)return et;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function at(e){return null!==(e=e.childContextTypes)&&void 0!==e}function it(){Ze(nt),Ze(tt)}function st(e,t,n){if(tt.current!==et)throw Error(s(168));Je(tt,t),Je(nt,n)}function lt(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!==typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(s(108,k(t)||"Unknown",a));return o({},n,r)}function ut(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||et,rt=tt.current,Je(tt,e),Je(nt,nt.current),!0}function ct(e,t,n){var r=e.stateNode;if(!r)throw Error(s(169));n?(e=lt(e,t,rt),r.__reactInternalMemoizedMergedChildContext=e,Ze(nt),Ze(tt),Je(tt,e)):Ze(nt),Je(nt,n)}var ft=null,dt=null;(0,i.unstable_now)();var pt=0,ht=8;function mt(e){if(0!==(1&e))return ht=15,1;if(0!==(2&e))return ht=14,2;if(0!==(4&e))return ht=13,4;var t=24&e;return 0!==t?(ht=12,t):0!==(32&e)?(ht=11,32):0!==(t=192&e)?(ht=10,t):0!==(256&e)?(ht=9,256):0!==(t=3584&e)?(ht=8,t):0!==(4096&e)?(ht=7,4096):0!==(t=4186112&e)?(ht=6,t):0!==(t=62914560&e)?(ht=5,t):67108864&e?(ht=4,67108864):0!==(134217728&e)?(ht=3,134217728):0!==(t=805306368&e)?(ht=2,t):0!==(1073741824&e)?(ht=1,1073741824):(ht=8,e)}function gt(e,t){var n=e.pendingLanes;if(0===n)return ht=0;var r=0,o=0,a=e.expiredLanes,i=e.suspendedLanes,s=e.pingedLanes;if(0!==a)r=a,o=ht=15;else if(0!==(a=134217727&n)){var l=a&~i;0!==l?(r=mt(l),o=ht):0!==(s&=a)&&(r=mt(s),o=ht)}else 0!==(a=n&~i)?(r=mt(a),o=ht):0!==s&&(r=mt(s),o=ht);if(0===r)return 0;if(r=n&((0>(r=31-Et(r))?0:1<n;n++)t.push(e);return t}function wt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Et(t)]=n}var Et=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(St(e)/Tt|0)|0},St=Math.log,Tt=Math.LN2;var Mt=i.unstable_runWithPriority,Pt=i.unstable_scheduleCallback,_t=i.unstable_cancelCallback,kt=i.unstable_shouldYield,Ct=i.unstable_requestPaint,Rt=i.unstable_now,At=i.unstable_getCurrentPriorityLevel,Lt=i.unstable_ImmediatePriority,Nt=i.unstable_UserBlockingPriority,It=i.unstable_NormalPriority,Ot=i.unstable_LowPriority,zt=i.unstable_IdlePriority,jt={},Ut=void 0!==Ct?Ct:function(){},Ft=null,Dt=null,Ht=!1,Vt=Rt(),Bt=1e4>Vt?Rt:function(){return Rt()-Vt};function Wt(){switch(At()){case Lt:return 99;case Nt:return 98;case It:return 97;case Ot:return 96;case zt:return 95;default:throw Error(s(332))}}function Gt(e){switch(e){case 99:return Lt;case 98:return Nt;case 97:return It;case 96:return Ot;case 95:return zt;default:throw Error(s(332))}}function Kt(e,t){return e=Gt(e),Mt(e,t)}function Qt(e,t,n){return e=Gt(e),Pt(e,t,n)}function qt(){if(null!==Dt){var e=Dt;Dt=null,_t(e)}Xt()}function Xt(){if(!Ht&&null!==Ft){Ht=!0;var e=0;try{var t=Ft;Kt(99,(function(){for(;ed?(p=f,f=null):p=f.sibling;var h=g(o,f,s[d],l);if(null===h){null===f&&(f=p);break}e&&f&&null===h.alternate&&t(o,f),i=a(h,i,d),null===c?u=h:c.sibling=h,c=h,f=p}if(d===s.length)return n(o,f),u;if(null===f){for(;dp?(h=d,d=null):h=d.sibling;var b=g(o,d,y.value,u);if(null===b){null===d&&(d=h);break}e&&d&&null===b.alternate&&t(o,d),i=a(b,i,p),null===f?c=b:f.sibling=b,f=b,d=h}if(y.done)return n(o,d),c;if(null===d){for(;!y.done;p++,y=l.next())null!==(y=m(o,y.value,u))&&(i=a(y,i,p),null===f?c=y:f.sibling=y,f=y);return c}for(d=r(o,d);!y.done;p++,y=l.next())null!==(y=v(d,o,p,y.value,u))&&(e&&null!==y.alternate&&d.delete(null===y.key?p:y.key),i=a(y,i,p),null===f?c=y:f.sibling=y,f=y);return e&&d.forEach((function(e){return t(o,e)})),c}return function(e,r,a,l){var d="object"===typeof a&&null!==a&&a.type===f&&null===a.key;d&&(a=a.props.children);var p="object"===typeof a&&null!==a;if(p)switch(a.$$typeof){case u:e:{for(p=a.key,d=r;null!==d;){if(d.key===p){switch(d.tag){case 7:if(a.type===f){n(e,d.sibling),(r=o(d,a.props.children)).return=e,e=r;break e}break;default:if(d.elementType===a.type){n(e,d.sibling),(r=o(d,a.props)).ref=Cn(e,d,a),r.return=e,e=r;break e}}n(e,d);break}t(e,d),d=d.sibling}a.type===f?((r=Pi(a.props.children,e.mode,l,a.key)).return=e,e=r):((l=Mi(a.type,a.key,a.props,null,e.mode,l)).ref=Cn(e,r,a),l.return=e,e=l)}return i(e);case c:e:{for(d=a.key;null!==r;){if(r.key===d){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=o(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ci(a,e.mode,l)).return=e,e=r}return i(e)}if("string"===typeof a||"number"===typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,a)).return=e,e=r):(n(e,r),(r=ki(a,e.mode,l)).return=e,e=r),i(e);if(kn(a))return y(e,r,a,l);if(_(a))return b(e,r,a,l);if(p&&Rn(e,a),"undefined"===typeof a&&!d)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(s(152,k(e.type)||"Component"))}return n(e,r)}}var Ln=An(!0),Nn=An(!1),In={},On=$e(In),zn=$e(In),jn=$e(In);function Un(e){if(e===In)throw Error(s(174));return e}function Fn(e,t){Je(jn,t),Je(zn,e),Je(On,In),e=z(t),Ze(On),Je(On,e)}function Dn(){Ze(On),Ze(zn),Ze(jn)}function Hn(e){var t=Un(jn.current),n=Un(On.current);n!==(t=j(n,e.type,t))&&(Je(zn,e),Je(On,t))}function Vn(e){zn.current===e&&(Ze(On),Ze(zn))}var Bn=$e(0);function Wn(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||je(n)||Ue(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Gn=null,Kn=null,Qn=!1;function qn(e,t){var n=Ei(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Xn(e,t){switch(e.tag){case 5:return null!==(t=Oe(t,e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=ze(t,e.pendingProps))&&(e.stateNode=t,!0);case 13:default:return!1}}function Yn(e){if(Qn){var t=Kn;if(t){var n=t;if(!Xn(e,t)){if(!(t=Fe(n))||!Xn(e,t))return e.flags=-1025&e.flags|2,Qn=!1,void(Gn=e);qn(Gn,n)}Gn=e,Kn=De(t)}else e.flags=-1025&e.flags|2,Qn=!1,Gn=e}}function $n(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Gn=e}function Zn(e){if(!Z||e!==Gn)return!1;if(!Qn)return $n(e),Qn=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!W(t,e.memoizedProps))for(t=Kn;t;)qn(e,t),t=Fe(t);if($n(e),13===e.tag){if(!Z)throw Error(s(316));if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(s(317));Kn=Be(e)}else Kn=Gn?Fe(e.stateNode):null;return!0}function Jn(){Z&&(Kn=Gn=null,Qn=!1)}var er=[];function tr(){for(var e=0;ea))throw Error(s(301));a+=1,sr=ir=null,t.updateQueue=null,nr.current=Dr,e=n(r,o)}while(ur)}if(nr.current=jr,t=null!==ir&&null!==ir.next,or=0,sr=ir=ar=null,lr=!1,t)throw Error(s(300));return e}function pr(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===sr?ar.memoizedState=sr=e:sr=sr.next=e,sr}function hr(){if(null===ir){var e=ar.alternate;e=null!==e?e.memoizedState:null}else e=ir.next;var t=null===sr?ar.memoizedState:sr.next;if(null!==t)sr=t,ir=e;else{if(null===e)throw Error(s(310));e={memoizedState:(ir=e).memoizedState,baseState:ir.baseState,baseQueue:ir.baseQueue,queue:ir.queue,next:null},null===sr?ar.memoizedState=sr=e:sr=sr.next=e}return sr}function mr(e,t){return"function"===typeof t?t(e):t}function gr(e){var t=hr(),n=t.queue;if(null===n)throw Error(s(311));n.lastRenderedReducer=e;var r=ir,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var i=o.next;o.next=a.next,a.next=i}r.baseQueue=o=a,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var l=i=a=null,u=o;do{var c=u.lane;if((or&c)===c)null!==l&&(l=l.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var f={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===l?(i=l=f,a=r):l=l.next=f,ar.lanes|=c,da|=c}u=u.next}while(null!==u&&u!==o);null===l?a=r:l.next=i,$t(r,t.memoizedState)||(Vr=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function vr(e){var t=hr(),n=t.queue;if(null===n)throw Error(s(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var i=o=o.next;do{a=e(a,i.action),i=i.next}while(i!==o);$t(a,t.memoizedState)||(Vr=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function yr(e,t,n){var r=t._getVersion;r=r(t._source);var o=X?t._workInProgressVersionPrimary:t._workInProgressVersionSecondary;if(null!==o?e=o===r:(e=e.mutableReadLanes,(e=(or&e)===e)&&(X?t._workInProgressVersionPrimary=r:t._workInProgressVersionSecondary=r,er.push(t))),e)return n(t._source);throw er.push(t),Error(s(350))}function br(e,t,n,r){var o=oa;if(null===o)throw Error(s(349));var a=t._getVersion,i=a(t._source),l=nr.current,u=l.useState((function(){return yr(o,t,n)})),c=u[1],f=u[0];u=sr;var d=e.memoizedState,p=d.refs,h=p.getSnapshot,m=d.source;d=d.subscribe;var g=ar;return e.memoizedState={refs:p,source:t,subscribe:r},l.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=a(t._source);if(!$t(i,e)){e=n(t._source),$t(f,e)||(c(e),e=Ua(g),o.mutableReadLanes|=e&o.pendingLanes),e=o.mutableReadLanes,o.entangledLanes|=e;for(var r=o.entanglements,s=e;0n?98:n,(function(){e(!0)})),Kt(97va&&(t.flags|=64,o=!0,mo(r,!1),t.lanes=33554432)}else{if(!o)if(null!==(e=Wn(a))){if(t.flags|=64,o=!0,null!==(e=e.updateQueue)&&(t.updateQueue=e,t.flags|=4),mo(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!Qn)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Bt()-r.renderingStartTime>va&&1073741824!==n&&(t.flags|=64,o=!0,mo(r,!1),t.lanes=33554432);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Bt(),e.sibling=null,t=Bn.current,Je(Bn,o?1&t|2:1&t),e):null;case 23:case 24:return qa(),null!==e&&null!==e.memoizedState!==(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(s(156,t.tag))}function vo(e){switch(e.tag){case 1:at(e.type)&&it();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Dn(),Ze(nt),Ze(tt),tr(),0!==(64&(t=e.flags)))throw Error(s(285));return e.flags=-4097&t|64,e;case 5:return Vn(e),null;case 13:return Ze(Bn),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return Ze(Bn),null;case 4:return Dn(),null;case 10:return un(e),null;case 23:case 24:return qa(),null;default:return null}}function yo(e,t){try{var n="",r=t;do{n+=en(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o}}function bo(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var xo="function"===typeof WeakMap?WeakMap:Map;function wo(e,t,n){(n=gn(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){wa||(wa=!0,Ea=r),bo(0,t)},n}function Eo(e,t,n){(n=gn(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"===typeof r){var o=t.value;n.payload=function(){return bo(0,t),r(o)}}var a=e.stateNode;return null!==a&&"function"===typeof a.componentDidCatch&&(n.callback=function(){"function"!==typeof r&&(null===Sa?Sa=new Set([this]):Sa.add(this),bo(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var So="function"===typeof WeakSet?WeakSet:Set;function To(e){var t=e.ref;if(null!==t)if("function"===typeof t)try{t(null)}catch(n){fi(e,n)}else t.current=null}function Mo(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:tn(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(Y&&256&t.flags&&_e(t.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(s(163))}function Po(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.destroy;n.destroy=void 0,void 0!==r&&r()}n=n.next}while(n!==t)}}function _o(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3===(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var o=e;r=o.next,0!==(4&(o=o.tag))&&0!==(1&o)&&(li(n,e),si(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:tn(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&xn(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=O(n.child.stateNode);break;case 1:e=n.child.stateNode}xn(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&ge(e,n.type,n.memoizedProps,n));case 6:case 4:case 12:return;case 13:return void(Z&&null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Ge(n)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(s(163))}function ko(e,t){if(Y)for(var n=e;;){if(5===n.tag){var r=n.stateNode;t?Se(r):Me(n.stateNode,n.memoizedProps)}else if(6===n.tag)r=n.stateNode,t?Te(r):Pe(r,n.memoizedProps);else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function Co(e,t){if(dt&&"function"===typeof dt.onCommitFiberUnmount)try{dt.onCommitFiberUnmount(ft,t)}catch(a){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,o=r.destroy;if(r=r.tag,void 0!==o)if(0!==(4&r))li(t,n);else{r=t;try{o()}catch(a){fi(r,a)}}n=n.next}while(n!==e)}break;case 1:if(To(t),"function"===typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(a){fi(t,a)}break;case 5:To(t);break;case 4:Y?zo(e,t):$&&$&&(t=t.stateNode.containerInfo,e=Ce(t),Le(t,e))}}function Ro(e,t){for(var n=t;;)if(Co(e,n),null===n.child||Y&&4===n.tag){if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}else n.child.return=n,n=n.child}function Ao(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function Lo(e){return 5===e.tag||3===e.tag||4===e.tag}function No(e){if(Y){e:{for(var t=e.return;null!==t;){if(Lo(t))break e;t=t.return}throw Error(s(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(s(161))}16&n.flags&&(Ee(t),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||Lo(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Io(e,n,t):Oo(e,n,t)}}function Io(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?be(n,e,t):he(n,e);else if(4!==r&&null!==(e=e.child))for(Io(e,t,n),e=e.sibling;null!==e;)Io(e,t,n),e=e.sibling}function Oo(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?ye(n,e,t):pe(n,e);else if(4!==r&&null!==(e=e.child))for(Oo(e,t,n),e=e.sibling;null!==e;)Oo(e,t,n),e=e.sibling}function zo(e,t){for(var n,r,o=t,a=!1;;){if(!a){a=o.return;e:for(;;){if(null===a)throw Error(s(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===o.tag||6===o.tag)Ro(e,o),r?we(n,o.stateNode):xe(n,o.stateNode);else if(4===o.tag){if(null!==o.child){n=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(Co(e,o),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(a=!1)}o.sibling.return=o.return,o=o.sibling}}function jo(e,t){if(Y){switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void Po(3,t);case 1:return;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps;e=null!==e?e.memoizedProps:r;var o=t.type,a=t.updateQueue;t.updateQueue=null,null!==a&&ve(n,a,o,e,r,t)}return;case 6:if(null===t.stateNode)throw Error(s(162));return n=t.memoizedProps,void me(t.stateNode,null!==e?e.memoizedProps:n,n);case 3:return void(Z&&(t=t.stateNode,t.hydrate&&(t.hydrate=!1,We(t.containerInfo))));case 12:return;case 13:return Uo(t),void Fo(t);case 19:return void Fo(t);case 17:return;case 23:case 24:return void ko(t,null!==t.memoizedState)}throw Error(s(163))}switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void Po(3,t);case 12:return;case 13:return Uo(t),void Fo(t);case 19:return void Fo(t);case 3:Z&&((n=t.stateNode).hydrate&&(n.hydrate=!1,We(n.containerInfo)));break;case 23:case 24:return}e:if($){switch(t.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:t=t.stateNode,Le(t.containerInfo,t.pendingChildren);break e}throw Error(s(163))}}function Uo(e){null!==e.memoizedState&&(ga=Bt(),Y&&ko(e.child,!0))}function Fo(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new So),t.forEach((function(t){var r=pi.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Do(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ho=0,Vo=1,Bo=2,Wo=3,Go=4;if("function"===typeof Symbol&&Symbol.for){var Ko=Symbol.for;Ho=Ko("selector.component"),Vo=Ko("selector.has_pseudo_class"),Bo=Ko("selector.role"),Wo=Ko("selector.test_id"),Go=Ko("selector.text")}function Qo(e){var t=J(e);if(null!=t){if("string"!==typeof t.memoizedProps["data-testname"])throw Error(s(364));return t}if(null===(e=ie(e)))throw Error(s(362));return e.stateNode.current}function qo(e,t){switch(t.$$typeof){case Ho:if(e.type===t.value)return!0;break;case Vo:e:{t=t.value,e=[e,0];for(var n=0;n";case Vo:return":has("+(Xo(e)||"")+")";case Bo:return'[role="'+e.value+'"]';case Go:return'"'+e.value+'"';case Wo:return'[data-testname="'+e.value+'"]';default:throw Error(s(365,e))}}function Yo(e,t){var n=[];e=[e,0];for(var r=0;ro&&(o=i),n&=~a}if(n=o,10<(n=(120>(n=Bt()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Jo(n/1960))-n)){e.timeoutHandle=K(ri.bind(null,e),n);break}ri(e);break;case 5:ri(e);break;default:throw Error(s(329))}}return Ha(e,Bt()),e.callbackNode===t?Va.bind(null,e):null}function Ba(e,t){for(t&=~ha,t&=~pa,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0 component higher in the tree to provide a loading indicator or placeholder to display.")}5!==ua&&(ua=2),l=yo(l,s),d=i;do{switch(d.tag){case 3:a=l,d.flags|=4096,t&=-t,d.lanes|=t,yn(d,wo(0,a,t));break e;case 1:a=l;var w=d.type,E=d.stateNode;if(0===(64&d.flags)&&("function"===typeof w.getDerivedStateFromError||null!==E&&"function"===typeof E.componentDidCatch&&(null===Sa||!Sa.has(E)))){d.flags|=4096,t&=-t,d.lanes|=t,yn(d,Eo(d,a,t));break e}}d=d.return}while(null!==d)}ni(n)}catch(S){t=S,aa===n&&null!==n&&(aa=n=n.return);continue}break}}function $a(){var e=ea.current;return ea.current=jr,null===e?jr:e}function Za(e,t){var n=ra;ra|=16;var r=$a();for(oa===e&&ia===t||Xa(e,t);;)try{Ja();break}catch(o){Ya(e,o)}if(sn(),ra=n,ea.current=r,null!==aa)throw Error(s(261));return oa=null,ia=0,ua}function Ja(){for(;null!==aa;)ti(aa)}function ei(){for(;null!==aa&&!kt();)ti(aa)}function ti(e){var t=ba(e.alternate,e,sa);e.memoizedProps=e.pendingProps,null===t?ni(e):aa=t,ta.current=null}function ni(e){var t=e;do{var n=t.alternate;if(e=t.return,0===(2048&t.flags)){if(null!==(n=go(n,t,sa)))return void(aa=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!==(1073741824&sa)||0===(4&n.mode)){for(var r=0,o=n.child;null!==o;)r|=o.lanes|o.childLanes,o=o.sibling;n.childLanes=r}null!==e&&0===(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1Bt()-ga?Xa(e,0):ha|=n),Ha(e,t)}function pi(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0===(2&(t=e.mode))?t=1:0===(4&t)?t=99===Wt()?1:2:(0===Na&&(Na=fa),0===(t=bt(62914560&~Na))&&(t=4194304))),n=ja(),null!==(e=Da(e,t))&&(wt(e,t,n),Ha(e,n))}ba=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||nt.current)Vr=!0;else{if(0===(n&r)){switch(Vr=!1,t.tag){case 3:Zr(t),Jn();break;case 5:Hn(t);break;case 1:at(t.type)&&ut(t);break;case 4:Fn(t,t.stateNode.containerInfo);break;case 10:ln(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(n&t.child.childLanes)?oo(e,t,n):(Je(Bn,1&Bn.current),null!==(t=fo(e,t,n))?t.sibling:null);Je(Bn,1&Bn.current);break;case 19:if(r=0!==(n&t.childLanes),0!==(64&e.flags)){if(r)return co(e,t,n);t.flags|=64}var o=t.memoizedState;if(null!==o&&(o.rendering=null,o.tail=null,o.lastEffect=null),Je(Bn,Bn.current),r)break;return null;case 23:case 24:return t.lanes=0,Qr(e,t,n)}return fo(e,t,n)}Vr=0!==(16384&e.flags)}else Vr=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=ot(t,tt.current),fn(t,n),o=dr(null,t,r,e,o,n),t.flags|=1,"object"===typeof o&&null!==o&&"function"===typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,at(r)){var a=!0;ut(t)}else a=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,hn(t);var i=r.getDerivedStateFromProps;"function"===typeof i&&En(t,r,i,e),o.updater=Sn,t.stateNode=o,o._reactInternals=t,_n(t,r,e,n),t=$r(null,t,r,!0,a,n)}else t.tag=0,Br(null,t,o,n),t=t.child;return t;case 16:o=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=(a=o._init)(o._payload),t.type=o,a=t.tag=function(e){if("function"===typeof e)return Si(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===g)return 11;if(e===b)return 14}return 2}(o),e=tn(o,e),a){case 0:t=Xr(null,t,o,e,n);break e;case 1:t=Yr(null,t,o,e,n);break e;case 11:t=Wr(null,t,o,e,n);break e;case 14:t=Gr(null,t,o,tn(o.type,e),r,n);break e}throw Error(s(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Xr(e,t,r,o=t.elementType===r?o:tn(r,o),n);case 1:return r=t.type,o=t.pendingProps,Yr(e,t,r,o=t.elementType===r?o:tn(r,o),n);case 3:if(Zr(t),r=t.updateQueue,null===e||null===r)throw Error(s(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,mn(e,t),bn(t,r,null,n),(r=t.memoizedState.element)===o)Jn(),t=fo(e,t,n);else{if((a=(o=t.stateNode).hydrate)&&(Z?(Kn=De(t.stateNode.containerInfo),Gn=t,a=Qn=!0):a=!1),a){if(Z&&null!=(e=o.mutableSourceEagerHydrationData))for(o=0;o=c&&a>=d&&o<=f&&i<=p){e.splice(t,1);break}if(!(r!==c||n.width!==u.width||pi)){d>a&&(u.height+=d-a,u.y=a),po)){c>r&&(u.width+=c-r,u.x=r),fn&&(n=i)),i ")+"\n\nNo matching component was found for:\n "+e.join(" > ")}return null},r.getPublicRootInstance=function(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:return O(e.child.stateNode);default:return e.child.stateNode}},r.injectIntoDevTools=function(e){if(e={bundleType:e.bundleType,version:e.version,rendererPackageName:e.rendererPackageName,rendererConfig:e.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:l.ReactCurrentDispatcher,findHostInstanceByFiber:Ii,findFiberByHostInstance:e.findFiberByHostInstance||Oi,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},"undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)e=!1;else{var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!t.isDisabled&&t.supportsFiber)try{ft=t.inject(e),dt=t}catch(n){}e=!0}return e},r.observeVisibleRects=function(e,t,n,r){if(!ae)throw Error(s(363));e=$o(e,t);var o=de(e,n,r).disconnect;return{disconnect:function(){o()}}},r.registerMutableSourceForHydration=function(e,t){var n=t._getVersion;n=n(t._source),null==e.mutableSourceEagerHydrationData?e.mutableSourceEagerHydrationData=[t,n]:e.mutableSourceEagerHydrationData.push(t,n)},r.runWithPriority=function(e,t){var n=pt;try{return pt=e,t()}finally{pt=n}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(e,t){var n=ra;ra&=-2,ra|=8;try{return e(t)}finally{0===(ra=n)&&(ya(),qt())}},r.updateContainer=function(e,t,n,r){var o=t.current,a=ja(),i=Ua(o);e:if(n){t:{if(C(n=n._reactInternals)!==n||1!==n.tag)throw Error(s(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(at(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(s(171))}if(1===n.tag){var u=n.type;if(at(u)){n=lt(n,u,l);break e}}n=l}else n=et;return null===t.context?t.context=n:t.pendingContext=n,(t=gn(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),vn(o,t),Fa(o,i,a),i},r}},6525:function(e,t,n){"use strict";e.exports=n(7287)},7462:function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=2.0 are supported.")));const f=new J(c,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});f.fileLoader.setRequestHeader(this.requestHeader);for(let r=0;r=0&&void 0===u[e]&&console.warn('THREE.GLTFLoader: Unknown extension "'+e+'".')}}f.setExtensions(s),f.setPlugins(u),f.parse(n,o)}parseAsync(e,t){const n=this;return new Promise((function(r,o){n.parse(e,t,r,o)}))}}function a(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const i={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_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",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",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class s{constructor(e){this.parser=e,this.name=i.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,a,i)}}class g{constructor(e){this.parser=e,this.name=i.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,r=n.json,o=r.textures[e];if(!o.extensions||!o.extensions[t])return null;const a=o.extensions[t],i=r.images[a.source];let s=n.textureLoader;if(i.uri){const e=n.options.manager.getHandler(i.uri);null!==e&&(s=e)}return this.detectSupport().then((function(o){if(o)return n.loadTextureImage(e,i,s);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}}class v{constructor(e){this.name=i.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const e=n.extensions[this.name],r=this.parser.getDependency("buffer",e.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return Promise.all([r,o.ready]).then((function(t){const n=e.byteOffset||0,r=e.byteLength||0,a=e.count,i=e.byteStride,s=new ArrayBuffer(a*i),l=new Uint8Array(t[0],n,r);return o.decodeGltfBuffer(new Uint8Array(s),a,i,l,e.mode,e.filter),s}))}return null}}const y="glTF",b=1313821514,x=5130562;class w{constructor(e){this.name=i.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:r.LoaderUtils.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==y)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,o=new DataView(e,12);let a=0;for(;a",t).replace("#include ",n).replace("#include ",o).replace("#include ",a).replace("#include ",i)},Object.defineProperties(this,{specular:{get:function(){return s.specular.value},set:function(e){s.specular.value=e}},specularMap:{get:function(){return s.specularMap.value},set:function(e){s.specularMap.value=e,e?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return s.glossiness.value},set:function(e){s.glossiness.value=e}},glossinessMap:{get:function(){return s.glossinessMap.value},set:function(e){s.glossinessMap.value=e,e?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(e)}copy(e){return super.copy(e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class M{constructor(){this.name=i.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"]}getMaterialType(){return T}extendParams(e,t,n){const o=t.extensions[this.name];e.color=new r.Color(1,1,1),e.opacity=1;const a=[];if(Array.isArray(o.diffuseFactor)){const t=o.diffuseFactor;e.color.fromArray(t),e.opacity=t[3]}if(void 0!==o.diffuseTexture&&a.push(n.assignTexture(e,"map",o.diffuseTexture)),e.emissive=new r.Color(0,0,0),e.glossiness=void 0!==o.glossinessFactor?o.glossinessFactor:1,e.specular=new r.Color(1,1,1),Array.isArray(o.specularFactor)&&e.specular.fromArray(o.specularFactor),void 0!==o.specularGlossinessTexture){const t=o.specularGlossinessTexture;a.push(n.assignTexture(e,"glossinessMap",t)),a.push(n.assignTexture(e,"specularMap",t))}return Promise.all(a)}createMaterial(e){const t=new T(e);return t.fog=!0,t.color=e.color,t.map=void 0===e.map?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=void 0===e.aoMap?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=1,t.emissiveMap=void 0===e.emissiveMap?null:e.emissiveMap,t.bumpMap=void 0===e.bumpMap?null:e.bumpMap,t.bumpScale=1,t.normalMap=void 0===e.normalMap?null:e.normalMap,t.normalMapType=r.TangentSpaceNormalMap,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=void 0===e.specularMap?null:e.specularMap,t.specular=e.specular,t.glossinessMap=void 0===e.glossinessMap?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=void 0===e.envMap?null:e.envMap,t.envMapIntensity=1,t.refractionRatio=.98,t}}class P{constructor(){this.name=i.KHR_MESH_QUANTIZATION}}class _ extends r.Interpolant{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,o=e*r*3+r;for(let a=0;a!==r;a++)t[a]=n[o+a];return t}}_.prototype.beforeStart_=_.prototype.copySampleValue_,_.prototype.afterEnd_=_.prototype.copySampleValue_,_.prototype.interpolate_=function(e,t,n,r){const o=this.resultBuffer,a=this.sampleValues,i=this.valueSize,s=2*i,l=3*i,u=r-t,c=(n-t)/u,f=c*c,d=f*c,p=e*l,h=p-l,m=-2*d+3*f,g=d-f,v=1-m,y=g-f+c;for(let b=0;b!==i;b++){const e=a[h+b+i],t=a[h+b+s]*u,n=a[p+b+i],r=a[p+b]*u;o[b]=v*e+y*t+m*n+g*r}return o};const k=new r.Quaternion;class C extends _{interpolate_(e,t,n,r){const o=super.interpolate_(e,t,n,r);return k.fromArray(o).normalize().toArray(o),o}}const R=0,A=1,L=2,N=3,I=4,O=5,z=6,j={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},U={9728:r.NearestFilter,9729:r.LinearFilter,9984:r.NearestMipmapNearestFilter,9985:r.LinearMipmapNearestFilter,9986:r.NearestMipmapLinearFilter,9987:r.LinearMipmapLinearFilter},F={33071:r.ClampToEdgeWrapping,33648:r.MirroredRepeatWrapping,10497:r.RepeatWrapping},D={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},H={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},V={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},B={CUBICSPLINE:void 0,LINEAR:r.InterpolateLinear,STEP:r.InterpolateDiscrete},W="OPAQUE",G="MASK",K="BLEND";function Q(e,t,n){for(const r in n.extensions)void 0===e[r]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function q(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 X(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let n=0,r=t.weights.length;n{const n=this.associations.get(e);null!=n&&this.associations.set(t,n);for(const[r,a]of e.children.entries())o(a,t.children[r])};return o(n,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n=2&&h.setY(t,f[e*i+1]),i>=3&&h.setZ(t,f[e*i+2]),i>=4&&h.setW(t,f[e*i+3]),i>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return h}))}loadTexture(e){const t=this.json,n=this.options,r=t.textures[e],o=t.images[r.source];let a=this.textureLoader;if(o.uri){const e=n.manager.getHandler(o.uri);null!==e&&(a=e)}return this.loadTextureImage(e,o,a)}loadTextureImage(e,t,n){const o=this,a=this.json,i=this.options,s=a.textures[e],l=(t.uri||t.bufferView)+":"+s.sampler;if(this.textureCache[l])return this.textureCache[l];const u=self.URL||self.webkitURL;let c=t.uri||"",f=!1;if(void 0!==t.bufferView)c=o.getDependency("bufferView",t.bufferView).then((function(e){f=!0;const n=new Blob([e],{type:t.mimeType});return c=u.createObjectURL(n),c}));else if(void 0===t.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(c).then((function(e){return new Promise((function(t,o){let a=t;!0===n.isImageBitmapLoader&&(a=function(e){const n=new r.Texture(e);n.needsUpdate=!0,t(n)}),n.load(r.LoaderUtils.resolveURL(e,i.path),a,void 0,o)}))})).then((function(t){!0===f&&u.revokeObjectURL(c),t.flipY=!1,s.name&&(t.name=s.name);const n=(a.samplers||{})[s.sampler]||{};return t.magFilter=U[n.magFilter]||r.LinearFilter,t.minFilter=U[n.minFilter]||r.LinearMipmapLinearFilter,t.wrapS=F[n.wrapS]||r.RepeatWrapping,t.wrapT=F[n.wrapT]||r.RepeatWrapping,o.associations.set(t,{textures:e}),t})).catch((function(){return console.error("THREE.GLTFLoader: Couldn't load texture",c),null}));return this.textureCache[l]=d,d}assignTexture(e,t,n){const r=this;return this.getDependency("texture",n.index).then((function(o){if(void 0===n.texCoord||0==n.texCoord||"aoMap"===t&&1==n.texCoord||console.warn("THREE.GLTFLoader: Custom UV set "+n.texCoord+" for texture "+t+" not yet supported."),r.extensions[i.KHR_TEXTURE_TRANSFORM]){const e=void 0!==n.extensions?n.extensions[i.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=r.associations.get(o);o=r.extensions[i.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),r.associations.set(o,t)}}return e[t]=o,o}))}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const o=void 0===t.attributes.tangent,a=void 0!==t.attributes.color,i=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+n.uuid;let t=this.cache.get(e);t||(t=new r.PointsMaterial,r.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){const e="LineBasicMaterial:"+n.uuid;let t=this.cache.get(e);t||(t=new r.LineBasicMaterial,r.Material.prototype.copy.call(t,n),t.color.copy(n.color),this.cache.add(e,t)),n=t}if(o||a||i){let e="ClonedMaterial:"+n.uuid+":";n.isGLTFSpecularGlossinessMaterial&&(e+="specular-glossiness:"),o&&(e+="derivative-tangents:"),a&&(e+="vertex-colors:"),i&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=n.clone(),a&&(t.vertexColors=!0),i&&(t.flatShading=!0),o&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}n.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute("uv2",t.attributes.uv),e.material=n}getMaterialType(){return r.MeshStandardMaterial}loadMaterial(e){const t=this,n=this.json,o=this.extensions,a=n.materials[e];let s;const l={},u=a.extensions||{},c=[];if(u[i.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const e=o[i.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];s=e.getMaterialType(),c.push(e.extendParams(l,a,t))}else if(u[i.KHR_MATERIALS_UNLIT]){const e=o[i.KHR_MATERIALS_UNLIT];s=e.getMaterialType(),c.push(e.extendParams(l,a,t))}else{const n=a.pbrMetallicRoughness||{};if(l.color=new r.Color(1,1,1),l.opacity=1,Array.isArray(n.baseColorFactor)){const e=n.baseColorFactor;l.color.fromArray(e),l.opacity=e[3]}void 0!==n.baseColorTexture&&c.push(t.assignTexture(l,"map",n.baseColorTexture)),l.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,l.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(c.push(t.assignTexture(l,"metalnessMap",n.metallicRoughnessTexture)),c.push(t.assignTexture(l,"roughnessMap",n.metallicRoughnessTexture))),s=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),c.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,l)}))))}!0===a.doubleSided&&(l.side=r.DoubleSide);const f=a.alphaMode||W;if(f===K?(l.transparent=!0,l.depthWrite=!1):(l.format=r.RGBFormat,l.transparent=!1,f===G&&(l.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&s!==r.MeshBasicMaterial&&(c.push(t.assignTexture(l,"normalMap",a.normalTexture)),l.normalScale=new r.Vector2(1,1),void 0!==a.normalTexture.scale)){const e=a.normalTexture.scale;l.normalScale.set(e,e)}return void 0!==a.occlusionTexture&&s!==r.MeshBasicMaterial&&(c.push(t.assignTexture(l,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength&&(l.aoMapIntensity=a.occlusionTexture.strength)),void 0!==a.emissiveFactor&&s!==r.MeshBasicMaterial&&(l.emissive=(new r.Color).fromArray(a.emissiveFactor)),void 0!==a.emissiveTexture&&s!==r.MeshBasicMaterial&&c.push(t.assignTexture(l,"emissiveMap",a.emissiveTexture)),Promise.all(c).then((function(){let n;return n=s===T?o[i.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(l):new s(l),a.name&&(n.name=a.name),n.map&&(n.map.encoding=r.sRGBEncoding),n.emissiveMap&&(n.emissiveMap.encoding=r.sRGBEncoding),q(n,a),t.associations.set(n,{materials:e}),a.extensions&&Q(o,n,a),n}))}createUniqueName(e){const t=r.PropertyBinding.sanitizeNodeName(e||"");let n=t;for(let r=1;this.nodeNamesUsed[n];++r)n=t+"_"+r;return this.nodeNamesUsed[n]=!0,n}loadGeometries(e){const t=this,n=this.extensions,o=this.primitiveCache;function a(e){return n[i.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(n){return te(n,e,t)}))}const s=[];for(let l=0,u=e.length;l0&&X(d,a),d.name=t.createUniqueName(a.name||"mesh_"+e),q(d,a),c.extensions&&Q(o,d,c),t.assignFinalMaterial(d),u.push(d)}for(let r=0,o=u.length;r1?new r.Group:1===t.length?t[0]:new r.Object3D,s!==t[0])for(let e=0,n=t.length;e{const t=new Map;for(const[n,o]of a.associations)(n instanceof r.Material||n instanceof r.Texture)&&t.set(n,o);return e.traverse((e=>{const n=a.associations.get(e);null!=n&&t.set(e,n)})),t})(i),i}))}}function ee(e,t,n,o){const a=n.nodes[e];return o.getDependency("node",e).then((function(e){if(void 0===a.skin)return e;let t;return o.getDependency("skin",a.skin).then((function(e){t=e;const n=[];for(let r=0,a=t.joints.length;r1){const e=Math.sqrt(v);p=(t*=e)*t,h=(n*=e)*n}const y=p*g+h*m,b=(p*h-y)/y;let x=Math.sqrt(Math.max(0,b));a===i&&(x=-x);const w=x*t*d/n,E=-x*n*f/t,S=Math.cos(r)*w-Math.sin(r)*E+(s.x+l.x)/2,T=Math.sin(r)*w+Math.cos(r)*E+(s.y+l.y)/2,M=o(1,0,(f-w)/t,(d-E)/n),P=o((f-w)/t,(d-E)/n,(-f-w)/t,(-d-E)/n)%(2*Math.PI);e.currentPath.absellipse(S,T,t,n,M,M+P,0===i,r)}function o(e,t,n,r){const o=e*n+t*r,a=Math.sqrt(e*e+t*t)*Math.sqrt(n*n+r*r);let i=Math.acos(Math.max(-1,Math.min(1,o/a)));return e*r-t*n<0&&(i=-i),i}function a(e,t){t=Object.assign({},t);let n={};if(e.hasAttribute("class")){const t=e.getAttribute("class").split(/\s/).filter(Boolean).map((e=>e.trim()));for(let e=0;e=0;e--){const o=r[e].trim();if(""===o)continue;const a=o.indexOf("("),i=o.length;if(a>0&&a=1){const e=t[0];let r=e;t.length>=2&&(r=t[1]),n.translate(e,r)}break;case"rotate":if(t.length>=1){let e=0,r=0,o=0;e=-t[0]*Math.PI/180,t.length>=3&&(r=t[1],o=t[2]),v.identity().translate(-r,-o),y.identity().rotate(e),b.multiplyMatrices(y,v),v.identity().translate(r,o),n.multiplyMatrices(v,b)}break;case"scale":if(t.length>=1){const e=t[0];let r=e;t.length>=2&&(r=t[1]),n.scale(e,r)}break;case"skewX":1===t.length&&n.set(1,Math.tan(t[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":1===t.length&&n.set(1,0,0,Math.tan(t[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":6===t.length&&n.set(t[0],t[2],t[4],t[1],t[3],t[5],0,0,1)}}t.premultiply(n)}}return t}(e);m.length>0&&t.premultiply(m[m.length-1]);return E.copy(t),m.push(t),t}(t);let u=!0,S=null;switch(t.nodeName){case"svg":break;case"style":!function(e){if(!e.sheet||!e.sheet.cssRules||!e.sheet.cssRules.length)return;for(let t=0;te.trim()));for(let e=0;e0&&(o.copy(l),t.currentPath.currentPoint.copy(o),u=!0);break;default:console.warn(e)}c=!1}return t}(t));break;case"rect":o=a(t,o),S=function(e){const t=c(e.getAttribute("x")||0),n=c(e.getAttribute("y")||0),o=c(e.getAttribute("rx")||e.getAttribute("ry")||0),a=c(e.getAttribute("ry")||e.getAttribute("rx")||0),i=c(e.getAttribute("width")),s=c(e.getAttribute("height")),l=.448084975506,u=new r.ShapePath;u.moveTo(t+o,n),u.lineTo(t+i-o,n),(0!==o||0!==a)&&u.bezierCurveTo(t+i-o*l,n,t+i,n+a*l,t+i,n+a);u.lineTo(t+i,n+s-a),(0!==o||0!==a)&&u.bezierCurveTo(t+i,n+s-a*l,t+i-o*l,n+s,t+i-o,n+s);u.lineTo(t+o,n+s),(0!==o||0!==a)&&u.bezierCurveTo(t+o*l,n+s,t,n+s-a*l,t,n+s-a);u.lineTo(t,n+a),(0!==o||0!==a)&&u.bezierCurveTo(t,n+a*l,t+o*l,n,t+o,n);return u}(t);break;case"polygon":o=a(t,o),S=function(e){function t(e,t,n){const r=c(t),i=c(n);0===a?o.moveTo(r,i):o.lineTo(r,i),a++}const n=/(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g,o=new r.ShapePath;let a=0;return e.getAttribute("points").replace(n,t),o.currentPath.autoClose=!0,o}(t);break;case"polyline":o=a(t,o),S=function(e){function t(e,t,n){const r=c(t),i=c(n);0===a?o.moveTo(r,i):o.lineTo(r,i),a++}const n=/(-?[\d\.?]+)[,|\s](-?[\d\.?]+)/g,o=new r.ShapePath;let a=0;return e.getAttribute("points").replace(n,t),o.currentPath.autoClose=!1,o}(t);break;case"circle":o=a(t,o),S=function(e){const t=c(e.getAttribute("cx")||0),n=c(e.getAttribute("cy")||0),o=c(e.getAttribute("r")||0),a=new r.Path;a.absarc(t,n,o,0,2*Math.PI);const i=new r.ShapePath;return i.subPaths.push(a),i}(t);break;case"ellipse":o=a(t,o),S=function(e){const t=c(e.getAttribute("cx")||0),n=c(e.getAttribute("cy")||0),o=c(e.getAttribute("rx")||0),a=c(e.getAttribute("ry")||0),i=new r.Path;i.absellipse(t,n,o,a,0,2*Math.PI);const s=new r.ShapePath;return s.subPaths.push(i),s}(t);break;case"line":o=a(t,o),S=function(e){const t=c(e.getAttribute("x1")||0),n=c(e.getAttribute("y1")||0),o=c(e.getAttribute("x2")||0),a=c(e.getAttribute("y2")||0),i=new r.ShapePath;return i.moveTo(t,n),i.lineTo(o,a),i.currentPath.autoClose=!1,i}(t);break;case"defs":u=!1;break;case"use":o=a(t,o);const l=t.href.baseVal.substring(1),f=t.viewportElement.getElementById(l);f?e(f,o):console.warn("SVGLoader: 'use node' references non-existent node id: "+l)}if(S&&(void 0!==o.fill&&"none"!==o.fill&&S.color.setStyle(o.fill),function(e,t){function n(e){w.set(e.x,e.y,1).applyMatrix3(t),e.set(w.x,w.y)}const r=function(e){return 0!==e.elements[1]||0!==e.elements[3]}(t),o=e.subPaths;for(let a=0,i=o.length;a0?E.copy(m[m.length-1]):E.identity())}(S.documentElement,{fill:"#000",fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeLineJoin:"miter",strokeLineCap:"butt",strokeMiterLimit:4});return{paths:p,xml:S.documentElement}}static createShapes(e){const t=999999999,n=0,o=1,a=2,i=3,s=4,l=5,u=6,c={loc:n,t:0};function f(e,t,r,o){const i=e.x,s=t.x,l=r.x,u=o.x,f=e.y,p=t.y,h=r.y,m=o.y,g=(u-l)*(f-h)-(m-h)*(i-l),v=(m-h)*(s-i)-(u-l)*(p-f),y=g/v,b=((s-i)*(f-h)-(p-f)*(i-l))/v;if(0===v&&0!==g||y<=0||y>=1||b<0||b>1)return null;if(0===g&&0===v){for(let l=0;l<2;l++){if(d(0===l?r:o,e,t),c.loc==n){const e=0===l?r:o;return{x:e.x,y:e.y,t:c.t}}if(c.loc==a){return{x:+(i+c.t*(s-i)).toPrecision(10),y:+(f+c.t*(p-f)).toPrecision(10),t:c.t}}}return null}for(let a=0;a<2;a++)if(d(0===a?r:o,e,t),c.loc==n){const e=0===a?r:o;return{x:e.x,y:e.y,t:c.t}}return{x:+(i+y*(s-i)).toPrecision(10),y:+(f+y*(p-f)).toPrecision(10),t:y}}function d(e,t,r){const f=r.x-t.x,d=r.y-t.y,p=e.x-t.x,h=e.y-t.y,m=f*h-p*d;if(e.x===t.x&&e.y===t.y)return c.loc=n,void(c.t=0);if(e.x===r.x&&e.y===r.y)return c.loc=o,void(c.t=1);if(m<-Number.EPSILON)return void(c.loc=i);if(m>Number.EPSILON)return void(c.loc=s);if(f*p<0||d*h<0)return void(c.loc=l);if(Math.sqrt(f*f+d*d){if(t.boundingBox.containsPoint(o)){(function(e,t){const n=[],o=[];for(let a=1;ae.t<=a.t+Number.EPSILON&&e.t>=a.t-Number.EPSILON))&&(n.push(a),o.push(new r.Vector2(a.x,a.y)))}}return o})(e,t.points).forEach((e=>{a.push({identifier:t.identifier,isCW:t.isCW,point:e})}))}})),a.sort(((e,t)=>e.point.x-t.point.x)),a}let h=0,m=t,g=-999999999,v=e.subPaths.map((e=>{const n=e.getPoints();let o=-999999999,a=t,i=-999999999,s=t;for(let t=0;to&&(o=e.y),e.yi&&(i=e.x),e.x=s&&(m=s-1),{curves:e.curves,points:n,isCW:r.ShapeUtils.isClockWise(n),identifier:h++,boundingBox:new r.Box2(new r.Vector2(s,a),new r.Vector2(i,o))}}));v=v.filter((e=>e.points.length>1));const y=v.map((t=>function(e,t,n,o,a){null!==a&&void 0!==a&&""!==a||(a="nonzero");const i=new r.Vector2;e.boundingBox.getCenter(i);const s=p([new r.Vector2(n,i.y),new r.Vector2(o,i.y)],e.boundingBox,t);s.sort(((e,t)=>e.point.x-t.point.x));const l=[],u=[];s.forEach((t=>{t.identifier===e.identifier?l.push(t):u.push(t)}));const c=l[0].point.x,f=[];let d=0;for(;d0&&f[f.length-1]===u[d].identifier?f.pop():f.push(u[d].identifier),d++;if(f.push(e.identifier),"evenodd"===a){const t=f.length%2===0,n=f[f.length-2];return{identifier:e.identifier,isHole:t,for:n}}if("nonzero"===a){let n=!0,r=null,o=null;for(let e=0;e{if(!y[e.identifier].isHole){const t=new r.Shape;t.curves=e.curves;y.filter((t=>t.isHole&&t.for===e.identifier)).forEach((e=>{const n=v[e.identifier],o=new r.Path;o.curves=n.curves,t.holes.push(o)})),b.push(t)}})),b}static getStrokeStyle(e,t,n,r,o){return{strokeColor:t=void 0!==t?t:"#000",strokeWidth:e=void 0!==e?e:1,strokeLineJoin:n=void 0!==n?n:"miter",strokeLineCap:r=void 0!==r?r:"butt",strokeMiterLimit:o=void 0!==o?o:4}}static pointsToStroke(e,t,n,a){const i=[],s=[],l=[];if(0===o.pointsToStrokeWithBuffers(e,t,n,a,i,s,l))return null;const u=new r.BufferGeometry;return u.setAttribute("position",new r.Float32BufferAttribute(i,3)),u.setAttribute("normal",new r.Float32BufferAttribute(s,3)),u.setAttribute("uv",new r.Float32BufferAttribute(l,2)),u}static pointsToStrokeWithBuffers(e,t,n,o,a,i,s,l){const u=new r.Vector2,c=new r.Vector2,f=new r.Vector2,d=new r.Vector2,p=new r.Vector2,h=new r.Vector2,m=new r.Vector2,g=new r.Vector2,v=new r.Vector2,y=new r.Vector2,b=new r.Vector2,x=new r.Vector2,w=new r.Vector2,E=new r.Vector2,S=new r.Vector2,T=new r.Vector2,M=new r.Vector2;n=void 0!==n?n:12,o=void 0!==o?o:.001,l=void 0!==l?l:0;const P=(e=function(e){let t=!1;for(let r=1,a=e.length-1;r=o&&n.push(e[r]);return n.push(e[e.length-1]),n}(e)).length;if(P<2)return 0;const _=e[0].equals(e[P-1]);let k,C,R=e[0];const A=t.strokeWidth/2,L=1/(P-1);let N,I,O,z,j=0,U=!1,F=0,D=3*l,H=2*l;V(e[0],e[1],u).multiplyScalar(A),g.copy(e[0]).sub(u),v.copy(e[0]).add(u),y.copy(g),b.copy(v);for(let r=1;r