"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9057],{667:(e,t,r)=>{e.exports=r(2795)},674:(e,t,r)=>{e.exports=r(8575)},1383:(e,t,r)=>{r.d(t,{M:()=>s});var n=r(4501),a=r(4232),i=r(2648),o=r(6691);let l=function(e){return e.Linear="linear",e.Radial="radial",e}({});function s({stops:e,colors:t,size:r=1024,width:s=16,type:u=l.Linear,innerCircleRadius:c=0,outerCircleRadius:f="auto",...d}){let p=(0,i.C)(e=>e.gl),v=a.useMemo(()=>{let n,a=document.createElement("canvas"),i=a.getContext("2d");if(a.width=s,a.height=r,u===l.Linear)n=i.createLinearGradient(0,0,0,r);else{let e=a.width/2,t=a.height/2,r="auto"!==f?Math.abs(Number(f)):Math.sqrt(e**2+t**2);n=i.createRadialGradient(e,t,Math.abs(c),e,t,r)}let d=new o.Q1f,p=e.length;for(;p--;)n.addColorStop(e[p],d.set(t[p]).getStyle());return i.save(),i.fillStyle=n,i.fillRect(0,0,s,r),i.restore(),a},[e]);return a.createElement("canvasTexture",(0,n.A)({colorSpace:p.outputColorSpace,args:[v],attach:"map"},d))}},1831:(e,t,r)=>{r.d(t,{Af:()=>l,Nz:()=>a,u5:()=>s,y3:()=>f});var n=r(4232);function a(e,t,r){if(!e)return;if(!0===r(e))return e;let n=t?e.return:e.child;for(;n;){let e=a(n,t,r);if(e)return e;n=t?null:n.sibling}}function i(e){try{return Object.defineProperties(e,{_currentRenderer:{get:()=>null,set(){}},_currentRenderer2:{get:()=>null,set(){}}})}catch(t){return e}}(()=>{var e,t;return"undefined"!=typeof window&&((null==(e=window.document)?void 0:e.createElement)||(null==(t=window.navigator)?void 0:t.product)==="ReactNative")})()?n.useLayoutEffect:n.useEffect;let o=i(n.createContext(null));class l extends n.Component{render(){return n.createElement(o.Provider,{value:this._reactInternals},this.props.children)}}function s(){let e=n.useContext(o);if(null===e)throw Error("its-fine: useFiber must be called within a !");let t=n.useId();return n.useMemo(()=>{for(let r of[e,null==e?void 0:e.alternate]){if(!r)continue;let e=a(r,!1,e=>{let r=e.memoizedState;for(;r;){if(r.memoizedState===t)return!0;r=r.next}});if(e)return e}},[e,t])}let u=Symbol.for("react.context"),c=e=>null!==e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===u;function f(){let e=function(){let e=s(),[t]=n.useState(()=>new Map);t.clear();let r=e;for(;r;){let e=r.type;c(e)&&e!==o&&!t.has(e)&&t.set(e,n.use(i(e))),r=r.return}return t}();return n.useMemo(()=>Array.from(e.keys()).reduce((t,r)=>a=>n.createElement(t,null,n.createElement(r.Provider,{...a,value:e.get(r)})),e=>n.createElement(l,{...e})),[e])}},1923:(e,t,r)=>{e.exports=r(7816)},2648:(e,t,r)=>{let n,a,i,o,l;r.d(t,{B:()=>A,C:()=>er,D:()=>en,E:()=>I,G:()=>eo,a:()=>U,b:()=>k,c:()=>eS,d:()=>ej,e:()=>ef,f:()=>eq,i:()=>P,o:()=>ek,s:()=>$,u:()=>T});var s=r(4232),u=r.t(s,2),c=r(7302),f=r(6691),d=r(4796),p=r(5712);let v=e=>{let t,r=new Set,n=(e,n)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=n?n:"object"!=typeof a||null===a)?a:Object.assign({},t,a),r.forEach(r=>r(t,e))}},a=()=>t,i={setState:n,getState:a,getInitialState:()=>o,subscribe:e=>(r.add(e),()=>r.delete(e))},o=t=e(n,a,i);return i},{useSyncExternalStoreWithSelector:h}=p,m=(e,t)=>{let r=(e=>e?v(e):v)(e),n=(e,n=t)=>(function(e,t=e=>e,r){let n=h(e.subscribe,e.getState,e.getInitialState,t,r);return s.useDebugValue(n),n})(r,e,n);return Object.assign(n,r),n},g=(e,t)=>e?m(e,t):m,y=[];function w(e,t,r=(e,t)=>e===t){if(e===t)return!0;if(!e||!t)return!1;let n=e.length;if(t.length!==n)return!1;for(let a=0;a0&&(a.timeout&&clearTimeout(a.timeout),a.timeout=setTimeout(a.remove,n.lifespan)),a.response;if(!r)throw a.promise}let a={keys:t,equal:n.equal,remove:()=>{let e=y.indexOf(a);-1!==e&&y.splice(e,1)},promise:("object"==typeof e&&"function"==typeof e.then?e:e(...t)).then(e=>{a.response=e,n.lifespan&&n.lifespan>0&&(a.timeout=setTimeout(a.remove,n.lifespan))}).catch(e=>a.error=e)};if(y.push(a),!r)throw a.promise}var x=r(667),M=r.n(x),_=r(1923),E=r(7876),C=r(1831);function S(e){let t=e.root;for(;t.getState().previousRoot;)t=t.getState().previousRoot;return t}r(5364),u.act;let P=e=>e&&e.hasOwnProperty("current"),j=e=>null!=e&&("string"==typeof e||"number"==typeof e||e.isColor),k=((e,t)=>"undefined"!=typeof window&&((null==(e=window.document)?void 0:e.createElement)||(null==(t=window.navigator)?void 0:t.product)==="ReactNative"))()?s.useLayoutEffect:s.useEffect;function U(e){let t=s.useRef(e);return k(()=>void(t.current=e),[e]),t}function T(){let e=(0,C.u5)(),t=(0,C.y3)();return s.useMemo(()=>({children:r})=>{let n=(0,C.Nz)(e,!0,e=>e.type===s.StrictMode)?s.StrictMode:s.Fragment;return(0,E.jsx)(n,{children:(0,E.jsx)(t,{children:r})})},[e,t])}function A({set:e}){return k(()=>(e(new Promise(()=>null)),()=>e(!1)),[e]),null}let I=(e=>((e=class extends s.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}).getDerivedStateFromError=()=>({error:!0}),e))();function R(e){var t;let r="undefined"!=typeof window?null!=(t=window.devicePixelRatio)?t:2:1;return Array.isArray(e)?Math.min(Math.max(e[0],r),e[1]):e}function O(e){var t;return null==(t=e.__r3f)?void 0:t.root.getState()}let D={obj:e=>e===Object(e)&&!D.arr(e)&&"function"!=typeof e,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,boo:e=>"boolean"==typeof e,und:e=>void 0===e,nul:e=>null===e,arr:e=>Array.isArray(e),equ(e,t,{arrays:r="shallow",objects:n="reference",strict:a=!0}={}){let i;if(typeof e!=typeof t||!!e!=!!t)return!1;if(D.str(e)||D.num(e)||D.boo(e))return e===t;let o=D.obj(e);if(o&&"reference"===n)return e===t;let l=D.arr(e);if(l&&"reference"===r)return e===t;if((l||o)&&e===t)return!0;for(i in e)if(!(i in t))return!1;if(o&&"shallow"===r&&"shallow"===n){for(i in a?t:e)if(!D.equ(e[i],t[i],{strict:a,objects:"reference"}))return!1}else for(i in a?t:e)if(e[i]!==t[i])return!1;if(D.und(i)){if(l&&0===e.length&&0===t.length||o&&0===Object.keys(e).length&&0===Object.keys(t).length)return!0;if(e!==t)return!1}return!0}},F=["children","key","ref"];function z(e,t,r,n){let a=null==e?void 0:e.__r3f;return!a&&(a={root:t,type:r,parent:null,children:[],props:function(e){let t={};for(let r in e)F.includes(r)||(t[r]=e[r]);return t}(n),object:e,eventCount:0,handlers:{},isHidden:!1},e&&(e.__r3f=a)),a}function L(e,t){let r=e[t];if(!t.includes("-"))return{root:e,key:t,target:r};for(let a of(r=e,t.split("-"))){var n;t=a,e=r,r=null==(n=r)?void 0:n[t]}return{root:e,key:t,target:r}}let B=/-\d+$/;function H(e,t){if(D.str(t.props.attach)){if(B.test(t.props.attach)){let r=t.props.attach.replace(B,""),{root:n,key:a}=L(e.object,r);Array.isArray(n[a])||(n[a]=[])}let{root:r,key:n}=L(e.object,t.props.attach);t.previousAttach=r[n],r[n]=t.object}else D.fun(t.props.attach)&&(t.previousAttach=t.props.attach(e.object,t.object))}function N(e,t){if(D.str(t.props.attach)){let{root:r,key:n}=L(e.object,t.props.attach),a=t.previousAttach;void 0===a?delete r[n]:r[n]=a}else null==t.previousAttach||t.previousAttach(e.object,t.object);delete t.previousAttach}let q=[...F,"args","dispose","attach","object","onUpdate","dispose"],W=new Map,G=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],V=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function $(e,t){var r,n;let a=e.__r3f,i=a&&S(a).getState(),o=null==a?void 0:a.eventCount;for(let r in t){let o=t[r];if(q.includes(r))continue;if(a&&V.test(r)){"function"==typeof o?a.handlers[r]=o:delete a.handlers[r],a.eventCount=Object.keys(a.handlers).length;continue}if(void 0===o)continue;let{root:l,key:s,target:u}=L(e,r);u instanceof f.zgK&&o instanceof f.zgK?u.mask=o.mask:u instanceof f.Q1f&&j(o)?u.set(o):null!==u&&"object"==typeof u&&"function"==typeof u.set&&"function"==typeof u.copy&&null!=o&&o.constructor&&u.constructor===o.constructor?u.copy(o):null!==u&&"object"==typeof u&&"function"==typeof u.set&&Array.isArray(o)?"function"==typeof u.fromArray?u.fromArray(o):u.set(...o):null!==u&&"object"==typeof u&&"function"==typeof u.set&&"number"==typeof o?"function"==typeof u.setScalar?u.setScalar(o):u.set(o):(l[s]=o,i&&!i.linear&&G.includes(s)&&null!=(n=l[s])&&n.isTexture&&l[s].format===f.GWd&&l[s].type===f.OUM&&(l[s].colorSpace=f.er$))}if(null!=a&&a.parent&&null!=i&&i.internal&&null!=(r=a.object)&&r.isObject3D&&o!==a.eventCount){let e=a.object,t=i.internal.interaction.indexOf(e);t>-1&&i.internal.interaction.splice(t,1),a.eventCount&&null!==e.raycast&&i.internal.interaction.push(e)}return a&&void 0===a.props.attach&&(a.object.isBufferGeometry?a.props.attach="geometry":a.object.isMaterial&&(a.props.attach="material")),a&&Y(a),e}function Y(e){var t;if(!e.parent)return;null==e.props.onUpdate||e.props.onUpdate(e.object);let r=null==(t=e.root)||null==t.getState?void 0:t.getState();r&&0===r.internal.frames&&r.invalidate()}function X(e,t){!e.manual&&(e&&e.isOrthographicCamera?(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())}let Z=e=>null==e?void 0:e.isObject3D;function Q(e){return(e.eventObject||e.object).uuid+"/"+e.index+e.instanceId}function K(e,t,r,n){let a=r.get(t);a&&(r.delete(t),0===r.size&&(e.delete(n),a.target.releasePointerCapture(n)))}let J=e=>!!(null!=e&&e.render),ee=s.createContext(null);function et(){let e=s.useContext(ee);if(!e)throw Error("R3F: Hooks can only be used within the Canvas component!");return e}function er(e=e=>e,t){return et()(e,t)}function en(e,t=0){let r=et(),n=r.getState().internal.subscribe,a=U(e);return k(()=>n(a,t,r),[t,n,r]),null}let ea=new WeakMap;function ei(e,t){return function(r,...n){var a;let i;return"function"==typeof r&&(null==r||null==(a=r.prototype)?void 0:a.constructor)===r?(i=ea.get(r))||(i=new r,ea.set(r,i)):i=r,e&&e(i),Promise.all(n.map(e=>new Promise((r,n)=>i.load(e,e=>{Z(null==e?void 0:e.scene)&&Object.assign(e,function(e){let t={nodes:{},materials:{},meshes:{}};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),e.isMesh&&!t.meshes[e.name]&&(t.meshes[e.name]=e)}),t}(e.scene)),r(e)},t,t=>n(Error(`Could not load ${e}: ${null==t?void 0:t.message}`))))))}}function eo(e,t,r,n){let a=Array.isArray(t)?t:[t],i=b(ei(r,n),[e,...a],!1,{equal:D.equ});return Array.isArray(t)?i:i[0]}eo.preload=function(e,t,r){let n,a=Array.isArray(t)?t:[t];b(ei(r),[e,...a],!0,n)},eo.clear=function(e,t){var r=[e,...Array.isArray(t)?t:[t]];if(void 0===r||0===r.length)y.splice(0,y.length);else{let e=y.find(e=>w(r,e.keys,e.equal));e&&e.remove()}};let el={},es=/^three(?=[A-Z])/,eu=e=>`${e[0].toUpperCase()}${e.slice(1)}`,ec=0;function ef(e){if("function"==typeof e){let t=`${ec++}`;return el[t]=e,t}Object.assign(el,e)}function ed(e,t){let r=eu(e),n=el[r];if("primitive"!==e&&!n)throw Error(`R3F: ${r} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if("primitive"===e&&!t.object)throw Error("R3F: Primitives without 'object' are invalid!");if(void 0!==t.args&&!Array.isArray(t.args))throw Error("R3F: The args prop must be an array!")}function ep(e){if(e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?H(e.parent,e):Z(e.object)&&!1!==e.props.visible&&(e.object.visible=!0),e.isHidden=!1,Y(e)}}function ev(e,t,r){let n=t.root.getState();if(e.parent||e.object===n.scene){if(!t.object){var a,i;let e=el[eu(t.type)];t.object=null!=(a=t.props.object)?a:new e(...null!=(i=t.props.args)?i:[]),t.object.__r3f=t}if($(t.object,t.props),t.props.attach)H(e,t);else if(Z(t.object)&&Z(e.object)){let n=e.object.children.indexOf(null==r?void 0:r.object);if(r&&-1!==n){let r=e.object.children.indexOf(t.object);-1!==r?(e.object.children.splice(r,1),e.object.children.splice(r{try{e.dispose()}catch{}};"undefined"!=typeof IS_REACT_ACT_ENVIRONMENT?t():(0,_.unstable_scheduleCallback)(_.unstable_IdlePriority,t)}}function ey(e,t,r){if(!t)return;t.parent=null;let n=e.children.indexOf(t);-1!==n&&e.children.splice(n,1),t.props.attach?N(e,t):Z(t.object)&&Z(e.object)&&(e.object.remove(t.object),function(e,t){let{internal:r}=e.getState();r.interaction=r.interaction.filter(e=>e!==t),r.initialHits=r.initialHits.filter(e=>e!==t),r.hovered.forEach((e,n)=>{(e.eventObject===t||e.object===t)&&r.hovered.delete(n)}),r.capturedMap.forEach((e,n)=>{K(r.capturedMap,t,e,n)})}(S(t),t.object));let a=null!==t.props.dispose&&!1!==r;for(let e=t.children.length-1;e>=0;e--){let r=t.children[e];ey(t,r,a)}t.children.length=0,delete t.object.__r3f,a&&"primitive"!==t.type&&"Scene"!==t.object.type&&eg(t.object),void 0===r&&Y(t)}let ew=[],eb=()=>{},ex={},eM=0,e_=function(e){let t=M()(e);return t.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:s.version}),t}({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:function(e,t,r){var n;return ed(e=eu(e)in el?e:e.replace(es,""),t),"primitive"===e&&null!=(n=t.object)&&n.__r3f&&delete t.object.__r3f,z(t.object,r,e,t)},removeChild:ey,appendChild:eh,appendInitialChild:eh,insertBefore:em,appendChildToContainer(e,t){let r=e.getState().scene.__r3f;t&&r&&eh(r,t)},removeChildFromContainer(e,t){let r=e.getState().scene.__r3f;t&&r&&ey(r,t)},insertInContainerBefore(e,t,r){let n=e.getState().scene.__r3f;t&&r&&n&&em(n,t,r)},getRootHostContext:()=>ex,getChildHostContext:()=>ex,commitUpdate(e,t,r,n,a){var i,o,l;ed(t,n);let s=!1;if("primitive"===e.type&&r.object!==n.object||(null==(i=n.args)?void 0:i.length)!==(null==(o=r.args)?void 0:o.length)?s=!0:null!=(l=n.args)&&l.some((e,t)=>{var n;return e!==(null==(n=r.args)?void 0:n[t])})&&(s=!0),s)ew.push([e,{...n},a]);else{let t=function(e,t){let r={};for(let n in t)if(!q.includes(n)&&!D.equ(t[n],e.props[n]))for(let e in r[n]=t[n],t)e.startsWith(`${n}-`)&&(r[e]=t[e]);for(let n in e.props){if(q.includes(n)||t.hasOwnProperty(n))continue;let{root:a,key:i}=L(e.object,n);if(a.constructor&&0===a.constructor.length){let e=function(e){let t=W.get(e.constructor);try{t||(t=new e.constructor,W.set(e.constructor,t))}catch(e){}return t}(a);D.und(e)||(r[i]=e[i])}else r[i]=0}return r}(e,n);Object.keys(t).length&&(Object.assign(e.props,t),$(e.object,t))}(null===a.sibling||(4&a.flags)==0)&&function(){for(let[e]of ew){let t=e.parent;if(t)for(let r of(e.props.attach?N(t,e):Z(e.object)&&Z(t.object)&&t.object.remove(e.object),e.children))r.props.attach?N(e,r):Z(r.object)&&Z(e.object)&&e.object.remove(r.object);e.isHidden&&ep(e),e.object.__r3f&&delete e.object.__r3f,"primitive"!==e.type&&eg(e.object)}for(let[n,a,i]of ew){n.props=a;let o=n.parent;if(o){let a=el[eu(n.type)];n.object=null!=(e=n.props.object)?e:new a(...null!=(t=n.props.args)?t:[]),n.object.__r3f=n;var e,t,r=n.object;for(let e of[i,i.alternate])if(null!==e)if("function"==typeof e.ref){null==e.refCleanup||e.refCleanup();let t=e.ref(r);"function"==typeof t&&(e.refCleanup=t)}else e.ref&&(e.ref.current=r);for(let e of($(n.object,n.props),n.props.attach?H(o,n):Z(n.object)&&Z(o.object)&&o.object.add(n.object),n.children))e.props.attach?H(n,e):Z(e.object)&&Z(n.object)&&n.object.add(e.object);Y(n)}}ew.length=0}()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:e=>null==e?void 0:e.object,prepareForCommit:()=>null,preparePortalMount:e=>z(e.getState().scene,e,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:function(e){if(!e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?N(e.parent,e):Z(e.object)&&(e.object.visible=!1),e.isHidden=!0,Y(e)}},unhideInstance:ep,createTextInstance:eb,hideTextInstance:eb,unhideTextInstance:eb,scheduleTimeout:"function"==typeof setTimeout?setTimeout:void 0,cancelTimeout:"function"==typeof clearTimeout?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:s.createContext(null),setCurrentUpdatePriority(e){eM=e},getCurrentUpdatePriority:()=>eM,resolveUpdatePriority(){var e;if(0!==eM)return eM;switch("undefined"!=typeof window&&(null==(e=window.event)?void 0:e.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return c.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return c.ContinuousEventPriority;default:return c.DefaultEventPriority}},resetFormInstance(){}}),eE=new Map,eC={objects:"shallow",strict:!1};function eS(e){let t,r,n=eE.get(e),a=null==n?void 0:n.fiber,i=null==n?void 0:n.store;n&&console.warn("R3F.createRoot should only be called once!");let o="function"==typeof reportError?reportError:console.error,l=i||((e,t)=>{let r=g((r,n)=>{let a,i=new f.Pq0,o=new f.Pq0,l=new f.Pq0;function u(e=n().camera,t=o,r=n().size){let{width:a,height:s,top:c,left:f}=r,d=a/s;t.isVector3?l.copy(t):l.set(...t);let p=e.getWorldPosition(i).distanceTo(l);if(e&&e.isOrthographicCamera)return{width:a/e.zoom,height:s/e.zoom,top:c,left:f,factor:1,distance:p,aspect:d};{let t=2*Math.tan(e.fov*Math.PI/180/2)*p,r=a/s*t;return{width:r,height:t,top:c,left:f,factor:a/r,distance:p,aspect:d}}}let c=e=>r(t=>({performance:{...t.performance,current:e}})),d=new f.I9Y;return{set:r,get:n,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(t=1)=>e(n(),t),advance:(e,r)=>t(e,r,n()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new f.zD7,pointer:d,mouse:d,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{let e=n();a&&clearTimeout(a),e.performance.current!==e.performance.min&&c(e.performance.min),a=setTimeout(()=>c(n().performance.max),e.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:u},setEvents:e=>r(t=>({...t,events:{...t.events,...e}})),setSize:(e,t,a=0,i=0)=>{let l=n().camera,s={width:e,height:t,top:a,left:i};r(e=>({size:s,viewport:{...e.viewport,...u(l,o,s)}}))},setDpr:e=>r(t=>{let r=R(e);return{viewport:{...t.viewport,dpr:r,initialDpr:t.viewport.initialDpr||r}}}),setFrameloop:(e="always")=>{let t=n().clock;t.stop(),t.elapsedTime=0,"never"!==e&&(t.start(),t.elapsedTime=0),r(()=>({frameloop:e}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:s.createRef(),active:!1,frames:0,priority:0,subscribe:(e,t,r)=>{let a=n().internal;return a.priority=a.priority+ +(t>0),a.subscribers.push({ref:e,priority:t,store:r}),a.subscribers=a.subscribers.sort((e,t)=>e.priority-t.priority),()=>{let r=n().internal;null!=r&&r.subscribers&&(r.priority=r.priority-(t>0),r.subscribers=r.subscribers.filter(t=>t.ref!==e))}}}}}),n=r.getState(),a=n.size,i=n.viewport.dpr,o=n.camera;return r.subscribe(()=>{let{camera:e,size:t,viewport:n,gl:l,set:s}=r.getState();if(t.width!==a.width||t.height!==a.height||n.dpr!==i){a=t,i=n.dpr,X(e,t),n.dpr>0&&l.setPixelRatio(n.dpr);let r="undefined"!=typeof HTMLCanvasElement&&l.domElement instanceof HTMLCanvasElement;l.setSize(t.width,t.height,r)}e!==o&&(o=e,s(t=>({viewport:{...t.viewport,...t.viewport.getCurrentViewport(e)}})))}),r.subscribe(t=>e(t)),r})(eB,eH),u=a||e_.createContainer(l,c.ConcurrentRoot,null,!1,null,"",o,o,o,null);n||eE.set(e,{fiber:u,store:l});let p=!1,v=null;return{async configure(n={}){var a,i;let o;v=new Promise(e=>o=e);let{gl:s,size:u,scene:c,events:h,onCreated:m,shadows:g=!1,linear:y=!1,flat:w=!1,legacy:b=!1,orthographic:x=!1,frameloop:M="always",dpr:_=[1,2],performance:E,raycaster:C,camera:S,onPointerMissed:P}=n,j=l.getState(),k=j.gl;if(!j.gl){let t={canvas:e,powerPreference:"high-performance",antialias:!0,alpha:!0},r="function"==typeof s?await s(t):s;k=J(r)?r:new d.WebGLRenderer({...t,...s}),j.set({gl:k})}let U=j.raycaster;U||j.set({raycaster:U=new f.tBo});let{params:T,...A}=C||{};if(D.equ(A,U,eC)||$(U,{...A}),D.equ(T,U.params,eC)||$(U,{params:{...U.params,...T}}),!j.camera||j.camera===r&&!D.equ(r,S,eC)){r=S;let e=null==S?void 0:S.isCamera,t=e?S:x?new f.qUd(0,0,0,0,.1,1e3):new f.ubm(75,0,.1,1e3);!e&&(t.position.z=5,S&&($(t,S),!t.manual&&("aspect"in S||"left"in S||"right"in S||"bottom"in S||"top"in S)&&(t.manual=!0,t.updateProjectionMatrix())),j.camera||null!=S&&S.rotation||t.lookAt(0,0,0)),j.set({camera:t}),U.camera=t}if(!j.scene){let e;null!=c&&c.isScene?z(e=c,l,"",{}):(z(e=new f.Z58,l,"",{}),c&&$(e,c)),j.set({scene:e})}h&&!j.events.handlers&&j.set({events:h(l)});let I=function(e,t){if(!t&&"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&e.parentElement){let{width:t,height:r,top:n,left:a}=e.parentElement.getBoundingClientRect();return{width:t,height:r,top:n,left:a}}return!t&&"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas?{width:e.width,height:e.height,top:0,left:0}:{width:0,height:0,top:0,left:0,...t}}(e,u);if(D.equ(I,j.size,eC)||j.setSize(I.width,I.height,I.top,I.left),_&&j.viewport.dpr!==R(_)&&j.setDpr(_),j.frameloop!==M&&j.setFrameloop(M),j.onPointerMissed||j.set({onPointerMissed:P}),E&&!D.equ(E,j.performance,eC)&&j.set(e=>({performance:{...e.performance,...E}})),!j.xr){let e=(e,t)=>{let r=l.getState();"never"!==r.frameloop&&eH(e,!0,r,t)},t=()=>{let t=l.getState();t.gl.xr.enabled=t.gl.xr.isPresenting,t.gl.xr.setAnimationLoop(t.gl.xr.isPresenting?e:null),t.gl.xr.isPresenting||eB(t)},r={connect(){let e=l.getState().gl;e.xr.addEventListener("sessionstart",t),e.xr.addEventListener("sessionend",t)},disconnect(){let e=l.getState().gl;e.xr.removeEventListener("sessionstart",t),e.xr.removeEventListener("sessionend",t)}};"function"==typeof(null==(a=k.xr)?void 0:a.addEventListener)&&r.connect(),j.set({xr:r})}if(k.shadowMap){let e=k.shadowMap.enabled,t=k.shadowMap.type;if(k.shadowMap.enabled=!!g,D.boo(g))k.shadowMap.type=f.Wk7;else if(D.str(g)){let e={basic:f.bTm,percentage:f.QP0,soft:f.Wk7,variance:f.RyA};k.shadowMap.type=null!=(i=e[g])?i:f.Wk7}else D.obj(g)&&Object.assign(k.shadowMap,g);(e!==k.shadowMap.enabled||t!==k.shadowMap.type)&&(k.shadowMap.needsUpdate=!0)}return f.ppV.enabled=!b,p||(k.outputColorSpace=y?f.Zr2:f.er$,k.toneMapping=w?f.y_p:f.FV),j.legacy!==b&&j.set(()=>({legacy:b})),j.linear!==y&&j.set(()=>({linear:y})),j.flat!==w&&j.set(()=>({flat:w})),!s||D.fun(s)||J(s)||D.equ(s,k,eC)||$(k,s),t=m,p=!0,o(),this},render(r){return p||v||this.configure(),v.then(()=>{e_.updateContainer((0,E.jsx)(eP,{store:l,children:r,onCreated:t,rootElement:e}),u,null,()=>void 0)}),l},unmount(){ej(e)}}}function eP({store:e,children:t,onCreated:r,rootElement:n}){return k(()=>{let t=e.getState();t.set(e=>({internal:{...e.internal,active:!0}})),r&&r(t),e.getState().events.connected||null==t.events.connect||t.events.connect(n)},[]),(0,E.jsx)(ee.Provider,{value:e,children:t})}function ej(e,t){let r=eE.get(e),n=null==r?void 0:r.fiber;if(n){let a=null==r?void 0:r.store.getState();a&&(a.internal.active=!1),e_.updateContainer(null,n,null,()=>{a&&setTimeout(()=>{try{null==a.events.disconnect||a.events.disconnect(),null==(r=a.gl)||null==(n=r.renderLists)||null==n.dispose||n.dispose(),null==(i=a.gl)||null==i.forceContextLoss||i.forceContextLoss(),null!=(o=a.gl)&&o.xr&&a.xr.disconnect();var r,n,i,o,l=a.scene;for(let e in"Scene"!==l.type&&(null==l.dispose||l.dispose()),l){let t=l[e];(null==t?void 0:t.type)!=="Scene"&&(null==t||null==t.dispose||t.dispose())}eE.delete(e),t&&t(e)}catch(e){}},500)})}}function ek(e,t,r){return(0,E.jsx)(eU,{children:e,container:t,state:r})}function eU({state:e={},children:t,container:r}){let{events:n,size:a,...i}=e,o=et(),[l]=s.useState(()=>new f.tBo),[u]=s.useState(()=>new f.I9Y),c=U((e,t)=>{let i;if(t.camera&&a){let r=t.camera;i=e.viewport.getCurrentViewport(r,new f.Pq0,a),r!==e.camera&&X(r,a)}return{...e,...t,scene:r,raycaster:l,pointer:u,mouse:u,previousRoot:o,events:{...e.events,...t.events,...n},size:{...e.size,...a},viewport:{...e.viewport,...i},setEvents:e=>t.set(t=>({...t,events:{...t.events,...e}}))}}),d=s.useMemo(()=>{let e=g((e,t)=>({...i,set:e,get:t})),t=t=>e.setState(e=>c.current(t,e));return t(o.getState()),o.subscribe(t),e},[o,r]);return(0,E.jsx)(E.Fragment,{children:e_.createPortal((0,E.jsx)(ee.Provider,{value:d,children:t}),d,null)})}let eT=new Set,eA=new Set,eI=new Set;function eR(e,t){if(e.size)for(let{callback:r}of e.values())r(t)}function eO(e,t){switch(e){case"before":return eR(eT,t);case"after":return eR(eA,t);case"tail":return eR(eI,t)}}function eD(e,t,r){let i=t.clock.getDelta();"never"===t.frameloop&&"number"==typeof e&&(i=e-t.clock.elapsedTime,t.clock.oldTime=t.clock.elapsedTime,t.clock.elapsedTime=e),n=t.internal.subscribers;for(let e=0;e0)&&!(null!=(t=l.gl.xr)&&t.isPresenting)&&(i+=eD(e,l))}if(ez=!1,eO("after",e),0===i)return eO("tail",e),eF=!1,cancelAnimationFrame(o)}function eB(e,t=1){var r;if(!e)return eE.forEach(e=>eB(e.store.getState(),t));(null==(r=e.gl.xr)||!r.isPresenting)&&e.internal.active&&"never"!==e.frameloop&&(t>1?e.internal.frames=Math.min(60,e.internal.frames+t):ez?e.internal.frames=2:e.internal.frames=1,eF||(eF=!0,requestAnimationFrame(eL)))}function eH(e,t=!0,r,n){if(t&&eO("before",e),r)eD(e,r,n);else for(let t of eE.values())eD(e,t.store.getState());t&&eO("after",e)}let eN={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function eq(e){let{handlePointer:t}=function(e){function t(e){return e.filter(e=>["Move","Over","Enter","Out","Leave"].some(t=>{var r;return null==(r=e.__r3f)?void 0:r.handlers["onPointer"+t]}))}function r(t){let{internal:r}=e.getState();for(let e of r.hovered.values())if(!t.length||!t.find(t=>t.object===e.object&&t.index===e.index&&t.instanceId===e.instanceId)){let n=e.eventObject.__r3f;if(r.hovered.delete(Q(e)),null!=n&&n.eventCount){let r=n.handlers,a={...e,intersections:t};null==r.onPointerOut||r.onPointerOut(a),null==r.onPointerLeave||r.onPointerLeave(a)}}}function n(e,t){for(let r=0;rr([]);case"onLostPointerCapture":return t=>{let{internal:n}=e.getState();"pointerId"in t&&n.capturedMap.has(t.pointerId)&&requestAnimationFrame(()=>{n.capturedMap.has(t.pointerId)&&(n.capturedMap.delete(t.pointerId),r([]))})}}return function(i){let{onPointerMissed:o,internal:l}=e.getState();l.lastEvent.current=i;let s="onPointerMove"===a,u="onClick"===a||"onContextMenu"===a||"onDoubleClick"===a,c=function(t,r){let n=e.getState(),a=new Set,i=[],o=r?r(n.internal.interaction):n.internal.interaction;for(let e=0;e{let r=O(e.object),n=O(t.object);return r&&n&&n.events.priority-r.events.priority||e.distance-t.distance}).filter(e=>{let t=Q(e);return!a.has(t)&&(a.add(t),!0)});for(let e of(n.events.filter&&(l=n.events.filter(l,n)),l)){let t=e.object;for(;t;){var s;null!=(s=t.__r3f)&&s.eventCount&&i.push({...e,eventObject:t}),t=t.parent}}if("pointerId"in t&&n.internal.capturedMap.has(t.pointerId))for(let e of n.internal.capturedMap.get(t.pointerId).values())a.has(Q(e.intersection))||i.push(e.intersection);return i}(i,s?t:void 0),d=u?function(t){let{internal:r}=e.getState(),n=t.offsetX-r.initialClick[0],a=t.offsetY-r.initialClick[1];return Math.round(Math.sqrt(n*n+a*a))}(i):0;"onPointerDown"===a&&(l.initialClick=[i.offsetX,i.offsetY],l.initialHits=c.map(e=>e.eventObject)),u&&!c.length&&d<=2&&(n(i,l.interaction),o&&o(i)),s&&r(c),!function(e,t,n,a){if(e.length){let i={stopped:!1};for(let o of e){let l=O(o.object);if(l||o.object.traverseAncestors(e=>{let t=O(e);if(t)return l=t,!1}),l){let{raycaster:s,pointer:u,camera:c,internal:d}=l,p=new f.Pq0(u.x,u.y,0).unproject(c),v=e=>{var t,r;return null!=(t=null==(r=d.capturedMap.get(e))?void 0:r.has(o.eventObject))&&t},h=e=>{let r={intersection:o,target:t.target};d.capturedMap.has(e)?d.capturedMap.get(e).set(o.eventObject,r):d.capturedMap.set(e,new Map([[o.eventObject,r]])),t.target.setPointerCapture(e)},m=e=>{let t=d.capturedMap.get(e);t&&K(d.capturedMap,o.eventObject,t,e)},g={};for(let e in t){let r=t[e];"function"!=typeof r&&(g[e]=r)}let y={...o,...g,pointer:u,intersections:e,stopped:i.stopped,delta:n,unprojectedPoint:p,ray:s.ray,camera:c,stopPropagation(){let n="pointerId"in t&&d.capturedMap.get(t.pointerId);(!n||n.has(o.eventObject))&&(y.stopped=i.stopped=!0,d.hovered.size&&Array.from(d.hovered.values()).find(e=>e.eventObject===o.eventObject)&&r([...e.slice(0,e.indexOf(o)),o]))},target:{hasPointerCapture:v,setPointerCapture:h,releasePointerCapture:m},currentTarget:{hasPointerCapture:v,setPointerCapture:h,releasePointerCapture:m},nativeEvent:t};if(a(y),!0===i.stopped)break}}}}(c,i,d,function(e){let t=e.eventObject,r=t.__r3f;if(!(null!=r&&r.eventCount))return;let o=r.handlers;if(s){if(o.onPointerOver||o.onPointerEnter||o.onPointerOut||o.onPointerLeave){let t=Q(e),r=l.hovered.get(t);r?r.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{let r=o[a];r?(!u||l.initialHits.includes(t))&&(n(i,l.interaction.filter(e=>!l.initialHits.includes(e))),r(e)):u&&l.initialHits.includes(t)&&n(i,l.interaction.filter(e=>!l.initialHits.includes(e)))}})}}}}(e);return{priority:1,enabled:!0,compute(e,t,r){t.pointer.set(e.offsetX/t.size.width*2-1,-(2*(e.offsetY/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)},connected:void 0,handlers:Object.keys(eN).reduce((e,r)=>({...e,[r]:t(r)}),{}),update:()=>{var t;let{events:r,internal:n}=e.getState();null!=(t=n.lastEvent)&&t.current&&r.handlers&&r.handlers.onPointerMove(n.lastEvent.current)},connect:t=>{let{set:r,events:n}=e.getState();if(null==n.disconnect||n.disconnect(),r(e=>({events:{...e.events,connected:t}})),n.handlers)for(let e in n.handlers){let r=n.handlers[e],[a,i]=eN[e];t.addEventListener(a,r,{passive:i})}},disconnect:()=>{let{set:t,events:r}=e.getState();if(r.connected){if(r.handlers)for(let e in r.handlers){let t=r.handlers[e],[n]=eN[e];r.connected.removeEventListener(n,t)}t(e=>({events:{...e.events,connected:void 0}}))}}}}},3307:(e,t)=>{t.ConcurrentRoot=1,t.ContinuousEventPriority=8,t.DefaultEventPriority=32,t.DiscreteEventPriority=2},4501:(e,t,r)=>{r.d(t,{A:()=>n});function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t{r.d(t,{_:()=>u});var n=r(4501),a=r(4232),i=r(6691),o=r(2648);let l={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` uniform sampler2D tDiffuse; uniform float h; varying vec2 vUv; void main() { vec4 sum = vec4( 0.0 ); sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051; sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051; gl_FragColor = sum; } `},s={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` uniform sampler2D tDiffuse; uniform float v; varying vec2 vUv; void main() { vec4 sum = vec4( 0.0 ); sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051; gl_FragColor = sum; } `},u=a.forwardRef(({scale:e=10,frames:t=1/0,opacity:r=1,width:u=1,height:c=1,blur:f=1,near:d=0,far:p=10,resolution:v=512,smooth:h=!0,color:m="#000000",depthWrite:g=!1,renderOrder:y,...w},b)=>{let x,M,_=a.useRef(null),E=(0,o.C)(e=>e.scene),C=(0,o.C)(e=>e.gl),S=a.useRef(null);u*=Array.isArray(e)?e[0]:e||1,c*=Array.isArray(e)?e[1]:e||1;let[P,j,k,U,T,A,I]=a.useMemo(()=>{let e=new i.nWS(v,v),t=new i.nWS(v,v);t.texture.generateMipmaps=e.texture.generateMipmaps=!1;let r=new i.bdM(u,c).rotateX(Math.PI/2),n=new i.eaF(r),a=new i.CSG;a.depthTest=a.depthWrite=!1,a.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new i.Q1f(m)}},e.fragmentShader=e.fragmentShader.replace("void main() {",`uniform vec3 ucolor; void main() { `),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")};let o=new i.BKk(l),f=new i.BKk(s);return f.depthTest=o.depthTest=!1,[e,r,a,n,o,f,t]},[v,u,c,e,m]),R=e=>{U.visible=!0,U.material=T,T.uniforms.tDiffuse.value=P.texture,T.uniforms.h.value=e/256,C.setRenderTarget(I),C.render(U,S.current),U.material=A,A.uniforms.tDiffuse.value=I.texture,A.uniforms.v.value=e/256,C.setRenderTarget(P),C.render(U,S.current),U.visible=!1},O=0;return(0,o.D)(()=>{S.current&&(t===1/0||O_.current,[]),a.createElement("group",(0,n.A)({"rotation-x":Math.PI/2},w,{ref:_}),a.createElement("mesh",{renderOrder:y,geometry:j,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},a.createElement("meshBasicMaterial",{transparent:!0,map:P.texture,opacity:r,depthWrite:g})),a.createElement("orthographicCamera",{ref:S,args:[-u/2,u/2,c/2,-c/2,d,p]}))})},4895:(e,t,r)=>{let n;r.d(t,{OH:()=>ey});var a=r(4501),i=r(4232),o=r(2648),l=r(6691);let s=parseInt(l.sPf.replace(/\D+/g,""));class u extends l.eaF{constructor(e,t){var r,n;let a=(e=>e&&e.isCubeTexture)(e),i=Math.floor(Math.log2((null!=(n=a?null==(r=e.image[0])?void 0:r.width:e.image.width)?n:1024)/4)),o=Math.pow(2,i),u=3*Math.max(o,112),c=` varying vec3 vWorldPosition; void main() { vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) ); vWorldPosition = worldPosition.xyz; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,f=[a?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/u}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*o)}`,`#define CUBEUV_MAX_MIP ${i}.0`].join("\n")+` #define ENVMAP_TYPE_CUBE_UV varying vec3 vWorldPosition; uniform float radius; uniform float height; uniform float angle; #ifdef ENVMAP_TYPE_CUBE uniform samplerCube map; #else uniform sampler2D map; #endif // From: https://www.shadertoy.com/view/4tsBD7 float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r ) { float d = dot ( rd, n ); if( d > 0.0 ) { return 1e6; } vec3 o = ro - c; float t = - dot( n, o ) / d; vec3 q = o + rd * t; return ( dot( q, q ) < r * r ) ? t : 1e6; } // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra ) { vec3 oc = ro - ce; float b = dot( oc, rd ); float c = dot( oc, oc ) - ra * ra; float h = b * b - c; if( h < 0.0 ) { return -1.0; } h = sqrt( h ); return - b + h; } vec3 project() { vec3 p = normalize( vWorldPosition ); vec3 camPos = cameraPosition; camPos.y -= height; float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius ); if( intersection > 0.0 ) { vec3 h = vec3( 0.0, - height, 0.0 ); float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius ); p = ( camPos + min( intersection, intersection2 ) * p ) / radius; } else { p = vec3( 0.0, 1.0, 0.0 ); } return p; } #include #include void main() { vec3 projectedWorldPosition = project(); #ifdef ENVMAP_TYPE_CUBE vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb; #else vec3 direction = normalize( projectedWorldPosition ); vec2 uv = equirectUv( direction ); vec3 outcolor = texture2D( map, uv ).rgb; #endif gl_FragColor = vec4( outcolor, 1.0 ); #include #include <${s>=154?"colorspace_fragment":"encodings_fragment"}> } `,d={map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}};super(new l.WBB(1,16),new l.BKk({uniforms:d,fragmentShader:f,vertexShader:c,side:l.$EB}))}set radius(e){this.material.uniforms.radius.value=e}get radius(){return this.material.uniforms.radius.value}set height(e){this.material.uniforms.height.value=e}get height(){return this.material.uniforms.height.value}}class c extends l.BRH{constructor(e){super(e),this.type=l.ix0}parse(e){let t,r,n,a=function(e,t){switch(e){case 1:throw Error("THREE.RGBELoader: Read Error: "+(t||""));case 2:throw Error("THREE.RGBELoader: Write Error: "+(t||""));case 3:throw Error("THREE.RGBELoader: Bad File Format: "+(t||""));default:throw Error("THREE.RGBELoader: Memory Error: "+(t||""))}},i=function(e,t,r){t=t||1024;let n=e.pos,a=-1,i=0,o="",l=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));for(;0>(a=l.indexOf("\n"))&&i=e.byteLength)&&(t=i(e))||a(1,"no header found"),(r=t.match(/^#\?(\S+)/))||a(3,"bad initial token"),u.valid|=1,u.programtype=r[1],u.string+=t+"\n";!1!==(t=i(e));){if(u.string+=t+"\n","#"===t.charAt(0)){u.comments+=t+"\n";continue}if((r=t.match(n))&&(u.gamma=parseFloat(r[1])),(r=t.match(o))&&(u.exposure=parseFloat(r[1])),(r=t.match(l))&&(u.valid|=2,u.format=r[1]),(r=t.match(s))&&(u.valid|=4,u.height=parseInt(r[1],10),u.width=parseInt(r[2],10)),2&u.valid&&4&u.valid)break}return 2&u.valid||a(3,"missing format specifier"),4&u.valid||a(3,"missing image size specifier"),u}(o),u=s.width,c=s.height,f=function(e,t,r){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&a(3,"wrong scanline width");let n=new Uint8Array(4*t*r);n.length||a(4,"unable to allocate buffer space");let i=0,o=0,l=4*t,s=new Uint8Array(4),u=new Uint8Array(l),c=r;for(;c>0&&oe.byteLength&&a(1),s[0]=e[o++],s[1]=e[o++],s[2]=e[o++],s[3]=e[o++],(2!=s[0]||2!=s[1]||(s[2]<<8|s[3])!=t)&&a(3,"bad rgbe scanline format");let r=0,f;for(;r128;if(t&&(f-=128),(0===f||r+f>l)&&a(3,"bad scanline data"),t){let t=e[o++];for(let e=0;e>>1|(21845&E)<<1;C=(61680&(C=(52428&C)>>>2|(13107&C)<<2))>>>4|(3855&C)<<4,_[E]=((65280&C)>>>8|(255&C)<<8)>>>1}for(var S=function(e,t,r){for(var n,a=e.length,i=0,o=new d(t);i>>s]=u}else for(i=0,n=new d(a);i>>15-e[i]);return n},P=new f(288),E=0;E<144;++E)P[E]=8;for(var E=144;E<256;++E)P[E]=9;for(var E=256;E<280;++E)P[E]=7;for(var E=280;E<288;++E)P[E]=8;for(var j=new f(32),E=0;E<32;++E)j[E]=5;var k=S(P,9,1),U=S(j,5,1),T=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},A=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&r},I=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},R=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var n=new(e instanceof d?d:e instanceof p?p:f)(r-t);return n.set(e.subarray(t,r)),n},O=function(e,t,r){var n=e.length;if(!n||r&&!r.l&&n<5)return t||new f(0);var a=!t||r,i=!r||r.i;r||(r={}),t||(t=new f(3*n));var o=function(e){var r=t.length;if(e>r){var n=new f(Math.max(2*r,e));n.set(t),t=n}},l=r.f||0,s=r.p||0,u=r.b||0,c=r.l,d=r.d,p=r.m,g=r.n,y=8*n;do{if(!c){r.f=l=A(e,s,1);var b=A(e,s+1,3);if(s+=3,b)if(1==b)c=k,d=U,p=9,g=5;else if(2==b){var x=A(e,s,31)+257,_=A(e,s+10,15)+4,E=x+A(e,s+5,31)+1;s+=14;for(var C=new f(E),P=new f(19),j=0;j<_;++j)P[m[j]]=A(e,s+3*j,7);s+=3*_;for(var O=T(P),D=(1<>>4;if(L<16)C[j++]=L;else{var B=0,H=0;for(16==L?(H=3+A(e,s,3),s+=2,B=C[j-1]):17==L?(H=3+A(e,s,7),s+=3):18==L&&(H=11+A(e,s,127),s+=7);H--;)C[j++]=B}}var N=C.subarray(0,x),q=C.subarray(x);p=T(N),g=T(q),c=S(N,p,1),d=S(q,g,1)}else throw"invalid block type";else{var W,L=((W=s)/8|0)+(7&W&&1)+4,G=e[L-4]|e[L-3]<<8,V=L+G;if(V>n){if(i)throw"unexpected EOF";break}a&&o(u+G),t.set(e.subarray(L,V),u),r.b=u+=G,r.p=s=8*V;continue}if(s>y){if(i)throw"unexpected EOF";break}}a&&o(u+131072);for(var $=(1<>>4;if((s+=15&B)>y){if(i)throw"unexpected EOF";break}if(!B)throw"invalid length/literal";if(Z<256)t[u++]=Z;else if(256==Z){X=s,c=null;break}else{var Q=Z-254;if(Z>264){var j=Z-257,K=v[j];Q=A(e,s,(1<>>4;if(!J)throw"invalid distance";s+=15&J;var q=M[ee];if(ee>3){var K=h[ee];q+=I(e,s)&(1<y){if(i)throw"unexpected EOF";break}a&&o(u+131072);for(var et=u+Q;u>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function z(e,t){return O((F(e),e.subarray(2,-4)),t)}var L="undefined"!=typeof TextDecoder&&new TextDecoder;try{L.decode(D,{stream:!0})}catch(e){}let B=s>=152;class H extends l.BRH{constructor(e){super(e),this.type=l.ix0}parse(e){let t={l:0,c:0,lc:0};function r(e,r,n,a,i){for(;n>(n-=e)&(1<>(n-=8),p=new Uint8Array([p])[0];if(f.value+p>d)return!1;for(var v=c[f.value-1];p-- >0;)c[f.value++]=v}else{if(!(f.value32767?t-65536:t}let c={a:0,b:0};function f(e,t){var r=u(e),n=u(t),a=r+(1&n)+(n>>1),i=a-n;c.a=a,c.b=i}function d(e,t){var r=65535&t,n=(65535&e)-(r>>1)&65535;c.a=r+n-32768&65535,c.b=n}function p(e,l,u,c,f,d){var p=u.value,v=C(l,u),h=C(l,u);u.value+=4;var m=C(l,u);if(u.value+=4,v<0||v>=65537||h<0||h>=65537)throw"Something wrong with HUF_ENCSIZE";for(var g=Array(65537),y=Array(16384),w=0;w<16384;w++)y[w]={},y[w].len=0,y[w].lit=0,y[w].p=null;var b=c-(u.value-p);if(!function(e,a,i,o,l,s,u){for(var c=0,f=0;l<=s;l++){if(i.value-i.value>o)return!1;r(6,c,f,e,i);var d=t.l;if(c=t.c,f=t.lc,u[l]=d,63==d){if(i.value-i.value>o)throw"Something wrong with hufUnpackEncTable";r(8,c,f,e,i);var p=t.l+6;if(c=t.c,f=t.lc,l+p>s+1)throw"Something wrong with hufUnpackEncTable";for(;p--;)u[l++]=0;l--}else if(d>=59){var p=d-59+2;if(l+p>s+1)throw"Something wrong with hufUnpackEncTable";for(;p--;)u[l++]=0;l--}}!function(e){for(var t=0;t<=58;++t)n[t]=0;for(var t=0;t<65537;++t)n[e[t]]+=1;for(var r=0,t=58;t>0;--t){var a=r+n[t]>>1;n[t]=r,r=a}for(var t=0;t<65537;++t){var i=e[t];i>0&&(e[t]=i|n[i]++<<6)}}(u)}(e,0,u,b,v,h,g),m>8*(c-(u.value-p)))throw"Something wrong with hufUncompress";!function(e,t,r,n){for(;t<=r;t++){var a=e[t]>>6,i=63&e[t];if(a>>i)throw"Invalid table entry";if(i>14){var o=n[a>>i-14];if(o.len)throw"Invalid table entry";if(o.lit++,o.p){var l=o.p;o.p=Array(o.lit);for(var s=0;s0;s--){var o=n[(a<<14-i)+u];if(o.len||o.p)throw"Invalid table entry";o.len=i,o.lit=t,u++}}}(g,v,h,y),function(e,t,r,n,l,u,c,f,d,p){for(var v=0,h=0,m=Math.trunc(l.value+(u+7)/8);l.value=14;){var g=t[v>>h-14&16383];if(g.len)h-=g.len,s(g.lit,c,v,h,r,n,l,d,p,f),v=o.c,h=o.lc;else{if(!g.p)throw"hufDecode issues";for(y=0;y=w&&e[g.p[y]]>>6==(v>>h-w&(1<>=b,h-=b;h>0;){var g=t[v<<14-h&16383];if(g.len)h-=g.len,s(g.lit,c,v,h,r,n,l,d,p,f),v=o.c,h=o.lc;else throw"hufDecode issues"}}(g,y,e,l,u,m,h,d,f,{value:0})}function v(e){for(var t=1;ti)&&(t[a++]=e[r++],!(a>i));){;t[a++]=e[n++]}}function m(e){for(var t=e.byteLength,r=[],n=0,a=new DataView(e);t>0;){var i=a.getInt8(n++);if(i<0){var o=-i;t-=o+1;for(var l=0;l=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(s<=u)for(var l=0;l>3]&1<<(7&n))&&(t[r++]=n);for(var a=r-1;r<65536;)t[r++]=0;return a}(a,v),m=C(t,r);p(e.array,t,r,m,n,i);for(var l=0;la?a:r,u=1;u<=s;)u<<=1;for(u>>=1,p=u,u>>=1;u>=1;){for(var p,v,h,m,g,y=0,w=0+i*(a-p),b=i*u,x=i*p,M=n*u,_=n*p;y<=w;y+=x){for(var E=y,C=y+n*(r-p);E<=C;E+=_){var S=E+M,P=E+b,j=P+M;l?(f(e[E+t],e[P+t]),v=c.a,m=c.b,f(e[S+t],e[j+t]),h=c.a,g=c.b,f(v,h),e[E+t]=c.a,e[S+t]=c.b,f(m,g)):(d(e[E+t],e[P+t]),v=c.a,m=c.b,d(e[S+t],e[j+t]),h=c.a,g=c.b,d(v,h),e[E+t]=c.a,e[S+t]=c.b,d(m,g)),e[P+t]=c.a,e[j+t]=c.b}if(r&u){var P=E+b;l?f(e[E+t],e[P+t]):d(e[E+t],e[P+t]),v=c.a,e[P+t]=c.b,e[E+t]=v}}if(a&u)for(var E=y,C=y+n*(r-p);E<=C;E+=_){var S=E+M;l?f(e[E+t],e[S+t]):d(e[E+t],e[S+t]),v=c.a,e[S+t]=c.b,e[E+t]=v}p=u,u>>=1}}(n,g.start+y,g.nx,g.size,g.ny,g.nx*g.size,h);for(var w=i,b=0;b0;){var s=_(t.buffer,r),u=P(t,r),c=u>>2&3,f=new Int8Array([(u>>4)-1])[0],d=P(t,r);i.push({name:s,index:f,type:d,compression:c}),o-=s.length+3}for(var v=F.channels,h=Array(e.channels),g=0;g=0&&(x.idx[E.index]=M),y.offset=M)}if(a.acCompressedSize>0)switch(a.acCompression){case 0:var C=new Uint16Array(a.totalAcUncompressedCount);p(e.array,t,r,a.acCompressedSize,C,a.totalAcUncompressedCount);break;case 1:var S=e.array.slice(r.value,r.value+a.totalAcUncompressedCount),k=z(S),C=new Uint16Array(k.buffer);r.value+=a.totalAcUncompressedCount}if(a.dcCompressedSize>0){var U=new Uint16Array(w({array:e.array,offset:r,size:a.dcCompressedSize}).buffer);r.value+=a.dcCompressedSize}if(a.rleRawSize>0){var S=e.array.slice(r.value,r.value+a.rleCompressedSize),k=z(S),I=m(k.buffer);r.value+=a.rleCompressedSize}for(var R=0,O=Array(h.length),g=0;g>8==255?a+=255&n:(r[a]=n,a++),e.value++}(h,n,y[e]),x=y[e],(M=g[e])[0]=T(x[0]),M[1]=T(x[1]),M[2]=T(x[5]),M[3]=T(x[6]),M[4]=T(x[14]),M[5]=T(x[15]),M[6]=T(x[27]),M[7]=T(x[28]),M[8]=T(x[2]),M[9]=T(x[4]),M[10]=T(x[7]),M[11]=T(x[13]),M[12]=T(x[16]),M[13]=T(x[26]),M[14]=T(x[29]),M[15]=T(x[42]),M[16]=T(x[3]),M[17]=T(x[8]),M[18]=T(x[12]),M[19]=T(x[17]),M[20]=T(x[25]),M[21]=T(x[30]),M[22]=T(x[41]),M[23]=T(x[43]),M[24]=T(x[9]),M[25]=T(x[11]),M[26]=T(x[18]),M[27]=T(x[24]),M[28]=T(x[31]),M[29]=T(x[40]),M[30]=T(x[44]),M[31]=T(x[53]),M[32]=T(x[10]),M[33]=T(x[19]),M[34]=T(x[23]),M[35]=T(x[32]),M[36]=T(x[39]),M[37]=T(x[45]),M[38]=T(x[52]),M[39]=T(x[54]),M[40]=T(x[20]),M[41]=T(x[22]),M[42]=T(x[33]),M[43]=T(x[38]),M[44]=T(x[46]),M[45]=T(x[51]),M[46]=T(x[55]),M[47]=T(x[60]),M[48]=T(x[21]),M[49]=T(x[34]),M[50]=T(x[37]),M[51]=T(x[47]),M[52]=T(x[50]),M[53]=T(x[56]),M[54]=T(x[59]),M[55]=T(x[61]),M[56]=T(x[35]),M[57]=T(x[36]),M[58]=T(x[48]),M[59]=T(x[49]),M[60]=T(x[57]),M[61]=T(x[58]),M[62]=T(x[62]),M[63]=T(x[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),n=.5*Math.cos(3*3.14159/16),a=.5*Math.cos(3*3.14159/8);for(var i=[,,,,],o=[,,,,],l=[,,,,],s=[,,,,],u=0;u<8;++u){var c=8*u;i[0]=r*e[c+2],i[1]=a*e[c+2],i[2]=r*e[c+6],i[3]=a*e[c+6],o[0]=t*e[c+1]+n*e[c+3]+.2777854612564676*e[c+5]+.09754573032714427*e[c+7],o[1]=n*e[c+1]-.09754573032714427*e[c+3]-t*e[c+5]-.2777854612564676*e[c+7],o[2]=.2777854612564676*e[c+1]-t*e[c+3]+.09754573032714427*e[c+5]+n*e[c+7],o[3]=.09754573032714427*e[c+1]-.2777854612564676*e[c+3]+n*e[c+5]-t*e[c+7],l[0]=.35355362513961314*(e[c+0]+e[c+4]),l[3]=.35355362513961314*(e[c+0]-e[c+4]),l[1]=i[0]+i[3],l[2]=i[1]-i[2],s[0]=l[0]+l[1],s[1]=l[3]+l[2],s[2]=l[3]-l[2],s[3]=l[0]-l[1],e[c+0]=s[0]+o[0],e[c+1]=s[1]+o[1],e[c+2]=s[2]+o[2],e[c+3]=s[3]+o[3],e[c+4]=s[3]-o[3],e[c+5]=s[2]-o[2],e[c+6]=s[1]-o[1],e[c+7]=s[0]-o[0]}for(var f=0;f<8;++f)i[0]=r*e[16+f],i[1]=a*e[16+f],i[2]=r*e[48+f],i[3]=a*e[48+f],o[0]=t*e[8+f]+n*e[24+f]+.2777854612564676*e[40+f]+.09754573032714427*e[56+f],o[1]=n*e[8+f]-.09754573032714427*e[24+f]-t*e[40+f]-.2777854612564676*e[56+f],o[2]=.2777854612564676*e[8+f]-t*e[24+f]+.09754573032714427*e[40+f]+n*e[56+f],o[3]=.09754573032714427*e[8+f]-.2777854612564676*e[24+f]+n*e[40+f]-t*e[56+f],l[0]=.35355362513961314*(e[f]+e[32+f]),l[3]=.35355362513961314*(e[f]-e[32+f]),l[1]=i[0]+i[3],l[2]=i[1]-i[2],s[0]=l[0]+l[1],s[1]=l[3]+l[2],s[2]=l[3]-l[2],s[3]=l[0]-l[1],e[0+f]=s[0]+o[0],e[8+f]=s[1]+o[1],e[16+f]=s[2]+o[2],e[24+f]=s[3]+o[3],e[32+f]=s[3]-o[3],e[40+f]=s[2]-o[2],e[48+f]=s[1]-o[1],e[56+f]=s[0]-o[0]}(g[e])}for(var C=g,S=0;S<64;++S){var P=C[0][S],j=C[1][S],k=C[2][S];C[0][S]=P+1.5747*k,C[1][S]=P-.1873*j-.4682*k,C[2][S]=P+1.8556*j}for(let t=0;t<3;++t)!function(e,t,r){for(var n,a=0;a<64;++a){t[r+a]=l.GxU.toHalfFloat((n=e[a])<=1?Math.sign(n)*Math.pow(Math.abs(n),2.2):Math.sign(n)*Math.pow(9.025013291561939,Math.abs(n)-1))}}(g[t],w[t],64*e)}let i=0;for(let n=0;n<3;++n){let a=r[e.idx[n]].type;for(let e=8*t;e<8*t+_;++e){i=b[n][e];for(let t=0;t>10,r=1023&e;return(e>>15?-1:1)*(t?31===t?r?NaN:1/0:Math.pow(2,t-15)*(1+r/1024):r/1024*6103515625e-14)}function A(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function I(e,t){return T(A(e,t))}let R=new DataView(e),O=new Uint8Array(e),D={value:0},F=function(e,t,r){let n={};if(0x1312f76!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";n.version=e.getUint8(4);let a=e.getUint8(5);n.spec={singleTile:!!(2&a),longName:!!(4&a),deepFormat:!!(8&a),multiPart:!!(16&a)},r.value=8;for(var i=!0;i;){var o=_(t,r);if(0==o)i=!1;else{var l=_(t,r),s=C(e,r),u=function(e,t,r,n,a){var i,o,l,s,u,c,f;if("string"===n||"stringvector"===n||"iccProfile"===n)return i=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+a)),r.value=r.value+a,i;if("chlist"===n)return function(e,t,r,n){for(var a=r.value,i=[];r.valueL.height?L.height-t:L.scanlineBlockSize;let r=L.size=L.height)break;for(let e=0;e{let n;switch(e){case l.OUM:n=new Uint8ClampedArray(t*r*4);break;case l.ix0:n=new Uint16Array(t*r*4);break;case l.bkx:n=new Uint32Array(t*r*4);break;case l.tJf:n=new Int8Array(t*r*4);break;case l.fBL:n=new Int16Array(t*r*4);break;case l.Yuy:n=new Int32Array(t*r*4);break;case l.RQf:n=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return n};class W{constructor(e){var t,r,a,i,o,s,u,c,f,d,p,v,h,m,g,y;this._rendererIsDisposable=!1,this._supportsReadPixels=!0,this.render=()=>{this._renderer.setRenderTarget(this._renderTarget);try{this._renderer.render(this._scene,this._camera)}catch(e){throw this._renderer.setRenderTarget(null),e}this._renderer.setRenderTarget(null)},this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace=e.colorSpace;let w={format:l.GWd,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:(null==(t=e.renderTargetOptions)?void 0:t.anisotropy)!==void 0?null==(r=e.renderTargetOptions)?void 0:r.anisotropy:1,generateMipmaps:(null==(a=e.renderTargetOptions)?void 0:a.generateMipmaps)!==void 0&&(null==(i=e.renderTargetOptions)?void 0:i.generateMipmaps),magFilter:(null==(o=e.renderTargetOptions)?void 0:o.magFilter)!==void 0?null==(s=e.renderTargetOptions)?void 0:s.magFilter:l.k6q,minFilter:(null==(u=e.renderTargetOptions)?void 0:u.minFilter)!==void 0?null==(c=e.renderTargetOptions)?void 0:c.minFilter:l.k6q,samples:(null==(f=e.renderTargetOptions)?void 0:f.samples)!==void 0?null==(d=e.renderTargetOptions)?void 0:d.samples:void 0,wrapS:(null==(p=e.renderTargetOptions)?void 0:p.wrapS)!==void 0?null==(v=e.renderTargetOptions)?void 0:v.wrapS:l.ghU,wrapT:(null==(h=e.renderTargetOptions)?void 0:h.wrapT)!==void 0?null==(m=e.renderTargetOptions)?void 0:m.wrapT:l.ghU};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=W.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new l.Z58,this._camera=new l.qUd,this._camera.position.set(0,0,10),this._camera.left=-.5,this._camera.right=.5,this._camera.top=.5,this._camera.bottom=-.5,this._camera.updateProjectionMatrix(),!((e,t,r,a)=>{if(void 0!==n)return n;let i=new l.nWS(1,1,a);t.setRenderTarget(i);let o=new l.eaF(new l.bdM,new l.V9B({color:0xffffff}));t.render(o,r),t.setRenderTarget(null);let s=q(e,i.width,i.height);return t.readRenderTargetPixels(i,0,0,i.width,i.height,s),i.dispose(),o.geometry.dispose(),o.material.dispose(),n=0!==s[0]})(this._type,this._renderer,this._camera,w)){let e;this._type===l.ix0&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?l.RQf:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${l.RQf}`),this._type=e):(this._supportsReadPixels=!1,console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"))}this._quad=new l.eaF(new l.bdM,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new l.nWS(this.width,this.height,w),this._renderTarget.texture.mapping=(null==(g=e.renderTargetOptions)?void 0:g.mapping)!==void 0?null==(y=e.renderTargetOptions)?void 0:y.mapping:l.UTZ}static instantiateRenderer(){let e=new N.WebGLRenderer;return e.setSize(128,128),e}toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=q(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new l.GYF(this.toArray(),this.width,this.height,l.GWd,this._type,(null==e?void 0:e.mapping)||l.UTZ,(null==e?void 0:e.wrapS)||l.ghU,(null==e?void 0:e.wrapT)||l.ghU,(null==e?void 0:e.magFilter)||l.k6q,(null==e?void 0:e.minFilter)||l.k6q,(null==e?void 0:e.anisotropy)||1,l.Zr2);return t.generateMipmaps=(null==e?void 0:e.generateMipmaps)!==void 0&&(null==e?void 0:e.generateMipmaps),t}disposeOnDemandRenderer(){this._renderer.setRenderTarget(null),this._rendererIsDisposable&&(this._renderer.dispose(),this._renderer.forceContextLoss())}dispose(e){this.disposeOnDemandRenderer(),e&&this.renderTarget.dispose(),this.material instanceof l.BKk&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof l.gPd&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof l.gPd&&e.dispose()}),this.material.dispose(),this._quad.geometry.dispose()}get width(){return this._width}set width(e){this._width=e,this._renderTarget.setSize(this._width,this._height)}get height(){return this._height}set height(e){this._height=e,this._renderTarget.setSize(this._width,this._height)}get renderer(){return this._renderer}get renderTarget(){return this._renderTarget}set renderTarget(e){this._renderTarget=e,this._width=e.width,this._height=e.height}get material(){return this._material}get type(){return this._type}get colorSpace(){return this._colorSpace}}let G=` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `,V=` // min half float value #define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 ) // max half float value #define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 ) uniform sampler2D sdr; uniform sampler2D gainMap; uniform vec3 gamma; uniform vec3 offsetHdr; uniform vec3 offsetSdr; uniform vec3 gainMapMin; uniform vec3 gainMapMax; uniform float weightFactor; varying vec2 vUv; void main() { vec3 rgb = texture2D( sdr, vUv ).rgb; vec3 recovery = texture2D( gainMap, vUv ).rgb; vec3 logRecovery = pow( recovery, gamma ); vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery; vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr; vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor )); gl_FragColor = vec4( clampedHdrColor , 1.0 ); } `;class $ extends l.BKk{constructor({gamma:e,offsetHdr:t,offsetSdr:r,gainMapMin:n,gainMapMax:a,maxDisplayBoost:i,hdrCapacityMin:o,hdrCapacityMax:s,sdr:u,gainMap:c}){super({name:"GainMapDecoderMaterial",vertexShader:G,fragmentShader:V,uniforms:{sdr:{value:u},gainMap:{value:c},gamma:{value:new l.Pq0(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new l.Pq0().fromArray(t)},offsetSdr:{value:new l.Pq0().fromArray(r)},gainMapMin:{value:new l.Pq0().fromArray(n)},gainMapMax:{value:new l.Pq0().fromArray(a)},weightFactor:{value:(Math.log2(i)-o)/(s-o)}},blending:l.XIg,depthTest:!1,depthWrite:!1}),this._maxDisplayBoost=i,this._hdrCapacityMin=o,this._hdrCapacityMax=s,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}get sdr(){return this.uniforms.sdr.value}set sdr(e){this.uniforms.sdr.value=e}get gainMap(){return this.uniforms.gainMap.value}set gainMap(e){this.uniforms.gainMap.value=e}get offsetHdr(){return this.uniforms.offsetHdr.value.toArray()}set offsetHdr(e){this.uniforms.offsetHdr.value.fromArray(e)}get offsetSdr(){return this.uniforms.offsetSdr.value.toArray()}set offsetSdr(e){this.uniforms.offsetSdr.value.fromArray(e)}get gainMapMin(){return this.uniforms.gainMapMin.value.toArray()}set gainMapMin(e){this.uniforms.gainMapMin.value.fromArray(e)}get gainMapMax(){return this.uniforms.gainMapMax.value.toArray()}set gainMapMax(e){this.uniforms.gainMapMax.value.fromArray(e)}get gamma(){let e=this.uniforms.gamma.value;return[1/e.x,1/e.y,1/e.z]}set gamma(e){let t=this.uniforms.gamma.value;t.x=1/e[0],t.y=1/e[1],t.z=1/e[2]}get hdrCapacityMin(){return this._hdrCapacityMin}set hdrCapacityMin(e){this._hdrCapacityMin=e,this.calculateWeight()}get hdrCapacityMax(){return this._hdrCapacityMax}set hdrCapacityMax(e){this._hdrCapacityMax=e,this.calculateWeight()}get maxDisplayBoost(){return this._maxDisplayBoost}set maxDisplayBoost(e){this._maxDisplayBoost=Math.max(1,Math.min(65504,e)),this.calculateWeight()}calculateWeight(){let e=(Math.log2(this._maxDisplayBoost)-this._hdrCapacityMin)/(this._hdrCapacityMax-this._hdrCapacityMin);this.uniforms.weightFactor.value=Math.max(0,Math.min(1,e))}}class Y extends Error{}class X extends Error{}let Z=(e,t,r)=>{let n=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(n)return n[1];let a=RegExp(`<${t}[^>]*>([\\s\\S]*?)`,"i").exec(e);if(a){let e=a[1].match(/([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):a[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)};class Q{constructor(e){this.options={debug:!!e&&void 0!==e.debug&&e.debug,extractFII:!e||void 0===e.extractFII||e.extractFII,extractNonFII:!e||void 0===e.extractNonFII||e.extractNonFII}}extract(e){return new Promise((t,r)=>{let n,a=this.options.debug,i=new DataView(e.buffer);if(65496!==i.getUint16(0))return void r(Error("Not a valid jpeg"));let o=i.byteLength,l=2,s=0;for(;l250)return void r(Error(`Found no marker after ${s} loops 😵`));if(255!==i.getUint8(l))return void r(Error(`Not a valid marker at offset 0x${l.toString(16)}, found: 0x${i.getUint8(l).toString(16)}`));if(n=i.getUint8(l+1),a&&console.log(`Marker: ${n.toString(16)}`),226===n){a&&console.log("Found APP2 marker (0xffe2)");let e=l+4;if(0x4d504600===i.getUint32(e)){let n,a=e+4;if(18761===i.getUint16(a))n=!1;else{if(19789!==i.getUint16(a))return void r(Error("No valid endianness marker found in TIFF header"));n=!0}if(42!==i.getUint16(a+2,!n))return void r(Error("Not valid TIFF data! (no 0x002A marker)"));let o=i.getUint32(a+4,!n);if(o<8)return void r(Error("Not valid TIFF data! (First offset less than 8)"));let l=a+o,s=i.getUint16(l,!n),u=l+2,c=0;for(let e=u;e{let t=(e=>{let t,r=(t="undefined"!=typeof TextDecoder?new TextDecoder().decode(e):e.toString()).indexOf("",r),n=t.slice(r,e+10);try{let e=Z(n,"hdrgm:GainMapMin","0"),t=Z(n,"hdrgm:GainMapMax"),r=Z(n,"hdrgm:Gamma","1"),a=Z(n,"hdrgm:OffsetSDR","0.015625"),i=Z(n,"hdrgm:OffsetHDR","0.015625"),o=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(n),l=o?o[1]:"0",s=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(n);if(!s)throw Error("Incomplete gainmap metadata");let u=s[1];return{gainMapMin:Array.isArray(e)?e.map(e=>parseFloat(e)):[parseFloat(e),parseFloat(e),parseFloat(e)],gainMapMax:Array.isArray(t)?t.map(e=>parseFloat(e)):[parseFloat(t),parseFloat(t),parseFloat(t)],gamma:Array.isArray(r)?r.map(e=>parseFloat(e)):[parseFloat(r),parseFloat(r),parseFloat(r)],offsetSdr:Array.isArray(a)?a.map(e=>parseFloat(e)):[parseFloat(a),parseFloat(a),parseFloat(a)],offsetHdr:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],hdrCapacityMin:parseFloat(l),hdrCapacityMax:parseFloat(u)}}catch(e){}r=t.indexOf("new Promise((t,r)=>{let n=document.createElement("img");n.onload=()=>{t(n)},n.onerror=e=>{r(e)},n.src=URL.createObjectURL(e)});class ee extends l.aHM{constructor(e,t){super(t),e&&(this._renderer=e),this._internalLoadingManager=new l.KPJ}setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: An existing WebGL Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.");let e=new $({gainMapMax:[1,1,1],gainMapMin:[0,0,0],gamma:[1,1,1],offsetHdr:[1,1,1],offsetSdr:[1,1,1],hdrCapacityMax:1,hdrCapacityMin:0,maxDisplayBoost:1,gainMap:new l.gPd,sdr:new l.gPd});return new W({width:16,height:16,type:l.ix0,colorSpace:l.Zr2,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async render(e,t,r,n){let a,i,o=n?new Blob([n],{type:"image/jpeg"}):void 0,s=new Blob([r],{type:"image/jpeg"}),u=!1;if("undefined"==typeof createImageBitmap){let e=await Promise.all([o?J(o):Promise.resolve(void 0),J(s)]);i=e[0],a=e[1],u=!0}else{let e=await Promise.all([o?createImageBitmap(o,{imageOrientation:"flipY"}):Promise.resolve(void 0),createImageBitmap(s,{imageOrientation:"flipY"})]);i=e[0],a=e[1]}let c=new l.gPd(i||new ImageData(2,2),l.UTZ,l.ghU,l.ghU,l.k6q,l.NZq,l.GWd,l.OUM,1,l.Zr2);c.flipY=u,c.needsUpdate=!0;let f=new l.gPd(a,l.UTZ,l.ghU,l.ghU,l.k6q,l.NZq,l.GWd,l.OUM,1,l.er$);f.flipY=u,f.needsUpdate=!0,e.width=a.width,e.height=a.height,e.material.gainMap=c,e.material.sdr=f,e.material.gainMapMin=t.gainMapMin,e.material.gainMapMax=t.gainMapMax,e.material.offsetHdr=t.offsetHdr,e.material.offsetSdr=t.offsetSdr,e.material.gamma=t.gamma,e.material.hdrCapacityMin=t.hdrCapacityMin,e.material.hdrCapacityMax=t.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,t.hdrCapacityMax),e.material.needsUpdate=!0,e.render()}}class et extends ee{load([e,t,r],n,a,i){let o,s,u,c=this.prepareQuadRenderer(),f=async()=>{if(o&&s&&u){try{await this.render(c,u,o,s)}catch(n){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof i&&i(n),c.disposeOnDemandRenderer();return}"function"==typeof n&&n(c),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),c.disposeOnDemandRenderer()}},d=!0,p=0,v=0,h=!0,m=0,g=0,y=!0,w=0,b=0,x=()=>{"function"==typeof a&&a(new ProgressEvent("progress",{lengthComputable:d&&h&&y,loaded:v+g+b,total:p+m+w}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let M=new l.Y9S(this._internalLoadingManager);M.setResponseType("arraybuffer"),M.setRequestHeader(this.requestHeader),M.setPath(this.path),M.setWithCredentials(this.withCredentials),M.load(e,async e=>{if("string"==typeof e)throw Error("Invalid sdr buffer");o=e,await f()},e=>{d=e.lengthComputable,v=e.loaded,p=e.total,x()},t=>{this.manager.itemError(e),"function"==typeof i&&i(t)});let _=new l.Y9S(this._internalLoadingManager);_.setResponseType("arraybuffer"),_.setRequestHeader(this.requestHeader),_.setPath(this.path),_.setWithCredentials(this.withCredentials),_.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");s=e,await f()},e=>{h=e.lengthComputable,g=e.loaded,m=e.total,x()},e=>{this.manager.itemError(t),"function"==typeof i&&i(e)});let E=new l.Y9S(this._internalLoadingManager);return E.setRequestHeader(this.requestHeader),E.setPath(this.path),E.setWithCredentials(this.withCredentials),E.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");u=JSON.parse(e),await f()},e=>{y=e.lengthComputable,b=e.loaded,w=e.total,x()},e=>{this.manager.itemError(r),"function"==typeof i&&i(e)}),c}}class er extends ee{load(e,t,r,n){let a=this.prepareQuadRenderer(),i=new l.Y9S(this._internalLoadingManager);return i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setPath(this.path),i.setWithCredentials(this.withCredentials),this.manager.itemStart(e),i.load(e,async r=>{let i,o,l;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let s=new Uint8Array(r);try{let e=await K(s);i=e.sdr,o=e.gainMap,l=e.metadata}catch(t){if(t instanceof X||t instanceof Y)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),l={gainMapMin:[0,0,0],gainMapMax:[1,1,1],gamma:[1,1,1],hdrCapacityMin:0,hdrCapacityMax:1,offsetHdr:[0,0,0],offsetSdr:[0,0,0]},i=s;else throw t}try{await this.render(a,l,i,o)}catch(t){this.manager.itemError(e),"function"==typeof n&&n(t),a.disposeOnDemandRenderer();return}"function"==typeof t&&t(a),this.manager.itemEnd(e),a.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof n&&n(t)}),a}}let en={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"},ea="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",ei=e=>Array.isArray(e),eo=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function el({files:e=eo,path:t="",preset:r,colorSpace:n,extensions:a}={}){r&&(ec(r),e=en[r],t=ea);let s=ei(e),{extension:u,isCubemap:c}=ef(e),f=ed(u);if(!f)throw Error("useEnvironment: Unrecognized file extension: "+e);let d=(0,o.C)(e=>e.gl);(0,i.useLayoutEffect)(()=>{("webp"===u||"jpg"===u||"jpeg"===u)&&d.domElement.addEventListener("webglcontextlost",function(){o.G.clear(f,s?[e]:e)},{once:!0})},[e,d.domElement]);let p=(0,o.G)(f,s?[e]:e,e=>{("webp"===u||"jpg"===u||"jpeg"===u)&&e.setRenderer(d),null==e.setPath||e.setPath(t),a&&a(e)}),v=s?p[0]:p;if("jpg"===u||"jpeg"===u||"webp"===u){var h;v=null==(h=v.renderTarget)?void 0:h.texture}return v.mapping=c?l.hy7:l.wfO,v.colorSpace=null!=n?n:c?"srgb":"srgb-linear",v}let es={files:eo,path:"",preset:void 0,extensions:void 0};el.preload=e=>{let t={...es,...e},{files:r,path:n=""}=t,{preset:a,extensions:i}=t;a&&(ec(a),r=en[a],n=ea);let{extension:l}=ef(r);if("webp"===l||"jpg"===l||"jpeg"===l)throw Error("useEnvironment: Preloading gainmaps is not supported");let s=ed(l);if(!s)throw Error("useEnvironment: Unrecognized file extension: "+r);o.G.preload(s,ei(r)?[r]:r,e=>{null==e.setPath||e.setPath(n),i&&i(e)})};let eu={files:eo,preset:void 0};function ec(e){if(!(e in en))throw Error("Preset must be one of: "+Object.keys(en).join(", "))}function ef(e){var t;let r=ei(e)&&6===e.length,n=ei(e)&&3===e.length&&e.some(e=>e.endsWith("json")),a=ei(e)?e[0]:e;return{extension:r?"cube":n?"webp":a.startsWith("data:application/exr")?"exr":a.startsWith("data:application/hdr")?"hdr":a.startsWith("data:image/jpeg")?"jpg":null==(t=a.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:n}}function ed(e){return"cube"===e?l.ScU:"hdr"===e?c:"exr"===e?H:"jpg"===e||"jpeg"===e?er:"webp"===e?et:null}function ep(e,t,r,n,a={}){var i,l,s,u;let c,f;a={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...a};let d=(f=c=t||r).current&&f.current.isScene?c.current:c,p=d.background,v=d.environment,h={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!=(i=null==(l=d.backgroundRotation)||null==l.clone?void 0:l.clone())?i:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!=(s=null==(u=d.environmentRotation)||null==u.clone?void 0:u.clone())?s:[0,0,0]};return"only"!==e&&(d.environment=n),e&&(d.background=n),(0,o.s)(d,a),()=>{"only"!==e&&(d.environment=v),e&&(d.background=p),(0,o.s)(d,h)}}function ev({scene:e,background:t=!1,map:r,...n}){let a=(0,o.C)(e=>e.scene);return i.useLayoutEffect(()=>{if(r)return ep(t,e,a,r,n)}),null}function eh({background:e=!1,scene:t,blur:r,backgroundBlurriness:n,backgroundIntensity:a,backgroundRotation:l,environmentIntensity:s,environmentRotation:u,...c}){let f=el(c),d=(0,o.C)(e=>e.scene);return i.useLayoutEffect(()=>ep(e,t,d,f,{backgroundBlurriness:null!=r?r:n,backgroundIntensity:a,backgroundRotation:l,environmentIntensity:s,environmentRotation:u})),i.useEffect(()=>()=>{f.dispose()},[f]),null}function em({children:e,near:t=.1,far:r=1e3,resolution:n=256,frames:a=1,map:s,background:u=!1,blur:c,backgroundBlurriness:f,backgroundIntensity:d,backgroundRotation:p,environmentIntensity:v,environmentRotation:h,scene:m,files:g,path:y,preset:w,extensions:b}){let x=(0,o.C)(e=>e.gl),M=(0,o.C)(e=>e.scene),_=i.useRef(null),[E]=i.useState(()=>new l.Z58),C=i.useMemo(()=>{let e=new l.o6l(n);return e.texture.type=l.ix0,e},[n]);i.useEffect(()=>()=>{C.dispose()},[C]),i.useLayoutEffect(()=>{if(1===a){let e=x.autoClear;x.autoClear=!0,_.current.update(x,E),x.autoClear=e}return ep(u,m,M,C.texture,{backgroundBlurriness:null!=c?c:f,backgroundIntensity:d,backgroundRotation:p,environmentIntensity:v,environmentRotation:h})},[e,E,C.texture,m,M,u,a,x]);let S=1;return(0,o.D)(()=>{if(a===1/0||S(0,o.e)({GroundProjectedEnvImpl:u}),[]),i.useEffect(()=>()=>{s.dispose()},[s]);let f=i.useMemo(()=>[c],[c]),d=null==(t=e.ground)?void 0:t.height,p=null==(r=e.ground)?void 0:r.radius,v=null!=(n=null==(l=e.ground)?void 0:l.scale)?n:1e3;return i.createElement(i.Fragment,null,i.createElement(ev,(0,a.A)({},e,{map:c})),i.createElement("groundProjectedEnvImpl",{args:f,scale:v,height:d,radius:p}))}function ey(e){return e.ground?i.createElement(eg,e):e.map?i.createElement(ev,e):e.children?i.createElement(em,e):i.createElement(eh,e)}el.clear=e=>{let t={...eu,...e},{files:r}=t,{preset:n}=t;n&&(ec(n),r=en[n]);let{extension:a}=ef(r),i=ed(a);if(!i)throw Error("useEnvironment: Unrecognized file extension: "+r);o.G.clear(i,ei(r)?[r]:r)}},5302:(e,t,r)=>{r.d(t,{Hl:()=>f});var n=r(2648),a=r(4232),i=r(4796);function o(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let l=["x","y","top","bottom","left","right","width","height"];var s=r(1831),u=r(7876);function c({ref:e,children:t,fallback:r,resize:s,style:c,gl:f,events:d=n.f,eventSource:p,eventPrefix:v,shadows:h,linear:m,flat:g,legacy:y,orthographic:w,frameloop:b,dpr:x,performance:M,raycaster:_,camera:E,scene:C,onPointerMissed:S,onCreated:P,...j}){a.useMemo(()=>(0,n.e)(i),[]);let k=(0,n.u)(),[U,T]=function({debounce:e,scroll:t,polyfill:r,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){var i,s,u;let c=r||("undefined"==typeof window?class{}:window.ResizeObserver);if(!c)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[f,d]=(0,a.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),p=(0,a.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:f,orientationHandler:null}),v=e?"number"==typeof e?e:e.scroll:null,h=e?"number"==typeof e?e:e.resize:null,m=(0,a.useRef)(!1);(0,a.useEffect)(()=>(m.current=!0,()=>void(m.current=!1)));let[g,y,w]=(0,a.useMemo)(()=>{let e=()=>{let e,t;if(!p.current.element)return;let{left:r,top:a,width:i,height:o,bottom:s,right:u,x:c,y:f}=p.current.element.getBoundingClientRect(),v={left:r,top:a,width:i,height:o,bottom:s,right:u,x:c,y:f};p.current.element instanceof HTMLElement&&n&&(v.height=p.current.element.offsetHeight,v.width=p.current.element.offsetWidth),Object.freeze(v),m.current&&(e=p.current.lastBounds,t=v,!l.every(r=>e[r]===t[r]))&&d(p.current.lastBounds=v)};return[e,h?o(e,h):e,v?o(e,v):e]},[d,n,v,h]);function b(){p.current.scrollContainers&&(p.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",w,!0)),p.current.scrollContainers=null),p.current.resizeObserver&&(p.current.resizeObserver.disconnect(),p.current.resizeObserver=null),p.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",p.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",p.current.orientationHandler))}function x(){p.current.element&&(p.current.resizeObserver=new c(w),p.current.resizeObserver.observe(p.current.element),t&&p.current.scrollContainers&&p.current.scrollContainers.forEach(e=>e.addEventListener("scroll",w,{capture:!0,passive:!0})),p.current.orientationHandler=()=>{w()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",p.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",p.current.orientationHandler))}return i=w,s=!!t,(0,a.useEffect)(()=>{if(s)return window.addEventListener("scroll",i,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",i,!0)},[i,s]),u=y,(0,a.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,a.useEffect)(()=>{b(),x()},[t,w,y]),(0,a.useEffect)(()=>b,[]),[e=>{e&&e!==p.current.element&&(b(),p.current.element=e,p.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:a,overflowY:i}=window.getComputedStyle(t);return[n,a,i].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),x())},f,g]}({scroll:!0,debounce:{scroll:50,resize:0},...s}),A=a.useRef(null),I=a.useRef(null);a.useImperativeHandle(e,()=>A.current);let R=(0,n.a)(S),[O,D]=a.useState(!1),[F,z]=a.useState(!1);if(O)throw O;if(F)throw F;let L=a.useRef(null);(0,n.b)(()=>{let e=A.current;T.width>0&&T.height>0&&e&&(L.current||(L.current=(0,n.c)(e)),async function(){await L.current.configure({gl:f,scene:C,events:d,shadows:h,linear:m,flat:g,legacy:y,orthographic:w,frameloop:b,dpr:x,performance:M,raycaster:_,camera:E,size:T,onPointerMissed:(...e)=>null==R.current?void 0:R.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(p?(0,n.i)(p)?p.current:p:I.current),v&&e.setEvents({compute:(e,t)=>{let r=e[v+"X"],n=e[v+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==P||P(e)}}),L.current.render((0,u.jsx)(k,{children:(0,u.jsx)(n.E,{set:z,children:(0,u.jsx)(a.Suspense,{fallback:(0,u.jsx)(n.B,{set:D}),children:null!=t?t:null})})}))}())}),a.useEffect(()=>{let e=A.current;if(e)return()=>(0,n.d)(e)},[]);let B=p?"none":"auto";return(0,u.jsx)("div",{ref:I,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:B,...c},...j,children:(0,u.jsx)("div",{ref:U,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:A,style:{display:"block"},children:r})})})}function f(e){return(0,u.jsx)(s.Af,{children:(0,u.jsx)(c,{...e})})}r(7302),r(667),r(1923)},5712:(e,t,r)=>{e.exports=r(8214)},6100:(e,t,r)=>{r.d(t,{C:()=>a});var n=r(1898);function a(e,t){return(0,n.a)(e,null==t?void 0:t.in).getFullYear()}},7302:(e,t,r)=>{e.exports=r(3307)},7816:(e,t)=>{function r(e,t){var r=e.length;for(e.push(t);0>>1,a=e[n];if(0>>1;ni(s,r))ui(c,s)?(e[n]=c,e[u]=r,n=u):(e[n]=s,e[l]=r,n=l);else if(ui(c,r))e[n]=c,e[u]=r,n=u;else break}}return t}function i(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,l=performance;t.unstable_now=function(){return l.now()}}else{var s=Date,u=s.now();t.unstable_now=function(){return s.now()-u}}var c=[],f=[],d=1,p=null,v=3,h=!1,m=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,w="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function x(e){for(var t=n(f);null!==t;){if(null===t.callback)a(f);else if(t.startTime<=e)a(f),t.sortIndex=t.expirationTime,r(c,t);else break;t=n(f)}}function M(e){if(g=!1,x(e),!m)if(null!==n(c))m=!0,T();else{var t=n(f);null!==t&&A(M,t.startTime-e)}}var _=!1,E=-1,C=5,S=-1;function P(){return!(t.unstable_now()-Se&&P());){var l=p.callback;if("function"==typeof l){p.callback=null,v=p.priorityLevel;var s=l(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof s){p.callback=s,x(e),r=!0;break t}p===n(c)&&a(c),x(e)}else a(c);p=n(c)}if(null!==p)r=!0;else{var u=n(f);null!==u&&A(M,u.startTime-e),r=!1}}break e}finally{p=null,v=i,h=!1}}}finally{r?o():_=!1}}}if("function"==typeof b)o=function(){b(j)};else if("undefined"!=typeof MessageChannel){var k=new MessageChannel,U=k.port2;k.port1.onmessage=j,o=function(){U.postMessage(null)}}else o=function(){y(j,0)};function T(){_||(_=!0,o())}function A(e,r){E=y(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){m||h||(m=!0,T())},t.unstable_forceFrameRate=function(e){0>e||125o?(e.sortIndex=i,r(f,e),null===n(c)&&e===n(f)&&(g?(w(E),E=-1):g=!0,A(M,i-o))):(e.sortIndex=l,r(c,e),m||h||(m=!0,T())),e},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(e){var t=v;return function(){var r=v;v=t;try{return e.apply(this,arguments)}finally{v=r}}}},8214:(e,t,r)=>{var n=r(4232),a=r(8806),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=a.useSyncExternalStore,l=n.useRef,s=n.useEffect,u=n.useMemo,c=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,n,a){var f=l(null);if(null===f.current){var d={hasValue:!1,value:null};f.current=d}else d=f.current;var p=o(e,(f=u(function(){function e(e){if(!s){if(s=!0,o=e,e=n(e),void 0!==a&&d.hasValue){var t=d.value;if(a(t,e))return l=t}return l=e}if(t=l,i(o,e))return t;var r=n(e);return void 0!==a&&a(t,r)?(o=e,t):(o=e,l=r)}var o,l,s=!1,u=void 0===r?null:r;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,r,n,a]))[0],f[1]);return s(function(){d.hasValue=!0,d.value=p},[p]),c(p),p}},8519:(e,t,r)=>{r.d(t,{I:()=>s});var n=r(4501),a=r(4232),i=r(6691),o=r(2648);class l extends i.uSd{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._distort={value:.4},this._radius={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.radius=this._radius,e.uniforms.distort=this._distort,e.vertexShader=` uniform float time; uniform float radius; uniform float distort; #define GLSLIFY 1 vec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));} ${e.vertexShader} `,e.vertexShader=e.vertexShader.replace("#include ",` float updateTime = time / 50.0; float noise = snoise(vec3(position / 2.0 + updateTime * 5.0)); vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius)); `)}get time(){return this._time.value}set time(e){this._time.value=e}get distort(){return this._distort.value}set distort(e){this._distort.value=e}get radius(){return this._radius.value}set radius(e){this._radius.value=e}}let s=a.forwardRef(({speed:e=1,...t},r)=>{let[i]=a.useState(()=>new l);return(0,o.D)(t=>i&&(i.time=t.clock.elapsedTime*e)),a.createElement("primitive",(0,n.A)({object:i,ref:r,attach:"material"},t))})},8575:(e,t)=>{function r(e,t){var r=e.length;for(e.push(t);0>>1,a=e[n];if(0>>1;ni(s,r))ui(c,s)?(e[n]=c,e[u]=r,n=u):(e[n]=s,e[l]=r,n=l);else if(ui(c,r))e[n]=c,e[u]=r,n=u;else break}}return t}function i(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,l=performance;t.unstable_now=function(){return l.now()}}else{var s=Date,u=s.now();t.unstable_now=function(){return s.now()-u}}var c=[],f=[],d=1,p=null,v=3,h=!1,m=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,w="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function x(e){for(var t=n(f);null!==t;){if(null===t.callback)a(f);else if(t.startTime<=e)a(f),t.sortIndex=t.expirationTime,r(c,t);else break;t=n(f)}}function M(e){if(g=!1,x(e),!m)if(null!==n(c))m=!0,T();else{var t=n(f);null!==t&&A(M,t.startTime-e)}}var _=!1,E=-1,C=5,S=-1;function P(){return!(t.unstable_now()-Se&&P());){var l=p.callback;if("function"==typeof l){p.callback=null,v=p.priorityLevel;var s=l(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof s){p.callback=s,x(e),r=!0;break t}p===n(c)&&a(c),x(e)}else a(c);p=n(c)}if(null!==p)r=!0;else{var u=n(f);null!==u&&A(M,u.startTime-e),r=!1}}break e}finally{p=null,v=i,h=!1}}}finally{r?o():_=!1}}}if("function"==typeof b)o=function(){b(j)};else if("undefined"!=typeof MessageChannel){var k=new MessageChannel,U=k.port2;k.port1.onmessage=j,o=function(){U.postMessage(null)}}else o=function(){y(j,0)};function T(){_||(_=!0,o())}function A(e,r){E=y(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){m||h||(m=!0,T())},t.unstable_forceFrameRate=function(e){0>e||125o?(e.sortIndex=i,r(f,e),null===n(c)&&e===n(f)&&(g?(w(E),E=-1):g=!0,A(M,i-o))):(e.sortIndex=l,r(c,e),m||h||(m=!0,T())),e},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(e){var t=v;return function(){var r=v;v=t;try{return e.apply(this,arguments)}finally{v=r}}}}}]);