PageSourceSearch

https://www.yung.studio/_next/static/chunks/6431.e6054389987feb45.js

js yung.studio collected 2026-10-04 13:31:16 UTC 239,656 bytes, 785 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6431],{25245:function(e,t,r){let i;r.d(t,{qA:function(){return ez}});var a,n=r(17610),o=r(7653),s=r(97551),l=r(78813),f=r(55379);let u=e=>e&&e.isCubeTexture;class c extends l.Mesh{constructor(e,t){var r,i;let a=u(e),n=Math.floor(Math.log2((null!=(i=a?null==(r=e.image[0])?void 0:r.width:e.image.width)?i:1024)/4)),o=Math.pow(2,n),s=`
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        `,c=[a?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/(3*Math.max(o,112))}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*o)}`,`#define CUBEUV_MAX_MIP ${n}.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 <${f.i>=154?"colorspace_fragment":"encodings_fragment"}>
80        }
81        `;super(new l.IcosahedronGeometry(1,16),new l.ShaderMaterial({uniforms:{map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}},fragmentShader:c,vertexShader:s,side:l.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}}class h extends l.DataTextureLoader{constructor(e){super(e),this.type=l.HalfFloatType}parse(e){let t,r,i;let a=function(e,t){switch(e){case 1:throw Error("THREE.RGBELoader: Read Error: "+(t||""));case 2:throw Error("THREE.RGBELoader: Write Error: "+(t||""));case 3:throw Error("THREE.RGBELoader: Bad File Format: "+(t||""));default:throw Error("THREE.RGBELoader: Memory Error: "+(t||""))}},n=function(e,t,r){t=t||1024;let i=e.pos,a=-1,n=0,o="",s=String.fromCharCode.apply(null,new Uint16Array(e.subarray(i,i+128)));for(;0>(a=s.indexOf("\n"))&&n<t&&i<e.byteLength;)o+=s,n+=s.length,i+=128,s+=String.fromCharCode.apply(null,new Uint16Array(e.subarray(i,i+128)));return -1<a&&(!1!==r&&(e.pos+=n+a+1),o+s.slice(0,a))},o=new Uint8Array(e);o.pos=0;let s=function(e){let t,r;
81let i=/^\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*$/,f={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};for(!(e.pos>=e.byteLength)&&(t=n(e))||a(1,"no header found"),(r=t.match(/^#\?(\S+)/))||a(3,"bad initial token"),f.valid|=1,f.programtype=r[1],f.string+=t+"\n";!1!==(t=n(e));){if(f.string+=t+"\n","#"===t.charAt(0)){f.comments+=t+"\n";continue}if((r=t.match(i))&&(f.gamma=parseFloat(r[1])),(r=t.match(o))&&(f.exposure=parseFloat(r[1])),(r=t.match(s))&&(f.valid|=2,f.format=r[1]),(r=t.match(l))&&(f.valid|=4,f.height=parseInt(r[1],10),f.width=parseInt(r[2],10)),2&f.valid&&4&f.valid)break}return 2&f.valid||a(3,"missing format specifier"),4&f.valid||a(3,"missing image size specifier"),f}(o),f=s.width,u=s.height,c=function(e,t,r){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&a(3,"wrong scanline width");let i=new Uint8Array(4*t*r);i.length||a(4,"unable to allocate buffer space");let n=0,o=0,s=4*t,l=new Uint8Array(4),f=new Uint8Array(s),u=r;for(;u>0&&o<e.byteLength;){o+4>e.byteLength&&a(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)&&a(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)&&a(3,"bad scanline data"),t){let t=e[o++];for(let e=0;e<c;e++)f[r++]=t}else f.set(e.subarray(o,o+c),r),r+=c,o+=c}for(let e=0;e<t;e++){let r=0;i[n]=f[e+r],r+=t,i[n+1]=f[e+r],r+=t,i[n+2]=f[e+r],r+=t,i[n+3]=f[e+r],n+=4}u--}return i}(o.subarray(o.pos),f,u);switch(this.type){case l.FloatType:let h=new Float32Array(4*(i=c.length/4));for(let e=0;e<i;e++)!function(e,t,r,i){let a=Math.pow(2,e[t+3]-128)/255;r[i+0]=e[t+0]*a,r[i+1]=e[t+1]*a,r[i+2]=e[t+2]*a,r[i+3]=1}(c,4*e,h,4*e);t=h,r=l.FloatType;break;case l.HalfFloatType:let p=new Uint16Array(4*(i=c.length/4));for(let e=0;e<i;e++)!function(e,t,r,i){let a=Math.pow(2,e[t+3]-128)/255;r[i+0]=l.DataUtils.toHalfFloat(Math.min(e[t+0]*a,65504)),r[i+1]=l.DataUtils.toHalfFloat(Math.min(e[t+1]*a,65504)),r[i+2]=l.DataUtils.toHalfFloat(Math.min(e[t+2]*a,65504)),r[i+3]=l.DataUtils.toHalfFloat(1)}(c,4*e,p,4*e);t=p,r=l.HalfFloatType;break;default:throw Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:f,height:u,data:t,header:s.string,gamma:s.gamma,exposure:s.exposure,type:r}}setDataType(e){return this.type=e,this}load(e,t,r,i){return super.load(e,function(e,r){switch(e.type){case l.FloatType:case l.HalfFloatType:"colorSpace"in e?e.colorSpace="srgb-linear":e.encoding=3e3,e.minFilter=l.LinearFilter,e.magFilter=l.LinearFilter,e.generateMipmaps=!1,e.flipY=!0}t&&t(e,r)},r,i)}}var p={},d=Uint8Array,g=Uint16Array,m=Uint32Array,v=new d([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]),y=new d([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]),w=new d([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),x=function(e,t){for(var r=new g(31),i=0;i<31;++i)r[i]=t+=1<<e[i-1];for(var a=new m(r[30]),i=1;i<30;++i)for(var n=r[i];n<r[i+1];++n)a[n]=n-r[i]<<5|i;return[r,a]},b=x(v,2),S=b[0],M=b[1];S[28]=258,M[258]=28;for(var D=x(y,0),E=D[0],T=D[1],F=new g(32768),B=0;B<32768;++B){var I=(43690&B)>>>1|(21845&B)<<1;I=(61680&(I=(52428&I)>>>2|(13107&I)<<2))>>>4|(3855&I)<<4,F[B]=((65280&I)>>>8|(255&I)<<8)>>>1}for(var P=function(e,t,r){for(var i,a=e.length,n=0,o=new g(t);n<a;++n)++o[e[n]-1];var s=new g(t);for(n=0;n<t;++n)s[n]=s[n-1]+o[n-1]<<1;if(r){i=new g(1<<t);var l=15-t;for(n=0;n<a;++n)if(e[n])for(var f=n<<4|e[n],u=t-e[n],c=s[e[n]-1]++<<u,h=c|(1<<u)-1;c<=h;++c)i[F[c]>>>l]=f}else for(n=0,i=new g(a);n<a;++n)e[n]&&(i[n]=F[s[e[n]-1]++]>>>15-e[n]);return i},C=new d(288),B=0;B<144;++B)C[B]=8;for(var B=144;B<256;++B)C[B]=9;for(var B=256;B<280;++B)C[B]=7;for(var B=280;B<288;++B)C[B]=8;for(var L=new d(32),B=0;B<32;++B)L[B]=5;var R=P(C,9,1),U=P(L,5,1),A=function(e){for(var t=e[0],r=1;r<e.length;++r)e[r]>t&&(t=e[r]);return t},z=function(e,t,r){var i=t/8|0;return(e[i]|e[i+1]<<8)>>(7&t)&r},O=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},k=function(e){return(e/8|0)+(7&e&&1)},N=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var i=new(e instanceof g?g:e instanceof m?m:d)(r-t);return i.set(e.subarray(t,r)),i},H=function(e,t,r){var i=e.length;if(!i||r&&!r.l&&i<5)return t||new d(0);var a=!t||r,n=!r||r.i;r||(r={}),t||(t=new d(3*i));var o=function(e){var r=t.length;if(e>r){var i=new d(Math.max(2*r,e));i.set(t),t=i}},s=r.f||0,l=r.p||0,f=r.b||0,u=r.l,c=r.d,h=r.m,p=r.n,g=8*i;do{if(!u){r.f=s=z(e,l,1);var m=z(e,l+1,3);if(l+=3,m){if(1==m)u=R,c=U,h=9,p=5;
81else if(2==m){var x=z(e,l,31)+257,b=z(e,l+10,15)+4,M=x+z(e,l+5,31)+1;l+=14;for(var D=new d(M),T=new d(19),F=0;F<b;++F)T[w[F]]=z(e,l+3*F,7);l+=3*b;for(var B=A(T),I=(1<<B)-1,C=P(T,B,1),F=0;F<M;){var L=C[z(e,l,I)];l+=15&L;var H=L>>>4;if(H<16)D[F++]=H;else{var V=0,W=0;for(16==H?(W=3+z(e,l,3),l+=2,V=D[F-1]):17==H?(W=3+z(e,l,7),l+=3):18==H&&(W=11+z(e,l,127),l+=7);W--;)D[F++]=V}}var Q=D.subarray(0,x),G=D.subarray(x);h=A(Q),p=A(G),u=P(Q,h,1),c=P(G,p,1)}else throw"invalid block type"}else{var H=k(l)+4,Y=e[H-4]|e[H-3]<<8,j=H+Y;if(j>i){if(n)throw"unexpected EOF";break}a&&o(f+Y),t.set(e.subarray(H,j),f),r.b=f+=Y,r.p=l=8*j;continue}if(l>g){if(n)throw"unexpected EOF";break}}a&&o(f+131072);for(var Z=(1<<h)-1,X=(1<<p)-1,K=l;;K=l){var V=u[O(e,l)&Z],q=V>>>4;if((l+=15&V)>g){if(n)throw"unexpected EOF";break}if(!V)throw"invalid length/literal";if(q<256)t[f++]=q;else if(256==q){K=l,u=null;break}else{var J=q-254;if(q>264){var F=q-257,_=v[F];J=z(e,l,(1<<_)-1)+S[F],l+=_}var $=c[O(e,l)&X],ee=$>>>4;if(!$)throw"invalid distance";l+=15&$;var G=E[ee];if(ee>3){var _=y[ee];G+=O(e,l)&(1<<_)-1,l+=_}if(l>g){if(n)throw"unexpected EOF";break}a&&o(f+131072);for(var et=f+J;f<et;f+=4)t[f]=t[f-G],t[f+1]=t[f+1-G],t[f+2]=t[f+2-G],t[f+3]=t[f+3-G];f=et}}r.l=u,r.p=K,r.b=f,u&&(s=1,r.m=h,r.d=c,r.n=p)}while(!s);return f==t.length?t:N(t,0,f)},V=function(e,t,r){r<<=7&t;var i=t/8|0;e[i]|=r,e[i+1]|=r>>>8},W=function(e,t,r){r<<=7&t;var i=t/8|0;e[i]|=r,e[i+1]|=r>>>8,e[i+2]|=r>>>16},Q=function(e,t){for(var r=[],i=0;i<e.length;++i)e[i]&&r.push({s:i,f:e[i]});var a=r.length,n=r.slice();if(!a)return[q,0];if(1==a){var o=new d(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],f=0,u=1,c=2;for(r[0]={s:-1,f:s.f+l.f,l:s,r:l};u!=a-1;)s=r[r[f].f<r[c].f?f++:c++],l=r[f!=u&&r[f].f<r[c].f?f++:c++],r[u++]={s:-1,f:s.f+l.f,l:s,r:l};for(var h=n[0].s,i=1;i<a;++i)n[i].s>h&&(h=n[i].s);var p=new g(h+1),m=G(r[u-1],p,0);if(m>t){var i=0,v=0,y=m-t,w=1<<y;for(n.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});i<a;++i){var x=n[i].s;if(p[x]>t)v+=w-(1<<m-p[x]),p[x]=t;else break}for(v>>>=y;v>0;){var b=n[i].s;p[b]<t?v-=1<<t-p[b]++-1:++i}for(;i>=0&&v;--i){var S=n[i].s;p[S]==t&&(--p[S],++v)}m=t}return[new d(p),m]},G=function(e,t,r){return -1==e.s?Math.max(G(e.l,t,r+1),G(e.r,t,r+1)):t[e.s]=r},Y=function(e){for(var t=e.length;t&&!e[--t];);for(var r=new g(++t),i=0,a=e[0],n=1,o=function(e){r[i++]=e},s=1;s<=t;++s)if(e[s]==a&&s!=t)++n;else{if(!a&&n>2){for(;n>138;n-=138)o(32754);n>2&&(o(n>10?n-11<<5|28690:n-3<<5|12305),n=0)}else if(n>3){for(o(a),--n;n>6;n-=6)o(8304);n>2&&(o(n-3<<5|8208),n=0)}for(;n--;)o(a);n=1,a=e[s]}return[r.subarray(0,i),t]},j=function(e,t){for(var r=0,i=0;i<t.length;++i)r+=e[i]*t[i];return r},Z=function(e,t,r){var i=r.length,a=k(t+2);e[a]=255&i,e[a+1]=i>>>8,e[a+2]=255^e[a],e[a+3]=255^e[a+1];for(var n=0;n<i;++n)e[a+n+4]=r[n];return(a+4+i)*8},X=function(e,t,r,i,a,n,o,s,l,f,u){V(t,u++,r),++a[256];for(var c,h,p,d,m=Q(a,15),x=m[0],b=m[1],S=Q(n,15),M=S[0],D=S[1],E=Y(x),T=E[0],F=E[1],B=Y(M),I=B[0],R=B[1],U=new g(19),A=0;A<T.length;++A)U[31&T[A]]++;for(var A=0;A<I.length;++A)U[31&I[A]]++;for(var z=Q(U,7),O=z[0],k=z[1],N=19;N>4&&!O[w[N-1]];--N);var H=f+5<<3,G=j(a,C)+j(n,L)+o,X=j(a,x)+j(n,M)+o+14+3*N+j(U,O)+(2*U[16]+3*U[17]+7*U[18]);if(H<=G&&H<=X)return Z(t,u,e.subarray(l,l+f));if(V(t,u,1+(X<G)),u+=2,X<G){c=P(x,b,0),h=x,p=P(M,D,0),d=M;var K=P(O,k,0);V(t,u,F-257),V(t,u+5,R-1),V(t,u+10,N-4),u+=14;for(var A=0;A<N;++A)V(t,u+3*A,O[w[A]]);u+=3*N;for(var q=[T,I],J=0;J<2;++J)for(var _=q[J],A=0;A<_.length;++A){var $=31&_[A];V(t,u,K[$]),u+=O[$],$>15&&(V(t,u,_[A]>>>5&127),u+=_[A]>>>12)}}else c=null,h=C,p=null,d=L;for(var A=0;A<s;++A)if(i[A]>255){var $=i[A]>>>18&31;W(t,u,c[$+257]),u+=h[$+257],$>7&&(V(t,u,i[A]>>>23&31),u+=v[$]);var ee=31&i[A];W(t,u,p[ee]),u+=d[ee],ee>3&&(W(t,u,i[A]>>>5&8191),u+=y[ee])}else W(t,u,c[i[A]]),u+=h[i[A]];return W(t,u,c[256]),u+h[256]},K=new m([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),q=new d(0),J=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 _(e,t){return H((J(e),e.subarray(2,-4)),t)}var $="undefined"!=typeof TextDecoder&&new TextDecoder;try{$.decode(q,{stream:!0})}catch(e){}let ee=f.i>=152;class et extends l.DataTextureLoader{constructor(e){super(e),this.type=l.HalfFloatType}parse(e){let t={l:0,c:0,lc:0};function r(e,r,i,a,n){for(;i<e;)r=r<<8|T(a,n),i+=8;i-=e,t.l=r>>i&(1<<e)-1,t.c=r,t.lc=i}let i=Array(59),a={c:0,lc:0};function n(e,t,r,i){e=e<<8|T(r,i),t+=8,a.c=e,a.lc=t}let o={c:0,lc:0};function s(e,t,r,i,s,l,f,u,c,h){if(e==t){i<8&&(n(r,i,s,f),r=a.c,i=a.lc);var p=r>>(i-=8),p=new Uint8Array([p])[0];if(c.value+p>h)return!1;for(var d=u[c.value-1];p-- >0;)u[c.value++]=d}else{if(!(c.value<h))return!1;u[c.value++]=e}o.c=r,o.lc=i}function f(e){var t=65535&e;return t>32767?t-65536:t}let u={a:0,b:0};function c(e,t){var r=f(e),i=f(t),a=r+(1&i)+(i>>1),n=a-i;u.a=a,u.b=n}function h(e,t){var r=65535&t,i=(65535&e)-(r>>1)&65535;u.a=r+i-32768&65535,u.b=i}function p(e,l,f,u,c,h){var p=f.value,d=E(l,f),g=E(l,f);f.value+=4;var m=E(l,f);if(f.value+=4,d<0||d>=65537||g<0||g>=65537)throw"Something wrong with HUF_ENCSIZE";var v=Array(65537),y=Array(16384);!function(e){for(var t=0;t<16384;t++)e[t]={},e[t].len=0,e[t].lit=0,e[t].p=null}(y);var w=u-(f.value-p);if(!function(e,a,n,o,s,l,f){for(var u=0,c=0;s<=l;s++){if(n.value-n.value>o)return!1;r(6,u,c,e,n);var h=t.l;if(u=t.c,c=t.lc,f[s]=h,63==h){if(n.value-n.value>o)throw"Something wrong with hufUnpackEncTable";r(8,u,c,e,n);var p=t.l+6;if(u=t.c,c=t.lc,s+p>l+1)throw"Something wrong with hufUnpackEncTable";for(;p--;)f[s++]=0;s--}else if(h>=59){var p=h-59+2;if(s+p>l+1)throw"Something wrong with hufUnpackEncTable";for(;p--;)f[s++]=0;s--}}!function(e){for(var t=0;t<=58;++t)i[t]=0;for(var t=0;t<65537;++t)i[e[t]]+=1;for(var r=0,t=58;t>0;--t){var a=r+i[t]>>1;i[t]=r,r=a}for(var t=0;t<65537;++t){var n=e[t];n>0&&(e[t]=n|i[n]++<<6)}}(f)}(e,0,f,w,d,g,v),m>8*(u-(f.value-p)))throw"Something wrong with hufUncompress";!function(e,t,r,i){for(;t<=r;t++){var a=e[t]>>6,n=63&e[t];if(a>>n)throw"Invalid table entry";if(n>14){var o=i[a>>n-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(n)for(var f=0,l=1<<14-n;l>0;l--){var o=i[(a<<14-n)+f];if(o.len||o.p)throw"Invalid table entry";o.len=n,o.lit=t,f++}}}(v,d,g,y),function(e,t,r,i,l,f,u,c,h,p){for(var d=0,g=0,m=Math.trunc(l.value+(f+7)/8);l.value<m;)for(n(d,g,r,l),d=a.c,g=a.lc;g>=14;){var v=t[d>>g-14&16383];if(v.len)g-=v.len,s(v.lit,u,d,g,r,i,l,h,p,c),d=o.c,g=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]];g<w&&l.value<m;)n(d,g,r,l),d=a.c,g=a.lc;if(g>=w&&e[v.p[y]]>>6==(d>>g-w&(1<<w)-1)){g-=w,s(v.p[y],u,d,g,r,i,l,h,p,c),d=o.c,g=o.lc;break}}if(y==v.lit)throw"hufDecode issues"}}var x=8-f&7;for(d>>=x,g-=x;g>0;){var v=t[d<<14-g&16383];if(v.len)g-=v.len,s(v.lit,u,d,g,r,i,l,h,p,c),d=o.c,g=o.lc;else throw"hufDecode issues"}}(v,y,e,l,f,m,g,h,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 g(e,t){for(var r=0,i=Math.floor((e.length+1)/2),a=0,n=e.length-1;!(a>n)&&(t[a++]=e[r++],!(a>n));)t[a++]=e[i++]}function m(e){for(var t=e.byteLength,r=[],i=0,a=new DataView(e);t>0;){var n=a.getInt8(i++);if(n<0){var o=-n;t-=o+1;for(var s=0;s<o;s++)r.push(a.getUint8(i++))}else{var o=n;t-=2;for(var l=a.getUint8(i++),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 
81Uint8Array(t.length);return d(t),g(t,r),new DataView(r.buffer)}function w(e){var t=_(e.array.slice(e.offset.value,e.offset.value+e.size)),r=new Uint8Array(t.length);return d(t),g(t,r),new DataView(r.buffer)}function x(e){for(var t=e.viewer,r={value:e.offset.value},i=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),a=new Uint8Array(8192),n=0,o=Array(e.channels),s=0;s<e.channels;s++)o[s]={},o[s].start=n,o[s].end=o[s].start,o[s].nx=e.width,o[s].ny=e.lines,o[s].size=e.type,n+=o[s].nx*o[s].ny*o[s].size;var l=L(t,r),f=L(t,r);if(f>=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(l<=f)for(var s=0;s<f-l+1;s++)a[s+l]=F(t,r);var d=new Uint16Array(65536),g=function(e,t){for(var r=0,i=0;i<65536;++i)(0==i||e[i>>3]&1<<(7&i))&&(t[r++]=i);for(var a=r-1;r<65536;)t[r++]=0;return a}(a,d),m=E(t,r);p(e.array,t,r,m,i,n);for(var s=0;s<e.channels;++s)for(var v=o[s],y=0;y<o[s].size;++y)!function(e,t,r,i,a,n,o){for(var s=o<16384,l=r>a?a:r,f=1;f<=l;)f<<=1;for(f>>=1,p=f,f>>=1;f>=1;){for(var p,d,g,m,v,y=0,w=0+n*(a-p),x=n*f,b=n*p,S=i*f,M=i*p;y<=w;y+=b){for(var D=y,E=y+i*(r-p);D<=E;D+=M){var T=D+S,F=D+x,B=F+S;s?(c(e[D+t],e[F+t]),d=u.a,m=u.b,c(e[T+t],e[B+t]),g=u.a,v=u.b,c(d,g),e[D+t]=u.a,e[T+t]=u.b,c(m,v)):(h(e[D+t],e[F+t]),d=u.a,m=u.b,h(e[T+t],e[B+t]),g=u.a,v=u.b,h(d,g),e[D+t]=u.a,e[T+t]=u.b,h(m,v)),e[F+t]=u.a,e[B+t]=u.b}if(r&f){var F=D+x;s?c(e[D+t],e[F+t]):h(e[D+t],e[F+t]),d=u.a,e[F+t]=u.b,e[D+t]=d}}if(a&f)for(var D=y,E=y+i*(r-p);D<=E;D+=M){var T=D+S;s?c(e[D+t],e[T+t]):h(e[D+t],e[T+t]),d=u.a,e[T+t]=u.b,e[D+t]=d}p=f,f>>=1}}(i,v.start+y,v.nx,v.size,v.ny,v.nx*v.size,g);!function(e,t,r){for(var i=0;i<r;++i)t[i]=e[t[i]]}(d,i,n);for(var w=0,x=new Uint8Array(i.buffer.byteLength),b=0;b<e.lines;b++)for(var S=0;S<e.channels;S++){var v=o[S],M=v.nx*v.size,D=new Uint8Array(i.buffer,2*v.end,2*M);x.set(D,w),w+=2*M,v.end+=M}return new DataView(x.buffer)}function b(e){var t=_(e.array.slice(e.offset.value,e.offset.value+e.size));let r=e.lines*e.channels*e.width,i=1==e.type?new Uint16Array(r):new Uint32Array(r),a=0,n=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]=a,o[1]=o[0]+e.width,a=o[1]+e.width;for(let a=0;a<e.width;++a)r+=t[o[0]++]<<8|t[o[1]++],i[n]=r,n++;break;case 2:o[0]=a,o[1]=o[0]+e.width,o[2]=o[1]+e.width,a=o[2]+e.width;for(let a=0;a<e.width;++a)r+=t[o[0]++]<<24|t[o[1]++]<<16|t[o[2]++]<<8,i[n]=r,n++}}return new DataView(i.buffer)}function S(e){var t=e.viewer,r={value:e.offset.value},i=new Uint8Array(e.width*e.lines*(e.channels*e.type*2)),a={version:B(t,r),unknownUncompressedSize:B(t,r),unknownCompressedSize:B(t,r),acCompressedSize:B(t,r),dcCompressedSize:B(t,r),rleCompressedSize:B(t,r),rleUncompressedSize:B(t,r),rleRawSize:B(t,r),totalAcUncompressedCount:B(t,r),totalDcUncompressedCount:B(t,r),acCompression:B(t,r)};if(a.version<2)throw"EXRLoader.parse: "+O.compression+" version "+a.version+" is unsupported";for(var n=[],o=L(t,r)-2;o>0;){var s=M(t.buffer,r),f=F(t,r),u=f>>2&3,c=new Int8Array([(f>>4)-1])[0],h=F(t,r);n.push({name:s,index:c,type:h,compression:u}),o-=s.length+3}for(var d=O.channels,g=Array(e.channels),v=0;v<e.channels;++v){var y=g[v]={},x=d[v];y.name=x.name,y.compression=0,y.decoded=!1,y.type=x.pixelType,y.pLinear=x.pLinear,y.width=e.width,y.height=e.lines}for(var b={idx:[,,,]},S=0;S<e.channels;++S)for(var y=g[S],v=0;v<n.length;++v){var D=n[v];y.name==D.name&&(y.compression=D.compression,D.index>=0&&(b.idx[D.index]=S),y.offset=S)}if(a.acCompressedSize>0)switch(a.acCompression){case 0:var E=new Uint16Array(a.totalAcUncompressedCount);p(e.array,t,r,a.acCompressedSize,E,a.totalAcUncompressedCount);break;case 1:var T=e.array.slice(r.value,r.value+a.totalAcUncompressedCount),I=_(T),E=new Uint16Array(I.buffer);r.value+=a.totalAcUncompressedCount}if(a.dcCompressedSize>0){var P=new Uint16Array(w({array:e.array,offset:r,size:a.dcCompressedSize}).buffer);r.value+=a.dcCompressedSize}if(a.rleRawSize>0){var T=e.array.slice(r.value,r.value+a.rleCompressedSize),I=_(T),R=m(I.buffer);r.value+=a.rleCompressedSize}for(var U=0,A=Array(g.length),v=0;v<A.length;++v)A[v]=[];for(var z=0;z<e.lines;++z)for(var k=0;k<g.length;++k)A[k].push(U),U+=g[k].width*e.type*2;!function(e,t,r,i,a,n){var o=new DataView(n.buffer),s=r[e.idx[0]].width,f=r[e.idx[0]].height,u=Math.floor(s/8),c=Math.ceil(s/8),h=Math.ceil(f/8),p=s-(c-1)*8,d=f-(h-1)
81*8,g={value:0},m=[,,,],v=[,,,],y=[,,,],w=[,,,],x=[,,,];for(let r=0;r<3;++r)x[r]=t[e.idx[r]],m[r]=r<1?0:m[r-1]+c*h,v[r]=new Float32Array(64),y[r]=new Uint16Array(64),w[r]=new Uint16Array(64*c);for(let t=0;t<h;++t){var b,S,M=8;t==h-1&&(M=d);var D=8;for(let e=0;e<c;++e){e==c-1&&(D=p);for(let e=0;e<3;++e)y[e].fill(0),y[e][0]=a[m[e]++],function(e,t,r){for(var i,a=1;a<64;)65280==(i=t[e.value])?a=64:i>>8==255?a+=255&i:(r[a]=i,a++),e.value++}(g,i,y[e]),b=y[e],(S=v[e])[0]=C(b[0]),S[1]=C(b[1]),S[2]=C(b[5]),S[3]=C(b[6]),S[4]=C(b[14]),S[5]=C(b[15]),S[6]=C(b[27]),S[7]=C(b[28]),S[8]=C(b[2]),S[9]=C(b[4]),S[10]=C(b[7]),S[11]=C(b[13]),S[12]=C(b[16]),S[13]=C(b[26]),S[14]=C(b[29]),S[15]=C(b[42]),S[16]=C(b[3]),S[17]=C(b[8]),S[18]=C(b[12]),S[19]=C(b[17]),S[20]=C(b[25]),S[21]=C(b[30]),S[22]=C(b[41]),S[23]=C(b[43]),S[24]=C(b[9]),S[25]=C(b[11]),S[26]=C(b[18]),S[27]=C(b[24]),S[28]=C(b[31]),S[29]=C(b[40]),S[30]=C(b[44]),S[31]=C(b[53]),S[32]=C(b[10]),S[33]=C(b[19]),S[34]=C(b[23]),S[35]=C(b[32]),S[36]=C(b[39]),S[37]=C(b[45]),S[38]=C(b[52]),S[39]=C(b[54]),S[40]=C(b[20]),S[41]=C(b[22]),S[42]=C(b[33]),S[43]=C(b[38]),S[44]=C(b[46]),S[45]=C(b[51]),S[46]=C(b[55]),S[47]=C(b[60]),S[48]=C(b[21]),S[49]=C(b[34]),S[50]=C(b[37]),S[51]=C(b[47]),S[52]=C(b[50]),S[53]=C(b[56]),S[54]=C(b[59]),S[55]=C(b[61]),S[56]=C(b[35]),S[57]=C(b[36]),S[58]=C(b[48]),S[59]=C(b[49]),S[60]=C(b[57]),S[61]=C(b[58]),S[62]=C(b[62]),S[63]=C(b[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),i=.5*Math.cos(3*3.14159/16),a=.5*Math.cos(3*3.14159/8);for(var n=[,,,,],o=[,,,,],s=[,,,,],l=[,,,,],f=0;f<8;++f){var u=8*f;n[0]=r*e[u+2],n[1]=a*e[u+2],n[2]=r*e[u+6],n[3]=a*e[u+6],o[0]=t*e[u+1]+i*e[u+3]+.2777854612564676*e[u+5]+.09754573032714427*e[u+7],o[1]=i*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]+i*e[u+7],o[3]=.09754573032714427*e[u+1]-.2777854612564676*e[u+3]+i*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]=n[0]+n[3],s[2]=n[1]-n[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)n[0]=r*e[16+c],n[1]=a*e[16+c],n[2]=r*e[48+c],n[3]=a*e[48+c],o[0]=t*e[8+c]+i*e[24+c]+.2777854612564676*e[40+c]+.09754573032714427*e[56+c],o[1]=i*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]+i*e[56+c],o[3]=.09754573032714427*e[8+c]-.2777854612564676*e[24+c]+i*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]=n[0]+n[3],s[2]=n[1]-n[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]);!function(e){for(var t=0;t<64;++t){var r=e[0][t],i=e[1][t],a=e[2][t];e[0][t]=r+1.5747*a,e[1][t]=r-.1873*i-.4682*a,e[2][t]=r+1.8556*i}}(v);for(let t=0;t<3;++t)!function(e,t,r){for(var i,a=0;a<64;++a)t[r+a]=l.DataUtils.toHalfFloat((i=e[a])<=1?Math.sign(i)*Math.pow(Math.abs(i),2.2):Math.sign(i)*Math.pow(9.025013291561939,Math.abs(i)-1))}(v[t],w[t],64*e)}let n=0;for(let i=0;i<3;++i){let a=r[e.idx[i]].type;for(let e=8*t;e<8*t+M;++e){n=x[i][e];for(let t=0;t<u;++t){let r=64*t+(7&e)*8;o.setUint16(n+0*a,w[i][r+0],!0),o.setUint16(n+2*a,w[i][r+1],!0),o.setUint16(n+4*a,w[i][r+2],!0),o.setUint16(n+6*a,w[i][r+3],!0),o.setUint16(n+8*a,w[i][r+4],!0),o.setUint16(n+10*a,w[i][r+5],!0),o.setUint16(n+12*a,w[i][r+6],!0),o.setUint16(n+14*a,w[i][r+7],!0),n+=16*a}}if(u!=c)for(let e=8*t;e<8*t+M;++e){let t=x[i][e]+8*u*2*a,r=64*u+(7&e)*8;for(let e=0;e<D;++e)o.setUint16(t+2*e*a,w[i][r+e],!0)}}}for(var E=new Uint16Array(s),o=new DataView(n.buffer),T=0;T<3;++T){r[e.idx[T]].decoded=!0;var F=r[e.idx[T]].type;if(2==r[T].type)for(var B=0;B<f;++B){let e=x[T][B];for(var I=0;I<s;++I)E[I]=o.getUint16(e+2*I*F,!0);for(var I=0;I<s;++I)o.setFloat32(e+2*I*F,C(E[I]),!0)}}}(b,A,g,E,P,i);for(var v=0;v<g.length;++v){var y=g[v];if(!y.decoded){if(2===y.compression)for(var N=0,H=0,z=0;z<e.lines;++z){for(var V=A[v][N],W=0;W<y.width;++W){for(var Q=0;Q<2*y.type;++Q)i[V++]=R[H+Q*y.width*y.height];H++}N++}else throw"EXRLoader.parse: unsupported channel compression"}}return new DataView(i.buffer)}
81function M(e,t){for(var r=new Uint8Array(e),i=0;0!=r[t.value+i];)i+=1;var a=new TextDecoder().decode(r.slice(t.value,t.value+i));return t.value=t.value+i+1,a}function D(e,t){var r=e.getInt32(t.value,!0);return t.value=t.value+4,r}function E(e,t){var r=e.getUint32(t.value,!0);return t.value=t.value+4,r}function T(e,t){var r=e[t.value];return t.value=t.value+1,r}function F(e,t){var r=e.getUint8(t.value);return t.value=t.value+1,r}let B=function(e,t){let r;return"getBigInt64"in DataView.prototype?r=Number(e.getBigInt64(t.value,!0)):r=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 P(e,t){return l.DataUtils.toHalfFloat(I(e,t))}function C(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 L(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function R(e,t){return C(L(e,t))}let U=new DataView(e),A=new Uint8Array(e),z={value:0},O=function(e,t,r){let i={};if(20000630!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";i.version=e.getUint8(4);let a=e.getUint8(5);i.spec={singleTile:!!(2&a),longName:!!(4&a),deepFormat:!!(8&a),multiPart:!!(16&a)},r.value=8;for(var n=!0;n;){var o=M(t,r);if(0==o)n=!1;else{var s=M(t,r),l=E(e,r),f=function(e,t,r,i,a){var n,o,s,l,f;if("string"===i||"stringvector"===i||"iccProfile"===i)return n=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+a)),r.value=r.value+a,n;if("chlist"===i)return function(e,t,r,i){for(var a=r.value,n=[];r.value<a+i-1;){var o=M(t,r),s=D(e,r),l=F(e,r);r.value+=3;var f=D(e,r),u=D(e,r);n.push({name:o,pixelType:s,pLinear:l,xSampling:f,ySampling:u})}return r.value+=1,n}(e,t,r,a);if("chromaticities"===i)return o=I(e,r),s=I(e,r),l=I(e,r),f=I(e,r),{redX:o,redY:s,greenX:l,greenY:f,blueX:I(e,r),blueY:I(e,r),whiteX:I(e,r),whiteY:I(e,r)};if("compression"===i)return["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"][F(e,r)];if("box2i"===i)return{xMin:E(e,r),yMin:E(e,r),xMax:E(e,r),yMax:E(e,r)};if("lineOrder"===i)return["INCREASING_Y"][F(e,r)];if("float"===i)return I(e,r);else if("v2f"===i)return[I(e,r),I(e,r)];else if("v3f"===i)return[I(e,r),I(e,r),I(e,r)];else if("int"===i)return D(e,r);else if("rational"===i)return[D(e,r),E(e,r)];else if("timecode"===i)return[E(e,r),E(e,r)];else return"preview"===i?(r.value+=a,"skipped"):void(r.value+=a)}(e,t,r,s,l);void 0===f?console.warn(`EXRLoader.parse: skipped unknown header attribute type '${s}'.`):i[o]=f}}if((-5&a)!=0)throw console.error("EXRHeader:",i),"THREE.EXRLoader: provided file is currently unsupported.";return i}(U,e,z),k=function(e,t,r,i,a){let n={size:0,viewer:t,array:r,offset:i,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,[ee?"colorSpace":"encoding"]:null};switch(e.compression){case"NO_COMPRESSION":n.lines=1,n.uncompress=v;break;case"RLE_COMPRESSION":n.lines=1,n.uncompress=y;break;case"ZIPS_COMPRESSION":n.lines=1,n.uncompress=w;break;case"ZIP_COMPRESSION":n.lines=16,n.uncompress=w;break;case"PIZ_COMPRESSION":n.lines=32,n.uncompress=x;break;case"PXR24_COMPRESSION":n.lines=16,n.uncompress=b;break;case"DWAA_COMPRESSION":n.lines=32,n.uncompress=S;break;case"DWAB_COMPRESSION":n.lines=256,n.uncompress=S;break;default:throw"EXRLoader.parse: "+e.compression+" is unsupported"}if(n.scanlineBlockSize=n.lines,1==n.type)switch(a){case l.FloatType:n.getter=R,n.inputSize=2;break;case l.HalfFloatType:n.getter=L,n.inputSize=2}else if(2==n.type)switch(a){case l.FloatType:n.getter=I,n.inputSize=4;break;case l.HalfFloatType:n.getter=P,n.inputSize=4}else throw"EXRLoader.parse: unsupported pixelType "+n.type+" for "+e.compression+".";n.blockCount=(e.dataWindow.yMax+1)/n.scanlineBlockSize;for(var o=0;o<n.blockCount;o++)B(t,i);
81n.outputChannels=3==n.channels?4:n.channels;let s=n.width*n.height*n.outputChannels;switch(a){case l.FloatType:n.byteArray=new Float32Array(s),n.channels<n.outputChannels&&n.byteArray.fill(1,0,s);break;case l.HalfFloatType:n.byteArray=new Uint16Array(s),n.channels<n.outputChannels&&n.byteArray.fill(15360,0,s);break;default:console.error("THREE.EXRLoader: unsupported type: ",a)}return n.bytesPerLine=n.width*n.inputSize*n.channels,4==n.outputChannels?n.format=l.RGBAFormat:n.format=l.RedFormat,ee?n.colorSpace="srgb-linear":n.encoding=3e3,n}(O,U,A,z,this.type),N={value:0},H={R:0,G:1,B:2,A:3,Y:0};for(let e=0;e<k.height/k.scanlineBlockSize;e++){let t=E(U,z);k.size=E(U,z),k.lines=t+k.scanlineBlockSize>k.height?k.height-t:k.scanlineBlockSize;let r=k.size<k.lines*k.bytesPerLine?k.uncompress(k):v(k);z.value+=k.size;for(let t=0;t<k.scanlineBlockSize;t++){let i=t+e*k.scanlineBlockSize;if(i>=k.height)break;for(let e=0;e<k.channels;e++){let a=H[O.channels[e].name];for(let n=0;n<k.width;n++){N.value=(k.channels*k.width*t+e*k.width+n)*k.inputSize;let o=(k.height-1-i)*(k.width*k.outputChannels)+n*k.outputChannels+a;k.byteArray[o]=k.getter(r,N)}}}}return{header:O,width:k.width,height:k.height,data:k.byteArray,format:k.format,[ee?"colorSpace":"encoding"]:k[ee?"colorSpace":"encoding"],type:this.t
81ype}}setDataType(e){return this.type=e,this}load(e,t,r,i){return super.load(e,function(e,r){ee?e.colorSpace=r.colorSpace:e.encoding=r.encoding,e.minFilter=l.LinearFilter,e.magFilter=l.LinearFilter,e.generateMipmaps=!1,e.flipY=!1,t&&t(e,r)},r,i)}}let er=(e,t,r)=>{let i;switch(e){case l.UnsignedByteType:i=new Uint8ClampedArray(t*r*4);break;case l.HalfFloatType:i=new Uint16Array(t*r*4);break;case l.UnsignedIntType:i=new Uint32Array(t*r*4);break;case l.ByteType:i=new Int8Array(t*r*4);break;case l.ShortType:i=new Int16Array(t*r*4);break;case l.IntType:i=new Int32Array(t*r*4);break;case l.FloatType:i=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return i},ei=(e,t,r,a)=>{if(void 0!==i)return i;let n=new l.WebGLRenderTarget(1,1,a);t.setRenderTarget(n);let o=new l.Mesh(new l.PlaneGeometry,new l.MeshBasicMaterial({color:16777215}));t.render(o,r),t.setRenderTarget(null);let s=er(e,n.width,n.height);return t.readRenderTargetPixels(n,0,0,n.width,n.height,s),n.dispose(),o.geometry.dispose(),o.material.dispose(),i=0!==s[0]};class ea{_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
81=e.colorSpace;let t={format:l.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:l.LinearFilter,minFilter:e.renderTargetOptions?.minFilter!==void 0?e.renderTargetOptions?.minFilter:l.LinearFilter,samples:e.renderTargetOptions?.samples!==void 0?e.renderTargetOptions?.samples:void 0,wrapS:e.renderTargetOptions?.wrapS!==void 0?e.renderTargetOptions?.wrapS:l.ClampToEdgeWrapping,wrapT:e.renderTargetOptions?.wrapT!==void 0?e.renderTargetOptions?.wrapT:l.ClampToEdgeWrapping};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=ea.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new l.Scene,this._camera=new l.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(),!ei(this._type,this._renderer,this._camera,t)){let e;this._type===l.HalfFloatType&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?l.FloatType:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${l.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 l.Mesh(new l.PlaneGeometry,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new l.WebGLRenderTarget(this.width,this.height,t),this._renderTarget.texture.mapping=e.renderTargetOptions?.mapping!==void 0?e.renderTargetOptions?.mapping:l.UVMapping}static instantiateRenderer(){let e=new l.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=er(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new l.DataTexture(this.toArray(),this.width,this.height,l.RGBAFormat,this._type,e?.mapping||l.UVMapping,e?.wrapS||l.ClampToEdgeWrapping,e?.wrapT||l.ClampToEdgeWrapping,e?.magFilter||l.LinearFilter,e?.minFilter||l.LinearFilter,e?.anisotropy||1,l.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 l.ShaderMaterial&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof l.Texture&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof l.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}}class en extends Error{}
81class eo extends Error{}let es=(e,t,r)=>{let i=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(i)return i[1];let a=RegExp(`<${t}[^>]*>([\\s\\S]*?)</${t}>`,"i").exec(e);if(a){let e=a[1].match(/<rdf:li>([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):a[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)},el=e=>{let t;"undefined"!=typeof TextDecoder?t=new TextDecoder().decode(e):t=e.toString();let r=t.indexOf("<x:xmpmeta");for(;-1!==r;){let e=t.indexOf("x:xmpmeta>",r),i=t.slice(r,e+10);try{let e=es(i,"hdrgm:GainMapMin","0"),t=es(i,"hdrgm:GainMapMax"),r=es(i,"hdrgm:Gamma","1"),a=es(i,"hdrgm:OffsetSDR","0.015625"),n=es(i,"hdrgm:OffsetHDR","0.015625"),o=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(i),s=o?o[1]:"0",l=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(i);if(!l)throw Error("Incomplete gainmap metadata");let f=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(a)?a.map(e=>parseFloat(e)):[parseFloat(a),parseFloat(a),parseFloat(a)],offsetHdr:Array.isArray(n)?n.map(e=>parseFloat(e)):[parseFloat(n),parseFloat(n),parseFloat(n)],hdrCapacityMin:parseFloat(s),hdrCapacityMax:parseFloat(f)}}catch(e){}r=t.indexOf("<x:xmpmeta",e)}};class ef{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 i;let a=this.options.debug,n=new DataView(e.buffer);if(65496!==n.getUint16(0)){r(Error("Not a valid jpeg"));return}let o=n.byteLength,s=2,l=0;for(;s<o;){if(++l>250){r(Error(`Found no marker after ${l} loops 😵`));return}if(255!==n.getUint8(s)){r(Error(`Not a valid marker at offset 0x${s.toString(16)}, found: 0x${n.getUint8(s).toString(16)}`));return}if(i=n.getUint8(s+1),a&&console.log(`Marker: ${i.toString(16)}`),226===i){a&&console.log("Found APP2 marker (0xffe2)");let e=s+4;if(1297106432===n.getUint32(e)){let i;let a=e+4;if(18761===n.getUint16(a))i=!1;else if(19789===n.getUint16(a))i=!0;else{r(Error("No valid endianness marker found in TIFF header"));return}if(42!==n.getUint16(a+2,!i)){r(Error("Not valid TIFF data! (no 0x002A marker)"));return}let o=n.getUint32(a+4,!i);if(o<8){r(Error("Not valid TIFF data! (First offset less than 8)"));return}let s=a+o,l=n.getUint16(s,!i),f=s+2,u=0;for(let e=f;e<f+12*l;e+=12)45057===n.getUint16(e,!i)&&(u=n.getUint32(e+8,!i));let c=s+2+12*l+4,h=[];for(let e=c;e<c+16*u;e+=16){let t={MPType:n.getUint32(e,!i),size:n.getUint32(e+4,!i),dataOffset:n.getUint32(e+8,!i),dependantImages:n.getUint32(e+12,!i),start:-1,end:-1,isFII:!1};t.dataOffset?(t.start=a+t.dataOffset,t.isFII=!1):(t.start=0,t.isFII=!0),t.end=t.start+t.size,h.push(t)}if(this.options.extractNonFII&&h.length){let e=new Blob([n]),r=[];for(let t of h){if(t.isFII&&!this.options.extractFII)continue;let i=e.slice(t.start,t.end+1,"image/jpeg");r.push(i)}t(r)}}}s+=2+n.getUint16(s+2)}})}}let eu=async e=>{let t=el(e);if(!t)throw new eo("Gain map XMP metadata not found");let r=new ef({extractFII:!0,extractNonFII:!0}),i=await r.extract(e);if(2!==i.length)throw new en("Gain map recovery image not found");return{sdr:new Uint8Array(await i[0].arrayBuffer()),gainMap:new Uint8Array(await i[1].arrayBuffer()),metadata:t}},ec=e=>new Promise((t,r)=>{let i=document.createElement("img");i.onload=()=>{t(i)},i.onerror=e=>{r(e)},i.src=URL.createObjectURL(e)});class eh extends l.Loader{_renderer;_renderTargetOptions;_internalLoadingManager;_config;constructor(e,t){super(t),this._config=e,e.renderer&&(this._renderer=e.renderer),this._internalLoadingManager=new l.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 Loa
81der 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 l.Texture,sdr:new l.Texture});return this._config.createQuadRenderer({width:16,height:16,type:l.HalfFloatType,colorSpace:l.LinearSRGBColorSpace,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async processImages(e,t,r){let i,a;let n=t?new Blob([t],{type:"image/jpeg"}):void 0,o=new Blob([e],{type:"image/jpeg"}),s=!1;if("undefined"==typeof createImageBitmap){let e=await Promise.all([n?ec(n):Promise.resolve(void 0),ec(o)]);a=e[0],i=e[1],s="flipY"===r}else{let e=await Promise.all([n?createImageBitmap(n,{imageOrientation:r||"flipY"}):Promise.resolve(void 0),createImageBitmap(o,{imageOrientation:r||"flipY"})]);a=e[0],i=e[1]}return{sdrImage:i,gainMapImage:a,needsFlip:s}}createTextures(e,t,r){let i=new l.Texture(t||new ImageData(2,2),l.UVMapping,l.ClampToEdgeWrapping,l.ClampToEdgeWrapping,l.LinearFilter,l.LinearMipMapLinearFilter,l.RGBAFormat,l.UnsignedByteType,1,l.LinearSRGBColorSpace);i.flipY=r,i.needsUpdate=!0;let a=new l.Texture(e,l.UVMapping,l.ClampToEdgeWrapping,l.ClampToEdgeWrapping,l.LinearFilter,l.LinearMipMapLinearFilter,l.RGBAFormat,l.UnsignedByteType,1,l.SRGBColorSpace);return a.flipY=r,a.needsUpdate=!0,{gainMap:i,sdr:a}}updateQuadRenderer(e,t,r,i,a){e.width=t.width,e.height=t.height,e.material.gainMap=r,e.material.sdr=i,e.material.gainMapMin=a.gainMapMin,e.material.gainMapMax=a.gainMapMax,e.material.offsetHdr=a.offsetHdr,e.material.offsetSdr=a.offsetSdr,e.material.gamma=a.gamma,e.material.hdrCapacityMin=a.hdrCapacityMin,e.material.hdrCapacityMax=a.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,a.hdrCapacityMax),e.material.needsUpdate=!0}}let ep=`
82varying vec2 vUv;
83
84void main() {
85  vUv = uv;
86  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
87}
88`,ed=`
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
94uniform sampler2D sdr;
95uniform sampler2D gainMap;
96uniform vec3 gamma;
97uniform vec3 offsetHdr;
98uniform vec3 offsetSdr;
99uniform vec3 gainMapMin;
100uniform vec3 gainMapMax;
101uniform float weightFactor;
102
103varying vec2 vUv;
104
105void 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 eg extends l.ShaderMaterial{_maxDisplayBoost;_hdrCapacityMin;_hdrCapacityMax;constructor({gamma:e,offsetHdr:t,offsetSdr:r,gainMapMin:i,gainMapMax:a,maxDisplayBoost:n,hdrCapacityMin:o,hdrCapacityMax:s,sdr:f,gainMap:u}){super({name:"GainMapDecoderMaterial",vertexShader:ep,fragmentShader:ed,uniforms:{sdr:{value:f},gainMap:{value:u},gamma:{value:new l.Vector3(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new l.Vector3().fromArray(t)},offsetSdr:{value:new l.Vector3().fromArray(r)},gainMapMin:{value:new l.Vector3().fromArray(i)},gainMapMax:{value:new l.Vector3().fromArray(a)},weightFactor:{value:(Math.log2(n)-o)/(s-o)}},blending:l.NoBlending,depthTest:!1,depthWrite:!1}),this._maxDisplayBoost=n,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))}}a={renderer:l.WebGLRenderer,createMaterial:e=>new eg(e),createQuadRenderer:e=>new ea(e)},e=>{let{sdr:t,gainMap:r,renderer:i}=e;t.colorSpace!==l.SRGBColorSpace&&(console.warn("SDR Colorspace needs to be *SRGBColorSpace*, setting it automatically"),t.colorSpace
114=l.SRGBColorSpace),t.needsUpdate=!0,r.colorSpace!==l.LinearSRGBColorSpace&&(console.warn("Gainmap Colorspace needs to be *LinearSRGBColorSpace*, setting it automatically"),r.colorSpace=l.LinearSRGBColorSpace),r.needsUpdate=!0;let n=a.createMaterial({...e,sdr:t,gainMap:r});return a.createQuadRenderer({width:t.image.width,height:t.image.height,type:l.HalfFloatType,colorSpace:l.LinearSRGBColorSpace,material:n,renderer:i,renderTargetOptions:e.renderTargetOptions})};class em extends eh{constructor(e,t){super({renderer:e,createMaterial:e=>new eg(e),createQuadRenderer:e=>new ea(e)},t)}async render(e,t,r,i){let{sdrImage:a,gainMapImage:n,needsFlip:o}=await this.processImages(r,i,"flipY"),{gainMap:s,sdr:l}=this.createTextures(a,n,o);this.updateQuadRenderer(e,a,s,l,t),e.render()}}class ev extends em{load([e,t,r],i,a,n){let o,s,f;let u=this.prepareQuadRenderer(),c=async()=>{if(o&&s&&f){try{await this.render(u,f,o,s)}catch(i){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof n&&n(i),u.disposeOnDemandRenderer();return}"function"==typeof i&&i(u),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),u.disposeOnDemandRenderer()}},h=!0,p=0,d=0,g=!0,m=0,v=0,y=!0,w=0,x=0,b=()=>{"function"==typeof a&&a(new ProgressEvent("progress",{lengthComputable:h&&g&&y,loaded:d+v+x,total:p+m+w}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let S=new l.FileLoader(this._internalLoadingManager);S.setResponseType("arraybuffer"),S.setRequestHeader(this.requestHeader),S.setPath(this.path),S.setWithCredentials(this.withCredentials),S.load(e,async e=>{if("string"==typeof e)throw Error("Invalid sdr buffer");o=e,await c()},e=>{h=e.lengthComputable,d=e.loaded,p=e.total,b()},t=>{this.manager.itemError(e),"function"==typeof n&&n(t)});let M=new l.FileLoader(this._internalLoadingManager);M.setResponseType("arraybuffer"),M.setRequestHeader(this.requestHeader),M.setPath(this.path),M.setWithCredentials(this.withCredentials),M.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");s=e,await c()},e=>{g=e.lengthComputable,v=e.loaded,m=e.total,b()},e=>{this.manager.itemError(t),"function"==typeof n&&n(e)});let D=new l.FileLoader(this._internalLoadingManager);return D.setRequestHeader(this.requestHeader),D.setPath(this.path),D.setWithCredentials(this.withCredentials),D.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");f=JSON.parse(e),await c()},e=>{y=e.lengthComputable,x=e.loaded,w=e.total,b()},e=>{this.manager.itemError(r),"function"==typeof n&&n(e)}),u}}class ey extends em{load(e,t,r,i){let a=this.prepareQuadRenderer(),n=new l.FileLoader(this._internalLoadingManager);return n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setPath(this.path),n.setWithCredentials(this.withCredentials),this.manager.itemStart(e),n.load(e,async r=>{let n,o,s;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let l=new Uint8Array(r);try{let e=await eu(l);n=e.sdr,o=e.gainMap,s=e.metadata}catch(t){if(t instanceof eo||t instanceof en)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]},n=l;else throw t}try{await this.render(a,s,n.buffer,o?.buffer)}catch(t){this.manager.itemError(e),"function"==typeof i&&i(t),a.disposeOnDemandRenderer();return}"function"==typeof t&&t(a),this.manager.itemEnd(e),a.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof i&&i(t)}),a}}let ew={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"},ex="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",eb=e=>Array.isArray(e),eS=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function eM(){let{files:e=eS,path:t="",preset:r,encoding:i,extensions:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null,f=!1;r&&(eT(r),e=ew[r],t=ex),f=eb(e);let{extension:u,isCubemap:c}=eF(e);if(!(n=eB(u)))throw Error("useEnvironment: Unrecognized file extension: "+e);let h=(0,s.D)(e=>e.gl);(0,o.useLayoutEffect)(()=>{("webp"===u||"jpg"===u||"jpeg"===u)&&h.domElement.addEventListener("webglcontextlost",function(){s.H.clear(n,f?[e]:e)},{once:!0})},[e,h.domElement]);let p=(0,s.H)(n,f?[e]:e,e=>{("webp"===u||"jpg"===u||"jpeg"===u)&&e.setRenderer(h),null==e.setPath||e.setPath(t),a&&a(e)}),d=f?p[0]:p;if("jpg"===u||"jpeg"===u||"webp"===u){var g;d=null==(g=d.renderTarget)?void 0:g.texture}return d.mapping=c?l.CubeReflectionMapping:l.EquirectangularReflectionMapping,"colorSpace"in d?d.colorSpace
114=(null!=i?i:c)?"srgb":"srgb-linear":d.encoding=(null!=i?i:c)?3001:3e3,d}let eD={files:eS,path:"",preset:void 0,extensions:void 0};eM.preload=e=>{let t={...eD,...e},{files:r,path:i=""}=t,{preset:a,extensions:n}=t;a&&(eT(a),r=ew[a],i=ex);let{extension:o}=eF(r);if("webp"===o||"jpg"===o||"jpeg"===o)throw Error("useEnvironment: Preloading gainmaps is not supported");let l=eB(o);if(!l)throw Error("useEnvironment: Unrecognized file extension: "+r);s.H.preload(l,eb(r)?[r]:r,e=>{null==e.setPath||e.setPath(i),n&&n(e)})};let eE={files:eS,preset:void 0};function eT(e){if(!(e in ew))throw Error("Preset must be one of: "+Object.keys(ew).join(", "))}function eF(e){var t;let r=eb(e)&&6===e.length,i=eb(e)&&3===e.length&&e.some(e=>e.endsWith("json")),a=eb(e)?e[0]:e;return{extension:r?"cube":i?"webp":a.startsWith("data:application/exr")?"exr":a.startsWith("data:application/hdr")?"hdr":a.startsWith("data:image/jpeg")?"jpg":null==(t=a.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:i}}function eB(e){return"cube"===e?l.CubeTextureLoader:"hdr"===e?h:"exr"===e?et:"jpg"===e||"jpeg"===e?ey:"webp"===e?ev:null}eM.clear=e=>{let t={...eE,...e},{files:r}=t,{preset:i}=t;i&&(eT(i),r=ew[i]);let{extension:a}=eF(r),n=eB(a);if(!n)throw Error("useEnvironment: Unrecognized file extension: "+r);s.H.clear(n,eb(r)?[r]:r)};let eI=e=>e.current&&e.current.isScene,eP=e=>eI(e)?e.current:e;function eC(e,t,r,i){var a,n,o,l;let f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};f={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...f};let u=eP(t||r),c=u.background,h=u.environment,p={backgroundBlurriness:u.backgroundBlurriness,backgroundIntensity:u.backgroundIntensity,backgroundRotation:null!==(a=null==(n=u.backgroundRotation)||null==n.clone?void 0:n.clone())&&void 0!==a?a:[0,0,0],environmentIntensity:u.environmentIntensity,environmentRotation:null!==(o=null==(l=u.environmentRotation)||null==l.clone?void 0:l.clone())&&void 0!==o?o:[0,0,0]};return"only"!==e&&(u.environment=i),e&&(u.background=i),(0,s.k)(u,f),()=>{"only"!==e&&(u.environment=h),e&&(u.background=c),(0,s.k)(u,p)}}function eL(e){let{scene:t,background:r=!1,map:i,...a}=e,n=(0,s.D)(e=>e.scene);return o.useLayoutEffect(()=>{if(i)return eC(r,t,n,i,a)}),null}function eR(e){let{background:t=!1,scene:r,blur:i,backgroundBlurriness:a,backgroundIntensity:n,backgroundRotation:l,environmentIntensity:f,environmentRotation:u,...c}=e,h=eM(c),p=(0,s.D)(e=>e.scene);return o.useLayoutEffect(()=>eC(t,r,p,h,{backgroundBlurriness:null!=i?i:a,backgroundIntensity:n,backgroundRotation:l,environmentIntensity:f,environmentRotation:u})),null}function eU(e){let{children:t,near:r=.1,far:i=1e3,resolution:a=256,frames:n=1,map:f,background:u=!1,blur:c,backgroundBlurriness:h,backgroundIntensity:p,backgroundRotation:d,environmentIntensity:g,environmentRotation:m,scene:v,files:y,path:w,preset:x,extensions:b}=e,S=(0,s.D)(e=>e.gl),M=(0,s.D)(e=>e.scene),D=o.useRef(null),[E]=o.useState(()=>new l.Scene),T=o.useMemo(()=>{let e=new l.WebGLCubeRenderTarget(a);return e.texture.type=l.HalfFloatType,e},[a]);o.useLayoutEffect(()=>{if(1===n){let e=S.autoClear;S.autoClear=!0,D.current.update(S,E),S.autoClear=e}return eC(u,v,M,T.texture,{backgroundBlurriness:null!=c?c:h,backgroundIntensity:p,backgroundRotation:d,environmentIntensity:g,environmentRotation:m})},[t,E,T.texture,v,M,u,n,S]);let F=1;return(0,s.F)(()=>{if(n===1/0||F<n){let e=S.autoClear;S.autoClear=!0,D.current.update(S,E),S.autoClear=e,F++}}),o.createElement(o.Fragment,null,(0,s.h)(o.createElement(o.Fragment,null,t,o.createElement("cubeCamera",{ref:D,args:[r,i,T]}),y||x?o.createElement(eR,{background:!0,files:y,preset:x,path:w,extensions:b}):f?o.createElement(eL,{background:!0,map:f,extensions:b}):null),E))}function eA(e){var t,r,i,a;let l=eM(e),f=e.map||l;o.useMemo(()=>(0,s.e)({GroundProjectedEnvImpl:c}),[]);let u=o.useMemo(()=>[f],[f]),h=null==(t=e.ground)?void 0:t.height,p=null==(r=e.ground)?void 0:r.radius,d=null!==(i=null==(a=e.ground)?void 0:a.scale)&&void 0!==i?i:1e3;return o.createElement(o.Fragment,null,o.createElement(eL,(0,n.Z)({},e,{map:f})),o.createElement("groundProjectedEnvImpl",{args:u,scale:d,height:h,radius:p}))}function ez(e){return e.ground?o.createElement(eA,e):e.map?o.createElement(eL,e):e.children?o.createElement(eU,e):o.createElement(eR,e)}},4154:function(e,t,r){let i;r.d(t,{S:function(){return c}});var a=r(7653),n=r(78813);let o=e=>{let t;let r=new Set,i=(e,i)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=i?i:"object"!=typeof a||null===a)?a:Object.assign({},t,a),r.forEach(r=>r(t,e))}},a=()=>t,n={setState:i,getState:a,getInitialState:()=>o,subscribe:e=>(r.add(e),()=>r.delete(e))},o=t=e(i,a,n);return n},s=e=>e?o(e):o,l=e=>e,f=e=>{let t=s(e),r=e=>(function(e,t=l){let r=a.useSyncExternalStore(e.subscribe,a.useCallback(()=>t(e.getState()),[e,t]),a.useCallback(()=>t(e.getInitialState()),[e,t]));return a.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},u=0,c=(i=e=>(n.DefaultLoadingManager.onStart=(t,r,i)=>{e({active:!0,item:t,loaded:r,total:i,progress:(r-u)/(i-u)*100})},n.DefaultLoadingManager.onLoad=()=>{e({active:!1})},n.DefaultLoadingManager.onError=t=>e(e=>({errors:[...e.errors,t]})),n.DefaultLoadingManager.onProgress=(t,r,i)=>{r===i&&(u=i),e({active:!0,item:t,loaded:r,total:i,progress:(r-u)/(i-u)*100||100})},{errors:[],active:!1,progress:0,item:"",loaded:0,total:0}))?f(i):f},13195:function(e,t,r){r.d(t,{mE:function(){return s}});var i=r(7653),a=r(78813),n=r(97551);let o=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function s(e,t){let r=(0,n.D)(e=>e.gl),s=(0,n.H)(a.TextureLoader,o(e)?Object.values(e):e);return(0,i.useLayoutEffect)(()=>{null==t||t(s)},[t]),(0,i.useEffect)(()=>
114{if("initTexture"in r){let e=[];Array.isArray(s)?e=s:s instanceof a.Texture?e=[s]:o(s)&&(e=Object.values(s)),e.forEach(e=>{e instanceof a.Texture&&r.initTexture(e)})}},[r,s]),(0,i.useMemo)(()=>{if(!o(e))return s;{let t={},r=0;for(let i in e)t[i]=s[r++];return t}},[e,s])}s.preload=e=>n.H.preload(a.TextureLoader,e),s.clear=e=>n.H.clear(a.TextureLoader,e)},64535:function(e,t,r){let i=r(54177),a=r(94045),n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function o(e){if(e>2147483647)throw RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,s.prototype),t}function s(e,t,r){if("number"==typeof e){if("string"==typeof t)throw TypeError('The "string" argument must be of type string. Received type number');return u(e)}return l(e,t,r)}function l(e,t,r){if("string"==typeof e)return function(e,t){if(("string"!=typeof t||""===t)&&(t="utf8"),!s.isEncoding(t))throw TypeError("Unknown encoding: "+t);let r=0|d(e,t),i=o(r),a=i.write(e,t);return a!==r&&(i=i.slice(0,a)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if(O(e,Uint8Array)){let t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return c(e)}(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(O(e,ArrayBuffer)||e&&O(e.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(O(e,SharedArrayBuffer)||e&&O(e.buffer,SharedArrayBuffer)))return h(e,t,r);if("number"==typeof e)throw TypeError('The "value" argument must not be of type number. Received type number');let i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return s.from(i,t,r);let a=function(e){var t;if(s.isBuffer(e)){let t=0|p(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}return void 0!==e.length?"number"!=typeof e.length||(t=e.length)!=t?o(0):c(e):"Buffer"===e.type&&Array.isArray(e.data)?c(e.data):void 0}(e);if(a)return a;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return s.from(e[Symbol.toPrimitive]("string"),t,r);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function f(e){if("number"!=typeof e)throw TypeError('"size" argument must be of type number');if(e<0)throw RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return f(e),o(e<0?0:0|p(e))}function c(e){let t=e.length<0?0:0|p(e.length),r=o(t);for(let i=0;i<t;i+=1)r[i]=255&e[i];return r}function h(e,t,r){let i;if(t<0||e.byteLength<t)throw RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw RangeError('"length" is outside of buffer bounds');return Object.setPrototypeOf(i=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),s.prototype),i}function p(e){if(e>=2147483647)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function d(e,t){if(s.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||O(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let a=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return A(e).length;default:if(a)return i?-1:U(e).length;t=(""+t).toLowerCase(),a=!0}}function g(e,t,r){let a=!1;if((void 0===t||t<0)&&(t=0),t>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0||(r>>>=0)<=(t>>>=0)))return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,r){let i=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>i)&&(r=i);let a="";for(let i=t;i<r;++i)a+=k[e[i]];return a}(this,t,r);case"utf8":case"utf-8":return w(this,t,r);case"ascii":return function(e,t,r){let i="";r=Math.min(e.length,r);for(let a=t;a<r;++a)i+=String.fromCharCode(127&e[a]);return i}(this,t,r);case"latin1":case"binary":return function(e,t,r){let i="";r=Math.min(e.length,r);for(let a=t;a<r;++a)i+=String.fromCharCode(e[a]);return i}(this,t,r);case"base64":var n,o;return n=t,o=r,0===n&&o===this.length?i.fromByteArray(this):i.fromByteArray(this.slice(n,o));case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return function(e,t,r){let i=e.slice(t,r),a="";for(let e=0;e<i.length-1;e+=2)a+=String.fromCharCode(i[e]+256*i[e+1]);return a}(this,t,r);default:if(a)throw TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function m(e,t,r){let i=e[t];e[t]=e[r],e[r]=i}function v(e,t,r,i,a){var n;if(0===e.length)return -1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),(n=r=+r)!=n&&(r=a?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(a)return -1;r=e.length-1}
vendor: 5,794 bytes, line 114
114else if(r<0){if(!a)return -1;r=0}if("string"==typeof t&&(t=s.from(t,i)),s.isBuffer(t))return 0===t.length?-1:y(e,t,r,i,a);if("number"==typeof t)return(t&=255,"function"==typeof Uint8Array.prototype.indexOf)?a?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):y(e,[t],r,i,a);throw TypeError("val must be string, number or Buffer")}function y(e,t,r,i,a){let n,o=1,s=e.length,l=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return -1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){let i=-1;for(n=r;n<s;n++)if(f(e,n)===f(t,-1===i?0:n-i)){if(-1===i&&(i=n),n-i+1===l)return i*o}else -1!==i&&(n-=n-i),i=-1}else for(r+l>s&&(r=s-l),n=r;n>=0;n--){let r=!0;for(let i=0;i<l;i++)if(f(e,n+i)!==f(t,i)){r=!1;break}if(r)return n}return -1}function w(e,t,r){r=Math.min(e.length,r);let i=[],a=t;for(;a<r;){let t=e[a],n=null,o=t>239?4:t>223?3:t>191?2:1;if(a+o<=r){let r,i,s,l;switch(o){case 1:t<128&&(n=t);break;case 2:(192&(r=e[a+1]))==128&&(l=(31&t)<<6|63&r)>127&&(n=l);break;case 3:r=e[a+1],i=e[a+2],(192&r)==128&&(192&i)==128&&(l=(15&t)<<12|(63&r)<<6|63&i)>2047&&(l<55296||l>57343)&&(n=l);break;case 4:r=e[a+1],i=e[a+2],s=e[a+3],(192&r)==128&&(192&i)==128&&(192&s)==128&&(l=(15&t)<<18|(63&r)<<12|(63&i)<<6|63&s)>65535&&l<1114112&&(n=l)}}null===n?(n=65533,o=1):n>65535&&(n-=65536,i.push(n>>>10&1023|55296),n=56320|1023&n),i.push(n),a+=o}return function(e){let t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);let r="",i=0;for(;i<t;)r+=String.fromCharCode.apply(String,e.slice(i,i+=4096));return r}(i)}function x(e,t,r){if(e%1!=0||e<0)throw RangeError("offset is not uint");if(e+t>r)throw RangeError("Trying to access beyond buffer length")}function b(e,t,r,i,a,n){if(!s.isBuffer(e))throw TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<n)throw RangeError('"value" argument is out of bounds');if(r+i>e.length)throw RangeError("Index out of range")}function S(e,t,r,i,a){P(t,i,a,e,r,7);let n=Number(t&BigInt(4294967295));e[r++]=n,n>>=8,e[r++]=n,n>>=8,e[r++]=n,n>>=8,e[r++]=n;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,r}function M(e,t,r,i,a){P(t,i,a,e,r,7);let n=Number(t&BigInt(4294967295));e[r+7]=n,n>>=8,e[r+6]=n,n>>=8,e[r+5]=n,n>>=8,e[r+4]=n;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o>>=8,e[r+2]=o,o>>=8,e[r+1]=o,o>>=8,e[r]=o,r+8}function D(e,t,r,i,a,n){if(r+i>e.length||r<0)throw RangeError("Index out of range")}function E(e,t,r,i,n){return t=+t,r>>>=0,n||D(e,t,r,4,34028234663852886e22,-34028234663852886e22),a.write(e,t,r,i,23,4),r+4}function T(e,t,r,i,n){return t=+t,r>>>=0,n||D(e,t,r,8,17976931348623157e292,-17976931348623157e292),a.write(e,t,r,i,52,8),r+8}t.lW=s,t.h2=50,s.TYPED_ARRAY_SUPPORT=function(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),s.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(s.prototype,"parent",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,"offset",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),s.poolSize=8192,s.from=function(e,t,r){return l(e,t,r)},Object.setPrototypeOf(s.prototype,Uint8Array.prototype),Object.setPrototypeOf(s,Uint8Array),s.alloc=function(e,t,r){return(f(e),e<=0)?o(e):void 0!==t?"string"==typeof r?o(e).fill(t,r):o(e).fill(t):o(e)},s.allocUnsafe=function(e){return u(e)},s.allocUnsafeSlow=function(e){return u(e)},s.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==s.prototype},s.compare=function(e,t){if(O(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),O(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(e)||!s.isBuffer(t))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,i=t.length;for(let a=0,n=Math.min(r,i);a<n;++a)if(e[a]!==t[a]){r=e[a],i=t[a];break}return r<i?-1:i<r?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(e,t){let r;if(!Array.isArray(e))throw TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return s.alloc(0);if(void 0===t)for(r=0,t=0;r<e.length;++r)t+=e[r].length;let i=s.allocUnsafe(t),a=0;for(r=0;r<e.length;++r){let t=e[r];if(O(t,Uint8Array))a+t.length>i.length?(s.isBuffer(t)||(t=s.from(t)),t.copy(i,a)):Uint8Array.prototype.set.call(i,t,a);else if(s.isBuffer(t))t.copy(i,a);else throw TypeError('"list" argument must be an Array of Buffers');a+=t.length}return i},s.byteLength=d,s.prototype._isBuffer=!0,s.prototype.swap16=function(){let e=this.length;if(e%2!=0)throw RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)m(this,t,t+1);return this},s.prototype.swap32=function(){let e=this.length;if(e%4!=0)throw RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)m(this,t,t+3),m(this,t+1,t+2);return this},s.prototype.swap64=function(){let e=this.length;if(e%8!=0)throw RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)m(this,t,t+7),m(this,t+1,t+6),m(this,t+2,t+5),m(this,t+3,t+4);return this},s.prototype.toString=function(){let e=this.length;return 0===e?"":0==arguments.length?w(this,0,e):g.apply(this,arguments)}
vendor: 10,739 bytes, line 114
114,s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(e){if(!s.isBuffer(e))throw TypeError("Argument must be a Buffer");return this===e||0===s.compare(this,e)},s.prototype.inspect=function(){let e="",r=t.h2;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},n&&(s.prototype[n]=s.prototype.inspect),s.prototype.compare=function(e,t,r,i,a){if(O(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===a&&(a=this.length),t<0||r>e.length||i<0||a>this.length)throw RangeError("out of range index");if(i>=a&&t>=r)return 0;if(i>=a)return -1;if(t>=r)return 1;if(t>>>=0,r>>>=0,i>>>=0,a>>>=0,this===e)return 0;let n=a-i,o=r-t,l=Math.min(n,o),f=this.slice(i,a),u=e.slice(t,r);for(let e=0;e<l;++e)if(f[e]!==u[e]){n=f[e],o=u[e];break}return n<o?-1:o<n?1:0},s.prototype.includes=function(e,t,r){return -1!==this.indexOf(e,t,r)},s.prototype.indexOf=function(e,t,r){return v(this,e,t,r,!0)},s.prototype.lastIndexOf=function(e,t,r){return v(this,e,t,r,!1)},s.prototype.write=function(e,t,r,i){var a,n,o,s,l,f,u,c;if(void 0===t)i="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)i=t,r=this.length,t=0;else if(isFinite(t))t>>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let h=this.length-t;if((void 0===r||r>h)&&(r=h),e.length>0&&(r<0||t<0)||t>this.length)throw RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let p=!1;for(;;)switch(i){case"hex":return function(e,t,r,i){let a;r=Number(r)||0;let n=e.length-r;i?(i=Number(i))>n&&(i=n):i=n;let o=t.length;for(i>o/2&&(i=o/2),a=0;a<i;++a){let i=parseInt(t.substr(2*a,2),16);if(i!=i)break;e[r+a]=i}return a}(this,e,t,r);case"utf8":case"utf-8":return a=t,n=r,z(U(e,this.length-a),this,a,n);case"ascii":case"latin1":case"binary":return o=t,s=r,z(function(e){let t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(e),this,o,s);case"base64":return l=t,f=r,z(A(e),this,l,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return u=t,c=r,z(function(e,t){let r,i;let a=[];for(let n=0;n<e.length&&!((t-=2)<0);++n)i=(r=e.charCodeAt(n))>>8,a.push(r%256),a.push(i);return a}(e,this.length-u),this,u,c);default:if(p)throw TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),p=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},s.prototype.slice=function(e,t){let r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);let i=this.subarray(e,t);return Object.setPrototypeOf(i,s.prototype),i},s.prototype.readUintLE=s.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);let i=this[e],a=1,n=0;for(;++n<t&&(a*=256);)i+=this[e+n]*a;return i},s.prototype.readUintBE=s.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);let i=this[e+--t],a=1;for(;t>0&&(a*=256);)i+=this[e+--t]*a;return i},s.prototype.readUint8=s.prototype.readUInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),this[e]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readBigUInt64LE=N(function(e){C(e>>>=0,"offset");let t=this[e],r=this[e+7];(void 0===t||void 0===r)&&L(e,this.length-8);let i=t+256*this[++e]+65536*this[++e]+16777216*this[++e],a=this[++e]+256*this[++e]+65536*this[++e]+16777216*r;return BigInt(i)+(BigInt(a)<<BigInt(32))}),s.prototype.readBigUInt64BE=N(function(e){C(e>>>=0,"offset");let t=this[e],r=this[e+7];(void 0===t||void 0===r)&&L(e,this.length-8);let i=16777216*t+65536*this[++e]+256*this[++e]+this[++e],a=16777216*this[++e]+65536*this[++e]+256*this[++e]+r;return(BigInt(i)<<BigInt(32))+BigInt(a)}),s.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);let i=this[e],a=1,n=0;for(;++n<t&&(a*=256);)i+=this[e+n]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},s.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);let i=t,a=1,n=this[e+--i];for(;i>0&&(a*=256);)n+=this[e+--i]*a;return n>=(a*=128)&&(n-=Math.pow(2,8*t)),n},s.prototype.readInt8=function(e,t){return(e>>>=0,t||x(e,1,this.length),128&this[e])?-((255-this[e]+1)*1):this[e]},s.prototype.readInt16LE=function(e,t){e>>>=0,t||x(e,2,this.length);let r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(e,t){e>>>=0,t||x(e,2,this.length);let r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readBigInt64LE=N(function(e){C(e>>>=0,"offset");let t=this[e],r=this[e+7];return(void 0===t||void 0===r)&&L(e,this.length-8),(BigInt(this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24))<<BigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+16777216*this[++e])}),s.prototype.readBigInt64BE=N(function(e){C(e>>>=0,"offset");let t=this[e],r=this[e+7];return(void 0===t||void 0===r)&&L(e,this.length-8),(BigInt((t<<24)+65536*this[++e]+256*this[++e]+this[++e])<<BigInt(32))+BigInt(16777216*this[++e]+65536*this[++e]+256*this[++e]+r)}),s.prototype.readFloatLE=function(e,t){return e>>>=0,t||x(e,4,this.length),a.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e>>>=0,t||x(e,4,this.length),a.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e>>>=0,t||x(e,8,this.length),a.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e>>>=0,t||x(e,8,this.length),a.read(this,e,!1,52,8)},s.prototype.writeUintLE=s.prototype.writeUIntLE=function(e,t,r,i){if(e=+e,t>>>=0,r>>>=0,!i){let i=Math.pow(2,8*r)-1;b(this,e,t,r,i,0)}let a=1,n=0;for(this[t]=255&e;++n<r&&(a*=256);)this[t+n]=e/a&255;return t+r},s.prototype.writeUintBE=s.prototype.writeUIntBE=function(e,t,r,i){if(e=+e,t>>>=0,r>>>=0,!i){let i=Math.pow(2,8*r)-1;b(this,e,t,r,i,0)}let a=r-1,n=1;for(this[t+a]=255&e;--a>=0&&(n*=256);)this[t+a]=e/n&255;return t+r},s.prototype.writeUint8=s.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,1,255,0),this[t]=255&e,t+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeBigUInt64LE=N(function(e,t=0){return S(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeBigUInt64BE=N(function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))}),s.prototype.writeIntLE=function(e,t,r,i){if(e=+e,t>>>=0,!i){let i=Math.pow(2,8*r-1);b(this,e,t,r,i-1,-i)}let a=0,n=1,o=0;for(this[t]=255&e;++a<r&&(n*=256);)e<0&&0===o&&0!==this[t+a-1]&&(o=1),this[t+a]=(e/n>>0)-o&255;return t+r},s.prototype.writeIntBE=function(e,t,r,i){if(e=+e,t>>>=0,!i){let i=Math.pow(2,8*r-1);b(this,e,t,r,i-1,-i)}let a=r-1,n=1,o=0;for(this[t+a]=255&e;--a>=0&&(n*=256);)e<0&&0===o&&0!==this[t+a+1]&&(o=1),this[t+a]=(e/n>>0)-o&255;return t+r},s.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeBigInt64LE=N(function(e,t=0){return S(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeBigInt64BE=N(function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),s.prototype.writeFloatLE=function(e,t,r){return E(this,e,t,!0,r)},s.prototype.writeFloatBE=function(e,t,r){return E(this,e,t,!1,r)},s.prototype.writeDoubleLE=function(e,t,r){return T(this,e,t,!0,r)},s.prototype.writeDoubleBE=function(e,t,r){return T(this,e,t,!1,r)},s.prototype.copy=function(e,t,r,i){if(!s.isBuffer(e))throw TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i<r&&(i=r),i===r||0===e.length||0===this.length)return 0;if(t<0)throw RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw RangeError("Index out of range");if(i<0)throw RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t<i-r&&(i=e.length-t+r);let a=i-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,i):Uint8Array.prototype.set.call(e,this.subarray(r,i),t),a},s.prototype.fill=function(e,t,r,i){let a;if("string"==typeof e){if("string"==typeof t?(i=t,t=0,r=this.length):"string"==typeof r&&(i=r,r=this.length),void 0!==i&&"string"!=typeof i)throw TypeError("encoding must be a string");if("string"==typeof i&&!s.isEncoding(i))throw TypeError("Unknown encoding: "+i);if(1===e.length){let t=e.charCodeAt(0);("utf8"===i&&t<128||"latin1"===i)&&(e=t)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw RangeError("Out of range index");if(r<=t)return this;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a<r;++a)this[a]=e;
114else{let n=s.isBuffer(e)?e:s.from(e,i),o=n.length;if(0===o)throw TypeError('The value "'+e+'" is invalid for argument "value"');for(a=0;a<r-t;++a)this[a+t]=n[a%o]}return this};let F={};function B(e,t,r){F[e]=class extends r{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function I(e){let t="",r=e.length,i="-"===e[0]?1:0;for(;r>=i+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function P(e,t,r,i,a,n){if(e>r||e<t){let i;let a="bigint"==typeof t?"n":"";throw i=n>3?0===t||t===BigInt(0)?`>= 0${a} and < 2${a} ** ${(n+1)*8}${a}`:`>= -(2${a} ** ${(n+1)*8-1}${a}) and < 2 ** ${(n+1)*8-1}${a}`:`>= ${t}${a} and <= ${r}${a}`,new F.ERR_OUT_OF_RANGE("value",i,e)}C(a,"offset"),(void 0===i[a]||void 0===i[a+n])&&L(a,i.length-(n+1))}function C(e,t){if("number"!=typeof e)throw new F.ERR_INVALID_ARG_TYPE(t,"number",e)}function L(e,t,r){if(Math.floor(e)!==e)throw C(e,r),new F.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new F.ERR_BUFFER_OUT_OF_BOUNDS;throw new F.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}B("ERR_BUFFER_OUT_OF_BOUNDS",function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),B("ERR_INVALID_ARG_TYPE",function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`},TypeError),B("ERR_OUT_OF_RANGE",function(e,t,r){let i=`The value of "${e}" is out of range.`,a=r;return Number.isInteger(r)&&Math.abs(r)>4294967296?a=I(String(r)):"bigint"==typeof r&&(a=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(a=I(a)),a+="n"),i+=` It must be ${t}. Received ${a}`},RangeError);let R=/[^+/0-9A-Za-z-_]/g;function U(e,t){let r;t=t||1/0;let i=e.length,a=null,n=[];for(let o=0;o<i;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!a){if(r>56319||o+1===i){(t-=3)>-1&&n.push(239,191,189);continue}a=r;continue}if(r<56320){(t-=3)>-1&&n.push(239,191,189),a=r;continue}r=(a-55296<<10|r-56320)+65536}else a&&(t-=3)>-1&&n.push(239,191,189);if(a=null,r<128){if((t-=1)<0)break;n.push(r)}else if(r<2048){if((t-=2)<0)break;n.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;n.push(r>>12|224,r>>6&63|128,63&r|128)}else if(r<1114112){if((t-=4)<0)break;n.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else throw Error("Invalid code point")}return n}function A(e){return i.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(R,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,r,i){let a;for(a=0;a<i&&!(a+r>=t.length)&&!(a>=e.length);++a)t[a+r]=e[a];return a}function O(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}let k=function(){let e="0123456789abcdef",t=Array(256);for(let r=0;r<16;++r){let i=16*r;for(let a=0;a<16;++a)t[i+a]=e[r]+e[a]}return t}();function N(e){return"undefined"==typeof BigInt?H:e}function H(){throw Error("BigInt not supported")}},83733:function(e,t,r){r.d(t,{ZP:function(){return eE}});var i,a,n,o,s,l,f,u,c,h,p,d=r(36827),g={},m=180/Math.PI,v=Math.PI/180,y=Math.atan2,w=/([A-Z])/g,x=/(left|right|width|margin|padding|x)/i,b=/[\s,\(]\S/,S={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},M=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},D=function(e,t){return t.set(t.t,t.p,1===e?t.e:Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},E=function(e,t){return t.set(t.t,t.p,e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},T=function(e,t){return t.set(t.t,t.p,1===e?t.e:e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},F=function(e,t){var r=t.s+t.c*e;t.set(t.t,t.p,~~(r+(r<0?-.5:.5))+t.u,t)},B=function(e,t){return t.set(t.t,t.p,e?t.e:t.b,t)},I=function(e,t){return t.set(t.t,t.p,1!==e?t.b:t.e,t)},P=function(e,t,r){return e.style[t]=r},C=function(e,t,r){return e.style.setProperty(t,r)},L=function(e,t,r){return e._gsap[t]=r},R=function(e,t,r){return e._gsap.scaleX=e._gsap.scaleY=r},U=function(e,t,r,i,a){var n=e._gsap;n.scaleX=n.scaleY=r,n.renderTransform(a,n)},A=function(e,t,r,i,a){var n=e._gsap;n[t]=r,n.renderTransform(a,n)},z="transform",O=z+"Origin",k=function e(t,r){var i=this,a=this.target,n=a.style,o=a._gsap;if(t in g&&n){if(this.tfm=this.tfm||{},"transform"===t)return S.transform.split(",").forEach(function(t){return e.call(i,t,r)});if(~(t=S[t]||t).indexOf(",")?t.split(",").forEach(function(e){return i.tfm[e]=er(a,e)}):this.tfm[t]=o.x?o[t]:er(a,t),t===O&&(this.tfm.zOrigin=o.zOrigin),this.props.indexOf(z)>=0)return;o.svg&&(this.svgo=a.getAttribute("data-svg-origin"),this.props.push(O,r,"")),t=z}(n||r)&&this.props.push(t,r,n[t])},N=function(e){e.translate&&(e.removeProperty("translate"),e.removeProperty("scale"),e.removeProperty("rotate"))},H=function(){var e,t,r=this.props,i=this.target,a=i.style,n=i._gsap;for(e=0;e<r.length;
114e+=3)r[e+1]?2===r[e+1]?i[r[e]](r[e+2]):i[r[e]]=r[e+2]:r[e+2]?a[r[e]]=r[e+2]:a.removeProperty("--"===r[e].substr(0,2)?r[e]:r[e].replace(w,"-$1").toLowerCase());if(this.tfm){for(t in this.tfm)n[t]=this.tfm[t];n.svg&&(n.renderTransform(),i.setAttribute("data-svg-origin",this.svgo||"")),(e=h())&&e.isStart||a[z]||(N(a),n.zOrigin&&a[O]&&(a[O]+=" "+n.zOrigin+"px",n.zOrigin=0,n.renderTransform()),n.uncache=1)}},V=function(e,t){var r={target:e,props:[],revert:H,save:k};return e._gsap||d.p8.core.getCache(e),t&&e.style&&e.nodeType&&t.split(",").forEach(function(e){return r.save(e)}),r},W=function(e,t){var r=s.createElementNS?s.createElementNS((t||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),e):s.createElement(e);return r&&r.style?r:s.createElement(e)},Q=function e(t,r,i){var a=getComputedStyle(t);return a[r]||a.getPropertyValue(r.replace(w,"-$1").toLowerCase())||a.getPropertyValue(r)||!i&&e(t,Y(r)||r,1)||""},G="O,Moz,ms,Ms,Webkit".split(","),Y=function(e,t,r){var i=(t||u).style,a=5;if(e in i&&!r)return e;for(e=e.charAt(0).toUpperCase()+e.substr(1);a--&&!(G[a]+e in i););return a<0?null:(3===a?"ms":a>=0?G[a]:"")+e},j=function(){"undefined"!=typeof window&&window.document&&(l=(s=window.document).documentElement,u=W("div")||{style:{}},W("div"),O=(z=Y(z))+"Origin",u.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",p=!!Y("perspective"),h=d.p8.core.reverting,f=1)},Z=function(e){var t,r=e.ownerSVGElement,i=W("svg",r&&r.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),a=e.cloneNode(!0);a.style.display="block",i.appendChild(a),l.appendChild(i);try{t=a.getBBox()}catch(e){}return i.removeChild(a),l.removeChild(i),t},X=function(e,t){for(var r=t.length;r--;)if(e.hasAttribute(t[r]))return e.getAttribute(t[r])},K=function(e){var t,r;try{t=e.getBBox()}catch(i){t=Z(e),r=1}return t&&(t.width||t.height)||r||(t=Z(e)),!t||t.width||t.x||t.y?t:{x:+X(e,["x","cx","x1"])||0,y:+X(e,["y","cy","y1"])||0,width:0,height:0}},q=function(e){return!!(e.getCTM&&(!e.parentNode||e.ownerSVGElement)&&K(e))},J=function(e,t){if(t){var r,i=e.style;t in g&&t!==O&&(t=z),i.removeProperty?(("ms"===(r=t.substr(0,2))||"webkit"===t.substr(0,6))&&(t="-"+t),i.removeProperty("--"===r?t:t.replace(w,"-$1").toLowerCase())):i.removeAttribute(t)}},_=function(e,t,r,i,a,n){var o=new d.Fo(e._pt,t,r,0,1,n?I:B);return e._pt=o,o.b=i,o.e=a,e._props.push(r),o},$={deg:1,rad:1,turn:1},ee={grid:1,flex:1},et=function e(t,r,i,a){var n,o,l,f,c=parseFloat(i)||0,h=(i+"").trim().substr((c+"").length)||"px",p=u.style,m=x.test(r),v="svg"===t.tagName.toLowerCase(),y=(v?"client":"offset")+(m?"Width":"Height"),w="px"===a,b="%"===a;if(a===h||!c||$[a]||$[h])return c;if("px"===h||w||(c=e(t,r,i,"px")),f=t.getCTM&&q(t),(b||"%"===h)&&(g[r]||~r.indexOf("adius")))return n=f?t.getBBox()[m?"width":"height"]:t[y],(0,d.Pr)(b?c/n*100:c/100*n);if(p[m?"width":"height"]=100+(w?h:a),o="rem"!==a&&~r.indexOf("adius")||"em"===a&&t.appendChild&&!v?t:t.parentNode,f&&(o=(t.ownerSVGElement||{}).parentNode),o&&o!==s&&o.appendChild||(o=s.body),(l=o._gsap)&&b&&l.width&&m&&l.time===d.xr.time&&!l.uncache)return(0,d.Pr)(c/l.width*100);if(b&&("height"===r||"width"===r)){var S=t.style[r];t.style[r]=100+a,n=t[y],S?t.style[r]=S:J(t,r)}else(b||"%"===h)&&!ee[Q(o,"display")]&&(p.position=Q(t,"position")),o===t&&(p.position="static"),o.appendChild(u),n=u[y],o.removeChild(u),p.position="absolute";return m&&b&&((l=(0,d.DY)(o)).time=d.xr.time,l.width=o[y]),(0,d.Pr)(w?n*c/100:n&&c?100/n*c:0)},er=function(e,t,r,i){var a;return f||j(),t in S&&"transform"!==t&&~(t=S[t]).indexOf(",")&&(t=t.split(",")[0]),g[t]&&"transform"!==t?(a=ed(e,i),a="transformOrigin"!==t?a[t]:a.svg?a.origin:eg(Q(e,O))+" "+a.zOrigin+"px"):(!(a=e.style[t])||"auto"===a||i||~(a+"").indexOf("calc("))&&(a=es[t]&&es[t](e,t,r)||Q(e,t)||(0,d.Ok)(e,t)||("opacity"===t?1:0)),r&&!~(a+"").trim().indexOf(" ")?et(e,t,a,r)+r:a},ei=function(e,t,r,i){if(!r||"none"===r){var a=Y(t,e,1),n=a&&Q(e,a,1);n&&n!==r?(t=a,r=n):"borderColor"===t&&(r=Q(e,"borderTopColor"))}var o,s,l,f,u,c,h,p,g,m,v,y=new d.Fo(this._pt,e.style,t,0,1,d.Ks),w=0,x=0;
114if(y.b=r,y.e=i,r+="","var(--"===(i+="").substring(0,6)&&(i=Q(e,i.substring(4,i.indexOf(")")))),"auto"===i&&(c=e.style[t],e.style[t]=i,i=Q(e,t)||i,c?e.style[t]=c:J(e,t)),o=[r,i],(0,d.kr)(o),r=o[0],i=o[1],l=r.match(d.d4)||[],(i.match(d.d4)||[]).length){for(;s=d.d4.exec(i);)h=s[0],g=i.substring(w,s.index),u?u=(u+1)%5:("rgba("===g.substr(-5)||"hsla("===g.substr(-5))&&(u=1),h!==(c=l[x++]||"")&&(f=parseFloat(c)||0,v=c.substr((f+"").length),"="===h.charAt(1)&&(h=(0,d.cy)(f,h)+v),p=parseFloat(h),m=h.substr((p+"").length),w=d.d4.lastIndex-m.length,m||(m=m||d.Fc.units[t]||v,w!==i.length||(i+=m,y.e+=m)),v!==m&&(f=et(e,t,c,m)||0),y._pt={_next:y._pt,p:g||1===x?g:",",s:f,c:p-f,m:u&&u<4||"zIndex"===t?Math.round:0});y.c=w<i.length?i.substring(w,i.length):""}else y.r="display"===t&&"none"===i?I:B;return d.bQ.test(i)&&(y.e=0),this._pt=y,y},ea={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},en=function(e){var t=e.split(" "),r=t[0],i=t[1]||"50%";return("top"===r||"bottom"===r||"left"===i||"right"===i)&&(e=r,r=i,i=e),t[0]=ea[r]||r,t[1]=ea[i]||i,t.join(" ")},eo=function(e,t){if(t.tween&&t.tween._time===t.tween._dur){var r,i,a,n=t.t,o=n.style,s=t.u,l=n._gsap;if("all"===s||!0===s)o.cssText="",i=1;else for(a=(s=s.split(",")).length;--a>-1;)g[r=s[a]]&&(i=1,r="transformOrigin"===r?O:z),J(n,r);i&&(J(n,z),l&&(l.svg&&n.removeAttribute("transform"),o.scale=o.rotate=o.translate="none",ed(n,1),l.uncache=1,N(o)))}},es={clearProps:function(e,t,r,i,a){if("isFromStart"!==a.data){var n=e._pt=new d.Fo(e._pt,t,r,0,0,eo);return n.u=i,n.pr=-10,n.tween=a,e._props.push(r),1}}},el=[1,0,0,1,0,0],ef={},eu=function(e){return"matrix(1, 0, 0, 1, 0, 0)"===e||"none"===e||!e},ec=function(e){var t=Q(e,z);return eu(t)?el:t.substr(7).match(d.SI).map(d.Pr)},eh=function(e,t){var r,i,a,n,o=e._gsap||(0,d.DY)(e),s=e.style,f=ec(e);return o.svg&&e.getAttribute("transform")?"1,0,0,1,0,0"===(f=[(a=e.transform.baseVal.consolidate().matrix).a,a.b,a.c,a.d,a.e,a.f]).join(",")?el:f:(f!==el||e.offsetParent||e===l||o.svg||(a=s.display,s.display="block",(r=e.parentNode)&&(e.offsetParent||e.getBoundingClientRect().width)||(n=1,i=e.nextElementSibling,l.appendChild(e)),f=ec(e),a?s.display=a:J(e,"display"),n&&(i?r.insertBefore(e,i):r?r.appendChild(e):l.removeChild(e))),t&&f.length>6?[f[0],f[1],f[4],f[5],f[12],f[13]]:f)},ep=function(e,t,r,i,a,n){var o,s,l,f,u=e._gsap,c=a||eh(e,!0),h=u.xOrigin||0,p=u.yOrigin||0,d=u.xOffset||0,g=u.yOffset||0,m=c[0],v=c[1],y=c[2],w=c[3],x=c[4],b=c[5],S=t.split(" "),M=parseFloat(S[0])||0,D=parseFloat(S[1])||0;r?c!==el&&(s=m*w-v*y)&&(l=w/s*M+-y/s*D+(y*b-w*x)/s,f=-v/s*M+m/s*D-(m*b-v*x)/s,M=l,D=f):(M=(o=K(e)).x+(~S[0].indexOf("%")?M/100*o.width:M),D=o.y+(~(S[1]||S[0]).indexOf("%")?D/100*o.height:D)),i||!1!==i&&u.smooth?(x=M-h,b=D-p,u.xOffset=d+(x*m+b*y)-x,u.yOffset=g+(x*v+b*w)-b):u.xOffset=u.yOffset=0,u.xOrigin=M,u.yOrigin=D,u.smooth=!!i,u.origin=t,u.originIsAbsolute=!!r,e.style[O]="0px 0px",n&&(_(n,u,"xOrigin",h,M),_(n,u,"yOrigin",p,D),_(n,u,"xOffset",d,u.xOffset),_(n,u,"yOffset",g,u.yOffset)),e.setAttribute("data-svg-origin",M+" "+D)},ed=function(e,t){var r=e._gsap||new d.l1(e);if("x"in r&&!t&&!r.uncache)return r;var i,a,n,o,s,l,f,u,c,h,g,w,x,b,S,M,D,E,T,F,B,I,P,C,L,R,U,A,k,N,H,V,W=e.style,G=r.scaleX<0,Y=getComputedStyle(e),j=Q(e,O)||"0";return i=a=n=l=f=u=c=h=g=0,o=s=1,r.svg=!!(e.getCTM&&q(e)),Y.translate&&(("none"!==Y.translate||"none"!==Y.scale||"none"!==Y.rotate)&&(W[z]=("none"!==Y.translate?"translate3d("+(Y.translate+" 0 0").split(" ").slice(0,3).join(", ")+") ":"")+("none"!==Y.rotate?"rotate("+Y.rotate+") ":"")+("none"!==Y.scale?"scale("+Y.scale.split(" ").join(",")+") ":"")+("none"!==Y[z]?Y[z]:"")),W.scale=W.rotate=W.translate="none"),b=eh(e,r.svg),r.svg&&(r.uncache?(L=e.getBBox(),j=r.xOrigin-L.x+"px "+(r.yOrigin-L.y)+"px",C=""):C=!t&&e.getAttribute("data-svg-origin"),ep(e,C||j,!!C||r.originIsAbsolute,!1!==r.smooth,b)),w=r.xOrigin||0,x=r.yOrigin||0,b!==el&&(E=b[0],T=b[1],F=b[2],B=b[3],i=I=b[4],a=P=b[5],6===b.length?(o=Math.sqrt(E*E+T*T),s=Math.sqrt(B*B+F*F),l=E||T?y(T,E)*m:0,(c=F||B?y(F,B)*m+l:0)&&(s*=Math.abs(Math.cos(c*v))),r.svg&&(i-=w-(w*E+x*F),a-=x-(w*T+x*B))):(V=b[6],N=b[7],U=b[8],A=b[9],k=b[10],H=b[11],i=b[12],a=b[13],n=b[14],f=(S=y(V,k))*m,S&&(C=I*(M=Math.cos(-S))+U*(D=Math.sin(-S)),L=P*M+A*D,R=V*M+k*D,U=-(I*D)+U*M,A=-(P*D)+A*M,k=-(V*D)+k*M,H=-(N*D)+H*M,I=C,P=L,V=R),u=(S=y(-F,k))*m,S&&(C=E*(M=Math.cos(-S))-U*(D=Math.sin(-S)),L=T*M-A*D,R=F*M-k*D,H=B*D+H*M,E=C,T=L,F=R),l=(S=y(T,E))*m,S&&(C=E*(M=Math.cos(S))+T*(D=Math.sin(S)),L=I*M+P*D,T=T*M-E*D,P=P*M-I*D,E=C,I=L),f&&Math.abs(f)+Math.abs(l)>359.9&&(f=l=0,u=180-u),o=(0,d.Pr)(Math.sqrt(E*E+T*T+F*F)),s=(0,d.Pr)(Math.sqrt(P*P+V*V)),c=Math.abs(S=y(I,P))>2e-4?S*m:0,g=H?1/(H<0?-H:H):0),r.svg&&(C=e.getAttribute("transform"),r.forceCSS=e.setAttribute("transform","")||!eu(Q(e,z)),C&&e.setAttribute("transform",C))),Math.abs(c)>90&&270>Math.abs(c)&&(G?(o*=-1,c+=l<=0?180:-180,l+=l<=0?180:-180):(s*=-1,c+=c<=0?180:-180)),t=t||r.uncache,r.x=i-((r.xPercent=i&&(!t&&r.xPercent||(Math.round(e.offsetWidth/2)===Math.round(-i)?-50:0)))?e.offsetWidth*r.xPercent/100:0)+"px",r.y=a-((r.yPercent=a&&(!t&&r.yPercent||(Math.round(e.offsetHeight/2)===Math.round(-a)?
114-50:0)))?e.offsetHeight*r.yPercent/100:0)+"px",r.z=n+"px",r.scaleX=(0,d.Pr)(o),r.scaleY=(0,d.Pr)(s),r.rotation=(0,d.Pr)(l)+"deg",r.rotationX=(0,d.Pr)(f)+"deg",r.rotationY=(0,d.Pr)(u)+"deg",r.skewX=c+"deg",r.skewY=h+"deg",r.transformPerspective=g+"px",(r.zOrigin=parseFloat(j.split(" ")[2])||!t&&r.zOrigin||0)&&(W[O]=eg(j)),r.xOffset=r.yOffset=0,r.force3D=d.Fc.force3D,r.renderTransform=r.svg?ex:p?ew:ev,r.uncache=0,r},eg=function(e){return(e=e.split(" "))[0]+" "+e[1]},em=function(e,t,r){var i=(0,d.Wy)(t);return(0,d.Pr)(parseFloat(t)+parseFloat(et(e,"x",r+"px",i)))+i},ev=function(e,t){t.z="0px",t.rotationY=t.rotationX="0deg",t.force3D=0,ew(e,t)},ey="0deg",ew=function(e,t){var r=t||this,i=r.xPercent,a=r.yPercent,n=r.x,o=r.y,s=r.z,l=r.rotation,f=r.rotationY,u=r.rotationX,c=r.skewX,h=r.skewY,p=r.scaleX,d=r.scaleY,g=r.transformPerspective,m=r.force3D,y=r.target,w=r.zOrigin,x="",b="auto"===m&&e&&1!==e||!0===m;if(w&&(u!==ey||f!==ey)){var S,M=parseFloat(f)*v,D=Math.sin(M),E=Math.cos(M);n=em(y,n,-(D*(S=Math.cos(M=parseFloat(u)*v))*w)),o=em(y,o,-(-Math.sin(M)*w)),s=em(y,s,-(E*S*w)+w)}"0px"!==g&&(x+="perspective("+g+") "),(i||a)&&(x+="translate("+i+"%, "+a+"%) "),(b||"0px"!==n||"0px"!==o||"0px"!==s)&&(x+="0px"!==s||b?"translate3d("+n+", "+o+", "+s+") ":"translate("+n+", "+o+") "),l!==ey&&(x+="rotate("+l+") "),f!==ey&&(x+="rotateY("+f+") "),u!==ey&&(x+="rotateX("+u+") "),(c!==ey||h!==ey)&&(x+="skew("+c+", "+h+") "),(1!==p||1!==d)&&(x+="scale("+p+", "+d+") "),y.style[z]=x||"translate(0, 0)"},ex=function(e,t){var r,i,a,n,o,s=t||this,l=s.xPercent,f=s.yPercent,u=s.x,c=s.y,h=s.rotation,p=s.skewX,g=s.skewY,m=s.scaleX,y=s.scaleY,w=s.target,x=s.xOrigin,b=s.yOrigin,S=s.xOffset,M=s.yOffset,D=s.forceCSS,E=parseFloat(u),T=parseFloat(c);h=parseFloat(h),p=parseFloat(p),(g=parseFloat(g))&&(p+=g=parseFloat(g),h+=g),h||p?(h*=v,p*=v,r=Math.cos(h)*m,i=Math.sin(h)*m,a=-(Math.sin(h-p)*y),n=Math.cos(h-p)*y,p&&(g*=v,a*=o=Math.sqrt(1+(o=Math.tan(p-g))*o),n*=o,g&&(r*=o=Math.sqrt(1+(o=Math.tan(g))*o),i*=o)),r=(0,d.Pr)(r),i=(0,d.Pr)(i),a=(0,d.Pr)(a),n=(0,d.Pr)(n)):(r=m,n=y,i=a=0),(E&&!~(u+"").indexOf("px")||T&&!~(c+"").indexOf("px"))&&(E=et(w,"x",u,"px"),T=et(w,"y",c,"px")),(x||b||S||M)&&(E=(0,d.Pr)(E+x-(x*r+b*a)+S),T=(0,d.Pr)(T+b-(x*i+b*n)+M)),(l||f)&&(o=w.getBBox(),E=(0,d.Pr)(E+l/100*o.width),T=(0,d.Pr)(T+f/100*o.height)),o="matrix("+r+","+i+","+a+","+n+","+E+","+T+")",w.setAttribute("transform",o),D&&(w.style[z]=o)},eb=function(e,t,r,i,a){var n,o,s=(0,d.r9)(a),l=parseFloat(a)*(s&&~a.indexOf("rad")?m:1)-i,f=i+l+"deg";return s&&("short"===(n=a.split("_")[1])&&(l%=360)!=l%180&&(l+=l<0?360:-360),"cw"===n&&l<0?l=(l+36e9)%360-360*~~(l/360):"ccw"===n&&l>0&&(l=(l-36e9)%360-360*~~(l/360))),e._pt=o=new d.Fo(e._pt,t,r,i,l,D),o.e=f,o.u="deg",e._props.push(r),o},eS=function(e,t){for(var r in t)e[r]=t[r];return e},eM=function(e,t,r){var i,a,n,o,s,l,f,u=eS({},r._gsap),c=r.style;for(a in u.svg?(n=r.getAttribute("transform"),r.setAttribute("transform",""),c[z]=t,i=ed(r,1),J(r,z),r.setAttribute("transform",n)):(n=getComputedStyle(r)[z],c[z]=t,i=ed(r,1),c[z]=n),g)(n=u[a])!==(o=i[a])&&0>"perspective,force3D,transformOrigin,svgOrigin".indexOf(a)&&(s=(0,d.Wy)(n)!==(f=(0,d.Wy)(o))?et(r,a,n,f):parseFloat(n),l=parseFloat(o),e._pt=new d.Fo(e._pt,i,a,s,l-s,M),e._pt.u=f||0,e._props.push(a));eS(i,u)};(0,d.fS)("padding,margin,Width,Radius",function(e,t){var r="Right",i="Bottom",a="Left",n=(t<3?["Top",r,i,a]:["Top"+a,"Top"+r,i+r,i+a]).map(function(r){return t<2?e+r:"border"+r+e});es[t>1?"border"+e:e]=function(e,t,r,i,a){var o,s;if(arguments.length<4)return 5===(s=(o=n.map(function(t){return er(e,t,r)})).join(" ")).split(o[0]).length?o[0]:s;o=(i+"").split(" "),s={},n.forEach(function(e,t){return s[e]=o[t]=o[t]||o[(t-1)/2|0]}),e.init(t,s,a)}});var eD={name:"css",register:j,targetTest:function(e){return e.style&&e.nodeType},init:function(e,t,r,i,a){var n,o,s,l,u,c,h,p,m,v,y,w,x,D,B,I,P,C=this._props,L=e.style,R=r.vars.startAt;for(h in f||j(),this.styles=this.styles||V(e),I=this.styles.props,this.tween=r,t)if("autoRound"!==h&&(o=t[h],!(d.$i[h]&&(0,d.if)(h,t,r,i,e,a)))){if(u=typeof o,c=es[h],"function"===u&&(u=typeof(o=o.call(r,i,e,a))),"string"===u&&~o.indexOf("random(")&&(o=(0,d.UI)(o)),c)c(this,e,h,o,r)&&(B=1);else if("--"===h.substr(0,2))n=(getComputedStyle(e).getPropertyValue(h)+"").trim(),o+="",d.GN.lastIndex=0,!d.GN.test(n)&&(p=(0,d.Wy)(n),(m=(0,d.Wy)(o))?p!==m&&(n=et(e,h,n,m)+m):p&&(o+=p)),this.add(L,"setProperty",n,o,i,a,0,0,h),C.push(h),I.push(h,0,L[h]);else if("undefined"!==u){if(R&&h in R?(n="function"==typeof R[h]?R[h].call(r,i,e,a):R[h],(0,d.r9)(n)&&~n.indexOf("random(")&&(n=(0,d.UI)(n)),(0,d.Wy)(n+"")||"auto"===n||(n+=d.Fc.units[h]||(0,d.Wy)(er(e,h))||""),"="===(n+"").charAt(1)&&(n=er(e,h))):n=er(e,h),l=parseFloat(n),(v="string"===u&&"="===o.charAt(1)&&o.substr(0,2))&&(o=o.substr(2)),s=parseFloat(o),h in S&&("autoAlpha"===h&&(1===l&&"hidden"===er(e,"visibility")&&s&&(l=0),I.push("visibility",0,L.visibility),_(this,L,"visibility",l?"inherit":"hidden",s?"inherit":"hidden",!s)),"scale"!==h&&"transform"!==h&&~(h=S[h]).indexOf(",")&&(h=h.split(",")[0])),y=h in g){if(this.styles.save(h),P=o,"string"===u&&"var(--"===o.substring(0,6)){if("calc("===(o=Q(e,o.substring(4,o.indexOf(")")))).substring(0,5)){var U=e.style.perspective;e.style.perspective=o,o=Q(e,"perspective"),U?e.style.perspective=U:J(e,"perspective")}s=parseFloat(o)}if(w||((x=e._gsap).renderTransform&&!t.parseTransform||ed(e,t.parseTransform),D=!1!==t.smoothOrigin&&x.smooth,(w=this._pt=new d.Fo(this._pt,L,z,0,1,x.renderTransform,x,0,-1)).dep=1),"scale"===h)this._pt=new d.Fo(this._pt,x,"scaleY",x.scaleY,(v?(0,d.cy)(x.scaleY,v+s):s)-x.scaleY||0,M),this._pt.u=0,C.push("scaleY",h),h+="X";else if("transformOrigin"===h){I.push(O,0,L[O]),o=en(o),x.svg?ep(e,o,0,D,0,this):((m=parseFloat(o.split(" ")[2])||0)!==x.zOrigin&&_(this,x,"zOrigin",x.zOrigin,m),_(this,L,h,eg(n),eg(o)));continue}else if("svgOrigin"===h){ep(e,o,1,D,0,this);continue}else if(h in ef){eb(this,x,h,l,v?(0,d.cy)(l,v+o):o);continue}else if("smoothOrigin"===h){_(this,x,"smooth",x.smooth,o);continue}else if("force3D"===h){x[h]=o;continue}else if("transform"===h){eM(this,o,e);continue}}else h in L||(h=Y(h)||h);if(y||(s||0===s)&&(l||0===l)&&!b.test(o)&&h in L)p=(n+"").substr((l+"").length),s||(s=0),m=(0,d.Wy)(o)||(h in d.Fc.units?d.Fc.units[h]:p),p!==m&&(l=et(e,h,n,m)),this._pt=new d.Fo(this._pt,y?x:L,h,l,(v?(0,d.cy)(l,v+s):s)-l,y||"px"!==m&&"zIndex"!==h||!1===t.autoRound?M:F),this._pt.u=m||0,y&&P!==o?(this._pt.b=n,this._pt.e=P,this._pt.r=T):p!==m&&"%"!==m&&(this._pt.b=n,this._pt.r=E);else if(h in L)ei.call(this,e,h,n,v?v+o:o);
114else if(h in e)this.add(e,h,n||e[h],v?v+o:o,i,a);else if("parseTransform"!==h){(0,d.lC)(h,o);continue}y||(h in L?I.push(h,0,L[h]):"function"==typeof e[h]?I.push(h,2,e[h]()):I.push(h,1,n||e[h])),C.push(h)}}B&&(0,d.JV)(this)},render:function(e,t){if(t.tween._time||!h())for(var r=t._pt;r;)r.r(e,r.d),r=r._next;else t.styles.revert()},get:er,aliases:S,getSetter:function(e,t,r){var i=S[t];return i&&0>i.indexOf(",")&&(t=i),t in g&&t!==O&&(e._gsap.x||er(e,"x"))?r&&c===r?"scale"===t?R:L:(c=r||{},"scale"===t?U:A):e.style&&!(0,d.m2)(e.style[t])?P:~t.indexOf("-")?C:(0,d.S5)(e,t)},core:{_removeProperty:J,_getMatrix:eh}};d.p8.utils.checkPrefix=Y,d.p8.core.getStyleSaver=V,i="x,y,z,scale,scaleX,scaleY,xPercent,yPercent",a="rotation,rotationX,rotationY,skewX,skewY",n="0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY",o=(0,d.fS)(i+","+a+",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective",function(e){g[e]=1}),(0,d.fS)(a,function(e){d.Fc.units[e]="deg",ef[e]=1}),S[o[13]]=i+","+a,(0,d.fS)(n,function(e){var t=e.split(":");S[t[1]]=o[t[0]]}),(0,d.fS)("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(e){d.Fc.units[e]="px"}),d.p8.registerPlugin(eD);var eE=d.p8.registerPlugin(eD)||d.p8;eE.core.Tween},2949:function(e,t,r){r.d(t,{KX:function(){return l},YD:function(){return f}});var i=r(38577),a=r(7653),n=r(27573);let o=e=>{var t,r;let{animationId:i,autoplay:o,backgroundColor:s,className:l,createDotLottie:f,data:u,dotLottieRefCallback:c,layout:h,loop:p,mode:d,playOnHover:g,renderConfig:m,segment:v,speed:y,src:w,stateMachineConfig:x,stateMachineId:b,style:S,themeData:M,themeId:D,useFrameInterpolation:E,workerId:T,...F}=e,B=(0,a.useRef)(null),I=(0,a.useRef)(null),P=(0,a.useRef)(c),C={speed:y,mode:d,loop:p,useFrameInterpolation:E,segment:v,backgroundColor:s,autoplay:o,themeId:D,workerId:T,src:w,data:u,layout:h,renderConfig:m,animationId:i,stateMachineConfig:x,stateMachineId:b},L=(0,a.useRef)(C);P.current=c,L.current=C;let R=(0,a.useCallback)(e=>{var t,r;I.current=e,e?B.current=f({...L.current,canvas:e}):(null===(t=B.current)||void 0===t||t.destroy(),B.current=null),null===(r=P.current)||void 0===r||r.call(P,B.current)},[]);return(0,a.useEffect)(()=>{var e,t;let r=e=>{var t,r;g&&("mouseenter"===e.type&&(null===(t=B.current)||void 0===t||t.play()),"mouseleave"===e.type&&(null===(r=B.current)||void 0===r||r.pause()))};return null===(e=I.current)||void 0===e||e.addEventListener("mouseenter",r),null===(t=I.current)||void 0===t||t.addEventListener("mouseleave",r),()=>{var e,t;null===(e=I.current)||void 0===e||e.removeEventListener("mouseenter",r),null===(t=I.current)||void 0===t||t.removeEventListener("mouseleave",r)}},[g]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setSpeed(null!=y?y:1)},[y]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setMode(null!=d?d:"forward")},[d]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setLoop(null!=p&&p)},[p]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setUseFrameInterpolation(null==E||E)},[E]),(0,a.useEffect)(()=>{var e,t;"number"==typeof(null==v?void 0:v[0])&&"number"==typeof v[1]?null===(e=B.current)||void 0===e||e.setSegment(v[0],v[1]):null===(t=B.current)||void 0===t||t.resetSegment()},[v]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setBackgroundColor(null!=s?s:"")},[s]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setRenderConfig(null!=m?m:{})},[JSON.stringify(m)]),(0,a.useEffect)(()=>{var e;"string"!=typeof u&&"object"!=typeof u||null===(e=B.current)||void 0===e||e.load({data:u,...L.current})},[u]),(0,a.useEffect)(()=>{var e;"string"==typeof w&&(null===(e=B.current)||void 0===e||e.load({src:w,...L.current}))},[w]),(0,a.useEffect)(()=>{var e,t;null===(e=B.current)||void 0===e||e.setMarker(null!==(t=F.marker)&&void 0!==t?t:"")},[F.marker]),(0,a.useEffect)(()=>{var e;(null===(e=B.current)||void 0===e?void 0:e.isLoaded)&&B.current.activeAnimationId!==i&&B.current.loadAnimation(null!=i?i:"")},[i]),(0,a.useEffect)(()=>{var e;"string"==typeof D&&(null===(e=B.current)||void 0===e||e.setTheme(D))},[D]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setThemeData(null!=M?M:"")},[M]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.setLayout(null!=h?h:{})},[null==h?void 0:h.fit,null==h?void 0:null===(t=h.align)||void 0===t?void 0:t[0],null==h?void 0:null===(r=h.align)||void 0===r?void 0:r[1]]),(0,a.useEffect)(()=>{var e;(null===(e=B.current)||void 0===e?void 0:e.isLoaded)&&("string"==typeof b&&b?B.current.stateMachineLoad(b)&&B.current.stateMachineStart():B.current.stateMachineStop())},[b]),(0,a.useEffect)(()=>{var e;null===(e=B.current)||void 0===e||e.stateMachineSetConfig(null!=x?x:null)},[x]),(0,n.jsx)("div",{className:l,...!l&&{style:{width:"100%",height:"100%",lineHeight:0,...S}},children:(0,n.jsx)("canvas",{ref:R,style:{width:"100%",height:"100%"},...F})})},s=e=>new i.P(e),l=e=>(0,n.jsx)(o,{...e,createDotLottie:s}),f=e=>{i.P.setWasmUrl(e),i.J.setWasmUrl(e)}},57221:function(e,t,r){let i;r.d(t,{x:function(){return c}});var a=r(27573),n=r(78813),o=r(7653),s=r(97551),l=r(87590);let f=(0,o.createContext)(null),u=e=>(e.getAttributes()&l.VB.CONVOLUTION)===l.VB.CONVOLUTION,c=o.memo((0,o.forwardRef)(({children:e,camera:t,scene:r,resolutionScale:c,enabled:h=!0,renderPri
114ority:p=1,autoClear:d=!0,depthBuffer:g,enableNormalPass:m,stencilBuffer:v,multisampling:y=8,frameBufferType:w=n.HalfFloatType},x)=>{let{gl:b,scene:S,camera:M,size:D}=(0,s.D)(),E=r||S,T=t||M,[F,B,I]=(0,o.useMemo)(()=>{let e=function(){var e;if(void 0!==i)return i;try{let t;let r=document.createElement("canvas");return i=!!(window.WebGL2RenderingContext&&(t=r.getContext("webgl2"))),t&&(null==(e=t.getExtension("WEBGL_lose_context"))||e.loseContext()),i}catch(e){return i=!1}}(),t=new l.xC(b,{depthBuffer:g,stencilBuffer:v,multisampling:y>0&&e?y:0,frameBufferType:w});t.addPass(new l.CD(E,T));let r=null,a=null;return m&&((a=new l.gh(E,T)).enabled=!1,t.addPass(a),void 0!==c&&e&&((r=new l.xs({normalBuffer:a.texture,resolutionScale:c})).enabled=!1,t.addPass(r))),[t,a,r]},[T,b,g,v,y,w,E,m,c]);(0,o.useEffect)(()=>null==F?void 0:F.setSize(D.width,D.height),[F,D]),(0,s.F)((e,t)=>{if(h){let e=b.autoClear;b.autoClear=d,v&&!d&&b.clearStencil(),F.render(t),b.autoClear=e}},h?p:0);let P=(0,o.useRef)(null),C=(0,s.A)(P);(0,o.useLayoutEffect)(()=>{let e=[];
114if(P.current&&C.current&&F){let t=C.current.objects;for(let r=0;r<t.length;r++){let i=t[r];if(i instanceof l.Qm){let a=[i];if(!u(i)){let e=null;for(;(e=t[r+1])instanceof l.Qm&&!u(e);)a.push(e),r++}let n=new l.H5(T,...a);e.push(n)}else i instanceof l.w2&&e.push(i)}for(let t of e)null==F||F.addPass(t);B&&(B.enabled=!0),I&&(I.enabled=!0)}return()=>{for(let t of e)null==F||F.removePass(t);B&&(B.enabled=!1),I&&(I.enabled=!1)}},[F,e,T,B,I,C]),(0,o.useEffect)(()=>{let e=b.toneMapping;return b.toneMapping=n.NoToneMapping,()=>{b.toneMapping=e}},[]);let L=(0,o.useMemo)(()=>({composer:F,normalPass:B,downSamplingPass:I,resolutionScale:c,camera:T,scene:E}),[F,B,I,c,T,E]);return(0,o.useImperativeHandle)(x,()=>F,[F]),(0,a.jsx)(f.Provider,{value:L,children:(0,a.jsx)("group",{ref:P,children:e})})}))},65802:function(e,t,r){r.d(t,{B:function(){return M}});var i=r(27573),a=r(7653),n=r(78813),o=r(87590),s=r(64535),l=Object.defineProperty,f=(e,t,r)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t,r)=>(f(e,"symbol"!=typeof t?t+"":t,r),r);class c extends n.BufferGeometry{constructor(){super(),u(this,"boundingSphere",new n.Sphere),this.setAttribute("position",new n.BufferAttribute(new Float32Array([-1,-1,3,-1,-1,3]),2)),this.setAttribute("uv",new n.BufferAttribute(new Float32Array([0,0,2,0,0,2]),2))}computeBoundingSphere(){}}let h=new c,p=new n.OrthographicCamera;class d{constructor(e){this._mesh=new n.Mesh(h,e),this._mesh.frustumCulled=!1}render(e){e.render(this._mesh,p)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.material.dispose(),this._mesh.geometry.dispose()}}let g={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},sceneNormal:{value:null},projMat:{value:new n.Matrix4},viewMat:{value:new n.Matrix4},projViewMat:{value:new n.Matrix4},projectionMatrixInv:{value:new n.Matrix4},viewMatrixInv:{value:new n.Matrix4},cameraPos:{value:new n.Vector3},resolution:{value:new n.Vector2},time:{value:0},samples:{value:[]},samplesR:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},logDepth:{value:!1},ortho:{value:!1},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:`
115varying vec2 vUv;
116void main() {
117  vUv = uv;
118  gl_Position = vec4(position, 1);
119}`,fragmentShader:`
120    #define SAMPLES 16
121    #define FSAMPLES 16.0
122uniform sampler2D sceneDiffuse;
123uniform highp sampler2D sceneNormal;
124uniform highp sampler2D sceneDepth;
125uniform mat4 projectionMatrixInv;
126uniform mat4 viewMatrixInv;
127uniform mat4 projMat;
128uniform mat4 viewMat;
129uniform mat4 projViewMat;
130uniform vec3 cameraPos;
131uniform vec2 resolution;
132uniform float time;
133uniform vec3[SAMPLES] samples;
134uniform float[SAMPLES] samplesR;
135uniform float radius;
136uniform float distanceFalloff;
137uniform float near;
138uniform float far;
139uniform bool logDepth;
140uniform bool ortho;
141uniform bool screenSpaceRadius;
142uniform sampler2D bluenoise;
143    varying vec2 vUv;
144    highp float linearize_depth(highp float d, highp float zNear,highp float zFar)
145    {
146        return (zFar * zNear) / (zFar - d * (zFar - zNear));
147    }
148    highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {
149      return nearZ + (farZ - nearZ) * d;
150    }
151    highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {
152      float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;
153      float a = farZ / (farZ - nearZ);
154      float b = farZ * nearZ / (nearZ - farZ);
155      float linDepth = a + b / depth;
156      return ortho ? linearize_depth_ortho(
157        linDepth,
158        nearZ,
159        farZ
160      ) :linearize_depth(linDepth, nearZ, farZ);
161    }
162
163    vec3 getWorldPosLog(vec3 posS) {
164      vec2 uv = posS.xy;
165      float z = posS.z;
166      float nearZ =near;
167      float farZ = far;
168      float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;
169      float a = farZ / (farZ - nearZ);
170      float b = farZ * nearZ / (nearZ - farZ);
171      float linDepth = a + b / depth;
172      vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;
173      vec4 wpos = projectionMatrixInv * clipVec;
174      return wpos.xyz / wpos.w;
175    }
176    vec3 getWorldPos(float depth, vec2 coord) {
177      #ifdef LOGDEPTH
178        return getWorldPosLog(vec3(coord, depth));
179      #endif
180      float z = depth * 2.0 - 1.0;
181      vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
182      vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;
183      // Perspective division
184     vec4 worldSpacePosition = viewSpacePosition;
185     worldSpacePosition.xyz /= worldSpacePosition.w;
186      return worldSpacePosition.xyz;
187  }
188
189  vec3 computeNormal(vec3 worldPos, vec2 vUv) {
190    ivec2 p = ivec2(vUv * resolution);
191    float c0 = texelFetch(sceneDepth, p, 0).x;
192    float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;
193    float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;
194    float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;
195    float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;
196    float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;
197    float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;
198    float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;
199    float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;
200
201    float dl = abs((2.0 * l1 - l2) - c0);
202    float dr = abs((2.0 * r1 - r2) - c0);
203    float db = abs((2.0 * b1 - b2) - c0);
204    float dt = abs((2.0 * t1 - t2) - c0);
205
206    vec3 ce = getWorldPos(c0, vUv).xyz;
207
208    vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz
209                          : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;
210    vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz
211                          : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;
212
213    return normalize(cross(dpdx, dpdy));
214}
215
216void main() {
217      vec4 diffuse = texture2D(sceneDiffuse, vUv);
218      float depth = texture2D(sceneDepth, vUv).x;
219      if (depth == 1.0) {
220        gl_FragColor = vec4(vec3(1.0), 1.0);
221        return;
222      }
223      vec3 worldPos = getWorldPos(depth, vUv);
224    //  vec3 normal = texture2D(sceneNormal, vUv).rgb;//computeNormal(worldPos, vUv);
225      #ifdef HALFRES
226        vec3 normal = texture2D(sceneNormal, vUv).rgb;
227      #else
228        vec3 normal = computeNormal(worldPos, vUv);
229      #endif
230      vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0);
231      vec3 randomVec = normalize(noise.rgb * 2.0 - 1.0);
232      vec3 tangent = normalize(randomVec - normal * dot(randomVec, normal));
233      vec3 bitangent = cross(normal, tangent);
234      mat3 tbn = mat3(tangent, bitangent, normal);
235      float occluded = 0.0;
236      float totalWeight = 0.0;
237     /* float radiusScreen = distance(
238        worldPos,
239        getWorldPos(depth, vUv + 
240          vec2(48.0, 0.0) / resolution)
241      );/*vUv.x < 0.5 ? radius : min(distance(
242        worldPos,
243        getWorldPos(depth, vUv + 
244          vec2(100.0, 0.0) / resolution)
245      ), radius);
246      float distanceFalloffScreen = radiusScreen * 0.2;*/
247      float radiusToUse = screenSpaceRadius ? distance(
248        worldPos,
249        getWorldPos(depth, vUv +
250          vec2(radius, 0.0) / resolution)
251      ) : radius;
252      float distanceFalloffToUse =screenSpaceRadius ?
253          radiusToUse * distanceFalloff
254      : distanceFalloff;
255      float bias = (0.1 / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse;
256      for(float i = 0.0; i < FSAMPLES; i++) {
257        vec3 sampleDirection = 
258        tbn * 
259        samples[int(i)];
260        ;
261        float moveAmt = samplesR[int(mod(i + noise.a * FSAMPLES, FSAMPLES))];
262        vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection;
263        vec4 offset = projMat * vec4(samplePos, 1.0);
264        offset.xyz /= offset.w;
265        offset.xyz = offset.xyz * 0.5 + 0.5;
266        float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x;
267        /*float distSample = logDepth ? linearize_depth_log(sampleDepth, near, far) 
268         (ortho ?  linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far));*/
269        #ifdef LOGDEPTH
270        float distSample = linearize_depth_log(sampleDepth, near, far);
271        #else
272        float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far);
273        #endif
274        float distWorld = ortho ? linearize_depth_ortho(offset.z, near, far) : linearize_depth(offset.z, near, far);
275        float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld)));
276        vec2 diff = gl_FragCoord.xy - ( offset.xy * resolution);
277        float weight = dot(sampleDirection, normal);
278          occluded += rangeCheck * weight * 
279            (distSample + bias
280               < distWorld ? 1.0 : 0.0) * (
281          (dot(
282            diff,
283            diff
284             
285            ) < 1.0 || (sampleDepth == depth) || (
286              offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0
287            ) ? 0.0 : 1.0)
288          );
289          totalWeight += weight;
290      }
291      float occ = clamp(1.0 - occluded / totalWeight, 0.0, 1.0);
292      gl_FragColor = vec4(0.5 + 0.5 * normal, occ);
293}`},m=parseInt(n.REVISION.replace(/\D+/g,"")),v={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new n.Matrix4},viewMat:{value:new n.Matrix4},projectionMatrixInv:{value:new n.Matrix4},viewMatrixInv:{value:new n.Matrix4},cameraPos:{value:new n.Vector3},resolution:{value:new n.Vector2},color:{value:new n.Vector3(0,0,0)},blueNoise:{value:null},downsampledDepth:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1},logDepth:{value:!1},ortho:{value:!1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1},radius:{value:0},distanceFalloff:{value:1},fog:{value:!1},fogExp:{value:!1},fogDensity:{value:0},fogNear:{value:1/0},fogFar:{value:1/0},colorMultiply:{value:!0}},depthWrite:!1,depthTest:!1,vertexShader:`
294		varying vec2 vUv;
295		void main() {
296			vUv = uv;
297			gl_Position = vec4(position, 1);
298		}`,fragmentShader:`
299		uniform sampler2D sceneDiffuse;
300    uniform highp sampler2D sceneDepth;
301    uniform highp sampler2D downsampledDepth;
302    uniform sampler2D tDiffuse;
303    uniform sampler2D blueNoise;
304    uniform vec2 resolution;
305    uniform vec3 color;
306    uniform mat4 projectionMatrixInv;
307    uniform mat4 viewMatrixInv;
308    uniform float intensity;
309    uniform float renderMode;
310    uniform float near;
311    uniform float far;
312    uniform bool gammaCorrection;
313    uniform bool logDepth;
314    uniform bool ortho;
315    uniform bool screenSpaceRadius;
316    uniform bool fog;
317    uniform bool fogExp;
318    uniform bool colorMultiply;
319    uniform float fogDensity;
320    uniform float fogNear;
321    uniform float fogFar;
322    uniform float radius;
323    uniform float distanceFalloff;
324    uniform vec3 cameraPos;
325    varying vec2 vUv;
326    highp float linearize_depth(highp float d, highp float zNear,highp float zFar)
327    {
328        return (zFar * zNear) / (zFar - d * (zFar - zNear));
329    }
330    highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {
331      return nearZ + (farZ - nearZ) * d;
332    }
333    highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {
334      float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;
335      float a = farZ / (farZ - nearZ);
336      float b = farZ * nearZ / (nearZ - farZ);
337      float linDepth = a + b / depth;
338      return ortho ? linearize_depth_ortho(
339        linDepth,
340        nearZ,
341        farZ
342      ) :linearize_depth(linDepth, nearZ, farZ);
343    }
344    vec3 getWorldPosLog(vec3 posS) {
345        vec2 uv = posS.xy;
346        float z = posS.z;
347        float nearZ =near;
348        float farZ = far;
349        float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;
350        float a = farZ / (farZ - nearZ);
351        float b = farZ * nearZ / (nearZ - farZ);
352        float linDepth = a + b / depth;
353        vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;
354        vec4 wpos = projectionMatrixInv * clipVec;
355        return wpos.xyz / wpos.w;
356      }
357      vec3 getWorldPos(float depth, vec2 coord) {
358       // if (logDepth) {
359        #ifdef LOGDEPTH
360          return getWorldPosLog(vec3(coord, depth));
361        #endif
362      //  }
363        float z = depth * 2.0 - 1.0;
364        vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
365        vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;
366        // Perspective division
367       vec4 worldSpacePosition = viewSpacePosition;
368       worldSpacePosition.xyz /= worldSpacePosition.w;
369        return worldSpacePosition.xyz;
370    }
371  
372    vec3 computeNormal(vec3 worldPos, vec2 vUv) {
373      ivec2 p = ivec2(vUv * resolution);
374      float c0 = texelFetch(sceneDepth, p, 0).x;
375      float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;
376      float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;
377      float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;
378      float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;
379      float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;
380      float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;
381      float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;
382      float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;
383  
384      float dl = abs((2.0 * l1 - l2) - c0);
385      float dr = abs((2.0 * r1 - r2) - c0);
386      float db = abs((2.0 * b1 - b2) - c0);
387      float dt = abs((2.0 * t1 - t2) - c0);
388  
389      vec3 ce = getWorldPos(c0, vUv).xyz;
390  
391      vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz
392                            : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;
393      vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz
394                            : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;
395  
396      return normalize(cross(dpdx, dpdy));
397  }
398
399    #include <common>
400    #include <dithering_pars_fragment>
401    void main() {
402        //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0);
403        vec4 sceneTexel = texture2D(sceneDiffuse, vUv);
404        float depth = texture2D(
405            sceneDepth,
406            vUv
407        ).x;
408        #ifdef HALFRES 
409        vec4 texel;
410        if (depth == 1.0) {
411            texel = vec4(0.0, 0.0, 0.0, 1.0);
412        } else {
413        vec3 worldPos = getWorldPos(depth, vUv);
414        vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv);
415       // vec4 texel = texture2D(tDiffuse, vUv);
416       // Find closest depth;
417       float totalWeight = 0.0;
418       float radiusToUse = screenSpaceRadius ? distance(
419        worldPos,
420        getWorldPos(depth, vUv +
421          vec2(radius, 0.0) / resolution)
422      ) : radius;
423      float distanceFalloffToUse =screenSpaceRadius ?
424          radiusToUse * distanceFalloff
425      : distanceFalloff;
426        for(float x = -1.0; x <= 1.0; x++) {
427            for(float y = -1.0; y <= 1.0; y++) {
428                vec2 offset = vec2(x, y);
429                ivec2 p = ivec2(
430                    (vUv * resolution * 0.5) + offset
431                );
432                vec2 pUv = vec2(p) / (resolution * 0.5);
433                float sampleDepth = texelFetch(downsampledDepth,p, 0).x;
434                vec4 sampleInfo = texelFetch(tDiffuse, p, 0);
435                vec3 normalSample = sampleInfo.xyz * 2.0 - 1.0;
436                vec3 worldPosSample = getWorldPos(sampleDepth, pUv);
437                float tangentPlaneDist = abs(dot(worldPos - worldPosSample, normal));
438                float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0);
439                float weight = rangeCheck;
440                totalWeight += weight;
441                texel += sampleInfo * weight;
442            }
443        }
444        if (totalWeight == 0.0) {
445            texel = texture2D(tDiffuse, vUv);
446        } else {
447            texel /= totalWeight;
448        }
449    }
450        #else
451        vec4 texel = texture2D(tDiffuse, vUv);
452        #endif
453
454        #ifdef LOGDEPTH
455        texel.a = clamp(texel.a, 0.0, 1.0);
456        if (texel.a == 0.0) {
457          texel.a = 1.0;
458        }
459        #endif
460     
461        float finalAo = pow(texel.a, intensity);
462        float fogFactor;
463        float fogDepth = distance(
464            cameraPos,
465            getWorldPos(depth, vUv)
466        );
467        if (fog) {
468            if (fogExp) {
469                fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );
470            } else {
471                fogFactor = smoothstep( fogNear, fogFar, fogDepth );
472            }
473        }
474        finalAo = mix(finalAo, 1.0, fogFactor);
475        vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply));
476        if (renderMode == 0.0) {
477            gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);
478        } else if (renderMode == 1.0) {
479            gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);
480        } else if (renderMode == 2.0) {
481            gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);
482        } else if (renderMode == 3.0) {
483            if (vUv.x < 0.5) {
484                gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);
485            } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {
486                gl_FragColor = vec4(1.0);
487            } else {
488                gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);
489            }
490        } else if (renderMode == 4.0) {
491            if (vUv.x < 0.5) {
492                gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);
493            } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {
494                gl_FragColor = vec4(1.0);
495            } else {
496                gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);
497            }
498        }
499        #include <dithering_fragment>
500        if (gammaCorrection) {
501            gl_FragColor = ${m>=167?"sRGBTransferOETF":"LinearTosRGB"}(gl_FragColor);
502        }
503    }
504    `},y={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new n.Matrix4},viewMat:{value:new n.Matrix4},projectionMatrixInv:{value:new n.Matrix4},viewMatrixInv:{value:new n.Matrix4},cameraPos:{value:new n.Vector3},resolution:{value:new n.Vector2},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},logDepth:{value:!1},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:`
505		varying vec2 vUv;
506		void main() {
507			vUv = uv;
508			gl_Position = vec4(position, 1.0);
509		}`,fragmentShader:`
510		uniform sampler2D sceneDiffuse;
511    uniform highp sampler2D sceneDepth;
512    uniform sampler2D tDiffuse;
513    uniform sampler2D blueNoise;
514    uniform mat4 projectionMatrixInv;
515    uniform mat4 viewMatrixInv;
516    uniform vec2 resolution;
517    uniform float r;
518    uniform float radius;
519     uniform float worldRadius;
520    uniform float index;
521     uniform float near;
522     uniform float far;
523     uniform float distanceFalloff;
524     uniform bool logDepth;
525     uniform bool screenSpaceRadius;
526    varying vec2 vUv;
527
528    highp float linearize_depth(highp float d, highp float zNear,highp float zFar)
529    {
530        highp float z_n = 2.0 * d - 1.0;
531        return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear));
532    }
533    highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {
534     float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;
535     float a = farZ / (farZ - nearZ);
536     float b = farZ * nearZ / (nearZ - farZ);
537     float linDepth = a + b / depth;
538     return linearize_depth(linDepth, nearZ, farZ);
539   }
540   highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {
541     return nearZ + (farZ - nearZ) * d;
542   }
543   vec3 getWorldPosLog(vec3 posS) {
544     vec2 uv = posS.xy;
545     float z = posS.z;
546     float nearZ =near;
547     float farZ = far;
548     float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;
549     float a = farZ / (farZ - nearZ);
550     float b = farZ * nearZ / (nearZ - farZ);
551     float linDepth = a + b / depth;
552     vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;
553     vec4 wpos = projectionMatrixInv * clipVec;
554     return wpos.xyz / wpos.w;
555   }
556    vec3 getWorldPos(float depth, vec2 coord) {
557     #ifdef LOGDEPTH
558          return getWorldPosLog(vec3(coord, depth));
559     #endif
560        
561        float z = depth * 2.0 - 1.0;
562        vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
563        vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;
564        // Perspective division
565       vec4 worldSpacePosition = viewSpacePosition;
566       worldSpacePosition.xyz /= worldSpacePosition.w;
567        return worldSpacePosition.xyz;
568    }
569    #include <common>
570    #define NUM_SAMPLES 16
571    uniform vec2 poissonDisk[NUM_SAMPLES];
572    void main() {
573        const float pi = 3.14159;
574        vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y);
575        vec2 uv = vUv;
576        vec4 data = texture2D(tDiffuse, vUv);
577        float occlusion = data.a;
578        float baseOcc = data.a;
579        vec3 normal = data.rgb * 2.0 - 1.0;
580        float count = 1.0;
581        float d = texture2D(sceneDepth, vUv).x;
582        if (d == 1.0) {
583          gl_FragColor = data;
584          return;
585        }
586        vec3 worldPos = getWorldPos(d, vUv);
587        float size = radius;
588        float angle;
589        if (index == 0.0) {
590             angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2;
591        } else if (index == 1.0) {
592             angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2;
593        } else if (index == 2.0) {
594             angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2;
595        } else {
596             angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2;
597        }
598
599        mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
600        float radiusToUse = screenSpaceRadius ? distance(
601          worldPos,
602          getWorldPos(d, vUv +
603            vec2(worldRadius, 0.0) / resolution)
604        ) : worldRadius;
605        float distanceFalloffToUse =screenSpaceRadius ?
606            radiusToUse * distanceFalloff
607        : distanceFalloff;
608
609
610        for(int i = 0; i < NUM_SAMPLES; i++) {
611            vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size;
612            vec4 dataSample = texture2D(tDiffuse, uv + offset);
613            float occSample = dataSample.a;
614            vec3 normalSample = dataSample.rgb * 2.0 - 1.0;
615            float dSample = texture2D(sceneDepth, uv + offset).x;
616            vec3 worldPosSample = getWorldPos(dSample, uv + offset);
617            float tangentPlaneDist = abs(dot(worldPos - worldPosSample, normal));
618            float rangeCheck = dSample == 1.0 ? 0.0 :exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0) * (1.0 - abs(occSample - baseOcc));
619            occlusion += occSample * rangeCheck;
620            count += rangeCheck;
621        }
622        if (count > 0.0) {
623          occlusion /= count;
624        }
625        #ifdef LOGDEPTH
626          occlusion = clamp(occlusion, 0.0, 1.0);
627          if (occlusion == 0.0) {
628            occlusion = 1.0;
629          }
630        #endif
631        gl_FragColor = vec4(0.5 + 0.5 * normal, occlusion);
632    }
633    `},w={uniforms:{sceneDepth:{value:null},resolution:{value:new n.Vector2},near:{value:.1},far:{value:1e3},viewMatrixInv:{value:new n.Matrix4},projectionMatrixInv:{value:new n.Matrix4},logDepth:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:`
634    varying vec2 vUv;
635    void main() {
636        vUv = uv;
637        gl_Position = vec4(position, 1);
638    }`,fragmentShader:`
639    uniform highp sampler2D sceneDepth;
640    uniform vec2 resolution;
641    uniform float near;
642    uniform float far;
643    uniform bool logDepth;
644    uniform mat4 viewMatrixInv;
645    uniform mat4 projectionMatrixInv;
646    varying vec2 vUv;
647    layout(location = 1) out vec4 gNormal;
648    vec3 getWorldPosLog(vec3 posS) {
649        vec2 uv = posS.xy;
650        float z = posS.z;
651        float nearZ =near;
652        float farZ = far;
653        float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;
654        float a = farZ / (farZ - nearZ);
655        float b = farZ * nearZ / (nearZ - farZ);
656        float linDepth = a + b / depth;
657        vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;
658        vec4 wpos = projectionMatrixInv * clipVec;
659        return wpos.xyz / wpos.w;
660      }
661      vec3 getWorldPos(float depth, vec2 coord) {
662        if (logDepth) {
663          return getWorldPosLog(vec3(coord, depth));
664        }
665        float z = depth * 2.0 - 1.0;
666        vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
667        vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;
668        // Perspective division
669       vec4 worldSpacePosition = viewSpacePosition;
670       worldSpacePosition.xyz /= worldSpacePosition.w;
671        return worldSpacePosition.xyz;
672    }
673  
674    vec3 computeNormal(vec3 worldPos, vec2 vUv) {
675      ivec2 p = ivec2(vUv * resolution);
676      float c0 = texelFetch(sceneDepth, p, 0).x;
677      float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;
678      float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;
679      float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;
680      float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;
681      float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;
682      float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;
683      float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;
684      float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;
685  
686      float dl = abs((2.0 * l1 - l2) - c0);
687      float dr = abs((2.0 * r1 - r2) - c0);
688      float db = abs((2.0 * b1 - b2) - c0);
689      float dt = abs((2.0 * t1 - t2) - c0);
690  
691      vec3 ce = getWorldPos(c0, vUv).xyz;
692  
693      vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz
694                            : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;
695      vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz
696                            : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;
697  
698      return normalize(cross(dpdx, dpdy));
699  }
700    void main() {
701        vec2 uv = vUv - vec2(0.5) / resolution;
702        vec2 pixelSize = vec2(1.0) / resolution;
703        vec2[] uvSamples = vec2[4](
704            uv,
705            uv + vec2(pixelSize.x, 0.0),
706            uv + vec2(0.0, pixelSize.y),
707            uv + pixelSize
708        );
709        float depth00 = texture2D(sceneDepth, uvSamples[0]).r;
710        float depth10 = texture2D(sceneDepth, uvSamples[1]).r;
711        float depth01 = texture2D(sceneDepth, uvSamples[2]).r;
712        float depth11 = texture2D(sceneDepth, uvSamples[3]).r;
713        float minDepth = min(min(depth00, depth10), min(depth01, depth11));
714        float maxDepth = max(max(depth00, depth10), max(depth01, depth11));
715        float targetDepth = minDepth;
716        // Checkerboard pattern to avoid artifacts
717        if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { 
718            targetDepth = maxDepth;
719        }
720        int chosenIndex = 0;
721        float[] samples = float[4](depth00, depth10, depth01, depth11);
722        for(int i = 0; i < 4; ++i) {
723            if (samples[i] == targetDepth) {
724                chosenIndex = i;
725                break;
726            }
727        }
728        gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0);
729        gNormal = vec4(computeNormal(
730            getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex]
731        ), 0.0);
732       /* float[] samples = float[4](depth00, depth10, depth01, depth11);
733        float c = 0.25 * (depth00 + depth10 + depth01 + depth11);
734        float[] distances = float[4](depth00, depth10, depth01, depth11);
735        float maxDistance = max(max(distances[0], distances[1]), max(distances[2], distances[3]));
736
737        int remaining[3];
738        int rejected[3];
739        int i, j, k;
740
741        for(i = 0, j = 0, k = 0; i < 4; ++i) {
742            if (distances[i] < maxDistance) {
743                remaining[j++] = i;
744            } else {
745                rejected[k++] = i;
746            }
747        }
748        for(;j < 3;++j) {
749            remaining[j] = rejected[--k];
750        }
751        vec3 s = vec3(
752            samples[remaining[0]],
753            samples[remaining[1]],
754            samples[remaining[2]]
755        );
756        c = (s.x + s.y + s.z) / 3.0;
757
758        distances[0] = abs(c - s.x);
759        distances[1] = abs(c - s.y);
760        distances[2] = abs(c - s.z);
761
762        float minDistance = min(min(distances[0], distances[1]), distances[2]);
763
764        for(i = 0; i < 3; ++i) {
765            if (distances[i] == minDistance) {
766                break;
767            }
768        }*/
769      /*  gl_FragColor = vec4(samples[remaining[i]], 0.0, 0.0, 0.0);
770        gNormal = vec4(computeNormal(
771            getWorldPos(samples[remaining[i]], uvSamples[remaining[i]]), uvSamples[remaining[i]]
772        ), 0.0);*/
773    }`},x=s.lW.from("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","base64");class b extends o.w2{constructor(e,t,r=512,i=512){super(),this.width=r,this.height=i,this.clear=!0,this.camera=t,this.scene=e,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,color:new n.Color(0,0,0),gammaCorrection:!0,logarithmicDepthBuffer:!1,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,colorMultiply:!0},{set:(e,t,r)=>{let i=e[t];return e[t]=r,"aoSamples"===t&&i!==r&&this.configureAOPass(this.configuration.logarithmicDepthBuffer),"denoiseSamples"===t&&i!==r&&this.configureDenoisePass(this.configuration.logarithmicDepthBuffer),"halfRes"===t&&i!==r&&(this.configureAOPass(this.configuration.logarithmicDepthBuffer),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer),this.setSize(this.width,this.height)),"depthAwareUpsampling"===t&&i!==r&&this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer),"gammaCorrection"===t&&(this.autosetGamma=!1),!0}}),this.samples=[],this.samplesR=[],this.samplesDenoise=[],this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.copyQuad=new d(new n.ShaderMaterial({uniforms:{tDiffuse:{value:null}},depthWrite:!1,vertexShader:`
774            varying vec2 vUv;
775            void main() {
776                vUv = uv;
777                gl_Position = vec4(position, 1);
778            }
779            `,fragmentShader:`
780            uniform sampler2D tDiffuse;
781            varying vec2 vUv;
782            void main() {
783                gl_FragColor = texture2D(tDiffuse, vUv);
784            }
785            `})),this.writeTargetInternal=new n.WebGLRenderTarget(this.width,this.height,{minFilter:n.LinearFilter,magFilter:n.LinearFilter,depthBuffer:!1}),this.readTargetInternal=new n.WebGLRenderTarget(this.width,this.height,{minFilter:n.LinearFilter,magFilter:n.LinearFilter,depthBuffer:!1}),this.outputTargetInternal=new n.WebGLRenderTarget(this.width,this.height,{minFilter:n.LinearFilter,magFilter:n.LinearFilter,depthBuffer:!1}),this.bluenoise=new n.DataTexture(x,128,128),this.bluenoise.colorSpace
785=n.NoColorSpace,this.bluenoise.wrapS=n.RepeatWrapping,this.bluenoise.wrapT=n.RepeatWrapping,this.bluenoise.minFilter=n.NearestFilter,this.bluenoise.magFilter=n.NearestFilter,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.needsDepthTexture=!0,this.needsSwap=!0,this._r=new n.Vector2,this._c=new n.Color}configureHalfResTargets(){this.configuration.halfRes?(this.depthDownsampleTarget=new n.WebGLMultipleRenderTargets(this.width/2,this.height/2,2),this.depthDownsampleTarget.texture[0].format=n.RedFormat,this.depthDownsampleTarget.texture[0].type=n.FloatType,this.depthDownsampleTarget.texture[0].minFilter=n.NearestFilter,this.depthDownsampleTarget.texture[0].magFilter=n.NearestFilter,this.depthDownsampleTarget.texture[0].depthBuffer=!1,this.depthDownsampleTarget.texture[1].format=n.RGBAFormat,this.depthDownsampleTarget.texture[1].type=n.HalfFloatType,this.depthDownsampleTarget.texture[1].minFilter=n.NearestFilter,this.depthDownsampleTarget.texture[1].magFilter=n.NearestFilter,this.depthDownsampleTarget.texture[1].depthBuffer=!1,this.depthDownsampleQuad=new d(new n.ShaderMaterial(w))):(this.depthDownsampleTarget&&(this.depthDownsampleTarget.dispose(),this.depthDownsampleTarget=null),this.depthDownsampleQuad&&(this.depthDownsampleQuad.dispose(),this.depthDownsampleQuad=null))}configureSampleDependentPasses(){this.configureAOPass(this.configuration.logarithmicDepthBuffer),this.configureDenoisePass(this.configuration.logarithmicDepthBuffer)}configureAOPass(e=!1){this.samples=this.generateHemisphereSamples(this.configuration.aoSamples),this.samplesR=this.generateHemisphereSamplesR(this.configuration.aoSamples);let t={...g};t.fragmentShader=t.fragmentShader.replace("16",this.configuration.aoSamples).replace("16.0",this.configuration.aoSamples+".0"),e&&(t.fragmentShader="#define LOGDEPTH\n"+t.fragmentShader),this.configuration.halfRes&&(t.fragmentShader="#define HALFRES\n"+t.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new n.ShaderMaterial(t)):this.effectShaderQuad=new d(new n.ShaderMaterial(t))}configureDenoisePass(e=!1){this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let t={...y};t.fragmentShader=t.fragmentShader.replace("16",this.configuration.denoiseSamples),e&&(t.fragmentShader="#define LOGDEPTH\n"+t.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new n.ShaderMaterial(t)):this.poissonBlurQuad=new d(new n.ShaderMaterial(t))}configureEffectCompositer(e=!1){let t={...v};e&&(t.fragmentShader="#define LOGDEPTH\n"+t.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(t.fragmentShader="#define HALFRES\n"+t.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new n.ShaderMaterial(t)):this.effectCompositerQuad=new d(new n.ShaderMaterial(t))}generateHemisphereSamples(e){let t=[];for(let r=0;r<e;r++){let i=2.399963*r,a=Math.sqrt(r+.5)/Math.sqrt(e),o=a*Math.cos(i),s=a*Math.sin(i),l=Math.sqrt(1-(o*o+s*s));t.push(new n.Vector3(o,s,l))}return t}generateHemisphereSamplesR(e){let t=[];for(let r=0;r<e;r++)t.push((r+1)/e);return t}generateDenoiseSamples(e,t){let r=2*Math.PI*t/e,i=1/e,a=[],o=i,s=0;for(let t=0;t<e;t++)a.push(new n.Vector2(Math.cos(s),Math.sin(s)).multiplyScalar(Math.pow(o,.75))),o+=i,s+=r;return a}setSize(e,t){this.width=e,this.height=t;let r=this.configuration.halfRes?.5:1;this.writeTargetInternal.setSize(e*r,t*r),this.readTargetInternal.setSize(e*r,t*r),this.configuration.halfRes&&this.depthDownsampleTarget.setSize(e*r,t*r),this.outputTargetInternal.setSize(e,t)}setDepthTexture(e){this.depthTexture=e}render(e,t,r){let i,a,o;let s=e.xr.enabled;e.xr.enabled=!1,e.capabilities.logarithmicDepthBuffer!==this.configuration.logarithmicDepthBuffer&&(this.configuration.logarithmicDepthBuffer=e.capabilities.logarithmicDepthBuffer,this.configureAOPass(this.configuration.logarithmicDepthBuffer),this.configureDenoisePass(this.configuration.logarithmicDepthBuffer),this.configureEffectCompositer(this.configuration.logarithmicDepthBuffer)),t.texture.type!==this.outputTargetInternal.texture.type&&(this.outputTargetInternal.texture.type=t.texture.type,this.outputTargetInternal.texture.needsUpdate=!0),this.debugMode&&null===(a=(i=e.getContext()).getExtension("EXT_disjoint_timer_query_webgl2"))&&(console.error("EXT_disjoint_timer_query_webgl2 not available, disabling debug mode."),this.debugMode=!1),this.debugMode&&(o=i.createQuery(),i.beginQuery(a.TIME_ELAPSED_EXT,o)),this.camera.updateMatrixWorld(),this._r.set(this.width,this.height);let l=this.configuration.aoRadius;this.configuration.halfRes&&this.configuration.screenSpaceRadius&&(l*=.5),this.configuration.halfRes&&(e.setRenderTarget(this.depthDownsampleTarget),this.depthDownsampleQuad.material.uniforms.sceneDepth.value=this.depthTexture,this.depthDownsampleQuad.material.uniforms.resolution.value=this._r,this.depthDownsampleQuad.material.uniforms.near.value=this.camera.near,this.depthDownsampleQuad.material.uniforms.far.value=this.camera.far,this.depthDownsampleQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.depthDownsampleQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.depthDownsampleQuad.material.uniforms.logDepth.value=this.configuration.logarithmicDepthBuffer,this.depthDownsampleQuad.render(e)),this.effectShaderQuad.material.uniforms.sceneDiffuse.value=t.texture,this.effectShaderQuad.material.uniforms.sceneDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.texture[0]:this.depthTexture,this.effectShaderQuad.material.uniforms.sceneNormal.value=this.configuration.halfRes?this.depthDownsampleTarget.texture[1]:null,this.effectShaderQuad.material.uniforms.projMat.value=this.camera.projectionMatrix,this.effectShaderQuad.material.uniforms.viewMat.value=this.camera.matrixWorldInverse,this.effectShaderQuad.material.uniforms.projViewMat.value=this.camera.projectionMatrix.clone().multiply(this.camera.matrixWorldInverse.clone()),this.effectShaderQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.effectShaderQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.effectShaderQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new n.Vector3),this.effectShaderQuad.material.uniforms.resolution.value=this.configuration.halfRes?this._r.clone().multiplyScalar(.5).floor():this._r,this.effectShaderQuad.material.uniforms.time.value=performance.now()/1e3,this.effectShaderQuad.material.uniforms.samples.value=this.samples,this.effectShaderQuad.material.uniforms.samplesR.value=this.samplesR,this.effectShaderQuad.material.uniforms.bluenoise.value=this.bluenoise,this.effectShaderQuad.material.uniforms.radius.value=l,this.effectShaderQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.effectShaderQuad.material.uniforms.near.value=this.camera.near,this.effectShaderQuad.material.uniforms.far.value=this.camera.far,this.effectShaderQuad.material.uniforms.logDepth.value=e.capabilities.logarithmicDepthBuffer,this.effectShaderQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.effectShaderQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,e.setRenderTarget(this.writeTargetInternal),this.effectShaderQuad.render(e);for(let t=0;t<this.configuration.denoiseIterations;t++)[this.writeTargetInternal,this.readTargetInternal]=[this.readTargetInternal,this.writeTargetInternal],this.poissonBlurQuad.material.uniforms.tDiffuse.value=this.readTargetInternal.texture,this.poissonBlurQuad.material.uniforms.sceneDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.texture[0]:this.depthTexture,this.poissonBlurQuad.material.uniforms.projMat.value=this.camera.projectionMatrix,this.poissonBlurQuad.material.uniforms.viewMat.value=this.camera.matrixWorldInverse,this.poissonBlurQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.poissonBlurQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.poissonBlurQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new n.Vector3),this.poissonBlurQuad.material.uniforms.resolution.value=this.configuration.halfRes?this._r.clone().multiplyScalar(.5).floor():this._r,this.poissonBlurQuad.material.uniforms.time.value=performance.now()/1e3,this.poissonBlurQuad.material.uniforms.blueNoise.value=this.bluenoise,this.poissonBlurQuad.material.uniforms.radius.value=this.configuration.denoiseRadius*(this.configuration.halfRes?.5:1),this.poissonBlurQuad.material.uniforms.worldRadius.value=l,this.poissonBlurQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.poissonBlurQuad.material.uniforms.index.value=t,this.poissonBlurQuad.material.uniforms.poissonDisk.value=this.samplesDenoise,this.poissonBlurQuad.material.uniforms.near.value=this.camera.near,this.poissonBlurQuad.material.uniforms.far.value=this.camera.far,this.poissonBlurQuad.material.uniforms.logDepth.value=e.capabilities.logarithmicDepthBuffer,this.poissonBlurQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,e.setRenderTarget(this.writeTargetInternal),this.poissonBlurQuad.render(e);this.effectCompositerQuad.material.uniforms.sceneDiffuse.value=t.texture,this.effectCompositerQuad.material.uniforms.sceneDepth.value=this.depthTexture,this.effectCompositerQuad.material.uniforms.near.value=this.camera.near,this.effectCompositerQuad.material.uniforms.far.value=this.camera.far,this.effectCompositerQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.effectCompositerQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.effectCompositerQuad.material.uniforms.logDepth.value=e.capabilities.logarithmicDepthBuffer,this.effectCompositerQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.effectCompositerQuad.material.uniforms.downsampledDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.texture[0]:this.depthTexture,this.effectCompositerQuad.material.uniforms.resolution.value=this._r,this.effectCompositerQuad.material.uniforms.blueNoise.value=this.bluenoise,this.effectCompositerQuad.material.uniforms.intensity.value=this.configuration.intensity,this.effectCompositerQuad.material.uniforms.renderMode.value=this.configuration.renderMode,this.effectCompositerQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,this.effectCompositerQuad.material.uniforms.radius.value=l,this.effectCompositerQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.effectCompositerQuad.material.uniforms.gammaCorrection.value=this.autosetGamma?this.renderToScreen:this.configuration.gammaCorrection,this.effectCompositerQuad.material.uniforms.tDiffuse.value=this.writeTargetInternal.texture,this.effectCompositerQuad.material.uniforms.color.value=this._c.copy(this.configuration.color).convertSRGBToLinear(),this.effectCompositerQuad.material.uniforms.colorMultiply.value=this.configuration.colorMultiply,this.effectCompositerQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new n.Vector3),this.effectCompositerQuad.material.uniforms.fog.value=!!this.scene.fog,this.scene.fog&&(this.scene.fog.isFog?(this.effectCompositerQuad.material.uniforms.fogExp.value=!1,this.effectCompositerQuad.material.uniforms.fogNear.value=this.scene.fog.near,this.effectCompositerQuad.material.uniforms.fogFar.value=this.scene.fog.far):this.scene.fog.isFogExp2?(this.effectCompositerQuad.material.uniforms.fogExp.value=!0,this.effectCompositerQuad.material.uniforms.fogDensity.value=this.scene.fog.density):console.error(`Unsupported fog type ${this.scene.fog.constructor.name} in SSAOPass.`)),e.setRenderTarget(this.outputTargetInternal),this.effectCompositerQuad.render(e),e.setRenderTarget(this.renderToScreen?null:r),this.copyQuad.material.uniforms.tDiffuse.value=this.outputTargetInternal.texture,this.copyQuad.render(e),this.debugMode&&(i.endQuery(a.TIME_ELAPSED_EXT),function e(t,r,i){if(r.getQueryParameter(t,r.QUERY_RESULT_AVAILABLE)){let e=r.getQueryParameter(t,r.QUERY_RESULT);i.lastTime=e/1e6}else setTimeout(()=>{e(t,r,i)},1)}(o,i,this)),e.xr.enabled=s}enableDebugMode(){this.debugMode=!0}disableDebugMode(){this.debugMode=!1}setDisplayMode(e){this.configuration.renderMode=["Combined","AO","No AO","Split","Split AO"].indexOf(e)}setQualityMode(e){"Performance"===e?(this.configuration.aoSamples=8,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Low"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Medium"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=12):"High"===e?(this.configuration.aoSamples=64,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=6):"Ultra"===e&&(this.configuration.aoSamples=64,this.configuration.denoiseSamples=16,this.configuration.denoiseRadius=6)}}var S=r(97551);let M=(0,a.forwardRef)(({halfRes:e,screenSpaceRadius:t,quality:r,depthAwareUpsampling:n=!0,aoRadius:o=5,aoSamples:s=16,denoiseSamples:l=4,denoiseRadius:f=12,distanceFalloff:u=1,intensity:c=1,color:h,renderMode:p=0},d)=>
785{let{camera:g,scene:m}=(0,S.D)(),v=(0,a.useMemo)(()=>new b(m,g),[]);return(0,a.useLayoutEffect)(()=>{(0,S.k)(v.configuration,{color:h,aoRadius:o,distanceFalloff:u,intensity:c,aoSamples:s,denoiseSamples:l,denoiseRadius:f,screenSpaceRadius:t,renderMode:p,halfRes:e,depthAwareUpsampling:n})},[t,h,o,u,c,s,l,f,p,e,n]),(0,a.useLayoutEffect)(()=>{r&&v.setQualityMode(r.charAt(0).toUpperCase()+r.slice(1))},[r]),(0,i.jsx)("primitive",{ref:d,object:v})})},5655:function(e,t,r){r.d(t,{$1:function(){return i}});function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-4;t=Math.max(t,Number.EPSILON);let r={},i=e.getIndex(),a=e.getAttribute("position"),n=i?i.count:a.count,o=0,s=Object.keys(e.attributes),l={},f={},u=[],c=["getX","getY","getZ","getW"],h=["setX","setY","setZ","setW"];for(let t=0,r=s.length;t<r;t++){let r=s[t],i=e.attributes[r];l[r]=new i.constructor(new i.array.constructor(i.count*i.itemSize),i.itemSize,i.normalized);let a=e.morphAttributes[r];a&&(f[r]||(f[r]=[]),a.forEach((e,t)=>{let i=new e.array.constructor(e.count*e.itemSize);f[r][t]=new e.constructor(i,e.itemSize,e.normalized)}))}let p=.5*t,d=Math.pow(10,Math.log10(1/t)),g=p*d;for(let t=0;t<n;t++){let a=i?i.getX(t):t,n="";for(let t=0,r=s.length;t<r;t++){let r=s[t],i=e.getAttribute(r),o=i.itemSize;for(let e=0;e<o;e++)n+="".concat(~~(i[c[e]](a)*d+g),",")}if(n in r)u.push(r[n]);else{for(let t=0,r=s.length;t<r;t++){let r=s[t],i=e.getAttribute(r),n=e.morphAttributes[r],u=i.itemSize,p=l[r],d=f[r];for(let e=0;e<u;e++){let t=c[e],r=h[e];if(p[r](o,i[t](a)),n)for(let e=0,i=n.length;e<i;e++)d[e][r](o,n[e][t](a))}}r[n]=o,u.push(o),o++}}let m=e.clone();for(let t in e.attributes){let e=l[t];if(m.setAttribute(t,new e.constructor(e.array.slice(0,o*e.itemSize),e.itemSize,e.normalized)),t in f)for(let e=0;e<f[t].length;e++){let r=f[t][e];m.morphAttributes[t][e]=new r.constructor(r.array.slice(0,o*r.itemSize),r.itemSize,r.normalized)}}return m.setIndex(u),m}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.