ocearo-ui 0.1.18 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/404.html +1 -1
- package/README.fr.md +11 -13
- package/README.md +11 -13
- package/__next.__PAGE__.txt +4 -4
- package/__next._full.txt +12 -12
- package/__next._head.txt +4 -4
- package/__next._index.txt +4 -4
- package/__next._tree.txt +2 -2
- package/_next/static/chunks/009rlietvsaq2.js +1 -0
- package/_next/static/chunks/070stlm97b9a2.js +1 -0
- package/_next/static/chunks/08gn5_gd6amkq.js +1 -0
- package/_next/static/chunks/{1a24eba0d892e1dc.js → 0jzbiie0nzar2.js} +1 -1
- package/_next/static/chunks/0ri_um14-5x7u.js +1 -0
- package/_next/static/chunks/0utifqhyv2cuc.js +1 -0
- package/_next/static/chunks/0uvr7xkt_5uno.js +1 -0
- package/_next/static/chunks/0wzr1__so6xme.js +1 -0
- package/_next/static/chunks/0zjxnzbxh76mt.js +1 -0
- package/_next/static/chunks/11ln9lzzbo35q.js +1 -0
- package/_next/static/chunks/1bz0tcmhjmjgh.js +1 -0
- package/_next/static/chunks/1gizigk3w6q7j.js +31 -0
- package/_next/static/chunks/1porlo35ga4zu.js +1 -0
- package/_next/static/chunks/1ptwltjb3h6jf.js +4 -0
- package/_next/static/chunks/{c2ca71308a46ad5c.js → 1sq_733weprvs.js} +1 -1
- package/_next/static/chunks/1w1ua0-p5lk1e.js +38 -0
- package/_next/static/chunks/1wv5e5qomv-7g.css +3 -0
- package/_next/static/chunks/27hn45pv56pv7.js +393 -0
- package/_next/static/chunks/28y-j215vt42m.js +1 -0
- package/_next/static/chunks/29-ag86gvlc40.js +9 -0
- package/_next/static/chunks/2a0yjir_3mk1m.js +1 -0
- package/_next/static/chunks/2atijj_pkc4uc.js +2 -0
- package/_next/static/chunks/2baz6j1q913qw.js +1 -0
- package/_next/static/chunks/2ccpehidlaq88.js +1 -0
- package/_next/static/chunks/2lez3uww9j4t0.js +135 -0
- package/_next/static/chunks/2lvvt2f1l5sfu.js +1 -0
- package/_next/static/chunks/2nd5amcst4lhp.js +1 -0
- package/_next/static/chunks/2nxsyowmuwpjy.js +1 -0
- package/_next/static/chunks/2pwmb4pkqygy_.js +1 -0
- package/_next/static/chunks/2uao1hfsz-oy8.js +1 -0
- package/_next/static/chunks/2yghvponatk1x.js +135 -0
- package/_next/static/chunks/31i14-jemhnic.js +863 -0
- package/_next/static/chunks/{ef44382534be9f84.js → 32cbrrsp-x35l.js} +1 -1
- package/_next/static/chunks/36ra6xjie0dsv.js +9 -0
- package/_next/static/chunks/3dt63tw_9r0jt.js +38 -0
- package/_next/static/chunks/3jh1u-s3k0bkk.js +1 -0
- package/_next/static/chunks/3jupxlga7r_do.js +1 -0
- package/_next/static/chunks/{607b77f84fd065f0.js → 3m57lnggu30tr.js} +2 -2
- package/_next/static/chunks/3rhgquok36e79.js +1 -0
- package/_next/static/chunks/3sgrkzk20mxs6.js +54 -0
- package/_next/static/chunks/{149eaabf92bb073c.js → 42dfiu6iby3fq.js} +1 -1
- package/_next/static/chunks/43ps2cu5ahf8n.js +3 -0
- package/_next/static/chunks/turbopack-0pirmko-w-775.js +1 -0
- package/_next/static/hlKDicTyNGfd7dmHqo5m5/_clientMiddlewareManifest.js +1 -0
- package/_not-found/__next._full.txt +13 -11
- package/_not-found/__next._head.txt +4 -4
- package/_not-found/__next._index.txt +4 -4
- package/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/_not-found/__next._not-found.txt +4 -3
- package/_not-found/__next._tree.txt +2 -2
- package/_not-found.html +1 -1
- package/_not-found.txt +13 -11
- package/ais-preview/index.html +263 -0
- package/ais-preview/meshy/README.md +23 -0
- package/ais-preview/vessels.js +316 -0
- package/ais-preview/web/ATTRIBUTION.md +25 -0
- package/ais-preview/web/ais-30.glb +0 -0
- package/ais-preview/web/ais-31.glb +0 -0
- package/ais-preview/web/ais-35.glb +0 -0
- package/ais-preview/web/ais-36.glb +0 -0
- package/ais-preview/web/ais-37.glb +0 -0
- package/ais-preview/web/ais-40.glb +0 -0
- package/ais-preview/web/ais-50.glb +0 -0
- package/ais-preview/web/ais-60.glb +0 -0
- package/ais-preview/web/ais-70.glb +0 -0
- package/ais-preview/web/ais-80.glb +0 -0
- package/boats/ais/ais-30.glb +0 -0
- package/boats/ais/ais-31.glb +0 -0
- package/boats/ais/ais-35.glb +0 -0
- package/boats/ais/ais-36.glb +0 -0
- package/boats/ais/ais-37.glb +0 -0
- package/boats/ais/ais-40.glb +0 -0
- package/boats/ais/ais-50.glb +0 -0
- package/boats/ais/ais-60.glb +0 -0
- package/boats/ais/ais-70.glb +0 -0
- package/boats/ais/ais-80.glb +0 -0
- package/index.html +1 -1
- package/index.txt +12 -12
- package/package.json +18 -19
- package/settings/__next._full.txt +15 -13
- package/settings/__next._head.txt +4 -4
- package/settings/__next._index.txt +4 -4
- package/settings/__next._tree.txt +2 -2
- package/settings/__next.settings.__PAGE__.txt +4 -4
- package/settings/__next.settings.txt +4 -3
- package/settings.html +1 -1
- package/settings.txt +15 -13
- package/_next/static/chunks/045c83caa4d15373.js +0 -1
- package/_next/static/chunks/04cc0e5e9b2549b5.js +0 -2
- package/_next/static/chunks/05498d2aba8ad072.js +0 -1
- package/_next/static/chunks/056bb58d7d0223f4.js +0 -1
- package/_next/static/chunks/06e0cd4a5af05adb.js +0 -1
- package/_next/static/chunks/0df9a48159a5de95.js +0 -135
- package/_next/static/chunks/19d7af5c164315cb.js +0 -1
- package/_next/static/chunks/2296899bc46a0855.js +0 -1
- package/_next/static/chunks/2474c03b842c10ab.js +0 -38
- package/_next/static/chunks/290728133a3e7513.js +0 -9
- package/_next/static/chunks/33a3c72f455c2711.js +0 -1
- package/_next/static/chunks/3abe6b32c7676e49.js +0 -1
- package/_next/static/chunks/3b9428693f2cc0d6.js +0 -1
- package/_next/static/chunks/4573d1a032e56240.js +0 -1
- package/_next/static/chunks/46da3d80b0234973.js +0 -1
- package/_next/static/chunks/4974092397cafa41.js +0 -1
- package/_next/static/chunks/4a440e0aa6a0e7f7.js +0 -135
- package/_next/static/chunks/55be29098903fc19.js +0 -1
- package/_next/static/chunks/611f819ef2b8cd4e.js +0 -38
- package/_next/static/chunks/727710e55f003daf.js +0 -36
- package/_next/static/chunks/72c822cfe5b6f4f2.js +0 -4
- package/_next/static/chunks/72d89c358c0d5483.js +0 -1
- package/_next/static/chunks/7c60d9d425c20d52.js +0 -1
- package/_next/static/chunks/7d74814a0cc0f1a8.js +0 -1
- package/_next/static/chunks/8610c545018747f6.css +0 -3
- package/_next/static/chunks/8bf2a6eefe03fbc9.js +0 -1
- package/_next/static/chunks/a2dfb6fc5208ab9b.js +0 -1
- package/_next/static/chunks/a5243176ef1c1147.js +0 -3
- package/_next/static/chunks/a59b67714973a59e.js +0 -1
- package/_next/static/chunks/a6dad97d9634a72d.js.map +0 -1
- package/_next/static/chunks/b08b2ebeb951051c.js +0 -1
- package/_next/static/chunks/b9d9a7e1cf2f6019.js +0 -1
- package/_next/static/chunks/b9fde64db49c8fdf.js +0 -1
- package/_next/static/chunks/ba6e6b346e330c1c.js +0 -1
- package/_next/static/chunks/c4793aebac6a4506.js +0 -54
- package/_next/static/chunks/c5ca29b672fb8724.js +0 -1
- package/_next/static/chunks/ca5d1b461892da4b.js +0 -1
- package/_next/static/chunks/dc7a868e9a2740f1.js +0 -9
- package/_next/static/chunks/e63b192414a38d4f.js +0 -783
- package/_next/static/chunks/eae6a84b628658b8.js +0 -362
- package/_next/static/chunks/ed1a1adcf94d3203.js +0 -1
- package/_next/static/chunks/f0df051aa5b9aee8.js +0 -1
- package/_next/static/chunks/fe9ff98ffedd5a18.js +0 -1
- package/_next/static/chunks/ff5e78db2e2b69dd.js +0 -1
- package/_next/static/chunks/turbopack-eb3e32db84948efc.js +0 -4
- package/_next/static/fEaz-HJDfJbXQ22pI4nGl/_clientMiddlewareManifest.json +0 -1
- /package/_next/static/chunks/{c8017b80fde2edc8.js → 0abo2oxxw3hpi.js} +0 -0
- /package/_next/static/chunks/{a6dad97d9634a72d.js → 0cz1d0mv5g_q7.js} +0 -0
- /package/_next/static/chunks/{4701c1fd00af0aba.js → 0l9s4rhr00adq.js} +0 -0
- /package/_next/static/chunks/{ff1a16fafef87110.js → 1d4h-sglyo8ft.js} +0 -0
- /package/_next/static/chunks/{026b02dd01b65e37.js → 2rsdqsatgq9ta.js} +0 -0
- /package/_next/static/chunks/{9395de7f841f8cc6.js → 2urimbxg5bqv3.js} +0 -0
- /package/_next/static/chunks/{fba1dfce801bc8b9.js → 3iuz3f0429awx.js} +0 -0
- /package/_next/static/{fEaz-HJDfJbXQ22pI4nGl → hlKDicTyNGfd7dmHqo5m5}/_buildManifest.js +0 -0
- /package/_next/static/{fEaz-HJDfJbXQ22pI4nGl → hlKDicTyNGfd7dmHqo5m5}/_ssgManifest.js +0 -0
- /package/_next/static/media/{GeistMonoVF-s.2cee7d16.woff → GeistMonoVF-s.1lv5tp2fpjxdz.woff} +0 -0
- /package/_next/static/media/{GeistVF-s.4c3c0b96.woff → GeistVF-s.0e569l9b0bre8.woff} +0 -0
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71753,e=>{"use strict";var t=e.i(40859);e.s(["useFrame",()=>t.D])},30297,e=>{"use strict";var t=e.i(31067),r=e.i(15080),a=e.i(71753),n=e.i(71645),i=e.i(90072),o=Object.defineProperty;class s{constructor(){((e,t,r)=>{let a;return(a="symbol"!=typeof t?t+"":t)in e?o(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r})(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,a=r.length;t<a;t++)r[t].call(this,e);e.target=null}}}var l=Object.defineProperty,h=(e,t,r)=>{let a;return(a="symbol"!=typeof t?t+"":t)in e?l(e,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[a]=r,r};let u=new i.Ray,c=new i.Plane,p=Math.cos(Math.PI/180*70),d=(e,t)=>(e%t+t)%t;class f extends s{constructor(e,t){super(),h(this,"object"),h(this,"domElement"),h(this,"enabled",!0),h(this,"target",new i.Vector3),h(this,"minDistance",0),h(this,"maxDistance",1/0),h(this,"minZoom",0),h(this,"maxZoom",1/0),h(this,"minPolarAngle",0),h(this,"maxPolarAngle",Math.PI),h(this,"minAzimuthAngle",-1/0),h(this,"maxAzimuthAngle",1/0),h(this,"enableDamping",!1),h(this,"dampingFactor",.05),h(this,"enableZoom",!0),h(this,"zoomSpeed",1),h(this,"enableRotate",!0),h(this,"rotateSpeed",1),h(this,"enablePan",!0),h(this,"panSpeed",1),h(this,"screenSpacePanning",!0),h(this,"keyPanSpeed",7),h(this,"zoomToCursor",!1),h(this,"autoRotate",!1),h(this,"autoRotateSpeed",2),h(this,"reverseOrbit",!1),h(this,"reverseHorizontalOrbit",!1),h(this,"reverseVerticalOrbit",!1),h(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),h(this,"mouseButtons",{LEFT:i.MOUSE.ROTATE,MIDDLE:i.MOUSE.DOLLY,RIGHT:i.MOUSE.PAN}),h(this,"touches",{ONE:i.TOUCH.ROTATE,TWO:i.TOUCH.DOLLY_PAN}),h(this,"target0"),h(this,"position0"),h(this,"zoom0"),h(this,"_domElementKeyEvents",null),h(this,"getPolarAngle"),h(this,"getAzimuthalAngle"),h(this,"setPolarAngle"),h(this,"setAzimuthalAngle"),h(this,"getDistance"),h(this,"getZoomScale"),h(this,"listenToKeyEvents"),h(this,"stopListenToKeyEvents"),h(this,"saveState"),h(this,"reset"),h(this,"update"),h(this,"connect"),h(this,"dispose"),h(this,"dollyIn"),h(this,"dollyOut"),h(this,"getScale"),h(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>m.phi,this.getAzimuthalAngle=()=>m.theta,this.setPolarAngle=e=>{let t=d(e,2*Math.PI),a=m.phi;a<0&&(a+=2*Math.PI),t<0&&(t+=2*Math.PI);let n=Math.abs(t-a);2*Math.PI-n<n&&(t<a?t+=2*Math.PI:a+=2*Math.PI),g.phi=t-a,r.update()},this.setAzimuthalAngle=e=>{let t=d(e,2*Math.PI),a=m.theta;a<0&&(a+=2*Math.PI),t<0&&(t+=2*Math.PI);let n=Math.abs(t-a);2*Math.PI-n<n&&(t<a?t+=2*Math.PI:a+=2*Math.PI),g.theta=t-a,r.update()},this.getDistance=()=>r.object.position.distanceTo(r.target),this.listenToKeyEvents=e=>{e.addEventListener("keydown",ee),this._domElementKeyEvents=e},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",ee),this._domElementKeyEvents=null},this.saveState=()=>{r.target0.copy(r.target),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.reset=()=>{r.target.copy(r.target0),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(a),r.update(),l=s.NONE},this.update=(()=>{let t=new i.Vector3,n=new i.Vector3(0,1,0),o=new i.Quaternion().setFromUnitVectors(e.up,n),h=o.clone().invert(),d=new i.Vector3,w=new i.Quaternion,b=2*Math.PI;return function(){let M=r.object.position;o.setFromUnitVectors(e.up,n),h.copy(o).invert(),t.copy(M).sub(r.target),t.applyQuaternion(o),m.setFromVector3(t),r.autoRotate&&l===s.NONE&&F(2*Math.PI/60/60*r.autoRotateSpeed),r.enableDamping?(m.theta+=g.theta*r.dampingFactor,m.phi+=g.phi*r.dampingFactor):(m.theta+=g.theta,m.phi+=g.phi);let x=r.minAzimuthAngle,_=r.maxAzimuthAngle;isFinite(x)&&isFinite(_)&&(x<-Math.PI?x+=b:x>Math.PI&&(x-=b),_<-Math.PI?_+=b:_>Math.PI&&(_-=b),x<=_?m.theta=Math.max(x,Math.min(_,m.theta)):m.theta=m.theta>(x+_)/2?Math.max(x,m.theta):Math.min(_,m.theta)),m.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,m.phi)),m.makeSafe(),!0===r.enableDamping?r.target.addScaledVector(y,r.dampingFactor):r.target.add(y),r.zoomToCursor&&C||r.object.isOrthographicCamera?m.radius=N(m.radius):m.radius=N(m.radius*v),t.setFromSpherical(m),t.applyQuaternion(h),M.copy(r.target).add(t),r.object.matrixAutoUpdate||r.object.updateMatrix(),r.object.lookAt(r.target),!0===r.enableDamping?(g.theta*=1-r.dampingFactor,g.phi*=1-r.dampingFactor,y.multiplyScalar(1-r.dampingFactor)):(g.set(0,0,0),y.set(0,0,0));let E=!1;if(r.zoomToCursor&&C){let a=null;if(r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera){let e=t.length();a=N(e*v);let n=e-a;r.object.position.addScaledVector(A,n),r.object.updateMatrixWorld()}else if(r.object.isOrthographicCamera){let e=new i.Vector3(I.x,I.y,0);e.unproject(r.object),r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/v)),r.object.updateProjectionMatrix(),E=!0;let n=new i.Vector3(I.x,I.y,0);n.unproject(r.object),r.object.position.sub(n).add(e),r.object.updateMatrixWorld(),a=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),r.zoomToCursor=!1;null!==a&&(r.screenSpacePanning?r.target.set(0,0,-1).transformDirection(r.object.matrix).multiplyScalar(a).add(r.object.position):(u.origin.copy(r.object.position),u.direction.set(0,0,-1).transformDirection(r.object.matrix),Math.abs(r.object.up.dot(u.direction))<p?e.lookAt(r.target):(c.setFromNormalAndCoplanarPoint(r.object.up,r.target),u.intersectPlane(c,r.target))))}else r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera&&(E=1!==v)&&(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/v)),r.object.updateProjectionMatrix());return v=1,C=!1,!!(E||d.distanceToSquared(r.object.position)>f||8*(1-w.dot(r.object.quaternion))>f)&&(r.dispatchEvent(a),d.copy(r.object.position),w.copy(r.object.quaternion),E=!1,!0)}})(),this.connect=e=>{r.domElement=e,r.domElement.style.touchAction="none",r.domElement.addEventListener("contextmenu",et),r.domElement.addEventListener("pointerdown",K),r.domElement.addEventListener("pointercancel",Q),r.domElement.addEventListener("wheel",J)},this.dispose=()=>{var e,t,a,n,i,o;r.domElement&&(r.domElement.style.touchAction="auto"),null==(e=r.domElement)||e.removeEventListener("contextmenu",et),null==(t=r.domElement)||t.removeEventListener("pointerdown",K),null==(a=r.domElement)||a.removeEventListener("pointercancel",Q),null==(n=r.domElement)||n.removeEventListener("wheel",J),null==(i=r.domElement)||i.ownerDocument.removeEventListener("pointermove",q),null==(o=r.domElement)||o.ownerDocument.removeEventListener("pointerup",Q),null!==r._domElementKeyEvents&&r._domElementKeyEvents.removeEventListener("keydown",ee)};const r=this,a={type:"change"},n={type:"start"},o={type:"end"},s={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=s.NONE;const f=1e-6,m=new i.Spherical,g=new i.Spherical;let v=1;const y=new i.Vector3,w=new i.Vector2,b=new i.Vector2,M=new i.Vector2,x=new i.Vector2,_=new i.Vector2,E=new i.Vector2,T=new i.Vector2,S=new i.Vector2,P=new i.Vector2,A=new i.Vector3,I=new i.Vector2;let C=!1;const R=[],O={};function j(){return Math.pow(.95,r.zoomSpeed)}function F(e){r.reverseOrbit||r.reverseHorizontalOrbit?g.theta+=e:g.theta-=e}function k(e){r.reverseOrbit||r.reverseVerticalOrbit?g.phi+=e:g.phi-=e}const L=(()=>{let e=new i.Vector3;return function(t,r){e.setFromMatrixColumn(r,0),e.multiplyScalar(-t),y.add(e)}})(),U=(()=>{let e=new i.Vector3;return function(t,a){!0===r.screenSpacePanning?e.setFromMatrixColumn(a,1):(e.setFromMatrixColumn(a,0),e.crossVectors(r.object.up,e)),e.multiplyScalar(t),y.add(e)}})(),D=(()=>{let e=new i.Vector3;return function(t,a){let n=r.domElement;if(n&&r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera){let i=r.object.position;e.copy(i).sub(r.target);let o=e.length();L(2*t*(o*=Math.tan(r.object.fov/2*Math.PI/180))/n.clientHeight,r.object.matrix),U(2*a*o/n.clientHeight,r.object.matrix)}else n&&r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera?(L(t*(r.object.right-r.object.left)/r.object.zoom/n.clientWidth,r.object.matrix),U(a*(r.object.top-r.object.bottom)/r.object.zoom/n.clientHeight,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)}})();function z(e){r.object instanceof i.PerspectiveCamera&&r.object.isPerspectiveCamera||r.object instanceof i.OrthographicCamera&&r.object.isOrthographicCamera?v=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function B(e){if(!r.zoomToCursor||!r.domElement)return;C=!0;let t=r.domElement.getBoundingClientRect(),a=e.clientX-t.left,n=e.clientY-t.top,i=t.width,o=t.height;I.x=a/i*2-1,I.y=-(n/o*2)+1,A.set(I.x,I.y,1).unproject(r.object).sub(r.object.position).normalize()}function N(e){return Math.max(r.minDistance,Math.min(r.maxDistance,e))}function H(e){w.set(e.clientX,e.clientY)}function W(e){x.set(e.clientX,e.clientY)}function V(){if(1==R.length)w.set(R[0].pageX,R[0].pageY);else{let e=.5*(R[0].pageX+R[1].pageX),t=.5*(R[0].pageY+R[1].pageY);w.set(e,t)}}function G(){if(1==R.length)x.set(R[0].pageX,R[0].pageY);else{let e=.5*(R[0].pageX+R[1].pageX),t=.5*(R[0].pageY+R[1].pageY);x.set(e,t)}}function Y(){let e=R[0].pageX-R[1].pageX,t=R[0].pageY-R[1].pageY,r=Math.sqrt(e*e+t*t);T.set(0,r)}function X(e){if(1==R.length)b.set(e.pageX,e.pageY);else{let t=ea(e),r=.5*(e.pageX+t.x),a=.5*(e.pageY+t.y);b.set(r,a)}M.subVectors(b,w).multiplyScalar(r.rotateSpeed);let t=r.domElement;t&&(F(2*Math.PI*M.x/t.clientHeight),k(2*Math.PI*M.y/t.clientHeight)),w.copy(b)}function $(e){if(1==R.length)_.set(e.pageX,e.pageY);else{let t=ea(e),r=.5*(e.pageX+t.x),a=.5*(e.pageY+t.y);_.set(r,a)}E.subVectors(_,x).multiplyScalar(r.panSpeed),D(E.x,E.y),x.copy(_)}function Z(e){var t;let a=ea(e),n=e.pageX-a.x,i=e.pageY-a.y,o=Math.sqrt(n*n+i*i);S.set(0,o),P.set(0,Math.pow(S.y/T.y,r.zoomSpeed)),t=P.y,z(v/t),T.copy(S)}function K(e){var t,a,o;!1!==r.enabled&&(0===R.length&&(null==(t=r.domElement)||t.ownerDocument.addEventListener("pointermove",q),null==(a=r.domElement)||a.ownerDocument.addEventListener("pointerup",Q)),o=e,R.push(o),"touch"===e.pointerType?function(e){switch(er(e),R.length){case 1:switch(r.touches.ONE){case i.TOUCH.ROTATE:if(!1===r.enableRotate)return;V(),l=s.TOUCH_ROTATE;break;case i.TOUCH.PAN:if(!1===r.enablePan)return;G(),l=s.TOUCH_PAN;break;default:l=s.NONE}break;case 2:switch(r.touches.TWO){case i.TOUCH.DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&Y(),r.enablePan&&G(),l=s.TOUCH_DOLLY_PAN;break;case i.TOUCH.DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&Y(),r.enableRotate&&V(),l=s.TOUCH_DOLLY_ROTATE;break;default:l=s.NONE}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(n)}(e):function(e){let t;switch(e.button){case 0:t=r.mouseButtons.LEFT;break;case 1:t=r.mouseButtons.MIDDLE;break;case 2:t=r.mouseButtons.RIGHT;break;default:t=-1}switch(t){case i.MOUSE.DOLLY:if(!1===r.enableZoom)return;B(e),T.set(e.clientX,e.clientY),l=s.DOLLY;break;case i.MOUSE.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enablePan)return;W(e),l=s.PAN}else{if(!1===r.enableRotate)return;H(e),l=s.ROTATE}break;case i.MOUSE.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enableRotate)return;H(e),l=s.ROTATE}else{if(!1===r.enablePan)return;W(e),l=s.PAN}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(n)}(e))}function q(e){!1!==r.enabled&&("touch"===e.pointerType?function(e){switch(er(e),l){case s.TOUCH_ROTATE:if(!1===r.enableRotate)return;X(e),r.update();break;case s.TOUCH_PAN:if(!1===r.enablePan)return;$(e),r.update();break;case s.TOUCH_DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&Z(e),r.enablePan&&$(e),r.update();break;case s.TOUCH_DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&Z(e),r.enableRotate&&X(e),r.update();break;default:l=s.NONE}}(e):function(e){if(!1!==r.enabled)switch(l){case s.ROTATE:let t;if(!1===r.enableRotate)return;b.set(e.clientX,e.clientY),M.subVectors(b,w).multiplyScalar(r.rotateSpeed),(t=r.domElement)&&(F(2*Math.PI*M.x/t.clientHeight),k(2*Math.PI*M.y/t.clientHeight)),w.copy(b),r.update();break;case s.DOLLY:var a,n;if(!1===r.enableZoom)return;(S.set(e.clientX,e.clientY),P.subVectors(S,T),P.y>0)?(a=j(),z(v/a)):P.y<0&&(n=j(),z(v*n)),T.copy(S),r.update();break;case s.PAN:if(!1===r.enablePan)return;_.set(e.clientX,e.clientY),E.subVectors(_,x).multiplyScalar(r.panSpeed),D(E.x,E.y),x.copy(_),r.update()}}(e))}function Q(e){var t,a,n;(function(e){delete O[e.pointerId];for(let t=0;t<R.length;t++)if(R[t].pointerId==e.pointerId)return void R.splice(t,1)})(e),0===R.length&&(null==(t=r.domElement)||t.releasePointerCapture(e.pointerId),null==(a=r.domElement)||a.ownerDocument.removeEventListener("pointermove",q),null==(n=r.domElement)||n.ownerDocument.removeEventListener("pointerup",Q)),r.dispatchEvent(o),l=s.NONE}function J(e){if(!1!==r.enabled&&!1!==r.enableZoom&&(l===s.NONE||l===s.ROTATE)){var t,a;e.preventDefault(),r.dispatchEvent(n),(B(e),e.deltaY<0)?(t=j(),z(v*t)):e.deltaY>0&&(a=j(),z(v/a)),r.update(),r.dispatchEvent(o)}}function ee(e){if(!1!==r.enabled&&!1!==r.enablePan){let t=!1;switch(e.code){case r.keys.UP:D(0,r.keyPanSpeed),t=!0;break;case r.keys.BOTTOM:D(0,-r.keyPanSpeed),t=!0;break;case r.keys.LEFT:D(r.keyPanSpeed,0),t=!0;break;case r.keys.RIGHT:D(-r.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),r.update())}}function et(e){!1!==r.enabled&&e.preventDefault()}function er(e){let t=O[e.pointerId];void 0===t&&(t=new i.Vector2,O[e.pointerId]=t),t.set(e.pageX,e.pageY)}function ea(e){return O[(e.pointerId===R[0].pointerId?R[1]:R[0]).pointerId]}this.dollyIn=(e=j())=>{z(v*e),r.update()},this.dollyOut=(e=j())=>{z(v/e),r.update()},this.getScale=()=>v,this.setScale=e=>{z(e),r.update()},this.getZoomScale=()=>j(),void 0!==t&&this.connect(t),this.update()}}let m=n.forwardRef(({makeDefault:e,camera:i,regress:o,domElement:s,enableDamping:l=!0,keyEvents:h=!1,onChange:u,onStart:c,onEnd:p,...d},m)=>{let g=(0,r.useThree)(e=>e.invalidate),v=(0,r.useThree)(e=>e.camera),y=(0,r.useThree)(e=>e.gl),w=(0,r.useThree)(e=>e.events),b=(0,r.useThree)(e=>e.setEvents),M=(0,r.useThree)(e=>e.set),x=(0,r.useThree)(e=>e.get),_=(0,r.useThree)(e=>e.performance),E=i||v,T=s||w.connected||y.domElement,S=n.useMemo(()=>new f(E),[E]);return(0,a.useFrame)(()=>{S.enabled&&S.update()},-1),n.useEffect(()=>(h&&S.connect(!0===h?T:h),S.connect(T),()=>void S.dispose()),[h,T,o,S,g]),n.useEffect(()=>{let e=e=>{g(),o&&_.regress(),u&&u(e)},t=e=>{c&&c(e)},r=e=>{p&&p(e)};return S.addEventListener("change",e),S.addEventListener("start",t),S.addEventListener("end",r),()=>{S.removeEventListener("start",t),S.removeEventListener("end",r),S.removeEventListener("change",e)}},[u,c,p,S,g,b]),n.useEffect(()=>{if(e){let e=x().controls;return M({controls:S}),()=>M({controls:e})}},[e,S]),n.createElement("primitive",(0,t.default)({ref:m,object:S,enableDamping:l},d))});e.s(["OrbitControls",()=>m],30297)},43257,58013,e=>{"use strict";let t;var r=e.i(31067),a=e.i(71645),n=e.i(15080),i=e.i(71753),o=e.i(40859),o=o,s=o,l=o;e.s(["extend",()=>l.e],58013);var l=o,h=e.i(90072),u=h,c=e.i(31497);class p extends u.Mesh{constructor(e,t){var r,a;const n=(e=>e&&e.isCubeTexture)(e),i=Math.floor(Math.log2((null!=(a=n?null==(r=e.image[0])?void 0:r.width:e.image.width)?a:1024)/4)),o=Math.pow(2,i),s=3*Math.max(o,112),l=`
|
|
2
|
-
varying vec3 vWorldPosition;
|
|
3
|
-
void main()
|
|
4
|
-
{
|
|
5
|
-
vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
|
|
6
|
-
vWorldPosition = worldPosition.xyz;
|
|
7
|
-
|
|
8
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
9
|
-
}
|
|
10
|
-
`,h=[n?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/s}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*o)}`,`#define CUBEUV_MAX_MIP ${i}.0`].join("\n")+`
|
|
11
|
-
#define ENVMAP_TYPE_CUBE_UV
|
|
12
|
-
varying vec3 vWorldPosition;
|
|
13
|
-
uniform float radius;
|
|
14
|
-
uniform float height;
|
|
15
|
-
uniform float angle;
|
|
16
|
-
#ifdef ENVMAP_TYPE_CUBE
|
|
17
|
-
uniform samplerCube map;
|
|
18
|
-
#else
|
|
19
|
-
uniform sampler2D map;
|
|
20
|
-
#endif
|
|
21
|
-
// From: https://www.shadertoy.com/view/4tsBD7
|
|
22
|
-
float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r )
|
|
23
|
-
{
|
|
24
|
-
float d = dot ( rd, n );
|
|
25
|
-
|
|
26
|
-
if( d > 0.0 ) { return 1e6; }
|
|
27
|
-
|
|
28
|
-
vec3 o = ro - c;
|
|
29
|
-
float t = - dot( n, o ) / d;
|
|
30
|
-
vec3 q = o + rd * t;
|
|
31
|
-
|
|
32
|
-
return ( dot( q, q ) < r * r ) ? t : 1e6;
|
|
33
|
-
}
|
|
34
|
-
// From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
|
|
35
|
-
float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra )
|
|
36
|
-
{
|
|
37
|
-
vec3 oc = ro - ce;
|
|
38
|
-
float b = dot( oc, rd );
|
|
39
|
-
float c = dot( oc, oc ) - ra * ra;
|
|
40
|
-
float h = b * b - c;
|
|
41
|
-
|
|
42
|
-
if( h < 0.0 ) { return -1.0; }
|
|
43
|
-
|
|
44
|
-
h = sqrt( h );
|
|
45
|
-
|
|
46
|
-
return - b + h;
|
|
47
|
-
}
|
|
48
|
-
vec3 project()
|
|
49
|
-
{
|
|
50
|
-
vec3 p = normalize( vWorldPosition );
|
|
51
|
-
vec3 camPos = cameraPosition;
|
|
52
|
-
camPos.y -= height;
|
|
53
|
-
float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
|
|
54
|
-
if( intersection > 0.0 ) {
|
|
55
|
-
|
|
56
|
-
vec3 h = vec3( 0.0, - height, 0.0 );
|
|
57
|
-
float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
|
|
58
|
-
p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
|
|
59
|
-
} else {
|
|
60
|
-
p = vec3( 0.0, 1.0, 0.0 );
|
|
61
|
-
}
|
|
62
|
-
return p;
|
|
63
|
-
}
|
|
64
|
-
#include <common>
|
|
65
|
-
#include <cube_uv_reflection_fragment>
|
|
66
|
-
void main()
|
|
67
|
-
{
|
|
68
|
-
vec3 projectedWorldPosition = project();
|
|
69
|
-
|
|
70
|
-
#ifdef ENVMAP_TYPE_CUBE
|
|
71
|
-
vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
|
|
72
|
-
#else
|
|
73
|
-
vec3 direction = normalize( projectedWorldPosition );
|
|
74
|
-
vec2 uv = equirectUv( direction );
|
|
75
|
-
vec3 outcolor = texture2D( map, uv ).rgb;
|
|
76
|
-
#endif
|
|
77
|
-
gl_FragColor = vec4( outcolor, 1.0 );
|
|
78
|
-
#include <tonemapping_fragment>
|
|
79
|
-
#include <${c.version>=154?"colorspace_fragment":"encodings_fragment"}>
|
|
80
|
-
}
|
|
81
|
-
`,p={map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}};super(new u.IcosahedronGeometry(1,16),new u.ShaderMaterial({uniforms:p,fragmentShader:h,vertexShader:l,side:u.DoubleSide}))}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}}var d=e.i(99143),f=h;class m extends f.DataTextureLoader{constructor(e){super(e),this.type=f.HalfFloatType}parse(e){let t,r,a,n=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 a=e.pos,n=-1,i=0,o="",s=String.fromCharCode.apply(null,new Uint16Array(e.subarray(a,a+128)));for(;0>(n=s.indexOf("\n"))&&i<t&&a<e.byteLength;)o+=s,i+=s.length,a+=128,s+=String.fromCharCode.apply(null,new Uint16Array(e.subarray(a,a+128)));return -1<n&&(!1!==r&&(e.pos+=i+n+1),o+s.slice(0,n))},o=new Uint8Array(e);o.pos=0;let s=function(e){let t,r,a=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,o=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,s=/^\s*FORMAT=(\S+)\s*$/,l=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,h={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};for(!(e.pos>=e.byteLength)&&(t=i(e))||n(1,"no header found"),(r=t.match(/^#\?(\S+)/))||n(3,"bad initial token"),h.valid|=1,h.programtype=r[1],h.string+=t+"\n";!1!==(t=i(e));){if(h.string+=t+"\n","#"===t.charAt(0)){h.comments+=t+"\n";continue}if((r=t.match(a))&&(h.gamma=parseFloat(r[1])),(r=t.match(o))&&(h.exposure=parseFloat(r[1])),(r=t.match(s))&&(h.valid|=2,h.format=r[1]),(r=t.match(l))&&(h.valid|=4,h.height=parseInt(r[1],10),h.width=parseInt(r[2],10)),2&h.valid&&4&h.valid)break}return 2&h.valid||n(3,"missing format specifier"),4&h.valid||n(3,"missing image size specifier"),h}(o),l=s.width,h=s.height,u=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])&&n(3,"wrong scanline width");let a=new Uint8Array(4*t*r);a.length||n(4,"unable to allocate buffer space");let i=0,o=0,s=4*t,l=new Uint8Array(4),h=new Uint8Array(s),u=r;for(;u>0&&o<e.byteLength;){o+4>e.byteLength&&n(1),l[0]=e[o++],l[1]=e[o++],l[2]=e[o++],l[3]=e[o++],(2!=l[0]||2!=l[1]||(l[2]<<8|l[3])!=t)&&n(3,"bad rgbe scanline format");let r=0,c;for(;r<s&&o<e.byteLength;){let t=(c=e[o++])>128;if(t&&(c-=128),(0===c||r+c>s)&&n(3,"bad scanline data"),t){let t=e[o++];for(let e=0;e<c;e++)h[r++]=t}else h.set(e.subarray(o,o+c),r),r+=c,o+=c}for(let e=0;e<t;e++){let r=0;a[i]=h[e+r],r+=t,a[i+1]=h[e+r],r+=t,a[i+2]=h[e+r],r+=t,a[i+3]=h[e+r],i+=4}u--}return a}(o.subarray(o.pos),l,h);switch(this.type){case f.FloatType:let c=new Float32Array(4*(a=u.length/4));for(let e=0;e<a;e++)!function(e,t,r,a){let n=Math.pow(2,e[t+3]-128)/255;r[a+0]=e[t+0]*n,r[a+1]=e[t+1]*n,r[a+2]=e[t+2]*n,r[a+3]=1}(u,4*e,c,4*e);t=c,r=f.FloatType;break;case f.HalfFloatType:let p=new Uint16Array(4*(a=u.length/4));for(let e=0;e<a;e++)!function(e,t,r,a){let n=Math.pow(2,e[t+3]-128)/255;r[a+0]=f.DataUtils.toHalfFloat(Math.min(e[t+0]*n,65504)),r[a+1]=f.DataUtils.toHalfFloat(Math.min(e[t+1]*n,65504)),r[a+2]=f.DataUtils.toHalfFloat(Math.min(e[t+2]*n,65504)),r[a+3]=f.DataUtils.toHalfFloat(1)}(u,4*e,p,4*e);t=p,r=f.HalfFloatType;break;default:throw Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:l,height:h,data:t,header:s.string,gamma:s.gamma,exposure:s.exposure,type:r}}setDataType(e){return this.type=e,this}load(e,t,r,a){return super.load(e,function(e,r){switch(e.type){case f.FloatType:case f.HalfFloatType:"colorSpace"in e?e.colorSpace="srgb-linear":e.encoding=3e3,e.minFilter=f.LinearFilter,e.magFilter=f.LinearFilter,e.generateMipmaps=!1,e.flipY=!0}t&&t(e,r)},r,a)}}var g=h,v={},y=function(e,t,r,a,n){var i=new Worker(v[t]||(v[t]=URL.createObjectURL(new Blob([e],{type:"text/javascript"}))));return i.onerror=function(e){return n(e.error,null)},i.onmessage=function(e){return n(null,e.data)},i.postMessage(r,a),i},w=Uint8Array,b=Uint16Array,M=Uint32Array,x=new w([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),_=new w([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),E=new w([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),T=function(e,t){for(var r=new b(31),a=0;a<31;++a)r[a]=t+=1<<e[a-1];for(var n=new M(r[30]),a=1;a<30;++a)for(var i=r[a];i<r[a+1];++i)n[i]=i-r[a]<<5|a;return[r,n]},S=T(x,2),P=S[0],A=S[1];P[28]=258,A[258]=28;for(var I=T(_,0),C=I[0],R=I[1],O=new b(32768),j=0;j<32768;++j){var F=(43690&j)>>>1|(21845&j)<<1;F=(61680&(F=(52428&F)>>>2|(13107&F)<<2))>>>4|(3855&F)<<4,O[j]=((65280&F)>>>8|(255&F)<<8)>>>1}for(var k=function(e,t,r){for(var a,n=e.length,i=0,o=new b(t);i<n;++i)++o[e[i]-1];var s=new b(t);for(i=0;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;if(r){a=new b(1<<t);var l=15-t;for(i=0;i<n;++i)if(e[i])for(var h=i<<4|e[i],u=t-e[i],c=s[e[i]-1]++<<u,p=c|(1<<u)-1;c<=p;++c)a[O[c]>>>l]=h}else for(i=0,a=new b(n);i<n;++i)e[i]&&(a[i]=O[s[e[i]-1]++]>>>15-e[i]);return a},L=new w(288),j=0;j<144;++j)L[j]=8;for(var j=144;j<256;++j)L[j]=9;for(var j=256;j<280;++j)L[j]=7;for(var j=280;j<288;++j)L[j]=8;for(var U=new w(32),j=0;j<32;++j)U[j]=5;var D=k(L,9,0),z=k(L,9,1),B=k(U,5,0),N=k(U,5,1),H=function(e){for(var t=e[0],r=1;r<e.length;++r)e[r]>t&&(t=e[r]);return t},W=function(e,t,r){var a=t/8|0;return(e[a]|e[a+1]<<8)>>(7&t)&r},V=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},G=function(e){return(e/8|0)+(7&e&&1)},Y=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var a=new(e instanceof b?b:e instanceof M?M:w)(r-t);return a.set(e.subarray(t,r)),a},X=function(e,t,r){var a=e.length;if(!a||r&&!r.l&&a<5)return t||new w(0);var n=!t||r,i=!r||r.i;r||(r={}),t||(t=new w(3*a));var o=function(e){var r=t.length;if(e>r){var a=new w(Math.max(2*r,e));a.set(t),t=a}},s=r.f||0,l=r.p||0,h=r.b||0,u=r.l,c=r.d,p=r.m,d=r.n,f=8*a;do{if(!u){r.f=s=W(e,l,1);var m=W(e,l+1,3);if(l+=3,m)if(1==m)u=z,c=N,p=9,d=5;else if(2==m){var g=W(e,l,31)+257,v=W(e,l+10,15)+4,y=g+W(e,l+5,31)+1;l+=14;for(var b=new w(y),M=new w(19),T=0;T<v;++T)M[E[T]]=W(e,l+3*T,7);l+=3*v;for(var S=H(M),A=(1<<S)-1,I=k(M,S,1),T=0;T<y;){var R=I[W(e,l,A)];l+=15&R;var O=R>>>4;if(O<16)b[T++]=O;else{var j=0,F=0;for(16==O?(F=3+W(e,l,3),l+=2,j=b[T-1]):17==O?(F=3+W(e,l,7),l+=3):18==O&&(F=11+W(e,l,127),l+=7);F--;)b[T++]=j}}var L=b.subarray(0,g),U=b.subarray(g);p=H(L),d=H(U),u=k(L,p,1),c=k(U,d,1)}else throw"invalid block type";else{var O=G(l)+4,D=e[O-4]|e[O-3]<<8,B=O+D;if(B>a){if(i)throw"unexpected EOF";break}n&&o(h+D),t.set(e.subarray(O,B),h),r.b=h+=D,r.p=l=8*B;continue}if(l>f){if(i)throw"unexpected EOF";break}}n&&o(h+131072);for(var X=(1<<p)-1,$=(1<<d)-1,Z=l;;Z=l){var j=u[V(e,l)&X],K=j>>>4;if((l+=15&j)>f){if(i)throw"unexpected EOF";break}if(!j)throw"invalid length/literal";if(K<256)t[h++]=K;else if(256==K){Z=l,u=null;break}else{var q=K-254;if(K>264){var T=K-257,Q=x[T];q=W(e,l,(1<<Q)-1)+P[T],l+=Q}var J=c[V(e,l)&$],ee=J>>>4;if(!J)throw"invalid distance";l+=15&J;var U=C[ee];if(ee>3){var Q=_[ee];U+=V(e,l)&(1<<Q)-1,l+=Q}if(l>f){if(i)throw"unexpected EOF";break}n&&o(h+131072);for(var et=h+q;h<et;h+=4)t[h]=t[h-U],t[h+1]=t[h+1-U],t[h+2]=t[h+2-U],t[h+3]=t[h+3-U];h=et}}r.l=u,r.p=Z,r.b=h,u&&(s=1,r.m=p,r.d=c,r.n=d)}while(!s)return h==t.length?t:Y(t,0,h)},$=function(e,t,r){r<<=7&t;var a=t/8|0;e[a]|=r,e[a+1]|=r>>>8},Z=function(e,t,r){r<<=7&t;var a=t/8|0;e[a]|=r,e[a+1]|=r>>>8,e[a+2]|=r>>>16},K=function(e,t){for(var r=[],a=0;a<e.length;++a)e[a]&&r.push({s:a,f:e[a]});var n=r.length,i=r.slice();if(!n)return[ea,0];if(1==n){var o=new w(r[0].s+1);return o[r[0].s]=1,[o,1]}r.sort(function(e,t){return e.f-t.f}),r.push({s:-1,f:25001});var s=r[0],l=r[1],h=0,u=1,c=2;for(r[0]={s:-1,f:s.f+l.f,l:s,r:l};u!=n-1;)s=r[r[h].f<r[c].f?h++:c++],l=r[h!=u&&r[h].f<r[c].f?h++:c++],r[u++]={s:-1,f:s.f+l.f,l:s,r:l};for(var p=i[0].s,a=1;a<n;++a)i[a].s>p&&(p=i[a].s);var d=new b(p+1),f=q(r[u-1],d,0);if(f>t){var a=0,m=0,g=f-t,v=1<<g;for(i.sort(function(e,t){return d[t.s]-d[e.s]||e.f-t.f});a<n;++a){var y=i[a].s;if(d[y]>t)m+=v-(1<<f-d[y]),d[y]=t;else break}for(m>>>=g;m>0;){var M=i[a].s;d[M]<t?m-=1<<t-d[M]++-1:++a}for(;a>=0&&m;--a){var x=i[a].s;d[x]==t&&(--d[x],++m)}f=t}return[new w(d),f]},q=function(e,t,r){return -1==e.s?Math.max(q(e.l,t,r+1),q(e.r,t,r+1)):t[e.s]=r},Q=function(e){for(var t=e.length;t&&!e[--t];);for(var r=new b(++t),a=0,n=e[0],i=1,o=function(e){r[a++]=e},s=1;s<=t;++s)if(e[s]==n&&s!=t)++i;else{if(!n&&i>2){for(;i>138;i-=138)o(32754);i>2&&(o(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(o(n),--i;i>6;i-=6)o(8304);i>2&&(o(i-3<<5|8208),i=0)}for(;i--;)o(n);i=1,n=e[s]}return[r.subarray(0,a),t]},J=function(e,t){for(var r=0,a=0;a<t.length;++a)r+=e[a]*t[a];return r},ee=function(e,t,r){var a=r.length,n=G(t+2);e[n]=255&a,e[n+1]=a>>>8,e[n+2]=255^e[n],e[n+3]=255^e[n+1];for(var i=0;i<a;++i)e[n+i+4]=r[i];return(n+4+a)*8},et=function(e,t,r,a,n,i,o,s,l,h,u){$(t,u++,r),++n[256];for(var c,p,d,f,m=K(n,15),g=m[0],v=m[1],y=K(i,15),w=y[0],M=y[1],T=Q(g),S=T[0],P=T[1],A=Q(w),I=A[0],C=A[1],R=new b(19),O=0;O<S.length;++O)R[31&S[O]]++;for(var O=0;O<I.length;++O)R[31&I[O]]++;for(var j=K(R,7),F=j[0],z=j[1],N=19;N>4&&!F[E[N-1]];--N);var H=h+5<<3,W=J(n,L)+J(i,U)+o,V=J(n,g)+J(i,w)+o+14+3*N+J(R,F)+(2*R[16]+3*R[17]+7*R[18]);if(H<=W&&H<=V)return ee(t,u,e.subarray(l,l+h));if($(t,u,1+(V<W)),u+=2,V<W){c=k(g,v,0),p=g,d=k(w,M,0),f=w;var G=k(F,z,0);$(t,u,P-257),$(t,u+5,C-1),$(t,u+10,N-4),u+=14;for(var O=0;O<N;++O)$(t,u+3*O,F[E[O]]);u+=3*N;for(var Y=[S,I],X=0;X<2;++X)for(var q=Y[X],O=0;O<q.length;++O){var et=31&q[O];$(t,u,G[et]),u+=F[et],et>15&&($(t,u,q[O]>>>5&127),u+=q[O]>>>12)}}else c=D,p=L,d=B,f=U;for(var O=0;O<s;++O)if(a[O]>255){var et=a[O]>>>18&31;Z(t,u,c[et+257]),u+=p[et+257],et>7&&($(t,u,a[O]>>>23&31),u+=x[et]);var er=31&a[O];Z(t,u,d[er]),u+=f[er],er>3&&(Z(t,u,a[O]>>>5&8191),u+=_[er])}else Z(t,u,c[a[O]]),u+=p[a[O]];return Z(t,u,c[256]),u+p[256]},er=new M([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ea=new w(0),en=function(e,t,r,a,n,i){var o=e.length,s=new w(a+o+5*(1+Math.ceil(o/7e3))+n),l=s.subarray(a,s.length-n),h=0;if(!t||o<8)for(var u=0;u<=o;u+=65535){var c=u+65535;c<o?h=ee(l,h,e.subarray(u,c)):(l[u]=i,h=ee(l,h,e.subarray(u,o)))}else{for(var p=er[t-1],d=p>>>13,f=8191&p,m=(1<<r)-1,g=new b(32768),v=new b(m+1),y=Math.ceil(r/3),E=2*y,T=function(t){return(e[t]^e[t+1]<<y^e[t+2]<<E)&m},S=new M(25e3),P=new b(288),I=new b(32),C=0,O=0,u=0,j=0,F=0,k=0;u<o;++u){var L=T(u),U=32767&u,D=v[L];if(g[U]=D,v[L]=U,F<=u){var z=o-u;if((C>7e3||j>24576)&&z>423){h=et(e,l,0,S,P,I,O,j,k,u-k,h),j=C=O=0,k=u;for(var B=0;B<286;++B)P[B]=0;for(var B=0;B<30;++B)I[B]=0}var N=2,H=0,W=f,V=U-D&32767;if(z>2&&L==T(u-V))for(var X=Math.min(d,z)-1,$=Math.min(32767,u),Z=Math.min(258,z);V<=$&&--W&&U!=D;){if(e[u+N]==e[u+N-V]){for(var K=0;K<Z&&e[u+K]==e[u+K-V];++K);if(K>N){if(N=K,H=V,K>X)break;for(var q=Math.min(V,K-2),Q=0,B=0;B<q;++B){var J=u-V+B+32768&32767,en=g[J],ei=J-en+32768&32767;ei>Q&&(Q=ei,D=J)}}}D=g[U=D],V+=U-D+32768&32767}if(H){S[j++]=0x10000000|A[N]<<18|R[H];var eo=31&A[N],es=31&R[H];O+=x[eo]+_[es],++P[257+eo],++I[es],F=u+N,++C}else S[j++]=e[u],++P[e[u]]}}h=et(e,l,i,S,P,I,O,j,k,u-k,h),!i&&7&h&&(h=ee(l,h+1,ea))}return Y(s,0,a+G(h)+n)},ei=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var r=t,a=9;--a;)r=(1&r&&-0x12477ce0)^r>>>1;e[t]=r}return e}(),eo=function(){var e=-1;return{p:function(t){for(var r=e,a=0;a<t.length;++a)r=ei[255&r^t[a]]^r>>>8;e=r},d:function(){return~e}}},es=function(){var e=1,t=0;return{p:function(r){for(var a=e,n=t,i=r.length,o=0;o!=i;){for(var s=Math.min(o+2655,i);o<s;++o)n+=a+=r[o];a=(65535&a)+15*(a>>16),n=(65535&n)+15*(n>>16)}e=a,t=n},d:function(){return e%=65521,t%=65521,(255&e)<<24|e>>>8<<16|(255&t)<<8|t>>>8}}},el=function(e,t,r,a,n){return en(e,null==t.level?6:t.level,null==t.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):12+t.mem,r,a,!n)},eh=function(e,t){var r={};for(var a in e)r[a]=e[a];for(var a in t)r[a]=t[a];return r},eu=function(e,t,r){for(var a=e(),n=e.toString(),i=n.slice(n.indexOf("[")+1,n.lastIndexOf("]")).replace(/ /g,"").split(","),o=0;o<a.length;++o){var s=a[o],l=i[o];if("function"==typeof s){t+=";"+l+"=";var h=s.toString();if(s.prototype)if(-1!=h.indexOf("[native code]")){var u=h.indexOf(" ",8)+1;t+=h.slice(u,h.indexOf("(",u))}else for(var c in t+=h,s.prototype)t+=";"+l+".prototype."+c+"="+s.prototype[c].toString();else t+=h}else r[l]=s}return[t,r]},ec=[],ep=function(e){var t=[];for(var r in e)(e[r]instanceof w||e[r]instanceof b||e[r]instanceof M)&&t.push((e[r]=new e[r].constructor(e[r])).buffer);return t},ed=function(e,t,r,a){if(!ec[r]){for(var n,i="",o={},s=e.length-1,l=0;l<s;++l)i=(n=eu(e[l],i,o))[0],o=n[1];ec[r]=eu(e[s],i,o)}var h=eh({},ec[r][1]);return y(ec[r][0]+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+t.toString()+"}",r,h,ep(h),a)},ef=function(){return[w,b,M,x,_,E,P,C,z,N,O,k,H,W,V,G,Y,X,eD,ey,ew]},em=function(){return[w,b,M,x,_,E,A,R,D,L,B,U,O,er,ea,k,$,Z,K,q,Q,J,ee,et,G,Y,en,el,ek,ey]},eg=function(){return[eP,eA]},ev=function(){return[eR]},ey=function(e){return postMessage(e,[e.buffer])},ew=function(e){return e&&e.size&&new w(e.size)},eb=function(e){return e.ondata=function(e,t){return postMessage([e,t],[e.buffer])},function(t){return e.push(t.data[0],t.data[1])}},eM=function(e,t,r,a,n){var i,o=ed(e,a,n,function(e,r){e?(o.terminate(),t.ondata.call(t,e)):(r[1]&&o.terminate(),t.ondata.call(t,e,r[0],r[1]))});o.postMessage(r),t.push=function(e,r){if(i)throw"stream finished";if(!t.ondata)throw"no stream handler";o.postMessage([e,i=r],[e.buffer])},t.terminate=function(){o.terminate()}},ex=function(e,t){return e[t]|e[t+1]<<8},e_=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},eE=function(e,t){return e_(e,t)+0x100000000*e_(e,t+4)},eT=function(e,t,r){for(;r;++t)e[t]=r,r>>>=8},eS=function(e,t){var r=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:2*(9==t.level),e[9]=3,0!=t.mtime&&eT(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),r){e[3]=8;for(var a=0;a<=r.length;++a)e[a+10]=r.charCodeAt(a)}},eP=function(e){if(31!=e[0]||139!=e[1]||8!=e[2])throw"invalid gzip data";var t=e[3],r=10;4&t&&(r+=e[10]|(e[11]<<8)+2);for(var a=(t>>3&1)+(t>>4&1);a>0;a-=!e[r++]);return r+(2&t)},eA=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},eI=function(e){return 10+(e.filename&&e.filename.length+1||0)},eC=function(e,t){var r=t.level,a=0==r?0:r<6?1:9==r?3:2;e[0]=120,e[1]=a<<6|(a?32-2*a:1)},eR=function(e){if((15&e[0])!=8||e[0]>>>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 eO(e,t){return t||"function"!=typeof e||(t=e,e={}),this.ondata=t,e}var ej=function(){function e(e,t){t||"function"!=typeof e||(t=e,e={}),this.ondata=t,this.o=e||{}}return e.prototype.p=function(e,t){this.ondata(el(e,this.o,0,0,!t),t)},e.prototype.push=function(e,t){if(this.d)throw"stream finished";if(!this.ondata)throw"no stream handler";this.d=t,this.p(e,t||!1)},e}(),eF=function(e,t){eM([em,function(){return[eb,ej]}],this,eO.call(this,e,t),function(e){onmessage=eb(new ej(e.data))},6)};function ek(e,t){return el(e,t||{},0,0)}var eL=function(){function e(e){this.s={},this.p=new w(0),this.ondata=e}return e.prototype.e=function(e){if(this.d)throw"stream finished";if(!this.ondata)throw"no stream handler";var t=this.p.length,r=new w(t+e.length);r.set(this.p),r.set(e,t),this.p=r},e.prototype.c=function(e){this.d=this.s.i=e||!1;var t=this.s.b,r=X(this.p,this.o,this.s);this.ondata(Y(r,t,this.s.b),this.d),this.o=Y(r,this.s.b-32768),this.s.b=this.o.length,this.p=Y(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),eU=function(e){this.ondata=e,eM([ef,function(){return[eb,eL]}],this,0,function(){onmessage=eb(new eL)},7)};function eD(e,t){return X(e,t)}(function(){function e(e,t){this.c=eo(),this.l=0,this.v=1,ej.call(this,e,t)}e.prototype.push=function(e,t){ej.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e),this.l+=e.length;var r=el(e,this.o,this.v&&eI(this.o),t&&8,!t);this.v&&(eS(r,this.o),this.v=0),t&&(eT(r,r.length-8,this.c.d()),eT(r,r.length-4,this.l)),this.ondata(r,t)}})();var ez=function(){function e(e){this.v=1,eL.call(this,e)}return e.prototype.push=function(e,t){if(eL.prototype.e.call(this,e),this.v){var r=this.p.length>3?eP(this.p):4;if(r>=this.p.length&&!t)return;this.p=this.p.subarray(r),this.v=0}if(t){if(this.p.length<8)throw"invalid gzip stream";this.p=this.p.subarray(0,-8)}eL.prototype.c.call(this,t)},e}(),eB=function(e){this.ondata=e,eM([ef,eg,function(){return[eb,eL,ez]}],this,0,function(){onmessage=eb(new ez)},9)},eN=(function(){function e(e,t){this.c=es(),this.v=1,ej.call(this,e,t)}e.prototype.push=function(e,t){ej.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e);var r=el(e,this.o,this.v&&2,t&&4,!t);this.v&&(eC(r,this.o),this.v=0),t&&eT(r,r.length-4,this.c.d()),this.ondata(r,t)}}(),function(){function e(e){this.v=1,eL.call(this,e)}return e.prototype.push=function(e,t){if(eL.prototype.e.call(this,e),this.v){if(this.p.length<2&&!t)return;this.p=this.p.subarray(2),this.v=0}if(t){if(this.p.length<4)throw"invalid zlib stream";this.p=this.p.subarray(0,-4)}eL.prototype.c.call(this,t)},e}()),eH=function(e){this.ondata=e,eM([ef,ev,function(){return[eb,eL,eN]}],this,0,function(){onmessage=eb(new eN)},11)};function eW(e,t){return X((eR(e),e.subarray(2,-4)),t)}var eV=function(){function e(e){this.G=ez,this.I=eL,this.Z=eN,this.ondata=e}return e.prototype.push=function(e,t){if(!this.ondata)throw"no stream handler";if(this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var r=new w(this.p.length+e.length);r.set(this.p),r.set(e,this.p.length)}else this.p=e;if(this.p.length>2){var a=this,n=function(){a.ondata.apply(a,arguments)};this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(n):(15&this.p[0])!=8||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(n):new this.Z(n),this.s.push(this.p,t),this.p=null}}},e}();(function(e){this.G=eB,this.I=eU,this.Z=eH,this.ondata=e}).prototype.push=function(e,t){eV.prototype.push.call(this,e,t)};var eG="u">typeof TextEncoder&&new TextEncoder,eY="u">typeof TextDecoder&&new TextDecoder,eX=0;try{eY.decode(ea,{stream:!0}),eX=1}catch(e){}var e$=function(e){for(var t="",r=0;;){var a=e[r++],n=(a>127)+(a>223)+(a>239);if(r+n>e.length)return[t,Y(e,r-1)];n?3==n?t+=String.fromCharCode(55296|(a=((15&a)<<18|(63&e[r++])<<12|(63&e[r++])<<6|63&e[r++])-65536)>>10,56320|1023&a):1&n?t+=String.fromCharCode((31&a)<<6|63&e[r++]):t+=String.fromCharCode((15&a)<<12|(63&e[r++])<<6|63&e[r++]):t+=String.fromCharCode(a)}};function eZ(e,t){if(t){for(var r=new w(e.length),a=0;a<e.length;++a)r[a]=e.charCodeAt(a);return r}if(eG)return eG.encode(e);for(var n=e.length,i=new w(e.length+(e.length>>1)),o=0,s=function(e){i[o++]=e},a=0;a<n;++a){if(o+5>i.length){var l=new w(o+8+(n-a<<1));l.set(i),i=l}var h=e.charCodeAt(a);h<128||t?s(h):(h<2048?s(192|h>>6):(h>55295&&h<57344?(s(240|(h=65536+(1047552&h)|1023&e.charCodeAt(++a))>>18),s(128|h>>12&63)):s(224|h>>12),s(128|h>>6&63)),s(128|63&h))}return Y(i,0,o)}(function(e){this.ondata=e,eX?this.t=new TextDecoder:this.p=ea}).prototype.push=function(e,t){if(!this.ondata)throw"no callback";if(t=!!t,this.t){if(this.ondata(this.t.decode(e,{stream:!0}),t),t){if(this.t.decode().length)throw"invalid utf-8 data";this.t=null}return}if(!this.p)throw"stream finished";var r=new w(this.p.length+e.length);r.set(this.p),r.set(e,this.p.length);var a=e$(r),n=a[0],i=a[1];if(t){if(i.length)throw"invalid utf-8 data";this.p=null}else this.p=i;this.ondata(n,t)},(function(e){this.ondata=e}).prototype.push=function(e,t){if(!this.ondata)throw"no callback";if(this.d)throw"stream finished";this.ondata(eZ(e),this.d=t||!1)};var eK=function(e){return 1==e?3:e<6?2:+(9==e)},eq=function(e,t){for(;1!=ex(e,t);t+=4+ex(e,t+2));return[eE(e,t+12),eE(e,t+4),eE(e,t+20)]},eQ=function(e){var t=0;if(e)for(var r in e){var a=e[r].length;if(a>65535)throw"extra field too long";t+=a+4}return t},eJ=function(e,t,r,a,n,i,o,s){var l=a.length,h=r.extra,u=s&&s.length,c=eQ(h);eT(e,t,null!=o?0x2014b50:0x4034b50),t+=4,null!=o&&(e[t++]=20,e[t++]=r.os),e[t]=20,t+=2,e[t++]=r.flag<<1|(null==i&&8),e[t++]=n&&8,e[t++]=255&r.compression,e[t++]=r.compression>>8;var p=new Date(null==r.mtime?Date.now():r.mtime),d=p.getFullYear()-1980;if(d<0||d>119)throw"date not in range 1980-2099";if(eT(e,t,d<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>>1),t+=4,null!=i&&(eT(e,t,r.crc),eT(e,t+4,i),eT(e,t+8,r.size)),eT(e,t+12,l),eT(e,t+14,c),t+=16,null!=o&&(eT(e,t,u),eT(e,t+6,r.attrs),eT(e,t+10,o),t+=14),e.set(a,t),t+=l,c)for(var f in h){var m=h[f],g=m.length;eT(e,t,+f),eT(e,t+2,g),e.set(m,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},e0=function(e,t,r,a,n){eT(e,t,0x6054b50),eT(e,t+8,r),eT(e,t+10,r),eT(e,t+12,a),eT(e,t+16,n)},e1=function(){function e(e){this.filename=e,this.c=eo(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){if(!this.ondata)throw"no callback - add to ZIP archive before pushing";this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}();function e2(e,t){var r=this;t||(t={}),e1.call(this,e),this.d=new ej(t,function(e,t){r.ondata(null,e,t)}),this.compression=8,this.flag=eK(t.level)}function e3(e,t){var r=this;t||(t={}),e1.call(this,e),this.d=new eF(t,function(e,t,a){r.ondata(e,t,a)}),this.compression=8,this.flag=eK(t.level),this.terminate=this.d.terminate}function e5(e){this.ondata=e,this.u=[],this.d=1}e2.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},e2.prototype.push=function(e,t){e1.prototype.push.call(this,e,t)},e3.prototype.process=function(e,t){this.d.push(e,t)},e3.prototype.push=function(e,t){e1.prototype.push.call(this,e,t)},e5.prototype.add=function(e){var t=this;if(2&this.d)throw"stream finished";var r=eZ(e.filename),a=r.length,n=e.comment,i=n&&eZ(n),o=a!=e.filename.length||i&&n.length!=i.length,s=a+eQ(e.extra)+30;if(a>65535)throw"filename too long";var l=new w(s);eJ(l,0,e,r,o);var h=[l],u=function(){for(var e=0,r=h;e<r.length;e++){var a=r[e];t.ondata(null,a,!1)}h=[]},c=this.d;this.d=0;var p=this.u.length,d=eh(e,{f:r,u:o,o:i,t:function(){e.terminate&&e.terminate()},r:function(){if(u(),c){var e=t.u[p+1];e?e.r():t.d=1}c=1}}),f=0;e.ondata=function(r,a,n){if(r)t.ondata(r,a,n),t.terminate();else if(f+=a.length,h.push(a),n){var i=new w(16);eT(i,0,0x8074b50),eT(i,4,e.crc),eT(i,8,f),eT(i,12,e.size),h.push(i),d.c=f,d.b=s+f+16,d.crc=e.crc,d.size=e.size,c&&d.r(),c=1}else c&&u()},this.u.push(d)},e5.prototype.end=function(){var e=this;if(2&this.d){if(1&this.d)throw"stream finishing";throw"stream finished"}this.d?this.e():this.u.push({r:function(){1&e.d&&(e.u.splice(-1,1),e.e())},t:function(){}}),this.d=3},e5.prototype.e=function(){for(var e=0,t=0,r=0,a=0,n=this.u;a<n.length;a++){var i=n[a];r+=46+i.f.length+eQ(i.extra)+(i.o?i.o.length:0)}for(var o=new w(r+22),s=0,l=this.u;s<l.length;s++){var i=l[s];eJ(o,e,i,i.f,i.u,i.c,t,i.o),e+=46+i.f.length+eQ(i.extra)+(i.o?i.o.length:0),t+=i.b}e0(o,e,this.u.length,r,t),this.ondata(null,o,!0),this.d=2},e5.prototype.terminate=function(){for(var e=0,t=this.u;e<t.length;e++)t[e].t();this.d=2};var e4=function(){function e(){}return e.prototype.push=function(e,t){this.ondata(null,e,t)},e.compression=0,e}();function e6(){var e=this;this.i=new eL(function(t,r){e.ondata(null,t,r)})}function e8(e,t){var r=this;t<32e4?this.i=new eL(function(e,t){r.ondata(null,e,t)}):(this.i=new eU(function(e,t,a){r.ondata(e,t,a)}),this.terminate=this.i.terminate)}function e7(e){this.onfile=e,this.k=[],this.o={0:e4},this.p=ea}e6.prototype.push=function(e,t){try{this.i.push(e,t)}catch(r){this.ondata(r,e,t)}},e6.compression=8,e8.prototype.push=function(e,t){this.i.terminate&&(e=Y(e,0)),this.i.push(e,t)},e8.compression=8,e7.prototype.push=function(e,t){var r=this;if(!this.onfile)throw"no callback";if(!this.p)throw"stream finished";if(this.c>0){var a=Math.min(this.c,e.length),n=e.subarray(0,a);if(this.c-=a,this.d?this.d.push(n,!this.c):this.k[0].push(n),(e=e.subarray(a)).length)return this.push(e,t)}else{var i=0,o=0,s=void 0,l=void 0;this.p.length?e.length?((l=new w(this.p.length+e.length)).set(this.p),l.set(e,this.p.length)):l=this.p:l=e;for(var h=l.length,u=this.c,c=u&&this.d,p=this;o<h-4&&"break"!==function(){var e=e_(l,o);if(0x4034b50==e){i=1,s=o,p.d=null,p.c=0;var t=ex(l,o+6),a=ex(l,o+8),n=8&t,c=ex(l,o+26),d=ex(l,o+28);if(h>o+30+c+d){var f,m,g=[];p.k.unshift(g),i=2;var v=e_(l,o+18),y=e_(l,o+22),w=function(e,t){if(t){for(var r="",a=0;a<e.length;a+=16384)r+=String.fromCharCode.apply(null,e.subarray(a,a+16384));return r}if(eY)return eY.decode(e);var n=e$(e),i=n[0];if(n[1].length)throw"invalid utf-8 data";return i}(l.subarray(o+30,o+=30+c),!(2048&t));0xffffffff==v?(v=(f=n?[-2]:eq(l,o))[0],y=f[1]):n&&(v=-1),o+=d,p.c=v;var b={name:w,compression:a,start:function(){if(!b.ondata)throw"no callback";if(v){var e=r.o[a];if(!e)throw"unknown compression type "+a;(m=v<0?new e(w):new e(w,v,y)).ondata=function(e,t,r){b.ondata(e,t,r)};for(var t=0;t<g.length;t++){var n=g[t];m.push(n,!1)}r.k[0]==g&&r.c?r.d=m:m.push(ea,!0)}else b.ondata(null,ea,!0)},terminate:function(){m&&m.terminate&&m.terminate()}};v>=0&&(b.size=v,b.originalSize=y),p.onfile(b)}return"break"}if(u){if(0x8074b50==e)return s=o+=12+(-2==u&&8),i=3,p.c=0,"break";else if(0x2014b50==e)return s=o-=4,i=3,p.c=0,"break"}}();++o);if(this.p=ea,u<0){var d=i?l.subarray(0,s-12-(-2==u&&8)-(0x8074b50==e_(l,s-16)&&4)):l.subarray(0,o);c?c.push(d,!!i):this.k[+(2==i)].push(d)}if(2&i)return this.push(l.subarray(o),t);this.p=l.subarray(o)}if(t){if(this.c)throw"invalid zip file";this.p=null}},e7.prototype.register=function(e){this.o[e.compression]=e};let e9=c.version>=152;class te extends g.DataTextureLoader{constructor(e){super(e),this.type=g.HalfFloatType}parse(e){let t={l:0,c:0,lc:0};function r(e,r,a,n,i){for(;a<e;)r=r<<8|S(n,i),a+=8;t.l=r>>(a-=e)&(1<<e)-1,t.c=r,t.lc=a}let a=Array(59),n={c:0,lc:0};function i(e,t,r,a){e=e<<8|S(r,a),t+=8,n.c=e,n.lc=t}let o={c:0,lc:0};function s(e,t,r,a,s,l,h,u,c,p){if(e==t){a<8&&(i(r,a,s,h),r=n.c,a=n.lc);var d=r>>(a-=8),d=new Uint8Array([d])[0];if(c.value+d>p)return!1;for(var f=u[c.value-1];d-- >0;)u[c.value++]=f}else{if(!(c.value<p))return!1;u[c.value++]=e}o.c=r,o.lc=a}function l(e){var t=65535&e;return t>32767?t-65536:t}let h={a:0,b:0};function u(e,t){var r=l(e),a=l(t),n=r+(1&a)+(a>>1),i=n-a;h.a=n,h.b=i}function c(e,t){var r=65535&t,a=(65535&e)-(r>>1)&65535;h.a=r+a-32768&65535,h.b=a}function p(e,l,h,u,c,p){var d=h.value,f=T(l,h),m=T(l,h);h.value+=4;var g=T(l,h);if(h.value+=4,f<0||f>=65537||m<0||m>=65537)throw"Something wrong with HUF_ENCSIZE";for(var v=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=u-(h.value-d);if(!function(e,n,i,o,s,l,h){for(var u=0,c=0;s<=l;s++){if(i.value-i.value>o)return!1;r(6,u,c,e,i);var p=t.l;if(u=t.c,c=t.lc,h[s]=p,63==p){if(i.value-i.value>o)throw"Something wrong with hufUnpackEncTable";r(8,u,c,e,i);var d=t.l+6;if(u=t.c,c=t.lc,s+d>l+1)throw"Something wrong with hufUnpackEncTable";for(;d--;)h[s++]=0;s--}else if(p>=59){var d=p-59+2;if(s+d>l+1)throw"Something wrong with hufUnpackEncTable";for(;d--;)h[s++]=0;s--}}!function(e){for(var t=0;t<=58;++t)a[t]=0;for(var t=0;t<65537;++t)a[e[t]]+=1;for(var r=0,t=58;t>0;--t){var n=r+a[t]>>1;a[t]=r,r=n}for(var t=0;t<65537;++t){var i=e[t];i>0&&(e[t]=i|a[i]++<<6)}}(h)}(e,0,h,b,f,m,v),g>8*(u-(h.value-d)))throw"Something wrong with hufUncompress";!function(e,t,r,a){for(;t<=r;t++){var n=e[t]>>6,i=63&e[t];if(n>>i)throw"Invalid table entry";if(i>14){var o=a[n>>i-14];if(o.len)throw"Invalid table entry";if(o.lit++,o.p){var s=o.p;o.p=Array(o.lit);for(var l=0;l<o.lit-1;++l)o.p[l]=s[l]}else o.p=[,];o.p[o.lit-1]=t}else if(i)for(var h=0,l=1<<14-i;l>0;l--){var o=a[(n<<14-i)+h];if(o.len||o.p)throw"Invalid table entry";o.len=i,o.lit=t,h++}}}(v,f,m,y),function(e,t,r,a,l,h,u,c,p,d){for(var f=0,m=0,g=Math.trunc(l.value+(h+7)/8);l.value<g;)for(i(f,m,r,l),f=n.c,m=n.lc;m>=14;){var v=t[f>>m-14&16383];if(v.len)m-=v.len,s(v.lit,u,f,m,r,a,l,p,d,c),f=o.c,m=o.lc;else{if(!v.p)throw"hufDecode issues";for(y=0;y<v.lit;y++){for(var y,w=63&e[v.p[y]];m<w&&l.value<g;)i(f,m,r,l),f=n.c,m=n.lc;if(m>=w&&e[v.p[y]]>>6==(f>>m-w&(1<<w)-1)){m-=w,s(v.p[y],u,f,m,r,a,l,p,d,c),f=o.c,m=o.lc;break}}if(y==v.lit)throw"hufDecode issues"}}var b=8-h&7;for(f>>=b,m-=b;m>0;){var v=t[f<<14-m&16383];if(v.len)m-=v.len,s(v.lit,u,f,m,r,a,l,p,d,c),f=o.c,m=o.lc;else throw"hufDecode issues"}}(v,y,e,l,h,g,m,p,c,{value:0})}function d(e){for(var t=1;t<e.length;t++){var r=e[t-1]+e[t]-128;e[t]=r}}function f(e,t){for(var r=0,a=Math.floor((e.length+1)/2),n=0,i=e.length-1;!(n>i)&&(t[n++]=e[r++],!(n>i));){;t[n++]=e[a++]}}function m(e){for(var t=e.byteLength,r=[],a=0,n=new DataView(e);t>0;){var i=n.getInt8(a++);if(i<0){var o=-i;t-=o+1;for(var s=0;s<o;s++)r.push(n.getUint8(a++))}else{var o=i;t-=2;for(var l=n.getUint8(a++),s=0;s<o+1;s++)r.push(l)}}return r}function v(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function y(e){var t=new Uint8Array(m(e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size))),r=new Uint8Array(t.length);return d(t),f(t,r),new DataView(r.buffer)}function w(e){var t=eW(e.array.slice(e.offset.value,e.offset.value+e.size)),r=new Uint8Array(t.length);return d(t),f(t,r),new DataView(r.buffer)}function b(e){for(var t=e.viewer,r={value:e.offset.value},a=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),n=new Uint8Array(8192),i=0,o=Array(e.channels),s=0;s<e.channels;s++)o[s]={},o[s].start=i,o[s].end=o[s].start,o[s].nx=e.width,o[s].ny=e.lines,o[s].size=e.type,i+=o[s].nx*o[s].ny*o[s].size;var l=O(t,r),d=O(t,r);if(d>=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(l<=d)for(var s=0;s<d-l+1;s++)n[s+l]=P(t,r);var f=new Uint16Array(65536),m=function(e,t){for(var r=0,a=0;a<65536;++a)(0==a||e[a>>3]&1<<(7&a))&&(t[r++]=a);for(var n=r-1;r<65536;)t[r++]=0;return n}(n,f),g=T(t,r);p(e.array,t,r,g,a,i);for(var s=0;s<e.channels;++s)for(var v=o[s],y=0;y<o[s].size;++y)!function(e,t,r,a,n,i,o){for(var s=o<16384,l=r>n?n:r,p=1;p<=l;)p<<=1;for(p>>=1,d=p,p>>=1;p>=1;){for(var d,f,m,g,v,y=0,w=0+i*(n-d),b=i*p,M=i*d,x=a*p,_=a*d;y<=w;y+=M){for(var E=y,T=y+a*(r-d);E<=T;E+=_){var S=E+x,P=E+b,A=P+x;s?(u(e[E+t],e[P+t]),f=h.a,g=h.b,u(e[S+t],e[A+t]),m=h.a,v=h.b,u(f,m),e[E+t]=h.a,e[S+t]=h.b,u(g,v)):(c(e[E+t],e[P+t]),f=h.a,g=h.b,c(e[S+t],e[A+t]),m=h.a,v=h.b,c(f,m),e[E+t]=h.a,e[S+t]=h.b,c(g,v)),e[P+t]=h.a,e[A+t]=h.b}if(r&p){var P=E+b;s?u(e[E+t],e[P+t]):c(e[E+t],e[P+t]),f=h.a,e[P+t]=h.b,e[E+t]=f}}if(n&p)for(var E=y,T=y+a*(r-d);E<=T;E+=_){var S=E+x;s?u(e[E+t],e[S+t]):c(e[E+t],e[S+t]),f=h.a,e[S+t]=h.b,e[E+t]=f}d=p,p>>=1}}(a,v.start+y,v.nx,v.size,v.ny,v.nx*v.size,m);for(var w=i,b=0;b<w;++b)a[b]=f[a[b]];for(var M=0,x=new Uint8Array(a.buffer.byteLength),_=0;_<e.lines;_++)for(var E=0;E<e.channels;E++){var v=o[E],S=v.nx*v.size,A=new Uint8Array(a.buffer,2*v.end,2*S);x.set(A,M),M+=2*S,v.end+=S}return new DataView(x.buffer)}function M(e){var t=eW(e.array.slice(e.offset.value,e.offset.value+e.size));let r=e.lines*e.channels*e.width,a=1==e.type?new Uint16Array(r):new Uint32Array(r),n=0,i=0,o=[,,,,];for(let r=0;r<e.lines;r++)for(let r=0;r<e.channels;r++){let r=0;switch(e.type){case 1:o[0]=n,o[1]=o[0]+e.width,n=o[1]+e.width;for(let n=0;n<e.width;++n)r+=t[o[0]++]<<8|t[o[1]++],a[i]=r,i++;break;case 2:o[0]=n,o[1]=o[0]+e.width,o[2]=o[1]+e.width,n=o[2]+e.width;for(let n=0;n<e.width;++n)r+=t[o[0]++]<<24|t[o[1]++]<<16|t[o[2]++]<<8,a[i]=r,i++}}return new DataView(a.buffer)}function x(e){var t=e.viewer,r={value:e.offset.value},a=new Uint8Array(e.width*e.lines*(e.channels*e.type*2)),n={version:A(t,r),unknownUncompressedSize:A(t,r),unknownCompressedSize:A(t,r),acCompressedSize:A(t,r),dcCompressedSize:A(t,r),rleCompressedSize:A(t,r),rleUncompressedSize:A(t,r),rleRawSize:A(t,r),totalAcUncompressedCount:A(t,r),totalDcUncompressedCount:A(t,r),acCompression:A(t,r)};if(n.version<2)throw"EXRLoader.parse: "+U.compression+" version "+n.version+" is unsupported";for(var i=[],o=O(t,r)-2;o>0;){var s=_(t.buffer,r),l=P(t,r),h=l>>2&3,u=new Int8Array([(l>>4)-1])[0],c=P(t,r);i.push({name:s,index:u,type:c,compression:h}),o-=s.length+3}for(var d=U.channels,f=Array(e.channels),v=0;v<e.channels;++v){var y=f[v]={},b=d[v];y.name=b.name,y.compression=0,y.decoded=!1,y.type=b.pixelType,y.pLinear=b.pLinear,y.width=e.width,y.height=e.lines}for(var M={idx:[,,,]},x=0;x<e.channels;++x)for(var y=f[x],v=0;v<i.length;++v){var E=i[v];y.name==E.name&&(y.compression=E.compression,E.index>=0&&(M.idx[E.index]=x),y.offset=x)}if(n.acCompressedSize>0)switch(n.acCompression){case 0:var T=new Uint16Array(n.totalAcUncompressedCount);p(e.array,t,r,n.acCompressedSize,T,n.totalAcUncompressedCount);break;case 1:var S=e.array.slice(r.value,r.value+n.totalAcUncompressedCount),I=eW(S),T=new Uint16Array(I.buffer);r.value+=n.totalAcUncompressedCount}if(n.dcCompressedSize>0){var C=new Uint16Array(w({array:e.array,offset:r,size:n.dcCompressedSize}).buffer);r.value+=n.dcCompressedSize}if(n.rleRawSize>0){var S=e.array.slice(r.value,r.value+n.rleCompressedSize),I=eW(S),j=m(I.buffer);r.value+=n.rleCompressedSize}for(var F=0,k=Array(f.length),v=0;v<k.length;++v)k[v]=[];for(var L=0;L<e.lines;++L)for(var D=0;D<f.length;++D)k[D].push(F),F+=f[D].width*e.type*2;!function(e,t,r,a,n,i){var o=new DataView(i.buffer),s=r[e.idx[0]].width,l=r[e.idx[0]].height,h=Math.floor(s/8),u=Math.ceil(s/8),c=Math.ceil(l/8),p=s-(u-1)*8,d=l-(c-1)*8,f={value:0},m=[,,,],v=[,,,],y=[,,,],w=[,,,],b=[,,,];for(let r=0;r<3;++r)b[r]=t[e.idx[r]],m[r]=r<1?0:m[r-1]+u*c,v[r]=new Float32Array(64),y[r]=new Uint16Array(64),w[r]=new Uint16Array(64*u);for(let t=0;t<c;++t){var M,x,_=8;t==c-1&&(_=d);var E=8;for(let e=0;e<u;++e){e==u-1&&(E=p);for(let e=0;e<3;++e){y[e].fill(0),y[e][0]=n[m[e]++],function(e,t,r){for(var a,n=1;n<64;)65280==(a=t[e.value])?n=64:a>>8==255?n+=255&a:(r[n]=a,n++),e.value++}(f,a,y[e]),M=y[e],(x=v[e])[0]=R(M[0]),x[1]=R(M[1]),x[2]=R(M[5]),x[3]=R(M[6]),x[4]=R(M[14]),x[5]=R(M[15]),x[6]=R(M[27]),x[7]=R(M[28]),x[8]=R(M[2]),x[9]=R(M[4]),x[10]=R(M[7]),x[11]=R(M[13]),x[12]=R(M[16]),x[13]=R(M[26]),x[14]=R(M[29]),x[15]=R(M[42]),x[16]=R(M[3]),x[17]=R(M[8]),x[18]=R(M[12]),x[19]=R(M[17]),x[20]=R(M[25]),x[21]=R(M[30]),x[22]=R(M[41]),x[23]=R(M[43]),x[24]=R(M[9]),x[25]=R(M[11]),x[26]=R(M[18]),x[27]=R(M[24]),x[28]=R(M[31]),x[29]=R(M[40]),x[30]=R(M[44]),x[31]=R(M[53]),x[32]=R(M[10]),x[33]=R(M[19]),x[34]=R(M[23]),x[35]=R(M[32]),x[36]=R(M[39]),x[37]=R(M[45]),x[38]=R(M[52]),x[39]=R(M[54]),x[40]=R(M[20]),x[41]=R(M[22]),x[42]=R(M[33]),x[43]=R(M[38]),x[44]=R(M[46]),x[45]=R(M[51]),x[46]=R(M[55]),x[47]=R(M[60]),x[48]=R(M[21]),x[49]=R(M[34]),x[50]=R(M[37]),x[51]=R(M[47]),x[52]=R(M[50]),x[53]=R(M[56]),x[54]=R(M[59]),x[55]=R(M[61]),x[56]=R(M[35]),x[57]=R(M[36]),x[58]=R(M[48]),x[59]=R(M[49]),x[60]=R(M[57]),x[61]=R(M[58]),x[62]=R(M[62]),x[63]=R(M[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),a=.5*Math.cos(3*3.14159/16),n=.5*Math.cos(3*3.14159/8);for(var i=[,,,,],o=[,,,,],s=[,,,,],l=[,,,,],h=0;h<8;++h){var u=8*h;i[0]=r*e[u+2],i[1]=n*e[u+2],i[2]=r*e[u+6],i[3]=n*e[u+6],o[0]=t*e[u+1]+a*e[u+3]+.2777854612564676*e[u+5]+.09754573032714427*e[u+7],o[1]=a*e[u+1]-.09754573032714427*e[u+3]-t*e[u+5]-.2777854612564676*e[u+7],o[2]=.2777854612564676*e[u+1]-t*e[u+3]+.09754573032714427*e[u+5]+a*e[u+7],o[3]=.09754573032714427*e[u+1]-.2777854612564676*e[u+3]+a*e[u+5]-t*e[u+7],s[0]=.35355362513961314*(e[u+0]+e[u+4]),s[3]=.35355362513961314*(e[u+0]-e[u+4]),s[1]=i[0]+i[3],s[2]=i[1]-i[2],l[0]=s[0]+s[1],l[1]=s[3]+s[2],l[2]=s[3]-s[2],l[3]=s[0]-s[1],e[u+0]=l[0]+o[0],e[u+1]=l[1]+o[1],e[u+2]=l[2]+o[2],e[u+3]=l[3]+o[3],e[u+4]=l[3]-o[3],e[u+5]=l[2]-o[2],e[u+6]=l[1]-o[1],e[u+7]=l[0]-o[0]}for(var c=0;c<8;++c)i[0]=r*e[16+c],i[1]=n*e[16+c],i[2]=r*e[48+c],i[3]=n*e[48+c],o[0]=t*e[8+c]+a*e[24+c]+.2777854612564676*e[40+c]+.09754573032714427*e[56+c],o[1]=a*e[8+c]-.09754573032714427*e[24+c]-t*e[40+c]-.2777854612564676*e[56+c],o[2]=.2777854612564676*e[8+c]-t*e[24+c]+.09754573032714427*e[40+c]+a*e[56+c],o[3]=.09754573032714427*e[8+c]-.2777854612564676*e[24+c]+a*e[40+c]-t*e[56+c],s[0]=.35355362513961314*(e[c]+e[32+c]),s[3]=.35355362513961314*(e[c]-e[32+c]),s[1]=i[0]+i[3],s[2]=i[1]-i[2],l[0]=s[0]+s[1],l[1]=s[3]+s[2],l[2]=s[3]-s[2],l[3]=s[0]-s[1],e[0+c]=l[0]+o[0],e[8+c]=l[1]+o[1],e[16+c]=l[2]+o[2],e[24+c]=l[3]+o[3],e[32+c]=l[3]-o[3],e[40+c]=l[2]-o[2],e[48+c]=l[1]-o[1],e[56+c]=l[0]-o[0]}(v[e])}for(var T=v,S=0;S<64;++S){var P=T[0][S],A=T[1][S],I=T[2][S];T[0][S]=P+1.5747*I,T[1][S]=P-.1873*A-.4682*I,T[2][S]=P+1.8556*A}for(let t=0;t<3;++t)!function(e,t,r){for(var a,n=0;n<64;++n){t[r+n]=g.DataUtils.toHalfFloat((a=e[n])<=1?Math.sign(a)*Math.pow(Math.abs(a),2.2):Math.sign(a)*Math.pow(9.025013291561939,Math.abs(a)-1))}}(v[t],w[t],64*e)}let i=0;for(let a=0;a<3;++a){let n=r[e.idx[a]].type;for(let e=8*t;e<8*t+_;++e){i=b[a][e];for(let t=0;t<h;++t){let r=64*t+(7&e)*8;o.setUint16(i+0*n,w[a][r+0],!0),o.setUint16(i+2*n,w[a][r+1],!0),o.setUint16(i+4*n,w[a][r+2],!0),o.setUint16(i+6*n,w[a][r+3],!0),o.setUint16(i+8*n,w[a][r+4],!0),o.setUint16(i+10*n,w[a][r+5],!0),o.setUint16(i+12*n,w[a][r+6],!0),o.setUint16(i+14*n,w[a][r+7],!0),i+=16*n}}if(h!=u)for(let e=8*t;e<8*t+_;++e){let t=b[a][e]+8*h*2*n,r=64*h+(7&e)*8;for(let e=0;e<E;++e)o.setUint16(t+2*e*n,w[a][r+e],!0)}}}for(var C=new Uint16Array(s),o=new DataView(i.buffer),O=0;O<3;++O){r[e.idx[O]].decoded=!0;var j=r[e.idx[O]].type;if(2==r[O].type)for(var F=0;F<l;++F){let e=b[O][F];for(var k=0;k<s;++k)C[k]=o.getUint16(e+2*k*j,!0);for(var k=0;k<s;++k)o.setFloat32(e+2*k*j,R(C[k]),!0)}}}(M,k,f,T,C,a);for(var v=0;v<f.length;++v){var y=f[v];if(!y.decoded)if(2===y.compression)for(var z=0,B=0,L=0;L<e.lines;++L){for(var N=k[v][z],H=0;H<y.width;++H){for(var W=0;W<2*y.type;++W)a[N++]=j[B+W*y.width*y.height];B++}z++}else throw"EXRLoader.parse: unsupported channel compression"}return new DataView(a.buffer)}function _(e,t){for(var r=new Uint8Array(e),a=0;0!=r[t.value+a];)a+=1;var n=new TextDecoder().decode(r.slice(t.value,t.value+a));return t.value=t.value+a+1,n}function E(e,t){var r=e.getInt32(t.value,!0);return t.value=t.value+4,r}function T(e,t){var r=e.getUint32(t.value,!0);return t.value=t.value+4,r}function S(e,t){var r=e[t.value];return t.value=t.value+1,r}function P(e,t){var r=e.getUint8(t.value);return t.value=t.value+1,r}let A=function(e,t){let r;return r="getBigInt64"in DataView.prototype?Number(e.getBigInt64(t.value,!0)):e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,r};function I(e,t){var r=e.getFloat32(t.value,!0);return t.value+=4,r}function C(e,t){return g.DataUtils.toHalfFloat(I(e,t))}function R(e){var t=(31744&e)>>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 O(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function j(e,t){return R(O(e,t))}let F=new DataView(e),k=new Uint8Array(e),L={value:0},U=function(e,t,r){let a={};if(0x1312f76!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";a.version=e.getUint8(4);let n=e.getUint8(5);a.spec={singleTile:!!(2&n),longName:!!(4&n),deepFormat:!!(8&n),multiPart:!!(16&n)},r.value=8;for(var i=!0;i;){var o=_(t,r);if(0==o)i=!1;else{var s=_(t,r),l=T(e,r),h=function(e,t,r,a,n){var i,o,s,l,h,u,c;if("string"===a||"stringvector"===a||"iccProfile"===a)return i=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+n)),r.value=r.value+n,i;if("chlist"===a)return function(e,t,r,a){for(var n=r.value,i=[];r.value<n+a-1;){var o=_(t,r),s=E(e,r),l=P(e,r);r.value+=3;var h=E(e,r),u=E(e,r);i.push({name:o,pixelType:s,pLinear:l,xSampling:h,ySampling:u})}return r.value+=1,i}(e,t,r,n);if("chromaticities"===a)return o=I(e,r),s=I(e,r),l=I(e,r),h=I(e,r),u=I(e,r),{redX:o,redY:s,greenX:l,greenY:h,blueX:u,blueY:I(e,r),whiteX:I(e,r),whiteY:I(e,r)};if("compression"===a)return["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"][P(e,r)];if("box2i"===a)return c=T(e,r),{xMin:c,yMin:T(e,r),xMax:T(e,r),yMax:T(e,r)};else if("lineOrder"===a)return["INCREASING_Y"][P(e,r)];else if("float"===a)return I(e,r);else if("v2f"===a)return[I(e,r),I(e,r)];else if("v3f"===a)return[I(e,r),I(e,r),I(e,r)];else if("int"===a)return E(e,r);else if("rational"===a)return[E(e,r),T(e,r)];else if("timecode"===a)return[T(e,r),T(e,r)];else return"preview"===a?(r.value+=n,"skipped"):(r.value+=n,void 0)}(e,t,r,s,l);void 0===h?console.warn(`EXRLoader.parse: skipped unknown header attribute type '${s}'.`):a[o]=h}}if((-5&n)!=0)throw console.error("EXRHeader:",a),"THREE.EXRLoader: provided file is currently unsupported.";return a}(F,e,L),D=function(e,t,r,a,n){let i={size:0,viewer:t,array:r,offset:a,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,bytesPerLine:null,lines:null,inputSize:null,type:e.channels[0].pixelType,uncompress:null,getter:null,format:null,[e9?"colorSpace":"encoding"]:null};switch(e.compression){case"NO_COMPRESSION":i.lines=1,i.uncompress=v;break;case"RLE_COMPRESSION":i.lines=1,i.uncompress=y;break;case"ZIPS_COMPRESSION":i.lines=1,i.uncompress=w;break;case"ZIP_COMPRESSION":i.lines=16,i.uncompress=w;break;case"PIZ_COMPRESSION":i.lines=32,i.uncompress=b;break;case"PXR24_COMPRESSION":i.lines=16,i.uncompress=M;break;case"DWAA_COMPRESSION":i.lines=32,i.uncompress=x;break;case"DWAB_COMPRESSION":i.lines=256,i.uncompress=x;break;default:throw"EXRLoader.parse: "+e.compression+" is unsupported"}if(i.scanlineBlockSize=i.lines,1==i.type)switch(n){case g.FloatType:i.getter=j,i.inputSize=2;break;case g.HalfFloatType:i.getter=O,i.inputSize=2}else if(2==i.type)switch(n){case g.FloatType:i.getter=I,i.inputSize=4;break;case g.HalfFloatType:i.getter=C,i.inputSize=4}else throw"EXRLoader.parse: unsupported pixelType "+i.type+" for "+e.compression+".";i.blockCount=(e.dataWindow.yMax+1)/i.scanlineBlockSize;for(var o=0;o<i.blockCount;o++)A(t,a);i.outputChannels=3==i.channels?4:i.channels;let s=i.width*i.height*i.outputChannels;switch(n){case g.FloatType:i.byteArray=new Float32Array(s),i.channels<i.outputChannels&&i.byteArray.fill(1,0,s);break;case g.HalfFloatType:i.byteArray=new Uint16Array(s),i.channels<i.outputChannels&&i.byteArray.fill(15360,0,s);break;default:console.error("THREE.EXRLoader: unsupported type: ",n)}return i.bytesPerLine=i.width*i.inputSize*i.channels,4==i.outputChannels?i.format=g.RGBAFormat:i.format=g.RedFormat,e9?i.colorSpace="srgb-linear":i.encoding=3e3,i}(U,F,k,L,this.type),z={value:0},B={R:0,G:1,B:2,A:3,Y:0};for(let e=0;e<D.height/D.scanlineBlockSize;e++){let t=T(F,L);D.size=T(F,L),D.lines=t+D.scanlineBlockSize>D.height?D.height-t:D.scanlineBlockSize;let r=D.size<D.lines*D.bytesPerLine?D.uncompress(D):v(D);L.value+=D.size;for(let t=0;t<D.scanlineBlockSize;t++){let a=t+e*D.scanlineBlockSize;if(a>=D.height)break;for(let e=0;e<D.channels;e++){let n=B[U.channels[e].name];for(let i=0;i<D.width;i++){z.value=(t*(D.channels*D.width)+e*D.width+i)*D.inputSize;let o=(D.height-1-a)*(D.width*D.outputChannels)+i*D.outputChannels+n;D.byteArray[o]=D.getter(r,z)}}}}return{header:U,width:D.width,height:D.height,data:D.byteArray,format:D.format,[e9?"colorSpace":"encoding"]:D[e9?"colorSpace":"encoding"],type:this.type}}setDataType(e){return this.type=e,this}load(e,t,r,a){return super.load(e,function(e,r){e9?e.colorSpace=r.colorSpace:e.encoding=r.encoding,e.minFilter=g.LinearFilter,e.magFilter=g.LinearFilter,e.generateMipmaps=!1,e.flipY=!1,t&&t(e,r)},r,a)}}var tt=e.i(8560);let tr=(e,t,r)=>{let a;switch(e){case h.UnsignedByteType:a=new Uint8ClampedArray(t*r*4);break;case h.HalfFloatType:a=new Uint16Array(t*r*4);break;case h.UnsignedIntType:a=new Uint32Array(t*r*4);break;case h.ByteType:a=new Int8Array(t*r*4);break;case h.ShortType:a=new Int16Array(t*r*4);break;case h.IntType:a=new Int32Array(t*r*4);break;case h.FloatType:a=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return a};class ta{_renderer;_rendererIsDisposable=!1;_material;_scene;_camera;_quad;_renderTarget;_width;_height;_type;_colorSpace;_supportsReadPixels=!0;constructor(e){this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace=e.colorSpace;const r={format:h.RGBAFormat,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:e.renderTargetOptions?.anisotropy!==void 0?e.renderTargetOptions?.anisotropy:1,generateMipmaps:e.renderTargetOptions?.generateMipmaps!==void 0&&e.renderTargetOptions?.generateMipmaps,magFilter:e.renderTargetOptions?.magFilter!==void 0?e.renderTargetOptions?.magFilter:h.LinearFilter,minFilter:e.renderTargetOptions?.minFilter!==void 0?e.renderTargetOptions?.minFilter:h.LinearFilter,samples:e.renderTargetOptions?.samples!==void 0?e.renderTargetOptions?.samples:void 0,wrapS:e.renderTargetOptions?.wrapS!==void 0?e.renderTargetOptions?.wrapS:h.ClampToEdgeWrapping,wrapT:e.renderTargetOptions?.wrapT!==void 0?e.renderTargetOptions?.wrapT:h.ClampToEdgeWrapping};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=ta.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new h.Scene,this._camera=new h.OrthographicCamera,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,r,a,n)=>{if(void 0!==t)return t;let i=new h.WebGLRenderTarget(1,1,n);r.setRenderTarget(i);let o=new h.Mesh(new h.PlaneGeometry,new h.MeshBasicMaterial({color:0xffffff}));r.render(o,a),r.setRenderTarget(null);let s=tr(e,i.width,i.height);return r.readRenderTargetPixels(i,0,0,i.width,i.height,s),i.dispose(),o.geometry.dispose(),o.material.dispose(),t=0!==s[0]})(this._type,this._renderer,this._camera,r)){let e;this._type===h.HalfFloatType&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?h.FloatType:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${h.FloatType}`),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 h.Mesh(new h.PlaneGeometry,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new h.WebGLRenderTarget(this.width,this.height,r),this._renderTarget.texture.mapping=e.renderTargetOptions?.mapping!==void 0?e.renderTargetOptions?.mapping:h.UVMapping}static instantiateRenderer(){let e=new tt.WebGLRenderer;return e.setSize(128,128),e}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)};toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=tr(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 h.DataTexture(this.toArray(),this.width,this.height,h.RGBAFormat,this._type,e?.mapping||h.UVMapping,e?.wrapS||h.ClampToEdgeWrapping,e?.wrapT||h.ClampToEdgeWrapping,e?.magFilter||h.LinearFilter,e?.minFilter||h.LinearFilter,e?.anisotropy||1,h.LinearSRGBColorSpace);return t.generateMipmaps=e?.generateMipmaps!==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 h.ShaderMaterial&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof h.Texture&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof h.Texture&&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}}var tn=h;class ti extends Error{}class to extends Error{}let ts=(e,t,r)=>{let a=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(a)return a[1];let n=RegExp(`<${t}[^>]*>([\\s\\S]*?)</${t}>`,"i").exec(e);if(n){let e=n[1].match(/<rdf:li>([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):n[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)};class tl{options;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 a,n=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,s=2,l=0;for(;s<o;){if(++l>250)return void r(Error(`Found no marker after ${l} loops 😵`));if(255!==i.getUint8(s))return void r(Error(`Not a valid marker at offset 0x${s.toString(16)}, found: 0x${i.getUint8(s).toString(16)}`));if(a=i.getUint8(s+1),n&&console.log(`Marker: ${a.toString(16)}`),226===a){n&&console.log("Found APP2 marker (0xffe2)");let e=s+4;if(0x4d504600===i.getUint32(e)){let a,n=e+4;if(18761===i.getUint16(n))a=!1;else{if(19789!==i.getUint16(n))return void r(Error("No valid endianness marker found in TIFF header"));a=!0}if(42!==i.getUint16(n+2,!a))return void r(Error("Not valid TIFF data! (no 0x002A marker)"));let o=i.getUint32(n+4,!a);if(o<8)return void r(Error("Not valid TIFF data! (First offset less than 8)"));let s=n+o,l=i.getUint16(s,!a),h=s+2,u=0;for(let e=h;e<h+12*l;e+=12)45057===i.getUint16(e,!a)&&(u=i.getUint32(e+8,!a));let c=s+2+12*l+4,p=[];for(let e=c;e<c+16*u;e+=16){let t={MPType:i.getUint32(e,!a),size:i.getUint32(e+4,!a),dataOffset:i.getUint32(e+8,!a),dependantImages:i.getUint32(e+12,!a),start:-1,end:-1,isFII:!1};t.dataOffset?(t.start=n+t.dataOffset,t.isFII=!1):(t.start=0,t.isFII=!0),t.end=t.start+t.size,p.push(t)}if(this.options.extractNonFII&&p.length){let e=new Blob([i]),r=[];for(let t of p){if(t.isFII&&!this.options.extractFII)continue;let a=e.slice(t.start,t.end+1,"image/jpeg");r.push(a)}t(r)}}}s+=2+i.getUint16(s+2)}})}}let th=async e=>{let t=(e=>{let t,r=(t="u">typeof TextDecoder?new TextDecoder().decode(e):e.toString()).indexOf("<x:xmpmeta");for(;-1!==r;){let e=t.indexOf("x:xmpmeta>",r),a=t.slice(r,e+10);try{let e=ts(a,"hdrgm:GainMapMin","0"),t=ts(a,"hdrgm:GainMapMax"),r=ts(a,"hdrgm:Gamma","1"),n=ts(a,"hdrgm:OffsetSDR","0.015625"),i=ts(a,"hdrgm:OffsetHDR","0.015625"),o=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(a),s=o?o[1]:"0",l=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(a);if(!l)throw Error("Incomplete gainmap metadata");let h=l[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(n)?n.map(e=>parseFloat(e)):[parseFloat(n),parseFloat(n),parseFloat(n)],offsetHdr:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],hdrCapacityMin:parseFloat(s),hdrCapacityMax:parseFloat(h)}}catch(e){}r=t.indexOf("<x:xmpmeta",e)}})(e);if(!t)throw new to("Gain map XMP metadata not found");let r=new tl({extractFII:!0,extractNonFII:!0}),a=await r.extract(e);if(2!==a.length)throw new ti("Gain map recovery image not found");return{sdr:new Uint8Array(await a[0].arrayBuffer()),gainMap:new Uint8Array(await a[1].arrayBuffer()),metadata:t}},tu=e=>new Promise((t,r)=>{let a=document.createElement("img");a.onload=()=>{t(a)},a.onerror=e=>{r(e)},a.src=URL.createObjectURL(e)});class tc extends tn.Loader{_renderer;_renderTargetOptions;_internalLoadingManager;_config;constructor(e,t){super(t),this._config=e,e.renderer&&(this._renderer=e.renderer),this._internalLoadingManager=new tn.LoadingManager}setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: A 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=this._config.createMaterial({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 tn.Texture,sdr:new tn.Texture});return this._config.createQuadRenderer({width:16,height:16,type:tn.HalfFloatType,colorSpace:tn.LinearSRGBColorSpace,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async processImages(e,t,r){let a,n,i=t?new Blob([t],{type:"image/jpeg"}):void 0,o=new Blob([e],{type:"image/jpeg"}),s=!1;if("u"<typeof createImageBitmap){let e=await Promise.all([i?tu(i):Promise.resolve(void 0),tu(o)]);n=e[0],a=e[1],s="flipY"===r}else{let e=await Promise.all([i?createImageBitmap(i,{imageOrientation:r||"flipY"}):Promise.resolve(void 0),createImageBitmap(o,{imageOrientation:r||"flipY"})]);n=e[0],a=e[1]}return{sdrImage:a,gainMapImage:n,needsFlip:s}}createTextures(e,t,r){let a=new tn.Texture(t||new ImageData(2,2),tn.UVMapping,tn.ClampToEdgeWrapping,tn.ClampToEdgeWrapping,tn.LinearFilter,tn.LinearMipMapLinearFilter,tn.RGBAFormat,tn.UnsignedByteType,1,tn.LinearSRGBColorSpace);a.flipY=r,a.needsUpdate=!0;let n=new tn.Texture(e,tn.UVMapping,tn.ClampToEdgeWrapping,tn.ClampToEdgeWrapping,tn.LinearFilter,tn.LinearMipMapLinearFilter,tn.RGBAFormat,tn.UnsignedByteType,1,tn.SRGBColorSpace);return n.flipY=r,n.needsUpdate=!0,{gainMap:a,sdr:n}}updateQuadRenderer(e,t,r,a,n){e.width=t.width,e.height=t.height,e.material.gainMap=r,e.material.sdr=a,e.material.gainMapMin=n.gainMapMin,e.material.gainMapMax=n.gainMapMax,e.material.offsetHdr=n.offsetHdr,e.material.offsetSdr=n.offsetSdr,e.material.gamma=n.gamma,e.material.hdrCapacityMin=n.hdrCapacityMin,e.material.hdrCapacityMax=n.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,n.hdrCapacityMax),e.material.needsUpdate=!0}}var tp=h;let td=`
|
|
82
|
-
varying vec2 vUv;
|
|
83
|
-
|
|
84
|
-
void main() {
|
|
85
|
-
vUv = uv;
|
|
86
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
87
|
-
}
|
|
88
|
-
`,tf=`
|
|
89
|
-
// min half float value
|
|
90
|
-
#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 )
|
|
91
|
-
// max half float value
|
|
92
|
-
#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 )
|
|
93
|
-
|
|
94
|
-
uniform sampler2D sdr;
|
|
95
|
-
uniform sampler2D gainMap;
|
|
96
|
-
uniform vec3 gamma;
|
|
97
|
-
uniform vec3 offsetHdr;
|
|
98
|
-
uniform vec3 offsetSdr;
|
|
99
|
-
uniform vec3 gainMapMin;
|
|
100
|
-
uniform vec3 gainMapMax;
|
|
101
|
-
uniform float weightFactor;
|
|
102
|
-
|
|
103
|
-
varying vec2 vUv;
|
|
104
|
-
|
|
105
|
-
void main() {
|
|
106
|
-
vec3 rgb = texture2D( sdr, vUv ).rgb;
|
|
107
|
-
vec3 recovery = texture2D( gainMap, vUv ).rgb;
|
|
108
|
-
vec3 logRecovery = pow( recovery, gamma );
|
|
109
|
-
vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery;
|
|
110
|
-
vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr;
|
|
111
|
-
vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor ));
|
|
112
|
-
gl_FragColor = vec4( clampedHdrColor , 1.0 );
|
|
113
|
-
}
|
|
114
|
-
`;class tm extends tp.ShaderMaterial{_maxDisplayBoost;_hdrCapacityMin;_hdrCapacityMax;constructor({gamma:e,offsetHdr:t,offsetSdr:r,gainMapMin:a,gainMapMax:n,maxDisplayBoost:i,hdrCapacityMin:o,hdrCapacityMax:s,sdr:l,gainMap:h}){super({name:"GainMapDecoderMaterial",vertexShader:td,fragmentShader:tf,uniforms:{sdr:{value:l},gainMap:{value:h},gamma:{value:new tp.Vector3(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new tp.Vector3().fromArray(t)},offsetSdr:{value:new tp.Vector3().fromArray(r)},gainMapMin:{value:new tp.Vector3().fromArray(a)},gainMapMax:{value:new tp.Vector3().fromArray(n)},weightFactor:{value:(Math.log2(i)-o)/(s-o)}},blending:tp.NoBlending,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))}}tt.WebGLRenderer;class tg extends tc{constructor(e,t){super({renderer:e,createMaterial:e=>new tm(e),createQuadRenderer:e=>new ta(e)},t)}async render(e,t,r,a){let{sdrImage:n,gainMapImage:i,needsFlip:o}=await this.processImages(r,a,"flipY"),{gainMap:s,sdr:l}=this.createTextures(n,i,o);this.updateQuadRenderer(e,n,s,l,t),e.render()}}class tv extends tg{load([e,t,r],a,n,i){let o,s,l,h=this.prepareQuadRenderer(),u=async()=>{if(o&&s&&l){try{await this.render(h,l,o,s)}catch(a){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof i&&i(a),h.disposeOnDemandRenderer();return}"function"==typeof a&&a(h),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),h.disposeOnDemandRenderer()}},c=!0,p=0,d=0,f=!0,m=0,g=0,v=!0,y=0,w=0,b=()=>{"function"==typeof n&&n(new ProgressEvent("progress",{lengthComputable:c&&f&&v,loaded:d+g+w,total:p+m+y}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let M=new tp.FileLoader(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 u()},e=>{c=e.lengthComputable,d=e.loaded,p=e.total,b()},t=>{this.manager.itemError(e),"function"==typeof i&&i(t)});let x=new tp.FileLoader(this._internalLoadingManager);x.setResponseType("arraybuffer"),x.setRequestHeader(this.requestHeader),x.setPath(this.path),x.setWithCredentials(this.withCredentials),x.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");s=e,await u()},e=>{f=e.lengthComputable,g=e.loaded,m=e.total,b()},e=>{this.manager.itemError(t),"function"==typeof i&&i(e)});let _=new tp.FileLoader(this._internalLoadingManager);return _.setRequestHeader(this.requestHeader),_.setPath(this.path),_.setWithCredentials(this.withCredentials),_.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");l=JSON.parse(e),await u()},e=>{v=e.lengthComputable,w=e.loaded,y=e.total,b()},e=>{this.manager.itemError(r),"function"==typeof i&&i(e)}),h}}class ty extends tg{load(e,t,r,a){let n=this.prepareQuadRenderer(),i=new tp.FileLoader(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,s;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let l=new Uint8Array(r);try{let e=await th(l);i=e.sdr,o=e.gainMap,s=e.metadata}catch(t){if(t instanceof to||t instanceof ti)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),s={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=l;else throw t}try{await this.render(n,s,i.buffer,o?.buffer)}catch(t){this.manager.itemError(e),"function"==typeof a&&a(t),n.disposeOnDemandRenderer();return}"function"==typeof t&&t(n),this.manager.itemEnd(e),n.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof a&&a(t)}),n}}let tw={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"},tb="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",tM=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function tx({files:e=tM,path:t="",preset:r,colorSpace:i,extensions:o}={}){r&&(tT(r),e=tw[r],t=tb);let s=Array.isArray(e),{extension:l,isCubemap:u}=tS(e),c=tP(l);if(!c)throw Error("useEnvironment: Unrecognized file extension: "+e);let p=(0,n.useThree)(e=>e.gl);(0,a.useLayoutEffect)(()=>{("webp"===l||"jpg"===l||"jpeg"===l)&&p.domElement.addEventListener("webglcontextlost",function(){d.useLoader.clear(c,s?[e]:e)},{once:!0})},[e,p.domElement]);let f=(0,d.useLoader)(c,s?[e]:e,e=>{("webp"===l||"jpg"===l||"jpeg"===l)&&e.setRenderer(p),null==e.setPath||e.setPath(t),o&&o(e)}),m=s?f[0]:f;if("jpg"===l||"jpeg"===l||"webp"===l){var g;m=null==(g=m.renderTarget)?void 0:g.texture}return m.mapping=u?h.CubeReflectionMapping:h.EquirectangularReflectionMapping,m.colorSpace=null!=i?i:u?"srgb":"srgb-linear",m}let t_={files:tM,path:"",preset:void 0,extensions:void 0};tx.preload=e=>{let t={...t_,...e},{files:r,path:a=""}=t,{preset:n,extensions:i}=t;n&&(tT(n),r=tw[n],a=tb);let{extension:o}=tS(r);if("webp"===o||"jpg"===o||"jpeg"===o)throw Error("useEnvironment: Preloading gainmaps is not supported");let s=tP(o);if(!s)throw Error("useEnvironment: Unrecognized file extension: "+r);d.useLoader.preload(s,Array.isArray(r)?[r]:r,e=>{null==e.setPath||e.setPath(a),i&&i(e)})};let tE={files:tM,preset:void 0};function tT(e){if(!(e in tw))throw Error("Preset must be one of: "+Object.keys(tw).join(", "))}function tS(e){var t;let r=Array.isArray(e)&&6===e.length,a=Array.isArray(e)&&3===e.length&&e.some(e=>e.endsWith("json")),n=Array.isArray(e)?e[0]:e;return{extension:r?"cube":a?"webp":n.startsWith("data:application/exr")?"exr":n.startsWith("data:application/hdr")?"hdr":n.startsWith("data:image/jpeg")?"jpg":null==(t=n.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:a}}function tP(e){return"cube"===e?h.CubeTextureLoader:"hdr"===e?m:"exr"===e?te:"jpg"===e||"jpeg"===e?ty:"webp"===e?tv:null}function tA(e,t,r,a,n={}){var i,o,l,h,u;let c;n={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...n};let p=(c=u=t||r).current&&c.current.isScene?u.current:u,d=p.background,f=p.environment,m={backgroundBlurriness:p.backgroundBlurriness,backgroundIntensity:p.backgroundIntensity,backgroundRotation:null!=(i=null==(o=p.backgroundRotation)||null==o.clone?void 0:o.clone())?i:[0,0,0],environmentIntensity:p.environmentIntensity,environmentRotation:null!=(l=null==(h=p.environmentRotation)||null==h.clone?void 0:h.clone())?l:[0,0,0]};return"only"!==e&&(p.environment=a),e&&(p.background=a),(0,s.s)(p,n),()=>{"only"!==e&&(p.environment=f),e&&(p.background=d),(0,s.s)(p,m)}}function tI({scene:e,background:t=!1,map:r,...i}){let o=(0,n.useThree)(e=>e.scene);return a.useLayoutEffect(()=>{if(r)return tA(t,e,o,r,i)}),null}function tC({background:e=!1,scene:t,blur:r,backgroundBlurriness:i,backgroundIntensity:o,backgroundRotation:s,environmentIntensity:l,environmentRotation:h,...u}){let c=tx(u),p=(0,n.useThree)(e=>e.scene);return a.useLayoutEffect(()=>tA(e,t,p,c,{backgroundBlurriness:null!=r?r:i,backgroundIntensity:o,backgroundRotation:s,environmentIntensity:l,environmentRotation:h})),a.useEffect(()=>()=>{c.dispose()},[c]),null}function tR({children:e,near:t=.1,far:r=1e3,resolution:s=256,frames:l=1,map:u,background:c=!1,blur:p,backgroundBlurriness:d,backgroundIntensity:f,backgroundRotation:m,environmentIntensity:g,environmentRotation:v,scene:y,files:w,path:b,preset:M,extensions:x}){let _=(0,n.useThree)(e=>e.gl),E=(0,n.useThree)(e=>e.scene),T=a.useRef(null),[S]=a.useState(()=>new h.Scene),P=a.useMemo(()=>{let e=new h.WebGLCubeRenderTarget(s);return e.texture.type=h.HalfFloatType,e},[s]);a.useEffect(()=>()=>{P.dispose()},[P]),a.useLayoutEffect(()=>{if(1===l){let e=_.autoClear;_.autoClear=!0,T.current.update(_,S),_.autoClear=e}return tA(c,y,E,P.texture,{backgroundBlurriness:null!=p?p:d,backgroundIntensity:f,backgroundRotation:m,environmentIntensity:g,environmentRotation:v})},[e,S,P.texture,y,E,c,l,_]);let A=1;return(0,i.useFrame)(()=>{if(l===1/0||A<l){let e=_.autoClear;_.autoClear=!0,T.current.update(_,S),_.autoClear=e,A++}}),a.createElement(a.Fragment,null,(0,o.o)(a.createElement(a.Fragment,null,e,a.createElement("cubeCamera",{ref:T,args:[t,r,P]}),w||M?a.createElement(tC,{background:!0,files:w,preset:M,path:b,extensions:x}):u?a.createElement(tI,{background:!0,map:u,extensions:x}):null),S))}function tO(e){var t,n,i,o;let s=tx(e),h=e.map||s;a.useMemo(()=>(0,l.e)({GroundProjectedEnvImpl:p}),[]),a.useEffect(()=>()=>{s.dispose()},[s]);let u=a.useMemo(()=>[h],[h]),c=null==(t=e.ground)?void 0:t.height,d=null==(n=e.ground)?void 0:n.radius,f=null!=(i=null==(o=e.ground)?void 0:o.scale)?i:1e3;return a.createElement(a.Fragment,null,a.createElement(tI,(0,r.default)({},e,{map:h})),a.createElement("groundProjectedEnvImpl",{args:u,scale:f,height:c,radius:d}))}function tj(e){return e.ground?a.createElement(tO,e):e.map?a.createElement(tI,e):e.children?a.createElement(tR,e):a.createElement(tC,e)}tx.clear=e=>{let t={...tE,...e},{files:r}=t,{preset:a}=t;a&&(tT(a),r=tw[a]);let{extension:n}=tS(r),i=tP(n);if(!i)throw Error("useEnvironment: Unrecognized file extension: "+r);d.useLoader.clear(i,Array.isArray(r)?[r]:r)},e.s(["Environment",()=>tj],43257)},66326,5941,e=>{"use strict";var t=e.i(47167),r=e.i(43476),a=e.i(71645),n=e.i(67561),i=e.i(46991),o=e.i(85709),s=e.i(83402),l=e.i(78140),h=e.i(71753),u=e.i(90072);function c(e,t,r){return e/1.9438444924574*Math.pow(t/10,r)*1.9438444924574}let p=class{draftDepth;draftDepthRatio;draftPosition;draftPositionRatio;forceAngleRad;girth;mastAngleRad;sag;chordMastTop;chordTackLevel;mastWidth;#e=[];#t=[];constructor(e,t,r,a=1){this.chordMastTop=t,this.chordTackLevel=e,this.mastWidth=r;const n=(e,t=1)=>new u.Vector2(t*e**2,2*t*e),i=1.001+.95*(a-1)/10,o=(i-.001)/1e3;let s=n(.001);const l=n(i).clone().sub(s).angle();let h=new u.Vector2(0,0);for(let e=.001;e<=i;e+=o){let t=n(e);t.sub(s),t.rotateAround(h,-l),this.#e.push(t)}this.calcShape(1-.25*(a-1)/10)}calcShape(e=1){this.#t=[];let t=this.chordTackLevel/(this.#e[this.#e.length-1].x-this.#e[0].x);for(let r of this.#e){let a=r.clone().multiplyScalar(t);1!==e&&(a.y*=e),this.#t.push(a)}let r=new u.Vector2(0,0);for(let e of this.#t)e.y>r.y&&(r=e);this.draftDepth=r.y,this.draftPosition=r.x,this.girth=0;let a=null;for(let e of this.#t)null!==a&&(this.girth+=e.distanceTo(a)),a=e;this.sag=this.chordTackLevel-this.girth,this.entryAngleRad=this.#t[1].clone().sub(this.#t[0]).angle(),this.exitAngleRad=this.#t[this.#t.length-1].clone().sub(this.#t[this.#t.length-2]).angle()-2*Math.PI,this.mastAngleRad=this.calcMastAngle(),this.forceAngleRad=(this.entryAngleRad+this.exitAngleRad)/2,this.draftDepthRatio=this.draftDepth/this.chordTackLevel,this.draftPositionRatio=this.draftPosition/this.chordTackLevel}calcMastAngle(){let e=0,t=null,r=this.mastWidth*this.chordTackLevel/this.chordMastTop;for(let a of this.#t){if(null!==t&&(e+=a.distanceTo(t))>=r)return a.angle();t=a}return NaN}getVerticesAngles(e,t,r=null){let a=(this.girth-t)/(e-1),n=0,i=0,o=[],s=null;for(let l of this.#t){if(null!==s&&(((i+=l.distanceTo(s))>=n*a+t||r&&i>r)&&(n++,o.push(l.angle())),n>=e))break;s=l}return o}pointAtGirthDistance(e){let t=0,r=null;for(let a of this.#t)if(null!==r&&(t+=a.distanceTo(r)),r=a,t>=e)return r.clone()}},d=[1,.8,.6];function f(e){return d[Math.min(Math.max(e,0),2)]}function m(e,t){return Math.max(.05,Math.min(1,1-.6*e-.3*t))}function g(e,t){return Math.PI/6*Math.max(0,1-1.9438444924574*t/30)*(1-e)}function v(e,t,r){let a=Math.min(1,1.9438444924574*(e.tws||0)/30),n=t.tension||.5;switch(r){case"mainSheet":return Math.min(1,.5*a+.3*n+.3*t.mainCar);case"jibSheet":return Math.min(1,.5*a+.3*n+.3*t.jibCar);case"vang":return Math.min(1,.6*a+.4*n);case"cunningham":return Math.min(1,.4*a+.6*n);default:return n}}function y(e){let t=Math.max(0,Math.min(1,e));if(t<=.5){let e=2*t;return{r:e,g:1-.3*e,b:0}}return{r:1,g:.7*(1-(t-.5)*2),b:0}}function w({tws:e=0,twa:t=0,awa:r=0,mainCar:a=.5,jibCar:n=.5,tension:i=.5}){let o,s=(o=1.9438444924574*e)>25?2:+(o>18),l=f(s),h=m(a,i),u=m(n,i),c=g(a,e),p=g(n,e),d={tws:e,twa:t,awa:r},w={mainCar:a,jibCar:n,tension:i},b={mainSheet:v(d,w,"mainSheet"),jibSheet:v(d,w,"jibSheet"),vang:v(d,w,"vang"),cunningham:v(d,w,"cunningham")},M={mainSheet:y(b.mainSheet),jibSheet:y(b.jibSheet),vang:y(b.vang),cunningham:y(b.cunningham)};return{reefLevel:s,reefHeightFactor:l,mainCamber:h,jibCamber:u,mainTwist:c,jibTwist:p,tensions:b,tensionColors:M}}e.s(["getReefHeightFactor",()=>f,"updateSailTrim",()=>w],5941);let b=Math.floor(20),M=Math.ceil(160),x={waterlineToMastFootHeight:.45,maxMastRotation:Math.PI/2,maxChordRotationPerSailLevel:Math.PI/3*2},_=({windParams:e={speed:5,hellman:.27},boatParams:t={mastrotation:0,heading:130,speed:5},sailParams:i={mastArea:0,sailArea:0,cunningham:1,angleOfAttack:20},reefLevel:s=0,mainCamber:l=1})=>{let h=(0,o.useSignalKPath)("environment.wind.angleApparent",0),d=(0,o.useSignalKPath)("environment.wind.speedApparent",0);(0,o.useSignalKPath)("navigation.attitude"),(0,o.useSignalKPath)("steering.rudderAngle",0);let m=(0,a.useRef)(),g=(0,a.useRef)(null),v=(0,a.useRef)(0),y=(0,a.useRef)(null),w=(0,a.useRef)(null),_=(0,a.useRef)(),E=(0,a.useRef)({}),T=(0,a.useMemo)(()=>{let e=new u.Group,t=new u.ConeGeometry(.08,.15,12),r=new u.MeshBasicMaterial({color:new u.Color(n.oBlue),opacity:.3,transparent:!0,depthWrite:!1}),a=new u.Mesh(t,r);return a.position.set(0,-.075,0),e.add(a),e},[]);(0,a.useEffect)(()=>{let e=new u.Group,t={};for(let r=0;r<8;r+=.5){let a=T.clone();a.position.set(0,r,0),t[2*r]=a,e.add(a)}return e.position.set(0,0,0),_.current&&_.current.add(e),E.current=t,()=>{e.clear()}},[T]);let{geometry:S,sailClipWidthPerLevel:P}=(0,a.useMemo)(()=>{let e=new u.BufferGeometry,t=[],r=[],a=[];for(let e=0;e<=M;e++){let n,i,o=Math.min(50*e,8e3);o<900?(n=3600,i=3800+-200*o/900):i=n=3600-3210*(o-900)/7100+600*Math.sin((o-900)/7100*Math.PI);let s=0;for(let e=0;e<b;e++){let a=n/(b-1),l=a*e-i,h=a;l>.1&&(h=l>a?0:a-l),t.push(0===e?0:(s+h)/1e3,o/1e3,0),s=0===e?0:s+h,r.push(.35,.38,.42)}a.push(i===n?null:i)}let n=[];for(let e=0;e<M;e++)for(let t=1;t<b;t++){let r=e*b+t;n.push(r-1,r,r+b-1,r,r+b,r+b-1)}return e.setAttribute("position",new u.Float32BufferAttribute(t,3)),e.setAttribute("color",new u.Float32BufferAttribute(r,3)),e.setIndex(n),e.computeVertexNormals(),{geometry:e,sailClipWidthPerLevel:a}},[]);return(0,a.useEffect)(()=>{if(!m.current)return;((e,t)=>{let r=E.current;if(!r)return console.error("apparentWindField is not initialized.");for(let a=0;a<8;a+=.5){let n=c(e,a,t),i=r[2*a];if(!i){console.warn(`Apparent wind field cone at height ${a} is not defined.`);continue}i.scale.set(.1*n,n,.1*n),i.rotation.set(0,-Math.PI,Math.PI/2)}})(d,e.hellman);let r=m.current.geometry,a=r.attributes.position.array;i.cunningham!==y.current&&(w.current=new p(3600,390,200,i.cunningham),y.current=i.cunningham),g.current||(g.current=r.clone());let n=8e3*f(s),o=r.attributes.color,l=o.array,_=1e3*x.waterlineToMastFootHeight,T=h;for(;T<0;)T+=2*Math.PI;for(;T>=2*Math.PI;)T-=2*Math.PI;let S=T>Math.PI?-1:1,A=T;A>Math.PI&&(A=2*Math.PI-A);let I=u.MathUtils.degToRad(i.angleOfAttack),C=w.current.mastAngleRad;A<.01&&(I=0);let R=Math.min(A-I+C,x.maxMastRotation),O=new u.Vector3(0,1,0),j=null;for(let t=0;t<=M;t++){c(d,(50*t+_)/1e3,e.hellman);let r=A-I;r<0?r=0:r>Math.PI/2&&(r=Math.PI/2);let i=r-R;j&&i-j>x.maxChordRotationPerSailLevel&&(i=j+x.maxChordRotationPerSailLevel),j=i;let o=P[t],s=w.current.getVerticesAngles(b,200,o);for(let e=0;e<b;e++){let r=(t*b+e)*3,o=(t*b+e)*3,h=new u.Vector3(g.current.attributes.position.array[r],g.current.attributes.position.array[r+1],g.current.attributes.position.array[r+2]);if(50*t>n){h.y=n/1e3,h.x=0,h.z=0,a[r]=h.x,a[r+1]=h.y,a[r+2]=h.z,l[o]=.2,l[o+1]=.2,l[o+2]=.2;continue}if(l[o]=.35,l[o+1]=.38,l[o+2]=.42,0===e){a[r]=h.x,a[r+1]=h.y,a[r+2]=h.z;continue}h.applyAxisAngle(O,-(i+s[e])*S),a[r]=h.x,a[r+1]=h.y,a[r+2]=h.z}}r.attributes.position.needsUpdate=!0,o.needsUpdate=!0;let F={...t,mastrotation:R*S};m.current&&m.current.rotateY(v.current-F.mastrotation),v.current=F.mastrotation},[d,h,e.hellman,i.cunningham,i.angleOfAttack,t,P,s,l]),(0,r.jsxs)("mesh",{ref:m,position:[0,2,-1],rotation:[0,-Math.PI/2,0],children:[(0,r.jsx)("bufferGeometry",{...S}),(0,r.jsx)("group",{ref:_}),(0,r.jsx)("meshBasicMaterial",{vertexColors:!0,transparent:!0,opacity:.4,side:u.DoubleSide,depthWrite:!1})]})},E=new u.Vector3(0,.7,-6.2),T=new u.Vector3(0,10,-1.05),S=new u.Vector3(0,.9,-2),P=({jibCar:e=.5,camber:t=.8,twist:n=0})=>{let i=(0,o.useSignalKPath)("environment.wind.angleApparent",0),s=(0,o.useSignalKPath)("environment.wind.speedApparent",0),l=(0,a.useRef)(),h=(0,a.useRef)(null),c=(0,a.useMemo)(()=>{let e=new u.BufferGeometry,t=[],r=[];for(let e=0;e<=30;e++){let a=e/30,n=E.x+(T.x-E.x)*a,i=E.y+(T.y-E.y)*a,o=E.z+(T.z-E.z)*a,s=S.x+(T.x-S.x)*a,l=S.y+(T.y-S.y)*a,h=S.z+(T.z-S.z)*a;for(let e=0;e<=8;e++){let a=e/8;t.push(n+(s-n)*a,i+(l-i)*a,o+(h-o)*a),r.push(.35,.38,.42)}}let a=[];for(let e=0;e<30;e++)for(let t=0;t<8;t++){let r=9*e+t,n=r+9;a.push(r,r+1,n),a.push(r+1,n+1,n)}return e.setAttribute("position",new u.Float32BufferAttribute(t,3)),e.setAttribute("color",new u.Float32BufferAttribute(r,3)),e.setIndex(a),e.computeVertexNormals(),e},[]);return(0,a.useEffect)(()=>{if(!l.current)return;let r=l.current.geometry,a=r.attributes.position,o=a.array;h.current||(h.current=new Float32Array(o));let s=h.current,c=i;for(;c<0;)c+=2*Math.PI;for(;c>=2*Math.PI;)c-=2*Math.PI;let p=c>Math.PI?-1:1,d=c;d>Math.PI&&(d=2*Math.PI-d);let f=Math.max(0,Math.min(Math.PI/2,.6*d-.3*e));new u.Vector3(0,1,0);for(let e=0;e<=30;e++){let r=e/30,a=E.x+(T.x-E.x)*r;E.y,T.y,E.y;let i=E.z+(T.z-E.z)*r,l=(f+n*r)*p,h=.8*t*(1-.7*r);for(let t=0;t<=8;t++){let r=(9*e+t)*3,n=t/8,u=s[r],c=s[r+1],d=s[r+2],f=(u+=Math.sin(n*Math.PI)*h*p)-a,m=d-i,g=Math.cos(l),v=Math.sin(l);u=a+f*g-m*v,d=i+f*v+m*g,o[r]=u,o[r+1]=c,o[r+2]=d}}a.needsUpdate=!0,r.computeVertexNormals()},[i,s,e,t,n]),(0,r.jsxs)("mesh",{ref:l,children:[(0,r.jsx)("bufferGeometry",{...c}),(0,r.jsx)("meshBasicMaterial",{vertexColors:!0,transparent:!0,opacity:.4,side:u.DoubleSide,depthWrite:!1})]})},A=`
|
|
115
|
-
void main() {
|
|
116
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
117
|
-
}
|
|
118
|
-
`,I=`
|
|
119
|
-
uniform float tension;
|
|
120
|
-
|
|
121
|
-
void main() {
|
|
122
|
-
vec3 green = vec3(0.06, 0.80, 0.31);
|
|
123
|
-
vec3 orange = vec3(1.00, 0.75, 0.00);
|
|
124
|
-
vec3 red = vec3(0.80, 0.00, 0.03);
|
|
125
|
-
|
|
126
|
-
vec3 color;
|
|
127
|
-
if (tension <= 0.5) {
|
|
128
|
-
color = mix(green, orange, tension * 2.0);
|
|
129
|
-
} else {
|
|
130
|
-
color = mix(orange, red, (tension - 0.5) * 2.0);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
gl_FragColor = vec4(color, 0.85);
|
|
134
|
-
}
|
|
135
|
-
`,C={mainSheet:{label:"Mainsheet",points:[[0,2,1.2],[0,.9,2.5]]},jibSheet:{label:"Jib Sheet",points:[[0,.9,-2],[.8,.9,.5]]},vang:{label:"Vang",points:[[0,1.8,0],[0,.9,-.8]]},cunningham:{label:"Cunningham",points:[[0,2,-.8],[0,.9,-.8]]}},R=({points:e,tension:t})=>{let n=(0,a.useRef)(),i=(0,a.useMemo)(()=>new u.ShaderMaterial({uniforms:{tension:{value:.5}},vertexShader:A,fragmentShader:I,transparent:!0,depthWrite:!1}),[]),o=(0,a.useMemo)(()=>{let t=new u.BufferGeometry,r=new Float32Array(3*e.length);for(let t=0;t<e.length;t++)r[3*t]=e[t][0],r[3*t+1]=e[t][1],r[3*t+2]=e[t][2];return t.setAttribute("position",new u.BufferAttribute(r,3)),t},[e]);return(0,a.useEffect)(()=>{i&&(i.uniforms.tension.value=t)},[t,i]),(0,r.jsx)("line",{ref:n,geometry:o,material:i})},O=({tensions:e={}})=>(0,r.jsx)("group",{children:Object.entries(C).map(([t,a])=>(0,r.jsx)(R,{points:a.points,tension:e[t]||0},t))}),j={backstay:{points:[[0,10,-1.05],[0,.9,3.5]]},vang:{points:[[0,2,.6],[0,.9,-.3]]},cunningham:{points:[[0,3,-1],[0,2,-1]]},outhaul:{points:[[0,2,1.6],[0,2,2.6]]}},F=({points:e,tension:t})=>{let n=(0,a.useRef)(),i=(0,a.useMemo)(()=>{let t=new u.BufferGeometry,r=new Float32Array(3*e.length);for(let t=0;t<e.length;t++)r[3*t]=e[t][0],r[3*t+1]=e[t][1],r[3*t+2]=e[t][2];return t.setAttribute("position",new u.BufferAttribute(r,3)),t},[e]),o=(0,a.useMemo)(()=>(function(e){let t=Math.max(0,Math.min(1,e));if(t<=.25)return new u.Color(t/.25,1,0);if(t<=.5)return new u.Color(1,1-(t-.25)/.25*.35,0);if(t<=.75)return new u.Color(1,.65-(t-.5)/.25*.65,0);let r=(t-.75)/.25;return new u.Color(1-.3*r,0,.8*r)})(t),[t]);return(0,a.useEffect)(()=>{n.current&&n.current.color.copy(o)},[o]),(0,r.jsx)("line",{geometry:i,children:(0,r.jsx)("lineBasicMaterial",{ref:n,color:o,transparent:!0,opacity:.9,depthWrite:!1,linewidth:2})})},k=()=>{let e=(0,o.useSignalKPath)("environment.wind.angleApparent",0),t=(0,o.useSignalKPath)("environment.wind.speedApparent",0),n=(0,a.useMemo)(()=>(function(e,t){let r=e;for(;r<0;)r+=2*Math.PI;for(;r>=2*Math.PI;)r-=2*Math.PI;let a=r>Math.PI?2*Math.PI-r:r,n=Math.max(0,1-a/Math.PI),i=Math.min(1,Math.abs(t)/15);return{backstay:Math.min(1,n*i*.9+.05),vang:Math.min(1,Math.sin(a)*i*.85+.05),cunningham:Math.min(1,n*i*.8),outhaul:Math.min(1,n*i*.75+.05)}})(e,t),[e,t]);return(0,r.jsx)("group",{children:Object.entries(j).map(([e,t])=>(0,r.jsx)(F,{points:t.points,tension:n[e]||0},e))})},L=t.default.env.ASSET_PREFIX||"./",U=(e="default")=>`${L}/boats/${e}/assets/scene-transformed.glb`,D={name:"Default",modelPath:"default",capabilities:["navigation","rudder","sail","color"]};l.useGLTF.preload(U(),`${L}/draco/`),e.s(["default",0,({showSail:e=!1,onUpdateInfoPanel:t,sailTrimData:n=null,...c})=>{let p=(0,a.useRef)(),d=(0,a.useRef)(),f=s.default.getAll(),m=f.preferredWindSpeedPath||"speedTrue",g=f.preferredWindDirectionPath||"angleTrueWater",v=f.preferredHeadingPath||"courseOverGroundTrue",y=(0,a.useMemo)(()=>[`environment.wind.${g}`,`environment.wind.${m}`,"environment.wind.angleTrueWater","environment.wind.speedTrue","environment.wind.angleApparent","environment.wind.speedApparent","performance.beatAngle","performance.polarSpeed","performance.polarSpeedRatio","performance.velocityMadeGood","navigation.speedThroughWater",`navigation.${v}`,"navigation.headingTrue","navigation.courseOverGroundTrue","navigation.position"],[g,m,v]),w=(0,o.useSignalKPaths)(y),b=(0,o.useSignalKPath)("navigation.attitude"),M=(0,o.useSignalKPath)("steering.rudderAngle",0),x=(0,a.useRef)({roll:0,pitch:0,yaw:0}),E=(0,a.useRef)(0);(0,a.useEffect)(()=>{b&&(x.current=b)},[b]),(0,a.useEffect)(()=>{E.current=M},[M]);let[T,S]=(0,a.useState)(()=>s.default.getSelectedBoat()||D);(0,a.useEffect)(()=>{S(s.default.getSelectedBoat()||D)},[f]);let A=(0,a.useMemo)(()=>U(T.modelPath),[T]),I=T?.capabilities||[],{nodes:C,materials:R}=(0,l.useGLTF)(A,`${L}/draco/`),j=(0,a.useMemo)(()=>({primaryColor:f.primaryColor,metallicEffect:f.metallicEffect||!1}),[f.primaryColor,f.metallicEffect]);(0,a.useEffect)(()=>{if("default"===T.modelPath){if(!R?.fiberglass)return;R.fiberglass.color.set(j.primaryColor),R.fiberglass.metalness=+!!j.metallicEffect,R.fiberglass.roughness=j.metallicEffect?.2:1}else p.current&&p.current.traverse(e=>{e.isMesh&&e.material&&(Array.isArray(e.material)?e.material.forEach(e=>{e.color.set(j.primaryColor),e.metalness=+!!j.metallicEffect,e.roughness=j.metallicEffect?.2:1}):(e.material.color.set(j.primaryColor),e.material.metalness=+!!j.metallicEffect,e.material.roughness=j.metallicEffect?.2:1))});Object.values(R).forEach(e=>{e.map&&(e.map.minFilter=u.LinearFilter,e.map.magFilter=u.LinearFilter,e.map.anisotropy=1)})},[R,j,T,p]);let F=(0,a.useMemo)(()=>new u.Matrix4,[]),z=(0,a.useMemo)(()=>new u.Vector3(1,0,0),[]);(0,h.useFrame)(()=>{if(!p.current)return;let e=x.current,t=180*E.current/Math.PI;p.current&&p.current.rotation.set(e.pitch||0,0,2*Math.PI-(e.roll||0)),d.current&&(F.makeRotationFromEuler(new u.Euler(-Math.PI/2,Math.PI/2,0)),d.current.setRotationFromMatrix(F),d.current.rotateOnAxis(z,-u.MathUtils.degToRad(t)))});let B=(0,a.useMemo)(()=>{let e={Default:()=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("mesh",{geometry:C.baba_metal_0.geometry,material:R.metal,position:[.24,.895,-5.546],rotation:[-Math.PI/2,0,1.968],scale:.027}),(0,r.jsx)("mesh",{geometry:C.camadadirek_fiberglass_0.geometry,material:R.fiberglass,position:[0,5.267,-3.711],rotation:[2.054,0,Math.PI],scale:[-.042,.042,4.707]}),(0,r.jsx)("mesh",{geometry:C.camadanyelkeni_bez_0.geometry,material:R.mcaterial,position:[0,5.267,-3.711],rotation:[2.054,0,Math.PI],scale:[-.042,.042,4.707]}),(0,r.jsx)("mesh",{geometry:C.camadaonbaglay_metal_0.geometry,material:R.metal,position:[0,.891,-5.958],rotation:[-Math.PI/2,0,0],scale:.02}),(0,r.jsx)("mesh",{geometry:C.capa_metal_0.geometry,material:R.metal,position:[0,.671,-6.173],rotation:[-Math.PI/2,0,0],scale:.348}),(0,r.jsx)("mesh",{geometry:C.direk_fiberglass_0.geometry,material:R.fiberglass,position:[0,4.315,-1.056],rotation:[Math.PI/2,0,Math.PI],scale:[-.113,.113,5.203]}),(0,r.jsx)("mesh",{geometry:C.duman_ahsap_0.geometry,material:R.ahsap,position:[-.011,.854,3.487],rotation:[Math.PI,0,Math.PI/2],scale:[.045,.045,.011]}),(0,r.jsx)("mesh",{geometry:C.dumenyuvasi_ahsap_0.geometry,material:R.ahsap,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,r.jsx)("mesh",{geometry:C.dumenyuvasi_cam_0.geometry,material:R.material_5,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,r.jsx)("mesh",{geometry:C.dumenyuvasi_fiberglass_0.geometry,material:R.fiberglass,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,r.jsx)("mesh",{geometry:C.govde_fiberglass2_0.geometry,material:R.fiberglass2,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,r.jsx)("mesh",{geometry:C.govde_fiberglass_0.geometry,material:R.fiberglass,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,r.jsx)("mesh",{geometry:C.govde_metal_0.geometry,material:R.metal,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,r.jsx)("mesh",{geometry:C.halattutucu_fiberglass2_0.geometry,material:R.fiberglass2,position:[-1.044,.939,1.809],rotation:[-Math.PI/2,0,0],scale:[.016,.059,.016]}),(0,r.jsx)("mesh",{geometry:C.ip001_metal_0.geometry,material:R.metal,position:[-.231,7.608,-.621],rotation:[-2.322,.222,-1.556],scale:[.007,.007,.011]}),(0,r.jsx)("mesh",{geometry:C.pervan_fiberglass_0.geometry,material:R.fiberglass,position:[0,-1.005,1.561],rotation:[-Math.PI/2,Math.PI/2,0],scale:[.154,.094,.104]}),(0,r.jsx)("mesh",{geometry:C.pervane_metal_0.geometry,material:R.metal,position:[0,-1.122,1.75],scale:.034}),(0,r.jsx)("mesh",{ref:d,geometry:C.rudder_fiberglass_0.geometry,material:R.fiberglass,position:[0,-1.153,3.486],rotation:[-Math.PI/2,Math.PI/2,0],scale:[.573,.262,.262]}),(0,r.jsx)("mesh",{geometry:C.salma_fiberglass_0.geometry,material:R.fiberglass,position:[0,-1.953,-.739],scale:[.149,.108,.756]}),(0,r.jsx)("mesh",{geometry:C.ustcam_cam_0.geometry,material:R.material_5,position:[-.337,.974,-3.127],rotation:[-Math.PI/2,0,0],scale:[-.183,.133,.025]}),(0,r.jsx)("mesh",{geometry:C.ustcam_fiberglass_0.geometry,material:R.fiberglass,position:[-.337,.974,-3.127],rotation:[-Math.PI/2,0,0],scale:[-.183,.133,.025]}),(0,r.jsx)("mesh",{geometry:C.ustgovde_fiberglass_0.geometry,material:R.fiberglass,position:[0,.832,-2.741],rotation:[-Math.PI/2,0,0],scale:[.566,.7,1.212]}),(0,r.jsx)("mesh",{geometry:C.ustgovdekzak_ahsap_0.geometry,material:R.ahsap,position:[0,.862,-2.741],rotation:[-Math.PI/2,0,0],scale:[.566,.7,1.212]}),(0,r.jsx)("mesh",{geometry:C.vinc_metal_0.geometry,material:R.metal,position:[-1.07,.977,2.02],rotation:[-Math.PI/2,0,0],scale:.065}),(0,r.jsx)("mesh",{geometry:C.yancam002_cam_0.geometry,material:R.material_5,position:[-.984,.591,-3.772],rotation:[Math.PI,-1.241,-Math.PI/2],scale:[.095,.28,.014]}),(0,r.jsx)("mesh",{geometry:C.yancam002_fiberglass_0.geometry,material:R.fiberglass,position:[-.984,.591,-3.772],rotation:[Math.PI,-1.241,-Math.PI/2],scale:[.095,.28,.014]}),(0,r.jsx)("mesh",{geometry:C.yankoruma_metal_0.geometry,material:R.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,r.jsx)("mesh",{geometry:C.yankoruma_metal_0001.geometry,material:R.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,r.jsx)("mesh",{geometry:C.yankoruma_metal_0002.geometry,material:R.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,r.jsx)("mesh",{geometry:C.zincir_metal_0.geometry,material:R.metal,position:[-.001,.88,-6.258],rotation:[-1.56,-.031,-.149],scale:.004}),(0,r.jsx)("mesh",{geometry:C.zincir_metal_0001.geometry,material:R.metal,position:[-.001,.88,-6.258],rotation:[-1.56,-.031,-.149],scale:.004}),(0,r.jsx)("mesh",{geometry:C.zincirdeposu_fiberglass2_0.geometry,material:R.fiberglass2,position:[0,.863,-5.779],rotation:[-Math.PI/2,0,0],scale:[.103,.088,.009]}),(0,r.jsx)("mesh",{geometry:C.zincirmakara_metal_0.geometry,material:R.metal,position:[0,.869,-6.305],rotation:[-2.159,1.564,.59],scale:[.01,.01,.016]}),(0,r.jsx)("mesh",{geometry:C.zincirray_ahsap_0.geometry,material:R.ahsap,position:[0,.864,-6.113],rotation:[-Math.PI/2,0,0],scale:[.017,.181,.003]})]}),Optimist:()=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("mesh",{geometry:C.body_body_0.geometry,material:R.body,position:[-.054,.272,-.022],rotation:[-1.571,.01,.01],scale:[1,5.242,1]}),(0,r.jsx)("mesh",{geometry:C.boom_aluminium_0.geometry,material:R.aluminium,position:[-.019,2.771,.964],rotation:[0,.01,-.01],scale:[.15,.15,4.609]}),(0,r.jsx)("mesh",{geometry:C.rubber_joint__0.geometry,material:R.rubber_joint__0,position:[-.008,1.407,3.453],rotation:[1.571,-.01,-.01],scale:[-.037,.056,.079]}),(0,r.jsx)("mesh",{geometry:C.sail_sail_0.geometry,material:R.sail,position:[.038,8.739,.698],rotation:[2.356,1.557,2.356],scale:[-5.728,4.361,4.361]})]}),Ship:()=>(0,r.jsx)("mesh",{geometry:C.Object_10.geometry,material:R.material_0,position:[0,-.55,0],rotation:[-1.558,.002,3.139],scale:.004}),Windsurf:()=>(0,r.jsx)("mesh",{geometry:C["body_Material_#30_0"].geometry,material:R.Material_30,position:[-.007,0,-.071],rotation:[-Math.PI/2,0,0],scale:.002}),Sailboat:()=>(0,r.jsx)("mesh",{geometry:C.sailboat.geometry,material:R.texture,position:[0,-1.5,0],rotation:[-Math.PI,.011,-Math.PI],scale:.219}),RM1080:()=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("mesh",{geometry:C.Body_1.geometry,material:R.PaletteMaterial003}),(0,r.jsx)("mesh",{geometry:C.Body_2.geometry,material:R.PaletteMaterial001}),(0,r.jsx)("mesh",{geometry:C.Body_3.geometry,material:R.PaletteMaterial002})]})};return e[T.name]||e.Default},[T.name,C,R]),N=(0,a.useMemo)(()=>({name:T.name||"Sailboat",type:"sailboat",trueWindAngle:w[`environment.wind.${g}`]??w["environment.wind.angleTrueWater"]??0,trueWindSpeed:w[`environment.wind.${m}`]??w["environment.wind.speedTrue"]??0,appWindAngle:w["environment.wind.angleApparent"]||0,appWindSpeed:w["environment.wind.speedApparent"]||0,beatAngle:w["performance.beatAngle"]||0,polarSpeed:w["performance.polarSpeed"]||0,polarSpeedRatio:w["performance.polarSpeedRatio"]||0,velocityMadeGood:w["performance.velocityMadeGood"]||0,speedThroughWater:w["navigation.speedThroughWater"]||0,headingTrue:w[`navigation.${v}`]??w["navigation.headingTrue"]??0,courseOverGroundTrue:w["navigation.courseOverGroundTrue"]||0,position:w["navigation.position"]||{latitude:0,longitude:0}}),[w,T.name]),[H,W]=(0,a.useState)(!1);return(0,r.jsxs)("group",{...c,ref:p,dispose:null,onClick:()=>{let e,r=!H;W(r),t&&t(r?(e=[],N.name&&e.push(`Vessel: ${N.name}`),N.trueWindSpeed&&e.push(`Wind: ${(0,i.toKnots)(N.trueWindSpeed)} kn @ ${(0,i.toDegrees)(N.trueWindAngle)}\xb0`),N.appWindSpeed&&e.push(`App Wind: ${(0,i.toKnots)(N.appWindSpeed)} kn @ ${(0,i.toDegrees)(N.appWindAngle)}\xb0`),N.speedThroughWater&&e.push(`STW: ${(0,i.toKnots)(N.speedThroughWater)} kn`),void 0!==N.headingTrue&&null!==N.headingTrue&&e.push(`HDG: ${(0,i.toDegrees)(N.headingTrue)}\xb0`),void 0!==N.courseOverGroundTrue&&null!==N.courseOverGroundTrue&&e.push(`COG: ${(0,i.toDegrees)(N.courseOverGroundTrue)}\xb0`),N.velocityMadeGood&&e.push(`VMG: ${(0,i.toKnots)(N.velocityMadeGood)} kn`),N.polarSpeedRatio&&e.push(`Polar: ${(100*N.polarSpeedRatio).toFixed(0)}%`),N.position&&void 0!==N.position.latitude&&void 0!==N.position.longitude&&e.push(`Pos: ${N.position.latitude.toFixed(4)}\xb0, ${N.position.longitude.toFixed(4)}\xb0`),e.join("\n")):null)},children:[I.includes("sail")&&e&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(_,{reefLevel:n?n.reefLevel:0,mainCamber:n?n.mainCamber:1}),(0,r.jsx)(P,{jibCar:n?n.trimState.jibCar:.5,camber:n?n.jibCamber:.8,twist:n?n.jibTwist:0}),!1!==s.default.get("showRigging")&&(0,r.jsx)(k,{}),n&&n.tensions&&(0,r.jsx)(O,{tensions:n.tensions})]}),(0,r.jsx)(B,{})]})}],66326)}]);
|