@splinetool/runtime 0.6.11 → 0.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/runtime.js +2 -2
- package/package.json +1 -1
package/build/runtime.js
CHANGED
|
@@ -4111,7 +4111,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
4111
4111
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
4112
4112
|
}
|
|
4113
4113
|
`),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
|
|
4114
|
-
`)}return t}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.position&&(t.position=this.position.toJSON(e).uuid),this.color&&(t.color=this.color.toJSON(e).uuid),t.roughness=this.roughness.toJSON(e).uuid,t.metalness=this.metalness.toJSON(e).uuid,this.alpha&&(t.alpha=this.alpha.toJSON(e).uuid),this.reflectivity&&(t.reflectivity=this.reflectivity.toJSON(e).uuid),this.shadingAlpha&&(t.shadingAlpha=this.shadingAlpha.toJSON(e).uuid),this.shadingBlend&&(t.shadingBlend=this.shadingBlend.toJSON(e).uuid),this.afterColor&&(t.afterColor=this.afterColor.toJSON(e).uuid)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.position&&(this.position=t.getNode(e.position)),e.color&&(this.color=t.getNode(e.color)),e.roughness&&(this.roughness=t.getNode(e.roughness)),e.metalness&&(this.metalness=t.getNode(e.metalness)),e.alpha&&(this.alpha=t.getNode(e.alpha)),e.reflectivity&&(this.reflectivity=t.getNode(e.reflectivity)),e.shadingAlpha&&(this.shadingAlpha=t.getNode(e.shadingAlpha)),e.shadingBlend&&(this.shadingBlend=t.getNode(e.shadingBlend)),e.afterColor&&(this.afterColor=t.getNode(e.afterColor)),this}};var im=class extends Ni{get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}constructor(e=new Tc,t){super(e,e,t);this.type="StandardNodeMaterial",this.fragment=e}};var Ec=class extends im{constructor(e,t,n){super(t,e);this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=n!=null?n:this._getLayerStack(e==null?void 0:e.map)}get layersList(){return this.userData.layers}set layersList(e){this.userData.layers=e}equals(e){return this.userData.type===e.userData.type&&this.userData.layers.uuid==e.userData.layers.uuid}copy(e){if(e.userData.layers!==void 0&&e.userData.layers instanceof Kn){let t=e.userData.layers,n=e.fragment;super.copy(e);let i=n.clone();this.fragment=i,this.vertex=i;let s=t.clone(this);this.userData.layers=s,i.shadingAlpha.value=n.shadingAlpha.value,i.shadingBlend.value=n.shadingBlend.value}else super.copy(e);return this}static fromJSON(e,t,n){let i=n.getNode(t.vertex),s=new Ec(void 0,i);return s.fromJSON(t,n),s}dispose(){super.dispose()}};var wx={BasicMaterial:oi,PhongMaterial:Ci,LambertMaterial:Mc,ToonMaterial:_c,PhysicalMaterial:Ec};var Sx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var o,a,l,c,u;let t=Object.assign({},(o=e==null?void 0:e.parameters)!=null?o:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},r.parameters),n=t.width/2,i=(a=t.radiusTop)!=null?a:n,s=(l=t.radiusBottom)!=null?l:n;return i===s?(i=n,s=n):i>s?(i=n,s=s*n/i):(i=i*n/s,s=n),{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((c=t.height)!=null?c:t.width),depth:Math.abs((u=t.depth)!=null?u:t.width),radiusTop:i,radiusBottom:s})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:h,cornerSegments:d,hollow:f}=r.parameters,p;return h||f?p=new Lh(c,u,n,i,s,o,a,l*Math.PI/180,h,h,d,f):p=new ds(c,u,n,i,s,o,a,l*Math.PI/180),p.scale(1,1,t/e),Object.assign(p,{userData:tt(Ue({},r),{type:"CylinderGeometry"})})}};function ys(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function Mx(r){return new O(r.y,-r.x)}var Lh=class extends we{constructor(e,t,n,i,s,o,a,l,c,u,h,d,f=!1){super();this.type="RoundedCylinderBufferGeometry",e=e!==void 0?e:1,t=t!==void 0?t:1,n=n||1,i=Math.floor(i)||8,s=Math.floor(s)||1,o=o!==void 0?o:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,o&&(c=0,u=0);let p=[],m=[],v=[],g=[],y=0,x=n/2,b=new M,w=new M;f&&e==0&&(e=c),f&&t==0&&(t=u);let _=new O(e,x),S=new O(t,-x),A=null,T=null,L=null,C=null,U=_.clone().sub(S),P=0,R=0,G=0;d>0&&(P=Math.min(e,t)*(1-d),R=e-P,G=t-P);let B=_.clone();B.x-=P;let j=Math.PI-U.angle(),ne=U.angle(),le=Math.tan(ne/2),W=Math.tan(j/2),z=le+W,D=d?z:W,K=d?z:le;if(c=Math.min(c,(e-R)/D,U.length()/z),u=Math.min(u,(t-G)/K,U.length()/z),c>0){let te=c/le;A=_.clone().sub(new O(te,c)),d&&(L=A.clone(),L.x-=P-z*c),_.sub(U.clone().setLength(te))}if(u>0){let te=u/W;T=S.clone().sub(new O(te,-u)),S.add(U.clone().setLength(te)),d&&(C=T.clone(),C.x-=P-z*u,B.sub(U.clone().setLength(te)))}U=_.clone().sub(S);let q=U.length()<.5,ee=[];for(let te=0;te<=i;te++){let X=[],se=te/i,$=se*l+a,H=new O(Math.sin($),Math.cos($));C&&T?(V(X,se,H,j,u,C,-1,!0),V(X,se,H,ne,u,T,-1,!1)):T?(de(X,H,T.x,0,-1),V(X,se,H,ne,u,T,-1,!1)):o||de(X,H,t,G,-1);let Q=Mx(U).normalize();if(ys(Q,H,b),!q)for(let ce=0;ce<=s;ce++){let ie=ce/s,N=U.clone().multiplyScalar(ie).add(S);ys(N,H,w),m.push(w.x,w.y,w.z),v.push(b.x,b.y,b.z),g.push(se,.5+w.y/n),X.push(y++)}if(L&&A?(V(X,se,H,j,c,A,1,!1),V(X,se,H,ne,c,L,1,!0)):A?(V(X,se,H,j,c,A,1,!1),de(X,H,A.x,0,1)):o||de(X,H,e,R,1),d&&!q){let ce=Mx(U).multiplyScalar(-1).normalize();ys(ce,H,b);for(let ie=0;ie<=s;ie++){let N=ie/s,E=U.clone().multiplyScalar(-N).add(B);ys(E,H,w),m.push(w.x,w.y,w.z),v.push(b.x,b.y,b.z),g.push(se,.5+w.y/n),X.push(y++)}}d&&!o&&X.push(X[0]),ee.push(X)}for(let te=0;te<ee.length-1;te++)for(let X=0;X<ee[0].length-1;X++){if(o&&d&&X==s)continue;let se=ee[te][X],$=ee[te+1][X],H=ee[te+1][X+1],Q=ee[te][X+1],ce=m[H*3+0],ie=m[H*3+2];p.push(se,$,Q),(ce!=0||ie!=0)&&p.push($,H,Q)}l<Math.PI*2&&(ae(-1,ee[0],a),ae(1,ee[ee.length-1],a+l)),this.setIndex(p),this.setAttribute("position",new ge(m,3)),this.setAttribute("normal",new ge(v,3)),this.setAttribute("uv",new ge(g,2));function V(te,X,se,$,H,Q,ce,ie){for(let N=0;N<h+1;N++){let E=N/h,Y=ce<0?E:1-E;ie&&(Y-=1),Y*=$;let re=new O(Math.sin(Y),Math.cos(Y)*ce),ye=re.clone().multiplyScalar(H).add(Q);ys(ye,se,w),m.push(w.x,w.y,w.z),ys(re,se,b),v.push(b.x,b.y,b.z),g.push(X,.5+w.y/n),te.push(y++)}}function de(te,X,se,$,H){let Q=new M,ce=new O,ie=[se,$];H<0&&ie.reverse();for(let N of ie)ce.set(N,x*H),ys(ce,X,Q),m.push(Q.x,Q.y,Q.z),v.push(0,H,0),g.push(.5,.5),te.push(y++)}function ae(te,X,se){let $=new O(Math.sin(se),Math.cos(se)),H=new O(-Math.cos(se),Math.sin(se)),Q=new M,ce=te<0?(E,Y,re)=>p.push(E,Y,re):(E,Y,re)=>p.push(E,re,Y),ie=new O((e+t+R+G)/4,0);ys(ie,$,Q),m.push(Q.x,Q.y,Q.z),v.push(H.x,0,H.y),g.push(.5,.5);let N=y++;for(let E of X){let Y=m.slice(E*3,E*3+3);m.push(...Y),v.push(H.x,0,H.y);let re=g.slice(E*2,E*2+2);g.push(...re),y++}for(let E=N+1;E<y-1;E++)ce(N,E,E+1);ce(N,y-1,N+1)}}};var Ax=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,radialSegments:32,heightSegments:32,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:h}=r.parameters,d;return c>0||u>0||l<360?d=new Lh(0,e/2,n,i,s,o,a,l*Math.PI/180,c,u,h,0,!0):d=new oo(e/2,n,i,s,o),d.scale(1,1,t/e),Object.assign(d,{userData:tt(Ue({},r),{type:"ConeGeometry"})})}};var _x=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:o,cornerRadius:a,cornerSegments:l}=r.parameters,c;return a==0?c=new jn(e,t,n,i,s,o):c=new Tx(e,t,n,i,s,o,a,l),Object.assign(c,{userData:tt(Ue({},r),{type:"CubeGeometry"})})}},rm=Math.PI/2,Tx=class extends we{constructor(e=1,t=1,n=1,i=1,s=1,o=1,a=0,l=4){super();this.type="BoxBufferGeometry";let c=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o),l=Math.floor(l),a=Math.min(a,e/2,t/2,n/2);let u=[],h=[],d=[],f=[],p=0,m=0;v("z","y","x",-1,-1,n,t,e,o,s,0),v("z","y","x",1,-1,n,t,-e,o,s,1),v("x","z","y",1,1,e,n,t,i,o,2),v("x","z","y",1,-1,e,n,-t,i,o,3),v("x","y","z",1,-1,e,t,n,i,s,4),v("x","y","z",-1,-1,e,t,-n,i,s,5),a>0&&(g("z","y","x",-1,-1,1,n,t,e,o,0),g("z","y","x",1,-1,-1,n,t,e,o,1),g("z","y","x",-1,1,-1,n,t,e,o,1),g("z","y","x",1,1,1,n,t,e,o,0),g("x","y","z",-1,-1,-1,e,t,n,i,0),g("x","y","z",1,-1,1,e,t,n,i,1),g("x","y","z",-1,1,1,e,t,n,i,0),g("x","y","z",1,1,-1,e,t,n,i,1),g("y","x","z",-1,-1,1,t,e,n,s,0),g("y","x","z",1,-1,-1,t,e,n,s,1),g("y","x","z",1,1,1,t,e,n,s,1),g("y","x","z",-1,1,-1,t,e,n,s,0),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new ge(h,3)),this.setAttribute("normal",new ge(d,3)),this.setAttribute("uv",new ge(f,2));function v(x,b,w,_,S,A,T,L,C,U,P){let R=(A-2*a)/C,G=(T-2*a)/U,B=A/2-a,j=T/2-a,ne=L/2,le=C+1,W=U+1,z=0,D=0,K=new M;for(let q=0;q<W;q++){let ee=q*G-j;for(let V=0;V<le;V++){let de=V*R-B;K[x]=de*_,K[b]=ee*S,K[w]=ne,h.push(K.x,K.y,K.z),K[x]=0,K[b]=0,K[w]=L>0?1:-1,d.push(K.x,K.y,K.z),f.push(V/C),f.push(1-q/U),z+=1}}for(let q=0;q<U;q++)for(let ee=0;ee<C;ee++){let V=p+ee+le*q,de=p+ee+le*(q+1),ae=p+(ee+1)+le*(q+1),te=p+(ee+1)+le*q;u.push(V,de,te),u.push(de,ae,te),D+=6}c.addGroup(m,D,P),m+=D,p+=z}function g(x,b,w,_,S,A,T,L,C,U,P){let R=(T-2*a)/U,G=T/2-a,B=L/2-a,j=C/2,ne=U+1,le=0,W=0,z=new M,D=new M;for(let K=0;K<l+1;K++){let q=K/l*rm,ee=Math.sin(q)*a,V=(1-Math.cos(q))*a,de=Math.sin(q),ae=Math.cos(q);z[b]=(B+ee)*S,z[w]=(j-V)*A,D[x]=0,D[b]=de*Math.sign(z[b]),D[w]=ae*Math.sign(z[w]);for(let te=0;te<ne;te++){let X=te*R-G;z[x]=X*_,h.push(z.x,z.y,z.z),d.push(D.x,D.y,D.z),f.push(te/U),f.push(0),le+=1}}for(let K=0;K<l;K++)for(let q=0;q<U;q++){let ee=p+q+ne*K,V=p+q+ne*(K+1),de=p+(q+1)+ne*(K+1),ae=p+(q+1)+ne*K;u.push(ee,V,ae),u.push(V,de,ae),W+=6}c.addGroup(m,W,P),m+=W,p+=le}function y(x,b,w){let _=new M,S=new M(e/2,t/2,n/2);S.subScalar(a);let A=[],T=x*b*w>0?(C,U,P)=>u.push(C,U,P):(C,U,P)=>u.push(C,P,U);for(let C=0;C<=l;C++){let U=[],P=rm*(1-C/l),R=Math.cos(P),G=Math.sin(P),B=0;for(let j=0;j<=C;j++){let ne=Math.cos(B),le=Math.sin(B);_.x=R*ne,_.y=G,_.z=R*le;let W=S.clone().addScaledVector(_,a);h.push(x*W.x,b*W.y,w*W.z),d.push(x*_.x,b*_.y,w*_.z),f.push(0,0),U.push(p++),B+=rm/C}A.push(U)}let L=A.length-1;for(let C=0;C<L;C++){let U=A[C],P=A[C+1],R=U.length-1;T(U[0],P[1],P[0]);for(let G=1;G<=R;G++)T(U[G-1],U[G],P[G]),T(U[G],P[G+1],P[G])}}}};var Eo=class extends we{constructor(e,t,n,i=1,s=.2,o=4){super();this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];u(),h(),this.setAttribute("position",new ge(a,3)),this.setAttribute("normal",new ge(c,3)),this.setAttribute("uv",new ge(l,2));return;function u(){var le;s=Math.min(1-1e-5,s),s==0&&(o=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[n],p=new M,m=p.clone(),v=new qt,g=s*i,y=i-g,x=o+1,b=new M,w=(W,z)=>b.subVectors(W,z).normalize(),_=(W,z)=>Array(W).fill(void 0).map(z),S=_(e.length/3,(W,z)=>new M().fromArray(e,z*3).setLength(i)),A=[],T=1e6;for(let W=0;W<S.length;W++){let z=S[W],D=[],K,q,ee,V=1e10,de=-1;for(;(de=t.indexOf(W,de+1))!=-1;){let se=de-de%3;K=t[se+(de+1)%3],q=t[se+(de+2)%3],ee=z.distanceToSquared(S[K]),V=Math.min(V,ee),D.push([K,q,ee])}V+=1e-6;let ae=[],te=0,X=D.length;for(let se=0;se<X;se++){[K,q,ee]=D[te];let $=((le=A[K])==null?void 0:le.includes(W))==!0;ee<=V&&ae.push(K+ +$*T),te=D.findIndex(H=>H[0]==q)}A.push(ae)}let L=[];{let W=0,z=0,D,K,q=f==3;for(let ee=0;ee<=o;ee++){D=ee*(ee+1)/2,K=(ee+1)*(ee+2)/2;for(let V=0;V<o-ee;V++)[W,z]=[D+V+ee+2,K+V+ee+3],L.push(D,K,...q?[z,D]:[W,K],z,W),[D,K]=[W,z];L.push(D,K,D+o+2)}}let C=p.clone(),U=p.clone(),P=p.clone(),R=p.clone(),G=p.clone(),B=[],j=_(S.length,()=>_(f,()=>p.clone()));for(let W=0;W<S.length;W++){p.copy(S[W]).normalize(),C.copy(p).multiplyScalar(y);let z=A[W];for(let ae=0;ae<z.length;ae++){let te=z[ae],X=z[(ae+1)%f];v.setFromPointsAndIndices(S,W,te%T,X%T),v.b.sub(v.a).setLength(1e10).add(v.a),v.c.sub(v.a).setLength(1e10).add(v.a),v.closestPointToPoint(C,j[W][ae])}let D=[],K=[],q=[],ee=new M;o==0&&[...j[W]].reduce((ae,te)=>ae.add(te),ee).multiplyScalar(1/f);for(let ae=0;ae<f;ae++){let te=[],X=(ae-1+f)%f,se=j[W][X],$=j[W][ae];p.copy(se).sub(C),m.copy($).sub(C);let H=C.angleTo(p),Q=p.angleTo(m),ce=Math.cos(H)*g;o==0?U.copy(ee):U.copy(C).setLength(y+ce),K.push(ce);let ie=[U,se,$];for(let N=0;N<2;N++){let E=ie[N],Y=ie[N+1];R.subVectors(E,C),G.subVectors(Y,C),P.crossVectors(R,G).normalize();for(let re=0;re<x;re++){let ye=[H,Q][N]*re/x;p.copy(R).applyAxisAngle(P,ye).add(C),D.push(p.clone()),N&&(w(p,C),te.push([re==0?E:p.clone(),b.clone()]))}N&&(w(Y,C),te.push([Y,b.clone()]))}q.push(te)}B.push(q);let V=2*x,de=2;for(let ae=0;ae<f;ae++){let te=V*ae,X=V*((ae+1)%f),se=[D[te]];for(let H=1;H<x;H++){R=D[te+H],G=D[X+H],se.push(R);for(let Q=1,ce=H-de+1;Q<=ce;Q++)p.lerpVectors(R,G,Q/(ce+1)),p.sub(C).setLength(K[ae]).add(C),se.push(p.clone());se.push(G)}for(let H=0;H<x;H++)se.push(D[H+x+te]);se.push(D[X+x]);let $=L.map(H=>se[H]);a.push(...$.map(H=>[H.x,H.y,H.z]).flat()),c.push(...$.map(H=>(w(H,C),[b.x,b.y,b.z])).flat())}}let ne=[];for(let W=0;W<A.length;W++)for(let z=0;z<f;z++){let D=A[W][z];if(D<T){let K=A[D].findIndex(V=>V%T==W),q=B[W][z],ee=B[D][K];for(let V=0;V<x;V++){let de=q[V],ae=ee[x-V],te=q[V+1],X=ee[x-(V+1)];[de,ae,te,te,ae,X].forEach(se=>{a.push(se[0].x,se[0].y,se[0].z),c.push(se[1].x,se[1].y,se[1].z)})}ne.push(q[0][0],ee[x][0],q[x][0],ee[0][0])}}for(;ne.length;){let W,z,D,K;[W,z]=ne.splice(0,2);let q=[W];for(;W!=z;)q.push(z),D=ne.indexOf(z),K=D%2,z=ne.splice(D-K,2)[1-K];b.subVectors(q[0],q[1]).cross(p.subVectors(q[0],q[2])).normalize();let ee=b.dot(q[0])<0;ee&&b.negate();for(let V=1;V<=q.length-2;V++)[q[V+ +ee],q[V+1-+ee],q[0]].forEach(de=>{a.push(de.x,de.y,de.z),c.push(b.x,b.y,b.z)})}}function h(){let d=new M;for(let S=0;S<a.length;S+=3){d.x=a[S+0],d.y=a[S+1],d.z=a[S+2];let A=w(d)/2/Math.PI+.5,T=_(d)/Math.PI+.5;l.push(A,1-T)}let f=new M,p=new M,m=new M,v=new M,g=new O,y=new O,x=new O,b=(S,A,T,L)=>{L<0&&S.x===1&&(l[A]=S.x-1),T.x===0&&T.z===0&&(l[A]=L/2/Math.PI+.5)};for(let S=0,A=0;S<a.length;S+=9,A+=6){f.set(a[S+0],a[S+1],a[S+2]),p.set(a[S+3],a[S+4],a[S+5]),m.set(a[S+6],a[S+7],a[S+8]),g.set(l[A+0],l[A+1]),y.set(l[A+2],l[A+3]),x.set(l[A+4],l[A+5]),v.copy(f).add(p).add(m).divideScalar(3);let T=w(v);b(g,A+0,f,T),b(y,A+2,p,T),b(x,A+4,m,T)}for(let S=0;S<l.length;S+=6){let A=l[S+0],T=l[S+2],L=l[S+4],C=Math.max(A,T,L),U=Math.min(A,T,L);C>.9&&U<.1&&(A<.2&&(l[S+0]+=1),T<.2&&(l[S+2]+=1),L<.2&&(l[S+4]+=1))}function w(S){return Math.atan2(S.z,-S.x)}function _(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(e){return new Eo(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}};var Ex=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new Ih(e*.5,s,o):new ao(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:tt(Ue({},r),{type:"DodecahedronGeometry"})})}},Ih=class extends Eo{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=1/i,o=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-i,0,-s,i,0,s,-i,0,s,i,-s,-i,0,-s,i,0,s,-i,0,s,i,0,-i,0,-s,i,0,-s,-i,0,s,i,0,s],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(o,a,l,e,t,n);this.type=l}static fromJSON(e){return new Ih(e.radius,e.corner,e.cornerSides)}};var Nc=1e-12,Cc=class{constructor(e){this.position=new O;this.startPosition=new O;this.uuid=Ee.generateUUID();this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new Cc(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Lc=class extends Cc{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Lc(this.parent).copy(this)}},vs=class extends Cc{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Lc(this),new Lc(this))}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let n=0,i=this.controls.length;n<i;n++){let s=this.controls[n];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new vs(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},sm=r=>r,Ic=new O,om=new O,NL=new O,CL=new O,LL=new O,IL=new O,Nx=new M,Cx=new M;function Lx(r){let e=new O;e.addVectors(r.v0,Ic.subVectors(r.v1,r.v0).multiplyScalar(2/3));let t=new O;return t.addVectors(r.v2,om.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new ii(r.v0,e,t,r.v2)}function Pc(r,e,t=Number.EPSILON){return Math.abs(r-e)<t}function PL(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function DL(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function am(r,e,t){let n=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),i=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),s=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2));return Math.acos((i*i+n*n-s*s)/(2*i*n))}function Ix(r,e,t,n,i){let s=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),o=(r.y+e.y)/2,a=(r.x+e.x)/2,l=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(r.y-e.y)/s,c=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(e.x-r.x)/s;return n.set(a+l,o+c),i.set(a-l,o-c),[n,i]}function Px(r,e,t){let n=r.distanceTo(t),i=e.distanceTo(t);return n<i?e:r}function Dx(r,e,t,n,i,s){let o=e.x-r.x,a=e.y-r.y,l=t.x-r.x,c=t.y-r.y,u=Math.sqrt((o+l)*(o+l)+(a+c)*(a+c)),h;return am(e,r,t)>Math.PI&&(u*=-1),Pc(c,a)?h=(a+c)*(n/u-.5)*8/3/(o-l):h=(o+l)*(n/u-.5)*8/3/(c-a),i.set(e.x-h*a,e.y+h*o),s.set(t.x+h*c,t.y-h*l),[i,s]}function lm(r,e){return r.position.equals(r.controls[1].position)&&e.position.equals(e.controls[0].position)}function Rx(r,e,t,n,i=.5){let s=Ic.subVectors(e,r).multiplyScalar(i).add(r),o=om.subVectors(t,e).multiplyScalar(i).add(e),a=NL.subVectors(n,t).multiplyScalar(i).add(t),l=s,c=CL.subVectors(o,s).multiplyScalar(i).add(s),u=LL.subVectors(a,o).multiplyScalar(i).add(o),h=a,d=IL.subVectors(u,c).multiplyScalar(i).add(c);return[r.x,r.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,h.x,h.y,n.x,n.y]}function Bx(r,e,t=12,n=!0){let i=Cx.set(0,0,0),s,o=0,a=[];for(let l=0;l<e.length;l++){let c=sm(e[l]),u=Ic,h=xs(c,t);a.push(h);for(let d=0;d<=h;d++)if(c instanceof ii||c instanceof Wi||c instanceof ri){if(c.getPoint(d/h,u),i.set(u.x,u.y,0),s!==void 0&&DL(s,i))continue;s===void 0&&(s=Nx),s.copy(i),r.setXYZ(o,i.x,i.y,i.z),o++}}return n&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),r}function Ox(r,e,t,n=12,i=!0){let s=Cx.set(0,0,0),o=0,a=[];for(let l=0;l<e.length;l++){if(t[l]===!1)continue;let c,u=sm(e[l]),h=Ic,d=xs(u,n);a.push(d);for(let f=0;f<=d;f++)if(u instanceof ii||u instanceof Wi||u instanceof ri){if(u.getPoint(f/d,h),s.set(h.x,h.y,0),c==null?void 0:c.equals(s))continue;c===void 0?c=Nx:(r.setXYZ(o,c.x,c.y,c.z),o++,r.setXYZ(o,s.x,s.y,s.z),o++),c.copy(s)}}return i&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),a}function cm(r,e=12,t=!1){let n=[];for(let i=0,s=r.length;i<s;i++){let o=r[i],a=0;if(t&&o.roundedCurveCorner!==void 0){let l=xs(o.roundedCurveCorner,e)*.5;i>0&&(n[i-1]+=l),a+=l}o.curveAfter!==void 0&&(a+=xs(o.curveAfter,e)),n.push(a)}return r.length>0&&t&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=xs(r[0].roundedCurveCorner,e)*.5),n}function xs(r,e=12){return r&&r instanceof lo?e*2:r&&(r instanceof ri||r instanceof dh)?1:r&&r instanceof Ea?e*r.points.length:e}function Fx(r,e,t=12,n=!0){let i,s=0;for(let o=0;o<e.length;o++){let a=sm(e[o]),l=xs(a,t),c=Ic;for(let u=0;u<=l;u++)if(a instanceof ii||a instanceof Wi||a instanceof ri){if(a.getPoint(u/l,c),i!==void 0&&PL(i,c,Nc))continue;i===void 0&&(i=om),i.copy(c),r.push(c.x,c.y),s++}}return Pc(r[0],r[r.length-2],Nc)&&Pc(r[1],r[r.length-1],Nc)&&(r.pop(),r.pop()),n&&s>1&&!(Pc(r[s-1],r[1],Nc)&&Pc(r[s-2],r[0],Nc))&&(r.push(r[0],r[1]),s++),r}var um=new O,RL=new O,BL=new O,OL=new O,FL=new O,zL=new O,Lt=class extends yi{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new cn;this.plane=new ni(new M(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ee.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,n=this.points.length;t<n;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let t=0,n=this.shapeHoles.length;t<n;t++){let i=this.shapeHoles[t],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let n=0,i=this.shapeHoles.length;n<i;n++){let s=this.shapeHoles[n],o=s.points.indexOf(e);if(o>=0)return t+o;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this.applyScale(e/this.width,t/this.height),this._width=e,this._height=t}applyScale(e,t){let n=um.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let o=this.points[i];o.position.multiply(n),o.controls[0].position.multiply(n),o.controls[1].position.multiply(n)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update(!1)}createPoint(e,t=0,n=Ee.generateUUID()){let i;e instanceof O?i=e:i=new O(e,t);let s=new vs(n,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,n=this.points.length;t<n;t++){let i=this.points[t];if(i.uuid===e)return i}return null}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}update(e=!0){for(let t=0,n=this.shapeHoles.length;t<n;t++)this.shapeHoles[t].update(!1);this._update(e)}extractShapePointsToBuffer(e,t=12,n=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=n?this.roundedCurveDivisions:this.curveDivisions;return Bx(e,n?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,o)=>s+o,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=cm(this.points,e,!1),this.roundedCurveDivisions=cm(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,n=12){return Ox(e,this.curves,t,n,this.autoClose).reduce((s,o)=>s+o,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Fx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let n=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=xs(this.points[0].roundedCurveCorner,this.subdivision)*.5);let o=e-s;o<0&&(o+=i.reduce((a,l)=>a+l,0));for(let a=0,l=i.length;a<l;a++){let c=i[a];if(o<n+c)return[a,(o-n+1)/c];n+=c}return[0,1]}getCurveT(e,t,n){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],o=this.curveDivisions,a=o[e];if(lm(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(um.set(n.x,n.y))/u}let l=0;for(let u=0;u<e;u++)l+=o[u];return(t-l)/a}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,t){lm(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let n=this.curves[this.curves.length-1];e.curveBefore=n,t.curveAfter=n;let i=n.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){var n;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let o=this.points[i];if(i===0)this.moveTo(o.position.x,o.position.y);else{let a=this.points[i-1];this._applyCurveForPoint(o,a)}}let t=this.getLastPoint();if((t==null?void 0:t.curveAfter)&&(t.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,o=this.points.length;s<o;s++){let a=this.points[s],l=a.roundness;if(!a.controlsMoved()&&l>0){let c=a.curveBefore,u=a.curveAfter;if(c===void 0||u===void 0)continue;let h=a.roundedCurveBefore,d=a.roundedCurveAfter,f=c.getLength(),p=u.getLength(),m=Math.min(l,f*.499),v=Math.min(l,p*.499),g=Math.min(m,v),y=1-g/f,x=g/p,b=c.getPointAt(y,um),w=u.getPointAt(x,RL);this._subSplitCurve(c,h,y,b,void 0),this._subSplitCurve(u,d,x,void 0,w);let _;if(this.useCubicForRoundedCorners){let S=am(b,a.position,w)/2,A=Math.tan(S)*b.distanceTo(a.position),[T,L]=Ix(b,w,A,BL,OL),C=Px(T,L,a.position),[U,P]=Dx(C,b,w,A,FL,zL);_=new ii(b.clone(),U.clone(),P.clone(),w.clone())}else _=new Wi(b.clone(),a.position.clone(),w.clone());a.roundedCurveCorner=_,this.roundedCurves.splice(s+i,0,_),i++}}}e&&((n=this.eventDispatcher)==null||n.dispatchEvent({type:"update"}))}_subSplitCurve(e,t,n,i,s){if(e instanceof ri)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let o=e,a=t,l=o.getUtoTmapping(n,0),c=Rx(o.v0,o.v1,o.v2,o.v3,l);return i!==void 0&&(a.v0.set(c[0],c[1]),a.v1.set(c[2],c[3]),a.v2.set(c[4],c[5]),a.v3.set(c[6],c[7])),s!==void 0&&(a.v0.set(c[6],c[7]),a.v1.set(c[8],c[9]),a.v2.set(c[10],c[11]),a.v3.set(c[12],c[13])),a}return t}clone(){let e=new Lt(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){var n;this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let i=0;i<t;i++){let s=i*7,o=e.points[s+0],a=e.points[s+1],l=e.points[s+2],c=e.points[s+3],u=e.points[s+4],h=e.points[s+5],d=e.points[s+6],f=new vs(Ee.generateUUID(),new O(o,a));f.controls[0].position.set(l,c),f.controls[1].position.set(u,h),f.roundness=d,this.points.push(f)}return this.shapeHoles=((n=e.shapeHoles)==null?void 0:n.length)?e.shapeHoles.map(i=>{let s=new Lt;return s.fromJSON(i),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof ii&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},n=i=>{let s=[],o,a;for(o=0,a=i.length;o<a;o++)i[o]instanceof Wi&&(i[o]=Lx(i[o]));for(o=0,a=i.length;o<a;o++){let u=i[o],h=o>0?i[o-1]:null,d;u instanceof ii?(d=this.createPoint(u.v0),d.controls[1].position.copy(u.v1)):u instanceof ri&&(d=this.createPoint(u.v1)),d!==void 0&&(h!==null&&t(d,h),s.push(d))}let l=i[i.length-1],c=!1;return l instanceof ii?l.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(l.v2),c=!0):l instanceof ri&&l.v2.equals(s[0].position)&&(c=!0),this.isClosed=c,s};return this.points=n(e.curves),e instanceof yi&&(this.shapeHoles=e.holes.map(i=>{let s=new Lt;return s.fromShape(i),s})),this.update(),this}};var hm=Math.PI*2;function dm({x:r,y:e},t,n,i,s){return{x:r*t+i,y:e*n+s}}function GL(r,e){let t=e===1.5707963267948966?.551915024494:e===-1.5707963267948966?-.551915024494:4/3*Math.tan(e/4),n=Math.cos(r),i=Math.sin(r),s=Math.cos(r+e),o=Math.sin(r+e);return[{x:n-i*t,y:i+n*t},{x:s+o*t,y:o-s*t},{x:s,y:o}]}function zx(r,e,t,n){let i=r*n-e*t<0?-1:1,s=Math.min(1,Math.max(-1,r*t+e*n));return i*Math.acos(s)}function UL(r,e,t,n,i,s,o,a,l,c){let u=Math.pow(i,2),h=Math.pow(s,2),d=Math.pow(o,2),f=Math.pow(a,2),p=u*h-u*f-h*d;p<0&&(p=0),p/=u*f+h*d,p=Math.sqrt(p)*(l===c?-1:1);let m=p*i/s*a,v=p*-s/i*o,g=m+(r+t)/2,y=v+(e+n)/2,x=(o-m)/i,b=(a-v)/s,w=(-o-m)/i,_=(-a-v)/s,S=zx(1,0,x,b),A=zx(x,b,w,_);return!c&&A>0&&(A-=hm),c&&A<0&&(A+=hm),{centerx:g,centery:y,ang1:S,ang2:A}}function Gx({px:r,py:e,cx:t,cy:n,rx:i,ry:s,largeArcFlag:o,sweepFlag:a}){let l=[];if(i===0||s===0)return[];let c=(r-t)/2,u=(e-n)/2;if(c===0&&u===0)return[];i=Math.abs(i),s=Math.abs(s);let h=Math.pow(c,2)/Math.pow(i,2)+Math.pow(u,2)/Math.pow(s,2);h>1&&(i*=Math.sqrt(h),s*=Math.sqrt(h));let d=UL(r,e,t,n,i,s,c,u,o,a),{ang1:f,ang2:p}=d,{centerx:m,centery:v}=d,g=Math.abs(p)/(hm/4);Math.abs(1-g)<1e-7&&(g=1);let y=Math.max(Math.ceil(g),1);p/=y;for(let x=0;x<y;x++)l.push(GL(f,p)),f+=p;return l.map(x=>{let{x:b,y:w}=dm(x[0],i,s,m,v),{x:_,y:S}=dm(x[1],i,s,m,v),{x:A,y:T}=dm(x[2],i,s,m,v);return{x1:b,y1:w,x2:_,y2:S,x:A,y:T}})}var Wt;(function(r){r[r.ODD=0]="ODD",r[r.NONZERO=1]="NONZERO",r[r.POSITIVE=2]="POSITIVE",r[r.NEGATIVE=3]="NEGATIVE",r[r.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Wt||(Wt={}));var gn;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(gn||(gn={}));function Xe(r,e){if(!r)throw e||"Assertion Failed!"}var We=function(){function r(){}return r.vertEq=function(e,t){return e.s===t.s&&e.t===t.t},r.vertLeq=function(e,t){return e.s<t.s||e.s===t.s&&e.t<=t.t},r.transLeq=function(e,t){return e.t<t.t||e.t===t.t&&e.s<=t.s},r.edgeGoesLeft=function(e){return r.vertLeq(e.Dst,e.Org)},r.edgeGoesRight=function(e){return r.vertLeq(e.Org,e.Dst)},r.vertL1dist=function(e,t){return Math.abs(e.s-t.s)+Math.abs(e.t-t.t)},r.edgeEval=function(e,t,n){Xe(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?i<s?t.t-e.t+(e.t-n.t)*(i/(i+s)):t.t-n.t+(n.t-e.t)*(s/(i+s)):0},r.edgeSign=function(e,t,n){Xe(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?(t.t-n.t)*i+(t.t-e.t)*s:0},r.transEval=function(e,t,n){Xe(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?i<s?t.s-e.s+(e.s-n.s)*(i/(i+s)):t.s-n.s+(n.s-e.s)*(s/(i+s)):0},r.transSign=function(e,t,n){Xe(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?(t.s-n.s)*i+(t.s-e.s)*s:0},r.vertCCW=function(e,t,n){return e.s*(t.t-n.t)+t.s*(n.t-e.t)+n.s*(e.t-t.t)>=0},r.interpolate=function(e,t,n,i){return e=e<0?0:e,n=n<0?0:n,e<=n?n===0?(t+i)/2:t+(i-t)*(e/(e+n)):i+(t-i)*(n/(e+n))},r.intersect=function(e,t,n,i,s){var o,a,l;r.vertLeq(e,t)||(l=e,e=t,t=l),r.vertLeq(n,i)||(l=n,n=i,i=l),r.vertLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.vertLeq(n,t)?r.vertLeq(t,i)?(o=r.edgeEval(e,n,t),a=r.edgeEval(n,t,i),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,t.s)):(o=r.edgeSign(e,n,t),a=-r.edgeSign(e,i,t),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,i.s)):s.s=(n.s+t.s)/2,r.transLeq(e,t)||(l=e,e=t,t=l),r.transLeq(n,i)||(l=n,n=i,i=l),r.transLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.transLeq(n,t)?r.transLeq(t,i)?(o=r.transEval(e,n,t),a=r.transEval(n,t,i),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,t.t)):(o=r.transSign(e,n,t),a=-r.transSign(e,i,t),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,i.t)):s.t=(n.t+t.t)/2},r}(),Dc=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return r}(),Ph=function(){function r(e){this.side=e,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(r.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(e){this.Sym.Lface=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(e){this.Sym.Org=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(e){this.Sym.Lnext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(e){this.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(e){this.Lnext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(e){this.Sym.Onext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(e){this.Sym.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(e){this.Sym.Lnext.Sym=e},enumerable:!0,configurable:!0}),r}(),Za=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return r}(),Ux=function(){function r(){var e=new Za,t=new Dc,n=new Ph(0),i=new Ph(1);e.next=e.prev=e,e.anEdge=null,t.next=t.prev=t,n.next=n,n.Sym=i,i.next=i,i.Sym=n,this.vHead=e,this.fHead=t,this.eHead=n,this.eHeadSym=i}return r.prototype.makeEdge_=function(e){var t=new Ph(0),n=new Ph(1);e.Sym.side<e.side&&(e=e.Sym);var i=e.Sym.next;return n.next=i,i.Sym.next=t,t.next=e,e.Sym.next=n,t.Sym=n,t.Onext=t,t.Lnext=n,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,n.Sym=t,n.Onext=n,n.Lnext=t,n.Org=null,n.Lface=null,n.winding=0,n.activeRegion=null,t},r.prototype.splice_=function(e,t){var n=e.Onext,i=t.Onext;n.Sym.Lnext=t,i.Sym.Lnext=e,e.Onext=i,t.Onext=n},r.prototype.makeVertex_=function(e,t,n){var i=e;Xe(i,"Vertex can't be null!");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t;var o=t;do o.Org=i,o=o.Onext;while(o!==t)},r.prototype.makeFace_=function(e,t,n){var i=e;Xe(i,"Face can't be null");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t,i.trail=null,i.marked=!1,i.inside=n.inside;var o=t;do o.Lface=i,o=o.Lnext;while(o!==t)},r.prototype.killEdge_=function(e){e.Sym.side<e.side&&(e=e.Sym);var t=e.next,n=e.Sym.next;t.Sym.next=n,n.Sym.next=t},r.prototype.killVertex_=function(e,t){var n=e.anEdge,i=n;do i.Org=t,i=i.Onext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.killFace_=function(e,t){var n=e.anEdge,i=n;do i.Lface=t,i=i.Lnext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.makeEdge=function(){var e=new Za,t=new Za,n=new Dc,i=this.makeEdge_(this.eHead);return this.makeVertex_(e,i,this.vHead),this.makeVertex_(t,i.Sym,this.vHead),this.makeFace_(n,i,this.fHead),i},r.prototype.splice=function(e,t){var n=!1,i=!1;if(e!==t){if(t.Org!==e.Org&&(i=!0,this.killVertex_(t.Org,e.Org)),t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(t,e),!i){var s=new Za;this.makeVertex_(s,t,e.Org),e.Org.anEdge=e}if(!n){var o=new Dc;this.makeFace_(o,t,e.Lface),e.Lface.anEdge=e}}},r.prototype.delete=function(e){var t=e.Sym,n=!1;if(e.Lface!==e.Rface&&(n=!0,this.killFace_(e.Lface,e.Rface)),e.Onext===e)this.killVertex_(e.Org,null);else if(e.Rface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev),!n){var i=new Dc;this.makeFace_(i,e,e.Lface)}t.Onext===t?(this.killVertex_(t.Org,null),this.killFace_(t.Lface,null)):(e.Lface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),this.killEdge_(e)},r.prototype.addEdgeVertex=function(e){var t=this.makeEdge_(e),n=t.Sym;this.splice_(t,e.Lnext),t.Org=e.Dst;var i=new Za;return this.makeVertex_(i,n,t.Org),t.Lface=n.Lface=e.Lface,t},r.prototype.splitEdge=function(e){var t=this.addEdgeVertex(e),n=t.Sym;return this.splice_(e.Sym,e.Sym.Oprev),this.splice_(e.Sym,n),e.Dst=n.Org,n.Dst.anEdge=n.Sym,n.Rface=e.Rface,n.winding=e.winding,n.Sym.winding=e.Sym.winding,n.idx=e.idx,n.Sym.idx=e.Sym.idx,n},r.prototype.connect=function(e,t){var n=!1,i=this.makeEdge_(e),s=i.Sym;if(t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(i,e.Lnext),this.splice_(s,t),i.Org=e.Dst,s.Org=t.Org,i.Lface=s.Lface=e.Lface,e.Lface.anEdge=s,!n){var o=new Dc;this.makeFace_(o,i,e.Lface)}return i},r.prototype.zapFace=function(e){var t=e.anEdge,n,i,s,o,a;i=t.Lnext;do n=i,i=n.Lnext,n.Lface=null,n.Rface===null&&(n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),s=n.Sym,s.Onext===s?this.killVertex_(s.Org,null):(s.Org.anEdge=s.Onext,this.splice_(s,s.Oprev)),this.killEdge_(n));while(n!=t);o=e.prev,a=e.next,a.prev=o,o.next=a},r.prototype.countFaceVerts_=function(e){var t=e.anEdge,n=0;do n++,t=t.Lnext;while(t!==e.anEdge);return n},r.prototype.mergeConvexFaces=function(e){var t,n,i,s,o,a,l;for(t=this.fHead.next;t!==this.fHead;t=t.next)if(!!t.inside)for(n=t.anEdge,o=n.Org;i=n.Lnext,s=n.Sym,s&&s.Lface&&s.Lface.inside&&(a=this.countFaceVerts_(t),l=this.countFaceVerts_(s.Lface),a+l-2<=e&&We.vertCCW(n.Lprev.Org,n.Org,s.Lnext.Lnext.Org)&&We.vertCCW(s.Lprev.Org,s.Org,n.Lnext.Lnext.Org)&&(i=s.Lnext,this.delete(s),n=null,s=null)),!(n&&n.Lnext.Org===o);)n=i;return!0},r.prototype.check=function(){var e=this.fHead,t=this.vHead,n=this.eHead,i,s,o,a,l,c;for(s=e,s=e;(i=s.next)!==e;s=i){Xe(i.prev===s),l=i.anEdge;do Xe(l.Sym!==l),Xe(l.Sym.Sym===l),Xe(l.Lnext.Onext.Sym===l),Xe(l.Onext.Sym.Lnext===l),Xe(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(Xe(i.prev===s&&i.anEdge===null),a=t,a=t;(o=a.next)!==t;a=o){Xe(o.prev===a),l=o.anEdge;do Xe(l.Sym!==l),Xe(l.Sym.Sym===l),Xe(l.Lnext.Onext.Sym===l),Xe(l.Onext.Sym.Lnext===l),Xe(l.Org===o),l=l.Onext;while(l!==o.anEdge)}for(Xe(o.prev===a&&o.anEdge===null),c=n,c=n;(l=c.next)!==n;c=l)Xe(l.Sym.next===c.Sym),Xe(l.Sym!==l),Xe(l.Sym.Sym===l),Xe(l.Org!==null),Xe(l.Dst!==null),Xe(l.Lnext.Onext.Sym===l),Xe(l.Onext.Sym.Lnext===l);Xe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},r}(),kx=function(){function r(){this.handle=null}return r}(),Vx=function(){function r(){this.key=null,this.node=0}return r}(),kL=function(){function r(e,t){this.leq=t,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=e,this.nodes=[],this.handles=[];for(var n=0;n<e+1;n++)this.nodes[n]=new kx,this.handles[n]=new Vx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return r.prototype.floatDown_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e<<1,o<this.size&&this.leq(n[t[o+1].handle].key,n[t[o].handle].key)&&++o,Xe(o<=this.max),s=t[o].handle,o>this.size||this.leq(n[i].key,n[s].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.floatUp_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e>>1,s=t[o].handle,o===0||this.leq(n[s].key,n[i].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.init=function(){for(var e=this.size;e>=1;--e)this.floatDown_(e);this.initialized=!0},r.prototype.min=function(){return this.handles[this.nodes[1].handle].key},r.prototype.insert=function(e){var t,n;if(t=++this.size,t*2>this.max){this.max*=2;var i,s;for(s=this.nodes.length,this.nodes.length=this.max+1,i=s;i<this.nodes.length;i++)this.nodes[i]=new kx;for(s=this.handles.length,this.handles.length=this.max+1,i=s;i<this.handles.length;i++)this.handles[i]=new Vx}return this.freeList===0?n=t:(n=this.freeList,this.freeList=this.handles[n].node),this.nodes[t].handle=n,this.handles[n].node=t,this.handles[n].key=e,this.initialized&&this.floatUp_(t),n},r.prototype.extractMin=function(){var e=this.nodes,t=this.handles,n=e[1].handle,i=t[n].key;return this.size>0&&(e[1].handle=e[this.size].handle,t[e[1].handle].node=1,t[n].key=null,t[n].node=this.freeList,this.freeList=n,--this.size,this.size>0&&this.floatDown_(1)),i},r.prototype.delete=function(e){var t=this.nodes,n=this.handles,i;Xe(e>=1&&e<=this.max&&n[e].key!==null),i=n[e].node,t[i].handle=t[this.size].handle,n[t[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(n[t[i>>1].handle].key,n[t[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),n[e].key=null,n[e].node=this.freeList,this.freeList=e},r}(),fm=function(){function r(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return r}(),Hx=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),VL=function(){function r(e,t){this.frame=e,this.leq=t,this.head=new Hx,this.head.next=this.head,this.head.prev=this.head}return r.prototype.min=function(){return this.head.next},r.prototype.max=function(){return this.head.prev},r.prototype.insert=function(e){return this.insertBefore(this.head,e)},r.prototype.search=function(e){var t=this.head;do t=t.next;while(t.key!==null&&!this.leq(this.frame,e,t.key));return t},r.prototype.insertBefore=function(e,t){do e=e.prev;while(e.key!==null&&!this.leq(this.frame,e.key,t));var n=new Hx;return n.key=t,n.next=e.next,e.next.prev=n,n.prev=e,e.next=n,n},r.prototype.delete=function(e){e.next.prev=e.prev,e.prev.next=e.next},r}(),HL=function(){function r(){}return r.regionBelow=function(e){return e.nodeUp.prev.key},r.regionAbove=function(e){return e.nodeUp.next.key},r.debugEvent=function(e){},r.addWinding=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.edgeLeq=function(e,t,n){var i=e.event,s=t.eUp,o=n.eUp;if(s.Dst===i)return o.Dst===i?We.vertLeq(s.Org,o.Org)?We.edgeSign(o.Dst,s.Org,o.Org)<=0:We.edgeSign(s.Dst,o.Org,s.Org)>=0:We.edgeSign(o.Dst,i,o.Org)<=0;if(o.Dst===i)return We.edgeSign(s.Dst,i,s.Org)>=0;var a=We.edgeEval(s.Dst,i,s.Org),l=We.edgeEval(o.Dst,i,o.Org);return a>=l},r.deleteRegion=function(e,t){t.fixUpperEdge&&Xe(t.eUp.winding===0),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},r.fixUpperEdge=function(e,t,n){Xe(t.fixUpperEdge),e.mesh.delete(t.eUp),t.fixUpperEdge=!1,t.eUp=n,n.activeRegion=t},r.topLeftRegion=function(e,t){var n=t.eUp.Org,i;do t=r.regionAbove(t);while(t.eUp.Org===n);if(t.fixUpperEdge){if(i=e.mesh.connect(r.regionBelow(t).eUp.Sym,t.eUp.Lnext),i===null)return null;r.fixUpperEdge(e,t,i),t=r.regionAbove(t)}return t},r.topRightRegion=function(e){var t=e.eUp.Dst;do e=r.regionAbove(e);while(e.eUp.Dst===t);return e},r.addRegionBelow=function(e,t,n){var i=new fm;return i.eUp=n,i.nodeUp=e.dict.insertBefore(t.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,n.activeRegion=i,i},r.isWindingInside=function(e,t){switch(e.windingRule){case Wt.ODD:return(t&1)!=0;case Wt.NONZERO:return t!==0;case Wt.POSITIVE:return t>0;case Wt.NEGATIVE:return t<0;case Wt.ABS_GEQ_TWO:return t>=2||t<=-2}throw new Error("Invalid winding rulle")},r.computeWinding=function(e,t){t.windingNumber=r.regionAbove(t).windingNumber+t.eUp.winding,t.inside=r.isWindingInside(e,t.windingNumber)},r.finishRegion=function(e,t){var n=t.eUp,i=n.Lface;i.inside=t.inside,i.anEdge=n,r.deleteRegion(e,t)},r.finishLeftRegions=function(e,t,n){for(var i,s=null,o=t,a=t.eUp;o!==n;){if(o.fixUpperEdge=!1,s=r.regionBelow(o),i=s.eUp,i.Org!=a.Org){if(!s.fixUpperEdge){r.finishRegion(e,o);break}i=e.mesh.connect(a.Lprev,i.Sym),r.fixUpperEdge(e,s,i)}a.Onext!==i&&(e.mesh.splice(i.Oprev,i),e.mesh.splice(a,i)),r.finishRegion(e,o),a=s.eUp,o=s}return a},r.addRightEdges=function(e,t,n,i,s,o){var a,l,c,u,h=!0;c=n;do Xe(We.vertLeq(c.Org,c.Dst)),r.addRegionBelow(e,t,c.Sym),c=c.Onext;while(c!==i);for(s===null&&(s=r.regionBelow(t).eUp.Rprev),l=t,u=s;a=r.regionBelow(l),c=a.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(e.mesh.splice(c.Oprev,c),e.mesh.splice(u.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=r.isWindingInside(e,a.windingNumber),l.dirty=!0,!h&&r.checkForRightSplice(e,l)&&(r.addWinding(c,u),r.deleteRegion(e,l),e.mesh.delete(u)),h=!1,l=a,u=c;l.dirty=!0,Xe(l.windingNumber-c.winding===a.windingNumber),o&&r.walkDirtyRegions(e,l)},r.spliceMergeVertices=function(e,t,n){e.mesh.splice(t,n)},r.vertexWeights=function(e,t,n){var i=We.vertL1dist(t,e),s=We.vertL1dist(n,e),o=.5*s/(i+s),a=.5*i/(i+s);e.coords[0]+=o*t.coords[0]+a*n.coords[0],e.coords[1]+=o*t.coords[1]+a*n.coords[1],e.coords[2]+=o*t.coords[2]+a*n.coords[2]},r.getIntersectData=function(e,t,n,i,s,o){t.coords[0]=t.coords[1]=t.coords[2]=0,t.idx=-1,r.vertexWeights(t,n,i),r.vertexWeights(t,s,o)},r.checkForRightSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp;if(We.vertLeq(i.Org,s.Org)){if(We.edgeSign(s.Dst,i.Org,s.Org)>0)return!1;We.vertEq(i.Org,s.Org)?i.Org!==s.Org&&(e.pq.delete(i.Org.pqHandle),r.spliceMergeVertices(e,s.Oprev,i)):(e.mesh.splitEdge(s.Sym),e.mesh.splice(i,s.Oprev),t.dirty=n.dirty=!0)}else{if(We.edgeSign(i.Dst,s.Org,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Oprev,i)}return!0},r.checkForLeftSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o;if(Xe(!We.vertEq(i.Dst,s.Dst)),We.vertLeq(i.Dst,s.Dst)){if(We.edgeSign(i.Dst,s.Dst,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,o=e.mesh.splitEdge(i),e.mesh.splice(s.Sym,o),o.Lface.inside=t.inside}else{if(We.edgeSign(s.Dst,i.Dst,s.Org)>0)return!1;t.dirty=n.dirty=!0,o=e.mesh.splitEdge(s),e.mesh.splice(i.Lnext,s.Sym),o.Rface.inside=t.inside}return!0},r.checkForIntersect=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o=i.Org,a=s.Org,l=i.Dst,c=s.Dst,u,h,d=new Za,f,p;if(Xe(!We.vertEq(c,l)),Xe(We.edgeSign(l,e.event,o)<=0),Xe(We.edgeSign(c,e.event,a)>=0),Xe(o!==e.event&&a!==e.event),Xe(!t.fixUpperEdge&&!n.fixUpperEdge),o===a||(u=Math.min(o.t,l.t),h=Math.max(a.t,c.t),u>h))return!1;if(We.vertLeq(o,a)){if(We.edgeSign(c,o,a)>0)return!1}else if(We.edgeSign(l,a,o)<0)return!1;return r.debugEvent(e),We.intersect(l,o,c,a,d),Xe(Math.min(o.t,l.t)<=d.t),Xe(d.t<=Math.max(a.t,c.t)),Xe(Math.min(c.s,l.s)<=d.s),Xe(d.s<=Math.max(a.s,o.s)),We.vertLeq(d,e.event)&&(d.s=e.event.s,d.t=e.event.t),f=We.vertLeq(o,a)?o:a,We.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),We.vertEq(d,o)||We.vertEq(d,a)?(r.checkForRightSplice(e,t),!1):!We.vertEq(l,e.event)&&We.edgeSign(l,e.event,d)>=0||!We.vertEq(c,e.event)&&We.edgeSign(c,e.event,d)<=0?c===e.event?(e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Sym,i),t=r.topLeftRegion(e,t),i=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),n),r.addRightEdges(e,t,i.Oprev,i,i,!0),!0):l===e.event?(e.mesh.splitEdge(s.Sym),e.mesh.splice(i.Lnext,s.Oprev),n=t,t=r.topRightRegion(t),p=r.regionBelow(t).eUp.Rprev,n.eUp=s.Oprev,s=r.finishLeftRegions(e,n,null),r.addRightEdges(e,t,s.Onext,i.Rprev,p,!0),!0):(We.edgeSign(l,e.event,d)>=0&&(r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),i.Org.s=e.event.s,i.Org.t=e.event.t),We.edgeSign(c,e.event,d)<=0&&(t.dirty=n.dirty=!0,e.mesh.splitEdge(s.Sym),s.Org.s=e.event.s,s.Org.t=e.event.t),!1):(e.mesh.splitEdge(i.Sym),e.mesh.splitEdge(s.Sym),e.mesh.splice(s.Oprev,i),i.Org.s=d.s,i.Org.t=d.t,i.Org.pqHandle=e.pq.insert(i.Org),r.getIntersectData(e,i.Org,o,l,a,c),r.regionAbove(t).dirty=t.dirty=n.dirty=!0,!1)},r.walkDirtyRegions=function(e,t){for(var n=r.regionBelow(t),i,s;;){for(;n.dirty;)t=n,n=r.regionBelow(n);if(!t.dirty&&(n=t,t=r.regionAbove(t),t===null||!t.dirty))return;if(t.dirty=!1,i=t.eUp,s=n.eUp,i.Dst!==s.Dst&&r.checkForLeftSplice(e,t)&&(n.fixUpperEdge?(r.deleteRegion(e,n),e.mesh.delete(s),n=r.regionBelow(t),s=n.eUp):t.fixUpperEdge&&(r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n),i=t.eUp)),i.Org!==s.Org)if(i.Dst!==s.Dst&&!t.fixUpperEdge&&!n.fixUpperEdge&&(i.Dst===e.event||s.Dst===e.event)){if(r.checkForIntersect(e,t))return}else r.checkForRightSplice(e,t);i.Org===s.Org&&i.Dst===s.Dst&&(r.addWinding(s,i),r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n))}},r.connectRightVertex=function(e,t,n){var i,s=n.Onext,o=r.regionBelow(t),a=t.eUp,l=o.eUp,c=!1;if(a.Dst!==l.Dst&&r.checkForIntersect(e,t),We.vertEq(a.Org,e.event)&&(e.mesh.splice(s.Oprev,a),t=r.topLeftRegion(e,t),s=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),o),c=!0),We.vertEq(l.Org,e.event)&&(e.mesh.splice(n,l.Oprev),n=r.finishLeftRegions(e,o,null),c=!0),c){r.addRightEdges(e,t,n.Onext,s,s,!0);return}We.vertLeq(l.Org,a.Org)?i=l.Oprev:i=a,i=e.mesh.connect(n.Lprev,i),r.addRightEdges(e,t,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,r.walkDirtyRegions(e,t)},r.connectLeftDegenerate=function(e,t,n){var i,s,o,a,l;if(i=t.eUp,We.vertEq(i.Org,n)){Xe(!1),r.spliceMergeVertices(e,i,n.anEdge);return}if(!We.vertEq(i.Dst,n)){e.mesh.splitEdge(i.Sym),t.fixUpperEdge&&(e.mesh.delete(i.Onext),t.fixUpperEdge=!1),e.mesh.splice(n.anEdge,i),r.sweepEvent(e,n);return}Xe(!1),t=r.topRightRegion(t),l=r.regionBelow(t),o=l.eUp.Sym,s=a=o.Onext,l.fixUpperEdge&&(Xe(s!==o),r.deleteRegion(e,l),e.mesh.delete(o),o=s.Oprev),e.mesh.splice(n.anEdge,o),We.edgeGoesLeft(s)||(s=null),r.addRightEdges(e,t,o.Onext,a,s,!0)},r.connectLeftVertex=function(e,t){var n,i,s,o,a,l,c=new fm;if(c.eUp=t.anEdge.Sym,n=e.dict.search(c).key,i=r.regionBelow(n),!!i){if(o=n.eUp,a=i.eUp,We.edgeSign(o.Dst,t,o.Org)===0){r.connectLeftDegenerate(e,n,t);return}if(s=We.vertLeq(a.Dst,o.Dst)?n:i,n.inside||s.fixUpperEdge){if(s===n)l=e.mesh.connect(t.anEdge.Sym,o.Lnext);else{var u=e.mesh.connect(a.Dnext,t.anEdge);l=u.Sym}s.fixUpperEdge?r.fixUpperEdge(e,s,l):r.computeWinding(e,r.addRegionBelow(e,n,l)),r.sweepEvent(e,t)}else r.addRightEdges(e,n,t.anEdge,t.anEdge,null,!0)}},r.sweepEvent=function(e,t){e.event=t,r.debugEvent(e);for(var n=t.anEdge;n.activeRegion===null;)if(n=n.Onext,n===t.anEdge){r.connectLeftVertex(e,t);return}var i=r.topLeftRegion(e,n.activeRegion);Xe(i!==null);var s=r.regionBelow(i),o=s.eUp,a=r.finishLeftRegions(e,s,null);a.Onext===o?r.connectRightVertex(e,i,a):r.addRightEdges(e,i,a.Onext,o,o,!0)},r.addSentinel=function(e,t,n,i){var s=new fm,o=e.mesh.makeEdge();o.Org.s=n,o.Org.t=i,o.Dst.s=t,o.Dst.t=i,e.event=o.Dst,s.eUp=o,s.windingNumber=0,s.inside=!1,s.fixUpperEdge=!1,s.sentinel=!0,s.dirty=!1,s.nodeUp=e.dict.insert(s)},r.initEdgeDict=function(e){e.dict=new VL(e,r.edgeLeq);var t=e.bmax[0]-e.bmin[0],n=e.bmax[1]-e.bmin[1],i=e.bmin[0]-t,s=e.bmax[0]+t,o=e.bmin[1]-n,a=e.bmax[1]+n;r.addSentinel(e,i,s,o),r.addSentinel(e,i,s,a)},r.doneEdgeDict=function(e){for(var t,n=0;(t=e.dict.min().key)!==null;)t.sentinel||(Xe(t.fixUpperEdge),Xe(++n==1)),Xe(t.windingNumber===0),r.deleteRegion(e,t)},r.removeDegenerateEdges=function(e){var t,n,i,s=e.mesh.eHead;for(t=s.next;t!==s;t=n)n=t.next,i=t.Lnext,We.vertEq(t.Org,t.Dst)&&t.Lnext.Lnext!==t&&(r.spliceMergeVertices(e,i,t),e.mesh.delete(t),t=i,i=t.Lnext),i.Lnext===t&&(i!==t&&((i===n||i===n.Sym)&&(n=n.next),e.mesh.delete(i)),(t===n||t===n.Sym)&&(n=n.next),e.mesh.delete(t))},r.initPriorityQ=function(e){var t,n,i,s=0;for(i=e.mesh.vHead,n=i.next;n!==i;n=n.next)s++;for(s+=8,t=e.pq=new kL(s,We.vertLeq),i=e.mesh.vHead,n=i.next;n!==i;n=n.next)n.pqHandle=t.insert(n);return n!==i?!1:(t.init(),!0)},r.donePriorityQ=function(e){e.pq=null},r.removeDegenerateFaces=function(e,t){var n,i,s;for(n=t.fHead.next;n!==t.fHead;n=i)i=n.next,s=n.anEdge,Xe(s.Lnext!==s),s.Lnext.Lnext===s&&(r.addWinding(s.Onext,s),e.mesh.delete(s));return!0},r.computeInterior=function(e,t){t===void 0&&(t=!0);var n,i;if(r.removeDegenerateEdges(e),!r.initPriorityQ(e))return!1;for(r.initEdgeDict(e);(n=e.pq.extractMin())!==null;){for(;i=e.pq.min(),!(i===null||!We.vertEq(i,n));)i=e.pq.extractMin(),r.spliceMergeVertices(e,n.anEdge,i.anEdge);r.sweepEvent(e,n)}return e.event=e.dict.min().key.eUp.Org,r.debugEvent(e),r.doneEdgeDict(e),r.donePriorityQ(e),r.removeDegenerateFaces(e,e.mesh)?(t&&e.mesh.check(),!0):!1},r}(),jL=function(){function r(){this.mesh=new Ux,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Wt.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return r.prototype.dot_=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},r.prototype.normalize_=function(e){var t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2];if(!t)throw"Zero-size vector!";t=Math.sqrt(t),e[0]/=t,e[1]/=t,e[2]/=t},r.prototype.longAxis_=function(e){var t=0;return Math.abs(e[1])>Math.abs(e[0])&&(t=1),Math.abs(e[2])>Math.abs(e[t])&&(t=2),t},r.prototype.computeNormal_=function(e){var t,n,i,s,o,a,l=[0,0,0],c=[0,0,0],u=[0,0,0],h=[0,0,0],d=[0,0,0],f=[null,null,null],p=[null,null,null],m=this.mesh.vHead;t=m.next;for(var v=0;v<3;++v)s=t.coords[v],c[v]=s,p[v]=t,l[v]=s,f[v]=t;for(t=m.next;t!==m;t=t.next)for(var g=0;g<3;++g)s=t.coords[g],s<c[g]&&(c[g]=s,p[g]=t),s>l[g]&&(l[g]=s,f[g]=t);var y=0;if(l[1]-c[1]>l[0]-c[0]&&(y=1),l[2]-c[2]>l[y]-c[y]&&(y=2),c[y]>=l[y]){e[0]=0,e[1]=0,e[2]=1;return}for(a=0,n=p[y],i=f[y],u[0]=n.coords[0]-i.coords[0],u[1]=n.coords[1]-i.coords[1],u[2]=n.coords[2]-i.coords[2],t=m.next;t!==m;t=t.next)h[0]=t.coords[0]-i.coords[0],h[1]=t.coords[1]-i.coords[1],h[2]=t.coords[2]-i.coords[2],d[0]=u[1]*h[2]-u[2]*h[1],d[1]=u[2]*h[0]-u[0]*h[2],d[2]=u[0]*h[1]-u[1]*h[0],o=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],o>a&&(a=o,e[0]=d[0],e[1]=d[1],e[2]=d[2]);a<=0&&(e[0]=e[1]=e[2]=0,e[this.longAxis_(u)]=1)},r.prototype.checkOrientation_=function(){for(var e=this.mesh.fHead,t,n=this.mesh.vHead,i,s=0,o=e.next;o!==e;o=o.next)if(i=o.anEdge,!(i.winding<=0))do s+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==o.anEdge);if(s<0){for(t=n.next;t!==n;t=t.next)t.t=-t.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},r.prototype.projectPolygon_=function(){var e=this.mesh.vHead,t=[0,0,0],n,i,s=!1;t[0]=this.normal[0],t[1]=this.normal[1],t[2]=this.normal[2],!t[0]&&!t[1]&&!t[2]&&(this.computeNormal_(t),s=!0),n=this.sUnit,i=this.tUnit;var o=this.longAxis_(t);n[o]=0,n[(o+1)%3]=1,n[(o+2)%3]=0,i[o]=0,i[(o+1)%3]=0,i[(o+2)%3]=t[o]>0?1:-1;for(var a=e.next;a!==e;a=a.next)a.s=this.dot_(a.coords,n),a.t=this.dot_(a.coords,i);s&&this.checkOrientation_();for(var l=!0,c=e.next;c!==e;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},r.prototype.addWinding_=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.prototype.tessellateMonoRegion_=function(e,t){var n,i;if(n=t.anEdge,!(n.Lnext!==n&&n.Lnext.Lnext!==n))throw"Mono region invalid";for(;We.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;We.vertLeq(n.Org,n.Dst);n=n.Lnext);i=n.Lprev;for(var s=void 0;n.Lnext!==i;)if(We.vertLeq(n.Dst,i.Org)){for(;i.Lnext!==n&&(We.edgeGoesLeft(i.Lnext)||We.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)s=e.connect(i.Lnext,i),i=s.Sym;i=i.Lprev}else{for(;i.Lnext!==n&&(We.edgeGoesRight(n.Lprev)||We.edgeSign(n.Dst,n.Org,n.Lprev.Org)>=0);)s=e.connect(n,n.Lprev),n=s.Sym;n=n.Lnext}if(i.Lnext===n)throw"Mono region invalid";for(;i.Lnext.Lnext!==n;)s=e.connect(i.Lnext,i),i=s.Sym;return!0},r.prototype.tessellateInterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)if(t=n.next,n.inside&&!this.tessellateMonoRegion_(e,n))return!1;return!0},r.prototype.discardExterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)t=n.next,n.inside||e.zapFace(n)},r.prototype.setWindingNumber_=function(e,t,n){for(var i,s=e.eHead.next;s!==e.eHead;s=i)i=s.next,s.Rface.inside!==s.Lface.inside?s.winding=s.Lface.inside?t:-t:n?e.delete(s):s.winding=0},r.prototype.getNeighbourFace_=function(e){return!e.Rface||!e.Rface.inside?-1:e.Rface.n},r.prototype.outputPolymesh_=function(e,t,n,i){var s,o=0,a=0,l;n>3&&e.mergeConvexFaces(n);for(var c=e.vHead.next;c!==e.vHead;c=c.next)c.n=-1;for(var u=e.fHead.next;u!==e.fHead;u=u.next)if(u.n=-1,!!u.inside){s=u.anEdge,l=0;do{var c=s.Org;c.n===-1&&(c.n=a,a++),l++,s=s.Lnext}while(s!==u.anEdge);if(l>n)throw"Face vertex greater that support polygon";u.n=o,++o}this.elementCount=o,t===gn.CONNECTED_POLYGONS&&(o*=2),this.elements=[],this.elements.length=o*n,this.vertexCount=a,this.vertices=[],this.vertices.length=a*i,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=e.vHead.next;c!==e.vHead;c=c.next)if(c.n!==-1){var h=c.n*i;this.vertices[h+0]=c.coords[0],this.vertices[h+1]=c.coords[1],i>2&&(this.vertices[h+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=e.fHead.next;u!==e.fHead;u=u.next)if(!!u.inside){s=u.anEdge,l=0;do{var c=s.Org;this.elements[d++]=c.n,l++,s=s.Lnext}while(s!==u.anEdge);for(var f=l;f<n;++f)this.elements[d++]=-1;if(t===gn.CONNECTED_POLYGONS){s=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(s),s=s.Lnext;while(s!==u.anEdge);for(var p=l;p<n;++p)this.elements[d++]=-1}}},r.prototype.outputContours_=function(e,t){var n,i,s=0,o=0;this.vertexCount=0,this.elementCount=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){i=n=a.anEdge;do this.vertexCount++,n=n.Lnext;while(n!==i);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*t,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;s=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){o=0,i=n=a.anEdge;do this.vertices[l++]=n.Org.coords[0],this.vertices[l++]=n.Org.coords[1],t>2&&(this.vertices[l++]=n.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(n):n.Org.idx,o++,n=n.Lnext;while(n!==i);this.elements[u++]=s,this.elements[u++]=o,s+=o}},r.prototype.addContour=function(e,t){this.mesh===null&&(this.mesh=new Ux),e<2&&(e=2),e>3&&(e=3);for(var n=null,i=0;i<t.length;i+=e)n===null?(n=this.mesh.makeEdge(),this.mesh.splice(n,n.Sym)):(this.mesh.splitEdge(n),n=n.Lnext),n.Org.coords[0]=t[i+0],n.Org.coords[1]=t[i+1],e>2?n.Org.coords[2]=t[i+2]:n.Org.coords[2]=0,n.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(n),n.winding=1,n.Sym.winding=-1},r.prototype.tesselate=function(e,t,n,i,s,o){if(e===void 0&&(e=Wt.ODD),t===void 0&&(t=gn.POLYGONS),o===void 0&&(o=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,s&&(this.normal[0]=s[0],this.normal[1]=s[1],this.normal[2]=s[2]),this.windingRule=e,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),HL.computeInterior(this,o);var a=this.mesh;return t===gn.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),o&&a.check(),t===gn.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,t,n,i),!0},r}();function No(r){var e=r.windingRule,t=e===void 0?Wt.ODD:e,n=r.elementType,i=n===void 0?gn.POLYGONS:n,s=r.polySize,o=s===void 0?3:s,a=r.vertexSize,l=a===void 0?2:a,c=r.normal,u=c===void 0?[0,0,1]:c,h=r.contours,d=h===void 0?[]:h,f=r.strict,p=f===void 0?!0:f,m=r.debug,v=m===void 0?!1:m;if(!d&&p)throw new Error("Contours can't be empty");if(!!d){var g=new jL;r.edgeCreateCallback&&(g.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(g.vertexIdCallback=r.vertexIdCallback);for(var y=0;y<d.length;y++)g.addContour(l||2,d[y]);return g.tesselate(t,i,o,l,u,p),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:v?g.mesh:void 0}}}var X4=Wt.ODD,q4=Wt.NONZERO,Y4=Wt.POSITIVE,K4=Wt.NEGATIVE,Q4=Wt.ABS_GEQ_TWO,Z4=gn.POLYGONS,$4=gn.CONNECTED_POLYGONS,eH=gn.BOUNDARY_CONTOURS;var Rc=class extends we{constructor(e,t=12,n=100,i={}){super();this.type="ShapeGeometry";this.windingRule=Wt.ODD;this.elementType=gn.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._drawCount=0,this._shape=e,this._curveSegments=t,this._maxCount=n,this._maxDrawCount=n*3,this._triangulationOptions=Object.assign({windingRule:Wt.ODD,elementType:gn.POLYGONS,polySize:3,vertexSize:2,strict:!0},i),this._positionAttribute=new Re(new Float32Array(n*3),3),this._normalAttribute=new Re(new Float32Array(n*3),3),this._uvAttribute=new Re(new Float32Array(n*2),2),this._indexAttribute=new Re(new Uint32Array(n*3),1),this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.updateFromShape()}copy(e){return this._drawCount=e.drawCount,this._maxDrawCount=e._maxDrawCount,this._maxCount=e.maxCount,super.copy(e)}get curveSegments(){return this._curveSegments}set curveSegments(e){this._curveSegments=e,this.updateFromShape()}get drawCount(){return this._drawCount}get maxDrawCount(){return this._maxDrawCount}get maxCount(){return this._maxCount}updateFromShape(){let e=this._shape.extractShapePointsToFlatArray([],this._curveSegments),t=this._shape.shapeHoles.map(l=>l.extractShapePointsToFlatArray([],this._curveSegments)),n,i=!0,s=!0,o,a;for(let l=0,c=e.length/2;l<c;l++){let u=l*2,h=e[u+0],d=e[u+1];if(o!==void 0&&h!==o&&(i=!1),a!==void 0&&d!==a&&(s=!1),o=h,a=d,!i&&!s)break}if(!i&&!s&&(n=No({contours:[e,...t],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})),this._positionAttribute.array.fill(0),this._normalAttribute.array.fill(0),this._uvAttribute.array.fill(0),this._indexAttribute.array.fill(0),this._drawCount=0,n){let l=1/0,c=-1/0,u=1/0,h=-1/0;for(let p=0,m=n.vertexCount;p<m;p++){let v=p*2,g=n.vertices[v+0],y=n.vertices[v+1];g<l&&(l=g),g>c&&(c=g),y<u&&(u=y),y>h&&(h=y)}let d=c-l,f=h-u;for(let p=0,m=n.vertexCount;p<m;p++){let v=p*2,g=n.vertices[v+0],y=n.vertices[v+1],x=(g-l)/d,b=(y-u)/f;this._positionAttribute.setXYZ(p,g,y,0),this._normalAttribute.setXYZ(p,0,0,1),this._uvAttribute.setXY(p,x,b)}for(let p=0,m=n.elementCount;p<m;p++){let v=p*3,g=n.elements[v+0],y=n.elements[v+1],x=n.elements[v+2];this._indexAttribute.setX(v+0,g),this._indexAttribute.setX(v+1,y),this._indexAttribute.setX(v+2,x),this._drawCount+=3}}return this._positionAttribute.needsUpdate=!0,this._normalAttribute.needsUpdate=!0,this._uvAttribute.needsUpdate=!0,this._indexAttribute.needsUpdate=!0,this.setDrawRange(0,this._drawCount),this._drawCount>this._maxDrawCount}};var Rh=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let n=e*Rh.eSize;this.buffer=new ArrayBuffer(n);let i=Float32Array.BYTES_PER_ELEMENT,s=0;this.positions=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.normals=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.uvs=new Float32Array(this.buffer,s*i,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let n=e*Rh.eSize,i=new ArrayBuffer(n),s=Float32Array.BYTES_PER_ELEMENT,o=0,a=new Float32Array(i,o*s,3*e);o+=3*e;let l=new Float32Array(i,o*s,3*e);o+=3*e;let c=new Float32Array(i,o*s,2*e);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=i,this.positions=a,this.normals=l,this.uvs=c,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let i=this.capacity;for(;t>i;)i*=2;this.realloc(i)}let n=this.size;return this.size=t,n}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Dh=Rh;Dh.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var pm=(r,e)=>([t,n])=>(n<t&&(n+=e),(r>=t?r:r+e)<=n),mm=class extends we{constructor(e,t,n=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,n<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(n,t/2-1e-12),this._bevelSegments=Math.floor(s));let o=this._shape.extractShapePointsToFlatArray([],i),a=this._shape.shapeHoles.map(_=>{let S=_.extractShapePointsToFlatArray([],i),A=[];for(let T=S.length-1;T>=1;T-=2){let L=S[T-1],C=S[T-0];A.push(L,C)}return A}),l=No({windingRule:Wt.ODD,elementType:gn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[o]}),c=No({windingRule:Wt.ODD,elementType:gn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let _=0;_<c.elements.length;_++){let S=c.elements[_],A=_%2==0?l.vertexCount:0;l.elements.push(S+A)}for(let _=0;_<c.vertexIndices.length;_++){let S=c.vertexIndices[_],A=l.vertexCount;l.vertexIndices.push(S+A)}for(let _=0;_<c.vertices.length;_++){let S=c.vertices[_];l.vertices.push(S)}}let h=1/0,d=-1/0,f=1/0,p=-1/0;for(let _=0,S=l.vertexCount;_<S;_++){let A=_*2,T=l.vertices[A+0],L=l.vertices[A+1];T<h&&(h=T),T>d&&(d=T),L<f&&(f=L),L>p&&(p=L)}this._minX=h,this._minY=f,this._width=d-h,this._height=p-f;let m=l.vertexCount*2*(2+this._bevelSegments);this._buffer=new Dh(m);let v=[],g=[];for(let _=l.elementCount-1,S=l.elementCount;_>=0;_--){let A=_>=u,T=_*2,L=l.elements[T+0],C=l.elements[T+1],U=L+C,P={start:L,count:C,normals:[],continuous:[],concave:[]},R=L,G=U-1,B=L+1,j=this._shape.roundedCurves.length;do{let z=R-L,D=l.vertices[G*2+0],K=l.vertices[G*2+1],q=l.vertices[R*2+0],ee=l.vertices[R*2+1],V=l.vertices[B*2+0],de=l.vertices[B*2+1],ae=q-D,te=ee-K,X=Math.sqrt(ae*ae+te*te);ae/=X,te/=X;let se=q-V,$=ee-de,H=Math.sqrt(se*se+$*$);se/=H,$/=H,P.normals[z*2+0]=-$,P.normals[z*2+1]=se,P.concave[z]=ae*$-te*se>0;let Q=l.vertexIndices[R];if(Array.isArray(Q))P.continuous[z]=!1;else{let[ce,ie]=this._shape.getCurveIndexFromVertexId(Q-1,!0);if(ie>0&&ie<1)P.continuous[z]=!0;else{let N=ie===1?ce+1:ce-1;N=(N+j)%j;let E=ie===1?0:1,Y=this._shape.roundedCurves[ce].getTangent(ie),re=this._shape.roundedCurves[N].getTangent(E);P.continuous[z]=Y.dot(re)>.95}}A&&(P.normals[z*2+0]*=-1,P.normals[z*2+1]*=-1),[G,R,B]=[R,B,B+1],B>=U&&(B-=C)}while(B!==L+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(L*2,U*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((z,D)=>[D,D]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(L*2,U*2)});for(let z=1;z<=this._bevelSegments;z++){let D=z/this._bevelSegments*Math.PI/2,K=(1-Math.cos(D))*this._bevelSize,q=[],ee=[],V=[],de=[],ae=0;for(let X=0;X<C;X++){let se=X*2,$=(X-1+C)%C*2,H=l.vertices[P.start*2+se+0],Q=l.vertices[P.start*2+se+1],ce=-P.normals[$+0]*K,ie=-P.normals[$+1]*K,N=-P.normals[se+0]*K,E=-P.normals[se+1]*K;if(P.concave[X]||!P.concave[X]&&A){let Y=Math.atan2(ie,ce),re=Math.atan2(E,N);re>Y&&(re-=Math.PI*2);let ye=re-Y;if(P.continuous[X]||A){let pe=Y+ye/2,Ie=Math.cos(pe)*K,ve=Math.sin(pe)*K;q[2*ae+0]=H+Ie*(A?-1:1),q[2*ae+1]=Q+ve*(A?-1:1),de[ae]=X,ae++}else{let pe=Math.max(1,Math.floor(i/4*Math.abs(ye)/Math.PI));for(let Ie=0;Ie<=pe;Ie++){let ve=Y+ye*(Ie/pe),Fe=Math.cos(ve)*K,Ce=Math.sin(ve)*K;q[2*ae+0]=H+Fe,q[2*ae+1]=Q+Ce,de[ae]=X,ae++}}}else q[2*ae+0]=H+ce,q[2*ae+1]=Q+ie,de[ae]=X,ee[X]=ae,ae++,q[2*ae+0]=H,q[2*ae+1]=Q,de[ae]=X,ae++,q[2*ae+0]=H+N,q[2*ae+1]=Q+E,de[ae]=X,V[X]=ae,ae++}let te=No({windingRule:Wt.POSITIVE,elementType:gn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[q],edgeCreateCallback:X=>{let $=X.Org.idx,H=de[$],Q=de[($+1)%de.length];X.idx=[H,Q],X.Sym.idx=[Q,H]},vertexIdCallback:X=>{let se=X.Lprev.idx;return[se?se[1]:0,X.idx[0]]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!te.vertexCount)break;for(let X=0;X<te.vertexIndices.length;X++){let[se,$]=te.vertexIndices[X];if(se===$)continue;let H=$;$<se&&(H+=C);for(let Q=se;Q<H;Q++){let ce=Q%C,ie=(Q+1)%C;if(!P.continuous[ce]||!P.continuous[ie]){te.vertexIndices[X]=[se,ce],te.vertexIndices.splice(X+1,0,[ie,$]),te.vertices.splice((X+1)*2,0,te.vertices[X*2],te.vertices[X*2+1]);break}}}ne.push({bevelI:z,angle:D,size:K,boundary:te,reverseMap:de,insetPoints:q})}let le=(z,D,K)=>{let q=0,ee=z.boundary.vertexIndices.length;for(;q<ee&&K(z.boundary.vertexIndices[D]);)D=(D+1)%ee,q++;return q},W=v.length;for(let z=1;z<ne.length;z++){let D=ne[z-1],K=ne[z],q=D.boundary.vertexIndices.length,ee=K.boundary.vertexIndices.length;if(!q||!ee)break;let V=P.concave.length,de=0,ae=pm(de,C);for(;!D.boundary.vertexIndices.filter(ae).length||!K.boundary.vertexIndices.filter(ae).length;)de++,ae=pm(de,C);let te=D.boundary.vertexIndices.findIndex(ae),X=K.boundary.vertexIndices.findIndex(ae);do te=(te+1)%q;while(ae(D.boundary.vertexIndices[te]));do X=(X+1)%ee;while(ae(K.boundary.vertexIndices[X]));de=(de+1)%C;let se=de,$=this.buildBevelVert(P,D,(te-1+q)%q),H=this.buildBevelVert(P,K,(X-1+ee)%ee),Q=$,ce=H,ie,N,E=!1;do{ae=pm(de,C);let Y=le(D,te,ae),re=le(K,X,ae),ye=E;if(E=!1,Y&&!re){for(let pe=0;pe<Y;pe++)ie=this.buildBevelVert(P,D,(te+pe)%q,pe/(Y-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ie.bottomP,Q.bottomN,ce.bottomN),Q=ie;E=!0}else if(!Y&&re)for(let pe=0;pe<re;pe++)N=this.buildBevelVert(P,K,(X+pe)%ee,pe/(re-1)),v.push(ce.topN,Q.topP,N.topP),v.push(Q.bottomP,ce.bottomN,N.bottomP),ce=N;else if(Y&&re)if(ie=this.buildBevelVert(P,D,te,0),N=this.buildBevelVert(P,K,X,0),ye?(v.push(Q.topN,N.topP,ce.topN),v.push(Q.topN,ie.topP,N.topP),v.push(N.bottomP,Q.bottomN,ce.bottomN),v.push(ie.bottomP,Q.bottomN,N.bottomP)):(v.push(Q.topN,ie.topP,ce.topN),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,Q.bottomN,ce.bottomN),v.push(ie.bottomP,ce.bottomN,N.bottomP)),Q=ie,ce=N,Y===re)for(let pe=1;pe<Y;pe++)ie=this.buildBevelVert(P,D,(te+pe)%q,pe/(Y-1)),N=this.buildBevelVert(P,K,(X+pe)%ee,pe/(re-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,Q.bottomN,ce.bottomN),v.push(ie.bottomP,ce.bottomN,N.bottomP),Q=ie,ce=N;else if(Y>re){let pe=Y/re,Ie=0;for(let ve=1;ve<Y;ve++)ie=this.buildBevelVert(P,D,(te+ve)%q,ve/(Y-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ie.bottomP,Q.bottomN,ce.bottomN),Q=ie,ve>(Ie+1)*pe&&(Ie++,N=this.buildBevelVert(P,K,(X+Ie)%ee,Ie/(re-1)),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,ce.bottomN,N.bottomP),ce=N)}else{let pe=re/Y,Ie=0;for(let ve=1;ve<re;ve++)N=this.buildBevelVert(P,K,(X+ve)%ee,ve/(re-1)),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,ce.bottomN,N.bottomP),ce=N,ve>(Ie+1)*pe&&(Ie++,ie=this.buildBevelVert(P,D,(te+Ie)%q,Ie/(Y-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ie.bottomP,Q.bottomN,ce.bottomN),Q=ie)}te=(te+Y)%q,X=(X+re)%ee,de=(de+1)%V}while(de!==se)}{let z=ne[0];for(let D=0,K=z.boundary.vertexCount;D<K;D++){let q=this.buildBevelVert(P,z,D),ee=this.buildBevelVert(P,z,(D+1)%K);v.push(ee.topP,q.topN,q.bottomN),v.push(ee.topP,q.bottomN,ee.bottomP)}}if(A){let z=[];for(let D=v.length-1;D>=W+2;D-=3){let K=v[D-2],q=v[D-1],ee=v[D-0];z.push(ee,q,K)}v.splice(W,v.length-W,...z)}if(A){let z=[];for(let D=ne[ne.length-1].boundary.vertices.length-1;D>=1;D-=2){let K=ne[ne.length-1].boundary.vertices[D-1],q=ne[ne.length-1].boundary.vertices[D-0];z.push(K,q)}g.push(z)}if(!A){let z=ne[ne.length-1],D=No({windingRule:ne.length>1?Wt.POSITIVE:Wt.ODD,elementType:gn.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...g]});if(!D)throw new Error("Error generating geometry for surface");for(let K=0;K<D.elementCount*3;K+=3){let q=this.buildSurfaceVert(D,D.elements[K+0]),ee=this.buildSurfaceVert(D,D.elements[K+1]),V=this.buildSurfaceVert(D,D.elements[K+2]);v.push(q.top,ee.top,V.top),v.push(V.bottom,ee.bottom,q.bottom)}}this.vertexCache={}}this._buffer.shrink();let y=new Re(Uint32Array.from(v),1),x=new Re(this._buffer.positions,3),b=new Re(this._buffer.normals,3),w=new Re(this._buffer.uvs,2);x.needsUpdate=!0,b.needsUpdate=!0,w.needsUpdate=!0,y.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",b),this.setAttribute("uv",w),this.setIndex(y)}buildSurfaceVert(e,t){let n=t.toString();if(n in this.vertexCache)return this.vertexCache[n];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],o=(i-this._minX)/this._width,a=(s-this._minY)/this._height,l=this._buffer.get(2),c=l*3,u=l*2,h={top:l+0,bottom:l+1};return this._buffer.positions[c+0]=i,this._buffer.positions[c+1]=s,this._buffer.positions[c+2]=this._depth,this._buffer.normals[c+0]=0,this._buffer.normals[c+1]=0,this._buffer.normals[c+2]=1,this._buffer.uvs[u+0]=o,this._buffer.uvs[u+1]=a,this._buffer.positions[c+3]=i,this._buffer.positions[c+4]=s,this._buffer.positions[c+5]=0,this._buffer.normals[c+3]=0,this._buffer.normals[c+4]=0,this._buffer.normals[c+5]=-1,this._buffer.uvs[u+2]=o,this._buffer.uvs[u+3]=a,this.vertexCache[n]=h,h}buildBevelVert(e,t,n,i=1){let s=`${t.bevelI}:${n}`;if(s in this.vertexCache)return this.vertexCache[s];let[o,a]=t.boundary.vertexIndices[n],l,c,u,h;o!==a?(c=o,l=a,h=!1,u=e.continuous[c]&&e.continuous[l]):(l=o,c=(l-1+e.count)%e.count,h=e.concave[l]&&t.bevelI>0,u=e.continuous[l]||h);let d=Math.cos(t.angle),f=Math.sin(t.angle),p=n*2,m=l*2,v=c*2,g=t.boundary.vertices[p+0],y=t.boundary.vertices[p+1],x=(1-f)*this._bevelSize,b=(g-this._minX)/this._width,w=(y-this._minY)/this._height,_=e.normals[m+0],S=e.normals[m+1],A=e.normals[v+0],T=e.normals[v+1];if(h){let R=A-_,G=T-S;_=_+R*(1-i),S=S+G*(1-i);let B=Math.sqrt(_*_+S*S);_/=B,S/=B}let L=this._buffer.get(u?2:4),C=L*3,U=L*2,P={i:n,fi:l,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=g,this._buffer.positions[C+1]=y,this._buffer.positions[C+2]=this._depth-x,this._buffer.normals[C+0]=_*d,this._buffer.normals[C+1]=S*d,this._buffer.normals[C+2]=f,this._buffer.uvs[U+0]=b,this._buffer.uvs[U+1]=w,this._buffer.positions[C+3]=g,this._buffer.positions[C+4]=y,this._buffer.positions[C+5]=x,this._buffer.normals[C+3]=_*d,this._buffer.normals[C+4]=S*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[U+2]=w,this._buffer.uvs[U+3]=b,u||(L+=2,C+=6,U+=4,P.topP=L+0,P.bottomP=L+1,this._buffer.positions[C+0]=g,this._buffer.positions[C+1]=y,this._buffer.positions[C+2]=this._depth-x,this._buffer.normals[C+0]=A*d,this._buffer.normals[C+1]=T*d,this._buffer.normals[C+2]=f,this._buffer.uvs[U+0]=b,this._buffer.uvs[U+1]=w,this._buffer.positions[C+3]=g,this._buffer.positions[C+4]=y,this._buffer.positions[C+5]=x,this._buffer.normals[C+3]=A*d,this._buffer.normals[C+4]=T*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[U+2]=w,this._buffer.uvs[U+3]=b),this.vertexCache[s]=P,P}};var Pn=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var c,u,h,d,f,p,m;let t=Object.assign({},(c=e==null?void 0:e.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeDepth:0,surfaceMaxCount:100,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters),n=Math.abs(t.width),i=Math.abs((u=t.height)!=null?u:t.width),s=Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(h=t.depth)!=null?h:0),o=(d=r.shape)!=null?d:e==null?void 0:e.shape,a=(f=o==null?void 0:o.roundness)!=null?f:t.roundness;o!==void 0&&(o instanceof Lt?(o.width!==n||o.height!==i)&&o.applySize(n,i):o=new Lt(n,i).fromJSON(o),((p=r.parameters)==null?void 0:p.roundness)!==void 0&&((m=r.parameters)==null?void 0:m.roundness)>0&&o.update(!1));let l=o!=null?o:new Lt(n,i);return{parameters:Object.assign(t,{width:n,height:i,depth:s,extrudeDepth:s,roundness:a}),shape:l}}static build(r){let{extrudeDepth:e,extrudeBevelSize:t,extrudeBevelSegments:n,subdivisions:i,roundness:s,surfaceMaxCount:o}=r.parameters;r.shape.roundness=s;let a;return e<=0?a=new Rc(r.shape,i,o):a=new mm(r.shape,e,t,i,n),Object.assign(a,{userData:tt(Ue({},r),{type:"VectorGeometry"})})}};var jx=Math.PI*2,Wx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,spikes:128,angle:360,innerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,surfaceMaxCount:1e3},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((s=t.height)!=null?s:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(o=t.depth)!=null?o:0)})}}static build(r){let{width:e,height:t,spikes:n,angle:i,innerRadius:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l,surfaceMaxCount:c}=r.parameters,u=r.shape,h=e*.5,d=t*.5,f=WL(u,h,d,i*Math.PI/180,n,s);u.isClosed=!0,u.update();let p=Pn.create({shape:u,parameters:{subdivisions:f,surfaceMaxCount:c,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(p,{userData:tt(Ue({},r),{type:"EllipseGeometry"})})}};function WL(r,e,t,n,i,s){if(n>=jx)return i>30||i%4==0?(XL(r,e,t,s),Math.round(i/4)):Jx(r,n,i,e,t,s);let o={x:0,y:t},a=n+Math.PI*.5,l={x:Math.cos(a)*e,y:Math.sin(a)*t},c=Gx({px:o.x,py:o.y,cx:l.x,cy:l.y,rx:e,ry:t,largeArcFlag:n>Math.PI,sweepFlag:!0});return i>30||i%c.length==0?JL(r,o.x,o.y,c,i,e,t,s):Jx(r,n,i,e,t,s)}function JL(r,e,t,n,i,s,o,a){let l=Math.round(i/n.length);r.addPoint($a(e,t));for(let c=0,u=n.length;c<u;c++){let h=n[c],d=r.points[c],f=$a(h.x,h.y);d.controls[1].position.set(h.x1,h.y1),f.controls[0].position.set(h.x2,h.y2),r.addPoint(f)}return a>0?Xx(r,s,o,a):r.addPoint($a(0,0)),l}function Jx(r,e,t,n,i,s){let o=-e/t;for(let a=0;a<=t;a++){let l=o*a,c=Math.sin(l)*n,u=Math.cos(l)*i;r.addPoint($a(c,u))}return e<jx?s>0?Xx(r,n,i,s):r.addPoint($a(0,0)):(r.removePoint(r.points[r.points.length-1]),s>0&&qx(r,n,i,s)),1}function XL(r,e,t,n=0,i=0,s=0){let o=.5522847498,a=e*o,l=t*o;r.addPoint(Bh(i-e,s,i-e,s-l,i-e,s+l)),r.addPoint(Bh(i,s+t,i-a,s+t,i+a,s+t)),r.addPoint(Bh(i+e,s,i+e,s+l,i+e,s-l)),r.addPoint(Bh(i,s-t,i+a,s-t,i-a,s-t)),n>0&&qx(r,e,t,n)}function $a(r,e){return new vs(Ee.generateUUID(),new O(r,e))}function Bh(r,e,t,n,i,s){let o=$a(r,e);return o.controls[0].position.set(t,n),o.controls[1].position.set(i,s),o}function Xx(r,e,t,n){Yx(r,e,t,n).forEach(s=>r.addPoint(s))}function qx(r,e,t,n){let i=Yx(r,e,t,n),s=new Lt;i.forEach(o=>s.addPoint(o)),s.isClosed=!0,r.shapeHoles.push(s)}function Yx(r,e,t,n){let i=n*e/100,s=i*(Math.abs(t)/Math.abs(e)),o=new O(i/e,s/t),a=r.points.map(l=>l.clone()).reverse();return a.forEach(l=>{l.position.multiply(o);let c=l.controls[0].position.clone().multiply(o),u=l.controls[1].position.clone().multiply(o);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),a}var Kx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var a,l,c;let t=Object.assign({},(a=e==null?void 0:e.parameters)!=null?a:{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},r.parameters),n=Math.abs(t.width),i=Math.abs((l=t.height)!=null?l:n),s=Math.abs((c=t.depth)!=null?c:n),o=Math.abs(Math.min(n,s))/2;return{parameters:Object.assign(t,{width:n,height:i,depth:s,radius:o,segments:Math.round(t.segments),pathSegments:Math.round(t.pathSegments),cornerSegments:Math.round(t.cornerSegments)})}}static build(r){let{width:e,height:t,depth:n,radius:i,revolutions:s,segments:o,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:h}=r.parameters,d=new Oh(!1,e,t,n,i,s,o,a,l,c,u,h);return Object.assign(d,{userData:tt(Ue({},r),{type:"HelixGeometry"})})}},Oh=class extends we{constructor(e,t,n,i,s,o,a,l,c,u,h,d){super();let f=e&&o===1;f&&(d=0),h>100&&(h=100);let p=()=>new M,m=new M,v=p(),g=p(),y=p(),x,b,w,_,S,A,T,L,C=p(),U=p(),P=p(),R=p(),G=p(),B=p(),j=p(),ne=p(),le=n-2*l+.001,W=le/o,z=Math.ceil(a*o),D=z+1,K=le/z,q=-le/2,ee=u+1,V=2*Math.PI/u,de=Math.PI/2/d,ae=.01,te=Math.min((1-h/100)*l,l-ae),X=l-te,se=0,$=2,H=d*$+$,Q=ee*H/$,ce=Q+ee*D,ie=ee*(D+H),[N,E,Y]=[3,3,2].map(ke=>Array(ie*ke).fill(0)),re=[],ye=s-l;function pe(ke,ht){let ft=Math.PI/2;A=ht*K,L=2*Math.PI*(A%W)/W+ft,A+=q,T=Math.sin(L)*ye,S=Math.cos(L)*ye,e?ke.set(S,T,A):ke.set(S,A,T)}pe(m,-1e-10),pe(v,0),C.copy(m),pe(m,1);let Ie=m.distanceTo(v),ve=X+te,Fe=Ie*z+2*ve,Ce=te,J=Fe-ve;for(let ke=0;ke<=z;ke++){pe(g,ke),ne.subVectors(g,C).normalize(),C.copy(g),B.copy(g).setComponent(+e+1,0).normalize(),j.crossVectors(ne,B).normalize();let ht=ke===0,ft=ke===z,Bn=ht?3*Math.PI/2:de,Mt=ht?Ce:J,Tn=ht?ee:ce,En=ht?0:ie-ee,Di=ne.clone().multiplyScalar(ht?-X:X).add(g),_r=ne.clone().multiplyScalar(ht?-1:1).normalize();for(let xn=0;xn<ee;xn++){let F=xn*V;if(U.addVectors(m.copy(B).multiplyScalar(l*Math.cos(F)),v.copy(j).multiplyScalar(l*Math.sin(F))),P.copy(U).normalize(),ht||ft){f||(se=En+xn,[0,1,2].forEach(Pe=>{N[se*3+Pe]=Di.getComponent(Pe),E[se*3+Pe]=_r.getComponent(Pe)}),Y[se*2]=+ft,Y[se*2+1]=xn/u),v.copy(P).multiplyScalar(te),y.addVectors(g,v);for(let Pe=0;Pe<d;Pe++){let et=Pe*de+Bn;R.addVectors(m.copy(ne).multiplyScalar(X*Math.sin(et)),v.copy(P).multiplyScalar(X*Math.cos(et))),G.copy(R).normalize(),v.addVectors(y,R),R.normalize(),se=Tn+Pe*ee+xn,[0,1,2].forEach(Nn=>{N[se*3+Nn]=v.getComponent(Nn),E[se*3+Nn]=G.getComponent(Nn)});let Ft=+ht+Math.sin(et);Y[se*2]=(Mt+X*Ft)/Fe,Y[se*2+1]=xn/u}}v.addVectors(g,U),se=Q+ke*ee+xn,[0,1,2].forEach(Pe=>{N[se*3+Pe]=v.getComponent(Pe),E[se*3+Pe]=P.getComponent(Pe)}),Y[se*2]=(ve+ke*Ie)/Fe,Y[se*2+1]=xn/u}}let xe=D+2*d+$,he=1,[Ne,Be]=f?[he,he+D-1]:[0,xe-1];for(let ke=Ne;ke<=Be-1;ke++){let ht=f&&ke===Be-1;for(let ft=0;ft<ee-1;ft++)x=ke*ee+ft,b=x+1,w=(ht?ft:x)+ee,_=(ht?ft+1:b)+ee,ke===0?re.push(b,_,w):ke===xe-2?re.push(x,b,w):re.push(x,b,w,b,_,w)}this.setIndex(re),this.setAttribute("position",new ge(N,3)),this.setAttribute("normal",new ge(E,3)),this.setAttribute("uv",new ge(Y,2))}};var Qx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new Fh(e*.5,s,o):new co(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:tt(Ue({},r),{type:"IcosahedronGeometry"})})}},Fh=class extends Eo{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],o=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(s,o,a,e,t,n);this.type=a}static fromJSON(e){return new Fh(e.radius,e.corner,e.cornerSides)}};var Zx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s,o,a;((i=(n=r.parameters)==null?void 0:n.points)!=null?i:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let t=Object.assign({},(s=e==null?void 0:e.parameters)!=null?s:{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width),depth:Math.abs((a=t.depth)!=null?a:t.width)})}}static build(r){let{points:e,segments:t,verticalSegments:n}=r.parameters,i=new yi;i.moveTo(e[0].x,e[0].y),i.bezierCurveTo(e[1].x,e[1].y,e[2].x,e[2].y,e[3].x,e[3].y);let s=new uo(i.extractPoints(n).shape,t);return s.rotateZ(Math.PI),Object.assign(s,{userData:tt(Ue({},r),{type:"LatheGeometry"})})}};var fr=new me,gm=new Ke,zh=new M,Co=class extends cn{constructor(){super();this.uuid=Ee.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(e){let t=new Dt().getNormalMatrix(e);for(let n=0,i=this.vertices.length;n<i;n++)this.vertices[n].applyMatrix4(e);for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];s.normal.applyMatrix3(t).normalize();for(let o=0,a=s.vertexNormals.length;o<a;o++)s.vertexNormals[o].applyMatrix3(t).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return fr.makeRotationX(e),this.applyMatrix4(fr),this}rotateY(e){return fr.makeRotationY(e),this.applyMatrix4(fr),this}rotateZ(e){return fr.makeRotationZ(e),this.applyMatrix4(fr),this}translate(e,t,n){return fr.makeTranslation(e,t,n),this.applyMatrix4(fr),this}scale(e,t,n){return fr.makeScale(e,t,n),this.applyMatrix4(fr),this}lookAt(e){return gm.lookAt(e),gm.updateMatrix(),this.applyMatrix4(gm.matrix),this}fromBufferGeometry(e){let t=this,n=e.index!==null?e.index:void 0,i=e.attributes;if(i.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let s=i.position,o=i.normal,a=i.color,l=i.uv,c=i.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<s.count;d++)t.vertices.push(new M().fromBufferAttribute(s,d)),a!==void 0&&t.colors.push(new fe().fromBufferAttribute(a,d));function u(d,f,p,m){let v=a===void 0?[]:[t.colors[d].clone(),t.colors[f].clone(),t.colors[p].clone()],g=o===void 0?[]:[new M().fromBufferAttribute(o,d),new M().fromBufferAttribute(o,f),new M().fromBufferAttribute(o,p)],y=new Bc(d,f,p,g,v,m);t.faces.push(y),l!==void 0&&t.faceVertexUvs[0].push([new O().fromBufferAttribute(l,d),new O().fromBufferAttribute(l,f),new O().fromBufferAttribute(l,p)]),c!==void 0&&t.faceVertexUvs[1].push([new O().fromBufferAttribute(c,d),new O().fromBufferAttribute(c,f),new O().fromBufferAttribute(c,p)])}let h=e.groups;if(h.length>0)for(let d=0;d<h.length;d++){let f=h[d],p=f.start,m=f.count;for(let v=p,g=p+m;v<g;v+=3)n!==void 0?u(n.getX(v),n.getX(v+1),n.getX(v+2),f.materialIndex):u(v,v+1,v+2,f.materialIndex)}else if(n!==void 0)for(let d=0;d<n.count;d+=3)u(n.getX(d),n.getX(d+1),n.getX(d+2));else for(let d=0;d<s.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(zh).negate(),this.translate(zh.x,zh.y,zh.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,n=t===0?1:1/t,i=new me;return i.set(n,0,0,-n*e.x,0,n,0,-n*e.y,0,0,n,-n*e.z,0,0,0,1),this.applyMatrix4(i),this}computeFaceNormals(){let e=new M,t=new M;for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=this.vertices[s.a],a=this.vertices[s.b],l=this.vertices[s.c];e.subVectors(l,a),t.subVectors(o,a),e.cross(t),e.normalize(),s.normal.copy(e)}}computeVertexNormals(e=!0){let t=new Array(this.vertices.length);for(let n=0,i=this.vertices.length;n<i;n++)t[n]=new M;if(e){let n=new M,i=new M;for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=this.vertices[a.a],c=this.vertices[a.b],u=this.vertices[a.c];n.subVectors(u,c),i.subVectors(l,c),n.cross(i),t[a.a].add(n),t[a.b].add(n),t[a.c].add(n)}}else{this.computeFaceNormals();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];t[s.a].add(s.normal),t[s.b].add(s.normal),t[s.c].add(s.normal)}}for(let n=0,i=this.vertices.length;n<i;n++)t[n].normalize();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=s.vertexNormals;o.length===3?(o[0].copy(t[s.a]),o[1].copy(t[s.b]),o[2].copy(t[s.c])):(o[0]=t[s.a].clone(),o[1]=t[s.b].clone(),o[2]=t[s.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let n=this.faces[e],i=n.vertexNormals;i.length===3?(i[0].copy(n.normal),i[1].copy(n.normal),i[2].copy(n.normal)):(i[0]=n.normal.clone(),i[1]=n.normal.clone(),i[2]=n.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.__originalFaceNormal?i.__originalFaceNormal.copy(i.normal):i.__originalFaceNormal=i.normal.clone(),i.__originalVertexNormals||(i.__originalVertexNormals=[]);for(let s=0,o=i.vertexNormals.length;s<o;s++)i.__originalVertexNormals[s]?i.__originalVertexNormals[s].copy(i.vertexNormals[s]):i.__originalVertexNormals[s]=i.vertexNormals[s].clone()}let e=new Co;e.faces=this.faces;for(let t=0,n=this.morphTargets.length;t<n;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let s=this.morphNormals[t].faceNormals,o=this.morphNormals[t].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new M,u={a:new M,b:new M,c:new M};s.push(c),o.push(u)}}let i=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=i.faceNormals[s],c=i.vertexNormals[s];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.normal=i.__originalFaceNormal,i.vertexNormals=i.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new tn),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ti),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,n=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let i,s=this.vertices.length,o=this.vertices,a=e.vertices,l=this.faces,c=e.faces,u=this.colors,h=e.colors;t!==void 0&&(i=new Dt().getNormalMatrix(t));for(let d=0,f=a.length;d<f;d++){let m=a[d].clone();t!==void 0&&m.applyMatrix4(t),o.push(m)}for(let d=0,f=h.length;d<f;d++)u.push(h[d].clone());for(let d=0,f=c.length;d<f;d++){let p=c[d],m,v,g=p.vertexNormals,y=p.vertexColors,x=new Bc(p.a+s,p.b+s,p.c+s);x.normal.copy(p.normal),i!==void 0&&x.normal.applyMatrix3(i).normalize();for(let b=0,w=g.length;b<w;b++)m=g[b].clone(),i!==void 0&&m.applyMatrix3(i).normalize(),x.vertexNormals.push(m);x.color.copy(p.color);for(let b=0,w=y.length;b<w;b++)v=y[b],x.vertexColors.push(v.clone());x.materialIndex=p.materialIndex+n,l.push(x)}for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,v=p.length;m<v;m++){let g=p[m],y=[];for(let x=0,b=g.length;x<b;x++)y.push(g[x].clone());this.faceVertexUvs[d].push(y)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},n=[],i=[],s=Math.pow(10,e);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],h=Math.round(u.x*s)+"_"+Math.round(u.y*s)+"_"+Math.round(u.z*s);t[h]===void 0?(t[h]=l,n.push(this.vertices[l]),i[l]=n.length-1):i[l]=i[t[h]]}let o=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=i[u.a],u.b=i[u.b],u.c=i[u.c];let h=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(h[d]===h[(d+1)%3]){o.push(l);break}}for(let l=o.length-1;l>=0;l--){let c=o[l];this.faces.splice(c,1);for(let u=0,h=this.faceVertexUvs.length;u<h;u++)this.faceVertexUvs[u].splice(c,1)}let a=this.vertices.length-n.length;return this.vertices=n,a}setFromPoints(e){this.vertices=[];for(let t=0,n=e.length;t<n;t++){let i=e[t];this.vertices.push(new M(i.x,i.y,i.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let l=0;l<t;l++)e[l]._id=l;function n(l,c){return l.materialIndex-c.materialIndex}e.sort(n);let i=this.faceVertexUvs[0],s=this.faceVertexUvs[1],o,a;i&&i.length===t&&(o=[]),s&&s.length===t&&(a=[]);for(let l=0;l<t;l++){let c=e[l]._id;o&&o.push(i[c]),a&&a.push(s[c])}o&&(this.faceVertexUvs[0]=o),a&&(this.faceVertexUvs[1]=a)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.parameters!==void 0){let p=this.parameters;for(let m in p)p[m]!==void 0&&(e[m]=p[m]);return e}let t=[];for(let p=0;p<this.vertices.length;p++){let m=this.vertices[p];t.push(m.x,m.y,m.z)}let n=[],i=[],s={},o=[],a={},l=[],c={};for(let p=0;p<this.faces.length;p++){let m=this.faces[p],v=!0,g=!1,y=this.faceVertexUvs[0][p]!==void 0,x=m.normal.length()>0,b=m.vertexNormals.length>0,w=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,S=0;if(S=u(S,0,0),S=u(S,1,v),S=u(S,2,g),S=u(S,3,y),S=u(S,4,x),S=u(S,5,b),S=u(S,6,w),S=u(S,7,_),n.push(S),n.push(m.a,m.b,m.c),n.push(m.materialIndex),y){let A=this.faceVertexUvs[0][p];n.push(f(A[0]),f(A[1]),f(A[2]))}if(x&&n.push(h(m.normal)),b){let A=m.vertexNormals;n.push(h(A[0]),h(A[1]),h(A[2]))}if(w&&n.push(d(m.color)),_){let A=m.vertexColors;n.push(d(A[0]),d(A[1]),d(A[2]))}}function u(p,m,v){return v?p|1<<m:p&~(1<<m)}function h(p){let m=p.x.toString()+p.y.toString()+p.z.toString();return s[m]!==void 0||(s[m]=i.length/3,i.push(p.x,p.y,p.z)),s[m]}function d(p){let m=p.r.toString()+p.g.toString()+p.b.toString();return a[m]!==void 0||(a[m]=o.length,o.push(p.getHex())),a[m]}function f(p){let m=p.x.toString()+p.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(p.x,p.y)),c[m]}return e.data={},e.data.vertices=t,e.data.normals=i,o.length>0&&(e.data.colors=o),l.length>0&&(e.data.uvs=[l]),e.data.faces=n,e}clone(){return new Co().copy(this)}copy(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;let t=e.vertices;for(let d=0,f=t.length;d<f;d++)this.vertices.push(t[d].clone());let n=e.colors;for(let d=0,f=n.length;d<f;d++)this.colors.push(n[d].clone());let i=e.faces;for(let d=0,f=i.length;d<f;d++)this.faces.push(i[d].clone());for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,v=p.length;m<v;m++){let g=p[m],y=[];for(let x=0,b=g.length;x<b;x++){let w=g[x];y.push(w.clone())}this.faceVertexUvs[d].push(y)}}let s=e.morphTargets;for(let d=0,f=s.length;d<f;d++){let p={};if(p.name=s[d].name,s[d].vertices!==void 0){p.vertices=[];for(let m=0,v=s[d].vertices.length;m<v;m++)p.vertices.push(s[d].vertices[m].clone())}if(s[d].normals!==void 0){p.normals=[];for(let m=0,v=s[d].normals.length;m<v;m++)p.normals.push(s[d].normals[m].clone())}this.morphTargets.push(p)}let o=e.morphNormals;for(let d=0,f=o.length;d<f;d++){let p={};if(o[d].vertexNormals!==void 0){p.vertexNormals=[];for(let m=0,v=o[d].vertexNormals.length;m<v;m++){let g=o[d].vertexNormals[m],y={};y.a=g.a.clone(),y.b=g.b.clone(),y.c=g.c.clone(),p.vertexNormals.push(y)}}if(o[d].faceNormals!==void 0){p.faceNormals=[];for(let m=0,v=o[d].faceNormals.length;m<v;m++)p.faceNormals.push(o[d].faceNormals[m].clone())}this.morphNormals.push(p)}let a=e.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[d].clone());let l=e.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=e.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=e.boundingBox;u!==null&&(this.boundingBox=u.clone());let h=e.boundingSphere;return h!==null&&(this.boundingSphere=h.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new $x().fromGeometry(this),t=new we,n=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new Re(n,3).copyVector3sArray(e.vertices)),e.normals.length>0){let i=new Float32Array(e.normals.length*3);t.setAttribute("normal",new Re(i,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let i=new Float32Array(e.colors.length*3);t.setAttribute("color",new Re(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let i=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new Re(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new Re(i,2).copyVector2sArray(e.uvs2))}t.groups=e.groups;for(let i in e.morphTargets){let s=[],o=e.morphTargets[i];for(let a=0,l=o.length;a<l;a++){let c=o[a],u=new ge(c.data.length*3,3);u.name=c.name,s.push(u.copyVector3sArray(c.data))}t.morphAttributes[i]=s}if(e.skinIndices.length>0){let i=new ge(e.skinIndices.length*4,4);t.setAttribute("skinIndex",i.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let i=new ge(e.skinWeights.length*4,4);t.setAttribute("skinWeight",i.copyVector4sArray(e.skinWeights))}return e.boundingSphere!==null&&(t.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new we,n=e.geometry;if(e.isPoints||e.isLine){let i=new ge(n.vertices.length*3,3),s=new ge(n.colors.length*3,3);if(t.setAttribute("position",i.copyVector3sArray(n.vertices)),t.setAttribute("color",s.copyColorsArray(n.colors)),n.lineDistances&&n.lineDistances.length===n.vertices.length){let o=new ge(n.lineDistances.length,1);t.setAttribute("lineDistance",o.copyArray(n.lineDistances))}n.boundingSphere!==null&&(t.boundingSphere=n.boundingSphere.clone()),n.boundingBox!==null&&(t.boundingBox=n.boundingBox.clone())}else e.isMesh&&(t=n.toBufferGeometry());return t}};Co.prototype.isGeometry=!0;var $x=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(e){let t=[],n,i,s,o=e.faces;for(i=0;i<o.length;i++){let a=o[i];a.materialIndex!==s&&(s=a.materialIndex,n!==void 0&&(n.count=i*3-n.start,t.push(n)),n={start:i*3,materialIndex:s})}n!==void 0&&(n.count=i*3-n.start,t.push(n)),this.groups=t}fromGeometry(e){let t=e.faces,n=e.vertices,i=e.faceVertexUvs,s=i[0]&&i[0].length>0,o=i[1]&&i[1].length>0,a=e.morphTargets,l=a.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:a[g].name,data:[]};this.morphTargets.position=c}let u=e.morphNormals,h=u.length,d;if(h>0){d=[];for(let g=0;g<h;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let f=e.skinIndices,p=e.skinWeights,m=f.length===n.length,v=p.length===n.length;n.length>0&&t.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<t.length;g++){let y=t[g];this.vertices.push(n[y.a],n[y.b],n[y.c]);let x=y.vertexNormals;if(x.length===3)this.normals.push(x[0],x[1],x[2]);else{let w=y.normal;this.normals.push(w,w,w)}let b=y.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let w=y.color;this.colors.push(w,w,w)}if(s===!0){let w=i[0][g];w!==void 0?this.uvs.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new O,new O,new O))}if(o===!0){let w=i[1][g];w!==void 0?this.uvs2.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new O,new O,new O))}for(let w=0;w<l;w++){let _=a[w].vertices;c[w].data.push(_[y.a],_[y.b],_[y.c])}for(let w=0;w<h;w++){let _=u[w].vertexNormals[g];d[w].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[y.a],f[y.b],f[y.c]),v&&this.skinWeights.push(p[y.a],p[y.b],p[y.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),this}},Bc=class{constructor(e,t,n,i,s,o=0){this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new M,this.vertexNormals=Array.isArray(i)?i:[],this.color=s&&s.isColor?s:new fe,this.vertexColors=Array.isArray(s)?s:[],this.materialIndex=o}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,n=e.vertexNormals.length;t<n;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,n=e.vertexColors.length;t<n;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}};var qL=["a","b","c"];function YL(r,e){switch(e){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function ym(r,e,t){let n=Math.min(r,e),i=Math.max(r,e),s=n+"_"+i;return t.get(s)}function vm(r,e,t,n,i,s){let o=Math.min(r,e),a=Math.max(r,e),l=o+"_"+a,c;if(n.has(l))c=n.get(l);else{let u=t[o],h=t[a];c={a:u,b:h,newEdge:null,faces:[]},n.set(l,c)}c.faces.push(i),s[r].edges.push(c),s[e].edges.push(c)}function KL(r,e,t,n){let i,s,o;for(i=0,s=r.length;i<s;i++)t[i]={edges:[]};for(i=0,s=e.length;i<s;i++)o=e[i],vm(o.a,o.b,r,n,o,t),vm(o.b,o.c,r,n,o,t),vm(o.c,o.a,r,n,o,t)}function Gh(r,e,t,n,i){r.push(new Bc(e,t,n,void 0,void 0,i))}function el(r,e){return Math.abs(e-r)/2+Math.min(r,e)}function Uh(r,e,t,n){r.push([e.clone(),t.clone(),n.clone()])}var xm=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof we?e=new Co().fromBufferGeometry(e):e=e.clone(),e.mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new M,n,i,s,o,a,l=e.vertices,c=e.faces,u=e.faceVertexUvs[0],h=u!==void 0&&u.length>0,d=[],f=new Map;KL(l,c,d,f);let p=[],m,v,g,y,x,b,w;for(let ae of Array.from(f.keys())){for(v=f.get(ae),g=new M,x=3/8,b=1/8,w=v.faces.length,w!=2&&(x=.5,b=0,w!=1),g.addVectors(v.a,v.b).multiplyScalar(x),t.set(0,0,0),o=0;o<w;o++){for(y=v.faces[o],a=0;a<3&&(m=l[YL(y,qL[a])],!(m!==v.a&&m!==v.b));a++);m&&t.add(m)}t.multiplyScalar(b),g.add(t),v.newEdge=p.length,p.push(g)}let _,S,A,T,L,C,U,P=[];for(i=0,s=l.length;i<s;i++){for(C=l[i],L=d[i].edges,n=L.length,n==3?_=3/16:n>3&&(_=3/(8*n)),S=1-n*Number(_),A=_,n<=2&&(n==2?(S=3/4,A=1/8):n==1||n==0),U=C.clone().multiplyScalar(S),t.set(0,0,0),o=0;o<n;o++)T=L[o],m=T.a!==C?T.a:T.b,t.add(m);t.multiplyScalar(Number(A)),U.add(t),P.push(U)}let R=P.concat(p),G=P.length,B,j,ne,le=[],W=[],z,D,K,q,ee=new O,V=new O,de=new O;for(i=0,s=c.length;i<s;i++)y=c[i],B=Number(ym(y.a,y.b,f).newEdge)+G,j=Number(ym(y.b,y.c,f).newEdge)+G,ne=Number(ym(y.c,y.a,f).newEdge)+G,Gh(le,B,j,ne,y.materialIndex),Gh(le,y.a,B,ne,y.materialIndex),Gh(le,y.b,j,B,y.materialIndex),Gh(le,y.c,ne,j,y.materialIndex),h&&(z=u[i],D=z[0],K=z[1],q=z[2],ee.set(el(D.x,K.x),el(D.y,K.y)),V.set(el(K.x,q.x),el(K.y,q.y)),de.set(el(D.x,q.x),el(D.y,q.y)),Uh(W,ee,V,de),Uh(W,D,ee,de),Uh(W,K,V,ee),Uh(W,q,de,V));e.vertices=R,e.faces=le,h&&(e.faceVertexUvs[0]=W)}};var yn=new M,Lo=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var s,o;let t=(o=(s=r.geometry)!=null?s:e==null?void 0:e.geometry)!=null?o:new we().copy(new jn(100,100,100)),n;e===void 0?(t.computeBoundingBox(),t.boundingBox.getSize(yn),n={width:yn.x,height:yn.y,depth:yn.z,subdivisions:0}):n=e.parameters;let i=Ue(Ue({},n),r.parameters);return{parameters:{width:Math.abs(i.width),height:Math.abs(i.height),depth:Math.abs(i.depth),subdivisions:Math.abs(i.subdivisions)},geometry:t}}static build(r){var l;let{width:e,height:t,depth:n,subdivisions:i}=r.parameters,s=(l=r.geometry)!=null?l:new we().copy(new jn(100,100,100)),o=s.userData.parameters;o===void 0?(s.computeBoundingBox(),s.boundingBox.getSize(yn)):yn.set(o.width,o.height,o.depth),(e!==yn.x||t!==yn.y||n!==yn.z)&&s.scale(yn.x===0?1:e/yn.x,yn.y===0?1:t/yn.y,yn.z===0?1:n/yn.z);let a=s.originalGeometry;return i>0?(a===void 0||(o==null?void 0:o.subdivisions)>i)&&(a===void 0&&(a=s),s=new xm(i).modify(a).toBufferGeometry()):(a!==void 0&&(s=a),a=void 0),a!==void 0&&Object.assign(s,{originalGeometry:a}),delete r.geometry,Object.assign(s,{userData:tt(Ue({},r),{type:"NonParametricGeometry"})})}static loadFromUrl(r,e,t){new Ia(t).load(r,i=>{let s=this.normalizeInputs({geometry:i});i.boundingBox.getSize(yn);let o=100/yn.x;Object.assign(s.parameters,{width:100,height:yn.y*o,depth:yn.z*o}),e(this.build(s))})}};var e0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o,a;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((s=t.surfaceMaxCount)!=null?s:t.cornerRadius>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(a=t.depth)!=null?a:0)})}}static build(r){let{width:e,height:t,spikes:n,cornerRadius:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a,surfaceMaxCount:l}=r.parameters,c=r.shape,u=e*.5,h=t*.5,d=0,f=0,p=2*Math.PI/n;for(let v=0;v<n;v++){let g=p*v,y=d+Math.sin(g)*u,x=f+Math.cos(g)*h;c.addPoint(c.createPoint(y,x))}c.isClosed=!0;for(let v=0,g=c.points.length;v<g;v++)c.points[v].roundness=i;c.roundness=i,c.update();let m=Pn.create({shape:c,parameters:{surfaceMaxCount:l,roundness:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}});return Object.assign(m,{userData:tt(Ue({},r),{type:"PolygonGeometry"})})}};var t0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,heightSegments:s,openEnded:o,cornerRadius:a,cornerSegments:l}=r.parameters,c=new n0(e*.5,t,i,s,o,a,l);return c.scale(1,1,n/e),Object.assign(c,{userData:tt(Ue({},r),{type:"PyramidGeometry"})})}};function Oc(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function bm(r,e,t,n,i,s){let o=e.clone().sub(r),a=t.clone().sub(r),l=o.angleTo(a);if(o.normalize(),a.normalize(),n===i){let c=o.add(a).normalize();s.copy(r).addScaledVector(c,n/Math.sin(l/2))}else{let c=o.angleTo(a);s.copy(r),s.addScaledVector(o,i/Math.sin(c)),s.addScaledVector(a,n/Math.sin(c))}}function QL(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.projectOnVector(i),n.add(e)}var n0=class extends we{constructor(e=.5,t=1,n=4,i=1,s=!1,o=0,a=4){super();n=Math.floor(Math.max(3,n)),i=Math.floor(i),a=Math.floor(a);let l=[],c=[],u=[],h=[],d=0,f=t/2,p=Math.PI/n,m=e*Math.cos(Math.PI/n),v=2*Math.PI/n,g=(n-2)*Math.PI/n,y=Math.PI-g,x=new M(0,-f,0),b=new M(0,f,0),w=new O(e,-f),_=new O(m,-f),S=new O(0,b.y).sub(_),A=new O(0,b.y).sub(w),T=new O(S.y,-S.x).normalize(),L=new O(A.y,-A.x).normalize(),U=e*Math.cos(Math.PI/n)*Math.tan((Math.PI-S.angle())/2)-1e-8;o=Math.min(o,U);let P;{let W=new M(T.x,T.y,0),z=new M(Math.cos(v)*W.x,W.y,Math.sin(v)*W.x);P=W.angleTo(z)}let R=o/Math.tan((Math.PI-S.angle())/2),G=o/Math.tan((Math.PI-P)/2),B=new M;if(!s){c.push(x.x,x.y,x.z),u.push(0,-1,0),h.push(0,0);let W=d++,z=[],D=w.clone(),K=R/Math.cos(Math.PI/n);D.x-=K;for(let q=0;q<n;q++){let ee=q/n*Math.PI*2+p,V=new O(Math.sin(ee),Math.cos(ee));Oc(D,V,B),c.push(B.x,B.y,B.z),u.push(0,-1,0),h.push(0,0),z.push(d++)}for(let q=0;q<z.length;q++)l.push(z[q],W,z[(q+1)%z.length])}let j=[];{let W=new M,z=new M,D=new M,K=new M,q=new M,ee=new M;for(let V=0;V<n;V++){let de=V/n*Math.PI*2+p,ae=(V+.5)/n*Math.PI*2+p,te=(V+1)/n*Math.PI*2+p,X=new O(Math.sin(de),Math.cos(de)),se=new O(Math.sin(ae),Math.cos(ae)),$=new O(Math.sin(te),Math.cos(te));Oc(w,X,z),Oc(w,$,D),Oc(T,se,W),bm(b,z,D,G,G,K),c.push(K.x,K.y,K.z),bm(z,b,D,G,R,q),c.push(q.x,q.y,q.z),bm(D,z,b,R,G,ee),c.push(ee.x,ee.y,ee.z),u.push(W.x,W.y,W.z),u.push(W.x,W.y,W.z),u.push(W.x,W.y,W.z),h.push(0,0),h.push(0,0),h.push(0,0);let H=d++,Q=d++,ce=d++;if(l.push(H,Q,ce),o>0){{let E=z.clone().add(D).multiplyScalar(.5),Y=b.clone().sub(E).normalize(),ye=x.clone().sub(E).normalize().add(Y).normalize().multiplyScalar(-1),pe=ee.clone().sub(q);ne(E,pe,ye,S.angle())}let ie,N;{let E=new M;Oc(L,$,E);let Y=ee.clone().add(K).multiplyScalar(.5);Y=QL(Y,D,b);let re=ee.clone().sub(K);[ie,N]=ne(Y,re,E,P,K.y)}{let E=ie,Y=E.clone().setY(0).normalize(),re=new M(0,-1,0),ye=Y.clone().cross(re);le(E,Y,re,ye)}j.concat(N);{let E=S.angle(),Y=Math.PI-E,re=b.clone();re.y-=o/Math.sin(E-Math.PI/2);let ye=new M,pe=[];for(let ve=0;ve<a;ve++){let Fe=[],Ce=Math.PI/2-Y*ve/a,J=Math.cos(Ce),xe=Math.sin(Ce),he=ae;for(let Ne=0;Ne<=ve;Ne++){let Be=Math.cos(he),ke=Math.sin(he);W.x=J*ke,W.y=xe,W.z=J*Be,ye.copy(re).addScaledVector(W,o),c.push(ye.x,ye.y,ye.z),u.push(W.x,W.y,W.z),h.push(0,0),Fe.push(d++),he+=Math.PI*2/ve/n}pe.push(Fe)}N.reverse(),pe.push(N);let Ie=pe.length-1;for(let ve=0;ve<Ie;ve++){let Fe=pe[ve],Ce=pe[ve+1],J=Fe.length-1;l.push(Ce[1],Fe[0],Ce[0]);for(let xe=1;xe<=J;xe++)l.push(Fe[xe],Fe[xe-1],Ce[xe]),l.push(Ce[xe+1],Fe[xe],Ce[xe])}}}}}this.setIndex(l),this.setAttribute("position",new ge(c,3)),this.setAttribute("normal",new ge(u,3)),this.setAttribute("uv",new ge(h,2));function ne(W,z,D,K,q){let ee=-K/2,V=(Math.PI-K)/2,de=z.clone().normalize().cross(D);W.addScaledVector(D,-o/Math.sin(V));let ae=new M,te=new M,X=1,se=d,$=[];for(let H=0;H<=a;H++){let Q=ee+H/a*K;te.set(0,0,0),te.addScaledVector(de,Math.sin(Q)),te.addScaledVector(D,Math.cos(Q));for(let ce=0;ce<=X;ce++){let ie=ce/X-.5;if(ae.copy(W),ae.addScaledVector(z,ie),ae.addScaledVector(te,o),q!=null){let N=Math.max(0,ae.y-q);ae.addScaledVector(z,-N/z.y)}c.push(ae.x,ae.y,ae.z),u.push(te.x,te.y,te.z),h.push(0,0),ce===0&&$.push(d),d++}}for(let H=0;H<a;H++)for(let Q=0;Q<X;Q++){let ce=se+Q+(X+1)*H,ie=ce+(X+1),N=ie+1,E=ce+1;l.push(ce,ie,E),l.push(ie,N,E)}return[W.clone().addScaledVector(z,.5),$]}function le(W,z,D,K){let q=Math.PI/2,ee=A.angle()-q,V=[],de=new M,ae=new M;for(let X=0;X<=a;X++){let se=[],$=X/a;for(let H=0;H<=X;H++){let ce=((X?H/X:0)-.5)*y,ie=Math.cos(ce),N=Math.sin(ce),E=Math.atan(Math.tan(ee)*ie),Y=(q+E)*$,re=Math.cos(Y),ye=Math.sin(Y);de.set(0,0,0),de.addScaledVector(z,ye*ie),de.addScaledVector(D,re),de.addScaledVector(K,ye*N),ae.copy(W).addScaledVector(de,o),c.push(ae.x,ae.y,ae.z),u.push(de.x,de.y,de.z),h.push(0,0),se.push(d++)}V.push(se)}let te=V.length-1;for(let X=0;X<te;X++){let se=V[X],$=V[X+1],H=se.length-1;l.push(se[0],$[1],$[0]);for(let Q=1;Q<=H;Q++)l.push(se[Q-1],se[Q],$[Q]),l.push(se[Q],$[Q+1],$[Q])}}}};var kh=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var o,a,l,c,u;let t=Object.assign({},(o=e==null?void 0:e.parameters)!=null?o:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters),n=Object.assign((a=e==null?void 0:e.ui)!=null?a:{enabledIndieCorners:!1},r.ui),i=t.cornerRadius.reduce((h,d)=>h+d,0);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((l=t.surfaceMaxCount)!=null?l:i>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((c=t.height)!=null?c:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(u=t.depth)!=null?u:0)}),ui:n}}static build(r){let e=r.shape,{width:t,height:n,cornerRadius:i,cornerType:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l,surfaceMaxCount:c}=r.parameters,u={x:t*.5,y:n*.5},h={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function f(w,_,S){return _>t&&S>n?Math.min(w*t/_,w*n/S):_>t?w*t/_:S>n?w*n/S:w}let p=[];p[0]=i[0]===0?0:f(i[0],i[0]+i[3],i[0]+i[1]),p[1]=i[1]===0?0:f(i[1],i[1]+i[2],i[1]+i[0]),p[2]=i[2]===0?0:f(i[2],i[2]+i[1],i[2]+i[3]),p[3]=i[3]===0?0:f(i[3],i[3]+i[0],i[3]+i[2]);let m=h.x,v=d.x,g=d.y,y=h.y;e.addPoint(e.createPoint(m,g)),e.addPoint(e.createPoint(v,g)),e.addPoint(e.createPoint(v,y)),e.addPoint(e.createPoint(m,y)),e.isClosed=!0;let x=!0;for(let w=0,_=e.points.length;w<_;w++)e.points[w].roundness=p[w],w>0&&p[w]!==p[w-1]&&(x=!1);x&&(e.roundness=p[0]),e.useCubicForRoundedCorners=s!==1,e.update();let b=Pn.create({shape:e,parameters:{surfaceMaxCount:c,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(b,{userData:tt(Ue({},r),{type:"RectangleGeometry"})})}};var i0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e=100,height:t=e,depth:n=e,widthSegments:i=64,heightSegments:s=64,phiStart:o,phiLength:a,thetaStart:l,thetaLength:c}=r.parameters,u=new Ji(.5*e,i,s,o,a,l,c);return u.scale(1,t/e,n/e),Object.assign(u,{userData:tt(Ue({},r),{type:"SphereGeometry"})})}};var r0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o,a;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((s=t.surfaceMaxCount)!=null?s:t.cornerRadius>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(a=t.depth)!=null?a:0)})}}static build(r){let{width:e,height:t,innerRadiusPercent:n,spikes:i,cornerRadius:s,angle:o,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c,surfaceMaxCount:u}=r.parameters,h=r.shape,d=e*.5,f=t*.5,p=0,m=0,v=o*Math.PI/360/i,g=Math.PI/2*3*-1,y=d*n/100,x=f*n/100;if(i==3&&n==50){v=2*Math.PI/i;for(let w=0;w<i;w++){let _=v*w,S=p+Math.sin(_)*d,A=m+Math.cos(_)*f;h.addPoint(h.createPoint(S,A))}}else for(let w=0;w<i;w++){let _=p+Math.cos(g)*d,S=m+Math.sin(g)*f;h.addPoint(h.createPoint(_,S)),g+=v,_=p+Math.cos(g)*y,S=m+Math.sin(g)*x,w<=i,h.addPoint(h.createPoint(_,S)),g+=v}h.isClosed=!0;for(let w=0,_=h.points.length;w<_;w++)h.points[w].roundness=s;h.roundness=s,h.update();let b=Pn.create({shape:h,parameters:{surfaceMaxCount:u,roundness:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:tt(Ue({},r),{type:"StarGeometry"})})}};var s0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,depth:0},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:0)})}}static build(r){let{width:e,height:t}=r.parameters,n=new ls(e,t);return Object.assign(n,{userData:tt(Ue({},r),{type:"TextFrameGeometry"})})}};var o0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var o,a,l;let t=Object.assign({},(o=e==null?void 0:e.parameters)!=null?o:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},r.parameters),n=Math.abs(t.width),i=Math.abs((a=t.height)!=null?a:t.width),s=Math.abs((l=t.depth)!=null?l:t.width*.25);return{parameters:Object.assign(t,{width:n,height:i,depth:s})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,tubularSegments:s,arc:o,cornerRadius:a,cornerSegments:l}=r.parameters,c=ZL(e,t,n,e*.5,o,s,0,0,i,a,l);return c.scale(1,t/e,1),Object.assign(c,{userData:tt(Ue({},r),{type:"TorusGeometry"})})}};function ZL(r,e,t,n,i,s,o,a,l,c,u){return[e,t]=[t,e],o=e/2,i/=2*Math.PI,i==1&&(c=0),new Oh(!0,r,e,t,n,i,s,o,a,l,c,u)}var a0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,depth:1,tube:50,tubularSegments:64,radialSegments:32,p:2,q:3},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:1)})}}static build(r){let{width:e,tube:t,tubularSegments:n,radialSegments:i,p:s,q:o}=r.parameters,a=e*.5-t,l=new ho(a,t,n,i,s,o);return Object.assign(l,{userData:tt(Ue({},r),{type:"TorusKnotGeometry"})})}};var l0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o,a;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((s=t.surfaceMaxCount)!=null?s:t.cornerRadius>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width*(t.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(a=t.depth)!=null?a:0)})}}static build(r){let{width:e=100,height:t,cornerRadius:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o,isRect:a,surfaceMaxCount:l}=r.parameters,c=r.shape,u=e*.5,h=t*.5;a?(c.addPoint(c.createPoint(-u,h)),c.addPoint(c.createPoint(u,-h)),c.addPoint(c.createPoint(-u,-h))):(c.addPoint(c.createPoint(0,h)),c.addPoint(c.createPoint(u,-h)),c.addPoint(c.createPoint(-u,-h))),c.isClosed=!0;for(let f=0,p=c.points.length;f<p;f++)c.points[f].roundness=n;c.roundness=n,c.update();let d=Pn.create({shape:c,parameters:{surfaceMaxCount:l,roundness:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o}});return Object.assign(d,{userData:tt(Ue({},r),{type:"TriangleGeometry"})})}};var tl=class{static computeTangents(e){e.computeTangents(),console.warn("THREE.BufferGeometryUtils: .computeTangents() has been removed. Use BufferGeometry.computeTangents() instead.")}static mergeBufferGeometries(e,t=!1){let n=e[0].index!==null,i=new Set(Object.keys(e[0].attributes)),s=new Set(Object.keys(e[0].morphAttributes)),o={},a={},l=e[0].morphTargetsRelative,c=new we,u=0;for(let h=0;h<e.length;++h){let d=e[h],f=0;if(n!==(d.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let p in d.attributes){if(!i.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+'. All geometries must have compatible attributes; make sure "'+p+'" attribute exists among all geometries, or in none of them.'),null;o[p]===void 0&&(o[p]=[]),o[p].push(d.attributes[p]),f++}if(f!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". Make sure all geometries have the same number of attributes."),null;if(l!==d.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let p in d.morphAttributes){if(!s.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". .morphAttributes must be consistent throughout all geometries."),null;a[p]===void 0&&(a[p]=[]),a[p].push(d.morphAttributes[p])}if(c.userData.mergedUserData=c.userData.mergedUserData||[],c.userData.mergedUserData.push(d.userData),t){let p;if(n)p=d.index.count;else if(d.attributes.position!==void 0)p=d.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". The geometry must have either an index or a position attribute"),null;c.addGroup(u,p,h),u+=p}}if(n){let h=0,d=[];for(let f=0;f<e.length;++f){let p=e[f].index;for(let m=0;m<p.count;++m)d.push(p.getX(m)+h);h+=e[f].attributes.position.count}c.setIndex(d)}for(let h in o){let d=this.mergeBufferAttributes(o[h]);if(!d)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+h+" attribute."),null;c.setAttribute(h,d)}for(let h in a){let d=a[h][0].length;if(d===0)break;c.morphAttributes=c.morphAttributes||{},c.morphAttributes[h]=[];for(let f=0;f<d;++f){let p=[];for(let v=0;v<a[h].length;++v)p.push(a[h][v][f]);let m=this.mergeBufferAttributes(p);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+h+" morphAttribute."),null;c.morphAttributes[h].push(m)}}return c}static mergeBufferAttributes(e){let t,n,i,s=0;for(let l=0;l<e.length;++l){let c=e[l];if(c.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(t===void 0&&(t=c.array.constructor),t!==c.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(n===void 0&&(n=c.itemSize),n!==c.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=c.normalized),i!==c.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;s+=c.array.length}let o=new t(s),a=0;for(let l=0;l<e.length;++l)o.set(e[l].array,a),a+=e[l].array.length;return new Re(o,n,i)}static interleaveAttributes(e){let t,n=0,i=0;for(let u=0,h=e.length;u<h;++u){let d=e[u];if(t===void 0&&(t=d.array.constructor),t!==d.array.constructor)return console.error("AttributeBuffers of different types cannot be interleaved"),null;n+=d.array.length,i+=d.itemSize}let s=new Vi(new t(n),i),o=0,a=[],l=["getX","getY","getZ","getW"],c=["setX","setY","setZ","setW"];for(let u=0,h=e.length;u<h;u++){let d=e[u],f=d.itemSize,p=d.count,m=new Ti(s,f,o,d.normalized);a.push(m),o+=f;for(let v=0;v<p;v++)for(let g=0;g<f;g++)m[c[g]](v,d[l[g]](v))}return a}static estimateBytesUsed(e){let t=0;for(let i in e.attributes){let s=e.getAttribute(i);t+=s.count*s.itemSize*s.array.BYTES_PER_ELEMENT}let n=e.getIndex();return t+=n?n.count*n.itemSize*n.array.BYTES_PER_ELEMENT:0,t}static mergeVertices(e,t=1e-4){t=Math.max(t,Number.EPSILON);let n={},i=e.getIndex(),s=e.getAttribute("position"),o=i?i.count:s.count,a=0,l=Object.keys(e.attributes),c={},u={},h=[],d=["getX","getY","getZ","getW"];for(let v=0,g=l.length;v<g;v++){let y=l[v];c[y]=[];let x=e.morphAttributes[y];x&&(u[y]=new Array(x.length).fill().map(()=>[]))}let f=Math.log10(1/t),p=Math.pow(10,f);for(let v=0;v<o;v++){let g=i?i.getX(v):v,y="";for(let x=0,b=l.length;x<b;x++){let w=l[x],_=e.getAttribute(w),S=_.itemSize;for(let A=0;A<S;A++)y+=`${~~(_[d[A]](g)*p)},`}if(y in n)h.push(n[y]);else{for(let x=0,b=l.length;x<b;x++){let w=l[x],_=e.getAttribute(w),S=e.morphAttributes[w],A=_.itemSize,T=c[w],L=u[w];for(let C=0;C<A;C++){let U=d[C];if(T.push(_[U](g)),S)for(let P=0,R=S.length;P<R;P++)L[P].push(S[P][U](g))}}n[y]=a,h.push(a),a++}}let m=e.clone();for(let v=0,g=l.length;v<g;v++){let y=l[v],x=e.getAttribute(y),b=new x.array.constructor(c[y]),w=new Re(b,x.itemSize,x.normalized);if(m.setAttribute(y,w),y in u)for(let _=0;_<u[y].length;_++){let S=e.morphAttributes[y][_],A=new S.array.constructor(u[y][_]),T=new Re(A,S.itemSize,S.normalized);m.morphAttributes[y][_]=T}}return m.setIndex(h),m}static toTrianglesDrawMode(e,t){if(t===ef)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t===Ko||t===Su){let n=e.getIndex();if(n===null){let a=[],l=e.getAttribute("position");if(l!==void 0){for(let c=0;c<l.count;c++)a.push(c);e.setIndex(a),n=e.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e}let i=n.count-2,s=[];if(t===Ko)for(let a=1;a<=i;a++)s.push(n.getX(0)),s.push(n.getX(a)),s.push(n.getX(a+1));else for(let a=0;a<i;a++)a%2==0?(s.push(n.getX(a)),s.push(n.getX(a+1)),s.push(n.getX(a+2))):(s.push(n.getX(a+2)),s.push(n.getX(a+1)),s.push(n.getX(a)));s.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let o=e.clone();return o.setIndex(s),o.clearGroups(),o}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e}static computeMorphedAttributes(e){if(e.geometry.isBufferGeometry!==!0)return console.error("THREE.BufferGeometryUtils: Geometry is not of type BufferGeometry."),null;let t=new M,n=new M,i=new M,s=new M,o=new M,a=new M,l=new M,c=new M,u=new M;function h(z,D,K,q,ee,V,de,ae,te){t.fromBufferAttribute(K,V),n.fromBufferAttribute(K,de),i.fromBufferAttribute(K,ae);let X=z.morphTargetInfluences;if(D.morphTargets&&q&&X){l.set(0,0,0),c.set(0,0,0),u.set(0,0,0);for(let se=0,$=q.length;se<$;se++){let H=X[se],Q=q[se];H!==0&&(s.fromBufferAttribute(Q,V),o.fromBufferAttribute(Q,de),a.fromBufferAttribute(Q,ae),ee?(l.addScaledVector(s,H),c.addScaledVector(o,H),u.addScaledVector(a,H)):(l.addScaledVector(s.sub(t),H),c.addScaledVector(o.sub(n),H),u.addScaledVector(a.sub(i),H)))}t.add(l),n.add(c),i.add(u)}z.isSkinnedMesh&&(z.boneTransform(V,t),z.boneTransform(de,n),z.boneTransform(ae,i)),te[V*3+0]=t.x,te[V*3+1]=t.y,te[V*3+2]=t.z,te[de*3+0]=n.x,te[de*3+1]=n.y,te[de*3+2]=n.z,te[ae*3+0]=i.x,te[ae*3+1]=i.y,te[ae*3+2]=i.z}let d=e.geometry,f=e.material,p,m,v,g=d.index,y=d.attributes.position,x=d.morphAttributes.position,b=d.morphTargetsRelative,w=d.attributes.normal,_=d.morphAttributes.position,S=d.groups,A=d.drawRange,T,L,C,U,P,R,G,B,j=new Float32Array(y.count*y.itemSize),ne=new Float32Array(w.count*w.itemSize);if(g!==null)if(Array.isArray(f))for(T=0,C=S.length;T<C;T++)for(P=S[T],R=f[P.materialIndex],G=Math.max(P.start,A.start),B=Math.min(P.start+P.count,A.start+A.count),L=G,U=B;L<U;L+=3)p=g.getX(L),m=g.getX(L+1),v=g.getX(L+2),h(e,R,y,x,b,p,m,v,j),h(e,R,w,_,b,p,m,v,ne);else for(G=Math.max(0,A.start),B=Math.min(g.count,A.start+A.count),T=G,C=B;T<C;T+=3)p=g.getX(T),m=g.getX(T+1),v=g.getX(T+2),h(e,f,y,x,b,p,m,v,j),h(e,f,w,_,b,p,m,v,ne);else if(y!==void 0)if(Array.isArray(f))for(T=0,C=S.length;T<C;T++)for(P=S[T],R=f[P.materialIndex],G=Math.max(P.start,A.start),B=Math.min(P.start+P.count,A.start+A.count),L=G,U=B;L<U;L+=3)p=L,m=L+1,v=L+2,h(e,R,y,x,b,p,m,v,j),h(e,R,w,_,b,p,m,v,ne);else for(G=Math.max(0,A.start),B=Math.min(y.count,A.start+A.count),T=G,C=B;T<C;T+=3)p=T,m=T+1,v=T+2,h(e,f,y,x,b,p,m,v,j),h(e,f,w,_,b,p,m,v,ne);let le=new ge(j,3),W=new ge(ne,3);return{positionAttribute:y,normalAttribute:w,morphedPositionAttribute:le,morphedNormalAttribute:W}}};var $L,c0=new Promise(r=>{$L=r});var ot;c0.then(r=>{ot=r});var Fc=new M,pr=new M,zc=new me;function u0(r,...e){let t=0;for(let s of e)t+=s.length;let n=new r(t),i=0;for(let s of e)n.set(s,i),i+=s.length;return n}var nl,Qn=(nl=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var a,l;let t=(a=r.geometry)!=null?a:e==null?void 0:e.geometry,{width:n,height:i,depth:s}=t.userData.parameters,o=Ue(Ue({},(l=e==null?void 0:e.parameters)!=null?l:{width:n,height:i,depth:s,subdivisions:1}),r.parameters);return{parameters:tt(Ue({},o),{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth)}),geometry:t,subdivPointer:e==null?void 0:e.subdivPointer,smoothShading:e==null?void 0:e.smoothShading}}static build(r){let e=r.geometry,t=r.geometry.originalGeometry,{width:n,height:i,depth:s,subdivisions:o}=r.parameters,a=e.userData.parameters;Fc.set(a.width,a.height,a.depth),(n!==Fc.x||i!==Fc.y||s!==Fc.z)&&(pr.set(n,i,s).divide(Fc),zc.makeScale(isNaN(pr.x)||pr.x===0?1:pr.x,isNaN(pr.y)||pr.y===0?1:pr.y,isNaN(pr.z)||pr.z===0?1:pr.z),e.applyMatrix4(zc),t?(t.applyMatrix4(zc),t.getAttribute("positionWASM").applyMatrix4(zc)):e.getAttribute("positionWASM").applyMatrix4(zc));let l,c;return t!==void 0?(c=e,l=t):l=e,r.subdivPointer===void 0&&(this.allocate(l),l==null||l.dispose(),l=this.buildLevel(!0,r.smoothShading),l.computeBoundingSphere(),r.subdivPointer=this.activeSubdivPtr,this.getTopologicalMesh(l)),o>0?((o!==(a==null?void 0:a.subdivisions)||t===void 0)&&(r.subdivPointer!==this.activeSubdivPtr&&(this.activeSubdivPtr=r.subdivPointer),c==null||c.dispose(),ot.set_destination_refinement_level(r.subdivPointer,o),c=this.buildLevel(!1,r.smoothShading),c.boundingSphere=l.boundingSphere),e=c,t=l,delete t.userData.parameters):(e=l,c==null||c.dispose(),t=void 0),Object.assign(e,{originalGeometry:t,subdivPointer:this.activeSubdivPtr,userData:{parameters:r.parameters,type:"SubdivGeometry"}})}static allocate(r){var x;let e,t,n,i=[],s=[];if(r.userData.type!=="SubdivGeometry"){let b=tl.mergeVertices(r,(x=this.mergeVerticesToleranceExceptions[r.userData.type])!=null?x:1.1);e=b.attributes.position.array;let w=b.getIndex().array,_=w.length;switch(r.userData.type){case"TorusGeometry":case"TorusKnotGeometry":case"CubeGeometry":t=new Uint32Array(_/3*2),n=new Uint8Array(_/6).fill(4);for(let U=0,P=0;U<_;U+=6)t[P++]=w[U],t[P++]=w[U+1],t[P++]=w[U+4],t[P++]=w[U+5];break;case"SphereGeometry":case"HelixGeometry":case"CylinderGeometry":case"ConeGeometry":let S,A;if(r.userData.type==="SphereGeometry")A=r.parameters.heightSegments,S=r.parameters.widthSegments;else if(r.userData.type==="CylinderGeometry")A=r.parameters.heightSegments+2,S=r.parameters.radialSegments;else if(r.userData.type==="ConeGeometry")A=r.parameters.heightSegments+1,S=r.parameters.radialSegments;else{let{pathSegments:U,segments:P,revolutions:R}=r.userData.parameters;A=Math.ceil(P*R)+2,S=U}t=new Uint32Array(2*S*3+(A-2)*S*4),n=new Uint8Array(2*S+(A-2)*S);let T=0,L=0,C=0;if(r.userData.type==="SphereGeometry"||r.userData.type==="HelixGeometry"){for(;L<3*S;)t[L++]=w[T++],t[L++]=w[T++],t[L++]=w[T++],n[C++]=3;for(;L<3*S+4*(A-2)*S;T+=6)t[L++]=w[T],t[L++]=w[T+1],t[L++]=w[T+4],t[L++]=w[T+5],n[C++]=4}else for(;L<4*(A-2)*S;T+=6)t[L++]=w[T],t[L++]=w[T+1],t[L++]=w[T+4],t[L++]=w[T+5],n[C++]=4;for(;L<t.length;)t[L++]=w[T++],t[L++]=w[T++],t[L++]=w[T++],n[C++]=3;break;default:t=w,n=new Uint8Array(_/3).fill(3);break}}else if(r.getAttribute("positionWASM")!==void 0)e=r.getAttribute("positionWASM").array,t=r.getAttribute("indexWASM").array,n=r.getAttribute("verticesPerFaceWASM").array;else{let b=r.getAttribute("faceMap");r.deleteAttribute("faceMap");let w=tl.mergeVertices(r,2);r.setAttribute("faceMap",b),e=w.attributes.position.array;let _=[],S=b.array;n=new Uint8Array(S[S.length-1]+1).fill(3);let A=w.getIndex().array;for(let T=0,L=S.length;T<L;)S[T]===S[T+1]?(n[S[T]]++,_.push(...new Set(A.slice(3*T,3*T+6))),T+=2):(_.push(...A.slice(3*T,3*T+3)),T++);t=new Uint32Array(_)}let o=e.length,a=t.length,l=n.length,c=e.length+i.length+s.length,u=t.length+n.length,h=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,p=ot._malloc(h),m=new Float32Array(ot.HEAPF32.buffer,p,c),v=new Uint32Array(ot.HEAPU32.buffer,p+d,u),g=u0(Float32Array,e,i,s),y=u0(Uint32Array,t,n);m.set(g,0),v.set(y,0),this.activeSubdivPtr=ot.alloc_subdivision_surface(p,o,p+d,a,p+d+t.length*Uint32Array.BYTES_PER_ELEMENT,l),ot._free(p)}static buildLevel(r,e,t){let n=ot.get_mesh_data(this.activeSubdivPtr,r?ot.Level.CONTROL:ot.Level.REFINED,e!=null?e:!r),i=8,s=ot.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(4,4+4),a=0,l=ot.HEAPU32[s[a]>>2],c=ot.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let u=ot.HEAPU32[s[a]>>2],h=ot.HEAPF32.subarray(u>>2,(u>>2)+o[a]);a++;let d=ot.HEAPU32[s[a]>>2],f=ot.HEAPU32.subarray(d>>2,(d>>2)+o[a]);a++;let p=ot.HEAPU32[s[a]>>2],m=ot.HEAPU32.subarray(p>>2,(p>>2)+o[a]);if(a++,t===void 0){let v=new we;if(v.setIndex(new is(m,1)),v.setAttribute("position",new ge(c,3)),v.setAttribute("normal",new ge(h,3)),r){v.setAttribute("faceMap",new is(f,1));let g=new Float32Array(h.length/3*4).fill(0);v.setAttribute("color",new Re(g,4))}return ot.free_mesh_data(n),v.userData.type="SubdivGeometry",v}t.getAttribute("position").copyArray(c),t.getAttribute("normal").copyArray(h),t.attributes.position.needsUpdate=!0,t.attributes.normal.needsUpdate=!0,ot.free_mesh_data(n)}static buildControlCageWireframe(r,e){let t=ot.get_wireframe_data_for_base_level(this.activeSubdivPtr),n=4,i=ot.HEAPU32.subarray(t>>2,(t>>2)+n),s=i.subarray(2,2+2),o=0,a=ot.HEAPU32[i[o]>>2],l=ot.HEAPF32.subarray(a>>2,(a>>2)+s[o]);o++;let c=ot.HEAPU32[i[o]>>2],u=ot.HEAPU32.subarray(c>>2,(c>>2)+s[o]);if(r===void 0){let h=new we;h.setAttribute("position",new ge(l,3));let d=new Float32Array(l.length);for(let f=0,p=l.length;f<p;)d[f++]=e.r,d[f++]=e.g,d[f++]=e.b;return h.setAttribute("color",new Re(d,3)),h.setIndex(new is(u,1)),ot.free_wireframe_data_for_base_level(t),h}r.getAttribute("position").copyArray(l),r.attributes.position.needsUpdate=!0,ot.free_wireframe_data_for_base_level(t)}static clone(r,e,t){this.activeSubdivPtr=ot.copy_subdivision_surface(e),ot.set_destination_refinement_level(this.activeSubdivPtr,r.subdivisions);let n=this.buildLevel(!0,t);Qn.getTopologicalMesh(n);let i,s,o;return r.subdivisions>0?(o=this.buildLevel(!1,t),i=o,s=n,delete s.userData.parameters):(i=n,s=void 0),Object.assign(i,{originalGeometry:s,userData:{parameters:r,type:"SubdivGeometry"}})}static getTopologicalMesh(r){let e=ot.get_topological_data(this.activeSubdivPtr),t=6,n=ot.HEAPU32.subarray(e>>2,(e>>2)+t),i=n.subarray(3,3+3),s=0,o=ot.HEAPU32[n[s]>>2],a=ot.HEAPF32.subarray(o>>2,(o>>2)+i[s]);s++;let l=ot.HEAPU32[n[s]>>2],c=ot.HEAPU32.subarray(l>>2,(l>>2)+i[s]);s++;let u=ot.HEAPU32[n[s]>>2],h=ot.HEAPU32.subarray(u>>2,(u>>2)+i[s]);r.setAttribute("positionWASM",new ge(a,3)),r.setAttribute("indexWASM",new is(c,1)),r.setAttribute("verticesPerFaceWASM",new Sf(h,1)),ot.free_topological_data(e)}},nl.checkpoints=[],nl.checkpointCurrentIndex=-1,nl.maxCheckpoints=30,nl.mergeVerticesToleranceExceptions={DodecahedronGeometry:2},nl);var Gc={};fA(Gc,{addBarycentricAttribute:()=>n2,fixUvs:()=>r2,loadFromUrl:()=>i2,resizeGeometry:()=>t2,roundShapePolygon:()=>e2});var h0=function(r,e){let t=e.x-r.x,n=e.y-r.y,i=Math.sqrt(t*t+n*n),s=t/i,o=n/i,a=Math.atan2(o,s);return{x:t,y:n,len:i,nx:s,ny:o,ang:a}},e2=(r,e,t)=>{let n,i,s,o,a,l,c,u,h,d,f,p,m,v,g=e.length;for(o=e[g-2],r.curves=[],n=1;n<g-1;n++){a=e[n%g],l=e[(n+1)%g];let y=h0(a,o),x=h0(a,l);c=y.nx*x.ny-y.ny*x.nx,u=y.nx*x.nx-y.ny*-x.ny,f=Math.asin(c),h=1,d=!1,u<0?f<0?f=Math.PI+f:(f=Math.PI-f,h=-1,d=!0):f>0&&(h=-1,d=!0),p=f/2,v=Math.abs(Math.cos(p)*t/Math.sin(p)),v>Math.min(y.len/2,x.len/2)?(v=Math.min(y.len/2,x.len/2),m=Math.abs(v*Math.sin(p)/Math.cos(p))):m=t,i=a.x+x.nx*v,s=a.y+x.ny*v,i+=-x.ny*m*h,s+=x.nx*m*h,r.absarc(i,s,m,y.ang+Math.PI/2*h,x.ang-Math.PI/2*h,d),o=a,a=l}r.closePath()},t2=(r,{width:e,height:t,depth:n})=>{e=Math.abs(e),t=Math.abs(t),n=Math.abs(n);let i=r.userData.parameters,s,o,a;e===0?(e=i.width,s=1):s=e/i.width,t===0?(t=i.height,o=1):o=t/i.height,n===0?(n=i.depth,a=1):a=n/i.depth,r.scale(s,o,a),i.width=e,i.height=t,i.depth=n},n2=(r,e)=>{let t=[new M(1,0,0),new M(0,1,0),new M(0,0,1)],n=r.attributes.position,i=new Float32Array(n.count*3);for(let s=0,o=n.count;s<o;s++)t[s%3].toArray(i,s*3);r.setAttribute(e,new ge(i,3))},i2=r=>new Promise(e=>{new Ia().load(r,n=>e(n))}),r2=(r,e,t)=>{let n=r.getAttribute("uv");if(n)for(let i=0;i<n.count;i++){let s=n.getX(i),o=n.getY(i);n.setXY(i,(s+e/2)/e,1-(o-t/2)/t*-1)}};var Uc={ConeGeometry:Ax,CubeGeometry:_x,CylinderGeometry:Sx,DodecahedronGeometry:Ex,EllipseGeometry:Wx,HelixGeometry:Kx,IcosahedronGeometry:Qx,LatheGeometry:Zx,NonParametricGeometry:Lo,PolygonGeometry:e0,PyramidGeometry:t0,RectangleGeometry:kh,SphereGeometry:i0,StarGeometry:r0,TextFrameGeometry:s0,TorusGeometry:o0,TorusKnotGeometry:a0,TriangleGeometry:l0,VectorGeometry:Pn,SubdivGeometry:Qn},kc=r=>Uc[r.type].create(r);var Vh=r=>"isEntity"in r,ai=r=>"isAbstractMesh"in r;var Hh=r=>"objectHelper"in r;var il=new tn,Dn=new M,Je=new M,vn=new me;function s2(r,e,t=0,n=e.count){let i=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,c=-1/0;for(let u=t;u<n;u++){let h=e.getX(u),d=e.getY(u),f=e.getZ(u);h<i&&(i=h),d<s&&(s=d),f<o&&(o=f),h>a&&(a=h),d>l&&(l=d),f>c&&(c=f)}return r.min.set(i,s,o),r.max.set(a,l,c),r}var d0=(r,e,t,n)=>{var i,s;if(ai(r)){let o=r.geometry.userData.parameters,a=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?Dn.copy(((i=r.geometry.originalGeometry)!=null?i:r.geometry).boundingSphere.center):(s2(il,a,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:a.count),il.getCenter(Dn)),r.forceComputeSize?il.getSize(Je).multiplyScalar(.5):Je.set(o.width,o.height,(s=o.depth)!=null?s:0).multiplyScalar(.5)}else if(Hh(r)&&n===!0){let o=r.geometryHelper.getAttribute("position");il.setFromArray(o.array),il.getCenter(Dn),il.getSize(Je).multiplyScalar(.5)}else Dn.setScalar(0),Je.setScalar(0);vn.copy(e).multiply(r.matrixWorld),Je.x===0&&Je.y===0&&Je.z===0?t.push(new M(Dn.x,Dn.y,Dn.z).applyMatrix4(vn)):t.push(new M(-Je.x,Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(-Je.x,-Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,-Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(-Je.x,Je.y,-Je.z).add(Dn).applyMatrix4(vn),new M(-Je.x,-Je.y,-Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,-Je.y,-Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,Je.y,-Je.z).add(Dn).applyMatrix4(vn))},jh=class extends tn{constructor(e,t){super(e,t);this.transform=new me;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,!1),this.makeEmpty(),this.transform=e.matrixWorld;let n=new me().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,n,t)}expandByObjectSize(e,t,n=!1){let i=[];return n===!0?e.traverseEntity(s=>d0(s,t,i,"enableHelper"in e&&e.enableHelper)):d0(e,t,i,"enableHelper"in e&&e.enableHelper),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.transform),e}getPositionToCenter(e){return e=super.getCenter(e),e}computeVertices(){this.getSize(Je).multiplyScalar(.5),this.getCenter(Dn),vn.copy(this.transform).setPosition(Dn),this.vertices=[new M(-Je.x,Je.y,Je.z).applyMatrix4(vn),new M(-Je.x,-Je.y,Je.z).applyMatrix4(vn),new M(Je.x,-Je.y,Je.z).applyMatrix4(vn),new M(Je.x,Je.y,Je.z).applyMatrix4(vn),new M(-Je.x,Je.y,-Je.z).applyMatrix4(vn),new M(-Je.x,-Je.y,-Je.z).applyMatrix4(vn),new M(Je.x,-Je.y,-Je.z).applyMatrix4(vn),new M(Je.x,Je.y,-Je.z).applyMatrix4(vn)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new qn(this.vertices[0],this.vertices[3]),new qn(this.vertices[1],this.vertices[2]),new qn(this.vertices[5],this.vertices[6]),new qn(this.vertices[4],this.vertices[7]),new qn(this.vertices[0],this.vertices[1]),new qn(this.vertices[3],this.vertices[2]),new qn(this.vertices[7],this.vertices[6]),new qn(this.vertices[4],this.vertices[5]),new qn(this.vertices[0],this.vertices[4]),new qn(this.vertices[1],this.vertices[5]),new qn(this.vertices[2],this.vertices[6]),new qn(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new M().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new M().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new M().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new M().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new M().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new M().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};function wm(r,e,t,n){if(n===0)return t.copy(r);if(n===1)return t.copy(e);let i=r.w*e.w+r.x*e.x+r.y*e.y+r.z*e.z;if(i>=1)return t.copy(r);let s=1-i*i;if(s<=Number.EPSILON){let u=1-n;return t.w=u*r.w+n*e.w,t.x=u*r.x+n*e.x,t.y=u*r.y+n*e.y,t.z=u*r.z+n*e.z,t.normalize(),t}let o=Math.sqrt(s),a=Math.atan2(o,i),l=Math.sin((1-n)*a)/o,c=Math.sin(n*a)/o;return t.w=r.w*l+e.w*c,t.x=r.x*l+e.x*c,t.y=r.y*l+e.y*c,t.z=r.z*l+e.z*c,t}function o2(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.dot(i)/e.distanceTo(t)}function a2(r,e){return r.clone().dot(e)/e.length()}function l2(r,e,t,n,i=!1){let s=t-r,o=n-e,a=Math.atan2(o,s)*(180/Math.PI);return i&&a<0&&(a=360+a),a}function c2(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e),s=e.distanceTo(r),o=e.distanceTo(t),a=n.dot(i)/(s*o);return Math.acos(a)}function u2(r,e){let t=(r+"e").split("e");return t=(Math.round(Number(t[0]+"e"+(+t[1]+e)))+"e").split("e"),+(t[0]+"e"+(+t[1]-e))}function h2(r,e,t){let n=r[e];r[e]=r[t],r[t]=n}var d2=str=>eval(str.replace(/[^0-9()+\-*/.]/g,"")),C5={slerp:wm,getProjection:o2,projectOnVector:a2,angle2D:l2,angle3D:c2,round:u2,swapArrayValues:h2,evaluate:d2};var Io=new Set;var $i;(function(a){a[a.LINEAR=0]="LINEAR",a[a.EASE=1]="EASE",a[a.EASE_IN=2]="EASE_IN",a[a.EASE_OUT=3]="EASE_OUT",a[a.EASE_IN_OUT=4]="EASE_IN_OUT",a[a.CUBIC=5]="CUBIC",a[a.SPRING=6]="SPRING"})($i||($i={}));var rl=class{constructor(){this.easing=4;this.duration=1e3;this.delay=0;this.cubicControls=[.5,.05,.1,.3];this.springParameters={mass:1,stiffness:80,damping:10,velocity:0};this.repeat=!1;this.cycle=!1;this.rewind=!1}get sp_mass(){return this.springParameters.mass}set sp_mass(e){this.springParameters.mass=e}get sp_stiffness(){return this.springParameters.stiffness}set sp_stiffness(e){this.springParameters.stiffness=e}get sp_damping(){return this.springParameters.damping}set sp_damping(e){this.springParameters.damping=e}get sp_velocity(){return this.springParameters.velocity}set sp_velocity(e){this.springParameters.velocity=e}copy(e){return this.easing=e.easing,this.duration=e.duration,this.delay=e.delay,this.cubicControls=[...e.cubicControls],this.springParameters=Ue({},e.springParameters),this.repeat=e.repeat,this.cycle=e.cycle,this.rewind=e.rewind,this}clone(){return new rl().copy(this)}toJSON(){let e={easing:this.easing,duration:this.duration,delay:this.delay,cubicControls:this.cubicControls,springParameters:Ue({},this.springParameters)};return this.repeat===!0&&(e.repeat=!0),this.cycle===!0&&(e.cycle=!0),this.rewind===!0&&(e.rewind=!0),this.object!==void 0&&(e.object=this.object.uuid),this.state!==void 0&&(e.state=this.state.uuid),e}fromJSON(e,t,n){return this.easing=e.easing,this.duration=e.duration,this.delay=e.delay,this.cubicControls=[...e.cubicControls],this.springParameters.mass=e.springParameters.mass,this.springParameters.stiffness=e.springParameters.stiffness,this.springParameters.damping=e.springParameters.damping,this.springParameters.velocity=e.springParameters.velocity,e.repeat!==void 0&&(this.repeat=e.repeat),e.cycle!==void 0&&(this.cycle=e.cycle),e.rewind!==void 0&&(this.rewind=e.rewind),e.object!==void 0&&(this.object=t[e.object]),e.state!==void 0&&(this.state=n[e.state]),this}};function f2(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}var Ze;(function(h){h[h.MOUSE_DOWN=0]="MOUSE_DOWN",h[h.MOUSE_UP=1]="MOUSE_UP",h[h.MOUSE_HOVER=2]="MOUSE_HOVER",h[h.MOUSE_ENTER=3]="MOUSE_ENTER",h[h.MOUSE_LEAVE=4]="MOUSE_LEAVE",h[h.KEY_DOWN=5]="KEY_DOWN",h[h.KEY_UP=6]="KEY_UP",h[h.START=7]="START",h[h.OPEN_LINK=8]="OPEN_LINK",h[h.LOOK_AT=9]="LOOK_AT",h[h.FOLLOW=10]="FOLLOW"})(Ze||(Ze={}));var sl=class{constructor(e,t){this.targets=[];this.ui={isCollapsed:!1};this._type=e,this.key=t}get type(){return this._type}set type(e){this._type=e,e===9?this.distance=1e3:this.distance=void 0,e!==5&&e!==6&&(this.key=void 0)}newTarget(e){let t=new rl;if(t.object=e,e!==void 0){let n=e.interaction.states;n.length>0&&(t.state=n[n.length-1])}return this.targets.push(t),Io.add(t),t}addTarget(e,t=0){this.targets.splice(t,0,e),Io.add(e)}removeTarget(e){Io.delete(this.targets[e]),this.targets.splice(e,1)}dispatchReverse(){for(let e=0,t=this.targets.length;e<t;++e){let n=this.targets[e];n.state!==void 0&&n.object!==void 0&&n.object.interaction.reverse(n)}}dispatch(){if(this.url!==void 0&&(this._type===8||this._type===0||this._type===1||this._type===5||this._type===6))f2()?window.location.assign(this.url):window.open(this.url,"_blank");else for(let e=0,t=this.targets.length;e<t;++e){let n=this.targets[e];n.state!==void 0&&n.object!==void 0&&n.object.interaction.play(n)}}copy(e){return this._type=e.type,this.key=e.key,this.url=e.url,this.distance=e.distance,this.ui.isCollapsed=e.ui.isCollapsed,this}clone(){return new sl().copy(this)}toJSON(){let e={type:this._type,key:this.key,ui:{isCollapsed:this.ui.isCollapsed}};if(this.url!==void 0&&(e.url=this.url),this.distance!==void 0&&(e.distance=this.distance),this.targets.length>0){e.targets=[];for(let t=0,n=this.targets.length;t<n;++t)e.targets.push(this.targets[t].toJSON())}return e}fromJSON(e,t,n){if(this._type=e.type,this.key=e.key,this.targets=[],this.ui={isCollapsed:e.ui.isCollapsed},this.url=e.url,e.distance!==void 0&&(this.distance=e.distance),e.targets!==void 0)for(let i=0,s=e.targets.length;i<s;++i)this.addTarget(new rl().fromJSON(e.targets[i],t,n),i);return this}};var bs=class{constructor(){this.uuid=Ee.generateUUID();this.name="";this.position=new M;this.rotation=new On;this.scale=new M;this.hiddenMatrix=new me}update(e){this.updateMatrix(e),"geometry"in e&&this.updateGeometry(e),"material"in e&&this.updateMaterial(e),e.objectType==="CombinedCamera"&&this.updateCamera(e)}updateCamera(e){this.camera={zoomPersp:e.perspCamera.zoom,zoomOrtho:e.orthoCamera.zoom,targetOffset:e.targetOffset}}updateMatrix(e){this.position.copy(e.position),this.rotation.copy(e.rotation),this.scale.copy(e.scale),"hiddenMatrix"in e&&this.hiddenMatrix.copy(e.hiddenMatrix)}updateGeometry(e){if("geometry"in e){let{width:t,height:n,depth:i}=e.geometry.userData.parameters;this.geometry={width:t,height:n,depth:i}}}updateMaterial(e){if("material"in e)if(e.material instanceof Array){this.material=[];for(let t=0,n=e.material.length;t<n;++t){let i=e.material[t],s=[],o=i.layersList.head;for(;o;)s.push(o.clone()),o=o.next;this.material.push({layersList:s})}}else{let t=e.material,n=[],i=t.layersList.head;for(;i;)n.push(i.clone()),i=i.next;this.material={layersList:n}}}execute(e){if(e.position.copy(this.position),e.rotation.copy(this.rotation),e.scale.copy(this.scale),"hiddenMatrix"in e&&e.hiddenMatrix.copy(this.hiddenMatrix),"geometry"in e&&this.geometry!==void 0){let n=e.geometry.userData.parameters,i=this.geometry;(i.width!==n.width||i.height!==n.height||i.depth!==n.depth)&&e.updateGeometry({parameters:{width:i.width,height:i.height,depth:i.depth}})}if("material"in e){let t=e.material;if(t instanceof Array){let n=this.material;for(let i=0,s=n.length;i<s;++i){let o=t[i].layersList.head,a=n[i].layersList,l=0;for(;o;)o.copy(a[l++]),o=o.next;t[i].dispose()}}else{if(t.userData.isAsset)return;let n=0,i=t.layersList.head,o=this.material.layersList;for(;i;)i.copyUniforms(o[n++]),i=i.next;t.dispose()}}this.camera&&e.objectType==="CombinedCamera"&&(e=e,e.zoom=e.cameraType==="OrthographicCamera"?this.camera.zoomOrtho:this.camera.zoomPersp,e.targetOffset=this.camera.targetOffset,e.updateProjectionMatrix())}copy(e){if(this.name=e.name,this.position.copy(e.position),this.rotation.copy(e.rotation),this.scale.copy(e.scale),this.hiddenMatrix.copy(e.hiddenMatrix),e.geometry!==void 0&&(this.geometry={width:e.geometry.width,height:e.geometry.height,depth:e.geometry.depth}),e.material!==void 0)if(e.material instanceof Array){this.material=[];for(let t=0,n=e.material.length;t<n;++t)this.material.push({layersList:e.material[t].layersList.map(i=>i.clone())})}else this.material={layersList:e.material.layersList.map(t=>t.clone())};return e.camera!==void 0&&(this.camera={zoomPersp:e.camera.zoomPersp,zoomOrtho:e.camera.zoomOrtho,targetOffset:e.camera.targetOffset}),this}clone(){return new bs().copy(this)}toJSON(e){let t={uuid:this.uuid,name:this.name,position:this.position.toArray(),rotation:this.rotation.toArray(),scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};if(this.geometry!==void 0&&(t.geometry={width:this.geometry.width,height:this.geometry.height,depth:this.geometry.depth}),this.material!==void 0)if(this.material instanceof Array){t.material=[];for(let n=0,i=this.material.length;n<i;++n)t.material.push({layersList:this.material[n].layersList.map(s=>s.toJSON(e))})}else t.material={layersList:this.material.layersList.map(n=>n.toJSON(e))};return this.camera!==void 0&&(t.camera={zoomPersp:this.camera.zoomPersp,zoomOrtho:this.camera.zoomOrtho,targetOffset:this.camera.targetOffset}),t}fromJSON(e,t){var n;if(this.uuid=e.uuid,this.name=e.name,this.position.fromArray(e.position),this.rotation.fromArray(e.rotation),this.scale.fromArray(e.scale),this.hiddenMatrix.fromArray(e.hiddenMatrix),e.geometry!==void 0&&(this.geometry={width:e.geometry.width,height:e.geometry.height,depth:e.geometry.depth}),e.material!==void 0)if(e.material instanceof Array){this.material=[];for(let i=0,s=e.material.length;i<s;++i)this.material.push({layersList:e.material[i].layersList.map(o=>kp(o,t))})}else this.material={layersList:e.material.layersList.map(i=>kp(i,t))};return e.camera!==void 0&&(this.camera={zoomPersp:e.camera.zoomPersp,zoomOrtho:e.camera.zoomOrtho,targetOffset:(n=e.camera.targetOffset)!=null?n:-1}),this}};"use strict";var f0={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},Sm={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},p2=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],Wh={CSS:{},springs:{}};function mr(r,e,t){return Math.min(Math.max(r,e),t)}function Vc(r,e){return r.indexOf(e)>-1}function Mm(r,e){return r.apply(null,e)}var qe={arr:function(r){return Array.isArray(r)},obj:function(r){return Vc(Object.prototype.toString.call(r),"Object")},pth:function(r){return qe.obj(r)&&r.hasOwnProperty("totalLength")},svg:function(r){return r instanceof SVGElement},inp:function(r){return r instanceof HTMLInputElement},dom:function(r){return!("isNode"in r)&&(r.nodeType||qe.svg(r))},str:function(r){return typeof r=="string"},fnc:function(r){return typeof r=="function"},und:function(r){return typeof r=="undefined"},hex:function(r){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(r)},rgb:function(r){return/^rgb/.test(r)},hsl:function(r){return/^hsl/.test(r)},col:function(r){return qe.hex(r)||qe.rgb(r)||qe.hsl(r)},key:function(r){return!f0.hasOwnProperty(r)&&!Sm.hasOwnProperty(r)&&r!=="targets"&&r!=="keyframes"}};function p0(r){var e=/\(([^)]+)\)/.exec(r);return e?e[1].split(",").map(function(t){return parseFloat(t)}):[]}function m0(r,e){var t=p0(r),n=mr(qe.und(t[0])?1:t[0],.1,100),i=mr(qe.und(t[1])?100:t[1],.1,100),s=mr(qe.und(t[2])?10:t[2],.1,100),o=mr(qe.und(t[3])?0:t[3],.1,100),a=Math.sqrt(i/n),l=s/(2*Math.sqrt(i*n)),c=l<1?a*Math.sqrt(1-l*l):0,u=1,h=l<1?(l*a+-o)/c:-o+a;function d(p){var m=e?e*p/1e3:p;return l<1?m=Math.exp(-m*l*a)*(u*Math.cos(c*m)+h*Math.sin(c*m)):m=(u+h*m)*Math.exp(-m*a),p===0||p===1?p:1-m}function f(){var p=Wh.springs[r];if(p)return p;for(var m=1/6,v=0,g=0;;)if(v+=m,d(v)===1){if(g++,g>=16)break}else g=0;var y=v*m*1e3;return Wh.springs[r]=y,y}return e?d:f}function m2(r){return r===void 0&&(r=10),function(e){return Math.ceil(mr(e,1e-6,1)*r)*(1/r)}}var g2=function(){var r=11,e=1/(r-1);function t(u,h){return 1-3*h+3*u}function n(u,h){return 3*h-6*u}function i(u){return 3*u}function s(u,h,d){return((t(h,d)*u+n(h,d))*u+i(h))*u}function o(u,h,d){return 3*t(h,d)*u*u+2*n(h,d)*u+i(h)}function a(u,h,d,f,p){var m,v,g=0;do v=h+(d-h)/2,m=s(v,f,p)-u,m>0?d=v:h=v;while(Math.abs(m)>1e-7&&++g<10);return v}function l(u,h,d,f){for(var p=0;p<4;++p){var m=o(h,d,f);if(m===0)return h;var v=s(h,d,f)-u;h-=v/m}return h}function c(u,h,d,f){if(!(0<=u&&u<=1&&0<=d&&d<=1))return;var p=new Float32Array(r);if(u!==h||d!==f)for(var m=0;m<r;++m)p[m]=s(m*e,u,d);function v(g){for(var y=0,x=1,b=r-1;x!==b&&p[x]<=g;++x)y+=e;--x;var w=(g-p[x])/(p[x+1]-p[x]),_=y+w*e,S=o(_,u,d);return S>=.001?l(g,_,u,d):S===0?_:a(g,y,y+e,u,d)}return function(g){return u===h&&d===f||g===0||g===1?g:s(v(g),h,f)}}return c}(),g0=function(){var r={linear:function(){return function(n){return n}}},e={Sine:function(){return function(n){return 1-Math.cos(n*Math.PI/2)}},Circ:function(){return function(n){return 1-Math.sqrt(1-n*n)}},Back:function(){return function(n){return n*n*(3*n-2)}},Bounce:function(){return function(n){for(var i,s=4;n<((i=Math.pow(2,--s))-1)/11;);return 1/Math.pow(4,3-s)-7.5625*Math.pow((i*3-2)/22-n,2)}},Elastic:function(n,i){n===void 0&&(n=1),i===void 0&&(i=.5);var s=mr(n,1,10),o=mr(i,.1,2);return function(a){return a===0||a===1?a:-s*Math.pow(2,10*(a-1))*Math.sin((a-1-o/(Math.PI*2)*Math.asin(1/s))*(Math.PI*2)/o)}}},t=["Quad","Cubic","Quart","Quint","Expo"];return t.forEach(function(n,i){e[n]=function(){return function(s){return Math.pow(s,i+2)}}}),Object.keys(e).forEach(function(n){var i=e[n];r["easeIn"+n]=i,r["easeOut"+n]=function(s,o){return function(a){return 1-i(s,o)(1-a)}},r["easeInOut"+n]=function(s,o){return function(a){return a<.5?i(s,o)(a*2)/2:1-i(s,o)(a*-2+2)/2}}}),r}();function Am(r,e){if(qe.fnc(r))return r;var t=r.split("(")[0],n=g0[t],i=p0(r);switch(t){case"spring":return m0(r,e);case"cubicBezier":return Mm(g2,i);case"steps":return Mm(m2,i);default:return Mm(n,i)}}function y0(r){try{var e=document.querySelectorAll(r);return e}catch(t){return}}function Jh(r,e){for(var t=r.length,n=arguments.length>=2?arguments[1]:void 0,i=[],s=0;s<t;s++)if(s in r){var o=r[s];e.call(n,o,s,r)&&i.push(o)}return i}function Xh(r){return r.reduce(function(e,t){return e.concat(qe.arr(t)?Xh(t):t)},[])}function v0(r){return qe.arr(r)?r:(qe.str(r)&&(r=y0(r)||r),r instanceof NodeList||r instanceof HTMLCollection?[].slice.call(r):[r])}function _m(r,e){return r.some(function(t){return t===e})}function Tm(r){var e={};for(var t in r)e[t]=r[t];return e}function Em(r,e){var t=Tm(r);for(var n in r)t[n]=e.hasOwnProperty(n)?e[n]:r[n];return t}function qh(r,e){var t=Tm(r);for(var n in e)t[n]=qe.und(r[n])?e[n]:r[n];return t}function y2(r){var e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(r);return e?"rgba("+e[1]+",1)":r}function v2(r){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,t=r.replace(e,function(a,l,c,u){return l+l+c+c+u+u}),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),i=parseInt(n[1],16),s=parseInt(n[2],16),o=parseInt(n[3],16);return"rgba("+i+","+s+","+o+",1)"}function x2(r){var e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(r)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(r),t=parseInt(e[1],10)/360,n=parseInt(e[2],10)/100,i=parseInt(e[3],10)/100,s=e[4]||1;function o(d,f,p){return p<0&&(p+=1),p>1&&(p-=1),p<1/6?d+(f-d)*6*p:p<1/2?f:p<2/3?d+(f-d)*(2/3-p)*6:d}var a,l,c;if(n==0)a=l=c=i;else{var u=i<.5?i*(1+n):i+n-i*n,h=2*i-u;a=o(h,u,t+1/3),l=o(h,u,t),c=o(h,u,t-1/3)}return"rgba("+a*255+","+l*255+","+c*255+","+s+")"}function b2(r){if(qe.rgb(r))return y2(r);if(qe.hex(r))return v2(r);if(qe.hsl(r))return x2(r)}function Gr(r){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(r);if(e)return e[1]}function w2(r){if(Vc(r,"translate")||r==="perspective")return"px";if(Vc(r,"rotate")||Vc(r,"skew"))return"deg"}function Nm(r,e){return qe.fnc(r)?r(e.target,e.id,e.total):r}function gr(r,e){return r.getAttribute(e)}function Cm(r,e,t){var n=Gr(e);if(_m([t,"deg","rad","turn"],n))return e;var i=Wh.CSS[e+t];if(!qe.und(i))return i;var s=100,o=document.createElement(r.tagName),a=r.parentNode&&r.parentNode!==document?r.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=s+t;var l=s/o.offsetWidth;a.removeChild(o);var c=l*parseFloat(e);return Wh.CSS[e+t]=c,c}function x0(r,e,t){if(e in r.style){var n=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),i=r.style[e]||getComputedStyle(r).getPropertyValue(n)||"0";return t?Cm(r,i,t):i}}function Lm(r,e){if(qe.dom(r)&&!qe.inp(r)&&(gr(r,e)||qe.svg(r)&&r[e]))return"attribute";if(qe.dom(r)&&_m(p2,e))return"transform";if(qe.dom(r)&&e!=="transform"&&x0(r,e))return"css";if(r[e]!=null)return"object"}function b0(r){if(!!qe.dom(r)){for(var e=r.style.transform||"",t=/(\w+)\(([^)]*)\)/g,n=new Map,i;i=t.exec(e);)n.set(i[1],i[2]);return n}}function S2(r,e,t,n){var i=Vc(e,"scale")?1:0+w2(e),s=b0(r).get(e)||i;return t&&(t.transforms.list.set(e,s),t.transforms.last=e),n?Cm(r,s,n):s}function Im(r,e,t,n){switch(Lm(r,e)){case"transform":return S2(r,e,n,t);case"css":return x0(r,e,t);case"attribute":return gr(r,e);default:return r[e]||0}}function Pm(r,e){var t=/^(\*=|\+=|-=)/.exec(r);if(!t)return r;var n=Gr(r)||0,i=parseFloat(e),s=parseFloat(r.replace(t[0],""));switch(t[0][0]){case"+":return i+s+n;case"-":return i-s+n;case"*":return i*s+n}}function w0(r,e){if(qe.col(r))return b2(r);if(/\s/g.test(r))return r;var t=Gr(r),n=t?r.substr(0,r.length-t.length):r;return e?n+e:n}function Dm(r,e){return Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))}function M2(r){return Math.PI*2*gr(r,"r")}function A2(r){return gr(r,"width")*2+gr(r,"height")*2}function _2(r){return Dm({x:gr(r,"x1"),y:gr(r,"y1")},{x:gr(r,"x2"),y:gr(r,"y2")})}function S0(r){for(var e=r.points,t=0,n,i=0;i<e.numberOfItems;i++){var s=e.getItem(i);i>0&&(t+=Dm(n,s)),n=s}return t}function T2(r){var e=r.points;return S0(r)+Dm(e.getItem(e.numberOfItems-1),e.getItem(0))}function M0(r){if(r.getTotalLength)return r.getTotalLength();switch(r.tagName.toLowerCase()){case"circle":return M2(r);case"rect":return A2(r);case"line":return _2(r);case"polyline":return S0(r);case"polygon":return T2(r)}}function E2(r){var e=M0(r);return r.setAttribute("stroke-dasharray",e),e}function N2(r){for(var e=r.parentNode;qe.svg(e)&&qe.svg(e.parentNode);)e=e.parentNode;return e}function A0(r,e){var t=e||{},n=t.el||N2(r),i=n.getBoundingClientRect(),s=gr(n,"viewBox"),o=i.width,a=i.height,l=t.viewBox||(s?s.split(" "):[0,0,o,a]);return{el:n,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function C2(r,e){var t=qe.str(r)?y0(r)[0]:r,n=e||100;return function(i){return{property:i,el:t,svg:A0(t),totalLength:M0(t)*(n/100)}}}function L2(r,e){function t(a){a===void 0&&(a=0);var l=e+a>=1?e+a:0;return r.el.getPointAtLength(l)}var n=A0(r.el,r.svg),i=t(),s=t(-1),o=t(1);switch(r.property){case"x":return(i.x-n.x)*n.w;case"y":return(i.y-n.y)*n.h;case"angle":return Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI}}function _0(r,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,n=w0(qe.pth(r)?r.totalLength:r,e)+"";return{original:n,numbers:n.match(t)?n.match(t).map(Number):[0],strings:qe.str(r)||e?n.split(t):[]}}function T0(r){var e=r?Xh(qe.arr(r)?r.map(v0):v0(r)):[];return Jh(e,function(t,n,i){return i.indexOf(t)===n})}function E0(r){var e=T0(r);return e.map(function(t,n){return{target:t,id:n,total:e.length,transforms:{list:b0(t)}}})}function I2(r,e){var t=Tm(e);if(/^spring/.test(t.easing)&&(t.duration=m0(t.easing)),qe.arr(r)){var n=r.length,i=n===2&&!qe.obj(r[0]);i?r={value:r}:qe.fnc(e.duration)||(t.duration=e.duration/n)}var s=qe.arr(r)?r:[r];return s.map(function(o,a){var l=qe.obj(o)&&!qe.pth(o)?o:{value:o};return qe.und(l.delay)&&(l.delay=a?0:e.delay),qe.und(l.endDelay)&&(l.endDelay=a===s.length-1?e.endDelay:0),l}).map(function(o){return qh(o,t)})}function P2(r){for(var e=Jh(Xh(r.map(function(s){return Object.keys(s)})),function(s){return qe.key(s)}).reduce(function(s,o){return s.indexOf(o)<0&&s.push(o),s},[]),t={},n=function(s){var o=e[s];t[o]=r.map(function(a){var l={};for(var c in a)qe.key(c)?c==o&&(l.value=a[c]):l[c]=a[c];return l})},i=0;i<e.length;i++)n(i);return t}function D2(r,e){var t=[],n=e.keyframes;n&&(e=qh(P2(n),e));for(var i in e)qe.key(i)&&t.push({name:i,tweens:I2(e[i],r)});return t}function R2(r,e){var t={};for(var n in r){var i=Nm(r[n],e);qe.arr(i)&&(i=i.map(function(s){return Nm(s,e)}),i.length===1&&(i=i[0])),t[n]=i}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}function B2(r,e){var t;return r.tweens.map(function(n){var i=R2(n,e),s=i.value,o=qe.arr(s)?s[1]:s,a=Gr(o),l=Im(e.target,r.name,a,e),c=t?t.to.original:l,u=qe.arr(s)?s[0]:c,h=Gr(u)||Gr(l),d=a||h;return qe.und(o)&&(o=c),i.from=_0(u,d),i.to=_0(Pm(o,u),d),i.start=t?t.end:0,i.end=i.start+i.delay+i.duration+i.endDelay,i.easing=Am(i.easing,i.duration),i.isPath=qe.pth(s),i.isColor=qe.col(i.from.original),i.isColor&&(i.round=1),t=i,i})}var N0={css:function(r,e,t){return r.style[e]=t},attribute:function(r,e,t){return r.setAttribute(e,t)},object:function(r,e,t){return r[e]=t},transform:function(r,e,t,n,i){if(n.list.set(e,t),e===n.last||i){var s="";n.list.forEach(function(o,a){s+=a+"("+o+") "}),r.style.transform=s}}};function C0(r,e){var t=E0(r);t.forEach(function(n){for(var i in e){var s=Nm(e[i],n),o=n.target,a=Gr(s),l=Im(o,i,a,n),c=a||Gr(l),u=Pm(w0(s,c),l),h=Lm(o,i);N0[h](o,i,u,n.transforms,!0)}})}function O2(r,e){var t=Lm(r.target,e.name);if(t){var n=B2(e,r),i=n[n.length-1];return{type:t,property:e.name,animatable:r,tweens:n,duration:i.end,delay:n[0].delay,endDelay:i.endDelay}}}function F2(r,e){return Jh(Xh(r.map(function(t){return e.map(function(n){return O2(t,n)})})),function(t){return!qe.und(t)})}function L0(r,e){var t=r.length,n=function(s){return s.timelineOffset?s.timelineOffset:0},i={};return i.duration=t?Math.max.apply(Math,r.map(function(s){return n(s)+s.duration})):e.duration,i.delay=t?Math.min.apply(Math,r.map(function(s){return n(s)+s.delay})):e.delay,i.endDelay=t?i.duration-Math.max.apply(Math,r.map(function(s){return n(s)+s.duration-s.endDelay})):e.endDelay,i}var I0=0;function z2(r){var e=Em(f0,r),t=Em(Sm,r),n=D2(t,r),i=E0(r.targets),s=F2(i,n),o=L0(s,t),a=I0;return I0++,qh(e,{id:a,children:[],animatables:i,animations:s,duration:o.duration,delay:o.delay,endDelay:o.endDelay})}var li=[],P0=[],Yh,G2=function(){function r(){Yh=requestAnimationFrame(e)}function e(t){var n=li.length;if(n){for(var i=0;i<n;){var s=li[i];if(!s.paused)s.tick(t);else{var o=li.indexOf(s);o>-1&&(li.splice(o,1),n=li.length)}i++}r()}else Yh=cancelAnimationFrame(Yh)}return r}();function U2(){document.hidden?(li.forEach(function(r){return r.pause()}),P0=li.slice(0),un.running=li=[]):P0.forEach(function(r){return r.play()})}typeof document!="undefined"&&document.addEventListener("visibilitychange",U2);function un(r){r===void 0&&(r={});var e=0,t=0,n=0,i,s=0,o=null;function a(x){var b=window.Promise&&new Promise(function(w){return o=w});return x.finished=b,b}var l=z2(r),c=a(l);function u(){var x=l.direction;x!=="alternate"&&(l.direction=x!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,i.forEach(function(b){return b.reversed=l.reversed})}function h(x){return l.reversed?l.duration-x:x}function d(){e=0,t=h(l.currentTime)*(1/un.speed)}function f(x,b){b&&b.seek(x-b.timelineOffset)}function p(x){if(l.reversePlayback)for(var w=s;w--;)f(x,i[w]);else for(var b=0;b<s;b++)f(x,i[b])}function m(x){var b=0,w=l.animations,_=w.length;for(l.reversePlayback===!0&&l.rewind===!1&&(x=l.duration-x);b<_;){var S=w[b],A=S.animatable,T=S.tweens,L=T.length-1,C=T[L];L&&(C=Jh(T,function(ae){return x<ae.end})[0]||C);for(var U=mr(x-C.start-C.delay,0,C.duration)/C.duration,P=isNaN(U)?1:C.easing(U),R=C.to.strings,G=C.round,B=[],j=C.to.numbers.length,ne=void 0,le=0;le<j;le++){var W=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var z=C.to.numbers[le],D=C.from.numbers[le]||0;else var D=C.to.numbers[le],z=C.from.numbers[le]||0;C.isPath?W=L2(C.value,P*D):W=z+P*(D-z),G&&(C.isColor&&le>2||(W=Math.round(W*G)/G)),B.push(W)}var K=R.length;if(!K)ne=B[0];else{ne=R[0];for(var q=0;q<K;q++){var ee=R[q],V=R[q+1],de=B[q];isNaN(de)||(V?ne+=de+V:ne+=de+" ")}}N0[S.type](A.target,S.property,ne,A.transforms),S.currentValue=ne,b++}}function v(x){l[x]&&!l.passThrough&&l[x](l)}function g(){l.remaining&&l.remaining!==!0&&l.remaining--}function y(x){var b=l.duration,w=l.delay,_=b-l.endDelay,S=h(x);l.progress=mr(S/b*100,0,100),l.reversePlayback=S<l.currentTime,i&&p(S),!l.began&&l.currentTime>0&&(l.began=!0,v("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,v("loopBegin")),S<=w&&l.currentTime!==0&&m(0),(S>=_&&l.currentTime!==b||!b)&&m(b),S>w&&S<_?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,v("changeBegin")),v("change"),m(S)):l.changeBegan&&(l.changeCompleted=!0,l.changeBegan=!1,v("changeComplete")),l.currentTime=mr(S,0,b),l.began&&v("update"),x>=b&&(t=0,g(),l.remaining?(e=n,v("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&u()):(l.paused=!0,l.completed||(l.completed=!0,v("loopComplete"),v("complete"),!l.passThrough&&"Promise"in window&&(o(),c=a(l)))))}return l.reset=function(){var x=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=x==="reverse",l.remaining=l.loop,i=l.children,s=i.length;for(var b=s;b--;)l.children[b].reset();(l.reversed&&l.loop!==!0||x==="alternate"&&l.loop===1)&&l.remaining++,m(l.reversed?l.duration:0)},l.set=function(x,b){return C0(x,b),l},l.tick=function(x){n=x,e||(e=n),y((n+(t-e))*un.speed)},l.seek=function(x){y(h(x))},l.pause=function(){l.paused=!0,d()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,li.push(l),d(),Yh||G2())},l.reverse=function(){u(),l.completed=!l.reversed,d()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function D0(r,e){for(var t=e.length;t--;)_m(r,e[t].animatable.target)&&e.splice(t,1)}function k2(r){for(var e=T0(r),t=li.length;t--;){var n=li[t],i=n.animations,s=n.children;D0(e,i);for(var o=s.length;o--;){var a=s[o],l=a.animations;D0(e,l),!l.length&&!a.children.length&&s.splice(o,1)}!i.length&&!s.length&&n.pause()}}function V2(r,e){e===void 0&&(e={});var t=e.direction||"normal",n=e.easing?Am(e.easing):null,i=e.grid,s=e.axis,o=e.from||0,a=o==="first",l=o==="center",c=o==="last",u=qe.arr(r),h=parseFloat(u?r[0]:r),d=u?parseFloat(r[1]):0,f=Gr(u?r[1]:r)||0,p=e.start||0+(u?h:0),m=[],v=0;return function(g,y,x){if(a&&(o=0),l&&(o=(x-1)/2),c&&(o=x-1),!m.length){for(var b=0;b<x;b++){if(!i)m.push(Math.abs(o-b));else{var w=l?(i[0]-1)/2:o%i[0],_=l?(i[1]-1)/2:Math.floor(o/i[0]),S=b%i[0],A=Math.floor(b/i[0]),T=w-S,L=_-A,C=Math.sqrt(T*T+L*L);s==="x"&&(C=-T),s==="y"&&(C=-L),m.push(C)}v=Math.max.apply(Math,m)}n&&(m=m.map(function(P){return n(P/v)*v})),t==="reverse"&&(m=m.map(function(P){return s?P<0?P*-1:-P:Math.abs(v-P)}))}var U=u?(d-h)/v:h;return p+U*(Math.round(m[y]*100)/100)+f}}function H2(r){r===void 0&&(r={});var e=un(r);return e.duration=0,e.add=function(t,n){var i=li.indexOf(e),s=e.children;i>-1&&li.splice(i,1);function o(d){d.passThrough=!0}for(var a=0;a<s.length;a++)o(s[a]);var l=qh(t,Em(Sm,r));l.targets=l.targets||r.targets;var c=e.duration;l.autoplay=!1,l.direction=e.direction,l.timelineOffset=qe.und(n)?c:Pm(n,c),o(e),l.rewind=e.rewind,e.seek(l.timelineOffset);var u=un(l);o(u),s.push(u);var h=L0(s,r);return e.delay=h.delay,e.endDelay=h.endDelay,e.duration=h.duration,e.seek(0),e.reset(),e.autoplay&&e.play(),e},e}un.version="3.2.0";un.speed=1;un.running=li;un.remove=k2;un.get=Im;un.set=C0;un.convertPx=Cm;un.path=C2;un.setDashoffset=E2;un.stagger=V2;un.timeline=H2;un.easing=Am;un.penner=g0;un.random=function(r,e){return Math.floor(Math.random()*(e-r+1))+r};var Hc=un;var Rm=class{constructor(e){this.i=e}updateObject(){this.i.selectedState!==void 0&&this.i.states[this.i.selectedState].updateMatrix(this.i.object)}updateCamera(){this.i.selectedState===void 0||this.i.object.objectType!=="CombinedCamera"||(this.i.states[this.i.selectedState].updateMatrix(this.i.object),this.i.states[this.i.selectedState].updateCamera(this.i.object))}updateGeometry(){this.i.selectedState===void 0||ai(this.i.object)===!1||(this.i.states[this.i.selectedState].updateMatrix(this.i.object),this.i.states[this.i.selectedState].updateGeometry(this.i.object))}updateSceneGraph(e,t){let n=new me,i=new me;e.updateWorldMatrix(!0,!1),i.copy(e.matrixWorld).invert();for(let s=0,o=this.i.states.length;s<o;++s){let a=this.i.states[s];n.copy(i),this.i.object.parent!==null&&(this.i.object.parent.updateWorldMatrix(!0,!1),n.multiply(this.i.object.parent.matrixWorld)),a.hiddenMatrix.premultiply(n)}}updateMaterialLayer(e){if(this.i.selectedState===void 0||ai(this.i.object)===!1)return;let n=this.i.object.selectedMaterial,i=this.i.states[this.i.selectedState],o=(n!==void 0?i.material[n]:i.material).layersList.find(a=>a.id===e.id);o==null||o.copy(e)}pushMaterialLayer(e){if(this.i.states.length===0||ai(this.i.object)===!1)return;let t=this.i.object;if(t.material instanceof Array){let n=t.selectedMaterial;if(n!==void 0)for(let i=0,s=this.i.states.length;i<s;++i){let o=e.clone();this.i.selectedState!==i&&(o.uniforms[`f${o.id}_alpha`].value=0),this.i.states[i].material[n].layersList.push(o)}}else for(let n=0,i=this.i.states.length;n<i;++n){let s=e.clone();this.i.selectedState!==n&&(s.uniforms[`f${s.id}_alpha`].value=0),this.i.states[n].material.layersList.push(s)}}popMaterialLayer(){if(this.i.states.length===0||ai(this.i.object)===!1)return;let e=this.i.object;if(e.material instanceof Array){let t=e.selectedMaterial;if(t!==void 0)for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material[t].layersList.pop()}else for(let t=0,n=this.i.states.length;t<n;++t)this.i.states[t].material.layersList.pop()}removeMaterialLayer(e){if(this.i.states.length===0||ai(this.i.object)===!1)return null;let t=this.i.object,n=[];if(t.material instanceof Array)for(let i=0,s=this.i.states.length;i<s;++i){let o=t.selectedMaterial;if(o!==void 0){let l=this.i.states[i].material[o];n.push({layer:l.layersList[e]}),l.layersList.splice(e,1)}}else for(let i=0,s=this.i.states.length;i<s;++i){let a=this.i.states[i].material;n.push({layer:a.layersList[e]}),a.layersList.splice(e,1)}return{states:n,pos:e}}restoreMaterialLayerRemoved(e){if(this.i.states.length===0||ai(this.i.object)===!1)return;let t=this.i.object;if(t.material instanceof Array)for(let n=0,i=this.i.states.length;n<i;++n){let s=t.selectedMaterial;s!==void 0&&this.i.states[n].material[s].layersList.splice(e.pos,0,e.states[n].layer)}else for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material.layersList.splice(e.pos,0,e.states[n].layer)}changeMaterialLayer(e){if(this.i.states.length===0||ai(this.i.object)===!1)return null;let t=this.i.object,n=[],i=0;if(t.material instanceof Array){let s=t.selectedMaterial;if(s!==void 0){let l=this.i.states[Number(this.i.selectedState)].material[s].layersList;for(let c=0,u=l.length;c<u;++c)if(l[c].id===e.id){i=c;break}for(let c=0,u=this.i.states.length;c<u;++c){let h=this.i.states[c].material[s].layersList[i],d=e.clone();this.i.selectedState!==c&&(d.uniforms[`f${d.id}_alpha`].value=Number(h.uniforms[`f${h.id}_alpha`].value)),this.i.states[c].material[s].layersList[i]=d,n.push({layer:h})}}}else{let s=this.i.states[Number(this.i.selectedState)].material.layersList;for(let o=0,a=s.length;o<a;++o)if(s[o].id===e.id){i=o;break}for(let o=0,a=this.i.states.length;o<a;++o){let l=this.i.states[o].material.layersList[i],c=e.clone();this.i.selectedState!==o&&(c.uniforms[`f${c.id}_alpha`].value=Number(l.uniforms[`f${l.id}_alpha`].value)),this.i.states[o].material.layersList[i]=c,n.push({layer:l})}}return{states:n,pos:i}}restoreMaterialLayerChanged(e){if(this.i.states.length===0||ai(this.i.object)===!1)return;let t=this.i.object;if(t.material instanceof Array){let n=t.selectedMaterial;if(n!==void 0)for(let i=0,s=this.i.states.length;i<s;++i)this.i.states[i].material[n].layersList[e.pos]=e.states[i].layer}else for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material.layersList[e.pos]=e.states[n].layer}moveMaterialLayer(e,t){if(this.i.states.length===0||ai(this.i.object)===!1)return;let n=this.i.object;if(n.material instanceof Array){let i=n.selectedMaterial;if(i!==void 0)for(let s=0,o=this.i.states.length;s<o;++s){let a=this.i.states[s].material[i].layersList,l=a.splice(t,1)[0];a.splice(e,0,l)}}else for(let i=0,s=this.i.states.length;i<s;++i){let o=this.i.states[i].material.layersList,a=o.splice(t,1)[0];o.splice(e,0,a)}}restoreMaterialLayerMoved(e,t){this.moveMaterialLayer(e,t)}setMaterialLayers(e){let t=this.i.object,n=[];if(t.material instanceof Array){let i=t.selectedMaterial;if(i!==void 0)for(let s=0,o=this.i.states.length;s<o;++s){let a=this.i.states[s].material[i];n.push({layersList:a.layersList});let l=e.head;for(a.layersList=[];l!==void 0;)a.layersList.push(l.clone()),l=l.next}}else for(let i=0,s=this.i.states.length;i<s;++i){let o=this.i.states[i].material;n.push({layersList:o.layersList});let a=e.head;for(o.layersList=[];a!==void 0;)o.layersList.push(a.clone()),a=a.next}return{states:n}}restoreMaterialLayersSet(e){let t=this.i.object;if(t.material instanceof Array){let n=t.selectedMaterial;if(n!==void 0)for(let i=0,s=this.i.states.length;i<s;++i)this.i.states[i].material[n].layersList=e.states[i].layersList}else for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material.layersList=e.states[n].layersList}};function R0(r){var o;let e=[],t=r.groups,n=r.getAttribute("position").array,i=r.getAttribute("normal").array,s=(o=r.getAttribute("uv"))==null?void 0:o.array;return t.forEach(a=>{let l=a.count,c=new we,u=new Float32Array(l*3),h=new Float32Array(l*3),d=new Float32Array(l*2);for(let f=0;f<l;f++){let p=3*(a.start+f),m=3*f;if(u[m]=n[p],u[m+1]=n[p+1],u[m+2]=n[p+2],h[m]=i[p],h[m+1]=i[p+1],h[m+2]=i[p+2],s){let v=2*(a.start+f),g=2*f;d[g]=s[v],d[g+1]=s[v+1]}}c.setAttribute("position",new ge(u,3)),c.setAttribute("normal",new ge(h,3)),s&&c.setAttribute("uv",new ge(d,2)),e.push(c)}),e}var jc=class{constructor(){this.pluginCallbacks=[],this.register(function(e){return new k0(e)}),this.register(function(e){return new V0(e)}),this.register(function(e){return new H0(e)}),this.register(function(e){return new j0(e)}),this.register(function(e){return new W0(e)})}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n){let i=new U0,s=[];for(let o=0,a=this.pluginCallbacks.length;o<a;o++)s.push(this.pluginCallbacks[o](i));i.setPlugins(s),i.write(e,t,n)}},Et={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},wi={};wi[Pt]=Et.NEAREST;wi[Xs]=Et.NEAREST_MIPMAP_NEAREST;wi[qs]=Et.NEAREST_MIPMAP_LINEAR;wi[$e]=Et.LINEAR;wi[jo]=Et.LINEAR_MIPMAP_NEAREST;wi[Ai]=Et.LINEAR_MIPMAP_LINEAR;wi[Zt]=Et.CLAMP_TO_EDGE;wi[di]=Et.REPEAT;wi[qr]=Et.MIRRORED_REPEAT;var B0={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},O0=12,j2=1179937895,W2=2,F0=8,J2=1313821514,X2=5130562;function Wc(r,e){return r.length===e.length&&r.every(function(t,n){return t===e[n]})}function q2(r){if(window.TextEncoder!==void 0)return new TextEncoder().encode(r).buffer;let e=new Uint8Array(new ArrayBuffer(r.length));for(let t=0,n=r.length;t<n;t++){let i=r.charCodeAt(t);e[t]=i>255?32:i}return e.buffer}function Y2(r){return Wc(r.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function K2(r,e,t){let n={min:new Array(r.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(r.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let i=e;i<e+t;i++)for(let s=0;s<r.itemSize;s++){let o;r.itemSize>4?o=r.array[i*r.itemSize+s]:s===0?o=r.getX(i):s===1?o=r.getY(i):s===2?o=r.getZ(i):s===3&&(o=r.getW(i)),n.min[s]=Math.min(n.min[s],o),n.max[s]=Math.max(n.max[s],o)}return n}function z0(r){return Math.ceil(r/4)*4}function Bm(r,e=0){let t=z0(r.byteLength);if(t!==r.byteLength){let n=new Uint8Array(t);if(n.set(new Uint8Array(r)),e!==0)for(let i=r.byteLength;i<t;i++)n[i]=e;return n.buffer}return r}var G0=null,U0=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}write(e,t,n){this.options=Object.assign({},{binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},n),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e);let i=this;Promise.all(this.pending).then(function(){let s=i.buffers,o=i.json,a=i.options,l=i.extensionsUsed,c=new Blob(s,{type:"application/octet-stream"}),u=Object.keys(l);if(u.length>0&&(o.extensionsUsed=u),o.buffers&&o.buffers.length>0&&(o.buffers[0].byteLength=c.size),a.binary===!0){let h=new window.FileReader;h.readAsArrayBuffer(c),h.onloadend=function(){let d=Bm(h.result),f=new DataView(new ArrayBuffer(F0));f.setUint32(0,d.byteLength,!0),f.setUint32(4,X2,!0);let p=Bm(q2(JSON.stringify(o)),32),m=new DataView(new ArrayBuffer(F0));m.setUint32(0,p.byteLength,!0),m.setUint32(4,J2,!0);let v=new ArrayBuffer(O0),g=new DataView(v);g.setUint32(0,j2,!0),g.setUint32(4,W2,!0);let y=O0+m.byteLength+p.byteLength+f.byteLength+d.byteLength;g.setUint32(8,y,!0);let x=new Blob([v,m,p,f,d],{type:"application/octet-stream"}),b=new window.FileReader;b.readAsArrayBuffer(x),b.onloadend=function(){t(b.result)}}}else if(o.buffers&&o.buffers.length>0){let h=new window.FileReader;h.readAsDataURL(c),h.onloadend=function(){let d=h.result;o.buffers[0].uri=d,t(o)}}else t(o)})}serializeUserData(e,t){if(Object.keys(e.userData).length===0)return;let n=this.options,i=this.extensionsUsed;try{let s=JSON.parse(JSON.stringify(e.userData));if(n.includeCustomExtensions&&s.gltfExtensions){t.extensions===void 0&&(t.extensions={});for(let o in s.gltfExtensions)t.extensions[o]=s.gltfExtensions[o],i[o]=!0;delete s.gltfExtensions}Object.keys(s).length>0&&(t.extras=s)}catch(s){console.warn("THREE.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+s.message)}}getUID(e){return this.uids.has(e)||this.uids.set(e,this.uid++),this.uids.get(e)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let n=new M;for(let i=0,s=e.count;i<s;i++)if(Math.abs(n.fromBufferAttribute(e,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);let n=e.clone(),i=new M;for(let s=0,o=n.count;s<o;s++)i.fromBufferAttribute(n,s),i.x===0&&i.y===0&&i.z===0?i.setX(1):i.normalize(),n.setXYZ(s,i.x,i.y,i.z);return t.attributesNormalized.set(e,n),n}applyTextureTransform(e,t){let n=!1,i={};(t.offset.x!==0||t.offset.y!==0)&&(i.offset=t.offset.toArray(),n=!0),t.rotation!==0&&(i.rotation=t.rotation,n=!0),(t.repeat.x!==1||t.repeat.y!==1)&&(i.scale=t.repeat.toArray(),n=!0),n&&(e.extensions=e.extensions||{},e.extensions.KHR_texture_transform=i,this.extensionsUsed.KHR_texture_transform=!0)}processBuffer(e){let t=this.json,n=this.buffers;return t.buffers||(t.buffers=[{byteLength:0}]),n.push(e),0}processBufferView(e,t,n,i,s){let o=this.json;o.bufferViews||(o.bufferViews=[]);let a;t===Et.UNSIGNED_BYTE?a=1:t===Et.UNSIGNED_SHORT?a=2:a=4;let l=z0(i*e.itemSize*a),c=new DataView(new ArrayBuffer(l)),u=0;for(let f=n;f<n+i;f++)for(let p=0;p<e.itemSize;p++){let m;e.itemSize>4?m=e.array[f*e.itemSize+p]:p===0?m=e.getX(f):p===1?m=e.getY(f):p===2?m=e.getZ(f):p===3&&(m=e.getW(f)),t===Et.FLOAT?c.setFloat32(u,m,!0):t===Et.UNSIGNED_INT?c.setUint32(u,m,!0):t===Et.UNSIGNED_SHORT?c.setUint16(u,m,!0):t===Et.UNSIGNED_BYTE&&c.setUint8(u,m),u+=a}let h={buffer:this.processBuffer(c.buffer),byteOffset:this.byteOffset,byteLength:l};return s!==void 0&&(h.target=s),s===Et.ARRAY_BUFFER&&(h.byteStride=e.itemSize*a),this.byteOffset+=l,o.bufferViews.push(h),{id:o.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,n=t.json;return n.bufferViews||(n.bufferViews=[]),new Promise(function(i){let s=new window.FileReader;s.readAsArrayBuffer(e),s.onloadend=function(){let o=Bm(s.result),a={buffer:t.processBuffer(o),byteOffset:t.byteOffset,byteLength:o.byteLength};t.byteOffset+=o.byteLength,i(n.bufferViews.push(a)-1)}})}processAccessor(e,t,n,i){let s=this.options,o=this.json,a={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"},l;if(e.array.constructor===Float32Array)l=Et.FLOAT;else if(e.array.constructor===Uint32Array)l=Et.UNSIGNED_INT;else if(e.array.constructor===Uint16Array)l=Et.UNSIGNED_SHORT;else if(e.array.constructor===Uint8Array)l=Et.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(n===void 0&&(n=0),i===void 0&&(i=e.count),s.truncateDrawRange&&t!==void 0&&t.index===null){let f=n+i,p=t.drawRange.count===1/0?e.count:t.drawRange.start+t.drawRange.count;n=Math.max(n,t.drawRange.start),i=Math.min(f,p)-n,i<0&&(i=0)}if(i===0)return null;let c=K2(e,n,i),u;t!==void 0&&(u=e===t.index?Et.ELEMENT_ARRAY_BUFFER:Et.ARRAY_BUFFER);let h=this.processBufferView(e,l,n,i,u),d={bufferView:h.id,byteOffset:h.byteOffset,componentType:l,count:i,max:c.max,min:c.min,type:a[e.itemSize]};return e.normalized===!0&&(d.normalized=!0),o.accessors||(o.accessors=[]),o.accessors.push(d)-1}processImage(e,t,n){let i=this,s=i.cache,o=i.json,a=i.options,l=i.pending;s.images.has(e)||s.images.set(e,{});let c=s.images.get(e),u=t===zt?"image/png":"image/jpeg",h=u+":flipY/"+n.toString();if(c[h]!==void 0)return c[h];o.images||(o.images=[]);let d={mimeType:u};if(a.embedImages){let p=G0=G0||document.createElement("canvas");p.width=Math.min(e.width,a.maxTextureSize),p.height=Math.min(e.height,a.maxTextureSize);let m=p.getContext("2d");if(n===!0&&(m.translate(0,p.height),m.scale(1,-1)),typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)m.drawImage(e,0,0,p.width,p.height);else{t!==zt&&t!==Nt&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(e.width>a.maxTextureSize||e.height>a.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);let v=new Uint8ClampedArray(e.height*e.width*4);if(t===zt)for(let g=0;g<v.length;g+=4)v[g+0]=e.data[g+0],v[g+1]=e.data[g+1],v[g+2]=e.data[g+2],v[g+3]=e.data[g+3];else for(let g=0,y=0;g<v.length;g+=4,y+=3)v[g+0]=e.data[y+0],v[g+1]=e.data[y+1],v[g+2]=e.data[y+2],v[g+3]=255;m.putImageData(new ImageData(v,e.width,e.height),0,0)}a.binary===!0?l.push(new Promise(function(v){p.toBlob(function(g){i.processBufferViewImage(g).then(function(y){d.bufferView=y,v()})},u)})):d.uri=p.toDataURL(u)}else d.uri=e.src;let f=o.images.push(d)-1;return c[h]=f,f}processSampler(e){let t=this.json;t.samplers||(t.samplers=[]);let n={magFilter:wi[e.magFilter],minFilter:wi[e.minFilter],wrapS:wi[e.wrapS],wrapT:wi[e.wrapT]};return t.samplers.push(n)-1}processTexture(e){let t=this.cache,n=this.json;if(t.textures.has(e))return t.textures.get(e);n.textures||(n.textures=[]);let i={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY)};e.name&&(i.name=e.name),this._invokeAll(function(o){o.writeTexture&&o.writeTexture(e,i)});let s=n.textures.push(i)-1;return t.textures.set(e,s),s}processMaterial(e){let t=this.cache,n=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;n.materials||(n.materials=[]);let i={pbrMetallicRoughness:{}};e.isMeshStandardMaterial!==!0&&e.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let s=e.color.toArray().concat([e.opacity]);if(Wc(s,[1,1,1,1])||(i.pbrMetallicRoughness.baseColorFactor=s),e.isMeshStandardMaterial?(i.pbrMetallicRoughness.metallicFactor=e.metalness,i.pbrMetallicRoughness.roughnessFactor=e.roughness):(i.pbrMetallicRoughness.metallicFactor=.5,i.pbrMetallicRoughness.roughnessFactor=.5),e.metalnessMap||e.roughnessMap)if(e.metalnessMap===e.roughnessMap){let a={index:this.processTexture(e.metalnessMap)};this.applyTextureTransform(a,e.metalnessMap),i.pbrMetallicRoughness.metallicRoughnessTexture=a}else console.warn("THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.");if(e.map){let a={index:this.processTexture(e.map)};this.applyTextureTransform(a,e.map),i.pbrMetallicRoughness.baseColorTexture=a}if(e.emissive){let a=e.emissive.clone().multiplyScalar(e.emissiveIntensity),l=Math.max(a.r,a.g,a.b);if(l>1&&(a.multiplyScalar(1/l),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),l>0&&(i.emissiveFactor=a.toArray()),e.emissiveMap){let c={index:this.processTexture(e.emissiveMap)};this.applyTextureTransform(c,e.emissiveMap),i.emissiveTexture=c}}if(e.normalMap){let a={index:this.processTexture(e.normalMap)};e.normalScale&&e.normalScale.x!==1&&(a.scale=e.normalScale.x),this.applyTextureTransform(a,e.normalMap),i.normalTexture=a}if(e.aoMap){let a={index:this.processTexture(e.aoMap),texCoord:1};e.aoMapIntensity!==1&&(a.strength=e.aoMapIntensity),this.applyTextureTransform(a,e.aoMap),i.occlusionTexture=a}e.transparent?i.alphaMode="BLEND":e.alphaTest>0&&(i.alphaMode="MASK",i.alphaCutoff=e.alphaTest),e.side===Xt&&(i.doubleSided=!0),e.name!==""&&(i.name=e.name),this.serializeUserData(e,i),this._invokeAll(function(a){a.writeMaterial&&a.writeMaterial(e,i)});let o=n.materials.push(i)-1;return t.materials.set(e,o),o}processMesh(e){let t=this.cache,n=this.json,i=[e.geometry.uuid];if(Array.isArray(e.material))for(let x=0,b=e.material.length;x<b;x++)i.push(e.material[x].uuid);else i.push(e.material.uuid);let s=i.join(":");if(t.meshes.has(s))return t.meshes.get(s);let o=e.geometry,a;if(e.isLineSegments?a=Et.LINES:e.isLineLoop?a=Et.LINE_LOOP:e.isLine?a=Et.LINE_STRIP:e.isPoints?a=Et.POINTS:a=e.material.wireframe?Et.LINES:Et.TRIANGLES,o.isBufferGeometry!==!0)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");let l={},c={},u=[],h=[],d={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},f=o.getAttribute("normal");f!==void 0&&!this.isNormalizedNormalAttribute(f)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),o.setAttribute("normal",this.createNormalizedNormalAttribute(f)));let p=null;for(let x in o.attributes){if(x.substr(0,5)==="morph")continue;let b=o.attributes[x];if(x=d[x]||x.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(x)||(x="_"+x),t.attributes.has(this.getUID(b))){c[x]=t.attributes.get(this.getUID(b));continue}p=null;let _=b.array;x==="JOINTS_0"&&!(_ instanceof Uint16Array)&&!(_ instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),p=new Re(new Uint16Array(_),b.itemSize,b.normalized));let S=this.processAccessor(p||b,o);S!==null&&(c[x]=S,t.attributes.set(this.getUID(b),S))}if(f!==void 0&&o.setAttribute("normal",f),Object.keys(c).length===0)return null;if(e.morphTargetInfluences!==void 0&&e.morphTargetInfluences.length>0){let x=[],b=[],w={};if(e.morphTargetDictionary!==void 0)for(let _ in e.morphTargetDictionary)w[e.morphTargetDictionary[_]]=_;for(let _=0;_<e.morphTargetInfluences.length;++_){let S={},A=!1;for(let T in o.morphAttributes){if(T!=="position"&&T!=="normal"){A||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),A=!0);continue}let L=o.morphAttributes[T][_],C=T.toUpperCase(),U=o.attributes[T];if(t.attributes.has(this.getUID(L))){S[C]=t.attributes.get(this.getUID(L));continue}let P=L.clone();if(!o.morphTargetsRelative)for(let R=0,G=L.count;R<G;R++)P.setXYZ(R,L.getX(R)-U.getX(R),L.getY(R)-U.getY(R),L.getZ(R)-U.getZ(R));S[C]=this.processAccessor(P,o),t.attributes.set(this.getUID(U),S[C])}h.push(S),x.push(e.morphTargetInfluences[_]),e.morphTargetDictionary!==void 0&&b.push(w[_])}l.weights=x,b.length>0&&(l.extras={},l.extras.targetNames=b)}let m=Array.isArray(e.material);if(m&&o.groups.length===0)return null;let v=m?e.material:[e.material],g=m?o.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let x=0,b=g.length;x<b;x++){let w={mode:a,attributes:c};if(this.serializeUserData(o,w),h.length>0&&(w.targets=h),o.index!==null){let S=this.getUID(o.index);(g[x].start!==void 0||g[x].count!==void 0)&&(S+=":"+g[x].start+":"+g[x].count),t.attributes.has(S)?w.indices=t.attributes.get(S):(w.indices=this.processAccessor(o.index,o,g[x].start,g[x].count),t.attributes.set(S,w.indices)),w.indices===null&&delete w.indices}let _=this.processMaterial(v[g[x].materialIndex]);_!==null&&(w.material=_),u.push(w)}l.primitives=u,n.meshes||(n.meshes=[]),this._invokeAll(function(x){x.writeMesh&&x.writeMesh(e,l)});let y=n.meshes.push(l)-1;return t.meshes.set(s,y),y}processCamera(e){let t=this.json;t.cameras||(t.cameras=[]);let n=e.isOrthographicCamera,i={type:n?"orthographic":"perspective"};return n?i.orthographic={xmag:e.right*2,ymag:e.top*2,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:i.perspective={aspectRatio:e.aspect,yfov:Ee.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},e.name!==""&&(i.name=e.type),t.cameras.push(i)-1}processAnimation(e,t){let n=this.json,i=this.nodeMap;n.animations||(n.animations=[]),e=jc.Utils.mergeMorphTargetTracks(e.clone(),t);let s=e.tracks,o=[],a=[];for(let l=0;l<s.length;++l){let c=s[l],u=nt.parseTrackName(c.name),h=nt.findNode(t,u.nodeName),d=B0[u.propertyName];if(u.objectName==="bones"&&(h.isSkinnedMesh===!0?h=h.skeleton.getBoneByName(u.objectIndex):h=void 0),!h||!d)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',c.name),null;let f=1,p=c.values.length/c.times.length;d===B0.morphTargetInfluences&&(p/=h.morphTargetInfluences.length);let m;c.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(m="CUBICSPLINE",p/=3):c.getInterpolation()===Yr?m="STEP":m="LINEAR",a.push({input:this.processAccessor(new Re(c.times,f)),output:this.processAccessor(new Re(c.values,p)),interpolation:m}),o.push({sampler:a.length-1,target:{node:i.get(h),path:d}})}return n.animations.push({name:e.name||"clip_"+n.animations.length,samplers:a,channels:o}),n.animations.length-1}processSkin(e){let t=this.json,n=this.nodeMap,i=t.nodes[n.get(e)],s=e.skeleton;if(s===void 0)return null;let o=e.skeleton.bones[0];if(o===void 0)return null;let a=[],l=new Float32Array(s.bones.length*16),c=new me;for(let h=0;h<s.bones.length;++h)a.push(n.get(s.bones[h])),c.copy(s.boneInverses[h]),c.multiply(e.bindMatrix).toArray(l,h*16);return t.skins===void 0&&(t.skins=[]),t.skins.push({inverseBindMatrices:this.processAccessor(new Re(l,16)),joints:a,skeleton:n.get(o)}),i.skin=t.skins.length-1}processNode(e){let t=this.json,n=this.options,i=this.nodeMap;t.nodes||(t.nodes=[]);let s={};if(n.trs){let a=e.quaternion.toArray(),l=e.position.toArray(),c=e.scale.toArray();Wc(a,[0,0,0,1])||(s.rotation=a),Wc(l,[0,0,0])||(s.translation=l),Wc(c,[1,1,1])||(s.scale=c)}else e.matrixAutoUpdate&&e.updateMatrix(),Y2(e.matrix)===!1&&(s.matrix=e.matrix.elements);if(e.name!==""&&(s.name=String(e.name)),this.serializeUserData(e,s),e.isMesh||e.isLine||e.isPoints){let a=this.processMesh(e);a!==null&&(s.mesh=a)}else e.isCamera&&(s.camera=this.processCamera(e));if(e.isSkinnedMesh&&this.skins.push(e),e.children.length>0){let a=[];for(let l=0,c=e.children.length;l<c;l++){let u=e.children[l];if(u.visible||n.onlyVisible===!1){let h=this.processNode(u);h!==null&&a.push(h)}}a.length>0&&(s.children=a)}this._invokeAll(function(a){a.writeNode&&a.writeNode(e,s)});let o=t.nodes.push(s)-1;return i.set(e,o),o}processScene(e){let t=this.json,n=this.options;t.scenes||(t.scenes=[],t.scene=0);let i={};e.name!==""&&(i.name=e.name),t.scenes.push(i);let s=[];for(let o=0,a=e.children.length;o<a;o++){let l=e.children[o];if(l.visible||n.onlyVisible===!1){let c=this.processNode(l);c!==null&&s.push(c)}}s.length>0&&(i.nodes=s),this.serializeUserData(e,i)}processObjects(e){let t=new An;t.name="AuxScene";for(let n=0;n<e.length;n++)t.children.push(e[n]);this.processScene(t)}processInput(e){let t=this.options;e=e instanceof Array?e:[e],this._invokeAll(function(i){i.beforeParse&&i.beforeParse(e)});let n=[];for(let i=0;i<e.length;i++)e[i]instanceof An?this.processScene(e[i]):n.push(e[i]);n.length>0&&this.processObjects(n);for(let i=0;i<this.skins.length;++i)this.processSkin(this.skins[i]);for(let i=0;i<t.animations.length;++i)this.processAnimation(t.animations[i],e[0]);this._invokeAll(function(i){i.afterParse&&i.afterParse(e)})}_invokeAll(e){for(let t=0,n=this.plugins.length;t<n;t++)e(this.plugins[t])}},k0=class{constructor(e){this.writer=e,this.name="KHR_lights_punctual"}writeNode(e,t){if(!e.isLight)return;if(!e.isDirectionalLight&&!e.isPointLight&&!e.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",e);return}let n=this.writer,i=n.json,s=n.extensionsUsed,o={};e.name&&(o.name=e.name),o.color=e.color.toArray(),o.intensity=e.intensity,e.isDirectionalLight?o.type="directional":e.isPointLight?(o.type="point",e.distance>0&&(o.range=e.distance)):e.isSpotLight&&(o.type="spot",e.distance>0&&(o.range=e.distance),o.spot={},o.spot.innerConeAngle=(e.penumbra-1)*e.angle*-1,o.spot.outerConeAngle=e.angle),e.decay!==void 0&&e.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),e.target&&(e.target.parent!==e||e.target.position.x!==0||e.target.position.y!==0||e.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),s[this.name]||(i.extensions=i.extensions||{},i.extensions[this.name]={lights:[]},s[this.name]=!0);let a=i.extensions[this.name].lights;a.push(o),t.extensions=t.extensions||{},t.extensions[this.name]={light:a.length-1}}},V0=class{constructor(e){this.writer=e,this.name="KHR_materials_unlit"}writeMaterial(e,t){if(!e.isMeshBasicMaterial)return;let i=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},i[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}},H0=class{constructor(e){this.writer=e,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(e,t){if(!e.isGLTFSpecularGlossinessMaterial)return;let n=this.writer,i=n.extensionsUsed,s={};t.pbrMetallicRoughness.baseColorFactor&&(s.diffuseFactor=t.pbrMetallicRoughness.baseColorFactor);let o=[1,1,1];if(e.specular.toArray(o,0),s.specularFactor=o,s.glossinessFactor=e.glossiness,t.pbrMetallicRoughness.baseColorTexture&&(s.diffuseTexture=t.pbrMetallicRoughness.baseColorTexture),e.specularMap){let a={index:n.processTexture(e.specularMap)};n.applyTextureTransform(a,e.specularMap),s.specularGlossinessTexture=a}t.extensions=t.extensions||{},t.extensions[this.name]=s,i[this.name]=!0}},j0=class{constructor(e){this.writer=e,this.name="KHR_materials_transmission"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let n=this.writer,i=n.extensionsUsed,s={};if(s.transmissionFactor=e.transmission,e.transmissionMap){let o={index:n.processTexture(e.transmissionMap)};n.applyTextureTransform(o,e.transmissionMap),s.transmissionTexture=o}t.extensions=t.extensions||{},t.extensions[this.name]=s,i[this.name]=!0}},W0=class{constructor(e){this.writer=e,this.name="KHR_materials_volume"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.thickness===0)return;let n=this.writer,i=n.extensionsUsed,s={};if(s.thicknessFactor=e.thickness,e.thicknessMap){let o={index:n.processTexture(e.thicknessMap)};n.applyTextureTransform(o,e.thicknessMap),s.thicknessTexture=o}s.attenuationDistance=e.attenuationDistance,s.attenuationColor=e.attenuationTint.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=s,i[this.name]=!0}};jc.Utils={insertKeyframe:function(r,e){let t=.001,n=r.getValueSize(),i=new r.TimeBufferType(r.times.length+1),s=new r.ValueBufferType(r.values.length+n),o=r.createInterpolant(new r.ValueBufferType(n)),a;if(r.times.length===0){i[0]=e;for(let l=0;l<n;l++)s[l]=0;a=0}else if(e<r.times[0]){if(Math.abs(r.times[0]-e)<t)return 0;i[0]=e,i.set(r.times,1),s.set(o.evaluate(e),0),s.set(r.values,n),a=0}else if(e>r.times[r.times.length-1]){if(Math.abs(r.times[r.times.length-1]-e)<t)return r.times.length-1;i[i.length-1]=e,i.set(r.times,0),s.set(r.values,0),s.set(o.evaluate(e),r.values.length),a=i.length-1}else for(let l=0;l<r.times.length;l++){if(Math.abs(r.times[l]-e)<t)return l;if(r.times[l]<e&&r.times[l+1]>e){i.set(r.times.slice(0,l+1),0),i[l+1]=e,i.set(r.times.slice(l+1),l+2),s.set(r.values.slice(0,(l+1)*n),0),s.set(o.evaluate(e),(l+1)*n),s.set(r.values.slice((l+1)*n),(l+2)*n),a=l+1;break}}return r.times=i,r.values=s,a},mergeMorphTargetTracks:function(r,e){let t=[],n={},i=r.tracks;for(let s=0;s<i.length;++s){let o=i[s],a=nt.parseTrackName(o.name),l=nt.findNode(e,a.nodeName);if(a.propertyName!=="morphTargetInfluences"||a.propertyIndex===void 0){t.push(o);continue}if(o.createInterpolant!==o.InterpolantFactoryMethodDiscrete&&o.createInterpolant!==o.InterpolantFactoryMethodLinear){if(o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),o=o.clone(),o.setInterpolation(Er)}let c=l.morphTargetInfluences.length,u=l.morphTargetDictionary[a.propertyIndex];if(u===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+a.propertyIndex);let h;if(n[l.uuid]===void 0){h=o.clone();let f=new h.ValueBufferType(c*h.times.length);for(let p=0;p<h.times.length;p++)f[p*c+u]=h.values[p];h.name=(a.nodeName||"")+".morphTargetInfluences",h.values=f,n[l.uuid]=h,t.push(h);continue}let d=o.createInterpolant(new o.ValueBufferType(1));h=n[l.uuid];for(let f=0;f<h.times.length;f++)h.values[f*c+u]=d.evaluate(h.times[f]);for(let f=0;f<o.times.length;f++){let p=this.insertKeyframe(h,o.times[f]);h.values[p*c+u]=o.values[f]}}return r.tracks=t,r}};var Kh,Qh,Zh;async function J0(){if(Kh&&Qh&&Zh)return{gltfTransform:Kh,DracoMeshCompressionExtension:Qh,addIndex:Zh};let[{WebIO:r},{KHRONOS_EXTENSIONS:e,DracoMeshCompression:t},{weld:n},{createEncoderModule:i},s]=await Promise.all([import("@gltf-transform/core"),import("@gltf-transform/extensions"),import("@gltf-transform/functions"),import("draco3dgltf"),fetch("/_libraries/draco_encoder.wasm").then(l=>l.arrayBuffer())]),o=new r,a=await i({wasmBinary:s});return o.registerExtensions(e).registerDependencies({"draco3d.encoder":a}),Kh=o,Qh=t,Zh=n({tolerance:1e-4}),{gltfTransform:Kh,DracoMeshCompressionExtension:Qh,addIndex:Zh}}var vS=Cg(Y0());var rI=typeof global=="object"&&global&&global.Object===Object&&global,ed=rI;var sI=typeof self=="object"&&self&&self.Object===Object&&self,oI=ed||sI||Function("return this")(),en=oI;var aI=en.Symbol,Zn=aI;var K0=Object.prototype,lI=K0.hasOwnProperty,cI=K0.toString,Jc=Zn?Zn.toStringTag:void 0;function uI(r){var e=lI.call(r,Jc),t=r[Jc];try{r[Jc]=void 0;var n=!0}catch(s){}var i=cI.call(r);return n&&(e?r[Jc]=t:delete r[Jc]),i}var Q0=uI;var hI=Object.prototype,dI=hI.toString;function fI(r){return dI.call(r)}var Z0=fI;var pI="[object Null]",mI="[object Undefined]",$0=Zn?Zn.toStringTag:void 0;function gI(r){return r==null?r===void 0?mI:pI:$0&&$0 in Object(r)?Q0(r):Z0(r)}var er=gI;function yI(r){return r!=null&&typeof r=="object"}var $n=yI;var vI="[object Symbol]";function xI(r){return typeof r=="symbol"||$n(r)&&er(r)==vI}var tr=xI;function bI(r,e){for(var t=-1,n=r==null?0:r.length,i=Array(n);++t<n;)i[t]=e(r[t],t,r);return i}var ol=bI;var wI=Array.isArray,Jt=wI;var SI=1/0,eb=Zn?Zn.prototype:void 0,tb=eb?eb.toString:void 0;function nb(r){if(typeof r=="string")return r;if(Jt(r))return ol(r,nb)+"";if(tr(r))return tb?tb.call(r):"";var e=r+"";return e=="0"&&1/r==-SI?"-0":e}var ib=nb;var MI=/\s/;function AI(r){for(var e=r.length;e--&&MI.test(r.charAt(e)););return e}var rb=AI;var _I=/^\s+/;function TI(r){return r&&r.slice(0,rb(r)+1).replace(_I,"")}var sb=TI;function EI(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var Rn=EI;var ob=0/0,NI=/^[-+]0x[0-9a-f]+$/i,CI=/^0b[01]+$/i,LI=/^0o[0-7]+$/i,II=parseInt;function PI(r){if(typeof r=="number")return r;if(tr(r))return ob;if(Rn(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=Rn(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=sb(r);var t=CI.test(r);return t||LI.test(r)?II(r.slice(2),t?2:8):NI.test(r)?ob:+r}var Fm=PI;function DI(r){return r}var td=DI;var RI="[object AsyncFunction]",BI="[object Function]",OI="[object GeneratorFunction]",FI="[object Proxy]";function zI(r){if(!Rn(r))return!1;var e=er(r);return e==BI||e==OI||e==RI||e==FI}var nd=zI;var GI=en["__core-js_shared__"],id=GI;var ab=function(){var r=/[^.]+$/.exec(id&&id.keys&&id.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function UI(r){return!!ab&&ab in r}var lb=UI;var kI=Function.prototype,VI=kI.toString;function HI(r){if(r!=null){try{return VI.call(r)}catch(e){}try{return r+""}catch(e){}}return""}var Ur=HI;var jI=/[\\^$.*+?()[\]{}|]/g,WI=/^\[object .+?Constructor\]$/,JI=Function.prototype,XI=Object.prototype,qI=JI.toString,YI=XI.hasOwnProperty,KI=RegExp("^"+qI.call(YI).replace(jI,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function QI(r){if(!Rn(r)||lb(r))return!1;var e=nd(r)?KI:WI;return e.test(Ur(r))}var cb=QI;function ZI(r,e){return r==null?void 0:r[e]}var ub=ZI;function $I(r,e){var t=ub(r,e);return cb(t)?t:void 0}var ci=$I;var eP=ci(en,"WeakMap"),rd=eP;var hb=Object.create,tP=function(){function r(){}return function(e){if(!Rn(e))return{};if(hb)return hb(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}(),db=tP;function nP(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++t<n;)e[t]=r[t];return e}var fb=nP;var iP=function(){try{var r=ci(Object,"defineProperty");return r({},"",{}),r}catch(e){}}(),zm=iP;function rP(r,e){for(var t=-1,n=r==null?0:r.length;++t<n&&e(r[t],t,r)!==!1;);return r}var pb=rP;var sP=9007199254740991,oP=/^(?:0|[1-9]\d*)$/;function aP(r,e){var t=typeof r;return e=e==null?sP:e,!!e&&(t=="number"||t!="symbol"&&oP.test(r))&&r>-1&&r%1==0&&r<e}var sd=aP;function lP(r,e,t){e=="__proto__"&&zm?zm(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}var od=lP;function cP(r,e){return r===e||r!==r&&e!==e}var al=cP;var uP=Object.prototype,hP=uP.hasOwnProperty;function dP(r,e,t){var n=r[e];(!(hP.call(r,e)&&al(n,t))||t===void 0&&!(e in r))&&od(r,e,t)}var ad=dP;function fP(r,e,t,n){var i=!t;t||(t={});for(var s=-1,o=e.length;++s<o;){var a=e[s],l=n?n(t[a],r[a],a,t,r):void 0;l===void 0&&(l=r[a]),i?od(t,a,l):ad(t,a,l)}return t}var ws=fP;var pP=9007199254740991;function mP(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=pP}var ll=mP;function gP(r){return r!=null&&ll(r.length)&&!nd(r)}var Ss=gP;var yP=Object.prototype;function vP(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||yP;return r===t}var cl=vP;function xP(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var mb=xP;var bP="[object Arguments]";function wP(r){return $n(r)&&er(r)==bP}var Gm=wP;var gb=Object.prototype,SP=gb.hasOwnProperty,MP=gb.propertyIsEnumerable,AP=Gm(function(){return arguments}())?Gm:function(r){return $n(r)&&SP.call(r,"callee")&&!MP.call(r,"callee")},ld=AP;function _P(){return!1}var yb=_P;var vb=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xb=vb&&typeof module=="object"&&module&&!module.nodeType&&module,TP=xb&&xb.exports===vb,bb=TP?en.Buffer:void 0,EP=bb?bb.isBuffer:void 0,NP=EP||yb,Do=NP;var CP="[object Arguments]",LP="[object Array]",IP="[object Boolean]",PP="[object Date]",DP="[object Error]",RP="[object Function]",BP="[object Map]",OP="[object Number]",FP="[object Object]",zP="[object RegExp]",GP="[object Set]",UP="[object String]",kP="[object WeakMap]",VP="[object ArrayBuffer]",HP="[object DataView]",jP="[object Float32Array]",WP="[object Float64Array]",JP="[object Int8Array]",XP="[object Int16Array]",qP="[object Int32Array]",YP="[object Uint8Array]",KP="[object Uint8ClampedArray]",QP="[object Uint16Array]",ZP="[object Uint32Array]",Ut={};Ut[jP]=Ut[WP]=Ut[JP]=Ut[XP]=Ut[qP]=Ut[YP]=Ut[KP]=Ut[QP]=Ut[ZP]=!0;Ut[CP]=Ut[LP]=Ut[VP]=Ut[IP]=Ut[HP]=Ut[PP]=Ut[DP]=Ut[RP]=Ut[BP]=Ut[OP]=Ut[FP]=Ut[zP]=Ut[GP]=Ut[UP]=Ut[kP]=!1;function $P(r){return $n(r)&&ll(r.length)&&!!Ut[er(r)]}var wb=$P;function eD(r){return function(e){return r(e)}}var Ms=eD;var Sb=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xc=Sb&&typeof module=="object"&&module&&!module.nodeType&&module,tD=Xc&&Xc.exports===Sb,Um=tD&&ed.process,nD=function(){try{var r=Xc&&Xc.require&&Xc.require("util").types;return r||Um&&Um.binding&&Um.binding("util")}catch(e){}}(),kr=nD;var Mb=kr&&kr.isTypedArray,iD=Mb?Ms(Mb):wb,cd=iD;var rD=Object.prototype,sD=rD.hasOwnProperty;function oD(r,e){var t=Jt(r),n=!t&&ld(r),i=!t&&!n&&Do(r),s=!t&&!n&&!i&&cd(r),o=t||n||i||s,a=o?mb(r.length,String):[],l=a.length;for(var c in r)(e||sD.call(r,c))&&!(o&&(c=="length"||i&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||sd(c,l)))&&a.push(c);return a}var ud=oD;function aD(r,e){return function(t){return r(e(t))}}var hd=aD;var lD=hd(Object.keys,Object),Ab=lD;var cD=Object.prototype,uD=cD.hasOwnProperty;function hD(r){if(!cl(r))return Ab(r);var e=[];for(var t in Object(r))uD.call(r,t)&&t!="constructor"&&e.push(t);return e}var _b=hD;function dD(r){return Ss(r)?ud(r):_b(r)}var vr=dD;function fD(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var Tb=fD;var pD=Object.prototype,mD=pD.hasOwnProperty;function gD(r){if(!Rn(r))return Tb(r);var e=cl(r),t=[];for(var n in r)n=="constructor"&&(e||!mD.call(r,n))||t.push(n);return t}var Eb=gD;function yD(r){return Ss(r)?ud(r,!0):Eb(r)}var ul=yD;var vD=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xD=/^\w*$/;function bD(r,e){if(Jt(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||tr(r)?!0:xD.test(r)||!vD.test(r)||e!=null&&r in Object(e)}var hl=bD;var wD=ci(Object,"create"),Vr=wD;function SD(){this.__data__=Vr?Vr(null):{},this.size=0}var Nb=SD;function MD(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var Cb=MD;var AD="__lodash_hash_undefined__",_D=Object.prototype,TD=_D.hasOwnProperty;function ED(r){var e=this.__data__;if(Vr){var t=e[r];return t===AD?void 0:t}return TD.call(e,r)?e[r]:void 0}var Lb=ED;var ND=Object.prototype,CD=ND.hasOwnProperty;function LD(r){var e=this.__data__;return Vr?e[r]!==void 0:CD.call(e,r)}var Ib=LD;var ID="__lodash_hash_undefined__";function PD(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Vr&&e===void 0?ID:e,this}var Pb=PD;function dl(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}dl.prototype.clear=Nb;dl.prototype.delete=Cb;dl.prototype.get=Lb;dl.prototype.has=Ib;dl.prototype.set=Pb;var km=dl;function DD(){this.__data__=[],this.size=0}var Db=DD;function RD(r,e){for(var t=r.length;t--;)if(al(r[t][0],e))return t;return-1}var As=RD;var BD=Array.prototype,OD=BD.splice;function FD(r){var e=this.__data__,t=As(e,r);if(t<0)return!1;var n=e.length-1;return t==n?e.pop():OD.call(e,t,1),--this.size,!0}var Rb=FD;function zD(r){var e=this.__data__,t=As(e,r);return t<0?void 0:e[t][1]}var Bb=zD;function GD(r){return As(this.__data__,r)>-1}var Ob=GD;function UD(r,e){var t=this.__data__,n=As(t,r);return n<0?(++this.size,t.push([r,e])):t[n][1]=e,this}var Fb=UD;function fl(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}fl.prototype.clear=Db;fl.prototype.delete=Rb;fl.prototype.get=Bb;fl.prototype.has=Ob;fl.prototype.set=Fb;var _s=fl;var kD=ci(en,"Map"),Ts=kD;function VD(){this.size=0,this.__data__={hash:new km,map:new(Ts||_s),string:new km}}var zb=VD;function HD(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var Gb=HD;function jD(r,e){var t=r.__data__;return Gb(e)?t[typeof e=="string"?"string":"hash"]:t.map}var Es=jD;function WD(r){var e=Es(this,r).delete(r);return this.size-=e?1:0,e}var Ub=WD;function JD(r){return Es(this,r).get(r)}var kb=JD;function XD(r){return Es(this,r).has(r)}var Vb=XD;function qD(r,e){var t=Es(this,r),n=t.size;return t.set(r,e),this.size+=t.size==n?0:1,this}var Hb=qD;function pl(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}pl.prototype.clear=zb;pl.prototype.delete=Ub;pl.prototype.get=kb;pl.prototype.has=Vb;pl.prototype.set=Hb;var Ro=pl;var YD="Expected a function";function Vm(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(YD);var t=function(){var n=arguments,i=e?e.apply(this,n):n[0],s=t.cache;if(s.has(i))return s.get(i);var o=r.apply(this,n);return t.cache=s.set(i,o)||s,o};return t.cache=new(Vm.Cache||Ro),t}Vm.Cache=Ro;var jb=Vm;var KD=500;function QD(r){var e=jb(r,function(n){return t.size===KD&&t.clear(),n}),t=e.cache;return e}var Wb=QD;var ZD=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$D=/\\(\\)?/g,eR=Wb(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(ZD,function(t,n,i,s){e.push(i?s.replace($D,"$1"):n||t)}),e}),Jb=eR;function tR(r){return r==null?"":ib(r)}var Xb=tR;function nR(r,e){return Jt(r)?r:hl(r,e)?[r]:Jb(Xb(r))}var dd=nR;var iR=1/0;function rR(r){if(typeof r=="string"||tr(r))return r;var e=r+"";return e=="0"&&1/r==-iR?"-0":e}var Ns=rR;function sR(r,e){e=dd(e,r);for(var t=0,n=e.length;r!=null&&t<n;)r=r[Ns(e[t++])];return t&&t==n?r:void 0}var ml=sR;function oR(r,e,t){var n=r==null?void 0:ml(r,e);return n===void 0?t:n}var qb=oR;function aR(r,e){for(var t=-1,n=e.length,i=r.length;++t<n;)r[i+t]=e[t];return r}var fd=aR;var lR=hd(Object.getPrototypeOf,Object),pd=lR;function cR(){this.__data__=new _s,this.size=0}var Yb=cR;function uR(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}var Kb=uR;function hR(r){return this.__data__.get(r)}var Qb=hR;function dR(r){return this.__data__.has(r)}var Zb=dR;var fR=200;function pR(r,e){var t=this.__data__;if(t instanceof _s){var n=t.__data__;if(!Ts||n.length<fR-1)return n.push([r,e]),this.size=++t.size,this;t=this.__data__=new Ro(n)}return t.set(r,e),this.size=t.size,this}var $b=pR;function gl(r){var e=this.__data__=new _s(r);this.size=e.size}gl.prototype.clear=Yb;gl.prototype.delete=Kb;gl.prototype.get=Qb;gl.prototype.has=Zb;gl.prototype.set=$b;var Cs=gl;function mR(r,e){return r&&ws(e,vr(e),r)}var ew=mR;function gR(r,e){return r&&ws(e,ul(e),r)}var tw=gR;var nw=typeof exports=="object"&&exports&&!exports.nodeType&&exports,iw=nw&&typeof module=="object"&&module&&!module.nodeType&&module,yR=iw&&iw.exports===nw,rw=yR?en.Buffer:void 0,sw=rw?rw.allocUnsafe:void 0;function vR(r,e){if(e)return r.slice();var t=r.length,n=sw?sw(t):new r.constructor(t);return r.copy(n),n}var ow=vR;function xR(r,e){for(var t=-1,n=r==null?0:r.length,i=0,s=[];++t<n;){var o=r[t];e(o,t,r)&&(s[i++]=o)}return s}var aw=xR;function bR(){return[]}var md=bR;var wR=Object.prototype,SR=wR.propertyIsEnumerable,lw=Object.getOwnPropertySymbols,MR=lw?function(r){return r==null?[]:(r=Object(r),aw(lw(r),function(e){return SR.call(r,e)}))}:md,yl=MR;function AR(r,e){return ws(r,yl(r),e)}var cw=AR;var _R=Object.getOwnPropertySymbols,TR=_R?function(r){for(var e=[];r;)fd(e,yl(r)),r=pd(r);return e}:md,gd=TR;function ER(r,e){return ws(r,gd(r),e)}var uw=ER;function NR(r,e,t){var n=e(r);return Jt(r)?n:fd(n,t(r))}var yd=NR;function CR(r){return yd(r,vr,yl)}var qc=CR;function LR(r){return yd(r,ul,gd)}var hw=LR;var IR=ci(en,"DataView"),vd=IR;var PR=ci(en,"Promise"),xd=PR;var DR=ci(en,"Set"),bd=DR;var dw="[object Map]",RR="[object Object]",fw="[object Promise]",pw="[object Set]",mw="[object WeakMap]",gw="[object DataView]",BR=Ur(vd),OR=Ur(Ts),FR=Ur(xd),zR=Ur(bd),GR=Ur(rd),Bo=er;(vd&&Bo(new vd(new ArrayBuffer(1)))!=gw||Ts&&Bo(new Ts)!=dw||xd&&Bo(xd.resolve())!=fw||bd&&Bo(new bd)!=pw||rd&&Bo(new rd)!=mw)&&(Bo=function(r){var e=er(r),t=e==RR?r.constructor:void 0,n=t?Ur(t):"";if(n)switch(n){case BR:return gw;case OR:return dw;case FR:return fw;case zR:return pw;case GR:return mw}return e});var Hr=Bo;var UR=Object.prototype,kR=UR.hasOwnProperty;function VR(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&kR.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var yw=VR;var HR=en.Uint8Array,vl=HR;function jR(r){var e=new r.constructor(r.byteLength);return new vl(e).set(new vl(r)),e}var xl=jR;function WR(r,e){var t=e?xl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}var vw=WR;var JR=/\w*$/;function XR(r){var e=new r.constructor(r.source,JR.exec(r));return e.lastIndex=r.lastIndex,e}var xw=XR;var bw=Zn?Zn.prototype:void 0,ww=bw?bw.valueOf:void 0;function qR(r){return ww?Object(ww.call(r)):{}}var Sw=qR;function YR(r,e){var t=e?xl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Mw=YR;var KR="[object Boolean]",QR="[object Date]",ZR="[object Map]",$R="[object Number]",eB="[object RegExp]",tB="[object Set]",nB="[object String]",iB="[object Symbol]",rB="[object ArrayBuffer]",sB="[object DataView]",oB="[object Float32Array]",aB="[object Float64Array]",lB="[object Int8Array]",cB="[object Int16Array]",uB="[object Int32Array]",hB="[object Uint8Array]",dB="[object Uint8ClampedArray]",fB="[object Uint16Array]",pB="[object Uint32Array]";function mB(r,e,t){var n=r.constructor;switch(e){case rB:return xl(r);case KR:case QR:return new n(+r);case sB:return vw(r,t);case oB:case aB:case lB:case cB:case uB:case hB:case dB:case fB:case pB:return Mw(r,t);case ZR:return new n;case $R:case nB:return new n(r);case eB:return xw(r);case tB:return new n;case iB:return Sw(r)}}var Aw=mB;function gB(r){return typeof r.constructor=="function"&&!cl(r)?db(pd(r)):{}}var _w=gB;var yB="[object Map]";function vB(r){return $n(r)&&Hr(r)==yB}var Tw=vB;var Ew=kr&&kr.isMap,xB=Ew?Ms(Ew):Tw,Nw=xB;var bB="[object Set]";function wB(r){return $n(r)&&Hr(r)==bB}var Cw=wB;var Lw=kr&&kr.isSet,SB=Lw?Ms(Lw):Cw,Iw=SB;var MB=1,AB=2,_B=4,Pw="[object Arguments]",TB="[object Array]",EB="[object Boolean]",NB="[object Date]",CB="[object Error]",Dw="[object Function]",LB="[object GeneratorFunction]",IB="[object Map]",PB="[object Number]",Rw="[object Object]",DB="[object RegExp]",RB="[object Set]",BB="[object String]",OB="[object Symbol]",FB="[object WeakMap]",zB="[object ArrayBuffer]",GB="[object DataView]",UB="[object Float32Array]",kB="[object Float64Array]",VB="[object Int8Array]",HB="[object Int16Array]",jB="[object Int32Array]",WB="[object Uint8Array]",JB="[object Uint8ClampedArray]",XB="[object Uint16Array]",qB="[object Uint32Array]",Ot={};Ot[Pw]=Ot[TB]=Ot[zB]=Ot[GB]=Ot[EB]=Ot[NB]=Ot[UB]=Ot[kB]=Ot[VB]=Ot[HB]=Ot[jB]=Ot[IB]=Ot[PB]=Ot[Rw]=Ot[DB]=Ot[RB]=Ot[BB]=Ot[OB]=Ot[WB]=Ot[JB]=Ot[XB]=Ot[qB]=!0;Ot[CB]=Ot[Dw]=Ot[FB]=!1;function wd(r,e,t,n,i,s){var o,a=e&MB,l=e&AB,c=e&_B;if(t&&(o=i?t(r,n,i,s):t(r)),o!==void 0)return o;if(!Rn(r))return r;var u=Jt(r);if(u){if(o=yw(r),!a)return fb(r,o)}else{var h=Hr(r),d=h==Dw||h==LB;if(Do(r))return ow(r,a);if(h==Rw||h==Pw||d&&!i){if(o=l||d?{}:_w(r),!a)return l?uw(r,tw(o,r)):cw(r,ew(o,r))}else{if(!Ot[h])return i?r:{};o=Aw(r,h,a)}}s||(s=new Cs);var f=s.get(r);if(f)return f;s.set(r,o),Iw(r)?r.forEach(function(v){o.add(wd(v,e,t,v,r,s))}):Nw(r)&&r.forEach(function(v,g){o.set(g,wd(v,e,t,g,r,s))});var p=c?l?hw:qc:l?ul:vr,m=u?void 0:p(r);return pb(m||r,function(v,g){m&&(g=v,v=r[g]),ad(o,g,wd(v,e,t,g,r,s))}),o}var Bw=wd;var YB=1,KB=4;function QB(r){return Bw(r,YB|KB)}var Hm=QB;var ZB="__lodash_hash_undefined__";function $B(r){return this.__data__.set(r,ZB),this}var Ow=$B;function eO(r){return this.__data__.has(r)}var Fw=eO;function Sd(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new Ro;++e<t;)this.add(r[e])}Sd.prototype.add=Sd.prototype.push=Ow;Sd.prototype.has=Fw;var zw=Sd;function tO(r,e){for(var t=-1,n=r==null?0:r.length;++t<n;)if(e(r[t],t,r))return!0;return!1}var Gw=tO;function nO(r,e){return r.has(e)}var Uw=nO;var iO=1,rO=2;function sO(r,e,t,n,i,s){var o=t&iO,a=r.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(r),u=s.get(e);if(c&&u)return c==e&&u==r;var h=-1,d=!0,f=t&rO?new zw:void 0;for(s.set(r,e),s.set(e,r);++h<a;){var p=r[h],m=e[h];if(n)var v=o?n(m,p,h,e,r,s):n(p,m,h,r,e,s);if(v!==void 0){if(v)continue;d=!1;break}if(f){if(!Gw(e,function(g,y){if(!Uw(f,y)&&(p===g||i(p,g,t,n,s)))return f.push(y)})){d=!1;break}}else if(!(p===m||i(p,m,t,n,s))){d=!1;break}}return s.delete(r),s.delete(e),d}var Md=sO;function oO(r){var e=-1,t=Array(r.size);return r.forEach(function(n,i){t[++e]=[i,n]}),t}var kw=oO;function aO(r){var e=-1,t=Array(r.size);return r.forEach(function(n){t[++e]=n}),t}var Vw=aO;var lO=1,cO=2,uO="[object Boolean]",hO="[object Date]",dO="[object Error]",fO="[object Map]",pO="[object Number]",mO="[object RegExp]",gO="[object Set]",yO="[object String]",vO="[object Symbol]",xO="[object ArrayBuffer]",bO="[object DataView]",Hw=Zn?Zn.prototype:void 0,jm=Hw?Hw.valueOf:void 0;function wO(r,e,t,n,i,s,o){switch(t){case bO:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case xO:return!(r.byteLength!=e.byteLength||!s(new vl(r),new vl(e)));case uO:case hO:case pO:return al(+r,+e);case dO:return r.name==e.name&&r.message==e.message;case mO:case yO:return r==e+"";case fO:var a=kw;case gO:var l=n&lO;if(a||(a=Vw),r.size!=e.size&&!l)return!1;var c=o.get(r);if(c)return c==e;n|=cO,o.set(r,e);var u=Md(a(r),a(e),n,i,s,o);return o.delete(r),u;case vO:if(jm)return jm.call(r)==jm.call(e)}return!1}var jw=wO;var SO=1,MO=Object.prototype,AO=MO.hasOwnProperty;function _O(r,e,t,n,i,s){var o=t&SO,a=qc(r),l=a.length,c=qc(e),u=c.length;if(l!=u&&!o)return!1;for(var h=l;h--;){var d=a[h];if(!(o?d in e:AO.call(e,d)))return!1}var f=s.get(r),p=s.get(e);if(f&&p)return f==e&&p==r;var m=!0;s.set(r,e),s.set(e,r);for(var v=o;++h<l;){d=a[h];var g=r[d],y=e[d];if(n)var x=o?n(y,g,d,e,r,s):n(g,y,d,r,e,s);if(!(x===void 0?g===y||i(g,y,t,n,s):x)){m=!1;break}v||(v=d=="constructor")}if(m&&!v){var b=r.constructor,w=e.constructor;b!=w&&"constructor"in r&&"constructor"in e&&!(typeof b=="function"&&b instanceof b&&typeof w=="function"&&w instanceof w)&&(m=!1)}return s.delete(r),s.delete(e),m}var Ww=_O;var TO=1,Jw="[object Arguments]",Xw="[object Array]",Ad="[object Object]",EO=Object.prototype,qw=EO.hasOwnProperty;function NO(r,e,t,n,i,s){var o=Jt(r),a=Jt(e),l=o?Xw:Hr(r),c=a?Xw:Hr(e);l=l==Jw?Ad:l,c=c==Jw?Ad:c;var u=l==Ad,h=c==Ad,d=l==c;if(d&&Do(r)){if(!Do(e))return!1;o=!0,u=!1}if(d&&!u)return s||(s=new Cs),o||cd(r)?Md(r,e,t,n,i,s):jw(r,e,l,t,n,i,s);if(!(t&TO)){var f=u&&qw.call(r,"__wrapped__"),p=h&&qw.call(e,"__wrapped__");if(f||p){var m=f?r.value():r,v=p?e.value():e;return s||(s=new Cs),i(m,v,t,n,s)}}return d?(s||(s=new Cs),Ww(r,e,t,n,i,s)):!1}var Yw=NO;function Kw(r,e,t,n,i){return r===e?!0:r==null||e==null||!$n(r)&&!$n(e)?r!==r&&e!==e:Yw(r,e,t,n,Kw,i)}var _d=Kw;var CO=1,LO=2;function IO(r,e,t,n){var i=t.length,s=i,o=!n;if(r==null)return!s;for(r=Object(r);i--;){var a=t[i];if(o&&a[2]?a[1]!==r[a[0]]:!(a[0]in r))return!1}for(;++i<s;){a=t[i];var l=a[0],c=r[l],u=a[1];if(o&&a[2]){if(c===void 0&&!(l in r))return!1}else{var h=new Cs;if(n)var d=n(c,u,l,r,e,h);if(!(d===void 0?_d(u,c,CO|LO,n,h):d))return!1}}return!0}var Qw=IO;function PO(r){return r===r&&!Rn(r)}var Td=PO;function DO(r){for(var e=vr(r),t=e.length;t--;){var n=e[t],i=r[n];e[t]=[n,i,Td(i)]}return e}var Zw=DO;function RO(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}var Ed=RO;function BO(r){var e=Zw(r);return e.length==1&&e[0][2]?Ed(e[0][0],e[0][1]):function(t){return t===r||Qw(t,r,e)}}var $w=BO;function OO(r,e){return r!=null&&e in Object(r)}var eS=OO;function FO(r,e,t){e=dd(e,r);for(var n=-1,i=e.length,s=!1;++n<i;){var o=Ns(e[n]);if(!(s=r!=null&&t(r,o)))break;r=r[o]}return s||++n!=i?s:(i=r==null?0:r.length,!!i&&ll(i)&&sd(o,i)&&(Jt(r)||ld(r)))}var tS=FO;function zO(r,e){return r!=null&&tS(r,e,eS)}var nS=zO;var GO=1,UO=2;function kO(r,e){return hl(r)&&Td(e)?Ed(Ns(r),e):function(t){var n=qb(t,r);return n===void 0&&n===e?nS(t,r):_d(e,n,GO|UO)}}var iS=kO;function VO(r){return function(e){return e==null?void 0:e[r]}}var rS=VO;function HO(r){return function(e){return ml(e,r)}}var sS=HO;function jO(r){return hl(r)?rS(Ns(r)):sS(r)}var oS=jO;function WO(r){return typeof r=="function"?r:r==null?td:typeof r=="object"?Jt(r)?iS(r[0],r[1]):$w(r):oS(r)}var aS=WO;function JO(r){return function(e,t,n){for(var i=-1,s=Object(e),o=n(e),a=o.length;a--;){var l=o[r?a:++i];if(t(s[l],l,s)===!1)break}return e}}var lS=JO;var XO=lS(),cS=XO;function qO(r,e){return r&&cS(r,e,vr)}var uS=qO;function YO(r,e){return function(t,n){if(t==null)return t;if(!Ss(t))return r(t,n);for(var i=t.length,s=e?i:-1,o=Object(t);(e?s--:++s<i)&&n(o[s],s,o)!==!1;);return t}}var hS=YO;var KO=hS(uS),dS=KO;var QO=function(){return en.Date.now()},Nd=QO;var ZO="Expected a function",$O=Math.max,e3=Math.min;function t3(r,e,t){var n,i,s,o,a,l,c=0,u=!1,h=!1,d=!0;if(typeof r!="function")throw new TypeError(ZO);e=Fm(e)||0,Rn(t)&&(u=!!t.leading,h="maxWait"in t,s=h?$O(Fm(t.maxWait)||0,e):s,d="trailing"in t?!!t.trailing:d);function f(_){var S=n,A=i;return n=i=void 0,c=_,o=r.apply(A,S),o}function p(_){return c=_,a=setTimeout(g,e),u?f(_):o}function m(_){var S=_-l,A=_-c,T=e-S;return h?e3(T,s-A):T}function v(_){var S=_-l,A=_-c;return l===void 0||S>=e||S<0||h&&A>=s}function g(){var _=Nd();if(v(_))return y(_);a=setTimeout(g,m(_))}function y(_){return a=void 0,d&&n?f(_):(n=i=void 0,o)}function x(){a!==void 0&&clearTimeout(a),c=0,n=l=i=a=void 0}function b(){return a===void 0?o:y(Nd())}function w(){var _=Nd(),S=v(_);if(n=arguments,i=this,l=_,S){if(a===void 0)return p(l);if(h)return clearTimeout(a),a=setTimeout(g,e),f(l)}return a===void 0&&(a=setTimeout(g,e)),o}return w.cancel=x,w.flush=b,w}var Wm=t3;function n3(r,e){var t=-1,n=Ss(r)?Array(r.length):[];return dS(r,function(i,s,o){n[++t]=e(i,s,o)}),n}var fS=n3;function i3(r,e){var t=r.length;for(r.sort(e);t--;)r[t]=r[t].value;return r}var pS=i3;function r3(r,e){if(r!==e){var t=r!==void 0,n=r===null,i=r===r,s=tr(r),o=e!==void 0,a=e===null,l=e===e,c=tr(e);if(!a&&!c&&!s&&r>e||s&&o&&l&&!a&&!c||n&&o&&l||!t&&l||!i)return 1;if(!n&&!s&&!c&&r<e||c&&t&&i&&!n&&!s||a&&t&&i||!o&&i||!l)return-1}return 0}var mS=r3;function s3(r,e,t){for(var n=-1,i=r.criteria,s=e.criteria,o=i.length,a=t.length;++n<o;){var l=mS(i[n],s[n]);if(l){if(n>=a)return l;var c=t[n];return l*(c=="desc"?-1:1)}}return r.index-e.index}var gS=s3;function o3(r,e,t){e.length?e=ol(e,function(s){return Jt(s)?function(o){return ml(o,s.length===1?s[0]:s)}:s}):e=[td];var n=-1;e=ol(e,Ms(aS));var i=fS(r,function(s,o,a){var l=ol(e,function(c){return c(s)});return{criteria:l,index:++n,value:s}});return pS(i,function(s,o){return gS(s,o,t)})}var yS=o3;function a3(r,e,t,n){return r==null?[]:(Jt(e)||(e=e==null?[]:[e]),t=n?void 0:t,Jt(t)||(t=t==null?[]:[t]),yS(r,e,t))}var Jm=a3;var Cd={isPublish:!1,gltfQueue:[]};function Yc(r,e,t){return r[e.uuid]===void 0&&(r[e.uuid]=e.toJSON(t)),e.uuid}var l3=new jc;function xS(r,e,t){if(r[e.uuid]===void 0)if(e.userData.type==="NonParametricGeometry"||e.userData.type==="SubdivGeometry"){if(e.userData.type==="SubdivGeometry")if(Cd.isPublish)e=Lo.create({geometry:e.clone()}),e.userData.parameters.subdivisions===0&&(delete e.attributes.color,delete e.attributes.faceMap,delete e.attributes.positionWASM,delete e.attributes.indexWASM,delete e.attributes.verticesPerFaceWASM);else{let i=e.originalGeometry;if(i){let s=e.userData;e=i.clone(),e.userData=s}else e=e.clone();delete e.attributes.color,delete e.attributes.faceMap,delete e.attributes.position,delete e.attributes.normal,e.index=null}let n=e.originalGeometry;if(n!==void 0){let i=e.userData;e=n,e.userData=i}if(!Cd.isPublish)r[e.uuid]=e.toJSON();else{let i={type:"NonParametricGeometry",uuid:e.uuid,userData:{}};e.name!==""&&(i.name=e.name),Object.keys(e.userData).length>0&&(i.userData=Ue({},e.userData));let s=e.index===null,o=new Jn;if(Array.isArray(t))R0(e).forEach((l,c)=>{let u=new gt(l,new Xi);o.add(u),l.userData.groupIndex=c,l.userData.materialIndex=e.groups[c].materialIndex,l.index===null&&(s=!0)});else{let a=new gt(e,new Xi);o.add(a)}Cd.gltfQueue.push(new Promise(async a=>{await Promise.all(Cd.gltfQueue),l3.parse(o,async l=>{let{gltfTransform:c,DracoMeshCompressionExtension:u,addIndex:h}=await J0(),d=c.readJSON({json:Hm(l),resources:{}});d.createExtension(u).setRequired(!0).setEncoderOptions({quantizationVolume:"scene"}),s&&await d.transform(h);try{let{json:f,resources:p}=c.writeJSON(d),m=vS.default.fromByteArray(new Uint8Array(p[".bin"]));f.buffers[0].uri=`data:application/octet-stream;base64,${m}`,i.gltf=f,a()}catch(f){i.gltf=l,a()}},{})})),r[e.uuid]=i}}else{let n=e.userData;if(n.type==="VectorGeometry"){let i=e.userData.shape;n=Object.assign({},n,{shape:i.toJSON()})}r[e.uuid]={uuid:e.uuid,userData:n}}return e.uuid}function bl(r){let e=[];for(let t in r){let n=r[t];delete n.metadata,e.push(n)}return e}function bS(r){let e=[];for(let t in r)e.push(r[t]);return e}var Is=class{constructor(e){this.object=e;this.uuid=Ee.generateUUID();this.states=[];this.events=[];this._interpolateMaterialBetweenValues=(e,t,n,i=t.getNames())=>{var s,o,a,l,c;for(let u=0,h=i.length;u<h;++u){let d=i[u],f=`f${t.id}_${d}`,p=`f${n.id}_${d}`,m=t.uniforms[f],v=n.uniforms[p];if(!(m.value===void 0||v===void 0)){if(d==="mode"){m.value!==v.value&&(m.value=v.value);continue}if(typeof m.value=="boolean"){m.value!==v.value&&(m.value=v.value);continue}if(typeof m.value=="number"){m.value!==v.value&&((s=this._animation)==null||s.add({targets:m,value:Number(v.value)},0));continue}if("isVector2"in m.value){m.value.equals(v.value)===!1&&((o=this._animation)==null||o.add({targets:m,x:v.value.x,y:v.value.y},0));continue}if("isVector3"in m.value){m.value.equals(v.value)===!1&&((a=this._animation)==null||a.add({targets:m,x:v.value.x,y:v.value.y,z:v.value.z},0));continue}if("isColor"in m.value){m.value.equals(v.value)===!1&&((l=this._animation)==null||l.add({targets:m.value,r:v.value.r,g:v.value.g,b:v.value.b},0));continue}}}if(t.backLayer){let h=`f${t.backLayer.id}_alpha`,d=t.backLayer.uniforms[h];(c=this._animation)==null||c.add({targets:d,value:0},0)}};this._interpolateMaterialBetweenLayers=(e,t,n)=>{var c,u,h;let i=e.layersList;if(t.backLayer===void 0){let d=n.getValues();d.alpha=0,t.backLayer=i.addLayerBeforeAt(d,t),t.backLayer.isBack=!0,e.dispose()}let s=`f${t.id}_alpha`,o=`f${(c=t.backLayer)==null?void 0:c.id}_alpha`,a=t.uniforms[s],l=(u=t.backLayer)==null?void 0:u.uniforms[o];(h=this._animation)==null||h.add({targets:a,value:0},0).add({targets:l,value:n.uniforms[`f${n.id}_alpha`].value},0)};this._interpolateMaterialTexture=(e,t,n)=>{var d;let i=`f${t.id}_texture`,s=t.uniforms[i].value,o=n.uniforms[`f${n.id}_texture`].value,a=t.uniforms[`f${t.id}_crop`],l=n.uniforms[`f${n.id}_crop`];a&&l&&a.value!==l.value&&(a.value=Number(l.value)),(s.wrapS!==o.wrapS||s.wrapT!==o.wrapT)&&(s.wrapS=o.wrapS,s.wrapT=o.wrapT,s.needsUpdate=!0);let c=s.matrix,u=o.matrix;if(c.equals(u)===!1){let f={repeatX:s.repeat.x,repeatY:s.repeat.y,offsetX:s.offset.x,offsetY:s.offset.y};(d=this._animation)==null||d.add({targets:f,repeatX:o.repeat.x,repeatY:o.repeat.y,offsetX:o.offset.x,offsetY:o.offset.y,update:()=>{s.repeat.set(f.repeatX,f.repeatY),s.offset.set(f.offsetX,f.offsetY),s.updateMatrix(),s.needsUpdate=!0}},0)}let h=["alpha","mode"];t.type==="displace_map"&&h.push("intensity"),this._interpolateMaterialBetweenValues(e,t,n,h)};this._interpolateMaterialGradient=(e,t,n)=>{var p;let i=t.uniforms[`f${t.id}_num`],s=n.uniforms[`f${n.id}_num`],o=`f${t.id}_steps`,a=`f${n.id}_steps`,l=t.uniforms[o],c=n.uniforms[a],u=`f${t.id}_colors`,h=`f${n.id}_colors`,d=t.uniforms[u],f=n.uniforms[h];if(i.value<=s.value){let m=d.value[i.value-1];for(let v=Number(i.value);v<s.value;++v)l.value[v]=1,d.value[v].copy(m);i.value!==s.value&&(i.value=Number(s.value));for(let v=0;v<s.value;++v){let g=d.value[v],y=f.value[v];if(l.value[v]!==c.value[v]||!g.equals(y)){let x={value:l.value[v]};(p=this._animation)==null||p.add({targets:[x,g],value:c.value[v],x:y.x,y:y.y,z:y.z,w:y.w,update:()=>{l.value[v]=x.value}},0)}}}else{let m=[];for(let g=0;g<s.value;++g){let y=d.value[g],x=f.value[g];if(l.value[g]!==c.value[g]||!y.equals(x)){let b={value:l.value[g]};m.push(new Promise(w=>{var _;(_=this._animation)==null||_.add({targets:[b,y],value:c.value[g],x:x.x,y:x.y,z:x.z,w:x.w,update:()=>{l.value[g]=b.value},complete:()=>{w(g)}},0)}))}}let v=f.value[s.value-1];for(let g=Number(s.value);g<i.value;++g){let y=d.value[g];(l.value[g]!==c.value[g]||!y.equals(v))&&m.push(new Promise(x=>{var w;let b={value:l.value[g]};(w=this._animation)==null||w.add({targets:[b,y],value:1,x:v.x,y:v.y,z:v.z,w:v.w,update:()=>{l.value[g]=b.value},complete:()=>{x(g)}},0)}))}Promise.all(m).then(()=>{i.value=Number(s.value)},()=>{})}this._interpolateMaterialBetweenValues(e,t,n,["alpha","mode","gl_type","smooth","offset","morph","angle"])};this.statesManager=new Rm(this)}static get isAllAnimationsEnded(){let e;for(let t in Is.isAnimating){if(Is.isAnimating[t])return!1;e=!0}return e}computeCache(){return this.cache={mouseDown:this.events.find(e=>e.type===Ze.MOUSE_DOWN),mouseUp:this.events.find(e=>e.type===Ze.MOUSE_UP),mouseHover:this.events.find(e=>e.type===Ze.MOUSE_HOVER),start:this.events.find(e=>e.type===Ze.START),lookAt:this.events.find(e=>e.type===Ze.LOOK_AT),follow:this.events.find(e=>e.type===Ze.FOLLOW),keyDown:this.events.filter(e=>e.type===Ze.KEY_DOWN),keyUp:this.events.filter(e=>e.type===Ze.KEY_UP)},this.cache}newState(e){let t=new bs;return t.name=e,t.update(this.object),this.selectedState=this.states.length,this.states.push(t),t}addState(e,t){this.states.splice(t,0,e)}removeState(e){this.selectedState===e&&(this.selectedState=void 0),this.states.splice(e,1)}selectState(e){e!==void 0&&this.states[e].execute(this.object),this.selectedState=e}hasEventType(e,t){return e===Ze.KEY_DOWN||e===Ze.KEY_UP?t===void 0?!1:this.events.some(n=>n.type===e&&n.key===t):this.events.some(n=>n.type===e)}newEvent(){let e=[Ze.MOUSE_DOWN,Ze.MOUSE_UP,Ze.MOUSE_HOVER,Ze.KEY_DOWN].find(n=>this.hasEventType(n)===!1),t=new sl(e);return this.events.push(t),t}addEvent(e,t){this.events.splice(t,0,e);let n=this.events[t].targets;for(let i=0,s=n.length;i<s;++i)n[i].object!==void 0&&Io.add(n[i])}removeEvent(e){let t=this.events[e].targets;for(let n=0,i=t.length;n<i;++n)t[n].object!==void 0&&Io.delete(t[n]);this.events.splice(e,1)}copy(e){this.selectedState=e.selectedState;for(let t=0,n=e.states.length;t<n;++t)this.addState(e.states[t].clone(),t);for(let t=0,n=e.events.length;t<n;++t){this.addEvent(e.events[t].clone(),t);let i=e.events[t].targets;for(let s=0,o=i.length;s<o;++s){let a=i[s].clone();i[s].object===e.object?(a.object=this.object,a.state=this.states[e.states.indexOf(i[s].state)]):(a.object=i[s].object,a.state=i[s].state),this.events[t].addTarget(a,s)}}return this}clone(e){return new Is(e).copy(this)}toJSON(e){e===void 0&&(e={nodes:{},geometries:{},materials:{},textures:{},images:{},interactionStates:{}});let t={uuid:this.uuid};if(this.selectedState!==void 0&&(t.selectedState=this.selectedState),this.states.length>0){t.states=[];for(let n=0,i=this.states.length;n<i;++n)t.states.push(Yc(e.interactionStates,this.states[n],e))}if(this.events.length>0){t.events=[];for(let n=0,i=this.events.length;n<i;++n)t.events.push(this.events[n].toJSON())}return t}fromJSON(e,t,n){var i;if(this.uuid=e.uuid,this.selectedState=e.selectedState,this.states=[],this.events=[],e.states!==void 0)for(let s=0,o=e.states.length;s<o;++s){let a=n[e.states[s]];this.states.push(a),((i=a.camera)==null?void 0:i.targetOffset)===-1&&(a.camera.targetOffset=this.object.getDistanceToTarget())}if(e.events!==void 0)for(let s=0,o=e.events.length;s<o;++s)this.events.push(new sl().fromJSON(e.events[s],t,n));return this}start(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._removeBackLayer()),this.states.length>1?(this.states[0].execute(this.object),this._currentState=this.states[0],this._prevState=void 0):this._state0!==void 0?this._state0.execute(this.object):this.events.some(e=>e.type===Ze.LOOK_AT||e.type===Ze.FOLLOW)&&(this._state0=new bs,this._state0.update(this.object))}end(){var e;this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._removeBackLayer()),this.states.length>1?this.states[(e=this.selectedState)!=null?e:0].execute(this.object):this._state0!==void 0&&(this._state0.execute(this.object),this._state0=void 0),this._currentState=void 0,this._prevState=void 0}lookAt(e){var t;this.object.lookAt(e),(t=this._animation)==null||t.finished.then(()=>{this.lookAt(e)})}follow(e){this.object.position.copy(e),this.object.parent!==null&&this.object.position.applyMatrix4(new me().copy(this.object.parent.matrixWorld).invert()),this.object.position.applyMatrix4(new me().copy(this.object.hiddenMatrix).invert())}play(e){this.object.visible&&e.state!==void 0&&this.animate(e.state,e)}reverse(e){this.object.visible&&this._prevState!==void 0&&this.animate(this._prevState,e)}_removeBackLayer(){if("material"in this.object){let e=this.object.material;if(e instanceof Array)for(let t=0,n=e.length;t<n;++t){let i=e[t].layersList,s=i.head;for(;s;)if(s.backLayer){delete s.backLayer;let o=s.next;i.removeLayer(s.id),s=o}else s.isBack&&(s.isBack=!1),s=s.next}else{let t=e.layersList,n=t.head;for(;n;)for(;n;)if(n.backLayer){delete n.backLayer;let i=n.next;t.removeLayer(n.id),n=i}else n.isBack&&(n.isBack=!1),n=n.next}}}getTimingFunction(e,t,n){switch(e){case $i.LINEAR:return"cubicBezier( 0, 0, 1, 1 )";case $i.EASE:return"cubicBezier( .25, .1, .25, 1 )";case $i.EASE_IN:return"cubicBezier( .42, 0, 1, 1 )";case $i.EASE_OUT:return"cubicBezier( 0, 0, .58, 1 )";case $i.EASE_IN_OUT:return"cubicBezier( .42, 0, .58, 1 )";case $i.CUBIC:return`cubicBezier( ${t[0]}, ${t[1]}, ${t[2]}, ${t[3]} )`;case $i.SPRING:return`spring( ${n.mass}, ${n.stiffness}, ${n.damping}, ${n.velocity} )`}}animate(e,t){var n,i,s,o,a,l;if(Is.isAnimating[e.uuid]=!0,this._currentState===e){if((n=this._animation)==null?void 0:n.reversed){let c=(s=(i=this._animation)==null?void 0:i.currentTime)!=null?s:0;(o=this._animation)==null||o.reset(),(a=this._animation)==null||a.seek(c),(l=this._animation)==null||l.play()}}else this._prevState=this._currentState,this._currentState=e,this._animation!==void 0&&(Is.isAnimating[this._prevState.uuid]=!1,this._animation.pause()),this._removeBackLayer(),t.cycle===!0&&t.repeat===!0?this._animation=Hc.timeline({duration:t.duration,delay:t.delay/2,endDelay:t.delay/2,direction:"alternate",loop:!0,rewind:t.rewind,easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}):t.cycle===!0&&t.repeat===!1?this._animation=Hc.timeline({duration:t.duration,delay:t.delay,endDelay:t.delay/2,direction:"alternate",rewind:t.rewind,easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}):t.cycle===!1&&t.repeat===!0?this._animation=Hc.timeline({duration:t.duration,delay:t.delay,direction:"normal",loop:!0,easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}):this._animation=Hc.timeline({duration:t.duration,delay:t.delay,direction:"normal",easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}),this._animation.finished.then(()=>{this._removeBackLayer(),this._animation=void 0,Is.isAnimating[e.uuid]=!1}),this.animateMatrix(e),this.animateGeometry(e),this.animateMaterial(e),this.animateCamera(e)}animateMatrix(e){var s,o,a,l;if(this.object.position.equals(e.position)===!1){let c=this.object.position.clone(),u={t:0};(s=this._animation)==null||s.add({targets:u,t:1,update:()=>{this.object.position.lerpVectors(c,e.position,u.t)}},0)}if(this.object.scale.equals(e.scale)===!1){let c=this.object.scale.clone(),u={t:0};(o=this._animation)==null||o.add({targets:u,t:1,update:()=>{this.object.scale.lerpVectors(c,e.scale,u.t)}},0)}if(this.object.rotation.equals(e.rotation)===!1){let c=this.object.quaternion.clone(),u={t:0},h={x:this.object.rotation.x-e.rotation.x,y:this.object.rotation.y-e.rotation.y,z:this.object.rotation.z-e.rotation.z},d=e.rotation.clone(),f=.01*Ee.DEG2RAD,p=359.99*Ee.DEG2RAD;h.x===Math.PI*2?d.x===0?d.x=f:d.x===Math.PI*2&&(d.x=p):h.x===-Math.PI*2&&(d.x===0?d.x=-f:d.x===Math.PI*2&&(d.x=-p)),h.y===Math.PI*2?d.y===0?d.y=f:d.y===Math.PI*2&&(d.y=p):h.y===-Math.PI*2&&(d.y===0?d.y=-f:d.y===Math.PI*2&&(d.y=-p)),h.z===Math.PI*2?d.z===0?d.z=f:d.z===Math.PI*2&&(d.z=p):h.z===-Math.PI*2&&(d.z===0?d.z=-f:d.z===Math.PI*2&&(d.z=-p));let m=new Tt().setFromEuler(d);(a=this._animation)==null||a.add({targets:u,t:1,update:()=>{wm(c,m,this.object.quaternion,u.t)}},0)}let t=new M,n=new Tt,i=new M;if(e.hiddenMatrix.decompose(t,n,i),"hiddenMatrix"in this.object){let c=new M,u=new Tt,h=new M;if(this.object.hiddenMatrix.decompose(c,u,h),this.object.hiddenMatrix.equals(e.hiddenMatrix)===!1){let d=new M,f=new Tt,p=new M,m={t:0},v=this.object.hiddenMatrix;(l=this._animation)==null||l.add({targets:m,t:1,update:()=>{f.slerpQuaternions(u,n,m.t),d.lerpVectors(c,t,m.t),p.lerpVectors(h,i,m.t),v.compose(d,f,p)}},0)}}}animateGeometry(e){var t;if("geometry"in this.object&&e.geometry!==void 0){let i=this.object.geometry.userData.parameters,s=e.geometry;if(s.width!==i.width||s.height!==i.height||s.depth!==i.depth){let o=this.object;(t=this._animation)==null||t.add({targets:i,width:s.width,height:s.height,depth:s.depth,update:()=>{o.updateGeometry({parameters:{width:i.width,height:i.height,depth:i.depth}})}},0)}}}animateMaterial(e){if("material"in this.object)if(this.object.material instanceof Array)for(let t=0,n=this.object.material.length;t<n;++t)this._interpolateMaterial(this.object.material[t],e.material[t]);else{if(this.object.material.userData.isAsset)return;this._interpolateMaterial(this.object.material,e.material)}}_interpolateMaterial(e,t){let n=e.layersList.head,i=0;for(;n;){if(n.isBack===!0){n=n.next;continue}let s=t.layersList[i++];if(Eh(n)){let o=n.uniforms[`f${n.id}_texture`].value,a=s.uniforms[`f${s.id}_texture`].value;o.image===a.image?this._interpolateMaterialTexture(e,n,s):this._interpolateMaterialBetweenLayers(e,n,s)}else n.type==="gradient"?n.uniforms[`f${n.id}_gl_type`].value===s.uniforms[`f${s.id}_gl_type`].value?this._interpolateMaterialGradient(e,n,s):this._interpolateMaterialBetweenLayers(e,n,s):this._interpolateMaterialBetweenValues(e,n,s);n=n.next}}animateCamera(e){var t,n;if(this.object.objectType==="CombinedCamera"&&e.camera!==void 0){let i=this.object,s=i.cameraType==="OrthographicCamera"?e.camera.zoomOrtho:e.camera.zoomPersp;i.zoom!==s&&((t=this._animation)==null||t.add({targets:i,zoom:s,update:()=>{i.updateProjectionMatrix()}},0)),i.targetOffset!==e.camera.targetOffset&&((n=this._animation)==null||n.add({targets:i,targetOffset:e.camera.targetOffset},0))}}},Ls=Is;Ls.isAnimating={};var Ld=r=>class extends r{hasEntityChild(){return this.children.some(t=>Vh(t))}attach(t,n){this.updateWorldMatrix(!0,!1);let i=new me().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),Vh(t)?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),n!==void 0&&(this.children.pop(),this.children.splice(n,0,t)),this}copy(t,n=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),n===!0)for(let i=0;i<t.children.length;i++){let s=t.children[i];this.add(s.clone())}return this}toJSON(t){let n=t===void 0,i={object:{uuid:"",objectType:""}};t===void 0&&(t={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},i.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let s={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(s.name=this.name),s.matrix=this.matrix.toArray(),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),s.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(s.userData=this.userData),this.children.length>0){s.children=[];for(let o of this.children)(Vh(o)||o instanceof vi)&&s.children.push(o.toJSON(t).object)}if(n){let o=bl(t.geometries),a=bl(t.materials),l=bl(t.textures),c=bl(t.images),u=bl(t.interactionStates),h=bS(t.nodes);o.length>0&&(i.geometries=o),a.length>0&&(i.materials=a),l.length>0&&(i.textures=l),c.length>0&&(i.images=c),u.length>0&&(i.interactionStates=u),h.length>0&&(i.nodes=h)}return i.object=s,i}fromJSON(t){return this.uuid=t.uuid,t.name!==void 0&&(this.name=t.name),t.matrix!==void 0?(this.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=t.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(t.position!==void 0&&this.position.fromArray(t.position),t.rotation!==void 0&&this.rotation.fromArray(t.rotation),t.quaternion!==void 0&&this.quaternion.fromArray(t.quaternion),t.scale!==void 0&&this.scale.fromArray(t.scale)),this.castShadow=t.castShadow!==void 0,this.receiveShadow=t.receiveShadow!==void 0,t.visible!==void 0&&(this.visible=t.visible),t.frustumCulled!==void 0&&(this.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&&(this.renderOrder=t.renderOrder),t.layers!==void 0&&(this.layers.mask=t.layers),t.userData!==void 0&&(this.userData=t.userData),this}};var ei=r=>"isEntity"in r,wS=r=>"isAbstractMesh"in r,Xm=r=>"objectHelper"in r,Ii=r=>class extends Ld(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new me;this.interaction=new Ls(this);this.forceComputeSize=!1}set visibility(t){this.visible=t;for(let n of this.children)ei(n)&&n.traverseEntity(i=>{Xm(i)&&i.visible&&(i.objectHelper.visible=t)})}get visibility(){return this.visible}get interactionCache(){return this.interaction.cache===void 0&&this.interaction.computeCache(),this.interaction.cache}traverseEntity(t){t(this);for(let n of this.children)ei(n)&&n.traverseEntity(t)}computeSingleBoundingBox(){this.singleBoundingBox||(this.singleBoundingBox=new jh),this.singleBoundingBox.setFromObjectSize(this,!1),this.singleBoundingBox.computeVertices(),this.singleBoundingBox.computeEdges(),this.singleBoundingBox.computeFaces()}computeComplexBoundingBox(t){this.complexBoundingBox||(this.complexBoundingBox=new jh),this.complexBoundingBox.setFromObjectSize(this,t),this.complexBoundingBox.computeVertices(),this.complexBoundingBox.computeEdges(),this.complexBoundingBox.computeFaces()}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let n of this.children)n.updateMatrixWorld(t)}updateWorldMatrix(t,n){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),n)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(t){return new this.constructor().shallowCopy(this,t)}shallowCopy(t,n=!0){if(super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),t.interaction!==void 0&&this.interaction.copy(t.interaction),n===!0)for(let i of t.children)ei(i)&&this.add(i.shallowClone());return this}clone(t){return new this.constructor().copy(this,t)}copy(t,n=!0){if(super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),t.interaction!==void 0&&this.interaction.copy(t.interaction),n===!0)for(let i of t.children)ei(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let t=new me,n=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),t.copy(this.matrixWorld).invert(),t.multiply(n);for(let i of this.children)ei(i)&&i.hiddenMatrix.premultiply(t)}toJSON(t){let n=super.toJSON(t),i=n.object;return this.raycastLock===!0&&(i.raycastLock=!0),this.scaleLock===!0&&(i.scaleLock=!0),i.hiddenMatrix=this.hiddenMatrix.toArray(),this.interaction!==void 0&&(i.interaction=this.interaction.toJSON(t)),n}fromJSON(t){return super.fromJSON(t),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.scaleLock!==void 0&&(this.scaleLock=t.scaleLock),this.hiddenMatrix.fromArray(t.hiddenMatrix),this}fromObject3D(t){let n=t.children;return t.children=[],Object.assign(t,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new me}),this.copy(t),t.children=n,this}};var Id=class extends Ke{constructor(e,t={}){super();this.object=e,e.computeComplexBoundingBox(!0);let n=e.complexBoundingBox.getSize(new M),i=.1;this.parameters={type:t.type!==void 0?t.type:"radial",hideBase:t.hideBase!==void 0?t.hideBase:!1,count:t.count!==void 0?t.count:3,ra_radius:t.ra_radius!==void 0?t.ra_radius:Math.max(n.x,n.y)*2,ra_startAngle:t.ra_startAngle!==void 0?t.ra_startAngle:0,ra_endAngle:t.ra_endAngle!==void 0?t.ra_endAngle:360,ra_align:t.ra_align!==void 0?t.ra_align:!1,ra_axis:t.ra_axis!==void 0?t.ra_axis:"y",ra_scale:t.ra_scale!==void 0?t.ra_scale.clone():new M,ra_rotation:t.ra_rotation!==void 0?t.ra_rotation.clone():new On,ra_position:t.ra_position!==void 0?t.ra_position.clone():new M,li_scale:t.li_scale!==void 0?t.li_scale.clone():new M,li_rotation:t.li_rotation!==void 0?t.li_rotation.clone():new On,li_position:t.li_position!==void 0?t.li_position.clone():new M(n.x+n.x*i,0,0).round(),gr_count:t.gr_count!==void 0?t.gr_count.clone():new M(2,2,2),gr_size:t.gr_size!==void 0?t.gr_size.clone():new M(n.x+n.x*i,n.y+n.y*i,n.z+n.z*i).round(),gr_fromCenter:t.gr_fromCenter!==void 0?t.gr_fromCenter:!0},this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let t of this.object.material)t.visible=!0;if(e){let t=this.object.material.map(n=>n.clone());for(let n of this.children)n.material=t}else for(let t of this.children)t.material=this.object.material}for(let t of this.object.material)t.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let t=this.object.material.clone();for(let n of this.children)n.material=t}else for(let t of this.children)t.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.gr_count.x*this.parameters.gr_count.y*this.parameters.gr_count.z:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let t=0,n=e-this.children.length;t<n;++t){let i=this.object.shallowClone(!1);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let t=0,n=this.children.length-e;t<n;++t)this.remove(this.children[0])}_updateRadial(e){let t=e.ra_startAngle*Ee.DEG2RAD,n=e.ra_endAngle*Ee.DEG2RAD,i=t-n,s=new On(e.ra_rotation.x*Ee.DEG2RAD,e.ra_rotation.y*Ee.DEG2RAD,e.ra_rotation.z*Ee.DEG2RAD),o;switch(e.ra_axis){case"x":o=new M(1,0,0);break;case"y":o=new M(0,1,0);break;case"z":o=new M(0,0,1);break}for(let[a,l]of this.children.entries()){l.hiddenMatrix.identity(),l.scale.x=e.ra_scale.x+1,l.scale.y=e.ra_scale.y+1,l.scale.z=e.ra_scale.z+1,l.position.setScalar(0);let c=i/e.count*a-t;switch(e.ra_axis){case"x":l.rotation.set(0,c,0);break;case"y":l.rotation.set(0,0,c);break;case"z":l.rotation.set(c,0,0);break}l.translateOnAxis(o,e.ra_radius),l.position.add(e.ra_position),e.ra_align===!0?(l.rotation.x+=s.x,l.rotation.y+=s.y,l.rotation.z+=s.z):l.rotation.copy(s)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=new On(e.li_rotation.x*Ee.DEG2RAD,e.li_rotation.y*Ee.DEG2RAD,e.li_rotation.z*Ee.DEG2RAD);for(let[n,i]of this.children.entries())i.hiddenMatrix.identity(),i.scale.x=e.li_scale.x*n+1,i.scale.y=e.li_scale.y*n+1,i.scale.z=e.li_scale.z*n+1,i.rotation.x=t.x*n,i.rotation.y=t.y*n,i.rotation.z=t.z*n,i.position.x=e.li_position.x*n,i.position.y=e.li_position.y*n,i.position.z=e.li_position.z*n}_updateGrid(e){let t=0;if(e.gr_fromCenter===!0){let n={x:e.gr_count.x%2==0?2:1,y:e.gr_count.y%2==0?2:1,z:e.gr_count.z%2==0?2:1},i=new M(e.gr_size.x*(e.gr_count.x-n.x)*.5,e.gr_size.y*(e.gr_count.y-n.y)*.5,e.gr_size.z*(e.gr_count.z-n.z)*.5);for(let s=0;s<e.gr_count.x;s++)for(let o=0;o<e.gr_count.y;o++)for(let a=0;a<e.gr_count.z;a++){let l=this.children[t++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=e.gr_size.x*s-i.x,l.position.y=e.gr_size.y*o-i.y,l.position.z=e.gr_size.z*a-i.z}}else for(let n=0;n<e.gr_count.x;n++)for(let i=0;i<e.gr_count.y;i++)for(let s=0;s<e.gr_count.z;s++){let o=this.children[t++];o.hiddenMatrix.identity(),o.scale.setScalar(1),o.rotation.set(0,0,0),o.position.x=e.gr_size.x*n,o.position.y=-e.gr_size.y*i,o.position.z=-e.gr_size.z*s}}toJSON(){return{type:"Cloner",parameters:{type:this.parameters.type,hideBase:this.parameters.hideBase,count:this.parameters.count,ra_radius:this.parameters.ra_radius,ra_startAngle:this.parameters.ra_startAngle,ra_endAngle:this.parameters.ra_endAngle,ra_align:this.parameters.ra_align,ra_axis:this.parameters.ra_axis,ra_scale:this.parameters.ra_scale.toArray(),ra_rotation:this.parameters.ra_rotation.toArray(),ra_position:this.parameters.ra_position.toArray(),li_scale:this.parameters.li_scale.toArray(),li_rotation:this.parameters.li_rotation.toArray(),li_position:this.parameters.li_position.toArray(),gr_count:this.parameters.gr_count.toArray(),gr_size:this.parameters.gr_size.toArray(),gr_fromCenter:this.parameters.gr_fromCenter}}}fromJSON(e){let t=e.parameters;return this.parameters.type=t.type,this.parameters.hideBase=t.hideBase,this.parameters.count=t.count,this.parameters.ra_radius=t.ra_radius,this.parameters.ra_startAngle=t.ra_startAngle,this.parameters.ra_endAngle=t.ra_endAngle,this.parameters.ra_align=t.ra_align,this.parameters.ra_axis=t.ra_axis,this.parameters.ra_scale.fromArray(t.ra_scale),this.parameters.ra_rotation.fromArray(t.ra_rotation),this.parameters.ra_position.fromArray(t.ra_position),this.parameters.li_scale.fromArray(t.li_scale),this.parameters.li_rotation.fromArray(t.li_rotation),this.parameters.li_position.fromArray(t.li_position),this.parameters.gr_count.fromArray(t.gr_count),this.parameters.gr_size.fromArray(t.gr_size),this.parameters.gr_fromCenter=t.gr_fromCenter,this.update(),this.setHideBase(this.parameters.hideBase),this}};var Vn=class extends Ii(gt){constructor(e,t){super(e,t);this.isAbstractMesh=!0;Array.isArray(t)&&(this.selectedMaterial=0)}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,t){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=t!=null?t:0),t=t!=null?t:this.selectedMaterial,this.material[t].dispose(),this.material[t]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let t=this.geometry,n=Uc[t.userData.type],i=this.objectType==="NonParametric"?Object.assign({},t.userData,{geometry:t}):t.userData,s=n.build(n.normalizeInputs(e,i)),o=t.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=o,this.geometry.computeBoundingSphere()}resizeGeometry(e,t,n){Gc.resizeGeometry(this.geometry,{width:e,height:t,depth:n})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let t=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,n=kc(t),i=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(n,i).copy(this,e)}copy(e,t=!0){return super.copy(e,t),e.cloner&&(this.cloner=new Id(e,e.cloner.parameters),this.add(this.cloner)),this}toJSON(e){let t=super.toJSON(e),n=t.object;if(this.cloner!==void 0&&(n.cloner=this.cloner.toJSON()),n.geometry=xS(e.geometries,this.geometry,this.material),Array.isArray(this.material)){let i=[];for(let s=0,o=this.material.length;s<o;s++)i.push(Yc(e.materials,this.material[s],e));n.material=i}else n.material=Yc(e.materials,this.material,e);return t}fromJSON(e){return super.fromJSON(e),e.selectedMaterial!==void 0&&(this.selectedMaterial=e.selectedMaterial),e.cloner!==void 0&&(this.cloner=new Id(this).fromJSON(e.cloner)),this}};var xr=r=>{var e;return e=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new jn(30,30,30),e};var qm=new or,Ym=new ti,SS=new me,br=(r,e,t,n)=>{let i=e,s=r.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Ym.copy(i.boundingSphere),Ym.applyMatrix4(s),t.ray.intersectsSphere(Ym)===!1||(SS.copy(s).invert(),qm.copy(t.ray).applyMatrix4(SS),i.boundingBox!==null&&qm.intersectsBox(i.boundingBox)===!1))return;let o,a,l,c,u=i.index,h=i.attributes.position,d=i.drawRange,f,p,m=Math.max(0,d.start),v=Math.min(u.count,d.start+d.count);for(f=m,p=v;f<p;f+=3)if(a=u.getX(f),l=u.getX(f+1),c=u.getX(f+2),o=g(r,t,qm,h,a,l,c),o){o.faceIndex=Math.floor(f/3),n.push(o);return}function g(y,x,b,w,_,S,A){let T=new M,L=new M,C=new M,U=new M,P=new M;if(T.fromBufferAttribute(w,_),L.fromBufferAttribute(w,S),C.fromBufferAttribute(w,A),b.intersectTriangle(T,L,C,!1,U)===null)return null;P.copy(U),P.applyMatrix4(y.matrixWorld);let G=x.ray.origin.distanceTo(P);return G<x.near||G>x.far?null:{faceIndex:1,distance:G,point:P.clone(),object:y}}};var Kc=class extends xr(xi){constructor(e){super(e);this.object=e;let t=new Ji(15,4,2),n=new dn({wireframe:!0,fog:!1,toneMapped:!1}),i=new gt(t,n);this.add(i);let s=new Ji(15,4,2),o=new dn({wireframe:!0,fog:!1,toneMapped:!1,depthTest:!1,depthWrite:!1}),a=new gt(s,o);this.add(a),this.targetHelper=a,this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e),this.targetHelper.position.copy(e),this.targetHelper.updateWorldMatrix(!1,!0)}raycast(e,t){br(this.object,Kc.geometryHelper,e,t)}};var Qc=class extends xr(Bp){constructor(e,t=15,n=10066329){super(e,t,n);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){br(this.object,Qc.geometryHelper,e,t)}};var Zc=class extends xr(Op){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){br(this.object,Zc.geometryHelper,e,t)}update(){}};var $c=class extends xr(Rp){constructor(e,t=15,n=6710886){super(e,t,n);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){br(this.object,$c.geometryHelper,e,t)}};var Dd=class extends xr(Pp){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){br(this.object,Dd.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Dd._vector,t=this.object.distance?this.object.distance:1e3,n=t*Math.tan(this.object.angle);this.cone.scale.set(n,n,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,o=this.cone.material.length;s<o;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Pd=Dd;Pd._vector=new M;var c3=new M(0,0,1),MS=new M,AS=new M,_S=new Dt,Ps=class extends Vn{constructor(e=Pn.create({}),t=new oi({side:Xt})){super(e,t);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new cn;this._onShapeUpdate=()=>{if(this.geometry instanceof Rc){if(this.geometry.updateFromShape()){let e=this.geometry.drawCount,t=this.geometry.userData;this.updateGeometry(Object.assign(this.geometry.userData,{parameters:Object.assign(t.parameters,{surfaceMaxCount:e+1e3})}))}}else this.updateGeometry({});this.computeSingleBoundingBox(),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};var n;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}toJSON(e){let t=super.toJSON(e);return t.object.objectType="VectorObject",t}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let t=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:t})}}setShape(e){var t,n;this.shape&&((t=this.shape.eventDispatcher)==null||t.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),_S.getNormalMatrix(this.matrixWorld),MS.copy(c3).applyMatrix3(_S).normalize(),AS.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(MS,AS)}clone(e){let t=this.shape.clone(),n=this.material.clone(),i=this.geometry.userData,s=Pn.create(Object.assign({},i,{shape:t})),o=new Ps(s,n).copy(this,e);return o.shape=t,t.update(),o}raycast(e,t){Vn.prototype.raycast.call(this,e,t)}};var wr=(r,e)=>class extends r{constructor(){super(...arguments);this.objectHelper=new e(this);this.enableHelper=!1}set visibility(n){this.visible=n,this.setHelperVisibility(n),this.setHelperChildrenVisibility(n)}get visibility(){return this.visible}get geometryHelper(){return e.geometryHelper}setHelperVisibility(n){this.objectHelper.visible=n}setHelperChildrenVisibility(n){for(let i of this.children)ei(i)&&i.traverseEntity(s=>{Xm(s)&&s.visible&&(s.objectHelper.visible=n)})}raycast(n,i){this.objectHelper.raycast(n,i)}copy(n,i=!0){return super.copy(n,i),n.enableHelper!==void 0&&(this.enableHelper=n.enableHelper),n.objectHelper!==void 0&&(this.objectHelper.visible=n.objectHelper.visible),this}toJSON(n){let i=super.toJSON(n),s=i.object;return s.enableHelper=this.enableHelper,i}fromJSON(n){return super.fromJSON(n),n.enableHelper!==void 0&&(this.enableHelper=!0),this}};var wl=new M,Km=new M,Qm=class extends wr(Ii(Dr),Kc){constructor(e=100,t=100,n=45,i=50,s=5e4){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Qm.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=window.innerWidth,this.height=window.innerHeight,this.orthoCamera=new Rr(e*-.5,e*.5,t*.5,t*-.5,i,s),this.perspCamera=new Vt(n,e/t,i,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}setDefault(){this.name="Default Camera",this.isEntity=!1,this.enableHelper=!1,this.objectHelper.visible=!1}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(wl),this.targetOffset=wl.distanceTo(e)}getTarget(e=new M){return this.getWorldDirection(Km),this.getWorldPosition(wl),Km.multiplyScalar(this.targetOffset),e.copy(wl).add(Km),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(wl),wl.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Tt),t=new M(0,0,1).applyQuaternion(e),n=new M().copy(Ke.DefaultUp).applyQuaternion(e),i=new M().copy(Ke.DefaultUp).projectOnPlane(t),s=new M().crossVectors(i,n).dot(t)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(n)*s}getViewFrontToObject(e){let t=e.getWorldPosition(new M),i=e.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new M),i=this.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5,this.aspect=e/t,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,n,i,s,o){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,n,i,s,o):this.orthoCamera.setViewOffset(e,t,n,i,s,o)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let t={near:this.orthoCamera.near,far:this.orthoCamera.far},n={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.isEntity=!0,this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=t.near,this.orthoCamera.far=t.far,this.perspCamera.near=n.near,this.perspCamera.far=n.far,this.updateProjectionMatrix(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="CombinedCamera",n.cameraType=this.cameraType,n.targetOffset=this.targetOffset,n.isUpVectorFlipped=this.isUpVectorFlipped,n.angleOffsetFromUp=this.angleOffsetFromUp,n.left=this.left,n.right=this.right,n.top=this.top,n.bottom=this.bottom,this.view!==null&&(n.view=Object.assign({},this.view)),n.zoomOrtho=this.orthoCamera.zoom,n.nearOrtho=this.orthoCamera.near,n.far=this.far,n.aspect=this.aspect,n.fov=this.fov,n.focus=this.focus,n.filmGauge=this.filmGauge,n.filmOffset=this.filmOffset,n.zoomPersp=this.perspCamera.zoom,n.nearPersp=this.perspCamera.near,t}fromJSON(e){var t,n;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let i=this.getWorldPosition(new M),s=new M().fromArray(e.orbitControlsTarget);this.targetOffset=s.distanceTo(i)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=(t=e.isUpVectorFlipped)!=null?t:!1,this.angleOffsetFromUp=(n=e.angleOffsetFromUp)!=null?n:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}},Sr=Qm;Sr.DefaultTargetOffset=1e3;var Pi=class extends wr(Ii(Jn),Zc){constructor(){super(...arguments);this.objectType="EmptyObject"}toJSON(e){let t=super.toJSON(e);return t.object.objectType="EmptyObject",t}};var Rd=class extends wr(Ii(Fr),Qc){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=1,n.far=2500;let i=new xi(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,t=!0){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="LightDirectional",n.color=this.color.getHex(),n.intensity=this.intensity,n.shadow=this.shadow.toJSON(),t}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let t=this.shadow.camera,n=e.shadow.camera;return t.near=n.near,t.far=n.far,t.zoom=n.zoom,t.left=n.left,t.right=n.right,t.top=n.top,t.bottom=n.bottom,n.view!==void 0&&(t.view=Object.assign({},n.view)),this}};var Bd=class extends wr(Ii(xo),$c){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let i=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),o=new tn(i,s),a=new Da(o,new fe(16755200));a.visible=!1,this._gizmos.shadowmap=a,this.update()}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Da&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Da&&(t.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let t=this._gizmos[e];if(t instanceof Da){let n=this.shadow.camera,i=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z);t.box.set(i,s),t.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,t=!0){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="LightPoint",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.decay=this.decay,n.shadow=this.shadow.toJSON(),t}fromJSON(e){var i,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]);let t=this.shadow.camera,n=e.shadow.camera;return t.near=n.near,t.far=n.far,t.zoom=n.zoom,t.fov=n.fov,t.focus=n.focus,t.aspect=n.aspect,t.filmGauge=n.filmGauge,t.filmOffset=n.filmOffset,n.view!==void 0&&(t.view=Object.assign({},n.view)),this}};var TS=new M,ES=new M,NS=new Tt,Od=class extends wr(Ii(vo),Pd){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=Ee.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let i=new xi(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),ES.setFromMatrixPosition(this.matrixWorld),NS.setFromRotationMatrix(this.matrixWorld),TS.copy(this.up).applyQuaternion(NS).negate().multiplyScalar(this.distance),this.target.position.copy(ES).add(TS),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,t=!0){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="LightSpot",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.angle=this.angle,n.decay=this.decay,n.penumbra=this.penumbra,n.shadow=this.shadow.toJSON(),t}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let t=this.shadow.camera,n=e.shadow.camera;return t.near=n.near,t.far=n.far,t.zoom=n.zoom,t.fov=n.fov,t.focus=n.focus,t.aspect=n.aspect,t.filmGauge=n.filmGauge,t.filmOffset=n.filmOffset,n.view!==void 0&&(t.view=Object.assign({},n.view)),this}};var CS=r=>r.tagName==="VIDEO",Sl=class{static resize(e,t,n){let i=e/t,s;if(!n.image)return;let o=n.image;CS(o)?s=o.videoWidth/o.videoHeight:s=o.width/o.height,i>s&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*s/i):n.repeat.set(1,1*s/i)),i<s&&(n.imageType=="WEBCAM"?n.repeat.set(1*i/s*-1,1):n.repeat.set(1*i/s,1)),i==s&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1))}static resizeTextureLayer(e,t,n){let i=e/t,s=n.image!==void 0?n.image.width/n.image.height:1,o;i>s?o={x:1,y:s/i}:i<s?o={x:i/s,y:1}:o={x:1,y:1},n.repeat.set(o.x,o.y),n.updateMatrix()}static resizeTextureLayers(e,t,n){let i=n.userData.layers,s=i.getLayers();for(let o=0;o<s.length;o++){let a=s[o];Eh(a)&&(Sl.resizeTextureLayer(e,t,a.uniforms[`f${a.id}_texture`].value),i.updateLayerUniform())}}static resizeComplex(e,t,n,i){let s=e/t,o,a=n.image;CS(a)?o=a.videoWidth/a.videoHeight:o=a.width/a.height,i.geometry.type.includes("Shape")?(s>o&&(n.imageType=="WEBCAM"?n.repeat.set(1/e*-1,1/t*o/s):n.repeat.set(1/e,1/t*o/s)),s<o&&(n.imageType=="WEBCAM"?n.repeat.set(1/e*s/o*-1,1/t):n.repeat.set(1/e*s/o,1/t)),s==o&&(n.imageType=="WEBCAM"?n.repeat.set(1/e*-1,1/t):n.repeat.set(1/e,1/t))):(s>o&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*o/s):n.repeat.set(1,1*o/s)),s<o&&(n.imageType=="WEBCAM"?n.repeat.set(1*s/o*-1,1):n.repeat.set(1*s/o,1)),s==o&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1)))}};var Ml=class extends Vn{constructor(e,t=new oi){super(e,t);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&Sl.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,t){super.resizeGeometry(e,t,0),this.material.userData.layers&&Sl.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let t=super.toJSON(e);return t.object.objectType="Mesh2D",t}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let t,n;if(e instanceof ah){let o=e.image;t=o.videoWidth*.5,n=o.videoHeight*.5}else{let o=e.image;t=o.width*.5,n=o.height*.5}let i=kh.create({parameters:{width:t,height:n}}),s=new oi;return s.layersList.changeLayer(0,{type:lt.TEXTURE,texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Ml(i,s)}};var Al=class extends Vn{constructor(e,t=new Ci){super(e,t);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let t=super.toJSON(e);return t.object.objectType="Mesh3D",t}};var Fd=class extends Al{constructor(e,t=new Ci){super(e,t);this.objectType="NonParametric"}toJSON(e){let t=super.toJSON(e);return t.object.objectType="NonParametric",t}};var Ds;(function(n){n[n.TEXT=0]="TEXT",n[n.ARRAY_BUFFER=1]="ARRAY_BUFFER",n[n.BINARY_STRING=2]="BINARY_STRING"})(Ds||(Ds={}));function LS(r,e,t=1){let n=new FileReader;return new Promise((i,s)=>{let o=()=>{s({error:!0,filename:r.name}),e.itemError(r.name),e.itemEnd(r.name)};switch(n.addEventListener("loadstart",()=>{e.itemStart(r.name)}),n.addEventListener("load",a=>{var c;let l=(c=a.target)==null?void 0:c.result;l!=null?i(l):o()},!1),n.addEventListener("error",o),t){case 0:n.readAsText(r);break;case 2:n.readAsBinaryString!==void 0&&n.readAsBinaryString(r);break;case 1:default:n.readAsArrayBuffer(r)}})}var Zm=class extends fn{constructor(e){super(e);this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new DS(t)}),this.register(function(t){return new zS(t)}),this.register(function(t){return new GS(t)}),this.register(function(t){return new RS(t)}),this.register(function(t){return new BS(t)}),this.register(function(t){return new OS(t)}),this.register(function(t){return new FS(t)}),this.register(function(t){return new IS(t)}),this.register(function(t){return new US(t)})}load(e,t,n,i){let s=this,o;this.resourcePath!==""?o=this.resourcePath:this.path!==""?o=this.path:o=Ei.extractUrlBase(e),this.manager.itemStart(e);let a=function(c){i?i(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new Xn(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,o,function(u){t(u),s.manager.itemEnd(e)},a)}catch(u){a(u)}},n,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let s,o={},a={};if(typeof e=="string")s=e;else if(Ei.decodeText(new Uint8Array(e,0,4))===kS){try{o[dt.KHR_BINARY_GLTF]=new HS(e)}catch(h){i&&i(h);return}s=o[dt.KHR_BINARY_GLTF].content}else s=Ei.decodeText(new Uint8Array(e));let l=JSON.parse(s);if(l.asset===void 0||l.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new $S(l,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){let h=this.pluginCallbacks[u](c);a[h.name]=h,o[h.name]=!0}if(l.extensionsUsed)for(let u=0;u<l.extensionsUsed.length;++u){let h=l.extensionsUsed[u],d=l.extensionsRequired||[];switch(h){case dt.KHR_MATERIALS_UNLIT:o[h]=new PS;break;case dt.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:o[h]=new JS;break;case dt.KHR_DRACO_MESH_COMPRESSION:o[h]=new jS(l,this.dracoLoader);break;case dt.KHR_TEXTURE_TRANSFORM:o[h]=new WS;break;case dt.KHR_MESH_QUANTIZATION:o[h]=new XS;break;default:d.indexOf(h)>=0&&a[h]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+h+'".')}}c.setExtensions(o),c.setPlugins(a),c.parse(n,i)}};function u3(){let r={};return{get:function(e){return r[e]},add:function(e,t){r[e]=t},remove:function(e){delete r[e]},removeAll:function(){r={}}}}var dt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"},IS=class{constructor(e){this.parser=e,this.name=dt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){let s=t[n];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n="light:"+e,i=t.cache.get(n);if(i)return i;let s=t.json,l=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e],c,u=new fe(16777215);l.color!==void 0&&u.fromArray(l.color);let h=l.range!==void 0?l.range:0;switch(l.type){case"directional":c=new Fr(u),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new xo(u),c.distance=h;break;case"spot":c=new vo(u),c.distance=h,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,c.angle=l.spot.outerConeAngle,c.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return c.position.set(0,0,0),c.decay=2,l.intensity!==void 0&&(c.intensity=l.intensity),c.name=t.createUniqueName(l.name||"light_"+e),i=Promise.resolve(c),t.cache.add(n,i),i}createNodeAttachment(e){let t=this,n=this.parser,s=n.json.nodes[e],a=(s.extensions&&s.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(l){return n._getNodeRef(t.cache,a,l)})}},PS=class{constructor(){this.name=dt.KHR_MATERIALS_UNLIT}getMaterialType(){return dn}extendParams(e,t,n){let i=[];e.color=new fe(1,1,1),e.opacity=1;let s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){let o=s.baseColorFactor;e.color.fromArray(o),e.opacity=o[3]}s.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",s.baseColorTexture))}return Promise.all(i)}},DS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(s.push(n.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){let a=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new O(a,-a)}return Promise.all(s)}},RS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&s.push(n.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(s)}},BS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_VOLUME}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&s.push(n.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||0;let a=o.attenuationColor||[1,1,1];return t.attenuationTint=new fe(a[0],a[1],a[2]),Promise.all(s)}},OS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_IOR}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=i.extensions[this.name];return t.ior=s.ior!==void 0?s.ior:1.5,Promise.resolve()}},FS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_SPECULAR}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&s.push(n.assignTexture(t,"specularIntensityMap",o.specularTexture));let a=o.specularColorFactor||[1,1,1];return t.specularTint=new fe(a[0],a[1],a[2]),o.specularColorTexture!==void 0&&s.push(n.assignTexture(t,"specularTintMap",o.specularColorTexture).then(function(l){l.encoding=Fi})),Promise.all(s)}},zS=class{constructor(e){this.parser=e,this.name=dt.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;let s=i.extensions[this.name],o=n.images[s.source],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,o,a)}},GS=class{constructor(e){this.parser=e,this.name=dt.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,i=n.json,s=i.textures[e];if(!s.extensions||!s.extensions[t])return null;let o=s.extensions[t],a=i.images[o.source],l=n.textureLoader;if(a.uri){let c=n.options.manager.getHandler(a.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return n.loadTextureImage(e,a,l);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}},US=class{constructor(e){this.name=dt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let i=n.extensions[this.name],s=this.parser.getDependency("buffer",i.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return Promise.all([s,o.ready]).then(function(a){let l=i.byteOffset||0,c=i.byteLength||0,u=i.count,h=i.byteStride,d=new ArrayBuffer(u*h),f=new Uint8Array(a[0],l,c);return o.decodeGltfBuffer(new Uint8Array(d),u,h,f,i.mode,i.filter),d})}else return null}},kS="glTF",eu=12,VS={JSON:1313821514,BIN:5130562},HS=class{constructor(e){this.name=dt.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,eu);if(this.header={magic:Ei.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==kS)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");let n=this.header.length-eu,i=new DataView(e,eu),s=0;for(;s<n;){let o=i.getUint32(s,!0);s+=4;let a=i.getUint32(s,!0);if(s+=4,a===VS.JSON){let l=new Uint8Array(e,eu+s,o);this.content=Ei.decodeText(l)}else if(a===VS.BIN){let l=eu+s;this.body=e.slice(l,l+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}},jS=class{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=dt.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,i=this.dracoLoader,s=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},l={},c={};for(let u in o){let h=$m[u]||u.toLowerCase();a[h]=o[u]}for(let u in e.attributes){let h=$m[u]||u.toLowerCase();if(o[u]!==void 0){let d=n.accessors[e.attributes[u]],f=tu[d.componentType];c[h]=f,l[h]=d.normalized===!0}}return t.getDependency("bufferView",s).then(function(u){return new Promise(function(h){i.decodeDracoFile(u,function(d){for(let f in d.attributes){let p=d.attributes[f],m=l[f];m!==void 0&&(p.normalized=m)}h(d)},a,c)})})}},WS=class{constructor(){this.name=dt.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return t.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}},zd=class extends Xi{constructor(e){super();this.isGLTFSpecularGlossinessMaterial=!0;let t=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
4114
|
+
`)}return t}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.position&&(t.position=this.position.toJSON(e).uuid),this.color&&(t.color=this.color.toJSON(e).uuid),t.roughness=this.roughness.toJSON(e).uuid,t.metalness=this.metalness.toJSON(e).uuid,this.alpha&&(t.alpha=this.alpha.toJSON(e).uuid),this.reflectivity&&(t.reflectivity=this.reflectivity.toJSON(e).uuid),this.shadingAlpha&&(t.shadingAlpha=this.shadingAlpha.toJSON(e).uuid),this.shadingBlend&&(t.shadingBlend=this.shadingBlend.toJSON(e).uuid),this.afterColor&&(t.afterColor=this.afterColor.toJSON(e).uuid)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.position&&(this.position=t.getNode(e.position)),e.color&&(this.color=t.getNode(e.color)),e.roughness&&(this.roughness=t.getNode(e.roughness)),e.metalness&&(this.metalness=t.getNode(e.metalness)),e.alpha&&(this.alpha=t.getNode(e.alpha)),e.reflectivity&&(this.reflectivity=t.getNode(e.reflectivity)),e.shadingAlpha&&(this.shadingAlpha=t.getNode(e.shadingAlpha)),e.shadingBlend&&(this.shadingBlend=t.getNode(e.shadingBlend)),e.afterColor&&(this.afterColor=t.getNode(e.afterColor)),this}};var im=class extends Ni{get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}constructor(e=new Tc,t){super(e,e,t);this.type="StandardNodeMaterial",this.fragment=e}};var Ec=class extends im{constructor(e,t,n){super(t,e);this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=n!=null?n:this._getLayerStack(e==null?void 0:e.map)}get layersList(){return this.userData.layers}set layersList(e){this.userData.layers=e}equals(e){return this.userData.type===e.userData.type&&this.userData.layers.uuid==e.userData.layers.uuid}copy(e){if(e.userData.layers!==void 0&&e.userData.layers instanceof Kn){let t=e.userData.layers,n=e.fragment;super.copy(e);let i=n.clone();this.fragment=i,this.vertex=i;let s=t.clone(this);this.userData.layers=s,i.shadingAlpha.value=n.shadingAlpha.value,i.shadingBlend.value=n.shadingBlend.value}else super.copy(e);return this}static fromJSON(e,t,n){let i=n.getNode(t.vertex),s=new Ec(void 0,i);return s.fromJSON(t,n),s}dispose(){super.dispose()}};var wx={BasicMaterial:oi,PhongMaterial:Ci,LambertMaterial:Mc,ToonMaterial:_c,PhysicalMaterial:Ec};var Sx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var o,a,l,c,u;let t=Object.assign({},(o=e==null?void 0:e.parameters)!=null?o:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},r.parameters),n=t.width/2,i=(a=t.radiusTop)!=null?a:n,s=(l=t.radiusBottom)!=null?l:n;return i===s?(i=n,s=n):i>s?(i=n,s=s*n/i):(i=i*n/s,s=n),{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((c=t.height)!=null?c:t.width),depth:Math.abs((u=t.depth)!=null?u:t.width),radiusTop:i,radiusBottom:s})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:h,cornerSegments:d,hollow:f}=r.parameters,p;return h||f?p=new Lh(c,u,n,i,s,o,a,l*Math.PI/180,h,h,d,f):p=new ds(c,u,n,i,s,o,a,l*Math.PI/180),p.scale(1,1,t/e),Object.assign(p,{userData:tt(Ue({},r),{type:"CylinderGeometry"})})}};function ys(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function Mx(r){return new O(r.y,-r.x)}var Lh=class extends we{constructor(e,t,n,i,s,o,a,l,c,u,h,d,f=!1){super();this.type="RoundedCylinderBufferGeometry",e=e!==void 0?e:1,t=t!==void 0?t:1,n=n||1,i=Math.floor(i)||8,s=Math.floor(s)||1,o=o!==void 0?o:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,o&&(c=0,u=0);let p=[],m=[],v=[],g=[],y=0,x=n/2,b=new M,w=new M;f&&e==0&&(e=c),f&&t==0&&(t=u);let _=new O(e,x),S=new O(t,-x),A=null,T=null,L=null,C=null,U=_.clone().sub(S),P=0,R=0,G=0;d>0&&(P=Math.min(e,t)*(1-d),R=e-P,G=t-P);let B=_.clone();B.x-=P;let j=Math.PI-U.angle(),ne=U.angle(),le=Math.tan(ne/2),W=Math.tan(j/2),z=le+W,D=d?z:W,K=d?z:le;if(c=Math.min(c,(e-R)/D,U.length()/z),u=Math.min(u,(t-G)/K,U.length()/z),c>0){let te=c/le;A=_.clone().sub(new O(te,c)),d&&(L=A.clone(),L.x-=P-z*c),_.sub(U.clone().setLength(te))}if(u>0){let te=u/W;T=S.clone().sub(new O(te,-u)),S.add(U.clone().setLength(te)),d&&(C=T.clone(),C.x-=P-z*u,B.sub(U.clone().setLength(te)))}U=_.clone().sub(S);let q=U.length()<.5,ee=[];for(let te=0;te<=i;te++){let X=[],se=te/i,$=se*l+a,H=new O(Math.sin($),Math.cos($));C&&T?(V(X,se,H,j,u,C,-1,!0),V(X,se,H,ne,u,T,-1,!1)):T?(de(X,H,T.x,0,-1),V(X,se,H,ne,u,T,-1,!1)):o||de(X,H,t,G,-1);let Q=Mx(U).normalize();if(ys(Q,H,b),!q)for(let ce=0;ce<=s;ce++){let ie=ce/s,N=U.clone().multiplyScalar(ie).add(S);ys(N,H,w),m.push(w.x,w.y,w.z),v.push(b.x,b.y,b.z),g.push(se,.5+w.y/n),X.push(y++)}if(L&&A?(V(X,se,H,j,c,A,1,!1),V(X,se,H,ne,c,L,1,!0)):A?(V(X,se,H,j,c,A,1,!1),de(X,H,A.x,0,1)):o||de(X,H,e,R,1),d&&!q){let ce=Mx(U).multiplyScalar(-1).normalize();ys(ce,H,b);for(let ie=0;ie<=s;ie++){let N=ie/s,E=U.clone().multiplyScalar(-N).add(B);ys(E,H,w),m.push(w.x,w.y,w.z),v.push(b.x,b.y,b.z),g.push(se,.5+w.y/n),X.push(y++)}}d&&!o&&X.push(X[0]),ee.push(X)}for(let te=0;te<ee.length-1;te++)for(let X=0;X<ee[0].length-1;X++){if(o&&d&&X==s)continue;let se=ee[te][X],$=ee[te+1][X],H=ee[te+1][X+1],Q=ee[te][X+1],ce=m[H*3+0],ie=m[H*3+2];p.push(se,$,Q),(ce!=0||ie!=0)&&p.push($,H,Q)}l<Math.PI*2&&(ae(-1,ee[0],a),ae(1,ee[ee.length-1],a+l)),this.setIndex(p),this.setAttribute("position",new ge(m,3)),this.setAttribute("normal",new ge(v,3)),this.setAttribute("uv",new ge(g,2));function V(te,X,se,$,H,Q,ce,ie){for(let N=0;N<h+1;N++){let E=N/h,Y=ce<0?E:1-E;ie&&(Y-=1),Y*=$;let re=new O(Math.sin(Y),Math.cos(Y)*ce),ye=re.clone().multiplyScalar(H).add(Q);ys(ye,se,w),m.push(w.x,w.y,w.z),ys(re,se,b),v.push(b.x,b.y,b.z),g.push(X,.5+w.y/n),te.push(y++)}}function de(te,X,se,$,H){let Q=new M,ce=new O,ie=[se,$];H<0&&ie.reverse();for(let N of ie)ce.set(N,x*H),ys(ce,X,Q),m.push(Q.x,Q.y,Q.z),v.push(0,H,0),g.push(.5,.5),te.push(y++)}function ae(te,X,se){let $=new O(Math.sin(se),Math.cos(se)),H=new O(-Math.cos(se),Math.sin(se)),Q=new M,ce=te<0?(E,Y,re)=>p.push(E,Y,re):(E,Y,re)=>p.push(E,re,Y),ie=new O((e+t+R+G)/4,0);ys(ie,$,Q),m.push(Q.x,Q.y,Q.z),v.push(H.x,0,H.y),g.push(.5,.5);let N=y++;for(let E of X){let Y=m.slice(E*3,E*3+3);m.push(...Y),v.push(H.x,0,H.y);let re=g.slice(E*2,E*2+2);g.push(...re),y++}for(let E=N+1;E<y-1;E++)ce(N,E,E+1);ce(N,y-1,N+1)}}};var Ax=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,radialSegments:32,heightSegments:32,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,depth:t,height:n,radialSegments:i,heightSegments:s,openEnded:o,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:h}=r.parameters,d;return c>0||u>0||l<360?d=new Lh(0,e/2,n,i,s,o,a,l*Math.PI/180,c,u,h,0,!0):d=new oo(e/2,n,i,s,o),d.scale(1,1,t/e),Object.assign(d,{userData:tt(Ue({},r),{type:"ConeGeometry"})})}};var _x=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,widthSegments:i,heightSegments:s,depthSegments:o,cornerRadius:a,cornerSegments:l}=r.parameters,c;return a==0?c=new jn(e,t,n,i,s,o):c=new Tx(e,t,n,i,s,o,a,l),Object.assign(c,{userData:tt(Ue({},r),{type:"CubeGeometry"})})}},rm=Math.PI/2,Tx=class extends we{constructor(e=1,t=1,n=1,i=1,s=1,o=1,a=0,l=4){super();this.type="BoxBufferGeometry";let c=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o),l=Math.floor(l),a=Math.min(a,e/2,t/2,n/2);let u=[],h=[],d=[],f=[],p=0,m=0;v("z","y","x",-1,-1,n,t,e,o,s,0),v("z","y","x",1,-1,n,t,-e,o,s,1),v("x","z","y",1,1,e,n,t,i,o,2),v("x","z","y",1,-1,e,n,-t,i,o,3),v("x","y","z",1,-1,e,t,n,i,s,4),v("x","y","z",-1,-1,e,t,-n,i,s,5),a>0&&(g("z","y","x",-1,-1,1,n,t,e,o,0),g("z","y","x",1,-1,-1,n,t,e,o,1),g("z","y","x",-1,1,-1,n,t,e,o,1),g("z","y","x",1,1,1,n,t,e,o,0),g("x","y","z",-1,-1,-1,e,t,n,i,0),g("x","y","z",1,-1,1,e,t,n,i,1),g("x","y","z",-1,1,1,e,t,n,i,0),g("x","y","z",1,1,-1,e,t,n,i,1),g("y","x","z",-1,-1,1,t,e,n,s,0),g("y","x","z",1,-1,-1,t,e,n,s,1),g("y","x","z",1,1,1,t,e,n,s,1),g("y","x","z",-1,1,-1,t,e,n,s,0),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new ge(h,3)),this.setAttribute("normal",new ge(d,3)),this.setAttribute("uv",new ge(f,2));function v(x,b,w,_,S,A,T,L,C,U,P){let R=(A-2*a)/C,G=(T-2*a)/U,B=A/2-a,j=T/2-a,ne=L/2,le=C+1,W=U+1,z=0,D=0,K=new M;for(let q=0;q<W;q++){let ee=q*G-j;for(let V=0;V<le;V++){let de=V*R-B;K[x]=de*_,K[b]=ee*S,K[w]=ne,h.push(K.x,K.y,K.z),K[x]=0,K[b]=0,K[w]=L>0?1:-1,d.push(K.x,K.y,K.z),f.push(V/C),f.push(1-q/U),z+=1}}for(let q=0;q<U;q++)for(let ee=0;ee<C;ee++){let V=p+ee+le*q,de=p+ee+le*(q+1),ae=p+(ee+1)+le*(q+1),te=p+(ee+1)+le*q;u.push(V,de,te),u.push(de,ae,te),D+=6}c.addGroup(m,D,P),m+=D,p+=z}function g(x,b,w,_,S,A,T,L,C,U,P){let R=(T-2*a)/U,G=T/2-a,B=L/2-a,j=C/2,ne=U+1,le=0,W=0,z=new M,D=new M;for(let K=0;K<l+1;K++){let q=K/l*rm,ee=Math.sin(q)*a,V=(1-Math.cos(q))*a,de=Math.sin(q),ae=Math.cos(q);z[b]=(B+ee)*S,z[w]=(j-V)*A,D[x]=0,D[b]=de*Math.sign(z[b]),D[w]=ae*Math.sign(z[w]);for(let te=0;te<ne;te++){let X=te*R-G;z[x]=X*_,h.push(z.x,z.y,z.z),d.push(D.x,D.y,D.z),f.push(te/U),f.push(0),le+=1}}for(let K=0;K<l;K++)for(let q=0;q<U;q++){let ee=p+q+ne*K,V=p+q+ne*(K+1),de=p+(q+1)+ne*(K+1),ae=p+(q+1)+ne*K;u.push(ee,V,ae),u.push(V,de,ae),W+=6}c.addGroup(m,W,P),m+=W,p+=le}function y(x,b,w){let _=new M,S=new M(e/2,t/2,n/2);S.subScalar(a);let A=[],T=x*b*w>0?(C,U,P)=>u.push(C,U,P):(C,U,P)=>u.push(C,P,U);for(let C=0;C<=l;C++){let U=[],P=rm*(1-C/l),R=Math.cos(P),G=Math.sin(P),B=0;for(let j=0;j<=C;j++){let ne=Math.cos(B),le=Math.sin(B);_.x=R*ne,_.y=G,_.z=R*le;let W=S.clone().addScaledVector(_,a);h.push(x*W.x,b*W.y,w*W.z),d.push(x*_.x,b*_.y,w*_.z),f.push(0,0),U.push(p++),B+=rm/C}A.push(U)}let L=A.length-1;for(let C=0;C<L;C++){let U=A[C],P=A[C+1],R=U.length-1;T(U[0],P[1],P[0]);for(let G=1;G<=R;G++)T(U[G-1],U[G],P[G]),T(U[G],P[G+1],P[G])}}}};var Eo=class extends we{constructor(e,t,n,i=1,s=.2,o=4){super();this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];u(),h(),this.setAttribute("position",new ge(a,3)),this.setAttribute("normal",new ge(c,3)),this.setAttribute("uv",new ge(l,2));return;function u(){var le;s=Math.min(1-1e-5,s),s==0&&(o=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[n],p=new M,m=p.clone(),v=new qt,g=s*i,y=i-g,x=o+1,b=new M,w=(W,z)=>b.subVectors(W,z).normalize(),_=(W,z)=>Array(W).fill(void 0).map(z),S=_(e.length/3,(W,z)=>new M().fromArray(e,z*3).setLength(i)),A=[],T=1e6;for(let W=0;W<S.length;W++){let z=S[W],D=[],K,q,ee,V=1e10,de=-1;for(;(de=t.indexOf(W,de+1))!=-1;){let se=de-de%3;K=t[se+(de+1)%3],q=t[se+(de+2)%3],ee=z.distanceToSquared(S[K]),V=Math.min(V,ee),D.push([K,q,ee])}V+=1e-6;let ae=[],te=0,X=D.length;for(let se=0;se<X;se++){[K,q,ee]=D[te];let $=((le=A[K])==null?void 0:le.includes(W))==!0;ee<=V&&ae.push(K+ +$*T),te=D.findIndex(H=>H[0]==q)}A.push(ae)}let L=[];{let W=0,z=0,D,K,q=f==3;for(let ee=0;ee<=o;ee++){D=ee*(ee+1)/2,K=(ee+1)*(ee+2)/2;for(let V=0;V<o-ee;V++)[W,z]=[D+V+ee+2,K+V+ee+3],L.push(D,K,...q?[z,D]:[W,K],z,W),[D,K]=[W,z];L.push(D,K,D+o+2)}}let C=p.clone(),U=p.clone(),P=p.clone(),R=p.clone(),G=p.clone(),B=[],j=_(S.length,()=>_(f,()=>p.clone()));for(let W=0;W<S.length;W++){p.copy(S[W]).normalize(),C.copy(p).multiplyScalar(y);let z=A[W];for(let ae=0;ae<z.length;ae++){let te=z[ae],X=z[(ae+1)%f];v.setFromPointsAndIndices(S,W,te%T,X%T),v.b.sub(v.a).setLength(1e10).add(v.a),v.c.sub(v.a).setLength(1e10).add(v.a),v.closestPointToPoint(C,j[W][ae])}let D=[],K=[],q=[],ee=new M;o==0&&[...j[W]].reduce((ae,te)=>ae.add(te),ee).multiplyScalar(1/f);for(let ae=0;ae<f;ae++){let te=[],X=(ae-1+f)%f,se=j[W][X],$=j[W][ae];p.copy(se).sub(C),m.copy($).sub(C);let H=C.angleTo(p),Q=p.angleTo(m),ce=Math.cos(H)*g;o==0?U.copy(ee):U.copy(C).setLength(y+ce),K.push(ce);let ie=[U,se,$];for(let N=0;N<2;N++){let E=ie[N],Y=ie[N+1];R.subVectors(E,C),G.subVectors(Y,C),P.crossVectors(R,G).normalize();for(let re=0;re<x;re++){let ye=[H,Q][N]*re/x;p.copy(R).applyAxisAngle(P,ye).add(C),D.push(p.clone()),N&&(w(p,C),te.push([re==0?E:p.clone(),b.clone()]))}N&&(w(Y,C),te.push([Y,b.clone()]))}q.push(te)}B.push(q);let V=2*x,de=2;for(let ae=0;ae<f;ae++){let te=V*ae,X=V*((ae+1)%f),se=[D[te]];for(let H=1;H<x;H++){R=D[te+H],G=D[X+H],se.push(R);for(let Q=1,ce=H-de+1;Q<=ce;Q++)p.lerpVectors(R,G,Q/(ce+1)),p.sub(C).setLength(K[ae]).add(C),se.push(p.clone());se.push(G)}for(let H=0;H<x;H++)se.push(D[H+x+te]);se.push(D[X+x]);let $=L.map(H=>se[H]);a.push(...$.map(H=>[H.x,H.y,H.z]).flat()),c.push(...$.map(H=>(w(H,C),[b.x,b.y,b.z])).flat())}}let ne=[];for(let W=0;W<A.length;W++)for(let z=0;z<f;z++){let D=A[W][z];if(D<T){let K=A[D].findIndex(V=>V%T==W),q=B[W][z],ee=B[D][K];for(let V=0;V<x;V++){let de=q[V],ae=ee[x-V],te=q[V+1],X=ee[x-(V+1)];[de,ae,te,te,ae,X].forEach(se=>{a.push(se[0].x,se[0].y,se[0].z),c.push(se[1].x,se[1].y,se[1].z)})}ne.push(q[0][0],ee[x][0],q[x][0],ee[0][0])}}for(;ne.length;){let W,z,D,K;[W,z]=ne.splice(0,2);let q=[W];for(;W!=z;)q.push(z),D=ne.indexOf(z),K=D%2,z=ne.splice(D-K,2)[1-K];b.subVectors(q[0],q[1]).cross(p.subVectors(q[0],q[2])).normalize();let ee=b.dot(q[0])<0;ee&&b.negate();for(let V=1;V<=q.length-2;V++)[q[V+ +ee],q[V+1-+ee],q[0]].forEach(de=>{a.push(de.x,de.y,de.z),c.push(b.x,b.y,b.z)})}}function h(){let d=new M;for(let S=0;S<a.length;S+=3){d.x=a[S+0],d.y=a[S+1],d.z=a[S+2];let A=w(d)/2/Math.PI+.5,T=_(d)/Math.PI+.5;l.push(A,1-T)}let f=new M,p=new M,m=new M,v=new M,g=new O,y=new O,x=new O,b=(S,A,T,L)=>{L<0&&S.x===1&&(l[A]=S.x-1),T.x===0&&T.z===0&&(l[A]=L/2/Math.PI+.5)};for(let S=0,A=0;S<a.length;S+=9,A+=6){f.set(a[S+0],a[S+1],a[S+2]),p.set(a[S+3],a[S+4],a[S+5]),m.set(a[S+6],a[S+7],a[S+8]),g.set(l[A+0],l[A+1]),y.set(l[A+2],l[A+3]),x.set(l[A+4],l[A+5]),v.copy(f).add(p).add(m).divideScalar(3);let T=w(v);b(g,A+0,f,T),b(y,A+2,p,T),b(x,A+4,m,T)}for(let S=0;S<l.length;S+=6){let A=l[S+0],T=l[S+2],L=l[S+4],C=Math.max(A,T,L),U=Math.min(A,T,L);C>.9&&U<.1&&(A<.2&&(l[S+0]+=1),T<.2&&(l[S+2]+=1),L<.2&&(l[S+4]+=1))}function w(S){return Math.atan2(S.z,-S.x)}function _(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(e){return new Eo(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}};var Ex=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new Ih(e*.5,s,o):new ao(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:tt(Ue({},r),{type:"DodecahedronGeometry"})})}},Ih=class extends Eo{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=1/i,o=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-s,-i,0,-s,i,0,s,-i,0,s,i,-s,-i,0,-s,i,0,s,-i,0,s,i,0,-i,0,-s,i,0,-s,-i,0,s,i,0,s],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(o,a,l,e,t,n);this.type=l}static fromJSON(e){return new Ih(e.radius,e.corner,e.cornerSides)}};var Nc=1e-12,Cc=class{constructor(e){this.position=new O;this.startPosition=new O;this.uuid=Ee.generateUUID();this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new Cc(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Lc=class extends Cc{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Lc(this.parent).copy(this)}},vs=class extends Cc{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Lc(this),new Lc(this))}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let n=0,i=this.controls.length;n<i;n++){let s=this.controls[n];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new vs(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},sm=r=>r,Ic=new O,om=new O,NL=new O,CL=new O,LL=new O,IL=new O,Nx=new M,Cx=new M;function Lx(r){let e=new O;e.addVectors(r.v0,Ic.subVectors(r.v1,r.v0).multiplyScalar(2/3));let t=new O;return t.addVectors(r.v2,om.subVectors(r.v1,r.v2).multiplyScalar(2/3)),new ii(r.v0,e,t,r.v2)}function Pc(r,e,t=Number.EPSILON){return Math.abs(r-e)<t}function PL(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function DL(r,e,t=Number.EPSILON){return r.distanceTo(e)<t}function am(r,e,t){let n=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),i=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),s=Math.sqrt(Math.pow(t.x-r.x,2)+Math.pow(t.y-r.y,2));return Math.acos((i*i+n*n-s*s)/(2*i*n))}function Ix(r,e,t,n,i){let s=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),o=(r.y+e.y)/2,a=(r.x+e.x)/2,l=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(r.y-e.y)/s,c=Math.sqrt(Math.pow(t,2)-Math.pow(s/2,2))*(e.x-r.x)/s;return n.set(a+l,o+c),i.set(a-l,o-c),[n,i]}function Px(r,e,t){let n=r.distanceTo(t),i=e.distanceTo(t);return n<i?e:r}function Dx(r,e,t,n,i,s){let o=e.x-r.x,a=e.y-r.y,l=t.x-r.x,c=t.y-r.y,u=Math.sqrt((o+l)*(o+l)+(a+c)*(a+c)),h;return am(e,r,t)>Math.PI&&(u*=-1),Pc(c,a)?h=(a+c)*(n/u-.5)*8/3/(o-l):h=(o+l)*(n/u-.5)*8/3/(c-a),i.set(e.x-h*a,e.y+h*o),s.set(t.x+h*c,t.y-h*l),[i,s]}function lm(r,e){return r.position.equals(r.controls[1].position)&&e.position.equals(e.controls[0].position)}function Rx(r,e,t,n,i=.5){let s=Ic.subVectors(e,r).multiplyScalar(i).add(r),o=om.subVectors(t,e).multiplyScalar(i).add(e),a=NL.subVectors(n,t).multiplyScalar(i).add(t),l=s,c=CL.subVectors(o,s).multiplyScalar(i).add(s),u=LL.subVectors(a,o).multiplyScalar(i).add(o),h=a,d=IL.subVectors(u,c).multiplyScalar(i).add(c);return[r.x,r.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,h.x,h.y,n.x,n.y]}function Bx(r,e,t=12,n=!0){let i=Cx.set(0,0,0),s,o=0,a=[];for(let l=0;l<e.length;l++){let c=sm(e[l]),u=Ic,h=xs(c,t);a.push(h);for(let d=0;d<=h;d++)if(c instanceof ii||c instanceof Wi||c instanceof ri){if(c.getPoint(d/h,u),i.set(u.x,u.y,0),s!==void 0&&DL(s,i))continue;s===void 0&&(s=Nx),s.copy(i),r.setXYZ(o,i.x,i.y,i.z),o++}}return n&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),r}function Ox(r,e,t,n=12,i=!0){let s=Cx.set(0,0,0),o=0,a=[];for(let l=0;l<e.length;l++){if(t[l]===!1)continue;let c,u=sm(e[l]),h=Ic,d=xs(u,n);a.push(d);for(let f=0;f<=d;f++)if(u instanceof ii||u instanceof Wi||u instanceof ri){if(u.getPoint(f/d,h),s.set(h.x,h.y,0),c==null?void 0:c.equals(s))continue;c===void 0?c=Nx:(r.setXYZ(o,c.x,c.y,c.z),o++,r.setXYZ(o,s.x,s.y,s.z),o++),c.copy(s)}}return i&&o>1&&!(r.getX(o-1)===r.getX(0)&&r.getY(o-1)===r.getY(0)&&r.getZ(o-1)===r.getZ(0))&&(r.setXYZ(o,r.getX(0),r.getY(0),r.getZ(0)),o++),a}function cm(r,e=12,t=!1){let n=[];for(let i=0,s=r.length;i<s;i++){let o=r[i],a=0;if(t&&o.roundedCurveCorner!==void 0){let l=xs(o.roundedCurveCorner,e)*.5;i>0&&(n[i-1]+=l),a+=l}o.curveAfter!==void 0&&(a+=xs(o.curveAfter,e)),n.push(a)}return r.length>0&&t&&r[0].roundedCurveCorner!==void 0&&(n[r.length-1]+=xs(r[0].roundedCurveCorner,e)*.5),n}function xs(r,e=12){return r&&r instanceof lo?e*2:r&&(r instanceof ri||r instanceof dh)?1:r&&r instanceof Ea?e*r.points.length:e}function Fx(r,e,t=12,n=!0){let i,s=0;for(let o=0;o<e.length;o++){let a=sm(e[o]),l=xs(a,t),c=Ic;for(let u=0;u<=l;u++)if(a instanceof ii||a instanceof Wi||a instanceof ri){if(a.getPoint(u/l,c),i!==void 0&&PL(i,c,Nc))continue;i===void 0&&(i=om),i.copy(c),r.push(c.x,c.y),s++}}return Pc(r[0],r[r.length-2],Nc)&&Pc(r[1],r[r.length-1],Nc)&&(r.pop(),r.pop()),n&&s>1&&!(Pc(r[s-1],r[1],Nc)&&Pc(r[s-2],r[0],Nc))&&(r.push(r[0],r[1]),s++),r}var um=new O,RL=new O,BL=new O,OL=new O,FL=new O,zL=new O,Lt=class extends yi{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new cn;this.plane=new ni(new M(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ee.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,n=this.points.length;t<n;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let t=0,n=this.shapeHoles.length;t<n;t++){let i=this.shapeHoles[t],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let n=0,i=this.shapeHoles.length;n<i;n++){let s=this.shapeHoles[n],o=s.points.indexOf(e);if(o>=0)return t+o;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this.applyScale(e/this.width,t/this.height),this._width=e,this._height=t}applyScale(e,t){let n=um.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let o=this.points[i];o.position.multiply(n),o.controls[0].position.multiply(n),o.controls[1].position.multiply(n)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update(!1)}createPoint(e,t=0,n=Ee.generateUUID()){let i;e instanceof O?i=e:i=new O(e,t);let s=new vs(n,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,n=this.points.length;t<n;t++){let i=this.points[t];if(i.uuid===e)return i}return null}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}update(e=!0){for(let t=0,n=this.shapeHoles.length;t<n;t++)this.shapeHoles[t].update(!1);this._update(e)}extractShapePointsToBuffer(e,t=12,n=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=n?this.roundedCurveDivisions:this.curveDivisions;return Bx(e,n?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,o)=>s+o,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=cm(this.points,e,!1),this.roundedCurveDivisions=cm(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,n=12){return Ox(e,this.curves,t,n,this.autoClose).reduce((s,o)=>s+o,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Fx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let n=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=xs(this.points[0].roundedCurveCorner,this.subdivision)*.5);let o=e-s;o<0&&(o+=i.reduce((a,l)=>a+l,0));for(let a=0,l=i.length;a<l;a++){let c=i[a];if(o<n+c)return[a,(o-n+1)/c];n+=c}return[0,1]}getCurveT(e,t,n){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],o=this.curveDivisions,a=o[e];if(lm(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(um.set(n.x,n.y))/u}let l=0;for(let u=0;u<e;u++)l+=o[u];return(t-l)/a}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,t){lm(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let n=this.curves[this.curves.length-1];e.curveBefore=n,t.curveAfter=n;let i=n.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){var n;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let o=this.points[i];if(i===0)this.moveTo(o.position.x,o.position.y);else{let a=this.points[i-1];this._applyCurveForPoint(o,a)}}let t=this.getLastPoint();if((t==null?void 0:t.curveAfter)&&(t.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,o=this.points.length;s<o;s++){let a=this.points[s],l=a.roundness;if(!a.controlsMoved()&&l>0){let c=a.curveBefore,u=a.curveAfter;if(c===void 0||u===void 0)continue;let h=a.roundedCurveBefore,d=a.roundedCurveAfter,f=c.getLength(),p=u.getLength(),m=Math.min(l,f*.499),v=Math.min(l,p*.499),g=Math.min(m,v),y=1-g/f,x=g/p,b=c.getPointAt(y,um),w=u.getPointAt(x,RL);this._subSplitCurve(c,h,y,b,void 0),this._subSplitCurve(u,d,x,void 0,w);let _;if(this.useCubicForRoundedCorners){let S=am(b,a.position,w)/2,A=Math.tan(S)*b.distanceTo(a.position),[T,L]=Ix(b,w,A,BL,OL),C=Px(T,L,a.position),[U,P]=Dx(C,b,w,A,FL,zL);_=new ii(b.clone(),U.clone(),P.clone(),w.clone())}else _=new Wi(b.clone(),a.position.clone(),w.clone());a.roundedCurveCorner=_,this.roundedCurves.splice(s+i,0,_),i++}}}e&&((n=this.eventDispatcher)==null||n.dispatchEvent({type:"update"}))}_subSplitCurve(e,t,n,i,s){if(e instanceof ri)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let o=e,a=t,l=o.getUtoTmapping(n,0),c=Rx(o.v0,o.v1,o.v2,o.v3,l);return i!==void 0&&(a.v0.set(c[0],c[1]),a.v1.set(c[2],c[3]),a.v2.set(c[4],c[5]),a.v3.set(c[6],c[7])),s!==void 0&&(a.v0.set(c[6],c[7]),a.v1.set(c[8],c[9]),a.v2.set(c[10],c[11]),a.v3.set(c[12],c[13])),a}return t}clone(){let e=new Lt(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){var n;this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let i=0;i<t;i++){let s=i*7,o=e.points[s+0],a=e.points[s+1],l=e.points[s+2],c=e.points[s+3],u=e.points[s+4],h=e.points[s+5],d=e.points[s+6],f=new vs(Ee.generateUUID(),new O(o,a));f.controls[0].position.set(l,c),f.controls[1].position.set(u,h),f.roundness=d,this.points.push(f)}return this.shapeHoles=((n=e.shapeHoles)==null?void 0:n.length)?e.shapeHoles.map(i=>{let s=new Lt;return s.fromJSON(i),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof ii&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},n=i=>{let s=[],o,a;for(o=0,a=i.length;o<a;o++)i[o]instanceof Wi&&(i[o]=Lx(i[o]));for(o=0,a=i.length;o<a;o++){let u=i[o],h=o>0?i[o-1]:null,d;u instanceof ii?(d=this.createPoint(u.v0),d.controls[1].position.copy(u.v1)):u instanceof ri&&(d=this.createPoint(u.v1)),d!==void 0&&(h!==null&&t(d,h),s.push(d))}let l=i[i.length-1],c=!1;return l instanceof ii?l.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(l.v2),c=!0):l instanceof ri&&l.v2.equals(s[0].position)&&(c=!0),this.isClosed=c,s};return this.points=n(e.curves),e instanceof yi&&(this.shapeHoles=e.holes.map(i=>{let s=new Lt;return s.fromShape(i),s})),this.update(),this}};var hm=Math.PI*2;function dm({x:r,y:e},t,n,i,s){return{x:r*t+i,y:e*n+s}}function GL(r,e){let t=e===1.5707963267948966?.551915024494:e===-1.5707963267948966?-.551915024494:4/3*Math.tan(e/4),n=Math.cos(r),i=Math.sin(r),s=Math.cos(r+e),o=Math.sin(r+e);return[{x:n-i*t,y:i+n*t},{x:s+o*t,y:o-s*t},{x:s,y:o}]}function zx(r,e,t,n){let i=r*n-e*t<0?-1:1,s=Math.min(1,Math.max(-1,r*t+e*n));return i*Math.acos(s)}function UL(r,e,t,n,i,s,o,a,l,c){let u=Math.pow(i,2),h=Math.pow(s,2),d=Math.pow(o,2),f=Math.pow(a,2),p=u*h-u*f-h*d;p<0&&(p=0),p/=u*f+h*d,p=Math.sqrt(p)*(l===c?-1:1);let m=p*i/s*a,v=p*-s/i*o,g=m+(r+t)/2,y=v+(e+n)/2,x=(o-m)/i,b=(a-v)/s,w=(-o-m)/i,_=(-a-v)/s,S=zx(1,0,x,b),A=zx(x,b,w,_);return!c&&A>0&&(A-=hm),c&&A<0&&(A+=hm),{centerx:g,centery:y,ang1:S,ang2:A}}function Gx({px:r,py:e,cx:t,cy:n,rx:i,ry:s,largeArcFlag:o,sweepFlag:a}){let l=[];if(i===0||s===0)return[];let c=(r-t)/2,u=(e-n)/2;if(c===0&&u===0)return[];i=Math.abs(i),s=Math.abs(s);let h=Math.pow(c,2)/Math.pow(i,2)+Math.pow(u,2)/Math.pow(s,2);h>1&&(i*=Math.sqrt(h),s*=Math.sqrt(h));let d=UL(r,e,t,n,i,s,c,u,o,a),{ang1:f,ang2:p}=d,{centerx:m,centery:v}=d,g=Math.abs(p)/(hm/4);Math.abs(1-g)<1e-7&&(g=1);let y=Math.max(Math.ceil(g),1);p/=y;for(let x=0;x<y;x++)l.push(GL(f,p)),f+=p;return l.map(x=>{let{x:b,y:w}=dm(x[0],i,s,m,v),{x:_,y:S}=dm(x[1],i,s,m,v),{x:A,y:T}=dm(x[2],i,s,m,v);return{x1:b,y1:w,x2:_,y2:S,x:A,y:T}})}var Wt;(function(r){r[r.ODD=0]="ODD",r[r.NONZERO=1]="NONZERO",r[r.POSITIVE=2]="POSITIVE",r[r.NEGATIVE=3]="NEGATIVE",r[r.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Wt||(Wt={}));var gn;(function(r){r[r.POLYGONS=0]="POLYGONS",r[r.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",r[r.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(gn||(gn={}));function Xe(r,e){if(!r)throw e||"Assertion Failed!"}var We=function(){function r(){}return r.vertEq=function(e,t){return e.s===t.s&&e.t===t.t},r.vertLeq=function(e,t){return e.s<t.s||e.s===t.s&&e.t<=t.t},r.transLeq=function(e,t){return e.t<t.t||e.t===t.t&&e.s<=t.s},r.edgeGoesLeft=function(e){return r.vertLeq(e.Dst,e.Org)},r.edgeGoesRight=function(e){return r.vertLeq(e.Org,e.Dst)},r.vertL1dist=function(e,t){return Math.abs(e.s-t.s)+Math.abs(e.t-t.t)},r.edgeEval=function(e,t,n){Xe(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?i<s?t.t-e.t+(e.t-n.t)*(i/(i+s)):t.t-n.t+(n.t-e.t)*(s/(i+s)):0},r.edgeSign=function(e,t,n){Xe(r.vertLeq(e,t)&&r.vertLeq(t,n));var i=t.s-e.s,s=n.s-t.s;return i+s>0?(t.t-n.t)*i+(t.t-e.t)*s:0},r.transEval=function(e,t,n){Xe(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?i<s?t.s-e.s+(e.s-n.s)*(i/(i+s)):t.s-n.s+(n.s-e.s)*(s/(i+s)):0},r.transSign=function(e,t,n){Xe(r.transLeq(e,t)&&r.transLeq(t,n));var i=t.t-e.t,s=n.t-t.t;return i+s>0?(t.s-n.s)*i+(t.s-e.s)*s:0},r.vertCCW=function(e,t,n){return e.s*(t.t-n.t)+t.s*(n.t-e.t)+n.s*(e.t-t.t)>=0},r.interpolate=function(e,t,n,i){return e=e<0?0:e,n=n<0?0:n,e<=n?n===0?(t+i)/2:t+(i-t)*(e/(e+n)):i+(t-i)*(n/(e+n))},r.intersect=function(e,t,n,i,s){var o,a,l;r.vertLeq(e,t)||(l=e,e=t,t=l),r.vertLeq(n,i)||(l=n,n=i,i=l),r.vertLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.vertLeq(n,t)?r.vertLeq(t,i)?(o=r.edgeEval(e,n,t),a=r.edgeEval(n,t,i),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,t.s)):(o=r.edgeSign(e,n,t),a=-r.edgeSign(e,i,t),o+a<0&&(o=-o,a=-a),s.s=r.interpolate(o,n.s,a,i.s)):s.s=(n.s+t.s)/2,r.transLeq(e,t)||(l=e,e=t,t=l),r.transLeq(n,i)||(l=n,n=i,i=l),r.transLeq(e,n)||(l=e,e=n,n=l,l=t,t=i,i=l),r.transLeq(n,t)?r.transLeq(t,i)?(o=r.transEval(e,n,t),a=r.transEval(n,t,i),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,t.t)):(o=r.transSign(e,n,t),a=-r.transSign(e,i,t),o+a<0&&(o=-o,a=-a),s.t=r.interpolate(o,n.t,a,i.t)):s.t=(n.t+t.t)/2},r}(),Dc=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return r}(),Ph=function(){function r(e){this.side=e,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(r.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(e){this.Sym.Lface=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(e){this.Sym.Org=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(e){this.Sym.Lnext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(e){this.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(e){this.Lnext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(e){this.Sym.Onext=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(e){this.Sym.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(e){this.Sym.Lnext.Sym=e},enumerable:!0,configurable:!0}),r}(),Za=function(){function r(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return r}(),Ux=function(){function r(){var e=new Za,t=new Dc,n=new Ph(0),i=new Ph(1);e.next=e.prev=e,e.anEdge=null,t.next=t.prev=t,n.next=n,n.Sym=i,i.next=i,i.Sym=n,this.vHead=e,this.fHead=t,this.eHead=n,this.eHeadSym=i}return r.prototype.makeEdge_=function(e){var t=new Ph(0),n=new Ph(1);e.Sym.side<e.side&&(e=e.Sym);var i=e.Sym.next;return n.next=i,i.Sym.next=t,t.next=e,e.Sym.next=n,t.Sym=n,t.Onext=t,t.Lnext=n,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,n.Sym=t,n.Onext=n,n.Lnext=t,n.Org=null,n.Lface=null,n.winding=0,n.activeRegion=null,t},r.prototype.splice_=function(e,t){var n=e.Onext,i=t.Onext;n.Sym.Lnext=t,i.Sym.Lnext=e,e.Onext=i,t.Onext=n},r.prototype.makeVertex_=function(e,t,n){var i=e;Xe(i,"Vertex can't be null!");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t;var o=t;do o.Org=i,o=o.Onext;while(o!==t)},r.prototype.makeFace_=function(e,t,n){var i=e;Xe(i,"Face can't be null");var s=n.prev;i.prev=s,s.next=i,i.next=n,n.prev=i,i.anEdge=t,i.trail=null,i.marked=!1,i.inside=n.inside;var o=t;do o.Lface=i,o=o.Lnext;while(o!==t)},r.prototype.killEdge_=function(e){e.Sym.side<e.side&&(e=e.Sym);var t=e.next,n=e.Sym.next;t.Sym.next=n,n.Sym.next=t},r.prototype.killVertex_=function(e,t){var n=e.anEdge,i=n;do i.Org=t,i=i.Onext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.killFace_=function(e,t){var n=e.anEdge,i=n;do i.Lface=t,i=i.Lnext;while(i!==n);var s=e.prev,o=e.next;o.prev=s,s.next=o},r.prototype.makeEdge=function(){var e=new Za,t=new Za,n=new Dc,i=this.makeEdge_(this.eHead);return this.makeVertex_(e,i,this.vHead),this.makeVertex_(t,i.Sym,this.vHead),this.makeFace_(n,i,this.fHead),i},r.prototype.splice=function(e,t){var n=!1,i=!1;if(e!==t){if(t.Org!==e.Org&&(i=!0,this.killVertex_(t.Org,e.Org)),t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(t,e),!i){var s=new Za;this.makeVertex_(s,t,e.Org),e.Org.anEdge=e}if(!n){var o=new Dc;this.makeFace_(o,t,e.Lface),e.Lface.anEdge=e}}},r.prototype.delete=function(e){var t=e.Sym,n=!1;if(e.Lface!==e.Rface&&(n=!0,this.killFace_(e.Lface,e.Rface)),e.Onext===e)this.killVertex_(e.Org,null);else if(e.Rface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev),!n){var i=new Dc;this.makeFace_(i,e,e.Lface)}t.Onext===t?(this.killVertex_(t.Org,null),this.killFace_(t.Lface,null)):(e.Lface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),this.killEdge_(e)},r.prototype.addEdgeVertex=function(e){var t=this.makeEdge_(e),n=t.Sym;this.splice_(t,e.Lnext),t.Org=e.Dst;var i=new Za;return this.makeVertex_(i,n,t.Org),t.Lface=n.Lface=e.Lface,t},r.prototype.splitEdge=function(e){var t=this.addEdgeVertex(e),n=t.Sym;return this.splice_(e.Sym,e.Sym.Oprev),this.splice_(e.Sym,n),e.Dst=n.Org,n.Dst.anEdge=n.Sym,n.Rface=e.Rface,n.winding=e.winding,n.Sym.winding=e.Sym.winding,n.idx=e.idx,n.Sym.idx=e.Sym.idx,n},r.prototype.connect=function(e,t){var n=!1,i=this.makeEdge_(e),s=i.Sym;if(t.Lface!==e.Lface&&(n=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(i,e.Lnext),this.splice_(s,t),i.Org=e.Dst,s.Org=t.Org,i.Lface=s.Lface=e.Lface,e.Lface.anEdge=s,!n){var o=new Dc;this.makeFace_(o,i,e.Lface)}return i},r.prototype.zapFace=function(e){var t=e.anEdge,n,i,s,o,a;i=t.Lnext;do n=i,i=n.Lnext,n.Lface=null,n.Rface===null&&(n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),s=n.Sym,s.Onext===s?this.killVertex_(s.Org,null):(s.Org.anEdge=s.Onext,this.splice_(s,s.Oprev)),this.killEdge_(n));while(n!=t);o=e.prev,a=e.next,a.prev=o,o.next=a},r.prototype.countFaceVerts_=function(e){var t=e.anEdge,n=0;do n++,t=t.Lnext;while(t!==e.anEdge);return n},r.prototype.mergeConvexFaces=function(e){var t,n,i,s,o,a,l;for(t=this.fHead.next;t!==this.fHead;t=t.next)if(!!t.inside)for(n=t.anEdge,o=n.Org;i=n.Lnext,s=n.Sym,s&&s.Lface&&s.Lface.inside&&(a=this.countFaceVerts_(t),l=this.countFaceVerts_(s.Lface),a+l-2<=e&&We.vertCCW(n.Lprev.Org,n.Org,s.Lnext.Lnext.Org)&&We.vertCCW(s.Lprev.Org,s.Org,n.Lnext.Lnext.Org)&&(i=s.Lnext,this.delete(s),n=null,s=null)),!(n&&n.Lnext.Org===o);)n=i;return!0},r.prototype.check=function(){var e=this.fHead,t=this.vHead,n=this.eHead,i,s,o,a,l,c;for(s=e,s=e;(i=s.next)!==e;s=i){Xe(i.prev===s),l=i.anEdge;do Xe(l.Sym!==l),Xe(l.Sym.Sym===l),Xe(l.Lnext.Onext.Sym===l),Xe(l.Onext.Sym.Lnext===l),Xe(l.Lface===i),l=l.Lnext;while(l!==i.anEdge)}for(Xe(i.prev===s&&i.anEdge===null),a=t,a=t;(o=a.next)!==t;a=o){Xe(o.prev===a),l=o.anEdge;do Xe(l.Sym!==l),Xe(l.Sym.Sym===l),Xe(l.Lnext.Onext.Sym===l),Xe(l.Onext.Sym.Lnext===l),Xe(l.Org===o),l=l.Onext;while(l!==o.anEdge)}for(Xe(o.prev===a&&o.anEdge===null),c=n,c=n;(l=c.next)!==n;c=l)Xe(l.Sym.next===c.Sym),Xe(l.Sym!==l),Xe(l.Sym.Sym===l),Xe(l.Org!==null),Xe(l.Dst!==null),Xe(l.Lnext.Onext.Sym===l),Xe(l.Onext.Sym.Lnext===l);Xe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},r}(),kx=function(){function r(){this.handle=null}return r}(),Vx=function(){function r(){this.key=null,this.node=0}return r}(),kL=function(){function r(e,t){this.leq=t,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=e,this.nodes=[],this.handles=[];for(var n=0;n<e+1;n++)this.nodes[n]=new kx,this.handles[n]=new Vx;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return r.prototype.floatDown_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e<<1,o<this.size&&this.leq(n[t[o+1].handle].key,n[t[o].handle].key)&&++o,Xe(o<=this.max),s=t[o].handle,o>this.size||this.leq(n[i].key,n[s].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.floatUp_=function(e){var t=this.nodes,n=this.handles,i,s,o;for(i=t[e].handle;;){if(o=e>>1,s=t[o].handle,o===0||this.leq(n[s].key,n[i].key)){t[e].handle=i,n[i].node=e;break}t[e].handle=s,n[s].node=e,e=o}},r.prototype.init=function(){for(var e=this.size;e>=1;--e)this.floatDown_(e);this.initialized=!0},r.prototype.min=function(){return this.handles[this.nodes[1].handle].key},r.prototype.insert=function(e){var t,n;if(t=++this.size,t*2>this.max){this.max*=2;var i,s;for(s=this.nodes.length,this.nodes.length=this.max+1,i=s;i<this.nodes.length;i++)this.nodes[i]=new kx;for(s=this.handles.length,this.handles.length=this.max+1,i=s;i<this.handles.length;i++)this.handles[i]=new Vx}return this.freeList===0?n=t:(n=this.freeList,this.freeList=this.handles[n].node),this.nodes[t].handle=n,this.handles[n].node=t,this.handles[n].key=e,this.initialized&&this.floatUp_(t),n},r.prototype.extractMin=function(){var e=this.nodes,t=this.handles,n=e[1].handle,i=t[n].key;return this.size>0&&(e[1].handle=e[this.size].handle,t[e[1].handle].node=1,t[n].key=null,t[n].node=this.freeList,this.freeList=n,--this.size,this.size>0&&this.floatDown_(1)),i},r.prototype.delete=function(e){var t=this.nodes,n=this.handles,i;Xe(e>=1&&e<=this.max&&n[e].key!==null),i=n[e].node,t[i].handle=t[this.size].handle,n[t[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(n[t[i>>1].handle].key,n[t[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),n[e].key=null,n[e].node=this.freeList,this.freeList=e},r}(),fm=function(){function r(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return r}(),Hx=function(){function r(){this.key=null,this.next=null,this.prev=null}return r}(),VL=function(){function r(e,t){this.frame=e,this.leq=t,this.head=new Hx,this.head.next=this.head,this.head.prev=this.head}return r.prototype.min=function(){return this.head.next},r.prototype.max=function(){return this.head.prev},r.prototype.insert=function(e){return this.insertBefore(this.head,e)},r.prototype.search=function(e){var t=this.head;do t=t.next;while(t.key!==null&&!this.leq(this.frame,e,t.key));return t},r.prototype.insertBefore=function(e,t){do e=e.prev;while(e.key!==null&&!this.leq(this.frame,e.key,t));var n=new Hx;return n.key=t,n.next=e.next,e.next.prev=n,n.prev=e,e.next=n,n},r.prototype.delete=function(e){e.next.prev=e.prev,e.prev.next=e.next},r}(),HL=function(){function r(){}return r.regionBelow=function(e){return e.nodeUp.prev.key},r.regionAbove=function(e){return e.nodeUp.next.key},r.debugEvent=function(e){},r.addWinding=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.edgeLeq=function(e,t,n){var i=e.event,s=t.eUp,o=n.eUp;if(s.Dst===i)return o.Dst===i?We.vertLeq(s.Org,o.Org)?We.edgeSign(o.Dst,s.Org,o.Org)<=0:We.edgeSign(s.Dst,o.Org,s.Org)>=0:We.edgeSign(o.Dst,i,o.Org)<=0;if(o.Dst===i)return We.edgeSign(s.Dst,i,s.Org)>=0;var a=We.edgeEval(s.Dst,i,s.Org),l=We.edgeEval(o.Dst,i,o.Org);return a>=l},r.deleteRegion=function(e,t){t.fixUpperEdge&&Xe(t.eUp.winding===0),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},r.fixUpperEdge=function(e,t,n){Xe(t.fixUpperEdge),e.mesh.delete(t.eUp),t.fixUpperEdge=!1,t.eUp=n,n.activeRegion=t},r.topLeftRegion=function(e,t){var n=t.eUp.Org,i;do t=r.regionAbove(t);while(t.eUp.Org===n);if(t.fixUpperEdge){if(i=e.mesh.connect(r.regionBelow(t).eUp.Sym,t.eUp.Lnext),i===null)return null;r.fixUpperEdge(e,t,i),t=r.regionAbove(t)}return t},r.topRightRegion=function(e){var t=e.eUp.Dst;do e=r.regionAbove(e);while(e.eUp.Dst===t);return e},r.addRegionBelow=function(e,t,n){var i=new fm;return i.eUp=n,i.nodeUp=e.dict.insertBefore(t.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,n.activeRegion=i,i},r.isWindingInside=function(e,t){switch(e.windingRule){case Wt.ODD:return(t&1)!=0;case Wt.NONZERO:return t!==0;case Wt.POSITIVE:return t>0;case Wt.NEGATIVE:return t<0;case Wt.ABS_GEQ_TWO:return t>=2||t<=-2}throw new Error("Invalid winding rulle")},r.computeWinding=function(e,t){t.windingNumber=r.regionAbove(t).windingNumber+t.eUp.winding,t.inside=r.isWindingInside(e,t.windingNumber)},r.finishRegion=function(e,t){var n=t.eUp,i=n.Lface;i.inside=t.inside,i.anEdge=n,r.deleteRegion(e,t)},r.finishLeftRegions=function(e,t,n){for(var i,s=null,o=t,a=t.eUp;o!==n;){if(o.fixUpperEdge=!1,s=r.regionBelow(o),i=s.eUp,i.Org!=a.Org){if(!s.fixUpperEdge){r.finishRegion(e,o);break}i=e.mesh.connect(a.Lprev,i.Sym),r.fixUpperEdge(e,s,i)}a.Onext!==i&&(e.mesh.splice(i.Oprev,i),e.mesh.splice(a,i)),r.finishRegion(e,o),a=s.eUp,o=s}return a},r.addRightEdges=function(e,t,n,i,s,o){var a,l,c,u,h=!0;c=n;do Xe(We.vertLeq(c.Org,c.Dst)),r.addRegionBelow(e,t,c.Sym),c=c.Onext;while(c!==i);for(s===null&&(s=r.regionBelow(t).eUp.Rprev),l=t,u=s;a=r.regionBelow(l),c=a.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(e.mesh.splice(c.Oprev,c),e.mesh.splice(u.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=r.isWindingInside(e,a.windingNumber),l.dirty=!0,!h&&r.checkForRightSplice(e,l)&&(r.addWinding(c,u),r.deleteRegion(e,l),e.mesh.delete(u)),h=!1,l=a,u=c;l.dirty=!0,Xe(l.windingNumber-c.winding===a.windingNumber),o&&r.walkDirtyRegions(e,l)},r.spliceMergeVertices=function(e,t,n){e.mesh.splice(t,n)},r.vertexWeights=function(e,t,n){var i=We.vertL1dist(t,e),s=We.vertL1dist(n,e),o=.5*s/(i+s),a=.5*i/(i+s);e.coords[0]+=o*t.coords[0]+a*n.coords[0],e.coords[1]+=o*t.coords[1]+a*n.coords[1],e.coords[2]+=o*t.coords[2]+a*n.coords[2]},r.getIntersectData=function(e,t,n,i,s,o){t.coords[0]=t.coords[1]=t.coords[2]=0,t.idx=-1,r.vertexWeights(t,n,i),r.vertexWeights(t,s,o)},r.checkForRightSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp;if(We.vertLeq(i.Org,s.Org)){if(We.edgeSign(s.Dst,i.Org,s.Org)>0)return!1;We.vertEq(i.Org,s.Org)?i.Org!==s.Org&&(e.pq.delete(i.Org.pqHandle),r.spliceMergeVertices(e,s.Oprev,i)):(e.mesh.splitEdge(s.Sym),e.mesh.splice(i,s.Oprev),t.dirty=n.dirty=!0)}else{if(We.edgeSign(i.Dst,s.Org,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Oprev,i)}return!0},r.checkForLeftSplice=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o;if(Xe(!We.vertEq(i.Dst,s.Dst)),We.vertLeq(i.Dst,s.Dst)){if(We.edgeSign(i.Dst,s.Dst,i.Org)<0)return!1;r.regionAbove(t).dirty=t.dirty=!0,o=e.mesh.splitEdge(i),e.mesh.splice(s.Sym,o),o.Lface.inside=t.inside}else{if(We.edgeSign(s.Dst,i.Dst,s.Org)>0)return!1;t.dirty=n.dirty=!0,o=e.mesh.splitEdge(s),e.mesh.splice(i.Lnext,s.Sym),o.Rface.inside=t.inside}return!0},r.checkForIntersect=function(e,t){var n=r.regionBelow(t),i=t.eUp,s=n.eUp,o=i.Org,a=s.Org,l=i.Dst,c=s.Dst,u,h,d=new Za,f,p;if(Xe(!We.vertEq(c,l)),Xe(We.edgeSign(l,e.event,o)<=0),Xe(We.edgeSign(c,e.event,a)>=0),Xe(o!==e.event&&a!==e.event),Xe(!t.fixUpperEdge&&!n.fixUpperEdge),o===a||(u=Math.min(o.t,l.t),h=Math.max(a.t,c.t),u>h))return!1;if(We.vertLeq(o,a)){if(We.edgeSign(c,o,a)>0)return!1}else if(We.edgeSign(l,a,o)<0)return!1;return r.debugEvent(e),We.intersect(l,o,c,a,d),Xe(Math.min(o.t,l.t)<=d.t),Xe(d.t<=Math.max(a.t,c.t)),Xe(Math.min(c.s,l.s)<=d.s),Xe(d.s<=Math.max(a.s,o.s)),We.vertLeq(d,e.event)&&(d.s=e.event.s,d.t=e.event.t),f=We.vertLeq(o,a)?o:a,We.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),We.vertEq(d,o)||We.vertEq(d,a)?(r.checkForRightSplice(e,t),!1):!We.vertEq(l,e.event)&&We.edgeSign(l,e.event,d)>=0||!We.vertEq(c,e.event)&&We.edgeSign(c,e.event,d)<=0?c===e.event?(e.mesh.splitEdge(i.Sym),e.mesh.splice(s.Sym,i),t=r.topLeftRegion(e,t),i=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),n),r.addRightEdges(e,t,i.Oprev,i,i,!0),!0):l===e.event?(e.mesh.splitEdge(s.Sym),e.mesh.splice(i.Lnext,s.Oprev),n=t,t=r.topRightRegion(t),p=r.regionBelow(t).eUp.Rprev,n.eUp=s.Oprev,s=r.finishLeftRegions(e,n,null),r.addRightEdges(e,t,s.Onext,i.Rprev,p,!0),!0):(We.edgeSign(l,e.event,d)>=0&&(r.regionAbove(t).dirty=t.dirty=!0,e.mesh.splitEdge(i.Sym),i.Org.s=e.event.s,i.Org.t=e.event.t),We.edgeSign(c,e.event,d)<=0&&(t.dirty=n.dirty=!0,e.mesh.splitEdge(s.Sym),s.Org.s=e.event.s,s.Org.t=e.event.t),!1):(e.mesh.splitEdge(i.Sym),e.mesh.splitEdge(s.Sym),e.mesh.splice(s.Oprev,i),i.Org.s=d.s,i.Org.t=d.t,i.Org.pqHandle=e.pq.insert(i.Org),r.getIntersectData(e,i.Org,o,l,a,c),r.regionAbove(t).dirty=t.dirty=n.dirty=!0,!1)},r.walkDirtyRegions=function(e,t){for(var n=r.regionBelow(t),i,s;;){for(;n.dirty;)t=n,n=r.regionBelow(n);if(!t.dirty&&(n=t,t=r.regionAbove(t),t===null||!t.dirty))return;if(t.dirty=!1,i=t.eUp,s=n.eUp,i.Dst!==s.Dst&&r.checkForLeftSplice(e,t)&&(n.fixUpperEdge?(r.deleteRegion(e,n),e.mesh.delete(s),n=r.regionBelow(t),s=n.eUp):t.fixUpperEdge&&(r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n),i=t.eUp)),i.Org!==s.Org)if(i.Dst!==s.Dst&&!t.fixUpperEdge&&!n.fixUpperEdge&&(i.Dst===e.event||s.Dst===e.event)){if(r.checkForIntersect(e,t))return}else r.checkForRightSplice(e,t);i.Org===s.Org&&i.Dst===s.Dst&&(r.addWinding(s,i),r.deleteRegion(e,t),e.mesh.delete(i),t=r.regionAbove(n))}},r.connectRightVertex=function(e,t,n){var i,s=n.Onext,o=r.regionBelow(t),a=t.eUp,l=o.eUp,c=!1;if(a.Dst!==l.Dst&&r.checkForIntersect(e,t),We.vertEq(a.Org,e.event)&&(e.mesh.splice(s.Oprev,a),t=r.topLeftRegion(e,t),s=r.regionBelow(t).eUp,r.finishLeftRegions(e,r.regionBelow(t),o),c=!0),We.vertEq(l.Org,e.event)&&(e.mesh.splice(n,l.Oprev),n=r.finishLeftRegions(e,o,null),c=!0),c){r.addRightEdges(e,t,n.Onext,s,s,!0);return}We.vertLeq(l.Org,a.Org)?i=l.Oprev:i=a,i=e.mesh.connect(n.Lprev,i),r.addRightEdges(e,t,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,r.walkDirtyRegions(e,t)},r.connectLeftDegenerate=function(e,t,n){var i,s,o,a,l;if(i=t.eUp,We.vertEq(i.Org,n)){Xe(!1),r.spliceMergeVertices(e,i,n.anEdge);return}if(!We.vertEq(i.Dst,n)){e.mesh.splitEdge(i.Sym),t.fixUpperEdge&&(e.mesh.delete(i.Onext),t.fixUpperEdge=!1),e.mesh.splice(n.anEdge,i),r.sweepEvent(e,n);return}Xe(!1),t=r.topRightRegion(t),l=r.regionBelow(t),o=l.eUp.Sym,s=a=o.Onext,l.fixUpperEdge&&(Xe(s!==o),r.deleteRegion(e,l),e.mesh.delete(o),o=s.Oprev),e.mesh.splice(n.anEdge,o),We.edgeGoesLeft(s)||(s=null),r.addRightEdges(e,t,o.Onext,a,s,!0)},r.connectLeftVertex=function(e,t){var n,i,s,o,a,l,c=new fm;if(c.eUp=t.anEdge.Sym,n=e.dict.search(c).key,i=r.regionBelow(n),!!i){if(o=n.eUp,a=i.eUp,We.edgeSign(o.Dst,t,o.Org)===0){r.connectLeftDegenerate(e,n,t);return}if(s=We.vertLeq(a.Dst,o.Dst)?n:i,n.inside||s.fixUpperEdge){if(s===n)l=e.mesh.connect(t.anEdge.Sym,o.Lnext);else{var u=e.mesh.connect(a.Dnext,t.anEdge);l=u.Sym}s.fixUpperEdge?r.fixUpperEdge(e,s,l):r.computeWinding(e,r.addRegionBelow(e,n,l)),r.sweepEvent(e,t)}else r.addRightEdges(e,n,t.anEdge,t.anEdge,null,!0)}},r.sweepEvent=function(e,t){e.event=t,r.debugEvent(e);for(var n=t.anEdge;n.activeRegion===null;)if(n=n.Onext,n===t.anEdge){r.connectLeftVertex(e,t);return}var i=r.topLeftRegion(e,n.activeRegion);Xe(i!==null);var s=r.regionBelow(i),o=s.eUp,a=r.finishLeftRegions(e,s,null);a.Onext===o?r.connectRightVertex(e,i,a):r.addRightEdges(e,i,a.Onext,o,o,!0)},r.addSentinel=function(e,t,n,i){var s=new fm,o=e.mesh.makeEdge();o.Org.s=n,o.Org.t=i,o.Dst.s=t,o.Dst.t=i,e.event=o.Dst,s.eUp=o,s.windingNumber=0,s.inside=!1,s.fixUpperEdge=!1,s.sentinel=!0,s.dirty=!1,s.nodeUp=e.dict.insert(s)},r.initEdgeDict=function(e){e.dict=new VL(e,r.edgeLeq);var t=e.bmax[0]-e.bmin[0],n=e.bmax[1]-e.bmin[1],i=e.bmin[0]-t,s=e.bmax[0]+t,o=e.bmin[1]-n,a=e.bmax[1]+n;r.addSentinel(e,i,s,o),r.addSentinel(e,i,s,a)},r.doneEdgeDict=function(e){for(var t,n=0;(t=e.dict.min().key)!==null;)t.sentinel||(Xe(t.fixUpperEdge),Xe(++n==1)),Xe(t.windingNumber===0),r.deleteRegion(e,t)},r.removeDegenerateEdges=function(e){var t,n,i,s=e.mesh.eHead;for(t=s.next;t!==s;t=n)n=t.next,i=t.Lnext,We.vertEq(t.Org,t.Dst)&&t.Lnext.Lnext!==t&&(r.spliceMergeVertices(e,i,t),e.mesh.delete(t),t=i,i=t.Lnext),i.Lnext===t&&(i!==t&&((i===n||i===n.Sym)&&(n=n.next),e.mesh.delete(i)),(t===n||t===n.Sym)&&(n=n.next),e.mesh.delete(t))},r.initPriorityQ=function(e){var t,n,i,s=0;for(i=e.mesh.vHead,n=i.next;n!==i;n=n.next)s++;for(s+=8,t=e.pq=new kL(s,We.vertLeq),i=e.mesh.vHead,n=i.next;n!==i;n=n.next)n.pqHandle=t.insert(n);return n!==i?!1:(t.init(),!0)},r.donePriorityQ=function(e){e.pq=null},r.removeDegenerateFaces=function(e,t){var n,i,s;for(n=t.fHead.next;n!==t.fHead;n=i)i=n.next,s=n.anEdge,Xe(s.Lnext!==s),s.Lnext.Lnext===s&&(r.addWinding(s.Onext,s),e.mesh.delete(s));return!0},r.computeInterior=function(e,t){t===void 0&&(t=!0);var n,i;if(r.removeDegenerateEdges(e),!r.initPriorityQ(e))return!1;for(r.initEdgeDict(e);(n=e.pq.extractMin())!==null;){for(;i=e.pq.min(),!(i===null||!We.vertEq(i,n));)i=e.pq.extractMin(),r.spliceMergeVertices(e,n.anEdge,i.anEdge);r.sweepEvent(e,n)}return e.event=e.dict.min().key.eUp.Org,r.debugEvent(e),r.doneEdgeDict(e),r.donePriorityQ(e),r.removeDegenerateFaces(e,e.mesh)?(t&&e.mesh.check(),!0):!1},r}(),jL=function(){function r(){this.mesh=new Ux,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Wt.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return r.prototype.dot_=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},r.prototype.normalize_=function(e){var t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2];if(!t)throw"Zero-size vector!";t=Math.sqrt(t),e[0]/=t,e[1]/=t,e[2]/=t},r.prototype.longAxis_=function(e){var t=0;return Math.abs(e[1])>Math.abs(e[0])&&(t=1),Math.abs(e[2])>Math.abs(e[t])&&(t=2),t},r.prototype.computeNormal_=function(e){var t,n,i,s,o,a,l=[0,0,0],c=[0,0,0],u=[0,0,0],h=[0,0,0],d=[0,0,0],f=[null,null,null],p=[null,null,null],m=this.mesh.vHead;t=m.next;for(var v=0;v<3;++v)s=t.coords[v],c[v]=s,p[v]=t,l[v]=s,f[v]=t;for(t=m.next;t!==m;t=t.next)for(var g=0;g<3;++g)s=t.coords[g],s<c[g]&&(c[g]=s,p[g]=t),s>l[g]&&(l[g]=s,f[g]=t);var y=0;if(l[1]-c[1]>l[0]-c[0]&&(y=1),l[2]-c[2]>l[y]-c[y]&&(y=2),c[y]>=l[y]){e[0]=0,e[1]=0,e[2]=1;return}for(a=0,n=p[y],i=f[y],u[0]=n.coords[0]-i.coords[0],u[1]=n.coords[1]-i.coords[1],u[2]=n.coords[2]-i.coords[2],t=m.next;t!==m;t=t.next)h[0]=t.coords[0]-i.coords[0],h[1]=t.coords[1]-i.coords[1],h[2]=t.coords[2]-i.coords[2],d[0]=u[1]*h[2]-u[2]*h[1],d[1]=u[2]*h[0]-u[0]*h[2],d[2]=u[0]*h[1]-u[1]*h[0],o=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],o>a&&(a=o,e[0]=d[0],e[1]=d[1],e[2]=d[2]);a<=0&&(e[0]=e[1]=e[2]=0,e[this.longAxis_(u)]=1)},r.prototype.checkOrientation_=function(){for(var e=this.mesh.fHead,t,n=this.mesh.vHead,i,s=0,o=e.next;o!==e;o=o.next)if(i=o.anEdge,!(i.winding<=0))do s+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==o.anEdge);if(s<0){for(t=n.next;t!==n;t=t.next)t.t=-t.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},r.prototype.projectPolygon_=function(){var e=this.mesh.vHead,t=[0,0,0],n,i,s=!1;t[0]=this.normal[0],t[1]=this.normal[1],t[2]=this.normal[2],!t[0]&&!t[1]&&!t[2]&&(this.computeNormal_(t),s=!0),n=this.sUnit,i=this.tUnit;var o=this.longAxis_(t);n[o]=0,n[(o+1)%3]=1,n[(o+2)%3]=0,i[o]=0,i[(o+1)%3]=0,i[(o+2)%3]=t[o]>0?1:-1;for(var a=e.next;a!==e;a=a.next)a.s=this.dot_(a.coords,n),a.t=this.dot_(a.coords,i);s&&this.checkOrientation_();for(var l=!0,c=e.next;c!==e;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},r.prototype.addWinding_=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},r.prototype.tessellateMonoRegion_=function(e,t){var n,i;if(n=t.anEdge,!(n.Lnext!==n&&n.Lnext.Lnext!==n))throw"Mono region invalid";for(;We.vertLeq(n.Dst,n.Org);n=n.Lprev);for(;We.vertLeq(n.Org,n.Dst);n=n.Lnext);i=n.Lprev;for(var s=void 0;n.Lnext!==i;)if(We.vertLeq(n.Dst,i.Org)){for(;i.Lnext!==n&&(We.edgeGoesLeft(i.Lnext)||We.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)s=e.connect(i.Lnext,i),i=s.Sym;i=i.Lprev}else{for(;i.Lnext!==n&&(We.edgeGoesRight(n.Lprev)||We.edgeSign(n.Dst,n.Org,n.Lprev.Org)>=0);)s=e.connect(n,n.Lprev),n=s.Sym;n=n.Lnext}if(i.Lnext===n)throw"Mono region invalid";for(;i.Lnext.Lnext!==n;)s=e.connect(i.Lnext,i),i=s.Sym;return!0},r.prototype.tessellateInterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)if(t=n.next,n.inside&&!this.tessellateMonoRegion_(e,n))return!1;return!0},r.prototype.discardExterior_=function(e){for(var t,n=e.fHead.next;n!==e.fHead;n=t)t=n.next,n.inside||e.zapFace(n)},r.prototype.setWindingNumber_=function(e,t,n){for(var i,s=e.eHead.next;s!==e.eHead;s=i)i=s.next,s.Rface.inside!==s.Lface.inside?s.winding=s.Lface.inside?t:-t:n?e.delete(s):s.winding=0},r.prototype.getNeighbourFace_=function(e){return!e.Rface||!e.Rface.inside?-1:e.Rface.n},r.prototype.outputPolymesh_=function(e,t,n,i){var s,o=0,a=0,l;n>3&&e.mergeConvexFaces(n);for(var c=e.vHead.next;c!==e.vHead;c=c.next)c.n=-1;for(var u=e.fHead.next;u!==e.fHead;u=u.next)if(u.n=-1,!!u.inside){s=u.anEdge,l=0;do{var c=s.Org;c.n===-1&&(c.n=a,a++),l++,s=s.Lnext}while(s!==u.anEdge);if(l>n)throw"Face vertex greater that support polygon";u.n=o,++o}this.elementCount=o,t===gn.CONNECTED_POLYGONS&&(o*=2),this.elements=[],this.elements.length=o*n,this.vertexCount=a,this.vertices=[],this.vertices.length=a*i,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=e.vHead.next;c!==e.vHead;c=c.next)if(c.n!==-1){var h=c.n*i;this.vertices[h+0]=c.coords[0],this.vertices[h+1]=c.coords[1],i>2&&(this.vertices[h+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=e.fHead.next;u!==e.fHead;u=u.next)if(!!u.inside){s=u.anEdge,l=0;do{var c=s.Org;this.elements[d++]=c.n,l++,s=s.Lnext}while(s!==u.anEdge);for(var f=l;f<n;++f)this.elements[d++]=-1;if(t===gn.CONNECTED_POLYGONS){s=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(s),s=s.Lnext;while(s!==u.anEdge);for(var p=l;p<n;++p)this.elements[d++]=-1}}},r.prototype.outputContours_=function(e,t){var n,i,s=0,o=0;this.vertexCount=0,this.elementCount=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){i=n=a.anEdge;do this.vertexCount++,n=n.Lnext;while(n!==i);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*t,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;s=0;for(var a=e.fHead.next;a!==e.fHead;a=a.next)if(!!a.inside){o=0,i=n=a.anEdge;do this.vertices[l++]=n.Org.coords[0],this.vertices[l++]=n.Org.coords[1],t>2&&(this.vertices[l++]=n.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(n):n.Org.idx,o++,n=n.Lnext;while(n!==i);this.elements[u++]=s,this.elements[u++]=o,s+=o}},r.prototype.addContour=function(e,t){this.mesh===null&&(this.mesh=new Ux),e<2&&(e=2),e>3&&(e=3);for(var n=null,i=0;i<t.length;i+=e)n===null?(n=this.mesh.makeEdge(),this.mesh.splice(n,n.Sym)):(this.mesh.splitEdge(n),n=n.Lnext),n.Org.coords[0]=t[i+0],n.Org.coords[1]=t[i+1],e>2?n.Org.coords[2]=t[i+2]:n.Org.coords[2]=0,n.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(n),n.winding=1,n.Sym.winding=-1},r.prototype.tesselate=function(e,t,n,i,s,o){if(e===void 0&&(e=Wt.ODD),t===void 0&&(t=gn.POLYGONS),o===void 0&&(o=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,s&&(this.normal[0]=s[0],this.normal[1]=s[1],this.normal[2]=s[2]),this.windingRule=e,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),HL.computeInterior(this,o);var a=this.mesh;return t===gn.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),o&&a.check(),t===gn.BOUNDARY_CONTOURS?this.outputContours_(a,i):this.outputPolymesh_(a,t,n,i),!0},r}();function No(r){var e=r.windingRule,t=e===void 0?Wt.ODD:e,n=r.elementType,i=n===void 0?gn.POLYGONS:n,s=r.polySize,o=s===void 0?3:s,a=r.vertexSize,l=a===void 0?2:a,c=r.normal,u=c===void 0?[0,0,1]:c,h=r.contours,d=h===void 0?[]:h,f=r.strict,p=f===void 0?!0:f,m=r.debug,v=m===void 0?!1:m;if(!d&&p)throw new Error("Contours can't be empty");if(!!d){var g=new jL;r.edgeCreateCallback&&(g.edgeCreateCallback=r.edgeCreateCallback),r.vertexIdCallback&&(g.vertexIdCallback=r.vertexIdCallback);for(var y=0;y<d.length;y++)g.addContour(l||2,d[y]);return g.tesselate(t,i,o,l,u,p),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:v?g.mesh:void 0}}}var X4=Wt.ODD,q4=Wt.NONZERO,Y4=Wt.POSITIVE,K4=Wt.NEGATIVE,Q4=Wt.ABS_GEQ_TWO,Z4=gn.POLYGONS,$4=gn.CONNECTED_POLYGONS,eH=gn.BOUNDARY_CONTOURS;var Rc=class extends we{constructor(e,t=12,n=100,i={}){super();this.type="ShapeGeometry";this.windingRule=Wt.ODD;this.elementType=gn.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._drawCount=0,this._shape=e,this._curveSegments=t,this._maxCount=n,this._maxDrawCount=n*3,this._triangulationOptions=Object.assign({windingRule:Wt.ODD,elementType:gn.POLYGONS,polySize:3,vertexSize:2,strict:!0},i),this._positionAttribute=new Re(new Float32Array(n*3),3),this._normalAttribute=new Re(new Float32Array(n*3),3),this._uvAttribute=new Re(new Float32Array(n*2),2),this._indexAttribute=new Re(new Uint32Array(n*3),1),this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.updateFromShape()}copy(e){return this._drawCount=e.drawCount,this._maxDrawCount=e._maxDrawCount,this._maxCount=e.maxCount,super.copy(e)}get curveSegments(){return this._curveSegments}set curveSegments(e){this._curveSegments=e,this.updateFromShape()}get drawCount(){return this._drawCount}get maxDrawCount(){return this._maxDrawCount}get maxCount(){return this._maxCount}updateFromShape(){let e=this._shape.extractShapePointsToFlatArray([],this._curveSegments),t=this._shape.shapeHoles.map(l=>l.extractShapePointsToFlatArray([],this._curveSegments)),n,i=!0,s=!0,o,a;for(let l=0,c=e.length/2;l<c;l++){let u=l*2,h=e[u+0],d=e[u+1];if(o!==void 0&&h!==o&&(i=!1),a!==void 0&&d!==a&&(s=!1),o=h,a=d,!i&&!s)break}if(!i&&!s&&(n=No({contours:[e,...t],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})),this._positionAttribute.array.fill(0),this._normalAttribute.array.fill(0),this._uvAttribute.array.fill(0),this._indexAttribute.array.fill(0),this._drawCount=0,n){let l=1/0,c=-1/0,u=1/0,h=-1/0;for(let p=0,m=n.vertexCount;p<m;p++){let v=p*2,g=n.vertices[v+0],y=n.vertices[v+1];g<l&&(l=g),g>c&&(c=g),y<u&&(u=y),y>h&&(h=y)}let d=c-l,f=h-u;for(let p=0,m=n.vertexCount;p<m;p++){let v=p*2,g=n.vertices[v+0],y=n.vertices[v+1],x=(g-l)/d,b=(y-u)/f;this._positionAttribute.setXYZ(p,g,y,0),this._normalAttribute.setXYZ(p,0,0,1),this._uvAttribute.setXY(p,x,b)}for(let p=0,m=n.elementCount;p<m;p++){let v=p*3,g=n.elements[v+0],y=n.elements[v+1],x=n.elements[v+2];this._indexAttribute.setX(v+0,g),this._indexAttribute.setX(v+1,y),this._indexAttribute.setX(v+2,x),this._drawCount+=3}}return this._positionAttribute.needsUpdate=!0,this._normalAttribute.needsUpdate=!0,this._uvAttribute.needsUpdate=!0,this._indexAttribute.needsUpdate=!0,this.setDrawRange(0,this._drawCount),this._drawCount>this._maxDrawCount}};var Rh=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let n=e*Rh.eSize;this.buffer=new ArrayBuffer(n);let i=Float32Array.BYTES_PER_ELEMENT,s=0;this.positions=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.normals=new Float32Array(this.buffer,s*i,3*e),s+=3*e,this.uvs=new Float32Array(this.buffer,s*i,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let n=e*Rh.eSize,i=new ArrayBuffer(n),s=Float32Array.BYTES_PER_ELEMENT,o=0,a=new Float32Array(i,o*s,3*e);o+=3*e;let l=new Float32Array(i,o*s,3*e);o+=3*e;let c=new Float32Array(i,o*s,2*e);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=i,this.positions=a,this.normals=l,this.uvs=c,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let i=this.capacity;for(;t>i;)i*=2;this.realloc(i)}let n=this.size;return this.size=t,n}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Dh=Rh;Dh.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var pm=(r,e)=>([t,n])=>(n<t&&(n+=e),(r>=t?r:r+e)<=n),mm=class extends we{constructor(e,t,n=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,n<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(n,t/2-1e-12),this._bevelSegments=Math.floor(s));let o=this._shape.extractShapePointsToFlatArray([],i),a=this._shape.shapeHoles.map(_=>{let S=_.extractShapePointsToFlatArray([],i),A=[];for(let T=S.length-1;T>=1;T-=2){let L=S[T-1],C=S[T-0];A.push(L,C)}return A}),l=No({windingRule:Wt.ODD,elementType:gn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[o]}),c=No({windingRule:Wt.ODD,elementType:gn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let _=0;_<c.elements.length;_++){let S=c.elements[_],A=_%2==0?l.vertexCount:0;l.elements.push(S+A)}for(let _=0;_<c.vertexIndices.length;_++){let S=c.vertexIndices[_],A=l.vertexCount;l.vertexIndices.push(S+A)}for(let _=0;_<c.vertices.length;_++){let S=c.vertices[_];l.vertices.push(S)}}let h=1/0,d=-1/0,f=1/0,p=-1/0;for(let _=0,S=l.vertexCount;_<S;_++){let A=_*2,T=l.vertices[A+0],L=l.vertices[A+1];T<h&&(h=T),T>d&&(d=T),L<f&&(f=L),L>p&&(p=L)}this._minX=h,this._minY=f,this._width=d-h,this._height=p-f;let m=l.vertexCount*2*(2+this._bevelSegments);this._buffer=new Dh(m);let v=[],g=[];for(let _=l.elementCount-1,S=l.elementCount;_>=0;_--){let A=_>=u,T=_*2,L=l.elements[T+0],C=l.elements[T+1],U=L+C,P={start:L,count:C,normals:[],continuous:[],concave:[]},R=L,G=U-1,B=L+1,j=this._shape.roundedCurves.length;do{let z=R-L,D=l.vertices[G*2+0],K=l.vertices[G*2+1],q=l.vertices[R*2+0],ee=l.vertices[R*2+1],V=l.vertices[B*2+0],de=l.vertices[B*2+1],ae=q-D,te=ee-K,X=Math.sqrt(ae*ae+te*te);ae/=X,te/=X;let se=q-V,$=ee-de,H=Math.sqrt(se*se+$*$);se/=H,$/=H,P.normals[z*2+0]=-$,P.normals[z*2+1]=se,P.concave[z]=ae*$-te*se>0;let Q=l.vertexIndices[R];if(Array.isArray(Q))P.continuous[z]=!1;else{let[ce,ie]=this._shape.getCurveIndexFromVertexId(Q-1,!0);if(ie>0&&ie<1)P.continuous[z]=!0;else{let N=ie===1?ce+1:ce-1;N=(N+j)%j;let E=ie===1?0:1,Y=this._shape.roundedCurves[ce].getTangent(ie),re=this._shape.roundedCurves[N].getTangent(E);P.continuous[z]=Y.dot(re)>.95}}A&&(P.normals[z*2+0]*=-1,P.normals[z*2+1]*=-1),[G,R,B]=[R,B,B+1],B>=U&&(B-=C)}while(B!==L+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(L*2,U*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((z,D)=>[D,D]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(L*2,U*2)});for(let z=1;z<=this._bevelSegments;z++){let D=z/this._bevelSegments*Math.PI/2,K=(1-Math.cos(D))*this._bevelSize,q=[],ee=[],V=[],de=[],ae=0;for(let X=0;X<C;X++){let se=X*2,$=(X-1+C)%C*2,H=l.vertices[P.start*2+se+0],Q=l.vertices[P.start*2+se+1],ce=-P.normals[$+0]*K,ie=-P.normals[$+1]*K,N=-P.normals[se+0]*K,E=-P.normals[se+1]*K;if(P.concave[X]||!P.concave[X]&&A){let Y=Math.atan2(ie,ce),re=Math.atan2(E,N);re>Y&&(re-=Math.PI*2);let ye=re-Y;if(P.continuous[X]||A){let pe=Y+ye/2,Ie=Math.cos(pe)*K,ve=Math.sin(pe)*K;q[2*ae+0]=H+Ie*(A?-1:1),q[2*ae+1]=Q+ve*(A?-1:1),de[ae]=X,ae++}else{let pe=Math.max(1,Math.floor(i/4*Math.abs(ye)/Math.PI));for(let Ie=0;Ie<=pe;Ie++){let ve=Y+ye*(Ie/pe),Fe=Math.cos(ve)*K,Ce=Math.sin(ve)*K;q[2*ae+0]=H+Fe,q[2*ae+1]=Q+Ce,de[ae]=X,ae++}}}else q[2*ae+0]=H+ce,q[2*ae+1]=Q+ie,de[ae]=X,ee[X]=ae,ae++,q[2*ae+0]=H,q[2*ae+1]=Q,de[ae]=X,ae++,q[2*ae+0]=H+N,q[2*ae+1]=Q+E,de[ae]=X,V[X]=ae,ae++}let te=No({windingRule:Wt.POSITIVE,elementType:gn.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[q],edgeCreateCallback:X=>{let $=X.Org.idx,H=de[$],Q=de[($+1)%de.length];X.idx=[H,Q],X.Sym.idx=[Q,H]},vertexIdCallback:X=>{let se=X.Lprev.idx;return[se?se[1]:0,X.idx[0]]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!te.vertexCount)break;for(let X=0;X<te.vertexIndices.length;X++){let[se,$]=te.vertexIndices[X];if(se===$)continue;let H=$;$<se&&(H+=C);for(let Q=se;Q<H;Q++){let ce=Q%C,ie=(Q+1)%C;if(!P.continuous[ce]||!P.continuous[ie]){te.vertexIndices[X]=[se,ce],te.vertexIndices.splice(X+1,0,[ie,$]),te.vertices.splice((X+1)*2,0,te.vertices[X*2],te.vertices[X*2+1]);break}}}ne.push({bevelI:z,angle:D,size:K,boundary:te,reverseMap:de,insetPoints:q})}let le=(z,D,K)=>{let q=0,ee=z.boundary.vertexIndices.length;for(;q<ee&&K(z.boundary.vertexIndices[D]);)D=(D+1)%ee,q++;return q},W=v.length;for(let z=1;z<ne.length;z++){let D=ne[z-1],K=ne[z],q=D.boundary.vertexIndices.length,ee=K.boundary.vertexIndices.length;if(!q||!ee)break;let V=P.concave.length,de=0,ae=pm(de,C);for(;!D.boundary.vertexIndices.filter(ae).length||!K.boundary.vertexIndices.filter(ae).length;)de++,ae=pm(de,C);let te=D.boundary.vertexIndices.findIndex(ae),X=K.boundary.vertexIndices.findIndex(ae);do te=(te+1)%q;while(ae(D.boundary.vertexIndices[te]));do X=(X+1)%ee;while(ae(K.boundary.vertexIndices[X]));de=(de+1)%C;let se=de,$=this.buildBevelVert(P,D,(te-1+q)%q),H=this.buildBevelVert(P,K,(X-1+ee)%ee),Q=$,ce=H,ie,N,E=!1;do{ae=pm(de,C);let Y=le(D,te,ae),re=le(K,X,ae),ye=E;if(E=!1,Y&&!re){for(let pe=0;pe<Y;pe++)ie=this.buildBevelVert(P,D,(te+pe)%q,pe/(Y-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ie.bottomP,Q.bottomN,ce.bottomN),Q=ie;E=!0}else if(!Y&&re)for(let pe=0;pe<re;pe++)N=this.buildBevelVert(P,K,(X+pe)%ee,pe/(re-1)),v.push(ce.topN,Q.topP,N.topP),v.push(Q.bottomP,ce.bottomN,N.bottomP),ce=N;else if(Y&&re)if(ie=this.buildBevelVert(P,D,te,0),N=this.buildBevelVert(P,K,X,0),ye?(v.push(Q.topN,N.topP,ce.topN),v.push(Q.topN,ie.topP,N.topP),v.push(N.bottomP,Q.bottomN,ce.bottomN),v.push(ie.bottomP,Q.bottomN,N.bottomP)):(v.push(Q.topN,ie.topP,ce.topN),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,Q.bottomN,ce.bottomN),v.push(ie.bottomP,ce.bottomN,N.bottomP)),Q=ie,ce=N,Y===re)for(let pe=1;pe<Y;pe++)ie=this.buildBevelVert(P,D,(te+pe)%q,pe/(Y-1)),N=this.buildBevelVert(P,K,(X+pe)%ee,pe/(re-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,Q.bottomN,ce.bottomN),v.push(ie.bottomP,ce.bottomN,N.bottomP),Q=ie,ce=N;else if(Y>re){let pe=Y/re,Ie=0;for(let ve=1;ve<Y;ve++)ie=this.buildBevelVert(P,D,(te+ve)%q,ve/(Y-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ie.bottomP,Q.bottomN,ce.bottomN),Q=ie,ve>(Ie+1)*pe&&(Ie++,N=this.buildBevelVert(P,K,(X+Ie)%ee,Ie/(re-1)),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,ce.bottomN,N.bottomP),ce=N)}else{let pe=re/Y,Ie=0;for(let ve=1;ve<re;ve++)N=this.buildBevelVert(P,K,(X+ve)%ee,ve/(re-1)),v.push(ce.topN,ie.topP,N.topP),v.push(ie.bottomP,ce.bottomN,N.bottomP),ce=N,ve>(Ie+1)*pe&&(Ie++,ie=this.buildBevelVert(P,D,(te+Ie)%q,Ie/(Y-1)),v.push(Q.topN,ie.topP,ce.topN),v.push(ie.bottomP,Q.bottomN,ce.bottomN),Q=ie)}te=(te+Y)%q,X=(X+re)%ee,de=(de+1)%V}while(de!==se)}{let z=ne[0];for(let D=0,K=z.boundary.vertexCount;D<K;D++){let q=this.buildBevelVert(P,z,D),ee=this.buildBevelVert(P,z,(D+1)%K);v.push(ee.topP,q.topN,q.bottomN),v.push(ee.topP,q.bottomN,ee.bottomP)}}if(A){let z=[];for(let D=v.length-1;D>=W+2;D-=3){let K=v[D-2],q=v[D-1],ee=v[D-0];z.push(ee,q,K)}v.splice(W,v.length-W,...z)}if(A){let z=[];for(let D=ne[ne.length-1].boundary.vertices.length-1;D>=1;D-=2){let K=ne[ne.length-1].boundary.vertices[D-1],q=ne[ne.length-1].boundary.vertices[D-0];z.push(K,q)}g.push(z)}if(!A){let z=ne[ne.length-1],D=No({windingRule:ne.length>1?Wt.POSITIVE:Wt.ODD,elementType:gn.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...g]});if(!D)throw new Error("Error generating geometry for surface");for(let K=0;K<D.elementCount*3;K+=3){let q=this.buildSurfaceVert(D,D.elements[K+0]),ee=this.buildSurfaceVert(D,D.elements[K+1]),V=this.buildSurfaceVert(D,D.elements[K+2]);v.push(q.top,ee.top,V.top),v.push(V.bottom,ee.bottom,q.bottom)}}this.vertexCache={}}this._buffer.shrink();let y=new Re(Uint32Array.from(v),1),x=new Re(this._buffer.positions,3),b=new Re(this._buffer.normals,3),w=new Re(this._buffer.uvs,2);x.needsUpdate=!0,b.needsUpdate=!0,w.needsUpdate=!0,y.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",b),this.setAttribute("uv",w),this.setIndex(y)}buildSurfaceVert(e,t){let n=t.toString();if(n in this.vertexCache)return this.vertexCache[n];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],o=(i-this._minX)/this._width,a=(s-this._minY)/this._height,l=this._buffer.get(2),c=l*3,u=l*2,h={top:l+0,bottom:l+1};return this._buffer.positions[c+0]=i,this._buffer.positions[c+1]=s,this._buffer.positions[c+2]=this._depth,this._buffer.normals[c+0]=0,this._buffer.normals[c+1]=0,this._buffer.normals[c+2]=1,this._buffer.uvs[u+0]=o,this._buffer.uvs[u+1]=a,this._buffer.positions[c+3]=i,this._buffer.positions[c+4]=s,this._buffer.positions[c+5]=0,this._buffer.normals[c+3]=0,this._buffer.normals[c+4]=0,this._buffer.normals[c+5]=-1,this._buffer.uvs[u+2]=o,this._buffer.uvs[u+3]=a,this.vertexCache[n]=h,h}buildBevelVert(e,t,n,i=1){let s=`${t.bevelI}:${n}`;if(s in this.vertexCache)return this.vertexCache[s];let[o,a]=t.boundary.vertexIndices[n],l,c,u,h;o!==a?(c=o,l=a,h=!1,u=e.continuous[c]&&e.continuous[l]):(l=o,c=(l-1+e.count)%e.count,h=e.concave[l]&&t.bevelI>0,u=e.continuous[l]||h);let d=Math.cos(t.angle),f=Math.sin(t.angle),p=n*2,m=l*2,v=c*2,g=t.boundary.vertices[p+0],y=t.boundary.vertices[p+1],x=(1-f)*this._bevelSize,b=(g-this._minX)/this._width,w=(y-this._minY)/this._height,_=e.normals[m+0],S=e.normals[m+1],A=e.normals[v+0],T=e.normals[v+1];if(h){let R=A-_,G=T-S;_=_+R*(1-i),S=S+G*(1-i);let B=Math.sqrt(_*_+S*S);_/=B,S/=B}let L=this._buffer.get(u?2:4),C=L*3,U=L*2,P={i:n,fi:l,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=g,this._buffer.positions[C+1]=y,this._buffer.positions[C+2]=this._depth-x,this._buffer.normals[C+0]=_*d,this._buffer.normals[C+1]=S*d,this._buffer.normals[C+2]=f,this._buffer.uvs[U+0]=b,this._buffer.uvs[U+1]=w,this._buffer.positions[C+3]=g,this._buffer.positions[C+4]=y,this._buffer.positions[C+5]=x,this._buffer.normals[C+3]=_*d,this._buffer.normals[C+4]=S*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[U+2]=w,this._buffer.uvs[U+3]=b,u||(L+=2,C+=6,U+=4,P.topP=L+0,P.bottomP=L+1,this._buffer.positions[C+0]=g,this._buffer.positions[C+1]=y,this._buffer.positions[C+2]=this._depth-x,this._buffer.normals[C+0]=A*d,this._buffer.normals[C+1]=T*d,this._buffer.normals[C+2]=f,this._buffer.uvs[U+0]=b,this._buffer.uvs[U+1]=w,this._buffer.positions[C+3]=g,this._buffer.positions[C+4]=y,this._buffer.positions[C+5]=x,this._buffer.normals[C+3]=A*d,this._buffer.normals[C+4]=T*d,this._buffer.normals[C+5]=-f,this._buffer.uvs[U+2]=w,this._buffer.uvs[U+3]=b),this.vertexCache[s]=P,P}};var Pn=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var c,u,h,d,f,p,m;let t=Object.assign({},(c=e==null?void 0:e.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeDepth:0,surfaceMaxCount:100,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters),n=Math.abs(t.width),i=Math.abs((u=t.height)!=null?u:t.width),s=Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(h=t.depth)!=null?h:0),o=(d=r.shape)!=null?d:e==null?void 0:e.shape,a=(f=o==null?void 0:o.roundness)!=null?f:t.roundness;o!==void 0&&(o instanceof Lt?(o.width!==n||o.height!==i)&&o.applySize(n,i):o=new Lt(n,i).fromJSON(o),((p=r.parameters)==null?void 0:p.roundness)!==void 0&&((m=r.parameters)==null?void 0:m.roundness)>0&&o.update(!1));let l=o!=null?o:new Lt(n,i);return{parameters:Object.assign(t,{width:n,height:i,depth:s,extrudeDepth:s,roundness:a}),shape:l}}static build(r){let{extrudeDepth:e,extrudeBevelSize:t,extrudeBevelSegments:n,subdivisions:i,roundness:s,surfaceMaxCount:o}=r.parameters;r.shape.roundness=s;let a;return e<=0?a=new Rc(r.shape,i,o):a=new mm(r.shape,e,t,i,n),Object.assign(a,{userData:tt(Ue({},r),{type:"VectorGeometry"})})}};var jx=Math.PI*2,Wx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,spikes:128,angle:360,innerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,surfaceMaxCount:1e3},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((s=t.height)!=null?s:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(o=t.depth)!=null?o:0)})}}static build(r){let{width:e,height:t,spikes:n,angle:i,innerRadius:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l,surfaceMaxCount:c}=r.parameters,u=r.shape,h=e*.5,d=t*.5,f=WL(u,h,d,i*Math.PI/180,n,s);u.isClosed=!0,u.update();let p=Pn.create({shape:u,parameters:{subdivisions:f,surfaceMaxCount:c,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(p,{userData:tt(Ue({},r),{type:"EllipseGeometry"})})}};function WL(r,e,t,n,i,s){if(n>=jx)return i>30||i%4==0?(XL(r,e,t,s),Math.round(i/4)):Jx(r,n,i,e,t,s);let o={x:0,y:t},a=n+Math.PI*.5,l={x:Math.cos(a)*e,y:Math.sin(a)*t},c=Gx({px:o.x,py:o.y,cx:l.x,cy:l.y,rx:e,ry:t,largeArcFlag:n>Math.PI,sweepFlag:!0});return i>30||i%c.length==0?JL(r,o.x,o.y,c,i,e,t,s):Jx(r,n,i,e,t,s)}function JL(r,e,t,n,i,s,o,a){let l=Math.round(i/n.length);r.addPoint($a(e,t));for(let c=0,u=n.length;c<u;c++){let h=n[c],d=r.points[c],f=$a(h.x,h.y);d.controls[1].position.set(h.x1,h.y1),f.controls[0].position.set(h.x2,h.y2),r.addPoint(f)}return a>0?Xx(r,s,o,a):r.addPoint($a(0,0)),l}function Jx(r,e,t,n,i,s){let o=-e/t;for(let a=0;a<=t;a++){let l=o*a,c=Math.sin(l)*n,u=Math.cos(l)*i;r.addPoint($a(c,u))}return e<jx?s>0?Xx(r,n,i,s):r.addPoint($a(0,0)):(r.removePoint(r.points[r.points.length-1]),s>0&&qx(r,n,i,s)),1}function XL(r,e,t,n=0,i=0,s=0){let o=.5522847498,a=e*o,l=t*o;r.addPoint(Bh(i-e,s,i-e,s-l,i-e,s+l)),r.addPoint(Bh(i,s+t,i-a,s+t,i+a,s+t)),r.addPoint(Bh(i+e,s,i+e,s+l,i+e,s-l)),r.addPoint(Bh(i,s-t,i+a,s-t,i-a,s-t)),n>0&&qx(r,e,t,n)}function $a(r,e){return new vs(Ee.generateUUID(),new O(r,e))}function Bh(r,e,t,n,i,s){let o=$a(r,e);return o.controls[0].position.set(t,n),o.controls[1].position.set(i,s),o}function Xx(r,e,t,n){Yx(r,e,t,n).forEach(s=>r.addPoint(s))}function qx(r,e,t,n){let i=Yx(r,e,t,n),s=new Lt;i.forEach(o=>s.addPoint(o)),s.isClosed=!0,r.shapeHoles.push(s)}function Yx(r,e,t,n){let i=n*e/100,s=i*(Math.abs(t)/Math.abs(e)),o=new O(i/e,s/t),a=r.points.map(l=>l.clone()).reverse();return a.forEach(l=>{l.position.multiply(o);let c=l.controls[0].position.clone().multiply(o),u=l.controls[1].position.clone().multiply(o);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),a}var Kx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var a,l,c;let t=Object.assign({},(a=e==null?void 0:e.parameters)!=null?a:{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},r.parameters),n=Math.abs(t.width),i=Math.abs((l=t.height)!=null?l:n),s=Math.abs((c=t.depth)!=null?c:n),o=Math.abs(Math.min(n,s))/2;return{parameters:Object.assign(t,{width:n,height:i,depth:s,radius:o,segments:Math.round(t.segments),pathSegments:Math.round(t.pathSegments),cornerSegments:Math.round(t.cornerSegments)})}}static build(r){let{width:e,height:t,depth:n,radius:i,revolutions:s,segments:o,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:h}=r.parameters,d=new Oh(!1,e,t,n,i,s,o,a,l,c,u,h);return Object.assign(d,{userData:tt(Ue({},r),{type:"HelixGeometry"})})}},Oh=class extends we{constructor(e,t,n,i,s,o,a,l,c,u,h,d){super();let f=e&&o===1;f&&(d=0),h>100&&(h=100);let p=()=>new M,m=new M,v=p(),g=p(),y=p(),x,b,w,_,S,A,T,L,C=p(),U=p(),P=p(),R=p(),G=p(),B=p(),j=p(),ne=p(),le=n-2*l+.001,W=le/o,z=Math.ceil(a*o),D=z+1,K=le/z,q=-le/2,ee=u+1,V=2*Math.PI/u,de=Math.PI/2/d,ae=.01,te=Math.min((1-h/100)*l,l-ae),X=l-te,se=0,$=2,H=d*$+$,Q=ee*H/$,ce=Q+ee*D,ie=ee*(D+H),[N,E,Y]=[3,3,2].map(ke=>Array(ie*ke).fill(0)),re=[],ye=s-l;function pe(ke,ht){let ft=Math.PI/2;A=ht*K,L=2*Math.PI*(A%W)/W+ft,A+=q,T=Math.sin(L)*ye,S=Math.cos(L)*ye,e?ke.set(S,T,A):ke.set(S,A,T)}pe(m,-1e-10),pe(v,0),C.copy(m),pe(m,1);let Ie=m.distanceTo(v),ve=X+te,Fe=Ie*z+2*ve,Ce=te,J=Fe-ve;for(let ke=0;ke<=z;ke++){pe(g,ke),ne.subVectors(g,C).normalize(),C.copy(g),B.copy(g).setComponent(+e+1,0).normalize(),j.crossVectors(ne,B).normalize();let ht=ke===0,ft=ke===z,Bn=ht?3*Math.PI/2:de,Mt=ht?Ce:J,Tn=ht?ee:ce,En=ht?0:ie-ee,Di=ne.clone().multiplyScalar(ht?-X:X).add(g),_r=ne.clone().multiplyScalar(ht?-1:1).normalize();for(let xn=0;xn<ee;xn++){let F=xn*V;if(U.addVectors(m.copy(B).multiplyScalar(l*Math.cos(F)),v.copy(j).multiplyScalar(l*Math.sin(F))),P.copy(U).normalize(),ht||ft){f||(se=En+xn,[0,1,2].forEach(Pe=>{N[se*3+Pe]=Di.getComponent(Pe),E[se*3+Pe]=_r.getComponent(Pe)}),Y[se*2]=+ft,Y[se*2+1]=xn/u),v.copy(P).multiplyScalar(te),y.addVectors(g,v);for(let Pe=0;Pe<d;Pe++){let et=Pe*de+Bn;R.addVectors(m.copy(ne).multiplyScalar(X*Math.sin(et)),v.copy(P).multiplyScalar(X*Math.cos(et))),G.copy(R).normalize(),v.addVectors(y,R),R.normalize(),se=Tn+Pe*ee+xn,[0,1,2].forEach(Nn=>{N[se*3+Nn]=v.getComponent(Nn),E[se*3+Nn]=G.getComponent(Nn)});let Ft=+ht+Math.sin(et);Y[se*2]=(Mt+X*Ft)/Fe,Y[se*2+1]=xn/u}}v.addVectors(g,U),se=Q+ke*ee+xn,[0,1,2].forEach(Pe=>{N[se*3+Pe]=v.getComponent(Pe),E[se*3+Pe]=P.getComponent(Pe)}),Y[se*2]=(ve+ke*Ie)/Fe,Y[se*2+1]=xn/u}}let xe=D+2*d+$,he=1,[Ne,Be]=f?[he,he+D-1]:[0,xe-1];for(let ke=Ne;ke<=Be-1;ke++){let ht=f&&ke===Be-1;for(let ft=0;ft<ee-1;ft++)x=ke*ee+ft,b=x+1,w=(ht?ft:x)+ee,_=(ht?ft+1:b)+ee,ke===0?re.push(b,_,w):ke===xe-2?re.push(x,b,w):re.push(x,b,w,b,_,w)}this.setIndex(re),this.setAttribute("position",new ge(N,3)),this.setAttribute("normal",new ge(E,3)),this.setAttribute("uv",new ge(Y,2))}};var Qx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,detail:0,corner:0,cornerSides:4},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,detail:i,corner:s,cornerSides:o}=r.parameters,a=i===0&&s!==0?new Fh(e*.5,s,o):new co(e*.5,i);return a.scale(1,t/e,n/e),Object.assign(a,{userData:tt(Ue({},r),{type:"IcosahedronGeometry"})})}},Fh=class extends Eo{constructor(e=1,t=.2,n=4){let i=(1+Math.sqrt(5))/2,s=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],o=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(s,o,a,e,t,n);this.type=a}static fromJSON(e){return new Fh(e.radius,e.corner,e.cornerSides)}};var Zx=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s,o,a;((i=(n=r.parameters)==null?void 0:n.points)!=null?i:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let t=Object.assign({},(s=e==null?void 0:e.parameters)!=null?s:{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width),depth:Math.abs((a=t.depth)!=null?a:t.width)})}}static build(r){let{points:e,segments:t,verticalSegments:n}=r.parameters,i=new yi;i.moveTo(e[0].x,e[0].y),i.bezierCurveTo(e[1].x,e[1].y,e[2].x,e[2].y,e[3].x,e[3].y);let s=new uo(i.extractPoints(n).shape,t);return s.rotateZ(Math.PI),Object.assign(s,{userData:tt(Ue({},r),{type:"LatheGeometry"})})}};var fr=new me,gm=new Ke,zh=new M,Co=class extends cn{constructor(){super();this.uuid=Ee.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(e){let t=new Dt().getNormalMatrix(e);for(let n=0,i=this.vertices.length;n<i;n++)this.vertices[n].applyMatrix4(e);for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];s.normal.applyMatrix3(t).normalize();for(let o=0,a=s.vertexNormals.length;o<a;o++)s.vertexNormals[o].applyMatrix3(t).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return fr.makeRotationX(e),this.applyMatrix4(fr),this}rotateY(e){return fr.makeRotationY(e),this.applyMatrix4(fr),this}rotateZ(e){return fr.makeRotationZ(e),this.applyMatrix4(fr),this}translate(e,t,n){return fr.makeTranslation(e,t,n),this.applyMatrix4(fr),this}scale(e,t,n){return fr.makeScale(e,t,n),this.applyMatrix4(fr),this}lookAt(e){return gm.lookAt(e),gm.updateMatrix(),this.applyMatrix4(gm.matrix),this}fromBufferGeometry(e){let t=this,n=e.index!==null?e.index:void 0,i=e.attributes;if(i.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let s=i.position,o=i.normal,a=i.color,l=i.uv,c=i.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<s.count;d++)t.vertices.push(new M().fromBufferAttribute(s,d)),a!==void 0&&t.colors.push(new fe().fromBufferAttribute(a,d));function u(d,f,p,m){let v=a===void 0?[]:[t.colors[d].clone(),t.colors[f].clone(),t.colors[p].clone()],g=o===void 0?[]:[new M().fromBufferAttribute(o,d),new M().fromBufferAttribute(o,f),new M().fromBufferAttribute(o,p)],y=new Bc(d,f,p,g,v,m);t.faces.push(y),l!==void 0&&t.faceVertexUvs[0].push([new O().fromBufferAttribute(l,d),new O().fromBufferAttribute(l,f),new O().fromBufferAttribute(l,p)]),c!==void 0&&t.faceVertexUvs[1].push([new O().fromBufferAttribute(c,d),new O().fromBufferAttribute(c,f),new O().fromBufferAttribute(c,p)])}let h=e.groups;if(h.length>0)for(let d=0;d<h.length;d++){let f=h[d],p=f.start,m=f.count;for(let v=p,g=p+m;v<g;v+=3)n!==void 0?u(n.getX(v),n.getX(v+1),n.getX(v+2),f.materialIndex):u(v,v+1,v+2,f.materialIndex)}else if(n!==void 0)for(let d=0;d<n.count;d+=3)u(n.getX(d),n.getX(d+1),n.getX(d+2));else for(let d=0;d<s.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(zh).negate(),this.translate(zh.x,zh.y,zh.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,n=t===0?1:1/t,i=new me;return i.set(n,0,0,-n*e.x,0,n,0,-n*e.y,0,0,n,-n*e.z,0,0,0,1),this.applyMatrix4(i),this}computeFaceNormals(){let e=new M,t=new M;for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=this.vertices[s.a],a=this.vertices[s.b],l=this.vertices[s.c];e.subVectors(l,a),t.subVectors(o,a),e.cross(t),e.normalize(),s.normal.copy(e)}}computeVertexNormals(e=!0){let t=new Array(this.vertices.length);for(let n=0,i=this.vertices.length;n<i;n++)t[n]=new M;if(e){let n=new M,i=new M;for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=this.vertices[a.a],c=this.vertices[a.b],u=this.vertices[a.c];n.subVectors(u,c),i.subVectors(l,c),n.cross(i),t[a.a].add(n),t[a.b].add(n),t[a.c].add(n)}}else{this.computeFaceNormals();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n];t[s.a].add(s.normal),t[s.b].add(s.normal),t[s.c].add(s.normal)}}for(let n=0,i=this.vertices.length;n<i;n++)t[n].normalize();for(let n=0,i=this.faces.length;n<i;n++){let s=this.faces[n],o=s.vertexNormals;o.length===3?(o[0].copy(t[s.a]),o[1].copy(t[s.b]),o[2].copy(t[s.c])):(o[0]=t[s.a].clone(),o[1]=t[s.b].clone(),o[2]=t[s.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let n=this.faces[e],i=n.vertexNormals;i.length===3?(i[0].copy(n.normal),i[1].copy(n.normal),i[2].copy(n.normal)):(i[0]=n.normal.clone(),i[1]=n.normal.clone(),i[2]=n.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.__originalFaceNormal?i.__originalFaceNormal.copy(i.normal):i.__originalFaceNormal=i.normal.clone(),i.__originalVertexNormals||(i.__originalVertexNormals=[]);for(let s=0,o=i.vertexNormals.length;s<o;s++)i.__originalVertexNormals[s]?i.__originalVertexNormals[s].copy(i.vertexNormals[s]):i.__originalVertexNormals[s]=i.vertexNormals[s].clone()}let e=new Co;e.faces=this.faces;for(let t=0,n=this.morphTargets.length;t<n;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let s=this.morphNormals[t].faceNormals,o=this.morphNormals[t].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new M,u={a:new M,b:new M,c:new M};s.push(c),o.push(u)}}let i=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let s=0,o=this.faces.length;s<o;s++){let a=this.faces[s],l=i.faceNormals[s],c=i.vertexNormals[s];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let t=0,n=this.faces.length;t<n;t++){let i=this.faces[t];i.normal=i.__originalFaceNormal,i.vertexNormals=i.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new tn),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ti),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,n=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let i,s=this.vertices.length,o=this.vertices,a=e.vertices,l=this.faces,c=e.faces,u=this.colors,h=e.colors;t!==void 0&&(i=new Dt().getNormalMatrix(t));for(let d=0,f=a.length;d<f;d++){let m=a[d].clone();t!==void 0&&m.applyMatrix4(t),o.push(m)}for(let d=0,f=h.length;d<f;d++)u.push(h[d].clone());for(let d=0,f=c.length;d<f;d++){let p=c[d],m,v,g=p.vertexNormals,y=p.vertexColors,x=new Bc(p.a+s,p.b+s,p.c+s);x.normal.copy(p.normal),i!==void 0&&x.normal.applyMatrix3(i).normalize();for(let b=0,w=g.length;b<w;b++)m=g[b].clone(),i!==void 0&&m.applyMatrix3(i).normalize(),x.vertexNormals.push(m);x.color.copy(p.color);for(let b=0,w=y.length;b<w;b++)v=y[b],x.vertexColors.push(v.clone());x.materialIndex=p.materialIndex+n,l.push(x)}for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,v=p.length;m<v;m++){let g=p[m],y=[];for(let x=0,b=g.length;x<b;x++)y.push(g[x].clone());this.faceVertexUvs[d].push(y)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},n=[],i=[],s=Math.pow(10,e);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],h=Math.round(u.x*s)+"_"+Math.round(u.y*s)+"_"+Math.round(u.z*s);t[h]===void 0?(t[h]=l,n.push(this.vertices[l]),i[l]=n.length-1):i[l]=i[t[h]]}let o=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=i[u.a],u.b=i[u.b],u.c=i[u.c];let h=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(h[d]===h[(d+1)%3]){o.push(l);break}}for(let l=o.length-1;l>=0;l--){let c=o[l];this.faces.splice(c,1);for(let u=0,h=this.faceVertexUvs.length;u<h;u++)this.faceVertexUvs[u].splice(c,1)}let a=this.vertices.length-n.length;return this.vertices=n,a}setFromPoints(e){this.vertices=[];for(let t=0,n=e.length;t<n;t++){let i=e[t];this.vertices.push(new M(i.x,i.y,i.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let l=0;l<t;l++)e[l]._id=l;function n(l,c){return l.materialIndex-c.materialIndex}e.sort(n);let i=this.faceVertexUvs[0],s=this.faceVertexUvs[1],o,a;i&&i.length===t&&(o=[]),s&&s.length===t&&(a=[]);for(let l=0;l<t;l++){let c=e[l]._id;o&&o.push(i[c]),a&&a.push(s[c])}o&&(this.faceVertexUvs[0]=o),a&&(this.faceVertexUvs[1]=a)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),this.parameters!==void 0){let p=this.parameters;for(let m in p)p[m]!==void 0&&(e[m]=p[m]);return e}let t=[];for(let p=0;p<this.vertices.length;p++){let m=this.vertices[p];t.push(m.x,m.y,m.z)}let n=[],i=[],s={},o=[],a={},l=[],c={};for(let p=0;p<this.faces.length;p++){let m=this.faces[p],v=!0,g=!1,y=this.faceVertexUvs[0][p]!==void 0,x=m.normal.length()>0,b=m.vertexNormals.length>0,w=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,S=0;if(S=u(S,0,0),S=u(S,1,v),S=u(S,2,g),S=u(S,3,y),S=u(S,4,x),S=u(S,5,b),S=u(S,6,w),S=u(S,7,_),n.push(S),n.push(m.a,m.b,m.c),n.push(m.materialIndex),y){let A=this.faceVertexUvs[0][p];n.push(f(A[0]),f(A[1]),f(A[2]))}if(x&&n.push(h(m.normal)),b){let A=m.vertexNormals;n.push(h(A[0]),h(A[1]),h(A[2]))}if(w&&n.push(d(m.color)),_){let A=m.vertexColors;n.push(d(A[0]),d(A[1]),d(A[2]))}}function u(p,m,v){return v?p|1<<m:p&~(1<<m)}function h(p){let m=p.x.toString()+p.y.toString()+p.z.toString();return s[m]!==void 0||(s[m]=i.length/3,i.push(p.x,p.y,p.z)),s[m]}function d(p){let m=p.r.toString()+p.g.toString()+p.b.toString();return a[m]!==void 0||(a[m]=o.length,o.push(p.getHex())),a[m]}function f(p){let m=p.x.toString()+p.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(p.x,p.y)),c[m]}return e.data={},e.data.vertices=t,e.data.normals=i,o.length>0&&(e.data.colors=o),l.length>0&&(e.data.uvs=[l]),e.data.faces=n,e}clone(){return new Co().copy(this)}copy(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;let t=e.vertices;for(let d=0,f=t.length;d<f;d++)this.vertices.push(t[d].clone());let n=e.colors;for(let d=0,f=n.length;d<f;d++)this.colors.push(n[d].clone());let i=e.faces;for(let d=0,f=i.length;d<f;d++)this.faces.push(i[d].clone());for(let d=0,f=e.faceVertexUvs.length;d<f;d++){let p=e.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,v=p.length;m<v;m++){let g=p[m],y=[];for(let x=0,b=g.length;x<b;x++){let w=g[x];y.push(w.clone())}this.faceVertexUvs[d].push(y)}}let s=e.morphTargets;for(let d=0,f=s.length;d<f;d++){let p={};if(p.name=s[d].name,s[d].vertices!==void 0){p.vertices=[];for(let m=0,v=s[d].vertices.length;m<v;m++)p.vertices.push(s[d].vertices[m].clone())}if(s[d].normals!==void 0){p.normals=[];for(let m=0,v=s[d].normals.length;m<v;m++)p.normals.push(s[d].normals[m].clone())}this.morphTargets.push(p)}let o=e.morphNormals;for(let d=0,f=o.length;d<f;d++){let p={};if(o[d].vertexNormals!==void 0){p.vertexNormals=[];for(let m=0,v=o[d].vertexNormals.length;m<v;m++){let g=o[d].vertexNormals[m],y={};y.a=g.a.clone(),y.b=g.b.clone(),y.c=g.c.clone(),p.vertexNormals.push(y)}}if(o[d].faceNormals!==void 0){p.faceNormals=[];for(let m=0,v=o[d].faceNormals.length;m<v;m++)p.faceNormals.push(o[d].faceNormals[m].clone())}this.morphNormals.push(p)}let a=e.skinWeights;for(let d=0,f=a.length;d<f;d++)this.skinWeights.push(a[d].clone());let l=e.skinIndices;for(let d=0,f=l.length;d<f;d++)this.skinIndices.push(l[d].clone());let c=e.lineDistances;for(let d=0,f=c.length;d<f;d++)this.lineDistances.push(c[d]);let u=e.boundingBox;u!==null&&(this.boundingBox=u.clone());let h=e.boundingSphere;return h!==null&&(this.boundingSphere=h.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new $x().fromGeometry(this),t=new we,n=new Float32Array(e.vertices.length*3);if(t.setAttribute("position",new Re(n,3).copyVector3sArray(e.vertices)),e.normals.length>0){let i=new Float32Array(e.normals.length*3);t.setAttribute("normal",new Re(i,3).copyVector3sArray(e.normals))}if(e.colors.length>0){let i=new Float32Array(e.colors.length*3);t.setAttribute("color",new Re(i,3).copyColorsArray(e.colors))}if(e.uvs.length>0){let i=new Float32Array(e.uvs.length*2);t.setAttribute("uv",new Re(i,2).copyVector2sArray(e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(e.uvs2.length*2);t.setAttribute("uv2",new Re(i,2).copyVector2sArray(e.uvs2))}t.groups=e.groups;for(let i in e.morphTargets){let s=[],o=e.morphTargets[i];for(let a=0,l=o.length;a<l;a++){let c=o[a],u=new ge(c.data.length*3,3);u.name=c.name,s.push(u.copyVector3sArray(c.data))}t.morphAttributes[i]=s}if(e.skinIndices.length>0){let i=new ge(e.skinIndices.length*4,4);t.setAttribute("skinIndex",i.copyVector4sArray(e.skinIndices))}if(e.skinWeights.length>0){let i=new ge(e.skinWeights.length*4,4);t.setAttribute("skinWeight",i.copyVector4sArray(e.skinWeights))}return e.boundingSphere!==null&&(t.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new we,n=e.geometry;if(e.isPoints||e.isLine){let i=new ge(n.vertices.length*3,3),s=new ge(n.colors.length*3,3);if(t.setAttribute("position",i.copyVector3sArray(n.vertices)),t.setAttribute("color",s.copyColorsArray(n.colors)),n.lineDistances&&n.lineDistances.length===n.vertices.length){let o=new ge(n.lineDistances.length,1);t.setAttribute("lineDistance",o.copyArray(n.lineDistances))}n.boundingSphere!==null&&(t.boundingSphere=n.boundingSphere.clone()),n.boundingBox!==null&&(t.boundingBox=n.boundingBox.clone())}else e.isMesh&&(t=n.toBufferGeometry());return t}};Co.prototype.isGeometry=!0;var $x=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(e){let t=[],n,i,s,o=e.faces;for(i=0;i<o.length;i++){let a=o[i];a.materialIndex!==s&&(s=a.materialIndex,n!==void 0&&(n.count=i*3-n.start,t.push(n)),n={start:i*3,materialIndex:s})}n!==void 0&&(n.count=i*3-n.start,t.push(n)),this.groups=t}fromGeometry(e){let t=e.faces,n=e.vertices,i=e.faceVertexUvs,s=i[0]&&i[0].length>0,o=i[1]&&i[1].length>0,a=e.morphTargets,l=a.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:a[g].name,data:[]};this.morphTargets.position=c}let u=e.morphNormals,h=u.length,d;if(h>0){d=[];for(let g=0;g<h;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let f=e.skinIndices,p=e.skinWeights,m=f.length===n.length,v=p.length===n.length;n.length>0&&t.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<t.length;g++){let y=t[g];this.vertices.push(n[y.a],n[y.b],n[y.c]);let x=y.vertexNormals;if(x.length===3)this.normals.push(x[0],x[1],x[2]);else{let w=y.normal;this.normals.push(w,w,w)}let b=y.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let w=y.color;this.colors.push(w,w,w)}if(s===!0){let w=i[0][g];w!==void 0?this.uvs.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new O,new O,new O))}if(o===!0){let w=i[1][g];w!==void 0?this.uvs2.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new O,new O,new O))}for(let w=0;w<l;w++){let _=a[w].vertices;c[w].data.push(_[y.a],_[y.b],_[y.c])}for(let w=0;w<h;w++){let _=u[w].vertexNormals[g];d[w].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[y.a],f[y.b],f[y.c]),v&&this.skinWeights.push(p[y.a],p[y.b],p[y.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),this}},Bc=class{constructor(e,t,n,i,s,o=0){this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new M,this.vertexNormals=Array.isArray(i)?i:[],this.color=s&&s.isColor?s:new fe,this.vertexColors=Array.isArray(s)?s:[],this.materialIndex=o}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,n=e.vertexNormals.length;t<n;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,n=e.vertexColors.length;t<n;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}};var qL=["a","b","c"];function YL(r,e){switch(e){case"c":return r.c;case"b":return r.b;case"a":default:return r.a}}function ym(r,e,t){let n=Math.min(r,e),i=Math.max(r,e),s=n+"_"+i;return t.get(s)}function vm(r,e,t,n,i,s){let o=Math.min(r,e),a=Math.max(r,e),l=o+"_"+a,c;if(n.has(l))c=n.get(l);else{let u=t[o],h=t[a];c={a:u,b:h,newEdge:null,faces:[]},n.set(l,c)}c.faces.push(i),s[r].edges.push(c),s[e].edges.push(c)}function KL(r,e,t,n){let i,s,o;for(i=0,s=r.length;i<s;i++)t[i]={edges:[]};for(i=0,s=e.length;i<s;i++)o=e[i],vm(o.a,o.b,r,n,o,t),vm(o.b,o.c,r,n,o,t),vm(o.c,o.a,r,n,o,t)}function Gh(r,e,t,n,i){r.push(new Bc(e,t,n,void 0,void 0,i))}function el(r,e){return Math.abs(e-r)/2+Math.min(r,e)}function Uh(r,e,t,n){r.push([e.clone(),t.clone(),n.clone()])}var xm=class{constructor(e=1){this.subdivisions=e}modify(e){e instanceof we?e=new Co().fromBufferGeometry(e):e=e.clone(),e.mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new M,n,i,s,o,a,l=e.vertices,c=e.faces,u=e.faceVertexUvs[0],h=u!==void 0&&u.length>0,d=[],f=new Map;KL(l,c,d,f);let p=[],m,v,g,y,x,b,w;for(let ae of Array.from(f.keys())){for(v=f.get(ae),g=new M,x=3/8,b=1/8,w=v.faces.length,w!=2&&(x=.5,b=0,w!=1),g.addVectors(v.a,v.b).multiplyScalar(x),t.set(0,0,0),o=0;o<w;o++){for(y=v.faces[o],a=0;a<3&&(m=l[YL(y,qL[a])],!(m!==v.a&&m!==v.b));a++);m&&t.add(m)}t.multiplyScalar(b),g.add(t),v.newEdge=p.length,p.push(g)}let _,S,A,T,L,C,U,P=[];for(i=0,s=l.length;i<s;i++){for(C=l[i],L=d[i].edges,n=L.length,n==3?_=3/16:n>3&&(_=3/(8*n)),S=1-n*Number(_),A=_,n<=2&&(n==2?(S=3/4,A=1/8):n==1||n==0),U=C.clone().multiplyScalar(S),t.set(0,0,0),o=0;o<n;o++)T=L[o],m=T.a!==C?T.a:T.b,t.add(m);t.multiplyScalar(Number(A)),U.add(t),P.push(U)}let R=P.concat(p),G=P.length,B,j,ne,le=[],W=[],z,D,K,q,ee=new O,V=new O,de=new O;for(i=0,s=c.length;i<s;i++)y=c[i],B=Number(ym(y.a,y.b,f).newEdge)+G,j=Number(ym(y.b,y.c,f).newEdge)+G,ne=Number(ym(y.c,y.a,f).newEdge)+G,Gh(le,B,j,ne,y.materialIndex),Gh(le,y.a,B,ne,y.materialIndex),Gh(le,y.b,j,B,y.materialIndex),Gh(le,y.c,ne,j,y.materialIndex),h&&(z=u[i],D=z[0],K=z[1],q=z[2],ee.set(el(D.x,K.x),el(D.y,K.y)),V.set(el(K.x,q.x),el(K.y,q.y)),de.set(el(D.x,q.x),el(D.y,q.y)),Uh(W,ee,V,de),Uh(W,D,ee,de),Uh(W,K,V,ee),Uh(W,q,de,V));e.vertices=R,e.faces=le,h&&(e.faceVertexUvs[0]=W)}};var yn=new M,Lo=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var s,o;let t=(o=(s=r.geometry)!=null?s:e==null?void 0:e.geometry)!=null?o:new we().copy(new jn(100,100,100)),n;e===void 0?(t.computeBoundingBox(),t.boundingBox.getSize(yn),n={width:yn.x,height:yn.y,depth:yn.z,subdivisions:0}):n=e.parameters;let i=Ue(Ue({},n),r.parameters);return{parameters:{width:Math.abs(i.width),height:Math.abs(i.height),depth:Math.abs(i.depth),subdivisions:Math.abs(i.subdivisions)},geometry:t}}static build(r){var l;let{width:e,height:t,depth:n,subdivisions:i}=r.parameters,s=(l=r.geometry)!=null?l:new we().copy(new jn(100,100,100)),o=s.userData.parameters;o===void 0?(s.computeBoundingBox(),s.boundingBox.getSize(yn)):yn.set(o.width,o.height,o.depth),(e!==yn.x||t!==yn.y||n!==yn.z)&&s.scale(yn.x===0?1:e/yn.x,yn.y===0?1:t/yn.y,yn.z===0?1:n/yn.z);let a=s.originalGeometry;return i>0?(a===void 0||(o==null?void 0:o.subdivisions)>i)&&(a===void 0&&(a=s),s=new xm(i).modify(a).toBufferGeometry()):(a!==void 0&&(s=a),a=void 0),a!==void 0&&Object.assign(s,{originalGeometry:a}),delete r.geometry,Object.assign(s,{userData:tt(Ue({},r),{type:"NonParametricGeometry"})})}static loadFromUrl(r,e,t){new Ia(t).load(r,i=>{let s=this.normalizeInputs({geometry:i});i.boundingBox.getSize(yn);let o=100/yn.x;Object.assign(s.parameters,{width:100,height:yn.y*o,depth:yn.z*o}),e(this.build(s))})}};var e0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o,a;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((s=t.surfaceMaxCount)!=null?s:t.cornerRadius>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(a=t.depth)!=null?a:0)})}}static build(r){let{width:e,height:t,spikes:n,cornerRadius:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a,surfaceMaxCount:l}=r.parameters,c=r.shape,u=e*.5,h=t*.5,d=0,f=0,p=2*Math.PI/n;for(let v=0;v<n;v++){let g=p*v,y=d+Math.sin(g)*u,x=f+Math.cos(g)*h;c.addPoint(c.createPoint(y,x))}c.isClosed=!0;for(let v=0,g=c.points.length;v<g;v++)c.points[v].roundness=i;c.roundness=i,c.update();let m=Pn.create({shape:c,parameters:{surfaceMaxCount:l,roundness:i,depth:s,extrudeBevelSize:o,extrudeBevelSegments:a}});return Object.assign(m,{userData:tt(Ue({},r),{type:"PolygonGeometry"})})}};var t0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,heightSegments:s,openEnded:o,cornerRadius:a,cornerSegments:l}=r.parameters,c=new n0(e*.5,t,i,s,o,a,l);return c.scale(1,1,n/e),Object.assign(c,{userData:tt(Ue({},r),{type:"PyramidGeometry"})})}};function Oc(r,e,t){t.x=r.x*e.x,t.y=r.y,t.z=r.x*e.y}function bm(r,e,t,n,i,s){let o=e.clone().sub(r),a=t.clone().sub(r),l=o.angleTo(a);if(o.normalize(),a.normalize(),n===i){let c=o.add(a).normalize();s.copy(r).addScaledVector(c,n/Math.sin(l/2))}else{let c=o.angleTo(a);s.copy(r),s.addScaledVector(o,i/Math.sin(c)),s.addScaledVector(a,n/Math.sin(c))}}function QL(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.projectOnVector(i),n.add(e)}var n0=class extends we{constructor(e=.5,t=1,n=4,i=1,s=!1,o=0,a=4){super();n=Math.floor(Math.max(3,n)),i=Math.floor(i),a=Math.floor(a);let l=[],c=[],u=[],h=[],d=0,f=t/2,p=Math.PI/n,m=e*Math.cos(Math.PI/n),v=2*Math.PI/n,g=(n-2)*Math.PI/n,y=Math.PI-g,x=new M(0,-f,0),b=new M(0,f,0),w=new O(e,-f),_=new O(m,-f),S=new O(0,b.y).sub(_),A=new O(0,b.y).sub(w),T=new O(S.y,-S.x).normalize(),L=new O(A.y,-A.x).normalize(),U=e*Math.cos(Math.PI/n)*Math.tan((Math.PI-S.angle())/2)-1e-8;o=Math.min(o,U);let P;{let W=new M(T.x,T.y,0),z=new M(Math.cos(v)*W.x,W.y,Math.sin(v)*W.x);P=W.angleTo(z)}let R=o/Math.tan((Math.PI-S.angle())/2),G=o/Math.tan((Math.PI-P)/2),B=new M;if(!s){c.push(x.x,x.y,x.z),u.push(0,-1,0),h.push(0,0);let W=d++,z=[],D=w.clone(),K=R/Math.cos(Math.PI/n);D.x-=K;for(let q=0;q<n;q++){let ee=q/n*Math.PI*2+p,V=new O(Math.sin(ee),Math.cos(ee));Oc(D,V,B),c.push(B.x,B.y,B.z),u.push(0,-1,0),h.push(0,0),z.push(d++)}for(let q=0;q<z.length;q++)l.push(z[q],W,z[(q+1)%z.length])}let j=[];{let W=new M,z=new M,D=new M,K=new M,q=new M,ee=new M;for(let V=0;V<n;V++){let de=V/n*Math.PI*2+p,ae=(V+.5)/n*Math.PI*2+p,te=(V+1)/n*Math.PI*2+p,X=new O(Math.sin(de),Math.cos(de)),se=new O(Math.sin(ae),Math.cos(ae)),$=new O(Math.sin(te),Math.cos(te));Oc(w,X,z),Oc(w,$,D),Oc(T,se,W),bm(b,z,D,G,G,K),c.push(K.x,K.y,K.z),bm(z,b,D,G,R,q),c.push(q.x,q.y,q.z),bm(D,z,b,R,G,ee),c.push(ee.x,ee.y,ee.z),u.push(W.x,W.y,W.z),u.push(W.x,W.y,W.z),u.push(W.x,W.y,W.z),h.push(0,0),h.push(0,0),h.push(0,0);let H=d++,Q=d++,ce=d++;if(l.push(H,Q,ce),o>0){{let E=z.clone().add(D).multiplyScalar(.5),Y=b.clone().sub(E).normalize(),ye=x.clone().sub(E).normalize().add(Y).normalize().multiplyScalar(-1),pe=ee.clone().sub(q);ne(E,pe,ye,S.angle())}let ie,N;{let E=new M;Oc(L,$,E);let Y=ee.clone().add(K).multiplyScalar(.5);Y=QL(Y,D,b);let re=ee.clone().sub(K);[ie,N]=ne(Y,re,E,P,K.y)}{let E=ie,Y=E.clone().setY(0).normalize(),re=new M(0,-1,0),ye=Y.clone().cross(re);le(E,Y,re,ye)}j.concat(N);{let E=S.angle(),Y=Math.PI-E,re=b.clone();re.y-=o/Math.sin(E-Math.PI/2);let ye=new M,pe=[];for(let ve=0;ve<a;ve++){let Fe=[],Ce=Math.PI/2-Y*ve/a,J=Math.cos(Ce),xe=Math.sin(Ce),he=ae;for(let Ne=0;Ne<=ve;Ne++){let Be=Math.cos(he),ke=Math.sin(he);W.x=J*ke,W.y=xe,W.z=J*Be,ye.copy(re).addScaledVector(W,o),c.push(ye.x,ye.y,ye.z),u.push(W.x,W.y,W.z),h.push(0,0),Fe.push(d++),he+=Math.PI*2/ve/n}pe.push(Fe)}N.reverse(),pe.push(N);let Ie=pe.length-1;for(let ve=0;ve<Ie;ve++){let Fe=pe[ve],Ce=pe[ve+1],J=Fe.length-1;l.push(Ce[1],Fe[0],Ce[0]);for(let xe=1;xe<=J;xe++)l.push(Fe[xe],Fe[xe-1],Ce[xe]),l.push(Ce[xe+1],Fe[xe],Ce[xe])}}}}}this.setIndex(l),this.setAttribute("position",new ge(c,3)),this.setAttribute("normal",new ge(u,3)),this.setAttribute("uv",new ge(h,2));function ne(W,z,D,K,q){let ee=-K/2,V=(Math.PI-K)/2,de=z.clone().normalize().cross(D);W.addScaledVector(D,-o/Math.sin(V));let ae=new M,te=new M,X=1,se=d,$=[];for(let H=0;H<=a;H++){let Q=ee+H/a*K;te.set(0,0,0),te.addScaledVector(de,Math.sin(Q)),te.addScaledVector(D,Math.cos(Q));for(let ce=0;ce<=X;ce++){let ie=ce/X-.5;if(ae.copy(W),ae.addScaledVector(z,ie),ae.addScaledVector(te,o),q!=null){let N=Math.max(0,ae.y-q);ae.addScaledVector(z,-N/z.y)}c.push(ae.x,ae.y,ae.z),u.push(te.x,te.y,te.z),h.push(0,0),ce===0&&$.push(d),d++}}for(let H=0;H<a;H++)for(let Q=0;Q<X;Q++){let ce=se+Q+(X+1)*H,ie=ce+(X+1),N=ie+1,E=ce+1;l.push(ce,ie,E),l.push(ie,N,E)}return[W.clone().addScaledVector(z,.5),$]}function le(W,z,D,K){let q=Math.PI/2,ee=A.angle()-q,V=[],de=new M,ae=new M;for(let X=0;X<=a;X++){let se=[],$=X/a;for(let H=0;H<=X;H++){let ce=((X?H/X:0)-.5)*y,ie=Math.cos(ce),N=Math.sin(ce),E=Math.atan(Math.tan(ee)*ie),Y=(q+E)*$,re=Math.cos(Y),ye=Math.sin(Y);de.set(0,0,0),de.addScaledVector(z,ye*ie),de.addScaledVector(D,re),de.addScaledVector(K,ye*N),ae.copy(W).addScaledVector(de,o),c.push(ae.x,ae.y,ae.z),u.push(de.x,de.y,de.z),h.push(0,0),se.push(d++)}V.push(se)}let te=V.length-1;for(let X=0;X<te;X++){let se=V[X],$=V[X+1],H=se.length-1;l.push(se[0],$[1],$[0]);for(let Q=1;Q<=H;Q++)l.push(se[Q-1],se[Q],$[Q]),l.push(se[Q],$[Q+1],$[Q])}}}};var kh=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var o,a,l,c,u;let t=Object.assign({},(o=e==null?void 0:e.parameters)!=null?o:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters),n=Object.assign((a=e==null?void 0:e.ui)!=null?a:{enabledIndieCorners:!1},r.ui),i=t.cornerRadius.reduce((h,d)=>h+d,0);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((l=t.surfaceMaxCount)!=null?l:i>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((c=t.height)!=null?c:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(u=t.depth)!=null?u:0)}),ui:n}}static build(r){let e=r.shape,{width:t,height:n,cornerRadius:i,cornerType:s,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l,surfaceMaxCount:c}=r.parameters,u={x:t*.5,y:n*.5},h={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function f(w,_,S){return _>t&&S>n?Math.min(w*t/_,w*n/S):_>t?w*t/_:S>n?w*n/S:w}let p=[];p[0]=i[0]===0?0:f(i[0],i[0]+i[3],i[0]+i[1]),p[1]=i[1]===0?0:f(i[1],i[1]+i[2],i[1]+i[0]),p[2]=i[2]===0?0:f(i[2],i[2]+i[1],i[2]+i[3]),p[3]=i[3]===0?0:f(i[3],i[3]+i[0],i[3]+i[2]);let m=h.x,v=d.x,g=d.y,y=h.y;e.addPoint(e.createPoint(m,g)),e.addPoint(e.createPoint(v,g)),e.addPoint(e.createPoint(v,y)),e.addPoint(e.createPoint(m,y)),e.isClosed=!0;let x=!0;for(let w=0,_=e.points.length;w<_;w++)e.points[w].roundness=p[w],w>0&&p[w]!==p[w-1]&&(x=!1);x&&(e.roundness=p[0]),e.useCubicForRoundedCorners=s!==1,e.update();let b=Pn.create({shape:e,parameters:{surfaceMaxCount:c,depth:o,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(b,{userData:tt(Ue({},r),{type:"RectangleGeometry"})})}};var i0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:t.width)})}}static build(r){let{width:e=100,height:t=e,depth:n=e,widthSegments:i=64,heightSegments:s=64,phiStart:o,phiLength:a,thetaStart:l,thetaLength:c}=r.parameters,u=new Ji(.5*e,i,s,o,a,l,c);return u.scale(1,t/e,n/e),Object.assign(u,{userData:tt(Ue({},r),{type:"SphereGeometry"})})}};var r0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o,a;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((s=t.surfaceMaxCount)!=null?s:t.cornerRadius>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(a=t.depth)!=null?a:0)})}}static build(r){let{width:e,height:t,innerRadiusPercent:n,spikes:i,cornerRadius:s,angle:o,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c,surfaceMaxCount:u}=r.parameters,h=r.shape,d=e*.5,f=t*.5,p=0,m=0,v=o*Math.PI/360/i,g=Math.PI/2*3*-1,y=d*n/100,x=f*n/100;if(i==3&&n==50){v=2*Math.PI/i;for(let w=0;w<i;w++){let _=v*w,S=p+Math.sin(_)*d,A=m+Math.cos(_)*f;h.addPoint(h.createPoint(S,A))}}else for(let w=0;w<i;w++){let _=p+Math.cos(g)*d,S=m+Math.sin(g)*f;h.addPoint(h.createPoint(_,S)),g+=v,_=p+Math.cos(g)*y,S=m+Math.sin(g)*x,w<=i,h.addPoint(h.createPoint(_,S)),g+=v}h.isClosed=!0;for(let w=0,_=h.points.length;w<_;w++)h.points[w].roundness=s;h.roundness=s,h.update();let b=Pn.create({shape:h,parameters:{surfaceMaxCount:u,roundness:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:tt(Ue({},r),{type:"StarGeometry"})})}};var s0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,depth:0},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:0)})}}static build(r){let{width:e,height:t}=r.parameters,n=new ls(e,t);return Object.assign(n,{userData:tt(Ue({},r),{type:"TextFrameGeometry"})})}};var o0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var o,a,l;let t=Object.assign({},(o=e==null?void 0:e.parameters)!=null?o:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},r.parameters),n=Math.abs(t.width),i=Math.abs((a=t.height)!=null?a:t.width),s=Math.abs((l=t.depth)!=null?l:t.width*.25);return{parameters:Object.assign(t,{width:n,height:i,depth:s})}}static build(r){let{width:e,height:t,depth:n,radialSegments:i,tubularSegments:s,arc:o,cornerRadius:a,cornerSegments:l}=r.parameters,c=ZL(e,t,n,e*.5,o,s,0,0,i,a,l);return c.scale(1,t/e,1),Object.assign(c,{userData:tt(Ue({},r),{type:"TorusGeometry"})})}};function ZL(r,e,t,n,i,s,o,a,l,c,u){return[e,t]=[t,e],o=e/2,i/=2*Math.PI,i==1&&(c=0),new Oh(!0,r,e,t,n,i,s,o,a,l,c,u)}var a0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var n,i,s;let t=Object.assign({},(n=e==null?void 0:e.parameters)!=null?n:{width:100,depth:1,tube:50,tubularSegments:64,radialSegments:32,p:2,q:3},r.parameters);return{parameters:Object.assign(t,{width:Math.abs(t.width),height:Math.abs((i=t.height)!=null?i:t.width),depth:Math.abs((s=t.depth)!=null?s:1)})}}static build(r){let{width:e,tube:t,tubularSegments:n,radialSegments:i,p:s,q:o}=r.parameters,a=e*.5-t,l=new ho(a,t,n,i,s,o);return Object.assign(l,{userData:tt(Ue({},r),{type:"TorusKnotGeometry"})})}};var l0=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var i,s,o,a;let t=Object.assign({},(i=e==null?void 0:e.parameters)!=null?i:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},r.parameters);return{shape:r.shape&&r.shape instanceof Lt?r.shape:new Lt,parameters:Object.assign(t,{surfaceMaxCount:((s=t.surfaceMaxCount)!=null?s:t.cornerRadius>0)?1e3:100,width:Math.abs(t.width),height:Math.abs((o=t.height)!=null?o:t.width*(t.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(t.depth!==void 0&&t.depth===0&&t.extrudeDepth>0?t.extrudeDepth:(a=t.depth)!=null?a:0)})}}static build(r){let{width:e=100,height:t,cornerRadius:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o,isRect:a,surfaceMaxCount:l}=r.parameters,c=r.shape,u=e*.5,h=t*.5;a?(c.addPoint(c.createPoint(-u,h)),c.addPoint(c.createPoint(u,-h)),c.addPoint(c.createPoint(-u,-h))):(c.addPoint(c.createPoint(0,h)),c.addPoint(c.createPoint(u,-h)),c.addPoint(c.createPoint(-u,-h))),c.isClosed=!0;for(let f=0,p=c.points.length;f<p;f++)c.points[f].roundness=n;c.roundness=n,c.update();let d=Pn.create({shape:c,parameters:{surfaceMaxCount:l,roundness:n,depth:i,extrudeBevelSize:s,extrudeBevelSegments:o}});return Object.assign(d,{userData:tt(Ue({},r),{type:"TriangleGeometry"})})}};var tl=class{static computeTangents(e){e.computeTangents(),console.warn("THREE.BufferGeometryUtils: .computeTangents() has been removed. Use BufferGeometry.computeTangents() instead.")}static mergeBufferGeometries(e,t=!1){let n=e[0].index!==null,i=new Set(Object.keys(e[0].attributes)),s=new Set(Object.keys(e[0].morphAttributes)),o={},a={},l=e[0].morphTargetsRelative,c=new we,u=0;for(let h=0;h<e.length;++h){let d=e[h],f=0;if(n!==(d.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let p in d.attributes){if(!i.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+'. All geometries must have compatible attributes; make sure "'+p+'" attribute exists among all geometries, or in none of them.'),null;o[p]===void 0&&(o[p]=[]),o[p].push(d.attributes[p]),f++}if(f!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". Make sure all geometries have the same number of attributes."),null;if(l!==d.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let p in d.morphAttributes){if(!s.has(p))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". .morphAttributes must be consistent throughout all geometries."),null;a[p]===void 0&&(a[p]=[]),a[p].push(d.morphAttributes[p])}if(c.userData.mergedUserData=c.userData.mergedUserData||[],c.userData.mergedUserData.push(d.userData),t){let p;if(n)p=d.index.count;else if(d.attributes.position!==void 0)p=d.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+h+". The geometry must have either an index or a position attribute"),null;c.addGroup(u,p,h),u+=p}}if(n){let h=0,d=[];for(let f=0;f<e.length;++f){let p=e[f].index;for(let m=0;m<p.count;++m)d.push(p.getX(m)+h);h+=e[f].attributes.position.count}c.setIndex(d)}for(let h in o){let d=this.mergeBufferAttributes(o[h]);if(!d)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+h+" attribute."),null;c.setAttribute(h,d)}for(let h in a){let d=a[h][0].length;if(d===0)break;c.morphAttributes=c.morphAttributes||{},c.morphAttributes[h]=[];for(let f=0;f<d;++f){let p=[];for(let v=0;v<a[h].length;++v)p.push(a[h][v][f]);let m=this.mergeBufferAttributes(p);if(!m)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+h+" morphAttribute."),null;c.morphAttributes[h].push(m)}}return c}static mergeBufferAttributes(e){let t,n,i,s=0;for(let l=0;l<e.length;++l){let c=e[l];if(c.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(t===void 0&&(t=c.array.constructor),t!==c.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(n===void 0&&(n=c.itemSize),n!==c.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=c.normalized),i!==c.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;s+=c.array.length}let o=new t(s),a=0;for(let l=0;l<e.length;++l)o.set(e[l].array,a),a+=e[l].array.length;return new Re(o,n,i)}static interleaveAttributes(e){let t,n=0,i=0;for(let u=0,h=e.length;u<h;++u){let d=e[u];if(t===void 0&&(t=d.array.constructor),t!==d.array.constructor)return console.error("AttributeBuffers of different types cannot be interleaved"),null;n+=d.array.length,i+=d.itemSize}let s=new Vi(new t(n),i),o=0,a=[],l=["getX","getY","getZ","getW"],c=["setX","setY","setZ","setW"];for(let u=0,h=e.length;u<h;u++){let d=e[u],f=d.itemSize,p=d.count,m=new Ti(s,f,o,d.normalized);a.push(m),o+=f;for(let v=0;v<p;v++)for(let g=0;g<f;g++)m[c[g]](v,d[l[g]](v))}return a}static estimateBytesUsed(e){let t=0;for(let i in e.attributes){let s=e.getAttribute(i);t+=s.count*s.itemSize*s.array.BYTES_PER_ELEMENT}let n=e.getIndex();return t+=n?n.count*n.itemSize*n.array.BYTES_PER_ELEMENT:0,t}static mergeVertices(e,t=1e-4){t=Math.max(t,Number.EPSILON);let n={},i=e.getIndex(),s=e.getAttribute("position"),o=i?i.count:s.count,a=0,l=Object.keys(e.attributes),c={},u={},h=[],d=["getX","getY","getZ","getW"];for(let v=0,g=l.length;v<g;v++){let y=l[v];c[y]=[];let x=e.morphAttributes[y];x&&(u[y]=new Array(x.length).fill().map(()=>[]))}let f=Math.log10(1/t),p=Math.pow(10,f);for(let v=0;v<o;v++){let g=i?i.getX(v):v,y="";for(let x=0,b=l.length;x<b;x++){let w=l[x],_=e.getAttribute(w),S=_.itemSize;for(let A=0;A<S;A++)y+=`${~~(_[d[A]](g)*p)},`}if(y in n)h.push(n[y]);else{for(let x=0,b=l.length;x<b;x++){let w=l[x],_=e.getAttribute(w),S=e.morphAttributes[w],A=_.itemSize,T=c[w],L=u[w];for(let C=0;C<A;C++){let U=d[C];if(T.push(_[U](g)),S)for(let P=0,R=S.length;P<R;P++)L[P].push(S[P][U](g))}}n[y]=a,h.push(a),a++}}let m=e.clone();for(let v=0,g=l.length;v<g;v++){let y=l[v],x=e.getAttribute(y),b=new x.array.constructor(c[y]),w=new Re(b,x.itemSize,x.normalized);if(m.setAttribute(y,w),y in u)for(let _=0;_<u[y].length;_++){let S=e.morphAttributes[y][_],A=new S.array.constructor(u[y][_]),T=new Re(A,S.itemSize,S.normalized);m.morphAttributes[y][_]=T}}return m.setIndex(h),m}static toTrianglesDrawMode(e,t){if(t===ef)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t===Ko||t===Su){let n=e.getIndex();if(n===null){let a=[],l=e.getAttribute("position");if(l!==void 0){for(let c=0;c<l.count;c++)a.push(c);e.setIndex(a),n=e.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e}let i=n.count-2,s=[];if(t===Ko)for(let a=1;a<=i;a++)s.push(n.getX(0)),s.push(n.getX(a)),s.push(n.getX(a+1));else for(let a=0;a<i;a++)a%2==0?(s.push(n.getX(a)),s.push(n.getX(a+1)),s.push(n.getX(a+2))):(s.push(n.getX(a+2)),s.push(n.getX(a+1)),s.push(n.getX(a)));s.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let o=e.clone();return o.setIndex(s),o.clearGroups(),o}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e}static computeMorphedAttributes(e){if(e.geometry.isBufferGeometry!==!0)return console.error("THREE.BufferGeometryUtils: Geometry is not of type BufferGeometry."),null;let t=new M,n=new M,i=new M,s=new M,o=new M,a=new M,l=new M,c=new M,u=new M;function h(z,D,K,q,ee,V,de,ae,te){t.fromBufferAttribute(K,V),n.fromBufferAttribute(K,de),i.fromBufferAttribute(K,ae);let X=z.morphTargetInfluences;if(D.morphTargets&&q&&X){l.set(0,0,0),c.set(0,0,0),u.set(0,0,0);for(let se=0,$=q.length;se<$;se++){let H=X[se],Q=q[se];H!==0&&(s.fromBufferAttribute(Q,V),o.fromBufferAttribute(Q,de),a.fromBufferAttribute(Q,ae),ee?(l.addScaledVector(s,H),c.addScaledVector(o,H),u.addScaledVector(a,H)):(l.addScaledVector(s.sub(t),H),c.addScaledVector(o.sub(n),H),u.addScaledVector(a.sub(i),H)))}t.add(l),n.add(c),i.add(u)}z.isSkinnedMesh&&(z.boneTransform(V,t),z.boneTransform(de,n),z.boneTransform(ae,i)),te[V*3+0]=t.x,te[V*3+1]=t.y,te[V*3+2]=t.z,te[de*3+0]=n.x,te[de*3+1]=n.y,te[de*3+2]=n.z,te[ae*3+0]=i.x,te[ae*3+1]=i.y,te[ae*3+2]=i.z}let d=e.geometry,f=e.material,p,m,v,g=d.index,y=d.attributes.position,x=d.morphAttributes.position,b=d.morphTargetsRelative,w=d.attributes.normal,_=d.morphAttributes.position,S=d.groups,A=d.drawRange,T,L,C,U,P,R,G,B,j=new Float32Array(y.count*y.itemSize),ne=new Float32Array(w.count*w.itemSize);if(g!==null)if(Array.isArray(f))for(T=0,C=S.length;T<C;T++)for(P=S[T],R=f[P.materialIndex],G=Math.max(P.start,A.start),B=Math.min(P.start+P.count,A.start+A.count),L=G,U=B;L<U;L+=3)p=g.getX(L),m=g.getX(L+1),v=g.getX(L+2),h(e,R,y,x,b,p,m,v,j),h(e,R,w,_,b,p,m,v,ne);else for(G=Math.max(0,A.start),B=Math.min(g.count,A.start+A.count),T=G,C=B;T<C;T+=3)p=g.getX(T),m=g.getX(T+1),v=g.getX(T+2),h(e,f,y,x,b,p,m,v,j),h(e,f,w,_,b,p,m,v,ne);else if(y!==void 0)if(Array.isArray(f))for(T=0,C=S.length;T<C;T++)for(P=S[T],R=f[P.materialIndex],G=Math.max(P.start,A.start),B=Math.min(P.start+P.count,A.start+A.count),L=G,U=B;L<U;L+=3)p=L,m=L+1,v=L+2,h(e,R,y,x,b,p,m,v,j),h(e,R,w,_,b,p,m,v,ne);else for(G=Math.max(0,A.start),B=Math.min(y.count,A.start+A.count),T=G,C=B;T<C;T+=3)p=T,m=T+1,v=T+2,h(e,f,y,x,b,p,m,v,j),h(e,f,w,_,b,p,m,v,ne);let le=new ge(j,3),W=new ge(ne,3);return{positionAttribute:y,normalAttribute:w,morphedPositionAttribute:le,morphedNormalAttribute:W}}};var $L,c0=new Promise(r=>{$L=r});var ot;c0.then(r=>{ot=r});var Fc=new M,pr=new M,zc=new me;function u0(r,...e){let t=0;for(let s of e)t+=s.length;let n=new r(t),i=0;for(let s of e)n.set(s,i),i+=s.length;return n}var nl,Qn=(nl=class{static create(r){return this.build(this.normalizeInputs(r))}static normalizeInputs(r,e){var a,l;let t=(a=r.geometry)!=null?a:e==null?void 0:e.geometry,{width:n,height:i,depth:s}=t.userData.parameters,o=Ue(Ue({},(l=e==null?void 0:e.parameters)!=null?l:{width:n,height:i,depth:s,subdivisions:1}),r.parameters);return{parameters:tt(Ue({},o),{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth)}),geometry:t,subdivPointer:e==null?void 0:e.subdivPointer,smoothShading:e==null?void 0:e.smoothShading}}static build(r){let e=r.geometry,t=r.geometry.originalGeometry,{width:n,height:i,depth:s,subdivisions:o}=r.parameters,a=e.userData.parameters;Fc.set(a.width,a.height,a.depth),(n!==Fc.x||i!==Fc.y||s!==Fc.z)&&(pr.set(n,i,s).divide(Fc),zc.makeScale(isNaN(pr.x)||pr.x===0?1:pr.x,isNaN(pr.y)||pr.y===0?1:pr.y,isNaN(pr.z)||pr.z===0?1:pr.z),e.applyMatrix4(zc),t?(t.applyMatrix4(zc),t.getAttribute("positionWASM").applyMatrix4(zc)):e.getAttribute("positionWASM").applyMatrix4(zc));let l,c;return t!==void 0?(c=e,l=t):l=e,r.subdivPointer===void 0&&(this.allocate(l),l==null||l.dispose(),l=this.buildLevel(!0,r.smoothShading),l.computeBoundingSphere(),r.subdivPointer=this.activeSubdivPtr,this.getTopologicalMesh(l)),o>0?((o!==(a==null?void 0:a.subdivisions)||t===void 0)&&(r.subdivPointer!==this.activeSubdivPtr&&(this.activeSubdivPtr=r.subdivPointer),c==null||c.dispose(),ot.set_destination_refinement_level(r.subdivPointer,o),c=this.buildLevel(!1,r.smoothShading),c.boundingSphere=l.boundingSphere),e=c,t=l,delete t.userData.parameters):(e=l,c==null||c.dispose(),t=void 0),Object.assign(e,{originalGeometry:t,subdivPointer:this.activeSubdivPtr,userData:{parameters:r.parameters,type:"SubdivGeometry"}})}static allocate(r){var x;let e,t,n,i=[],s=[];if(r.userData.type!=="SubdivGeometry"){let b=tl.mergeVertices(r,(x=this.mergeVerticesToleranceExceptions[r.userData.type])!=null?x:1.1);e=b.attributes.position.array;let w=b.getIndex().array,_=w.length;switch(r.userData.type){case"TorusGeometry":case"TorusKnotGeometry":case"CubeGeometry":t=new Uint32Array(_/3*2),n=new Uint8Array(_/6).fill(4);for(let U=0,P=0;U<_;U+=6)t[P++]=w[U],t[P++]=w[U+1],t[P++]=w[U+4],t[P++]=w[U+5];break;case"SphereGeometry":case"HelixGeometry":case"CylinderGeometry":case"ConeGeometry":let S,A;if(r.userData.type==="SphereGeometry")A=r.parameters.heightSegments,S=r.parameters.widthSegments;else if(r.userData.type==="CylinderGeometry")A=r.parameters.heightSegments+2,S=r.parameters.radialSegments;else if(r.userData.type==="ConeGeometry")A=r.parameters.heightSegments+1,S=r.parameters.radialSegments;else{let{pathSegments:U,segments:P,revolutions:R}=r.userData.parameters;A=Math.ceil(P*R)+2,S=U}t=new Uint32Array(2*S*3+(A-2)*S*4),n=new Uint8Array(2*S+(A-2)*S);let T=0,L=0,C=0;if(r.userData.type==="SphereGeometry"||r.userData.type==="HelixGeometry"){for(;L<3*S;)t[L++]=w[T++],t[L++]=w[T++],t[L++]=w[T++],n[C++]=3;for(;L<3*S+4*(A-2)*S;T+=6)t[L++]=w[T],t[L++]=w[T+1],t[L++]=w[T+4],t[L++]=w[T+5],n[C++]=4}else for(;L<4*(A-2)*S;T+=6)t[L++]=w[T],t[L++]=w[T+1],t[L++]=w[T+4],t[L++]=w[T+5],n[C++]=4;for(;L<t.length;)t[L++]=w[T++],t[L++]=w[T++],t[L++]=w[T++],n[C++]=3;break;default:t=w,n=new Uint8Array(_/3).fill(3);break}}else if(r.getAttribute("positionWASM")!==void 0)e=r.getAttribute("positionWASM").array,t=r.getAttribute("indexWASM").array,n=r.getAttribute("verticesPerFaceWASM").array;else{let b=r.getAttribute("faceMap");r.deleteAttribute("faceMap");let w=tl.mergeVertices(r,2);r.setAttribute("faceMap",b),e=w.attributes.position.array;let _=[],S=b.array;n=new Uint8Array(S[S.length-1]+1).fill(3);let A=w.getIndex().array;for(let T=0,L=S.length;T<L;)S[T]===S[T+1]?(n[S[T]]++,_.push(...new Set(A.slice(3*T,3*T+6))),T+=2):(_.push(...A.slice(3*T,3*T+3)),T++);t=new Uint32Array(_)}let o=e.length,a=t.length,l=n.length,c=e.length+i.length+s.length,u=t.length+n.length,h=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,p=ot._malloc(h),m=new Float32Array(ot.HEAPF32.buffer,p,c),v=new Uint32Array(ot.HEAPU32.buffer,p+d,u),g=u0(Float32Array,e,i,s),y=u0(Uint32Array,t,n);m.set(g,0),v.set(y,0),this.activeSubdivPtr=ot.alloc_subdivision_surface(p,o,p+d,a,p+d+t.length*Uint32Array.BYTES_PER_ELEMENT,l),ot._free(p)}static buildLevel(r,e,t){let n=ot.get_mesh_data(this.activeSubdivPtr,r?ot.Level.CONTROL:ot.Level.REFINED,e!=null?e:!r),i=8,s=ot.HEAPU32.subarray(n>>2,(n>>2)+i),o=s.subarray(4,4+4),a=0,l=ot.HEAPU32[s[a]>>2],c=ot.HEAPF32.subarray(l>>2,(l>>2)+o[a]);a++;let u=ot.HEAPU32[s[a]>>2],h=ot.HEAPF32.subarray(u>>2,(u>>2)+o[a]);a++;let d=ot.HEAPU32[s[a]>>2],f=ot.HEAPU32.subarray(d>>2,(d>>2)+o[a]);a++;let p=ot.HEAPU32[s[a]>>2],m=ot.HEAPU32.subarray(p>>2,(p>>2)+o[a]);if(a++,t===void 0){let v=new we;if(v.setIndex(new is(m,1)),v.setAttribute("position",new ge(c,3)),v.setAttribute("normal",new ge(h,3)),r){v.setAttribute("faceMap",new is(f,1));let g=new Float32Array(h.length/3*4).fill(0);v.setAttribute("color",new Re(g,4))}return ot.free_mesh_data(n),v.userData.type="SubdivGeometry",v}t.getAttribute("position").copyArray(c),t.getAttribute("normal").copyArray(h),t.attributes.position.needsUpdate=!0,t.attributes.normal.needsUpdate=!0,ot.free_mesh_data(n)}static buildControlCageWireframe(r,e){let t=ot.get_wireframe_data_for_base_level(this.activeSubdivPtr),n=4,i=ot.HEAPU32.subarray(t>>2,(t>>2)+n),s=i.subarray(2,2+2),o=0,a=ot.HEAPU32[i[o]>>2],l=ot.HEAPF32.subarray(a>>2,(a>>2)+s[o]);o++;let c=ot.HEAPU32[i[o]>>2],u=ot.HEAPU32.subarray(c>>2,(c>>2)+s[o]);if(r===void 0){let h=new we;h.setAttribute("position",new ge(l,3));let d=new Float32Array(l.length);for(let f=0,p=l.length;f<p;)d[f++]=e.r,d[f++]=e.g,d[f++]=e.b;return h.setAttribute("color",new Re(d,3)),h.setIndex(new is(u,1)),ot.free_wireframe_data_for_base_level(t),h}r.getAttribute("position").copyArray(l),r.attributes.position.needsUpdate=!0,ot.free_wireframe_data_for_base_level(t)}static clone(r,e,t){this.activeSubdivPtr=ot.copy_subdivision_surface(e),ot.set_destination_refinement_level(this.activeSubdivPtr,r.subdivisions);let n=this.buildLevel(!0,t);Qn.getTopologicalMesh(n);let i,s,o;return r.subdivisions>0?(o=this.buildLevel(!1,t),i=o,s=n,delete s.userData.parameters):(i=n,s=void 0),Object.assign(i,{originalGeometry:s,userData:{parameters:r,type:"SubdivGeometry"}})}static getTopologicalMesh(r){let e=ot.get_topological_data(this.activeSubdivPtr),t=6,n=ot.HEAPU32.subarray(e>>2,(e>>2)+t),i=n.subarray(3,3+3),s=0,o=ot.HEAPU32[n[s]>>2],a=ot.HEAPF32.subarray(o>>2,(o>>2)+i[s]);s++;let l=ot.HEAPU32[n[s]>>2],c=ot.HEAPU32.subarray(l>>2,(l>>2)+i[s]);s++;let u=ot.HEAPU32[n[s]>>2],h=ot.HEAPU32.subarray(u>>2,(u>>2)+i[s]);r.setAttribute("positionWASM",new ge(a,3)),r.setAttribute("indexWASM",new is(c,1)),r.setAttribute("verticesPerFaceWASM",new Sf(h,1)),ot.free_topological_data(e)}},nl.checkpoints=[],nl.checkpointCurrentIndex=-1,nl.maxCheckpoints=30,nl.mergeVerticesToleranceExceptions={DodecahedronGeometry:2},nl);var Gc={};fA(Gc,{addBarycentricAttribute:()=>n2,fixUvs:()=>r2,loadFromUrl:()=>i2,resizeGeometry:()=>t2,roundShapePolygon:()=>e2});var h0=function(r,e){let t=e.x-r.x,n=e.y-r.y,i=Math.sqrt(t*t+n*n),s=t/i,o=n/i,a=Math.atan2(o,s);return{x:t,y:n,len:i,nx:s,ny:o,ang:a}},e2=(r,e,t)=>{let n,i,s,o,a,l,c,u,h,d,f,p,m,v,g=e.length;for(o=e[g-2],r.curves=[],n=1;n<g-1;n++){a=e[n%g],l=e[(n+1)%g];let y=h0(a,o),x=h0(a,l);c=y.nx*x.ny-y.ny*x.nx,u=y.nx*x.nx-y.ny*-x.ny,f=Math.asin(c),h=1,d=!1,u<0?f<0?f=Math.PI+f:(f=Math.PI-f,h=-1,d=!0):f>0&&(h=-1,d=!0),p=f/2,v=Math.abs(Math.cos(p)*t/Math.sin(p)),v>Math.min(y.len/2,x.len/2)?(v=Math.min(y.len/2,x.len/2),m=Math.abs(v*Math.sin(p)/Math.cos(p))):m=t,i=a.x+x.nx*v,s=a.y+x.ny*v,i+=-x.ny*m*h,s+=x.nx*m*h,r.absarc(i,s,m,y.ang+Math.PI/2*h,x.ang-Math.PI/2*h,d),o=a,a=l}r.closePath()},t2=(r,{width:e,height:t,depth:n})=>{e=Math.abs(e),t=Math.abs(t),n=Math.abs(n);let i=r.userData.parameters,s,o,a;e===0?(e=i.width,s=1):s=e/i.width,t===0?(t=i.height,o=1):o=t/i.height,n===0?(n=i.depth,a=1):a=n/i.depth,r.scale(s,o,a),i.width=e,i.height=t,i.depth=n},n2=(r,e)=>{let t=[new M(1,0,0),new M(0,1,0),new M(0,0,1)],n=r.attributes.position,i=new Float32Array(n.count*3);for(let s=0,o=n.count;s<o;s++)t[s%3].toArray(i,s*3);r.setAttribute(e,new ge(i,3))},i2=r=>new Promise(e=>{new Ia().load(r,n=>e(n))}),r2=(r,e,t)=>{let n=r.getAttribute("uv");if(n)for(let i=0;i<n.count;i++){let s=n.getX(i),o=n.getY(i);n.setXY(i,(s+e/2)/e,1-(o-t/2)/t*-1)}};var Uc={ConeGeometry:Ax,CubeGeometry:_x,CylinderGeometry:Sx,DodecahedronGeometry:Ex,EllipseGeometry:Wx,HelixGeometry:Kx,IcosahedronGeometry:Qx,LatheGeometry:Zx,NonParametricGeometry:Lo,PolygonGeometry:e0,PyramidGeometry:t0,RectangleGeometry:kh,SphereGeometry:i0,StarGeometry:r0,TextFrameGeometry:s0,TorusGeometry:o0,TorusKnotGeometry:a0,TriangleGeometry:l0,VectorGeometry:Pn,SubdivGeometry:Qn},kc=r=>Uc[r.type].create(r);var Vh=r=>"isEntity"in r,ai=r=>"isAbstractMesh"in r;var Hh=r=>"objectHelper"in r;var il=new tn,Dn=new M,Je=new M,vn=new me;function s2(r,e,t=0,n=e.count){let i=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,c=-1/0;for(let u=t;u<n;u++){let h=e.getX(u),d=e.getY(u),f=e.getZ(u);h<i&&(i=h),d<s&&(s=d),f<o&&(o=f),h>a&&(a=h),d>l&&(l=d),f>c&&(c=f)}return r.min.set(i,s,o),r.max.set(a,l,c),r}var d0=(r,e,t,n)=>{var i,s;if(ai(r)){let o=r.geometry.userData.parameters,a=r.geometry.getAttribute("position");r.geometry.userData.type==="SubdivGeometry"?Dn.copy(((i=r.geometry.originalGeometry)!=null?i:r.geometry).boundingSphere.center):(s2(il,a,r.geometry.drawRange.start,r.geometry.drawRange.count<1/0?r.geometry.drawRange.count:a.count),il.getCenter(Dn)),r.forceComputeSize?il.getSize(Je).multiplyScalar(.5):Je.set(o.width,o.height,(s=o.depth)!=null?s:0).multiplyScalar(.5)}else if(Hh(r)&&n===!0){let o=r.geometryHelper.getAttribute("position");il.setFromArray(o.array),il.getCenter(Dn),il.getSize(Je).multiplyScalar(.5)}else Dn.setScalar(0),Je.setScalar(0);vn.copy(e).multiply(r.matrixWorld),Je.x===0&&Je.y===0&&Je.z===0?t.push(new M(Dn.x,Dn.y,Dn.z).applyMatrix4(vn)):t.push(new M(-Je.x,Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(-Je.x,-Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,-Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,Je.y,Je.z).add(Dn).applyMatrix4(vn),new M(-Je.x,Je.y,-Je.z).add(Dn).applyMatrix4(vn),new M(-Je.x,-Je.y,-Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,-Je.y,-Je.z).add(Dn).applyMatrix4(vn),new M(Je.x,Je.y,-Je.z).add(Dn).applyMatrix4(vn))},jh=class extends tn{constructor(e,t){super(e,t);this.transform=new me;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,!1),this.makeEmpty(),this.transform=e.matrixWorld;let n=new me().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,n,t)}expandByObjectSize(e,t,n=!1){let i=[];return n===!0?e.traverseEntity(s=>d0(s,t,i,"enableHelper"in e&&e.enableHelper)):d0(e,t,i,"enableHelper"in e&&e.enableHelper),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.transform),e}getPositionToCenter(e){return e=super.getCenter(e),e}computeVertices(){this.getSize(Je).multiplyScalar(.5),this.getCenter(Dn),vn.copy(this.transform).setPosition(Dn),this.vertices=[new M(-Je.x,Je.y,Je.z).applyMatrix4(vn),new M(-Je.x,-Je.y,Je.z).applyMatrix4(vn),new M(Je.x,-Je.y,Je.z).applyMatrix4(vn),new M(Je.x,Je.y,Je.z).applyMatrix4(vn),new M(-Je.x,Je.y,-Je.z).applyMatrix4(vn),new M(-Je.x,-Je.y,-Je.z).applyMatrix4(vn),new M(Je.x,-Je.y,-Je.z).applyMatrix4(vn),new M(Je.x,Je.y,-Je.z).applyMatrix4(vn)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new qn(this.vertices[0],this.vertices[3]),new qn(this.vertices[1],this.vertices[2]),new qn(this.vertices[5],this.vertices[6]),new qn(this.vertices[4],this.vertices[7]),new qn(this.vertices[0],this.vertices[1]),new qn(this.vertices[3],this.vertices[2]),new qn(this.vertices[7],this.vertices[6]),new qn(this.vertices[4],this.vertices[5]),new qn(this.vertices[0],this.vertices[4]),new qn(this.vertices[1],this.vertices[5]),new qn(this.vertices[2],this.vertices[6]),new qn(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new M))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new M().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new M().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new M().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new M().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new M().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new M().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};function wm(r,e,t,n){if(n===0)return t.copy(r);if(n===1)return t.copy(e);let i=r.w*e.w+r.x*e.x+r.y*e.y+r.z*e.z;if(i>=1)return t.copy(r);let s=1-i*i;if(s<=Number.EPSILON){let u=1-n;return t.w=u*r.w+n*e.w,t.x=u*r.x+n*e.x,t.y=u*r.y+n*e.y,t.z=u*r.z+n*e.z,t.normalize(),t}let o=Math.sqrt(s),a=Math.atan2(o,i),l=Math.sin((1-n)*a)/o,c=Math.sin(n*a)/o;return t.w=r.w*l+e.w*c,t.x=r.x*l+e.x*c,t.y=r.y*l+e.y*c,t.z=r.z*l+e.z*c,t}function o2(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e);return n.dot(i)/e.distanceTo(t)}function a2(r,e){return r.clone().dot(e)/e.length()}function l2(r,e,t,n,i=!1){let s=t-r,o=n-e,a=Math.atan2(o,s)*(180/Math.PI);return i&&a<0&&(a=360+a),a}function c2(r,e,t){let n=r.clone().sub(e),i=t.clone().sub(e),s=e.distanceTo(r),o=e.distanceTo(t),a=n.dot(i)/(s*o);return Math.acos(a)}function u2(r,e){let t=(r+"e").split("e");return t=(Math.round(Number(t[0]+"e"+(+t[1]+e)))+"e").split("e"),+(t[0]+"e"+(+t[1]-e))}function h2(r,e,t){let n=r[e];r[e]=r[t],r[t]=n}var d2=str=>eval(str.replace(/[^0-9()+\-*/.]/g,"")),C5={slerp:wm,getProjection:o2,projectOnVector:a2,angle2D:l2,angle3D:c2,round:u2,swapArrayValues:h2,evaluate:d2};var Io=new Set;var $i;(function(a){a[a.LINEAR=0]="LINEAR",a[a.EASE=1]="EASE",a[a.EASE_IN=2]="EASE_IN",a[a.EASE_OUT=3]="EASE_OUT",a[a.EASE_IN_OUT=4]="EASE_IN_OUT",a[a.CUBIC=5]="CUBIC",a[a.SPRING=6]="SPRING"})($i||($i={}));var rl=class{constructor(){this.easing=4;this.duration=1e3;this.delay=0;this.cubicControls=[.5,.05,.1,.3];this.springParameters={mass:1,stiffness:80,damping:10,velocity:0};this.repeat=!1;this.cycle=!1;this.rewind=!1}get sp_mass(){return this.springParameters.mass}set sp_mass(e){this.springParameters.mass=e}get sp_stiffness(){return this.springParameters.stiffness}set sp_stiffness(e){this.springParameters.stiffness=e}get sp_damping(){return this.springParameters.damping}set sp_damping(e){this.springParameters.damping=e}get sp_velocity(){return this.springParameters.velocity}set sp_velocity(e){this.springParameters.velocity=e}copy(e){return this.easing=e.easing,this.duration=e.duration,this.delay=e.delay,this.cubicControls=[...e.cubicControls],this.springParameters=Ue({},e.springParameters),this.repeat=e.repeat,this.cycle=e.cycle,this.rewind=e.rewind,this}clone(){return new rl().copy(this)}toJSON(){let e={easing:this.easing,duration:this.duration,delay:this.delay,cubicControls:this.cubicControls,springParameters:Ue({},this.springParameters)};return this.repeat===!0&&(e.repeat=!0),this.cycle===!0&&(e.cycle=!0),this.rewind===!0&&(e.rewind=!0),this.object!==void 0&&(e.object=this.object.uuid),this.state!==void 0&&(e.state=this.state.uuid),e}fromJSON(e,t,n){return this.easing=e.easing,this.duration=e.duration,this.delay=e.delay,this.cubicControls=[...e.cubicControls],this.springParameters.mass=e.springParameters.mass,this.springParameters.stiffness=e.springParameters.stiffness,this.springParameters.damping=e.springParameters.damping,this.springParameters.velocity=e.springParameters.velocity,e.repeat!==void 0&&(this.repeat=e.repeat),e.cycle!==void 0&&(this.cycle=e.cycle),e.rewind!==void 0&&(this.rewind=e.rewind),e.object!==void 0&&(this.object=t[e.object]),e.state!==void 0&&(this.state=n[e.state]),this}};function f2(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}var Ze;(function(h){h[h.MOUSE_DOWN=0]="MOUSE_DOWN",h[h.MOUSE_UP=1]="MOUSE_UP",h[h.MOUSE_HOVER=2]="MOUSE_HOVER",h[h.MOUSE_ENTER=3]="MOUSE_ENTER",h[h.MOUSE_LEAVE=4]="MOUSE_LEAVE",h[h.KEY_DOWN=5]="KEY_DOWN",h[h.KEY_UP=6]="KEY_UP",h[h.START=7]="START",h[h.OPEN_LINK=8]="OPEN_LINK",h[h.LOOK_AT=9]="LOOK_AT",h[h.FOLLOW=10]="FOLLOW"})(Ze||(Ze={}));var sl=class{constructor(e,t){this.targets=[];this.ui={isCollapsed:!1};this._type=e,this.key=t}get type(){return this._type}set type(e){this._type=e,e===9?this.distance=1e3:this.distance=void 0,e!==5&&e!==6&&(this.key=void 0)}newTarget(e){let t=new rl;if(t.object=e,e!==void 0){let n=e.interaction.states;n.length>0&&(t.state=n[n.length-1])}return this.targets.push(t),Io.add(t),t}addTarget(e,t=0){this.targets.splice(t,0,e),Io.add(e)}removeTarget(e){Io.delete(this.targets[e]),this.targets.splice(e,1)}dispatchReverse(){for(let e=0,t=this.targets.length;e<t;++e){let n=this.targets[e];n.state!==void 0&&n.object!==void 0&&n.object.interaction.reverse(n)}}dispatch(){this.url!==void 0&&(this._type===8||this._type===0||this._type===1||this._type===5||this._type===6)&&(f2()?window.location.assign(this.url):window.open(this.url,"_blank"));for(let e=0,t=this.targets.length;e<t;++e){let n=this.targets[e];n.state!==void 0&&n.object!==void 0&&n.object.interaction.play(n)}}copy(e){return this._type=e.type,this.key=e.key,this.url=e.url,this.distance=e.distance,this.ui.isCollapsed=e.ui.isCollapsed,this}clone(){return new sl().copy(this)}toJSON(){let e={type:this._type,key:this.key,ui:{isCollapsed:this.ui.isCollapsed}};if(this.url!==void 0&&(e.url=this.url),this.distance!==void 0&&(e.distance=this.distance),this.targets.length>0){e.targets=[];for(let t=0,n=this.targets.length;t<n;++t)e.targets.push(this.targets[t].toJSON())}return e}fromJSON(e,t,n){if(this._type=e.type,this.key=e.key,this.targets=[],this.ui={isCollapsed:e.ui.isCollapsed},this.url=e.url,e.distance!==void 0&&(this.distance=e.distance),e.targets!==void 0)for(let i=0,s=e.targets.length;i<s;++i)this.addTarget(new rl().fromJSON(e.targets[i],t,n),i);return this}};var bs=class{constructor(){this.uuid=Ee.generateUUID();this.name="";this.position=new M;this.rotation=new On;this.scale=new M;this.hiddenMatrix=new me}update(e){this.updateMatrix(e),"geometry"in e&&this.updateGeometry(e),"material"in e&&this.updateMaterial(e),e.objectType==="CombinedCamera"&&this.updateCamera(e)}updateCamera(e){this.camera={zoomPersp:e.perspCamera.zoom,zoomOrtho:e.orthoCamera.zoom,targetOffset:e.targetOffset}}updateMatrix(e){this.position.copy(e.position),this.rotation.copy(e.rotation),this.scale.copy(e.scale),"hiddenMatrix"in e&&this.hiddenMatrix.copy(e.hiddenMatrix)}updateGeometry(e){if("geometry"in e){let{width:t,height:n,depth:i}=e.geometry.userData.parameters;this.geometry={width:t,height:n,depth:i}}}updateMaterial(e){if("material"in e)if(e.material instanceof Array){this.material=[];for(let t=0,n=e.material.length;t<n;++t){let i=e.material[t],s=[],o=i.layersList.head;for(;o;)s.push(o.clone()),o=o.next;this.material.push({layersList:s})}}else{let t=e.material,n=[],i=t.layersList.head;for(;i;)n.push(i.clone()),i=i.next;this.material={layersList:n}}}execute(e){if(e.position.copy(this.position),e.rotation.copy(this.rotation),e.scale.copy(this.scale),"hiddenMatrix"in e&&e.hiddenMatrix.copy(this.hiddenMatrix),"geometry"in e&&this.geometry!==void 0){let n=e.geometry.userData.parameters,i=this.geometry;(i.width!==n.width||i.height!==n.height||i.depth!==n.depth)&&e.updateGeometry({parameters:{width:i.width,height:i.height,depth:i.depth}})}if("material"in e){let t=e.material;if(t instanceof Array){let n=this.material;for(let i=0,s=n.length;i<s;++i){let o=t[i].layersList.head,a=n[i].layersList,l=0;for(;o;)o.copy(a[l++]),o=o.next;t[i].dispose()}}else{if(t.userData.isAsset)return;let n=0,i=t.layersList.head,o=this.material.layersList;for(;i;)i.copyUniforms(o[n++]),i=i.next;t.dispose()}}this.camera&&e.objectType==="CombinedCamera"&&(e=e,e.zoom=e.cameraType==="OrthographicCamera"?this.camera.zoomOrtho:this.camera.zoomPersp,e.targetOffset=this.camera.targetOffset,e.updateProjectionMatrix())}copy(e){if(this.name=e.name,this.position.copy(e.position),this.rotation.copy(e.rotation),this.scale.copy(e.scale),this.hiddenMatrix.copy(e.hiddenMatrix),e.geometry!==void 0&&(this.geometry={width:e.geometry.width,height:e.geometry.height,depth:e.geometry.depth}),e.material!==void 0)if(e.material instanceof Array){this.material=[];for(let t=0,n=e.material.length;t<n;++t)this.material.push({layersList:e.material[t].layersList.map(i=>i.clone())})}else this.material={layersList:e.material.layersList.map(t=>t.clone())};return e.camera!==void 0&&(this.camera={zoomPersp:e.camera.zoomPersp,zoomOrtho:e.camera.zoomOrtho,targetOffset:e.camera.targetOffset}),this}clone(){return new bs().copy(this)}toJSON(e){let t={uuid:this.uuid,name:this.name,position:this.position.toArray(),rotation:this.rotation.toArray(),scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};if(this.geometry!==void 0&&(t.geometry={width:this.geometry.width,height:this.geometry.height,depth:this.geometry.depth}),this.material!==void 0)if(this.material instanceof Array){t.material=[];for(let n=0,i=this.material.length;n<i;++n)t.material.push({layersList:this.material[n].layersList.map(s=>s.toJSON(e))})}else t.material={layersList:this.material.layersList.map(n=>n.toJSON(e))};return this.camera!==void 0&&(t.camera={zoomPersp:this.camera.zoomPersp,zoomOrtho:this.camera.zoomOrtho,targetOffset:this.camera.targetOffset}),t}fromJSON(e,t){var n;if(this.uuid=e.uuid,this.name=e.name,this.position.fromArray(e.position),this.rotation.fromArray(e.rotation),this.scale.fromArray(e.scale),this.hiddenMatrix.fromArray(e.hiddenMatrix),e.geometry!==void 0&&(this.geometry={width:e.geometry.width,height:e.geometry.height,depth:e.geometry.depth}),e.material!==void 0)if(e.material instanceof Array){this.material=[];for(let i=0,s=e.material.length;i<s;++i)this.material.push({layersList:e.material[i].layersList.map(o=>kp(o,t))})}else this.material={layersList:e.material.layersList.map(i=>kp(i,t))};return e.camera!==void 0&&(this.camera={zoomPersp:e.camera.zoomPersp,zoomOrtho:e.camera.zoomOrtho,targetOffset:(n=e.camera.targetOffset)!=null?n:-1}),this}};"use strict";var f0={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},Sm={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},p2=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],Wh={CSS:{},springs:{}};function mr(r,e,t){return Math.min(Math.max(r,e),t)}function Vc(r,e){return r.indexOf(e)>-1}function Mm(r,e){return r.apply(null,e)}var qe={arr:function(r){return Array.isArray(r)},obj:function(r){return Vc(Object.prototype.toString.call(r),"Object")},pth:function(r){return qe.obj(r)&&r.hasOwnProperty("totalLength")},svg:function(r){return r instanceof SVGElement},inp:function(r){return r instanceof HTMLInputElement},dom:function(r){return!("isNode"in r)&&(r.nodeType||qe.svg(r))},str:function(r){return typeof r=="string"},fnc:function(r){return typeof r=="function"},und:function(r){return typeof r=="undefined"},hex:function(r){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(r)},rgb:function(r){return/^rgb/.test(r)},hsl:function(r){return/^hsl/.test(r)},col:function(r){return qe.hex(r)||qe.rgb(r)||qe.hsl(r)},key:function(r){return!f0.hasOwnProperty(r)&&!Sm.hasOwnProperty(r)&&r!=="targets"&&r!=="keyframes"}};function p0(r){var e=/\(([^)]+)\)/.exec(r);return e?e[1].split(",").map(function(t){return parseFloat(t)}):[]}function m0(r,e){var t=p0(r),n=mr(qe.und(t[0])?1:t[0],.1,100),i=mr(qe.und(t[1])?100:t[1],.1,100),s=mr(qe.und(t[2])?10:t[2],.1,100),o=mr(qe.und(t[3])?0:t[3],.1,100),a=Math.sqrt(i/n),l=s/(2*Math.sqrt(i*n)),c=l<1?a*Math.sqrt(1-l*l):0,u=1,h=l<1?(l*a+-o)/c:-o+a;function d(p){var m=e?e*p/1e3:p;return l<1?m=Math.exp(-m*l*a)*(u*Math.cos(c*m)+h*Math.sin(c*m)):m=(u+h*m)*Math.exp(-m*a),p===0||p===1?p:1-m}function f(){var p=Wh.springs[r];if(p)return p;for(var m=1/6,v=0,g=0;;)if(v+=m,d(v)===1){if(g++,g>=16)break}else g=0;var y=v*m*1e3;return Wh.springs[r]=y,y}return e?d:f}function m2(r){return r===void 0&&(r=10),function(e){return Math.ceil(mr(e,1e-6,1)*r)*(1/r)}}var g2=function(){var r=11,e=1/(r-1);function t(u,h){return 1-3*h+3*u}function n(u,h){return 3*h-6*u}function i(u){return 3*u}function s(u,h,d){return((t(h,d)*u+n(h,d))*u+i(h))*u}function o(u,h,d){return 3*t(h,d)*u*u+2*n(h,d)*u+i(h)}function a(u,h,d,f,p){var m,v,g=0;do v=h+(d-h)/2,m=s(v,f,p)-u,m>0?d=v:h=v;while(Math.abs(m)>1e-7&&++g<10);return v}function l(u,h,d,f){for(var p=0;p<4;++p){var m=o(h,d,f);if(m===0)return h;var v=s(h,d,f)-u;h-=v/m}return h}function c(u,h,d,f){if(!(0<=u&&u<=1&&0<=d&&d<=1))return;var p=new Float32Array(r);if(u!==h||d!==f)for(var m=0;m<r;++m)p[m]=s(m*e,u,d);function v(g){for(var y=0,x=1,b=r-1;x!==b&&p[x]<=g;++x)y+=e;--x;var w=(g-p[x])/(p[x+1]-p[x]),_=y+w*e,S=o(_,u,d);return S>=.001?l(g,_,u,d):S===0?_:a(g,y,y+e,u,d)}return function(g){return u===h&&d===f||g===0||g===1?g:s(v(g),h,f)}}return c}(),g0=function(){var r={linear:function(){return function(n){return n}}},e={Sine:function(){return function(n){return 1-Math.cos(n*Math.PI/2)}},Circ:function(){return function(n){return 1-Math.sqrt(1-n*n)}},Back:function(){return function(n){return n*n*(3*n-2)}},Bounce:function(){return function(n){for(var i,s=4;n<((i=Math.pow(2,--s))-1)/11;);return 1/Math.pow(4,3-s)-7.5625*Math.pow((i*3-2)/22-n,2)}},Elastic:function(n,i){n===void 0&&(n=1),i===void 0&&(i=.5);var s=mr(n,1,10),o=mr(i,.1,2);return function(a){return a===0||a===1?a:-s*Math.pow(2,10*(a-1))*Math.sin((a-1-o/(Math.PI*2)*Math.asin(1/s))*(Math.PI*2)/o)}}},t=["Quad","Cubic","Quart","Quint","Expo"];return t.forEach(function(n,i){e[n]=function(){return function(s){return Math.pow(s,i+2)}}}),Object.keys(e).forEach(function(n){var i=e[n];r["easeIn"+n]=i,r["easeOut"+n]=function(s,o){return function(a){return 1-i(s,o)(1-a)}},r["easeInOut"+n]=function(s,o){return function(a){return a<.5?i(s,o)(a*2)/2:1-i(s,o)(a*-2+2)/2}}}),r}();function Am(r,e){if(qe.fnc(r))return r;var t=r.split("(")[0],n=g0[t],i=p0(r);switch(t){case"spring":return m0(r,e);case"cubicBezier":return Mm(g2,i);case"steps":return Mm(m2,i);default:return Mm(n,i)}}function y0(r){try{var e=document.querySelectorAll(r);return e}catch(t){return}}function Jh(r,e){for(var t=r.length,n=arguments.length>=2?arguments[1]:void 0,i=[],s=0;s<t;s++)if(s in r){var o=r[s];e.call(n,o,s,r)&&i.push(o)}return i}function Xh(r){return r.reduce(function(e,t){return e.concat(qe.arr(t)?Xh(t):t)},[])}function v0(r){return qe.arr(r)?r:(qe.str(r)&&(r=y0(r)||r),r instanceof NodeList||r instanceof HTMLCollection?[].slice.call(r):[r])}function _m(r,e){return r.some(function(t){return t===e})}function Tm(r){var e={};for(var t in r)e[t]=r[t];return e}function Em(r,e){var t=Tm(r);for(var n in r)t[n]=e.hasOwnProperty(n)?e[n]:r[n];return t}function qh(r,e){var t=Tm(r);for(var n in e)t[n]=qe.und(r[n])?e[n]:r[n];return t}function y2(r){var e=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(r);return e?"rgba("+e[1]+",1)":r}function v2(r){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,t=r.replace(e,function(a,l,c,u){return l+l+c+c+u+u}),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),i=parseInt(n[1],16),s=parseInt(n[2],16),o=parseInt(n[3],16);return"rgba("+i+","+s+","+o+",1)"}function x2(r){var e=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(r)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(r),t=parseInt(e[1],10)/360,n=parseInt(e[2],10)/100,i=parseInt(e[3],10)/100,s=e[4]||1;function o(d,f,p){return p<0&&(p+=1),p>1&&(p-=1),p<1/6?d+(f-d)*6*p:p<1/2?f:p<2/3?d+(f-d)*(2/3-p)*6:d}var a,l,c;if(n==0)a=l=c=i;else{var u=i<.5?i*(1+n):i+n-i*n,h=2*i-u;a=o(h,u,t+1/3),l=o(h,u,t),c=o(h,u,t-1/3)}return"rgba("+a*255+","+l*255+","+c*255+","+s+")"}function b2(r){if(qe.rgb(r))return y2(r);if(qe.hex(r))return v2(r);if(qe.hsl(r))return x2(r)}function Gr(r){var e=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(r);if(e)return e[1]}function w2(r){if(Vc(r,"translate")||r==="perspective")return"px";if(Vc(r,"rotate")||Vc(r,"skew"))return"deg"}function Nm(r,e){return qe.fnc(r)?r(e.target,e.id,e.total):r}function gr(r,e){return r.getAttribute(e)}function Cm(r,e,t){var n=Gr(e);if(_m([t,"deg","rad","turn"],n))return e;var i=Wh.CSS[e+t];if(!qe.und(i))return i;var s=100,o=document.createElement(r.tagName),a=r.parentNode&&r.parentNode!==document?r.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=s+t;var l=s/o.offsetWidth;a.removeChild(o);var c=l*parseFloat(e);return Wh.CSS[e+t]=c,c}function x0(r,e,t){if(e in r.style){var n=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),i=r.style[e]||getComputedStyle(r).getPropertyValue(n)||"0";return t?Cm(r,i,t):i}}function Lm(r,e){if(qe.dom(r)&&!qe.inp(r)&&(gr(r,e)||qe.svg(r)&&r[e]))return"attribute";if(qe.dom(r)&&_m(p2,e))return"transform";if(qe.dom(r)&&e!=="transform"&&x0(r,e))return"css";if(r[e]!=null)return"object"}function b0(r){if(!!qe.dom(r)){for(var e=r.style.transform||"",t=/(\w+)\(([^)]*)\)/g,n=new Map,i;i=t.exec(e);)n.set(i[1],i[2]);return n}}function S2(r,e,t,n){var i=Vc(e,"scale")?1:0+w2(e),s=b0(r).get(e)||i;return t&&(t.transforms.list.set(e,s),t.transforms.last=e),n?Cm(r,s,n):s}function Im(r,e,t,n){switch(Lm(r,e)){case"transform":return S2(r,e,n,t);case"css":return x0(r,e,t);case"attribute":return gr(r,e);default:return r[e]||0}}function Pm(r,e){var t=/^(\*=|\+=|-=)/.exec(r);if(!t)return r;var n=Gr(r)||0,i=parseFloat(e),s=parseFloat(r.replace(t[0],""));switch(t[0][0]){case"+":return i+s+n;case"-":return i-s+n;case"*":return i*s+n}}function w0(r,e){if(qe.col(r))return b2(r);if(/\s/g.test(r))return r;var t=Gr(r),n=t?r.substr(0,r.length-t.length):r;return e?n+e:n}function Dm(r,e){return Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))}function M2(r){return Math.PI*2*gr(r,"r")}function A2(r){return gr(r,"width")*2+gr(r,"height")*2}function _2(r){return Dm({x:gr(r,"x1"),y:gr(r,"y1")},{x:gr(r,"x2"),y:gr(r,"y2")})}function S0(r){for(var e=r.points,t=0,n,i=0;i<e.numberOfItems;i++){var s=e.getItem(i);i>0&&(t+=Dm(n,s)),n=s}return t}function T2(r){var e=r.points;return S0(r)+Dm(e.getItem(e.numberOfItems-1),e.getItem(0))}function M0(r){if(r.getTotalLength)return r.getTotalLength();switch(r.tagName.toLowerCase()){case"circle":return M2(r);case"rect":return A2(r);case"line":return _2(r);case"polyline":return S0(r);case"polygon":return T2(r)}}function E2(r){var e=M0(r);return r.setAttribute("stroke-dasharray",e),e}function N2(r){for(var e=r.parentNode;qe.svg(e)&&qe.svg(e.parentNode);)e=e.parentNode;return e}function A0(r,e){var t=e||{},n=t.el||N2(r),i=n.getBoundingClientRect(),s=gr(n,"viewBox"),o=i.width,a=i.height,l=t.viewBox||(s?s.split(" "):[0,0,o,a]);return{el:n,viewBox:l,x:l[0]/1,y:l[1]/1,w:o/l[2],h:a/l[3]}}function C2(r,e){var t=qe.str(r)?y0(r)[0]:r,n=e||100;return function(i){return{property:i,el:t,svg:A0(t),totalLength:M0(t)*(n/100)}}}function L2(r,e){function t(a){a===void 0&&(a=0);var l=e+a>=1?e+a:0;return r.el.getPointAtLength(l)}var n=A0(r.el,r.svg),i=t(),s=t(-1),o=t(1);switch(r.property){case"x":return(i.x-n.x)*n.w;case"y":return(i.y-n.y)*n.h;case"angle":return Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI}}function _0(r,e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,n=w0(qe.pth(r)?r.totalLength:r,e)+"";return{original:n,numbers:n.match(t)?n.match(t).map(Number):[0],strings:qe.str(r)||e?n.split(t):[]}}function T0(r){var e=r?Xh(qe.arr(r)?r.map(v0):v0(r)):[];return Jh(e,function(t,n,i){return i.indexOf(t)===n})}function E0(r){var e=T0(r);return e.map(function(t,n){return{target:t,id:n,total:e.length,transforms:{list:b0(t)}}})}function I2(r,e){var t=Tm(e);if(/^spring/.test(t.easing)&&(t.duration=m0(t.easing)),qe.arr(r)){var n=r.length,i=n===2&&!qe.obj(r[0]);i?r={value:r}:qe.fnc(e.duration)||(t.duration=e.duration/n)}var s=qe.arr(r)?r:[r];return s.map(function(o,a){var l=qe.obj(o)&&!qe.pth(o)?o:{value:o};return qe.und(l.delay)&&(l.delay=a?0:e.delay),qe.und(l.endDelay)&&(l.endDelay=a===s.length-1?e.endDelay:0),l}).map(function(o){return qh(o,t)})}function P2(r){for(var e=Jh(Xh(r.map(function(s){return Object.keys(s)})),function(s){return qe.key(s)}).reduce(function(s,o){return s.indexOf(o)<0&&s.push(o),s},[]),t={},n=function(s){var o=e[s];t[o]=r.map(function(a){var l={};for(var c in a)qe.key(c)?c==o&&(l.value=a[c]):l[c]=a[c];return l})},i=0;i<e.length;i++)n(i);return t}function D2(r,e){var t=[],n=e.keyframes;n&&(e=qh(P2(n),e));for(var i in e)qe.key(i)&&t.push({name:i,tweens:I2(e[i],r)});return t}function R2(r,e){var t={};for(var n in r){var i=Nm(r[n],e);qe.arr(i)&&(i=i.map(function(s){return Nm(s,e)}),i.length===1&&(i=i[0])),t[n]=i}return t.duration=parseFloat(t.duration),t.delay=parseFloat(t.delay),t}function B2(r,e){var t;return r.tweens.map(function(n){var i=R2(n,e),s=i.value,o=qe.arr(s)?s[1]:s,a=Gr(o),l=Im(e.target,r.name,a,e),c=t?t.to.original:l,u=qe.arr(s)?s[0]:c,h=Gr(u)||Gr(l),d=a||h;return qe.und(o)&&(o=c),i.from=_0(u,d),i.to=_0(Pm(o,u),d),i.start=t?t.end:0,i.end=i.start+i.delay+i.duration+i.endDelay,i.easing=Am(i.easing,i.duration),i.isPath=qe.pth(s),i.isColor=qe.col(i.from.original),i.isColor&&(i.round=1),t=i,i})}var N0={css:function(r,e,t){return r.style[e]=t},attribute:function(r,e,t){return r.setAttribute(e,t)},object:function(r,e,t){return r[e]=t},transform:function(r,e,t,n,i){if(n.list.set(e,t),e===n.last||i){var s="";n.list.forEach(function(o,a){s+=a+"("+o+") "}),r.style.transform=s}}};function C0(r,e){var t=E0(r);t.forEach(function(n){for(var i in e){var s=Nm(e[i],n),o=n.target,a=Gr(s),l=Im(o,i,a,n),c=a||Gr(l),u=Pm(w0(s,c),l),h=Lm(o,i);N0[h](o,i,u,n.transforms,!0)}})}function O2(r,e){var t=Lm(r.target,e.name);if(t){var n=B2(e,r),i=n[n.length-1];return{type:t,property:e.name,animatable:r,tweens:n,duration:i.end,delay:n[0].delay,endDelay:i.endDelay}}}function F2(r,e){return Jh(Xh(r.map(function(t){return e.map(function(n){return O2(t,n)})})),function(t){return!qe.und(t)})}function L0(r,e){var t=r.length,n=function(s){return s.timelineOffset?s.timelineOffset:0},i={};return i.duration=t?Math.max.apply(Math,r.map(function(s){return n(s)+s.duration})):e.duration,i.delay=t?Math.min.apply(Math,r.map(function(s){return n(s)+s.delay})):e.delay,i.endDelay=t?i.duration-Math.max.apply(Math,r.map(function(s){return n(s)+s.duration-s.endDelay})):e.endDelay,i}var I0=0;function z2(r){var e=Em(f0,r),t=Em(Sm,r),n=D2(t,r),i=E0(r.targets),s=F2(i,n),o=L0(s,t),a=I0;return I0++,qh(e,{id:a,children:[],animatables:i,animations:s,duration:o.duration,delay:o.delay,endDelay:o.endDelay})}var li=[],P0=[],Yh,G2=function(){function r(){Yh=requestAnimationFrame(e)}function e(t){var n=li.length;if(n){for(var i=0;i<n;){var s=li[i];if(!s.paused)s.tick(t);else{var o=li.indexOf(s);o>-1&&(li.splice(o,1),n=li.length)}i++}r()}else Yh=cancelAnimationFrame(Yh)}return r}();function U2(){document.hidden?(li.forEach(function(r){return r.pause()}),P0=li.slice(0),un.running=li=[]):P0.forEach(function(r){return r.play()})}typeof document!="undefined"&&document.addEventListener("visibilitychange",U2);function un(r){r===void 0&&(r={});var e=0,t=0,n=0,i,s=0,o=null;function a(x){var b=window.Promise&&new Promise(function(w){return o=w});return x.finished=b,b}var l=z2(r),c=a(l);function u(){var x=l.direction;x!=="alternate"&&(l.direction=x!=="normal"?"normal":"reverse"),l.reversed=!l.reversed,i.forEach(function(b){return b.reversed=l.reversed})}function h(x){return l.reversed?l.duration-x:x}function d(){e=0,t=h(l.currentTime)*(1/un.speed)}function f(x,b){b&&b.seek(x-b.timelineOffset)}function p(x){if(l.reversePlayback)for(var w=s;w--;)f(x,i[w]);else for(var b=0;b<s;b++)f(x,i[b])}function m(x){var b=0,w=l.animations,_=w.length;for(l.reversePlayback===!0&&l.rewind===!1&&(x=l.duration-x);b<_;){var S=w[b],A=S.animatable,T=S.tweens,L=T.length-1,C=T[L];L&&(C=Jh(T,function(ae){return x<ae.end})[0]||C);for(var U=mr(x-C.start-C.delay,0,C.duration)/C.duration,P=isNaN(U)?1:C.easing(U),R=C.to.strings,G=C.round,B=[],j=C.to.numbers.length,ne=void 0,le=0;le<j;le++){var W=void 0;if(l.reversePlayback===!0&&l.rewind===!1)var z=C.to.numbers[le],D=C.from.numbers[le]||0;else var D=C.to.numbers[le],z=C.from.numbers[le]||0;C.isPath?W=L2(C.value,P*D):W=z+P*(D-z),G&&(C.isColor&&le>2||(W=Math.round(W*G)/G)),B.push(W)}var K=R.length;if(!K)ne=B[0];else{ne=R[0];for(var q=0;q<K;q++){var ee=R[q],V=R[q+1],de=B[q];isNaN(de)||(V?ne+=de+V:ne+=de+" ")}}N0[S.type](A.target,S.property,ne,A.transforms),S.currentValue=ne,b++}}function v(x){l[x]&&!l.passThrough&&l[x](l)}function g(){l.remaining&&l.remaining!==!0&&l.remaining--}function y(x){var b=l.duration,w=l.delay,_=b-l.endDelay,S=h(x);l.progress=mr(S/b*100,0,100),l.reversePlayback=S<l.currentTime,i&&p(S),!l.began&&l.currentTime>0&&(l.began=!0,v("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,v("loopBegin")),S<=w&&l.currentTime!==0&&m(0),(S>=_&&l.currentTime!==b||!b)&&m(b),S>w&&S<_?(l.changeBegan||(l.changeBegan=!0,l.changeCompleted=!1,v("changeBegin")),v("change"),m(S)):l.changeBegan&&(l.changeCompleted=!0,l.changeBegan=!1,v("changeComplete")),l.currentTime=mr(S,0,b),l.began&&v("update"),x>=b&&(t=0,g(),l.remaining?(e=n,v("loopComplete"),l.loopBegan=!1,l.direction==="alternate"&&u()):(l.paused=!0,l.completed||(l.completed=!0,v("loopComplete"),v("complete"),!l.passThrough&&"Promise"in window&&(o(),c=a(l)))))}return l.reset=function(){var x=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed=x==="reverse",l.remaining=l.loop,i=l.children,s=i.length;for(var b=s;b--;)l.children[b].reset();(l.reversed&&l.loop!==!0||x==="alternate"&&l.loop===1)&&l.remaining++,m(l.reversed?l.duration:0)},l.set=function(x,b){return C0(x,b),l},l.tick=function(x){n=x,e||(e=n),y((n+(t-e))*un.speed)},l.seek=function(x){y(h(x))},l.pause=function(){l.paused=!0,d()},l.play=function(){!l.paused||(l.completed&&l.reset(),l.paused=!1,li.push(l),d(),Yh||G2())},l.reverse=function(){u(),l.completed=!l.reversed,d()},l.restart=function(){l.reset(),l.play()},l.reset(),l.autoplay&&l.play(),l}function D0(r,e){for(var t=e.length;t--;)_m(r,e[t].animatable.target)&&e.splice(t,1)}function k2(r){for(var e=T0(r),t=li.length;t--;){var n=li[t],i=n.animations,s=n.children;D0(e,i);for(var o=s.length;o--;){var a=s[o],l=a.animations;D0(e,l),!l.length&&!a.children.length&&s.splice(o,1)}!i.length&&!s.length&&n.pause()}}function V2(r,e){e===void 0&&(e={});var t=e.direction||"normal",n=e.easing?Am(e.easing):null,i=e.grid,s=e.axis,o=e.from||0,a=o==="first",l=o==="center",c=o==="last",u=qe.arr(r),h=parseFloat(u?r[0]:r),d=u?parseFloat(r[1]):0,f=Gr(u?r[1]:r)||0,p=e.start||0+(u?h:0),m=[],v=0;return function(g,y,x){if(a&&(o=0),l&&(o=(x-1)/2),c&&(o=x-1),!m.length){for(var b=0;b<x;b++){if(!i)m.push(Math.abs(o-b));else{var w=l?(i[0]-1)/2:o%i[0],_=l?(i[1]-1)/2:Math.floor(o/i[0]),S=b%i[0],A=Math.floor(b/i[0]),T=w-S,L=_-A,C=Math.sqrt(T*T+L*L);s==="x"&&(C=-T),s==="y"&&(C=-L),m.push(C)}v=Math.max.apply(Math,m)}n&&(m=m.map(function(P){return n(P/v)*v})),t==="reverse"&&(m=m.map(function(P){return s?P<0?P*-1:-P:Math.abs(v-P)}))}var U=u?(d-h)/v:h;return p+U*(Math.round(m[y]*100)/100)+f}}function H2(r){r===void 0&&(r={});var e=un(r);return e.duration=0,e.add=function(t,n){var i=li.indexOf(e),s=e.children;i>-1&&li.splice(i,1);function o(d){d.passThrough=!0}for(var a=0;a<s.length;a++)o(s[a]);var l=qh(t,Em(Sm,r));l.targets=l.targets||r.targets;var c=e.duration;l.autoplay=!1,l.direction=e.direction,l.timelineOffset=qe.und(n)?c:Pm(n,c),o(e),l.rewind=e.rewind,e.seek(l.timelineOffset);var u=un(l);o(u),s.push(u);var h=L0(s,r);return e.delay=h.delay,e.endDelay=h.endDelay,e.duration=h.duration,e.seek(0),e.reset(),e.autoplay&&e.play(),e},e}un.version="3.2.0";un.speed=1;un.running=li;un.remove=k2;un.get=Im;un.set=C0;un.convertPx=Cm;un.path=C2;un.setDashoffset=E2;un.stagger=V2;un.timeline=H2;un.easing=Am;un.penner=g0;un.random=function(r,e){return Math.floor(Math.random()*(e-r+1))+r};var Hc=un;var Rm=class{constructor(e){this.i=e}updateObject(){this.i.selectedState!==void 0&&this.i.states[this.i.selectedState].updateMatrix(this.i.object)}updateCamera(){this.i.selectedState===void 0||this.i.object.objectType!=="CombinedCamera"||(this.i.states[this.i.selectedState].updateMatrix(this.i.object),this.i.states[this.i.selectedState].updateCamera(this.i.object))}updateGeometry(){this.i.selectedState===void 0||ai(this.i.object)===!1||(this.i.states[this.i.selectedState].updateMatrix(this.i.object),this.i.states[this.i.selectedState].updateGeometry(this.i.object))}updateSceneGraph(e,t){let n=new me,i=new me;e.updateWorldMatrix(!0,!1),i.copy(e.matrixWorld).invert();for(let s=0,o=this.i.states.length;s<o;++s){let a=this.i.states[s];n.copy(i),this.i.object.parent!==null&&(this.i.object.parent.updateWorldMatrix(!0,!1),n.multiply(this.i.object.parent.matrixWorld)),a.hiddenMatrix.premultiply(n)}}updateMaterialLayer(e){if(this.i.selectedState===void 0||ai(this.i.object)===!1)return;let n=this.i.object.selectedMaterial,i=this.i.states[this.i.selectedState],o=(n!==void 0?i.material[n]:i.material).layersList.find(a=>a.id===e.id);o==null||o.copy(e)}pushMaterialLayer(e){if(this.i.states.length===0||ai(this.i.object)===!1)return;let t=this.i.object;if(t.material instanceof Array){let n=t.selectedMaterial;if(n!==void 0)for(let i=0,s=this.i.states.length;i<s;++i){let o=e.clone();this.i.selectedState!==i&&(o.uniforms[`f${o.id}_alpha`].value=0),this.i.states[i].material[n].layersList.push(o)}}else for(let n=0,i=this.i.states.length;n<i;++n){let s=e.clone();this.i.selectedState!==n&&(s.uniforms[`f${s.id}_alpha`].value=0),this.i.states[n].material.layersList.push(s)}}popMaterialLayer(){if(this.i.states.length===0||ai(this.i.object)===!1)return;let e=this.i.object;if(e.material instanceof Array){let t=e.selectedMaterial;if(t!==void 0)for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material[t].layersList.pop()}else for(let t=0,n=this.i.states.length;t<n;++t)this.i.states[t].material.layersList.pop()}removeMaterialLayer(e){if(this.i.states.length===0||ai(this.i.object)===!1)return null;let t=this.i.object,n=[];if(t.material instanceof Array)for(let i=0,s=this.i.states.length;i<s;++i){let o=t.selectedMaterial;if(o!==void 0){let l=this.i.states[i].material[o];n.push({layer:l.layersList[e]}),l.layersList.splice(e,1)}}else for(let i=0,s=this.i.states.length;i<s;++i){let a=this.i.states[i].material;n.push({layer:a.layersList[e]}),a.layersList.splice(e,1)}return{states:n,pos:e}}restoreMaterialLayerRemoved(e){if(this.i.states.length===0||ai(this.i.object)===!1)return;let t=this.i.object;if(t.material instanceof Array)for(let n=0,i=this.i.states.length;n<i;++n){let s=t.selectedMaterial;s!==void 0&&this.i.states[n].material[s].layersList.splice(e.pos,0,e.states[n].layer)}else for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material.layersList.splice(e.pos,0,e.states[n].layer)}changeMaterialLayer(e){if(this.i.states.length===0||ai(this.i.object)===!1)return null;let t=this.i.object,n=[],i=0;if(t.material instanceof Array){let s=t.selectedMaterial;if(s!==void 0){let l=this.i.states[Number(this.i.selectedState)].material[s].layersList;for(let c=0,u=l.length;c<u;++c)if(l[c].id===e.id){i=c;break}for(let c=0,u=this.i.states.length;c<u;++c){let h=this.i.states[c].material[s].layersList[i],d=e.clone();this.i.selectedState!==c&&(d.uniforms[`f${d.id}_alpha`].value=Number(h.uniforms[`f${h.id}_alpha`].value)),this.i.states[c].material[s].layersList[i]=d,n.push({layer:h})}}}else{let s=this.i.states[Number(this.i.selectedState)].material.layersList;for(let o=0,a=s.length;o<a;++o)if(s[o].id===e.id){i=o;break}for(let o=0,a=this.i.states.length;o<a;++o){let l=this.i.states[o].material.layersList[i],c=e.clone();this.i.selectedState!==o&&(c.uniforms[`f${c.id}_alpha`].value=Number(l.uniforms[`f${l.id}_alpha`].value)),this.i.states[o].material.layersList[i]=c,n.push({layer:l})}}return{states:n,pos:i}}restoreMaterialLayerChanged(e){if(this.i.states.length===0||ai(this.i.object)===!1)return;let t=this.i.object;if(t.material instanceof Array){let n=t.selectedMaterial;if(n!==void 0)for(let i=0,s=this.i.states.length;i<s;++i)this.i.states[i].material[n].layersList[e.pos]=e.states[i].layer}else for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material.layersList[e.pos]=e.states[n].layer}moveMaterialLayer(e,t){if(this.i.states.length===0||ai(this.i.object)===!1)return;let n=this.i.object;if(n.material instanceof Array){let i=n.selectedMaterial;if(i!==void 0)for(let s=0,o=this.i.states.length;s<o;++s){let a=this.i.states[s].material[i].layersList,l=a.splice(t,1)[0];a.splice(e,0,l)}}else for(let i=0,s=this.i.states.length;i<s;++i){let o=this.i.states[i].material.layersList,a=o.splice(t,1)[0];o.splice(e,0,a)}}restoreMaterialLayerMoved(e,t){this.moveMaterialLayer(e,t)}setMaterialLayers(e){let t=this.i.object,n=[];if(t.material instanceof Array){let i=t.selectedMaterial;if(i!==void 0)for(let s=0,o=this.i.states.length;s<o;++s){let a=this.i.states[s].material[i];n.push({layersList:a.layersList});let l=e.head;for(a.layersList=[];l!==void 0;)a.layersList.push(l.clone()),l=l.next}}else for(let i=0,s=this.i.states.length;i<s;++i){let o=this.i.states[i].material;n.push({layersList:o.layersList});let a=e.head;for(o.layersList=[];a!==void 0;)o.layersList.push(a.clone()),a=a.next}return{states:n}}restoreMaterialLayersSet(e){let t=this.i.object;if(t.material instanceof Array){let n=t.selectedMaterial;if(n!==void 0)for(let i=0,s=this.i.states.length;i<s;++i)this.i.states[i].material[n].layersList=e.states[i].layersList}else for(let n=0,i=this.i.states.length;n<i;++n)this.i.states[n].material.layersList=e.states[n].layersList}};function R0(r){var o;let e=[],t=r.groups,n=r.getAttribute("position").array,i=r.getAttribute("normal").array,s=(o=r.getAttribute("uv"))==null?void 0:o.array;return t.forEach(a=>{let l=a.count,c=new we,u=new Float32Array(l*3),h=new Float32Array(l*3),d=new Float32Array(l*2);for(let f=0;f<l;f++){let p=3*(a.start+f),m=3*f;if(u[m]=n[p],u[m+1]=n[p+1],u[m+2]=n[p+2],h[m]=i[p],h[m+1]=i[p+1],h[m+2]=i[p+2],s){let v=2*(a.start+f),g=2*f;d[g]=s[v],d[g+1]=s[v+1]}}c.setAttribute("position",new ge(u,3)),c.setAttribute("normal",new ge(h,3)),s&&c.setAttribute("uv",new ge(d,2)),e.push(c)}),e}var jc=class{constructor(){this.pluginCallbacks=[],this.register(function(e){return new k0(e)}),this.register(function(e){return new V0(e)}),this.register(function(e){return new H0(e)}),this.register(function(e){return new j0(e)}),this.register(function(e){return new W0(e)})}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n){let i=new U0,s=[];for(let o=0,a=this.pluginCallbacks.length;o<a;o++)s.push(this.pluginCallbacks[o](i));i.setPlugins(s),i.write(e,t,n)}},Et={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},wi={};wi[Pt]=Et.NEAREST;wi[Xs]=Et.NEAREST_MIPMAP_NEAREST;wi[qs]=Et.NEAREST_MIPMAP_LINEAR;wi[$e]=Et.LINEAR;wi[jo]=Et.LINEAR_MIPMAP_NEAREST;wi[Ai]=Et.LINEAR_MIPMAP_LINEAR;wi[Zt]=Et.CLAMP_TO_EDGE;wi[di]=Et.REPEAT;wi[qr]=Et.MIRRORED_REPEAT;var B0={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},O0=12,j2=1179937895,W2=2,F0=8,J2=1313821514,X2=5130562;function Wc(r,e){return r.length===e.length&&r.every(function(t,n){return t===e[n]})}function q2(r){if(window.TextEncoder!==void 0)return new TextEncoder().encode(r).buffer;let e=new Uint8Array(new ArrayBuffer(r.length));for(let t=0,n=r.length;t<n;t++){let i=r.charCodeAt(t);e[t]=i>255?32:i}return e.buffer}function Y2(r){return Wc(r.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function K2(r,e,t){let n={min:new Array(r.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(r.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let i=e;i<e+t;i++)for(let s=0;s<r.itemSize;s++){let o;r.itemSize>4?o=r.array[i*r.itemSize+s]:s===0?o=r.getX(i):s===1?o=r.getY(i):s===2?o=r.getZ(i):s===3&&(o=r.getW(i)),n.min[s]=Math.min(n.min[s],o),n.max[s]=Math.max(n.max[s],o)}return n}function z0(r){return Math.ceil(r/4)*4}function Bm(r,e=0){let t=z0(r.byteLength);if(t!==r.byteLength){let n=new Uint8Array(t);if(n.set(new Uint8Array(r)),e!==0)for(let i=r.byteLength;i<t;i++)n[i]=e;return n.buffer}return r}var G0=null,U0=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}write(e,t,n){this.options=Object.assign({},{binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},n),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e);let i=this;Promise.all(this.pending).then(function(){let s=i.buffers,o=i.json,a=i.options,l=i.extensionsUsed,c=new Blob(s,{type:"application/octet-stream"}),u=Object.keys(l);if(u.length>0&&(o.extensionsUsed=u),o.buffers&&o.buffers.length>0&&(o.buffers[0].byteLength=c.size),a.binary===!0){let h=new window.FileReader;h.readAsArrayBuffer(c),h.onloadend=function(){let d=Bm(h.result),f=new DataView(new ArrayBuffer(F0));f.setUint32(0,d.byteLength,!0),f.setUint32(4,X2,!0);let p=Bm(q2(JSON.stringify(o)),32),m=new DataView(new ArrayBuffer(F0));m.setUint32(0,p.byteLength,!0),m.setUint32(4,J2,!0);let v=new ArrayBuffer(O0),g=new DataView(v);g.setUint32(0,j2,!0),g.setUint32(4,W2,!0);let y=O0+m.byteLength+p.byteLength+f.byteLength+d.byteLength;g.setUint32(8,y,!0);let x=new Blob([v,m,p,f,d],{type:"application/octet-stream"}),b=new window.FileReader;b.readAsArrayBuffer(x),b.onloadend=function(){t(b.result)}}}else if(o.buffers&&o.buffers.length>0){let h=new window.FileReader;h.readAsDataURL(c),h.onloadend=function(){let d=h.result;o.buffers[0].uri=d,t(o)}}else t(o)})}serializeUserData(e,t){if(Object.keys(e.userData).length===0)return;let n=this.options,i=this.extensionsUsed;try{let s=JSON.parse(JSON.stringify(e.userData));if(n.includeCustomExtensions&&s.gltfExtensions){t.extensions===void 0&&(t.extensions={});for(let o in s.gltfExtensions)t.extensions[o]=s.gltfExtensions[o],i[o]=!0;delete s.gltfExtensions}Object.keys(s).length>0&&(t.extras=s)}catch(s){console.warn("THREE.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+s.message)}}getUID(e){return this.uids.has(e)||this.uids.set(e,this.uid++),this.uids.get(e)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let n=new M;for(let i=0,s=e.count;i<s;i++)if(Math.abs(n.fromBufferAttribute(e,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);let n=e.clone(),i=new M;for(let s=0,o=n.count;s<o;s++)i.fromBufferAttribute(n,s),i.x===0&&i.y===0&&i.z===0?i.setX(1):i.normalize(),n.setXYZ(s,i.x,i.y,i.z);return t.attributesNormalized.set(e,n),n}applyTextureTransform(e,t){let n=!1,i={};(t.offset.x!==0||t.offset.y!==0)&&(i.offset=t.offset.toArray(),n=!0),t.rotation!==0&&(i.rotation=t.rotation,n=!0),(t.repeat.x!==1||t.repeat.y!==1)&&(i.scale=t.repeat.toArray(),n=!0),n&&(e.extensions=e.extensions||{},e.extensions.KHR_texture_transform=i,this.extensionsUsed.KHR_texture_transform=!0)}processBuffer(e){let t=this.json,n=this.buffers;return t.buffers||(t.buffers=[{byteLength:0}]),n.push(e),0}processBufferView(e,t,n,i,s){let o=this.json;o.bufferViews||(o.bufferViews=[]);let a;t===Et.UNSIGNED_BYTE?a=1:t===Et.UNSIGNED_SHORT?a=2:a=4;let l=z0(i*e.itemSize*a),c=new DataView(new ArrayBuffer(l)),u=0;for(let f=n;f<n+i;f++)for(let p=0;p<e.itemSize;p++){let m;e.itemSize>4?m=e.array[f*e.itemSize+p]:p===0?m=e.getX(f):p===1?m=e.getY(f):p===2?m=e.getZ(f):p===3&&(m=e.getW(f)),t===Et.FLOAT?c.setFloat32(u,m,!0):t===Et.UNSIGNED_INT?c.setUint32(u,m,!0):t===Et.UNSIGNED_SHORT?c.setUint16(u,m,!0):t===Et.UNSIGNED_BYTE&&c.setUint8(u,m),u+=a}let h={buffer:this.processBuffer(c.buffer),byteOffset:this.byteOffset,byteLength:l};return s!==void 0&&(h.target=s),s===Et.ARRAY_BUFFER&&(h.byteStride=e.itemSize*a),this.byteOffset+=l,o.bufferViews.push(h),{id:o.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,n=t.json;return n.bufferViews||(n.bufferViews=[]),new Promise(function(i){let s=new window.FileReader;s.readAsArrayBuffer(e),s.onloadend=function(){let o=Bm(s.result),a={buffer:t.processBuffer(o),byteOffset:t.byteOffset,byteLength:o.byteLength};t.byteOffset+=o.byteLength,i(n.bufferViews.push(a)-1)}})}processAccessor(e,t,n,i){let s=this.options,o=this.json,a={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"},l;if(e.array.constructor===Float32Array)l=Et.FLOAT;else if(e.array.constructor===Uint32Array)l=Et.UNSIGNED_INT;else if(e.array.constructor===Uint16Array)l=Et.UNSIGNED_SHORT;else if(e.array.constructor===Uint8Array)l=Et.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(n===void 0&&(n=0),i===void 0&&(i=e.count),s.truncateDrawRange&&t!==void 0&&t.index===null){let f=n+i,p=t.drawRange.count===1/0?e.count:t.drawRange.start+t.drawRange.count;n=Math.max(n,t.drawRange.start),i=Math.min(f,p)-n,i<0&&(i=0)}if(i===0)return null;let c=K2(e,n,i),u;t!==void 0&&(u=e===t.index?Et.ELEMENT_ARRAY_BUFFER:Et.ARRAY_BUFFER);let h=this.processBufferView(e,l,n,i,u),d={bufferView:h.id,byteOffset:h.byteOffset,componentType:l,count:i,max:c.max,min:c.min,type:a[e.itemSize]};return e.normalized===!0&&(d.normalized=!0),o.accessors||(o.accessors=[]),o.accessors.push(d)-1}processImage(e,t,n){let i=this,s=i.cache,o=i.json,a=i.options,l=i.pending;s.images.has(e)||s.images.set(e,{});let c=s.images.get(e),u=t===zt?"image/png":"image/jpeg",h=u+":flipY/"+n.toString();if(c[h]!==void 0)return c[h];o.images||(o.images=[]);let d={mimeType:u};if(a.embedImages){let p=G0=G0||document.createElement("canvas");p.width=Math.min(e.width,a.maxTextureSize),p.height=Math.min(e.height,a.maxTextureSize);let m=p.getContext("2d");if(n===!0&&(m.translate(0,p.height),m.scale(1,-1)),typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)m.drawImage(e,0,0,p.width,p.height);else{t!==zt&&t!==Nt&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(e.width>a.maxTextureSize||e.height>a.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);let v=new Uint8ClampedArray(e.height*e.width*4);if(t===zt)for(let g=0;g<v.length;g+=4)v[g+0]=e.data[g+0],v[g+1]=e.data[g+1],v[g+2]=e.data[g+2],v[g+3]=e.data[g+3];else for(let g=0,y=0;g<v.length;g+=4,y+=3)v[g+0]=e.data[y+0],v[g+1]=e.data[y+1],v[g+2]=e.data[y+2],v[g+3]=255;m.putImageData(new ImageData(v,e.width,e.height),0,0)}a.binary===!0?l.push(new Promise(function(v){p.toBlob(function(g){i.processBufferViewImage(g).then(function(y){d.bufferView=y,v()})},u)})):d.uri=p.toDataURL(u)}else d.uri=e.src;let f=o.images.push(d)-1;return c[h]=f,f}processSampler(e){let t=this.json;t.samplers||(t.samplers=[]);let n={magFilter:wi[e.magFilter],minFilter:wi[e.minFilter],wrapS:wi[e.wrapS],wrapT:wi[e.wrapT]};return t.samplers.push(n)-1}processTexture(e){let t=this.cache,n=this.json;if(t.textures.has(e))return t.textures.get(e);n.textures||(n.textures=[]);let i={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY)};e.name&&(i.name=e.name),this._invokeAll(function(o){o.writeTexture&&o.writeTexture(e,i)});let s=n.textures.push(i)-1;return t.textures.set(e,s),s}processMaterial(e){let t=this.cache,n=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;n.materials||(n.materials=[]);let i={pbrMetallicRoughness:{}};e.isMeshStandardMaterial!==!0&&e.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let s=e.color.toArray().concat([e.opacity]);if(Wc(s,[1,1,1,1])||(i.pbrMetallicRoughness.baseColorFactor=s),e.isMeshStandardMaterial?(i.pbrMetallicRoughness.metallicFactor=e.metalness,i.pbrMetallicRoughness.roughnessFactor=e.roughness):(i.pbrMetallicRoughness.metallicFactor=.5,i.pbrMetallicRoughness.roughnessFactor=.5),e.metalnessMap||e.roughnessMap)if(e.metalnessMap===e.roughnessMap){let a={index:this.processTexture(e.metalnessMap)};this.applyTextureTransform(a,e.metalnessMap),i.pbrMetallicRoughness.metallicRoughnessTexture=a}else console.warn("THREE.GLTFExporter: Ignoring metalnessMap and roughnessMap because they are not the same Texture.");if(e.map){let a={index:this.processTexture(e.map)};this.applyTextureTransform(a,e.map),i.pbrMetallicRoughness.baseColorTexture=a}if(e.emissive){let a=e.emissive.clone().multiplyScalar(e.emissiveIntensity),l=Math.max(a.r,a.g,a.b);if(l>1&&(a.multiplyScalar(1/l),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),l>0&&(i.emissiveFactor=a.toArray()),e.emissiveMap){let c={index:this.processTexture(e.emissiveMap)};this.applyTextureTransform(c,e.emissiveMap),i.emissiveTexture=c}}if(e.normalMap){let a={index:this.processTexture(e.normalMap)};e.normalScale&&e.normalScale.x!==1&&(a.scale=e.normalScale.x),this.applyTextureTransform(a,e.normalMap),i.normalTexture=a}if(e.aoMap){let a={index:this.processTexture(e.aoMap),texCoord:1};e.aoMapIntensity!==1&&(a.strength=e.aoMapIntensity),this.applyTextureTransform(a,e.aoMap),i.occlusionTexture=a}e.transparent?i.alphaMode="BLEND":e.alphaTest>0&&(i.alphaMode="MASK",i.alphaCutoff=e.alphaTest),e.side===Xt&&(i.doubleSided=!0),e.name!==""&&(i.name=e.name),this.serializeUserData(e,i),this._invokeAll(function(a){a.writeMaterial&&a.writeMaterial(e,i)});let o=n.materials.push(i)-1;return t.materials.set(e,o),o}processMesh(e){let t=this.cache,n=this.json,i=[e.geometry.uuid];if(Array.isArray(e.material))for(let x=0,b=e.material.length;x<b;x++)i.push(e.material[x].uuid);else i.push(e.material.uuid);let s=i.join(":");if(t.meshes.has(s))return t.meshes.get(s);let o=e.geometry,a;if(e.isLineSegments?a=Et.LINES:e.isLineLoop?a=Et.LINE_LOOP:e.isLine?a=Et.LINE_STRIP:e.isPoints?a=Et.POINTS:a=e.material.wireframe?Et.LINES:Et.TRIANGLES,o.isBufferGeometry!==!0)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");let l={},c={},u=[],h=[],d={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},f=o.getAttribute("normal");f!==void 0&&!this.isNormalizedNormalAttribute(f)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),o.setAttribute("normal",this.createNormalizedNormalAttribute(f)));let p=null;for(let x in o.attributes){if(x.substr(0,5)==="morph")continue;let b=o.attributes[x];if(x=d[x]||x.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(x)||(x="_"+x),t.attributes.has(this.getUID(b))){c[x]=t.attributes.get(this.getUID(b));continue}p=null;let _=b.array;x==="JOINTS_0"&&!(_ instanceof Uint16Array)&&!(_ instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),p=new Re(new Uint16Array(_),b.itemSize,b.normalized));let S=this.processAccessor(p||b,o);S!==null&&(c[x]=S,t.attributes.set(this.getUID(b),S))}if(f!==void 0&&o.setAttribute("normal",f),Object.keys(c).length===0)return null;if(e.morphTargetInfluences!==void 0&&e.morphTargetInfluences.length>0){let x=[],b=[],w={};if(e.morphTargetDictionary!==void 0)for(let _ in e.morphTargetDictionary)w[e.morphTargetDictionary[_]]=_;for(let _=0;_<e.morphTargetInfluences.length;++_){let S={},A=!1;for(let T in o.morphAttributes){if(T!=="position"&&T!=="normal"){A||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),A=!0);continue}let L=o.morphAttributes[T][_],C=T.toUpperCase(),U=o.attributes[T];if(t.attributes.has(this.getUID(L))){S[C]=t.attributes.get(this.getUID(L));continue}let P=L.clone();if(!o.morphTargetsRelative)for(let R=0,G=L.count;R<G;R++)P.setXYZ(R,L.getX(R)-U.getX(R),L.getY(R)-U.getY(R),L.getZ(R)-U.getZ(R));S[C]=this.processAccessor(P,o),t.attributes.set(this.getUID(U),S[C])}h.push(S),x.push(e.morphTargetInfluences[_]),e.morphTargetDictionary!==void 0&&b.push(w[_])}l.weights=x,b.length>0&&(l.extras={},l.extras.targetNames=b)}let m=Array.isArray(e.material);if(m&&o.groups.length===0)return null;let v=m?e.material:[e.material],g=m?o.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let x=0,b=g.length;x<b;x++){let w={mode:a,attributes:c};if(this.serializeUserData(o,w),h.length>0&&(w.targets=h),o.index!==null){let S=this.getUID(o.index);(g[x].start!==void 0||g[x].count!==void 0)&&(S+=":"+g[x].start+":"+g[x].count),t.attributes.has(S)?w.indices=t.attributes.get(S):(w.indices=this.processAccessor(o.index,o,g[x].start,g[x].count),t.attributes.set(S,w.indices)),w.indices===null&&delete w.indices}let _=this.processMaterial(v[g[x].materialIndex]);_!==null&&(w.material=_),u.push(w)}l.primitives=u,n.meshes||(n.meshes=[]),this._invokeAll(function(x){x.writeMesh&&x.writeMesh(e,l)});let y=n.meshes.push(l)-1;return t.meshes.set(s,y),y}processCamera(e){let t=this.json;t.cameras||(t.cameras=[]);let n=e.isOrthographicCamera,i={type:n?"orthographic":"perspective"};return n?i.orthographic={xmag:e.right*2,ymag:e.top*2,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:i.perspective={aspectRatio:e.aspect,yfov:Ee.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},e.name!==""&&(i.name=e.type),t.cameras.push(i)-1}processAnimation(e,t){let n=this.json,i=this.nodeMap;n.animations||(n.animations=[]),e=jc.Utils.mergeMorphTargetTracks(e.clone(),t);let s=e.tracks,o=[],a=[];for(let l=0;l<s.length;++l){let c=s[l],u=nt.parseTrackName(c.name),h=nt.findNode(t,u.nodeName),d=B0[u.propertyName];if(u.objectName==="bones"&&(h.isSkinnedMesh===!0?h=h.skeleton.getBoneByName(u.objectIndex):h=void 0),!h||!d)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',c.name),null;let f=1,p=c.values.length/c.times.length;d===B0.morphTargetInfluences&&(p/=h.morphTargetInfluences.length);let m;c.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(m="CUBICSPLINE",p/=3):c.getInterpolation()===Yr?m="STEP":m="LINEAR",a.push({input:this.processAccessor(new Re(c.times,f)),output:this.processAccessor(new Re(c.values,p)),interpolation:m}),o.push({sampler:a.length-1,target:{node:i.get(h),path:d}})}return n.animations.push({name:e.name||"clip_"+n.animations.length,samplers:a,channels:o}),n.animations.length-1}processSkin(e){let t=this.json,n=this.nodeMap,i=t.nodes[n.get(e)],s=e.skeleton;if(s===void 0)return null;let o=e.skeleton.bones[0];if(o===void 0)return null;let a=[],l=new Float32Array(s.bones.length*16),c=new me;for(let h=0;h<s.bones.length;++h)a.push(n.get(s.bones[h])),c.copy(s.boneInverses[h]),c.multiply(e.bindMatrix).toArray(l,h*16);return t.skins===void 0&&(t.skins=[]),t.skins.push({inverseBindMatrices:this.processAccessor(new Re(l,16)),joints:a,skeleton:n.get(o)}),i.skin=t.skins.length-1}processNode(e){let t=this.json,n=this.options,i=this.nodeMap;t.nodes||(t.nodes=[]);let s={};if(n.trs){let a=e.quaternion.toArray(),l=e.position.toArray(),c=e.scale.toArray();Wc(a,[0,0,0,1])||(s.rotation=a),Wc(l,[0,0,0])||(s.translation=l),Wc(c,[1,1,1])||(s.scale=c)}else e.matrixAutoUpdate&&e.updateMatrix(),Y2(e.matrix)===!1&&(s.matrix=e.matrix.elements);if(e.name!==""&&(s.name=String(e.name)),this.serializeUserData(e,s),e.isMesh||e.isLine||e.isPoints){let a=this.processMesh(e);a!==null&&(s.mesh=a)}else e.isCamera&&(s.camera=this.processCamera(e));if(e.isSkinnedMesh&&this.skins.push(e),e.children.length>0){let a=[];for(let l=0,c=e.children.length;l<c;l++){let u=e.children[l];if(u.visible||n.onlyVisible===!1){let h=this.processNode(u);h!==null&&a.push(h)}}a.length>0&&(s.children=a)}this._invokeAll(function(a){a.writeNode&&a.writeNode(e,s)});let o=t.nodes.push(s)-1;return i.set(e,o),o}processScene(e){let t=this.json,n=this.options;t.scenes||(t.scenes=[],t.scene=0);let i={};e.name!==""&&(i.name=e.name),t.scenes.push(i);let s=[];for(let o=0,a=e.children.length;o<a;o++){let l=e.children[o];if(l.visible||n.onlyVisible===!1){let c=this.processNode(l);c!==null&&s.push(c)}}s.length>0&&(i.nodes=s),this.serializeUserData(e,i)}processObjects(e){let t=new An;t.name="AuxScene";for(let n=0;n<e.length;n++)t.children.push(e[n]);this.processScene(t)}processInput(e){let t=this.options;e=e instanceof Array?e:[e],this._invokeAll(function(i){i.beforeParse&&i.beforeParse(e)});let n=[];for(let i=0;i<e.length;i++)e[i]instanceof An?this.processScene(e[i]):n.push(e[i]);n.length>0&&this.processObjects(n);for(let i=0;i<this.skins.length;++i)this.processSkin(this.skins[i]);for(let i=0;i<t.animations.length;++i)this.processAnimation(t.animations[i],e[0]);this._invokeAll(function(i){i.afterParse&&i.afterParse(e)})}_invokeAll(e){for(let t=0,n=this.plugins.length;t<n;t++)e(this.plugins[t])}},k0=class{constructor(e){this.writer=e,this.name="KHR_lights_punctual"}writeNode(e,t){if(!e.isLight)return;if(!e.isDirectionalLight&&!e.isPointLight&&!e.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",e);return}let n=this.writer,i=n.json,s=n.extensionsUsed,o={};e.name&&(o.name=e.name),o.color=e.color.toArray(),o.intensity=e.intensity,e.isDirectionalLight?o.type="directional":e.isPointLight?(o.type="point",e.distance>0&&(o.range=e.distance)):e.isSpotLight&&(o.type="spot",e.distance>0&&(o.range=e.distance),o.spot={},o.spot.innerConeAngle=(e.penumbra-1)*e.angle*-1,o.spot.outerConeAngle=e.angle),e.decay!==void 0&&e.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),e.target&&(e.target.parent!==e||e.target.position.x!==0||e.target.position.y!==0||e.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),s[this.name]||(i.extensions=i.extensions||{},i.extensions[this.name]={lights:[]},s[this.name]=!0);let a=i.extensions[this.name].lights;a.push(o),t.extensions=t.extensions||{},t.extensions[this.name]={light:a.length-1}}},V0=class{constructor(e){this.writer=e,this.name="KHR_materials_unlit"}writeMaterial(e,t){if(!e.isMeshBasicMaterial)return;let i=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},i[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}},H0=class{constructor(e){this.writer=e,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(e,t){if(!e.isGLTFSpecularGlossinessMaterial)return;let n=this.writer,i=n.extensionsUsed,s={};t.pbrMetallicRoughness.baseColorFactor&&(s.diffuseFactor=t.pbrMetallicRoughness.baseColorFactor);let o=[1,1,1];if(e.specular.toArray(o,0),s.specularFactor=o,s.glossinessFactor=e.glossiness,t.pbrMetallicRoughness.baseColorTexture&&(s.diffuseTexture=t.pbrMetallicRoughness.baseColorTexture),e.specularMap){let a={index:n.processTexture(e.specularMap)};n.applyTextureTransform(a,e.specularMap),s.specularGlossinessTexture=a}t.extensions=t.extensions||{},t.extensions[this.name]=s,i[this.name]=!0}},j0=class{constructor(e){this.writer=e,this.name="KHR_materials_transmission"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let n=this.writer,i=n.extensionsUsed,s={};if(s.transmissionFactor=e.transmission,e.transmissionMap){let o={index:n.processTexture(e.transmissionMap)};n.applyTextureTransform(o,e.transmissionMap),s.transmissionTexture=o}t.extensions=t.extensions||{},t.extensions[this.name]=s,i[this.name]=!0}},W0=class{constructor(e){this.writer=e,this.name="KHR_materials_volume"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||e.thickness===0)return;let n=this.writer,i=n.extensionsUsed,s={};if(s.thicknessFactor=e.thickness,e.thicknessMap){let o={index:n.processTexture(e.thicknessMap)};n.applyTextureTransform(o,e.thicknessMap),s.thicknessTexture=o}s.attenuationDistance=e.attenuationDistance,s.attenuationColor=e.attenuationTint.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=s,i[this.name]=!0}};jc.Utils={insertKeyframe:function(r,e){let t=.001,n=r.getValueSize(),i=new r.TimeBufferType(r.times.length+1),s=new r.ValueBufferType(r.values.length+n),o=r.createInterpolant(new r.ValueBufferType(n)),a;if(r.times.length===0){i[0]=e;for(let l=0;l<n;l++)s[l]=0;a=0}else if(e<r.times[0]){if(Math.abs(r.times[0]-e)<t)return 0;i[0]=e,i.set(r.times,1),s.set(o.evaluate(e),0),s.set(r.values,n),a=0}else if(e>r.times[r.times.length-1]){if(Math.abs(r.times[r.times.length-1]-e)<t)return r.times.length-1;i[i.length-1]=e,i.set(r.times,0),s.set(r.values,0),s.set(o.evaluate(e),r.values.length),a=i.length-1}else for(let l=0;l<r.times.length;l++){if(Math.abs(r.times[l]-e)<t)return l;if(r.times[l]<e&&r.times[l+1]>e){i.set(r.times.slice(0,l+1),0),i[l+1]=e,i.set(r.times.slice(l+1),l+2),s.set(r.values.slice(0,(l+1)*n),0),s.set(o.evaluate(e),(l+1)*n),s.set(r.values.slice((l+1)*n),(l+2)*n),a=l+1;break}}return r.times=i,r.values=s,a},mergeMorphTargetTracks:function(r,e){let t=[],n={},i=r.tracks;for(let s=0;s<i.length;++s){let o=i[s],a=nt.parseTrackName(o.name),l=nt.findNode(e,a.nodeName);if(a.propertyName!=="morphTargetInfluences"||a.propertyIndex===void 0){t.push(o);continue}if(o.createInterpolant!==o.InterpolantFactoryMethodDiscrete&&o.createInterpolant!==o.InterpolantFactoryMethodLinear){if(o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),o=o.clone(),o.setInterpolation(Er)}let c=l.morphTargetInfluences.length,u=l.morphTargetDictionary[a.propertyIndex];if(u===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+a.propertyIndex);let h;if(n[l.uuid]===void 0){h=o.clone();let f=new h.ValueBufferType(c*h.times.length);for(let p=0;p<h.times.length;p++)f[p*c+u]=h.values[p];h.name=(a.nodeName||"")+".morphTargetInfluences",h.values=f,n[l.uuid]=h,t.push(h);continue}let d=o.createInterpolant(new o.ValueBufferType(1));h=n[l.uuid];for(let f=0;f<h.times.length;f++)h.values[f*c+u]=d.evaluate(h.times[f]);for(let f=0;f<o.times.length;f++){let p=this.insertKeyframe(h,o.times[f]);h.values[p*c+u]=o.values[f]}}return r.tracks=t,r}};var Kh,Qh,Zh;async function J0(){if(Kh&&Qh&&Zh)return{gltfTransform:Kh,DracoMeshCompressionExtension:Qh,addIndex:Zh};let[{WebIO:r},{KHRONOS_EXTENSIONS:e,DracoMeshCompression:t},{weld:n},{createEncoderModule:i},s]=await Promise.all([import("@gltf-transform/core"),import("@gltf-transform/extensions"),import("@gltf-transform/functions"),import("draco3dgltf"),fetch("/_libraries/draco_encoder.wasm").then(l=>l.arrayBuffer())]),o=new r,a=await i({wasmBinary:s});return o.registerExtensions(e).registerDependencies({"draco3d.encoder":a}),Kh=o,Qh=t,Zh=n({tolerance:1e-4}),{gltfTransform:Kh,DracoMeshCompressionExtension:Qh,addIndex:Zh}}var vS=Cg(Y0());var rI=typeof global=="object"&&global&&global.Object===Object&&global,ed=rI;var sI=typeof self=="object"&&self&&self.Object===Object&&self,oI=ed||sI||Function("return this")(),en=oI;var aI=en.Symbol,Zn=aI;var K0=Object.prototype,lI=K0.hasOwnProperty,cI=K0.toString,Jc=Zn?Zn.toStringTag:void 0;function uI(r){var e=lI.call(r,Jc),t=r[Jc];try{r[Jc]=void 0;var n=!0}catch(s){}var i=cI.call(r);return n&&(e?r[Jc]=t:delete r[Jc]),i}var Q0=uI;var hI=Object.prototype,dI=hI.toString;function fI(r){return dI.call(r)}var Z0=fI;var pI="[object Null]",mI="[object Undefined]",$0=Zn?Zn.toStringTag:void 0;function gI(r){return r==null?r===void 0?mI:pI:$0&&$0 in Object(r)?Q0(r):Z0(r)}var er=gI;function yI(r){return r!=null&&typeof r=="object"}var $n=yI;var vI="[object Symbol]";function xI(r){return typeof r=="symbol"||$n(r)&&er(r)==vI}var tr=xI;function bI(r,e){for(var t=-1,n=r==null?0:r.length,i=Array(n);++t<n;)i[t]=e(r[t],t,r);return i}var ol=bI;var wI=Array.isArray,Jt=wI;var SI=1/0,eb=Zn?Zn.prototype:void 0,tb=eb?eb.toString:void 0;function nb(r){if(typeof r=="string")return r;if(Jt(r))return ol(r,nb)+"";if(tr(r))return tb?tb.call(r):"";var e=r+"";return e=="0"&&1/r==-SI?"-0":e}var ib=nb;var MI=/\s/;function AI(r){for(var e=r.length;e--&&MI.test(r.charAt(e)););return e}var rb=AI;var _I=/^\s+/;function TI(r){return r&&r.slice(0,rb(r)+1).replace(_I,"")}var sb=TI;function EI(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var Rn=EI;var ob=0/0,NI=/^[-+]0x[0-9a-f]+$/i,CI=/^0b[01]+$/i,LI=/^0o[0-7]+$/i,II=parseInt;function PI(r){if(typeof r=="number")return r;if(tr(r))return ob;if(Rn(r)){var e=typeof r.valueOf=="function"?r.valueOf():r;r=Rn(e)?e+"":e}if(typeof r!="string")return r===0?r:+r;r=sb(r);var t=CI.test(r);return t||LI.test(r)?II(r.slice(2),t?2:8):NI.test(r)?ob:+r}var Fm=PI;function DI(r){return r}var td=DI;var RI="[object AsyncFunction]",BI="[object Function]",OI="[object GeneratorFunction]",FI="[object Proxy]";function zI(r){if(!Rn(r))return!1;var e=er(r);return e==BI||e==OI||e==RI||e==FI}var nd=zI;var GI=en["__core-js_shared__"],id=GI;var ab=function(){var r=/[^.]+$/.exec(id&&id.keys&&id.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function UI(r){return!!ab&&ab in r}var lb=UI;var kI=Function.prototype,VI=kI.toString;function HI(r){if(r!=null){try{return VI.call(r)}catch(e){}try{return r+""}catch(e){}}return""}var Ur=HI;var jI=/[\\^$.*+?()[\]{}|]/g,WI=/^\[object .+?Constructor\]$/,JI=Function.prototype,XI=Object.prototype,qI=JI.toString,YI=XI.hasOwnProperty,KI=RegExp("^"+qI.call(YI).replace(jI,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function QI(r){if(!Rn(r)||lb(r))return!1;var e=nd(r)?KI:WI;return e.test(Ur(r))}var cb=QI;function ZI(r,e){return r==null?void 0:r[e]}var ub=ZI;function $I(r,e){var t=ub(r,e);return cb(t)?t:void 0}var ci=$I;var eP=ci(en,"WeakMap"),rd=eP;var hb=Object.create,tP=function(){function r(){}return function(e){if(!Rn(e))return{};if(hb)return hb(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}}(),db=tP;function nP(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++t<n;)e[t]=r[t];return e}var fb=nP;var iP=function(){try{var r=ci(Object,"defineProperty");return r({},"",{}),r}catch(e){}}(),zm=iP;function rP(r,e){for(var t=-1,n=r==null?0:r.length;++t<n&&e(r[t],t,r)!==!1;);return r}var pb=rP;var sP=9007199254740991,oP=/^(?:0|[1-9]\d*)$/;function aP(r,e){var t=typeof r;return e=e==null?sP:e,!!e&&(t=="number"||t!="symbol"&&oP.test(r))&&r>-1&&r%1==0&&r<e}var sd=aP;function lP(r,e,t){e=="__proto__"&&zm?zm(r,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):r[e]=t}var od=lP;function cP(r,e){return r===e||r!==r&&e!==e}var al=cP;var uP=Object.prototype,hP=uP.hasOwnProperty;function dP(r,e,t){var n=r[e];(!(hP.call(r,e)&&al(n,t))||t===void 0&&!(e in r))&&od(r,e,t)}var ad=dP;function fP(r,e,t,n){var i=!t;t||(t={});for(var s=-1,o=e.length;++s<o;){var a=e[s],l=n?n(t[a],r[a],a,t,r):void 0;l===void 0&&(l=r[a]),i?od(t,a,l):ad(t,a,l)}return t}var ws=fP;var pP=9007199254740991;function mP(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=pP}var ll=mP;function gP(r){return r!=null&&ll(r.length)&&!nd(r)}var Ss=gP;var yP=Object.prototype;function vP(r){var e=r&&r.constructor,t=typeof e=="function"&&e.prototype||yP;return r===t}var cl=vP;function xP(r,e){for(var t=-1,n=Array(r);++t<r;)n[t]=e(t);return n}var mb=xP;var bP="[object Arguments]";function wP(r){return $n(r)&&er(r)==bP}var Gm=wP;var gb=Object.prototype,SP=gb.hasOwnProperty,MP=gb.propertyIsEnumerable,AP=Gm(function(){return arguments}())?Gm:function(r){return $n(r)&&SP.call(r,"callee")&&!MP.call(r,"callee")},ld=AP;function _P(){return!1}var yb=_P;var vb=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xb=vb&&typeof module=="object"&&module&&!module.nodeType&&module,TP=xb&&xb.exports===vb,bb=TP?en.Buffer:void 0,EP=bb?bb.isBuffer:void 0,NP=EP||yb,Do=NP;var CP="[object Arguments]",LP="[object Array]",IP="[object Boolean]",PP="[object Date]",DP="[object Error]",RP="[object Function]",BP="[object Map]",OP="[object Number]",FP="[object Object]",zP="[object RegExp]",GP="[object Set]",UP="[object String]",kP="[object WeakMap]",VP="[object ArrayBuffer]",HP="[object DataView]",jP="[object Float32Array]",WP="[object Float64Array]",JP="[object Int8Array]",XP="[object Int16Array]",qP="[object Int32Array]",YP="[object Uint8Array]",KP="[object Uint8ClampedArray]",QP="[object Uint16Array]",ZP="[object Uint32Array]",Ut={};Ut[jP]=Ut[WP]=Ut[JP]=Ut[XP]=Ut[qP]=Ut[YP]=Ut[KP]=Ut[QP]=Ut[ZP]=!0;Ut[CP]=Ut[LP]=Ut[VP]=Ut[IP]=Ut[HP]=Ut[PP]=Ut[DP]=Ut[RP]=Ut[BP]=Ut[OP]=Ut[FP]=Ut[zP]=Ut[GP]=Ut[UP]=Ut[kP]=!1;function $P(r){return $n(r)&&ll(r.length)&&!!Ut[er(r)]}var wb=$P;function eD(r){return function(e){return r(e)}}var Ms=eD;var Sb=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xc=Sb&&typeof module=="object"&&module&&!module.nodeType&&module,tD=Xc&&Xc.exports===Sb,Um=tD&&ed.process,nD=function(){try{var r=Xc&&Xc.require&&Xc.require("util").types;return r||Um&&Um.binding&&Um.binding("util")}catch(e){}}(),kr=nD;var Mb=kr&&kr.isTypedArray,iD=Mb?Ms(Mb):wb,cd=iD;var rD=Object.prototype,sD=rD.hasOwnProperty;function oD(r,e){var t=Jt(r),n=!t&&ld(r),i=!t&&!n&&Do(r),s=!t&&!n&&!i&&cd(r),o=t||n||i||s,a=o?mb(r.length,String):[],l=a.length;for(var c in r)(e||sD.call(r,c))&&!(o&&(c=="length"||i&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||sd(c,l)))&&a.push(c);return a}var ud=oD;function aD(r,e){return function(t){return r(e(t))}}var hd=aD;var lD=hd(Object.keys,Object),Ab=lD;var cD=Object.prototype,uD=cD.hasOwnProperty;function hD(r){if(!cl(r))return Ab(r);var e=[];for(var t in Object(r))uD.call(r,t)&&t!="constructor"&&e.push(t);return e}var _b=hD;function dD(r){return Ss(r)?ud(r):_b(r)}var vr=dD;function fD(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}var Tb=fD;var pD=Object.prototype,mD=pD.hasOwnProperty;function gD(r){if(!Rn(r))return Tb(r);var e=cl(r),t=[];for(var n in r)n=="constructor"&&(e||!mD.call(r,n))||t.push(n);return t}var Eb=gD;function yD(r){return Ss(r)?ud(r,!0):Eb(r)}var ul=yD;var vD=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xD=/^\w*$/;function bD(r,e){if(Jt(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||tr(r)?!0:xD.test(r)||!vD.test(r)||e!=null&&r in Object(e)}var hl=bD;var wD=ci(Object,"create"),Vr=wD;function SD(){this.__data__=Vr?Vr(null):{},this.size=0}var Nb=SD;function MD(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var Cb=MD;var AD="__lodash_hash_undefined__",_D=Object.prototype,TD=_D.hasOwnProperty;function ED(r){var e=this.__data__;if(Vr){var t=e[r];return t===AD?void 0:t}return TD.call(e,r)?e[r]:void 0}var Lb=ED;var ND=Object.prototype,CD=ND.hasOwnProperty;function LD(r){var e=this.__data__;return Vr?e[r]!==void 0:CD.call(e,r)}var Ib=LD;var ID="__lodash_hash_undefined__";function PD(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=Vr&&e===void 0?ID:e,this}var Pb=PD;function dl(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}dl.prototype.clear=Nb;dl.prototype.delete=Cb;dl.prototype.get=Lb;dl.prototype.has=Ib;dl.prototype.set=Pb;var km=dl;function DD(){this.__data__=[],this.size=0}var Db=DD;function RD(r,e){for(var t=r.length;t--;)if(al(r[t][0],e))return t;return-1}var As=RD;var BD=Array.prototype,OD=BD.splice;function FD(r){var e=this.__data__,t=As(e,r);if(t<0)return!1;var n=e.length-1;return t==n?e.pop():OD.call(e,t,1),--this.size,!0}var Rb=FD;function zD(r){var e=this.__data__,t=As(e,r);return t<0?void 0:e[t][1]}var Bb=zD;function GD(r){return As(this.__data__,r)>-1}var Ob=GD;function UD(r,e){var t=this.__data__,n=As(t,r);return n<0?(++this.size,t.push([r,e])):t[n][1]=e,this}var Fb=UD;function fl(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}fl.prototype.clear=Db;fl.prototype.delete=Rb;fl.prototype.get=Bb;fl.prototype.has=Ob;fl.prototype.set=Fb;var _s=fl;var kD=ci(en,"Map"),Ts=kD;function VD(){this.size=0,this.__data__={hash:new km,map:new(Ts||_s),string:new km}}var zb=VD;function HD(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var Gb=HD;function jD(r,e){var t=r.__data__;return Gb(e)?t[typeof e=="string"?"string":"hash"]:t.map}var Es=jD;function WD(r){var e=Es(this,r).delete(r);return this.size-=e?1:0,e}var Ub=WD;function JD(r){return Es(this,r).get(r)}var kb=JD;function XD(r){return Es(this,r).has(r)}var Vb=XD;function qD(r,e){var t=Es(this,r),n=t.size;return t.set(r,e),this.size+=t.size==n?0:1,this}var Hb=qD;function pl(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var n=r[e];this.set(n[0],n[1])}}pl.prototype.clear=zb;pl.prototype.delete=Ub;pl.prototype.get=kb;pl.prototype.has=Vb;pl.prototype.set=Hb;var Ro=pl;var YD="Expected a function";function Vm(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(YD);var t=function(){var n=arguments,i=e?e.apply(this,n):n[0],s=t.cache;if(s.has(i))return s.get(i);var o=r.apply(this,n);return t.cache=s.set(i,o)||s,o};return t.cache=new(Vm.Cache||Ro),t}Vm.Cache=Ro;var jb=Vm;var KD=500;function QD(r){var e=jb(r,function(n){return t.size===KD&&t.clear(),n}),t=e.cache;return e}var Wb=QD;var ZD=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$D=/\\(\\)?/g,eR=Wb(function(r){var e=[];return r.charCodeAt(0)===46&&e.push(""),r.replace(ZD,function(t,n,i,s){e.push(i?s.replace($D,"$1"):n||t)}),e}),Jb=eR;function tR(r){return r==null?"":ib(r)}var Xb=tR;function nR(r,e){return Jt(r)?r:hl(r,e)?[r]:Jb(Xb(r))}var dd=nR;var iR=1/0;function rR(r){if(typeof r=="string"||tr(r))return r;var e=r+"";return e=="0"&&1/r==-iR?"-0":e}var Ns=rR;function sR(r,e){e=dd(e,r);for(var t=0,n=e.length;r!=null&&t<n;)r=r[Ns(e[t++])];return t&&t==n?r:void 0}var ml=sR;function oR(r,e,t){var n=r==null?void 0:ml(r,e);return n===void 0?t:n}var qb=oR;function aR(r,e){for(var t=-1,n=e.length,i=r.length;++t<n;)r[i+t]=e[t];return r}var fd=aR;var lR=hd(Object.getPrototypeOf,Object),pd=lR;function cR(){this.__data__=new _s,this.size=0}var Yb=cR;function uR(r){var e=this.__data__,t=e.delete(r);return this.size=e.size,t}var Kb=uR;function hR(r){return this.__data__.get(r)}var Qb=hR;function dR(r){return this.__data__.has(r)}var Zb=dR;var fR=200;function pR(r,e){var t=this.__data__;if(t instanceof _s){var n=t.__data__;if(!Ts||n.length<fR-1)return n.push([r,e]),this.size=++t.size,this;t=this.__data__=new Ro(n)}return t.set(r,e),this.size=t.size,this}var $b=pR;function gl(r){var e=this.__data__=new _s(r);this.size=e.size}gl.prototype.clear=Yb;gl.prototype.delete=Kb;gl.prototype.get=Qb;gl.prototype.has=Zb;gl.prototype.set=$b;var Cs=gl;function mR(r,e){return r&&ws(e,vr(e),r)}var ew=mR;function gR(r,e){return r&&ws(e,ul(e),r)}var tw=gR;var nw=typeof exports=="object"&&exports&&!exports.nodeType&&exports,iw=nw&&typeof module=="object"&&module&&!module.nodeType&&module,yR=iw&&iw.exports===nw,rw=yR?en.Buffer:void 0,sw=rw?rw.allocUnsafe:void 0;function vR(r,e){if(e)return r.slice();var t=r.length,n=sw?sw(t):new r.constructor(t);return r.copy(n),n}var ow=vR;function xR(r,e){for(var t=-1,n=r==null?0:r.length,i=0,s=[];++t<n;){var o=r[t];e(o,t,r)&&(s[i++]=o)}return s}var aw=xR;function bR(){return[]}var md=bR;var wR=Object.prototype,SR=wR.propertyIsEnumerable,lw=Object.getOwnPropertySymbols,MR=lw?function(r){return r==null?[]:(r=Object(r),aw(lw(r),function(e){return SR.call(r,e)}))}:md,yl=MR;function AR(r,e){return ws(r,yl(r),e)}var cw=AR;var _R=Object.getOwnPropertySymbols,TR=_R?function(r){for(var e=[];r;)fd(e,yl(r)),r=pd(r);return e}:md,gd=TR;function ER(r,e){return ws(r,gd(r),e)}var uw=ER;function NR(r,e,t){var n=e(r);return Jt(r)?n:fd(n,t(r))}var yd=NR;function CR(r){return yd(r,vr,yl)}var qc=CR;function LR(r){return yd(r,ul,gd)}var hw=LR;var IR=ci(en,"DataView"),vd=IR;var PR=ci(en,"Promise"),xd=PR;var DR=ci(en,"Set"),bd=DR;var dw="[object Map]",RR="[object Object]",fw="[object Promise]",pw="[object Set]",mw="[object WeakMap]",gw="[object DataView]",BR=Ur(vd),OR=Ur(Ts),FR=Ur(xd),zR=Ur(bd),GR=Ur(rd),Bo=er;(vd&&Bo(new vd(new ArrayBuffer(1)))!=gw||Ts&&Bo(new Ts)!=dw||xd&&Bo(xd.resolve())!=fw||bd&&Bo(new bd)!=pw||rd&&Bo(new rd)!=mw)&&(Bo=function(r){var e=er(r),t=e==RR?r.constructor:void 0,n=t?Ur(t):"";if(n)switch(n){case BR:return gw;case OR:return dw;case FR:return fw;case zR:return pw;case GR:return mw}return e});var Hr=Bo;var UR=Object.prototype,kR=UR.hasOwnProperty;function VR(r){var e=r.length,t=new r.constructor(e);return e&&typeof r[0]=="string"&&kR.call(r,"index")&&(t.index=r.index,t.input=r.input),t}var yw=VR;var HR=en.Uint8Array,vl=HR;function jR(r){var e=new r.constructor(r.byteLength);return new vl(e).set(new vl(r)),e}var xl=jR;function WR(r,e){var t=e?xl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.byteLength)}var vw=WR;var JR=/\w*$/;function XR(r){var e=new r.constructor(r.source,JR.exec(r));return e.lastIndex=r.lastIndex,e}var xw=XR;var bw=Zn?Zn.prototype:void 0,ww=bw?bw.valueOf:void 0;function qR(r){return ww?Object(ww.call(r)):{}}var Sw=qR;function YR(r,e){var t=e?xl(r.buffer):r.buffer;return new r.constructor(t,r.byteOffset,r.length)}var Mw=YR;var KR="[object Boolean]",QR="[object Date]",ZR="[object Map]",$R="[object Number]",eB="[object RegExp]",tB="[object Set]",nB="[object String]",iB="[object Symbol]",rB="[object ArrayBuffer]",sB="[object DataView]",oB="[object Float32Array]",aB="[object Float64Array]",lB="[object Int8Array]",cB="[object Int16Array]",uB="[object Int32Array]",hB="[object Uint8Array]",dB="[object Uint8ClampedArray]",fB="[object Uint16Array]",pB="[object Uint32Array]";function mB(r,e,t){var n=r.constructor;switch(e){case rB:return xl(r);case KR:case QR:return new n(+r);case sB:return vw(r,t);case oB:case aB:case lB:case cB:case uB:case hB:case dB:case fB:case pB:return Mw(r,t);case ZR:return new n;case $R:case nB:return new n(r);case eB:return xw(r);case tB:return new n;case iB:return Sw(r)}}var Aw=mB;function gB(r){return typeof r.constructor=="function"&&!cl(r)?db(pd(r)):{}}var _w=gB;var yB="[object Map]";function vB(r){return $n(r)&&Hr(r)==yB}var Tw=vB;var Ew=kr&&kr.isMap,xB=Ew?Ms(Ew):Tw,Nw=xB;var bB="[object Set]";function wB(r){return $n(r)&&Hr(r)==bB}var Cw=wB;var Lw=kr&&kr.isSet,SB=Lw?Ms(Lw):Cw,Iw=SB;var MB=1,AB=2,_B=4,Pw="[object Arguments]",TB="[object Array]",EB="[object Boolean]",NB="[object Date]",CB="[object Error]",Dw="[object Function]",LB="[object GeneratorFunction]",IB="[object Map]",PB="[object Number]",Rw="[object Object]",DB="[object RegExp]",RB="[object Set]",BB="[object String]",OB="[object Symbol]",FB="[object WeakMap]",zB="[object ArrayBuffer]",GB="[object DataView]",UB="[object Float32Array]",kB="[object Float64Array]",VB="[object Int8Array]",HB="[object Int16Array]",jB="[object Int32Array]",WB="[object Uint8Array]",JB="[object Uint8ClampedArray]",XB="[object Uint16Array]",qB="[object Uint32Array]",Ot={};Ot[Pw]=Ot[TB]=Ot[zB]=Ot[GB]=Ot[EB]=Ot[NB]=Ot[UB]=Ot[kB]=Ot[VB]=Ot[HB]=Ot[jB]=Ot[IB]=Ot[PB]=Ot[Rw]=Ot[DB]=Ot[RB]=Ot[BB]=Ot[OB]=Ot[WB]=Ot[JB]=Ot[XB]=Ot[qB]=!0;Ot[CB]=Ot[Dw]=Ot[FB]=!1;function wd(r,e,t,n,i,s){var o,a=e&MB,l=e&AB,c=e&_B;if(t&&(o=i?t(r,n,i,s):t(r)),o!==void 0)return o;if(!Rn(r))return r;var u=Jt(r);if(u){if(o=yw(r),!a)return fb(r,o)}else{var h=Hr(r),d=h==Dw||h==LB;if(Do(r))return ow(r,a);if(h==Rw||h==Pw||d&&!i){if(o=l||d?{}:_w(r),!a)return l?uw(r,tw(o,r)):cw(r,ew(o,r))}else{if(!Ot[h])return i?r:{};o=Aw(r,h,a)}}s||(s=new Cs);var f=s.get(r);if(f)return f;s.set(r,o),Iw(r)?r.forEach(function(v){o.add(wd(v,e,t,v,r,s))}):Nw(r)&&r.forEach(function(v,g){o.set(g,wd(v,e,t,g,r,s))});var p=c?l?hw:qc:l?ul:vr,m=u?void 0:p(r);return pb(m||r,function(v,g){m&&(g=v,v=r[g]),ad(o,g,wd(v,e,t,g,r,s))}),o}var Bw=wd;var YB=1,KB=4;function QB(r){return Bw(r,YB|KB)}var Hm=QB;var ZB="__lodash_hash_undefined__";function $B(r){return this.__data__.set(r,ZB),this}var Ow=$B;function eO(r){return this.__data__.has(r)}var Fw=eO;function Sd(r){var e=-1,t=r==null?0:r.length;for(this.__data__=new Ro;++e<t;)this.add(r[e])}Sd.prototype.add=Sd.prototype.push=Ow;Sd.prototype.has=Fw;var zw=Sd;function tO(r,e){for(var t=-1,n=r==null?0:r.length;++t<n;)if(e(r[t],t,r))return!0;return!1}var Gw=tO;function nO(r,e){return r.has(e)}var Uw=nO;var iO=1,rO=2;function sO(r,e,t,n,i,s){var o=t&iO,a=r.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(r),u=s.get(e);if(c&&u)return c==e&&u==r;var h=-1,d=!0,f=t&rO?new zw:void 0;for(s.set(r,e),s.set(e,r);++h<a;){var p=r[h],m=e[h];if(n)var v=o?n(m,p,h,e,r,s):n(p,m,h,r,e,s);if(v!==void 0){if(v)continue;d=!1;break}if(f){if(!Gw(e,function(g,y){if(!Uw(f,y)&&(p===g||i(p,g,t,n,s)))return f.push(y)})){d=!1;break}}else if(!(p===m||i(p,m,t,n,s))){d=!1;break}}return s.delete(r),s.delete(e),d}var Md=sO;function oO(r){var e=-1,t=Array(r.size);return r.forEach(function(n,i){t[++e]=[i,n]}),t}var kw=oO;function aO(r){var e=-1,t=Array(r.size);return r.forEach(function(n){t[++e]=n}),t}var Vw=aO;var lO=1,cO=2,uO="[object Boolean]",hO="[object Date]",dO="[object Error]",fO="[object Map]",pO="[object Number]",mO="[object RegExp]",gO="[object Set]",yO="[object String]",vO="[object Symbol]",xO="[object ArrayBuffer]",bO="[object DataView]",Hw=Zn?Zn.prototype:void 0,jm=Hw?Hw.valueOf:void 0;function wO(r,e,t,n,i,s,o){switch(t){case bO:if(r.byteLength!=e.byteLength||r.byteOffset!=e.byteOffset)return!1;r=r.buffer,e=e.buffer;case xO:return!(r.byteLength!=e.byteLength||!s(new vl(r),new vl(e)));case uO:case hO:case pO:return al(+r,+e);case dO:return r.name==e.name&&r.message==e.message;case mO:case yO:return r==e+"";case fO:var a=kw;case gO:var l=n&lO;if(a||(a=Vw),r.size!=e.size&&!l)return!1;var c=o.get(r);if(c)return c==e;n|=cO,o.set(r,e);var u=Md(a(r),a(e),n,i,s,o);return o.delete(r),u;case vO:if(jm)return jm.call(r)==jm.call(e)}return!1}var jw=wO;var SO=1,MO=Object.prototype,AO=MO.hasOwnProperty;function _O(r,e,t,n,i,s){var o=t&SO,a=qc(r),l=a.length,c=qc(e),u=c.length;if(l!=u&&!o)return!1;for(var h=l;h--;){var d=a[h];if(!(o?d in e:AO.call(e,d)))return!1}var f=s.get(r),p=s.get(e);if(f&&p)return f==e&&p==r;var m=!0;s.set(r,e),s.set(e,r);for(var v=o;++h<l;){d=a[h];var g=r[d],y=e[d];if(n)var x=o?n(y,g,d,e,r,s):n(g,y,d,r,e,s);if(!(x===void 0?g===y||i(g,y,t,n,s):x)){m=!1;break}v||(v=d=="constructor")}if(m&&!v){var b=r.constructor,w=e.constructor;b!=w&&"constructor"in r&&"constructor"in e&&!(typeof b=="function"&&b instanceof b&&typeof w=="function"&&w instanceof w)&&(m=!1)}return s.delete(r),s.delete(e),m}var Ww=_O;var TO=1,Jw="[object Arguments]",Xw="[object Array]",Ad="[object Object]",EO=Object.prototype,qw=EO.hasOwnProperty;function NO(r,e,t,n,i,s){var o=Jt(r),a=Jt(e),l=o?Xw:Hr(r),c=a?Xw:Hr(e);l=l==Jw?Ad:l,c=c==Jw?Ad:c;var u=l==Ad,h=c==Ad,d=l==c;if(d&&Do(r)){if(!Do(e))return!1;o=!0,u=!1}if(d&&!u)return s||(s=new Cs),o||cd(r)?Md(r,e,t,n,i,s):jw(r,e,l,t,n,i,s);if(!(t&TO)){var f=u&&qw.call(r,"__wrapped__"),p=h&&qw.call(e,"__wrapped__");if(f||p){var m=f?r.value():r,v=p?e.value():e;return s||(s=new Cs),i(m,v,t,n,s)}}return d?(s||(s=new Cs),Ww(r,e,t,n,i,s)):!1}var Yw=NO;function Kw(r,e,t,n,i){return r===e?!0:r==null||e==null||!$n(r)&&!$n(e)?r!==r&&e!==e:Yw(r,e,t,n,Kw,i)}var _d=Kw;var CO=1,LO=2;function IO(r,e,t,n){var i=t.length,s=i,o=!n;if(r==null)return!s;for(r=Object(r);i--;){var a=t[i];if(o&&a[2]?a[1]!==r[a[0]]:!(a[0]in r))return!1}for(;++i<s;){a=t[i];var l=a[0],c=r[l],u=a[1];if(o&&a[2]){if(c===void 0&&!(l in r))return!1}else{var h=new Cs;if(n)var d=n(c,u,l,r,e,h);if(!(d===void 0?_d(u,c,CO|LO,n,h):d))return!1}}return!0}var Qw=IO;function PO(r){return r===r&&!Rn(r)}var Td=PO;function DO(r){for(var e=vr(r),t=e.length;t--;){var n=e[t],i=r[n];e[t]=[n,i,Td(i)]}return e}var Zw=DO;function RO(r,e){return function(t){return t==null?!1:t[r]===e&&(e!==void 0||r in Object(t))}}var Ed=RO;function BO(r){var e=Zw(r);return e.length==1&&e[0][2]?Ed(e[0][0],e[0][1]):function(t){return t===r||Qw(t,r,e)}}var $w=BO;function OO(r,e){return r!=null&&e in Object(r)}var eS=OO;function FO(r,e,t){e=dd(e,r);for(var n=-1,i=e.length,s=!1;++n<i;){var o=Ns(e[n]);if(!(s=r!=null&&t(r,o)))break;r=r[o]}return s||++n!=i?s:(i=r==null?0:r.length,!!i&&ll(i)&&sd(o,i)&&(Jt(r)||ld(r)))}var tS=FO;function zO(r,e){return r!=null&&tS(r,e,eS)}var nS=zO;var GO=1,UO=2;function kO(r,e){return hl(r)&&Td(e)?Ed(Ns(r),e):function(t){var n=qb(t,r);return n===void 0&&n===e?nS(t,r):_d(e,n,GO|UO)}}var iS=kO;function VO(r){return function(e){return e==null?void 0:e[r]}}var rS=VO;function HO(r){return function(e){return ml(e,r)}}var sS=HO;function jO(r){return hl(r)?rS(Ns(r)):sS(r)}var oS=jO;function WO(r){return typeof r=="function"?r:r==null?td:typeof r=="object"?Jt(r)?iS(r[0],r[1]):$w(r):oS(r)}var aS=WO;function JO(r){return function(e,t,n){for(var i=-1,s=Object(e),o=n(e),a=o.length;a--;){var l=o[r?a:++i];if(t(s[l],l,s)===!1)break}return e}}var lS=JO;var XO=lS(),cS=XO;function qO(r,e){return r&&cS(r,e,vr)}var uS=qO;function YO(r,e){return function(t,n){if(t==null)return t;if(!Ss(t))return r(t,n);for(var i=t.length,s=e?i:-1,o=Object(t);(e?s--:++s<i)&&n(o[s],s,o)!==!1;);return t}}var hS=YO;var KO=hS(uS),dS=KO;var QO=function(){return en.Date.now()},Nd=QO;var ZO="Expected a function",$O=Math.max,e3=Math.min;function t3(r,e,t){var n,i,s,o,a,l,c=0,u=!1,h=!1,d=!0;if(typeof r!="function")throw new TypeError(ZO);e=Fm(e)||0,Rn(t)&&(u=!!t.leading,h="maxWait"in t,s=h?$O(Fm(t.maxWait)||0,e):s,d="trailing"in t?!!t.trailing:d);function f(_){var S=n,A=i;return n=i=void 0,c=_,o=r.apply(A,S),o}function p(_){return c=_,a=setTimeout(g,e),u?f(_):o}function m(_){var S=_-l,A=_-c,T=e-S;return h?e3(T,s-A):T}function v(_){var S=_-l,A=_-c;return l===void 0||S>=e||S<0||h&&A>=s}function g(){var _=Nd();if(v(_))return y(_);a=setTimeout(g,m(_))}function y(_){return a=void 0,d&&n?f(_):(n=i=void 0,o)}function x(){a!==void 0&&clearTimeout(a),c=0,n=l=i=a=void 0}function b(){return a===void 0?o:y(Nd())}function w(){var _=Nd(),S=v(_);if(n=arguments,i=this,l=_,S){if(a===void 0)return p(l);if(h)return clearTimeout(a),a=setTimeout(g,e),f(l)}return a===void 0&&(a=setTimeout(g,e)),o}return w.cancel=x,w.flush=b,w}var Wm=t3;function n3(r,e){var t=-1,n=Ss(r)?Array(r.length):[];return dS(r,function(i,s,o){n[++t]=e(i,s,o)}),n}var fS=n3;function i3(r,e){var t=r.length;for(r.sort(e);t--;)r[t]=r[t].value;return r}var pS=i3;function r3(r,e){if(r!==e){var t=r!==void 0,n=r===null,i=r===r,s=tr(r),o=e!==void 0,a=e===null,l=e===e,c=tr(e);if(!a&&!c&&!s&&r>e||s&&o&&l&&!a&&!c||n&&o&&l||!t&&l||!i)return 1;if(!n&&!s&&!c&&r<e||c&&t&&i&&!n&&!s||a&&t&&i||!o&&i||!l)return-1}return 0}var mS=r3;function s3(r,e,t){for(var n=-1,i=r.criteria,s=e.criteria,o=i.length,a=t.length;++n<o;){var l=mS(i[n],s[n]);if(l){if(n>=a)return l;var c=t[n];return l*(c=="desc"?-1:1)}}return r.index-e.index}var gS=s3;function o3(r,e,t){e.length?e=ol(e,function(s){return Jt(s)?function(o){return ml(o,s.length===1?s[0]:s)}:s}):e=[td];var n=-1;e=ol(e,Ms(aS));var i=fS(r,function(s,o,a){var l=ol(e,function(c){return c(s)});return{criteria:l,index:++n,value:s}});return pS(i,function(s,o){return gS(s,o,t)})}var yS=o3;function a3(r,e,t,n){return r==null?[]:(Jt(e)||(e=e==null?[]:[e]),t=n?void 0:t,Jt(t)||(t=t==null?[]:[t]),yS(r,e,t))}var Jm=a3;var Cd={isPublish:!1,gltfQueue:[]};function Yc(r,e,t){return r[e.uuid]===void 0&&(r[e.uuid]=e.toJSON(t)),e.uuid}var l3=new jc;function xS(r,e,t){if(r[e.uuid]===void 0)if(e.userData.type==="NonParametricGeometry"||e.userData.type==="SubdivGeometry"){if(e.userData.type==="SubdivGeometry")if(Cd.isPublish)e=Lo.create({geometry:e.clone()}),e.userData.parameters.subdivisions===0&&(delete e.attributes.color,delete e.attributes.faceMap,delete e.attributes.positionWASM,delete e.attributes.indexWASM,delete e.attributes.verticesPerFaceWASM);else{let i=e.originalGeometry;if(i){let s=e.userData;e=i.clone(),e.userData=s}else e=e.clone();delete e.attributes.color,delete e.attributes.faceMap,delete e.attributes.position,delete e.attributes.normal,e.index=null}let n=e.originalGeometry;if(n!==void 0){let i=e.userData;e=n,e.userData=i}if(!Cd.isPublish)r[e.uuid]=e.toJSON();else{let i={type:"NonParametricGeometry",uuid:e.uuid,userData:{}};e.name!==""&&(i.name=e.name),Object.keys(e.userData).length>0&&(i.userData=Ue({},e.userData));let s=e.index===null,o=new Jn;if(Array.isArray(t))R0(e).forEach((l,c)=>{let u=new gt(l,new Xi);o.add(u),l.userData.groupIndex=c,l.userData.materialIndex=e.groups[c].materialIndex,l.index===null&&(s=!0)});else{let a=new gt(e,new Xi);o.add(a)}Cd.gltfQueue.push(new Promise(async a=>{await Promise.all(Cd.gltfQueue),l3.parse(o,async l=>{let{gltfTransform:c,DracoMeshCompressionExtension:u,addIndex:h}=await J0(),d=c.readJSON({json:Hm(l),resources:{}});d.createExtension(u).setRequired(!0).setEncoderOptions({quantizationVolume:"scene"}),s&&await d.transform(h);try{let{json:f,resources:p}=c.writeJSON(d),m=vS.default.fromByteArray(new Uint8Array(p[".bin"]));f.buffers[0].uri=`data:application/octet-stream;base64,${m}`,i.gltf=f,a()}catch(f){i.gltf=l,a()}},{})})),r[e.uuid]=i}}else{let n=e.userData;if(n.type==="VectorGeometry"){let i=e.userData.shape;n=Object.assign({},n,{shape:i.toJSON()})}r[e.uuid]={uuid:e.uuid,userData:n}}return e.uuid}function bl(r){let e=[];for(let t in r){let n=r[t];delete n.metadata,e.push(n)}return e}function bS(r){let e=[];for(let t in r)e.push(r[t]);return e}var Is=class{constructor(e){this.object=e;this.uuid=Ee.generateUUID();this.states=[];this.events=[];this._interpolateMaterialBetweenValues=(e,t,n,i=t.getNames())=>{var s,o,a,l,c;for(let u=0,h=i.length;u<h;++u){let d=i[u],f=`f${t.id}_${d}`,p=`f${n.id}_${d}`,m=t.uniforms[f],v=n.uniforms[p];if(!(m.value===void 0||v===void 0)){if(d==="mode"){m.value!==v.value&&(m.value=v.value);continue}if(typeof m.value=="boolean"){m.value!==v.value&&(m.value=v.value);continue}if(typeof m.value=="number"){m.value!==v.value&&((s=this._animation)==null||s.add({targets:m,value:Number(v.value)},0));continue}if("isVector2"in m.value){m.value.equals(v.value)===!1&&((o=this._animation)==null||o.add({targets:m,x:v.value.x,y:v.value.y},0));continue}if("isVector3"in m.value){m.value.equals(v.value)===!1&&((a=this._animation)==null||a.add({targets:m,x:v.value.x,y:v.value.y,z:v.value.z},0));continue}if("isColor"in m.value){m.value.equals(v.value)===!1&&((l=this._animation)==null||l.add({targets:m.value,r:v.value.r,g:v.value.g,b:v.value.b},0));continue}}}if(t.backLayer){let h=`f${t.backLayer.id}_alpha`,d=t.backLayer.uniforms[h];(c=this._animation)==null||c.add({targets:d,value:0},0)}};this._interpolateMaterialBetweenLayers=(e,t,n)=>{var c,u,h;let i=e.layersList;if(t.backLayer===void 0){let d=n.getValues();d.alpha=0,t.backLayer=i.addLayerBeforeAt(d,t),t.backLayer.isBack=!0,e.dispose()}let s=`f${t.id}_alpha`,o=`f${(c=t.backLayer)==null?void 0:c.id}_alpha`,a=t.uniforms[s],l=(u=t.backLayer)==null?void 0:u.uniforms[o];(h=this._animation)==null||h.add({targets:a,value:0},0).add({targets:l,value:n.uniforms[`f${n.id}_alpha`].value},0)};this._interpolateMaterialTexture=(e,t,n)=>{var d;let i=`f${t.id}_texture`,s=t.uniforms[i].value,o=n.uniforms[`f${n.id}_texture`].value,a=t.uniforms[`f${t.id}_crop`],l=n.uniforms[`f${n.id}_crop`];a&&l&&a.value!==l.value&&(a.value=Number(l.value)),(s.wrapS!==o.wrapS||s.wrapT!==o.wrapT)&&(s.wrapS=o.wrapS,s.wrapT=o.wrapT,s.needsUpdate=!0);let c=s.matrix,u=o.matrix;if(c.equals(u)===!1){let f={repeatX:s.repeat.x,repeatY:s.repeat.y,offsetX:s.offset.x,offsetY:s.offset.y};(d=this._animation)==null||d.add({targets:f,repeatX:o.repeat.x,repeatY:o.repeat.y,offsetX:o.offset.x,offsetY:o.offset.y,update:()=>{s.repeat.set(f.repeatX,f.repeatY),s.offset.set(f.offsetX,f.offsetY),s.updateMatrix(),s.needsUpdate=!0}},0)}let h=["alpha","mode"];t.type==="displace_map"&&h.push("intensity"),this._interpolateMaterialBetweenValues(e,t,n,h)};this._interpolateMaterialGradient=(e,t,n)=>{var p;let i=t.uniforms[`f${t.id}_num`],s=n.uniforms[`f${n.id}_num`],o=`f${t.id}_steps`,a=`f${n.id}_steps`,l=t.uniforms[o],c=n.uniforms[a],u=`f${t.id}_colors`,h=`f${n.id}_colors`,d=t.uniforms[u],f=n.uniforms[h];if(i.value<=s.value){let m=d.value[i.value-1];for(let v=Number(i.value);v<s.value;++v)l.value[v]=1,d.value[v].copy(m);i.value!==s.value&&(i.value=Number(s.value));for(let v=0;v<s.value;++v){let g=d.value[v],y=f.value[v];if(l.value[v]!==c.value[v]||!g.equals(y)){let x={value:l.value[v]};(p=this._animation)==null||p.add({targets:[x,g],value:c.value[v],x:y.x,y:y.y,z:y.z,w:y.w,update:()=>{l.value[v]=x.value}},0)}}}else{let m=[];for(let g=0;g<s.value;++g){let y=d.value[g],x=f.value[g];if(l.value[g]!==c.value[g]||!y.equals(x)){let b={value:l.value[g]};m.push(new Promise(w=>{var _;(_=this._animation)==null||_.add({targets:[b,y],value:c.value[g],x:x.x,y:x.y,z:x.z,w:x.w,update:()=>{l.value[g]=b.value},complete:()=>{w(g)}},0)}))}}let v=f.value[s.value-1];for(let g=Number(s.value);g<i.value;++g){let y=d.value[g];(l.value[g]!==c.value[g]||!y.equals(v))&&m.push(new Promise(x=>{var w;let b={value:l.value[g]};(w=this._animation)==null||w.add({targets:[b,y],value:1,x:v.x,y:v.y,z:v.z,w:v.w,update:()=>{l.value[g]=b.value},complete:()=>{x(g)}},0)}))}Promise.all(m).then(()=>{i.value=Number(s.value)},()=>{})}this._interpolateMaterialBetweenValues(e,t,n,["alpha","mode","gl_type","smooth","offset","morph","angle"])};this.statesManager=new Rm(this)}static get isAllAnimationsEnded(){let e;for(let t in Is.isAnimating){if(Is.isAnimating[t])return!1;e=!0}return e}computeCache(){return this.cache={mouseDown:this.events.find(e=>e.type===Ze.MOUSE_DOWN),mouseUp:this.events.find(e=>e.type===Ze.MOUSE_UP),mouseHover:this.events.find(e=>e.type===Ze.MOUSE_HOVER),start:this.events.find(e=>e.type===Ze.START),lookAt:this.events.find(e=>e.type===Ze.LOOK_AT),follow:this.events.find(e=>e.type===Ze.FOLLOW),keyDown:this.events.filter(e=>e.type===Ze.KEY_DOWN),keyUp:this.events.filter(e=>e.type===Ze.KEY_UP)},this.cache}newState(e){let t=new bs;return t.name=e,t.update(this.object),this.selectedState=this.states.length,this.states.push(t),t}addState(e,t){this.states.splice(t,0,e)}removeState(e){this.selectedState===e&&(this.selectedState=void 0),this.states.splice(e,1)}selectState(e){e!==void 0&&this.states[e].execute(this.object),this.selectedState=e}hasEventType(e,t){return e===Ze.KEY_DOWN||e===Ze.KEY_UP?t===void 0?!1:this.events.some(n=>n.type===e&&n.key===t):this.events.some(n=>n.type===e)}newEvent(){let e=[Ze.MOUSE_DOWN,Ze.MOUSE_UP,Ze.MOUSE_HOVER,Ze.KEY_DOWN].find(n=>this.hasEventType(n)===!1),t=new sl(e);return this.events.push(t),t}addEvent(e,t){this.events.splice(t,0,e);let n=this.events[t].targets;for(let i=0,s=n.length;i<s;++i)n[i].object!==void 0&&Io.add(n[i])}removeEvent(e){let t=this.events[e].targets;for(let n=0,i=t.length;n<i;++n)t[n].object!==void 0&&Io.delete(t[n]);this.events.splice(e,1)}copy(e){this.selectedState=e.selectedState;for(let t=0,n=e.states.length;t<n;++t)this.addState(e.states[t].clone(),t);for(let t=0,n=e.events.length;t<n;++t){this.addEvent(e.events[t].clone(),t);let i=e.events[t].targets;for(let s=0,o=i.length;s<o;++s){let a=i[s].clone();i[s].object===e.object?(a.object=this.object,a.state=this.states[e.states.indexOf(i[s].state)]):(a.object=i[s].object,a.state=i[s].state),this.events[t].addTarget(a,s)}}return this}clone(e){return new Is(e).copy(this)}toJSON(e){e===void 0&&(e={nodes:{},geometries:{},materials:{},textures:{},images:{},interactionStates:{}});let t={uuid:this.uuid};if(this.selectedState!==void 0&&(t.selectedState=this.selectedState),this.states.length>0){t.states=[];for(let n=0,i=this.states.length;n<i;++n)t.states.push(Yc(e.interactionStates,this.states[n],e))}if(this.events.length>0){t.events=[];for(let n=0,i=this.events.length;n<i;++n)t.events.push(this.events[n].toJSON())}return t}fromJSON(e,t,n){var i;if(this.uuid=e.uuid,this.selectedState=e.selectedState,this.states=[],this.events=[],e.states!==void 0)for(let s=0,o=e.states.length;s<o;++s){let a=n[e.states[s]];this.states.push(a),((i=a.camera)==null?void 0:i.targetOffset)===-1&&(a.camera.targetOffset=this.object.getDistanceToTarget())}if(e.events!==void 0)for(let s=0,o=e.events.length;s<o;++s)this.events.push(new sl().fromJSON(e.events[s],t,n));return this}start(){this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._removeBackLayer()),this.states.length>1?(this.states[0].execute(this.object),this._currentState=this.states[0],this._prevState=void 0):this._state0!==void 0?this._state0.execute(this.object):this.events.some(e=>e.type===Ze.LOOK_AT||e.type===Ze.FOLLOW)&&(this._state0=new bs,this._state0.update(this.object))}end(){var e;this._animation!==void 0&&(this._animation.pause(),this._animation=void 0,this._removeBackLayer()),this.states.length>1?this.states[(e=this.selectedState)!=null?e:0].execute(this.object):this._state0!==void 0&&(this._state0.execute(this.object),this._state0=void 0),this._currentState=void 0,this._prevState=void 0}lookAt(e){var t;this.object.lookAt(e),(t=this._animation)==null||t.finished.then(()=>{this.lookAt(e)})}follow(e){this.object.position.copy(e),this.object.parent!==null&&this.object.position.applyMatrix4(new me().copy(this.object.parent.matrixWorld).invert()),this.object.position.applyMatrix4(new me().copy(this.object.hiddenMatrix).invert())}play(e){this.object.visible&&e.state!==void 0&&this.animate(e.state,e)}reverse(e){this.object.visible&&this._prevState!==void 0&&this.animate(this._prevState,e)}_removeBackLayer(){if("material"in this.object){let e=this.object.material;if(e instanceof Array)for(let t=0,n=e.length;t<n;++t){let i=e[t].layersList,s=i.head;for(;s;)if(s.backLayer){delete s.backLayer;let o=s.next;i.removeLayer(s.id),s=o}else s.isBack&&(s.isBack=!1),s=s.next}else{let t=e.layersList,n=t.head;for(;n;)for(;n;)if(n.backLayer){delete n.backLayer;let i=n.next;t.removeLayer(n.id),n=i}else n.isBack&&(n.isBack=!1),n=n.next}}}getTimingFunction(e,t,n){switch(e){case $i.LINEAR:return"cubicBezier( 0, 0, 1, 1 )";case $i.EASE:return"cubicBezier( .25, .1, .25, 1 )";case $i.EASE_IN:return"cubicBezier( .42, 0, 1, 1 )";case $i.EASE_OUT:return"cubicBezier( 0, 0, .58, 1 )";case $i.EASE_IN_OUT:return"cubicBezier( .42, 0, .58, 1 )";case $i.CUBIC:return`cubicBezier( ${t[0]}, ${t[1]}, ${t[2]}, ${t[3]} )`;case $i.SPRING:return`spring( ${n.mass}, ${n.stiffness}, ${n.damping}, ${n.velocity} )`}}animate(e,t){var n,i,s,o,a,l;if(Is.isAnimating[e.uuid]=!0,this._currentState===e){if((n=this._animation)==null?void 0:n.reversed){let c=(s=(i=this._animation)==null?void 0:i.currentTime)!=null?s:0;(o=this._animation)==null||o.reset(),(a=this._animation)==null||a.seek(c),(l=this._animation)==null||l.play()}}else this._prevState=this._currentState,this._currentState=e,this._animation!==void 0&&(Is.isAnimating[this._prevState.uuid]=!1,this._animation.pause()),this._removeBackLayer(),t.cycle===!0&&t.repeat===!0?this._animation=Hc.timeline({duration:t.duration,delay:t.delay/2,endDelay:t.delay/2,direction:"alternate",loop:!0,rewind:t.rewind,easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}):t.cycle===!0&&t.repeat===!1?this._animation=Hc.timeline({duration:t.duration,delay:t.delay,endDelay:t.delay/2,direction:"alternate",rewind:t.rewind,easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}):t.cycle===!1&&t.repeat===!0?this._animation=Hc.timeline({duration:t.duration,delay:t.delay,direction:"normal",loop:!0,easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}):this._animation=Hc.timeline({duration:t.duration,delay:t.delay,direction:"normal",easing:this.getTimingFunction(t.easing,t.cubicControls,t.springParameters)}),this._animation.finished.then(()=>{this._removeBackLayer(),this._animation=void 0,Is.isAnimating[e.uuid]=!1}),this.animateMatrix(e),this.animateGeometry(e),this.animateMaterial(e),this.animateCamera(e)}animateMatrix(e){var s,o,a,l;if(this.object.position.equals(e.position)===!1){let c=this.object.position.clone(),u={t:0};(s=this._animation)==null||s.add({targets:u,t:1,update:()=>{this.object.position.lerpVectors(c,e.position,u.t)}},0)}if(this.object.scale.equals(e.scale)===!1){let c=this.object.scale.clone(),u={t:0};(o=this._animation)==null||o.add({targets:u,t:1,update:()=>{this.object.scale.lerpVectors(c,e.scale,u.t)}},0)}if(this.object.rotation.equals(e.rotation)===!1){let c=this.object.quaternion.clone(),u={t:0},h={x:this.object.rotation.x-e.rotation.x,y:this.object.rotation.y-e.rotation.y,z:this.object.rotation.z-e.rotation.z},d=e.rotation.clone(),f=.01*Ee.DEG2RAD,p=359.99*Ee.DEG2RAD;h.x===Math.PI*2?d.x===0?d.x=f:d.x===Math.PI*2&&(d.x=p):h.x===-Math.PI*2&&(d.x===0?d.x=-f:d.x===Math.PI*2&&(d.x=-p)),h.y===Math.PI*2?d.y===0?d.y=f:d.y===Math.PI*2&&(d.y=p):h.y===-Math.PI*2&&(d.y===0?d.y=-f:d.y===Math.PI*2&&(d.y=-p)),h.z===Math.PI*2?d.z===0?d.z=f:d.z===Math.PI*2&&(d.z=p):h.z===-Math.PI*2&&(d.z===0?d.z=-f:d.z===Math.PI*2&&(d.z=-p));let m=new Tt().setFromEuler(d);(a=this._animation)==null||a.add({targets:u,t:1,update:()=>{wm(c,m,this.object.quaternion,u.t)}},0)}let t=new M,n=new Tt,i=new M;if(e.hiddenMatrix.decompose(t,n,i),"hiddenMatrix"in this.object){let c=new M,u=new Tt,h=new M;if(this.object.hiddenMatrix.decompose(c,u,h),this.object.hiddenMatrix.equals(e.hiddenMatrix)===!1){let d=new M,f=new Tt,p=new M,m={t:0},v=this.object.hiddenMatrix;(l=this._animation)==null||l.add({targets:m,t:1,update:()=>{f.slerpQuaternions(u,n,m.t),d.lerpVectors(c,t,m.t),p.lerpVectors(h,i,m.t),v.compose(d,f,p)}},0)}}}animateGeometry(e){var t;if("geometry"in this.object&&e.geometry!==void 0){let i=this.object.geometry.userData.parameters,s=e.geometry;if(s.width!==i.width||s.height!==i.height||s.depth!==i.depth){let o=this.object;(t=this._animation)==null||t.add({targets:i,width:s.width,height:s.height,depth:s.depth,update:()=>{o.updateGeometry({parameters:{width:i.width,height:i.height,depth:i.depth}})}},0)}}}animateMaterial(e){if("material"in this.object)if(this.object.material instanceof Array)for(let t=0,n=this.object.material.length;t<n;++t)this._interpolateMaterial(this.object.material[t],e.material[t]);else{if(this.object.material.userData.isAsset)return;this._interpolateMaterial(this.object.material,e.material)}}_interpolateMaterial(e,t){let n=e.layersList.head,i=0;for(;n;){if(n.isBack===!0){n=n.next;continue}let s=t.layersList[i++];if(Eh(n)){let o=n.uniforms[`f${n.id}_texture`].value,a=s.uniforms[`f${s.id}_texture`].value;o.image===a.image?this._interpolateMaterialTexture(e,n,s):this._interpolateMaterialBetweenLayers(e,n,s)}else n.type==="gradient"?n.uniforms[`f${n.id}_gl_type`].value===s.uniforms[`f${s.id}_gl_type`].value?this._interpolateMaterialGradient(e,n,s):this._interpolateMaterialBetweenLayers(e,n,s):this._interpolateMaterialBetweenValues(e,n,s);n=n.next}}animateCamera(e){var t,n;if(this.object.objectType==="CombinedCamera"&&e.camera!==void 0){let i=this.object,s=i.cameraType==="OrthographicCamera"?e.camera.zoomOrtho:e.camera.zoomPersp;i.zoom!==s&&((t=this._animation)==null||t.add({targets:i,zoom:s,update:()=>{i.updateProjectionMatrix()}},0)),i.targetOffset!==e.camera.targetOffset&&((n=this._animation)==null||n.add({targets:i,targetOffset:e.camera.targetOffset},0))}}},Ls=Is;Ls.isAnimating={};var Ld=r=>class extends r{hasEntityChild(){return this.children.some(t=>Vh(t))}attach(t,n){this.updateWorldMatrix(!0,!1);let i=new me().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),Vh(t)?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),n!==void 0&&(this.children.pop(),this.children.splice(n,0,t)),this}copy(t,n=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),n===!0)for(let i=0;i<t.children.length;i++){let s=t.children[i];this.add(s.clone())}return this}toJSON(t){let n=t===void 0,i={object:{uuid:"",objectType:""}};t===void 0&&(t={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},i.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let s={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(s.name=this.name),s.matrix=this.matrix.toArray(),this.castShadow===!0&&(s.castShadow=!0),this.receiveShadow===!0&&(s.receiveShadow=!0),this.visible===!1&&(s.visible=!1),this.frustumCulled===!1&&(s.frustumCulled=!1),this.renderOrder!==0&&(s.renderOrder=this.renderOrder),s.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(s.userData=this.userData),this.children.length>0){s.children=[];for(let o of this.children)(Vh(o)||o instanceof vi)&&s.children.push(o.toJSON(t).object)}if(n){let o=bl(t.geometries),a=bl(t.materials),l=bl(t.textures),c=bl(t.images),u=bl(t.interactionStates),h=bS(t.nodes);o.length>0&&(i.geometries=o),a.length>0&&(i.materials=a),l.length>0&&(i.textures=l),c.length>0&&(i.images=c),u.length>0&&(i.interactionStates=u),h.length>0&&(i.nodes=h)}return i.object=s,i}fromJSON(t){return this.uuid=t.uuid,t.name!==void 0&&(this.name=t.name),t.matrix!==void 0?(this.matrix.fromArray(t.matrix),t.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=t.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(t.position!==void 0&&this.position.fromArray(t.position),t.rotation!==void 0&&this.rotation.fromArray(t.rotation),t.quaternion!==void 0&&this.quaternion.fromArray(t.quaternion),t.scale!==void 0&&this.scale.fromArray(t.scale)),this.castShadow=t.castShadow!==void 0,this.receiveShadow=t.receiveShadow!==void 0,t.visible!==void 0&&(this.visible=t.visible),t.frustumCulled!==void 0&&(this.frustumCulled=t.frustumCulled),t.renderOrder!==void 0&&(this.renderOrder=t.renderOrder),t.layers!==void 0&&(this.layers.mask=t.layers),t.userData!==void 0&&(this.userData=t.userData),this}};var ei=r=>"isEntity"in r,wS=r=>"isAbstractMesh"in r,Xm=r=>"objectHelper"in r,Ii=r=>class extends Ld(r){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new me;this.interaction=new Ls(this);this.forceComputeSize=!1}set visibility(t){this.visible=t;for(let n of this.children)ei(n)&&n.traverseEntity(i=>{Xm(i)&&i.visible&&(i.objectHelper.visible=t)})}get visibility(){return this.visible}get interactionCache(){return this.interaction.cache===void 0&&this.interaction.computeCache(),this.interaction.cache}traverseEntity(t){t(this);for(let n of this.children)ei(n)&&n.traverseEntity(t)}computeSingleBoundingBox(){this.singleBoundingBox||(this.singleBoundingBox=new jh),this.singleBoundingBox.setFromObjectSize(this,!1),this.singleBoundingBox.computeVertices(),this.singleBoundingBox.computeEdges(),this.singleBoundingBox.computeFaces()}computeComplexBoundingBox(t){this.complexBoundingBox||(this.complexBoundingBox=new jh),this.complexBoundingBox.setFromObjectSize(this,t),this.complexBoundingBox.computeVertices(),this.complexBoundingBox.computeEdges(),this.complexBoundingBox.computeFaces()}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let n of this.children)n.updateMatrixWorld(t)}updateWorldMatrix(t,n){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),n)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(t){return new this.constructor().shallowCopy(this,t)}shallowCopy(t,n=!0){if(super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),t.interaction!==void 0&&this.interaction.copy(t.interaction),n===!0)for(let i of t.children)ei(i)&&this.add(i.shallowClone());return this}clone(t){return new this.constructor().copy(this,t)}copy(t,n=!0){if(super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),t.interaction!==void 0&&this.interaction.copy(t.interaction),n===!0)for(let i of t.children)ei(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let t=new me,n=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),t.copy(this.matrixWorld).invert(),t.multiply(n);for(let i of this.children)ei(i)&&i.hiddenMatrix.premultiply(t)}toJSON(t){let n=super.toJSON(t),i=n.object;return this.raycastLock===!0&&(i.raycastLock=!0),this.scaleLock===!0&&(i.scaleLock=!0),i.hiddenMatrix=this.hiddenMatrix.toArray(),this.interaction!==void 0&&(i.interaction=this.interaction.toJSON(t)),n}fromJSON(t){return super.fromJSON(t),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.scaleLock!==void 0&&(this.scaleLock=t.scaleLock),this.hiddenMatrix.fromArray(t.hiddenMatrix),this}fromObject3D(t){let n=t.children;return t.children=[],Object.assign(t,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new me}),this.copy(t),t.children=n,this}};var Id=class extends Ke{constructor(e,t={}){super();this.object=e,e.computeComplexBoundingBox(!0);let n=e.complexBoundingBox.getSize(new M),i=.1;this.parameters={type:t.type!==void 0?t.type:"radial",hideBase:t.hideBase!==void 0?t.hideBase:!1,count:t.count!==void 0?t.count:3,ra_radius:t.ra_radius!==void 0?t.ra_radius:Math.max(n.x,n.y)*2,ra_startAngle:t.ra_startAngle!==void 0?t.ra_startAngle:0,ra_endAngle:t.ra_endAngle!==void 0?t.ra_endAngle:360,ra_align:t.ra_align!==void 0?t.ra_align:!1,ra_axis:t.ra_axis!==void 0?t.ra_axis:"y",ra_scale:t.ra_scale!==void 0?t.ra_scale.clone():new M,ra_rotation:t.ra_rotation!==void 0?t.ra_rotation.clone():new On,ra_position:t.ra_position!==void 0?t.ra_position.clone():new M,li_scale:t.li_scale!==void 0?t.li_scale.clone():new M,li_rotation:t.li_rotation!==void 0?t.li_rotation.clone():new On,li_position:t.li_position!==void 0?t.li_position.clone():new M(n.x+n.x*i,0,0).round(),gr_count:t.gr_count!==void 0?t.gr_count.clone():new M(2,2,2),gr_size:t.gr_size!==void 0?t.gr_size.clone():new M(n.x+n.x*i,n.y+n.y*i,n.z+n.z*i).round(),gr_fromCenter:t.gr_fromCenter!==void 0?t.gr_fromCenter:!0},this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let t of this.object.material)t.visible=!0;if(e){let t=this.object.material.map(n=>n.clone());for(let n of this.children)n.material=t}else for(let t of this.children)t.material=this.object.material}for(let t of this.object.material)t.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let t=this.object.material.clone();for(let n of this.children)n.material=t}else for(let t of this.children)t.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.gr_count.x*this.parameters.gr_count.y*this.parameters.gr_count.z:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let t=0,n=e-this.children.length;t<n;++t){let i=this.object.shallowClone(!1);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let t=0,n=this.children.length-e;t<n;++t)this.remove(this.children[0])}_updateRadial(e){let t=e.ra_startAngle*Ee.DEG2RAD,n=e.ra_endAngle*Ee.DEG2RAD,i=t-n,s=new On(e.ra_rotation.x*Ee.DEG2RAD,e.ra_rotation.y*Ee.DEG2RAD,e.ra_rotation.z*Ee.DEG2RAD),o;switch(e.ra_axis){case"x":o=new M(1,0,0);break;case"y":o=new M(0,1,0);break;case"z":o=new M(0,0,1);break}for(let[a,l]of this.children.entries()){l.hiddenMatrix.identity(),l.scale.x=e.ra_scale.x+1,l.scale.y=e.ra_scale.y+1,l.scale.z=e.ra_scale.z+1,l.position.setScalar(0);let c=i/e.count*a-t;switch(e.ra_axis){case"x":l.rotation.set(0,c,0);break;case"y":l.rotation.set(0,0,c);break;case"z":l.rotation.set(c,0,0);break}l.translateOnAxis(o,e.ra_radius),l.position.add(e.ra_position),e.ra_align===!0?(l.rotation.x+=s.x,l.rotation.y+=s.y,l.rotation.z+=s.z):l.rotation.copy(s)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=new On(e.li_rotation.x*Ee.DEG2RAD,e.li_rotation.y*Ee.DEG2RAD,e.li_rotation.z*Ee.DEG2RAD);for(let[n,i]of this.children.entries())i.hiddenMatrix.identity(),i.scale.x=e.li_scale.x*n+1,i.scale.y=e.li_scale.y*n+1,i.scale.z=e.li_scale.z*n+1,i.rotation.x=t.x*n,i.rotation.y=t.y*n,i.rotation.z=t.z*n,i.position.x=e.li_position.x*n,i.position.y=e.li_position.y*n,i.position.z=e.li_position.z*n}_updateGrid(e){let t=0;if(e.gr_fromCenter===!0){let n={x:e.gr_count.x%2==0?2:1,y:e.gr_count.y%2==0?2:1,z:e.gr_count.z%2==0?2:1},i=new M(e.gr_size.x*(e.gr_count.x-n.x)*.5,e.gr_size.y*(e.gr_count.y-n.y)*.5,e.gr_size.z*(e.gr_count.z-n.z)*.5);for(let s=0;s<e.gr_count.x;s++)for(let o=0;o<e.gr_count.y;o++)for(let a=0;a<e.gr_count.z;a++){let l=this.children[t++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=e.gr_size.x*s-i.x,l.position.y=e.gr_size.y*o-i.y,l.position.z=e.gr_size.z*a-i.z}}else for(let n=0;n<e.gr_count.x;n++)for(let i=0;i<e.gr_count.y;i++)for(let s=0;s<e.gr_count.z;s++){let o=this.children[t++];o.hiddenMatrix.identity(),o.scale.setScalar(1),o.rotation.set(0,0,0),o.position.x=e.gr_size.x*n,o.position.y=-e.gr_size.y*i,o.position.z=-e.gr_size.z*s}}toJSON(){return{type:"Cloner",parameters:{type:this.parameters.type,hideBase:this.parameters.hideBase,count:this.parameters.count,ra_radius:this.parameters.ra_radius,ra_startAngle:this.parameters.ra_startAngle,ra_endAngle:this.parameters.ra_endAngle,ra_align:this.parameters.ra_align,ra_axis:this.parameters.ra_axis,ra_scale:this.parameters.ra_scale.toArray(),ra_rotation:this.parameters.ra_rotation.toArray(),ra_position:this.parameters.ra_position.toArray(),li_scale:this.parameters.li_scale.toArray(),li_rotation:this.parameters.li_rotation.toArray(),li_position:this.parameters.li_position.toArray(),gr_count:this.parameters.gr_count.toArray(),gr_size:this.parameters.gr_size.toArray(),gr_fromCenter:this.parameters.gr_fromCenter}}}fromJSON(e){let t=e.parameters;return this.parameters.type=t.type,this.parameters.hideBase=t.hideBase,this.parameters.count=t.count,this.parameters.ra_radius=t.ra_radius,this.parameters.ra_startAngle=t.ra_startAngle,this.parameters.ra_endAngle=t.ra_endAngle,this.parameters.ra_align=t.ra_align,this.parameters.ra_axis=t.ra_axis,this.parameters.ra_scale.fromArray(t.ra_scale),this.parameters.ra_rotation.fromArray(t.ra_rotation),this.parameters.ra_position.fromArray(t.ra_position),this.parameters.li_scale.fromArray(t.li_scale),this.parameters.li_rotation.fromArray(t.li_rotation),this.parameters.li_position.fromArray(t.li_position),this.parameters.gr_count.fromArray(t.gr_count),this.parameters.gr_size.fromArray(t.gr_size),this.parameters.gr_fromCenter=t.gr_fromCenter,this.update(),this.setHideBase(this.parameters.hideBase),this}};var Vn=class extends Ii(gt){constructor(e,t){super(e,t);this.isAbstractMesh=!0;Array.isArray(t)&&(this.selectedMaterial=0)}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,t){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=t!=null?t:0),t=t!=null?t:this.selectedMaterial,this.material[t].dispose(),this.material[t]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let t=this.geometry,n=Uc[t.userData.type],i=this.objectType==="NonParametric"?Object.assign({},t.userData,{geometry:t}):t.userData,s=n.build(n.normalizeInputs(e,i)),o=t.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=o,this.geometry.computeBoundingSphere()}resizeGeometry(e,t,n){Gc.resizeGeometry(this.geometry,{width:e,height:t,depth:n})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let t=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,n=kc(t),i=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(n,i).copy(this,e)}copy(e,t=!0){return super.copy(e,t),e.cloner&&(this.cloner=new Id(e,e.cloner.parameters),this.add(this.cloner)),this}toJSON(e){let t=super.toJSON(e),n=t.object;if(this.cloner!==void 0&&(n.cloner=this.cloner.toJSON()),n.geometry=xS(e.geometries,this.geometry,this.material),Array.isArray(this.material)){let i=[];for(let s=0,o=this.material.length;s<o;s++)i.push(Yc(e.materials,this.material[s],e));n.material=i}else n.material=Yc(e.materials,this.material,e);return t}fromJSON(e){return super.fromJSON(e),e.selectedMaterial!==void 0&&(this.selectedMaterial=e.selectedMaterial),e.cloner!==void 0&&(this.cloner=new Id(this).fromJSON(e.cloner)),this}};var xr=r=>{var e;return e=class extends r{constructor(){super(...arguments);this.isObjectHelper=!0}},e.geometryHelper=new jn(30,30,30),e};var qm=new or,Ym=new ti,SS=new me,br=(r,e,t,n)=>{let i=e,s=r.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Ym.copy(i.boundingSphere),Ym.applyMatrix4(s),t.ray.intersectsSphere(Ym)===!1||(SS.copy(s).invert(),qm.copy(t.ray).applyMatrix4(SS),i.boundingBox!==null&&qm.intersectsBox(i.boundingBox)===!1))return;let o,a,l,c,u=i.index,h=i.attributes.position,d=i.drawRange,f,p,m=Math.max(0,d.start),v=Math.min(u.count,d.start+d.count);for(f=m,p=v;f<p;f+=3)if(a=u.getX(f),l=u.getX(f+1),c=u.getX(f+2),o=g(r,t,qm,h,a,l,c),o){o.faceIndex=Math.floor(f/3),n.push(o);return}function g(y,x,b,w,_,S,A){let T=new M,L=new M,C=new M,U=new M,P=new M;if(T.fromBufferAttribute(w,_),L.fromBufferAttribute(w,S),C.fromBufferAttribute(w,A),b.intersectTriangle(T,L,C,!1,U)===null)return null;P.copy(U),P.applyMatrix4(y.matrixWorld);let G=x.ray.origin.distanceTo(P);return G<x.near||G>x.far?null:{faceIndex:1,distance:G,point:P.clone(),object:y}}};var Kc=class extends xr(xi){constructor(e){super(e);this.object=e;let t=new Ji(15,4,2),n=new dn({wireframe:!0,fog:!1,toneMapped:!1}),i=new gt(t,n);this.add(i);let s=new Ji(15,4,2),o=new dn({wireframe:!0,fog:!1,toneMapped:!1,depthTest:!1,depthWrite:!1}),a=new gt(s,o);this.add(a),this.targetHelper=a,this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e),this.targetHelper.position.copy(e),this.targetHelper.updateWorldMatrix(!1,!0)}raycast(e,t){br(this.object,Kc.geometryHelper,e,t)}};var Qc=class extends xr(Bp){constructor(e,t=15,n=10066329){super(e,t,n);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){br(this.object,Qc.geometryHelper,e,t)}};var Zc=class extends xr(Op){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){br(this.object,Zc.geometryHelper,e,t)}update(){}};var $c=class extends xr(Rp){constructor(e,t=15,n=6710886){super(e,t,n);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){br(this.object,$c.geometryHelper,e,t)}};var Dd=class extends xr(Pp){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){br(this.object,Dd.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Dd._vector,t=this.object.distance?this.object.distance:1e3,n=t*Math.tan(this.object.angle);this.cone.scale.set(n,n,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,o=this.cone.material.length;s<o;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Pd=Dd;Pd._vector=new M;var c3=new M(0,0,1),MS=new M,AS=new M,_S=new Dt,Ps=class extends Vn{constructor(e=Pn.create({}),t=new oi({side:Xt})){super(e,t);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new cn;this._onShapeUpdate=()=>{if(this.geometry instanceof Rc){if(this.geometry.updateFromShape()){let e=this.geometry.drawCount,t=this.geometry.userData;this.updateGeometry(Object.assign(this.geometry.userData,{parameters:Object.assign(t.parameters,{surfaceMaxCount:e+1e3})}))}}else this.updateGeometry({});this.computeSingleBoundingBox(),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};var n;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}toJSON(e){let t=super.toJSON(e);return t.object.objectType="VectorObject",t}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let t=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:t})}}setShape(e){var t,n;this.shape&&((t=this.shape.eventDispatcher)==null||t.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(n=this.shape.eventDispatcher)==null||n.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),_S.getNormalMatrix(this.matrixWorld),MS.copy(c3).applyMatrix3(_S).normalize(),AS.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(MS,AS)}clone(e){let t=this.shape.clone(),n=this.material.clone(),i=this.geometry.userData,s=Pn.create(Object.assign({},i,{shape:t})),o=new Ps(s,n).copy(this,e);return o.shape=t,t.update(),o}raycast(e,t){Vn.prototype.raycast.call(this,e,t)}};var wr=(r,e)=>class extends r{constructor(){super(...arguments);this.objectHelper=new e(this);this.enableHelper=!1}set visibility(n){this.visible=n,this.setHelperVisibility(n),this.setHelperChildrenVisibility(n)}get visibility(){return this.visible}get geometryHelper(){return e.geometryHelper}setHelperVisibility(n){this.objectHelper.visible=n}setHelperChildrenVisibility(n){for(let i of this.children)ei(i)&&i.traverseEntity(s=>{Xm(s)&&s.visible&&(s.objectHelper.visible=n)})}raycast(n,i){this.objectHelper.raycast(n,i)}copy(n,i=!0){return super.copy(n,i),n.enableHelper!==void 0&&(this.enableHelper=n.enableHelper),n.objectHelper!==void 0&&(this.objectHelper.visible=n.objectHelper.visible),this}toJSON(n){let i=super.toJSON(n),s=i.object;return s.enableHelper=this.enableHelper,i}fromJSON(n){return super.fromJSON(n),n.enableHelper!==void 0&&(this.enableHelper=!0),this}};var wl=new M,Km=new M,Qm=class extends wr(Ii(Dr),Kc){constructor(e=100,t=100,n=45,i=50,s=5e4){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Qm.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=window.innerWidth,this.height=window.innerHeight,this.orthoCamera=new Rr(e*-.5,e*.5,t*.5,t*-.5,i,s),this.perspCamera=new Vt(n,e/t,i,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}setDefault(){this.name="Default Camera",this.isEntity=!1,this.enableHelper=!1,this.objectHelper.visible=!1}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(wl),this.targetOffset=wl.distanceTo(e)}getTarget(e=new M){return this.getWorldDirection(Km),this.getWorldPosition(wl),Km.multiplyScalar(this.targetOffset),e.copy(wl).add(Km),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(wl),wl.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Tt),t=new M(0,0,1).applyQuaternion(e),n=new M().copy(Ke.DefaultUp).applyQuaternion(e),i=new M().copy(Ke.DefaultUp).projectOnPlane(t),s=new M().crossVectors(i,n).dot(t)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(n)*s}getViewFrontToObject(e){let t=e.getWorldPosition(new M),i=e.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new M),i=this.getWorldDirection(new M).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5,this.aspect=e/t,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,n,i,s,o){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,n,i,s,o):this.orthoCamera.setViewOffset(e,t,n,i,s,o)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let t={near:this.orthoCamera.near,far:this.orthoCamera.far},n={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.isEntity=!0,this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=t.near,this.orthoCamera.far=t.far,this.perspCamera.near=n.near,this.perspCamera.far=n.far,this.updateProjectionMatrix(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="CombinedCamera",n.cameraType=this.cameraType,n.targetOffset=this.targetOffset,n.isUpVectorFlipped=this.isUpVectorFlipped,n.angleOffsetFromUp=this.angleOffsetFromUp,n.left=this.left,n.right=this.right,n.top=this.top,n.bottom=this.bottom,this.view!==null&&(n.view=Object.assign({},this.view)),n.zoomOrtho=this.orthoCamera.zoom,n.nearOrtho=this.orthoCamera.near,n.far=this.far,n.aspect=this.aspect,n.fov=this.fov,n.focus=this.focus,n.filmGauge=this.filmGauge,n.filmOffset=this.filmOffset,n.zoomPersp=this.perspCamera.zoom,n.nearPersp=this.perspCamera.near,t}fromJSON(e){var t,n;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let i=this.getWorldPosition(new M),s=new M().fromArray(e.orbitControlsTarget);this.targetOffset=s.distanceTo(i)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=(t=e.isUpVectorFlipped)!=null?t:!1,this.angleOffsetFromUp=(n=e.angleOffsetFromUp)!=null?n:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}},Sr=Qm;Sr.DefaultTargetOffset=1e3;var Pi=class extends wr(Ii(Jn),Zc){constructor(){super(...arguments);this.objectType="EmptyObject"}toJSON(e){let t=super.toJSON(e);return t.object.objectType="EmptyObject",t}};var Rd=class extends wr(Ii(Fr),Qc){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.top=1250,n.bottom=-1250,n.right=1250,n.left=-1250,n.near=1,n.far=2500;let i=new xi(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,t=!0){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="LightDirectional",n.color=this.color.getHex(),n.intensity=this.intensity,n.shadow=this.shadow.toJSON(),t}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let t=this.shadow.camera,n=e.shadow.camera;return t.near=n.near,t.far=n.far,t.zoom=n.zoom,t.left=n.left,t.right=n.right,t.top=n.top,t.bottom=n.bottom,n.view!==void 0&&(t.view=Object.assign({},n.view)),this}};var Bd=class extends wr(Ii(xo),$c){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=90,n.aspect=1,n.near=100,n.far=2500;let i=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z),o=new tn(i,s),a=new Da(o,new fe(16755200));a.visible=!1,this._gizmos.shadowmap=a,this.update()}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Da&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Da&&(t.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let t=this._gizmos[e];if(t instanceof Da){let n=this.shadow.camera,i=new M(-n.far+this.position.x,-n.far+this.position.y,-n.far+this.position.z),s=new M(n.far+this.position.x,n.far+this.position.y,n.far+this.position.z);t.box.set(i,s),t.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,t=!0){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="LightPoint",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.decay=this.decay,n.shadow=this.shadow.toJSON(),t}fromJSON(e){var i,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]);let t=this.shadow.camera,n=e.shadow.camera;return t.near=n.near,t.far=n.far,t.zoom=n.zoom,t.fov=n.fov,t.focus=n.focus,t.aspect=n.aspect,t.filmGauge=n.filmGauge,t.filmOffset=n.filmOffset,n.view!==void 0&&(t.view=Object.assign({},n.view)),this}};var TS=new M,ES=new M,NS=new Tt,Od=class extends wr(Ii(vo),Pd){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let n=this.shadow.camera;n.fov=Ee.RAD2DEG*2*this.angle,n.aspect=1,n.near=100,n.far=2500;let i=new xi(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof xi&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),ES.setFromMatrixPosition(this.matrixWorld),NS.setFromRotationMatrix(this.matrixWorld),TS.copy(this.up).applyQuaternion(NS).negate().multiplyScalar(this.distance),this.target.position.copy(ES).add(TS),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,t=!0){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e),n=t.object;return n.objectType="LightSpot",n.color=this.color.getHex(),n.intensity=this.intensity,n.distance=this.distance,n.angle=this.angle,n.decay=this.decay,n.penumbra=this.penumbra,n.shadow=this.shadow.toJSON(),t}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let t=this.shadow.camera,n=e.shadow.camera;return t.near=n.near,t.far=n.far,t.zoom=n.zoom,t.fov=n.fov,t.focus=n.focus,t.aspect=n.aspect,t.filmGauge=n.filmGauge,t.filmOffset=n.filmOffset,n.view!==void 0&&(t.view=Object.assign({},n.view)),this}};var CS=r=>r.tagName==="VIDEO",Sl=class{static resize(e,t,n){let i=e/t,s;if(!n.image)return;let o=n.image;CS(o)?s=o.videoWidth/o.videoHeight:s=o.width/o.height,i>s&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*s/i):n.repeat.set(1,1*s/i)),i<s&&(n.imageType=="WEBCAM"?n.repeat.set(1*i/s*-1,1):n.repeat.set(1*i/s,1)),i==s&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1))}static resizeTextureLayer(e,t,n){let i=e/t,s=n.image!==void 0?n.image.width/n.image.height:1,o;i>s?o={x:1,y:s/i}:i<s?o={x:i/s,y:1}:o={x:1,y:1},n.repeat.set(o.x,o.y),n.updateMatrix()}static resizeTextureLayers(e,t,n){let i=n.userData.layers,s=i.getLayers();for(let o=0;o<s.length;o++){let a=s[o];Eh(a)&&(Sl.resizeTextureLayer(e,t,a.uniforms[`f${a.id}_texture`].value),i.updateLayerUniform())}}static resizeComplex(e,t,n,i){let s=e/t,o,a=n.image;CS(a)?o=a.videoWidth/a.videoHeight:o=a.width/a.height,i.geometry.type.includes("Shape")?(s>o&&(n.imageType=="WEBCAM"?n.repeat.set(1/e*-1,1/t*o/s):n.repeat.set(1/e,1/t*o/s)),s<o&&(n.imageType=="WEBCAM"?n.repeat.set(1/e*s/o*-1,1/t):n.repeat.set(1/e*s/o,1/t)),s==o&&(n.imageType=="WEBCAM"?n.repeat.set(1/e*-1,1/t):n.repeat.set(1/e,1/t))):(s>o&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1*o/s):n.repeat.set(1,1*o/s)),s<o&&(n.imageType=="WEBCAM"?n.repeat.set(1*s/o*-1,1):n.repeat.set(1*s/o,1)),s==o&&(n.imageType=="WEBCAM"?n.repeat.set(-1,1):n.repeat.set(1,1)))}};var Ml=class extends Vn{constructor(e,t=new oi){super(e,t);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&Sl.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,t){super.resizeGeometry(e,t,0),this.material.userData.layers&&Sl.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let t=super.toJSON(e);return t.object.objectType="Mesh2D",t}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let t,n;if(e instanceof ah){let o=e.image;t=o.videoWidth*.5,n=o.videoHeight*.5}else{let o=e.image;t=o.width*.5,n=o.height*.5}let i=kh.create({parameters:{width:t,height:n}}),s=new oi;return s.layersList.changeLayer(0,{type:lt.TEXTURE,texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Ml(i,s)}};var Al=class extends Vn{constructor(e,t=new Ci){super(e,t);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let t=super.toJSON(e);return t.object.objectType="Mesh3D",t}};var Fd=class extends Al{constructor(e,t=new Ci){super(e,t);this.objectType="NonParametric"}toJSON(e){let t=super.toJSON(e);return t.object.objectType="NonParametric",t}};var Ds;(function(n){n[n.TEXT=0]="TEXT",n[n.ARRAY_BUFFER=1]="ARRAY_BUFFER",n[n.BINARY_STRING=2]="BINARY_STRING"})(Ds||(Ds={}));function LS(r,e,t=1){let n=new FileReader;return new Promise((i,s)=>{let o=()=>{s({error:!0,filename:r.name}),e.itemError(r.name),e.itemEnd(r.name)};switch(n.addEventListener("loadstart",()=>{e.itemStart(r.name)}),n.addEventListener("load",a=>{var c;let l=(c=a.target)==null?void 0:c.result;l!=null?i(l):o()},!1),n.addEventListener("error",o),t){case 0:n.readAsText(r);break;case 2:n.readAsBinaryString!==void 0&&n.readAsBinaryString(r);break;case 1:default:n.readAsArrayBuffer(r)}})}var Zm=class extends fn{constructor(e){super(e);this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new DS(t)}),this.register(function(t){return new zS(t)}),this.register(function(t){return new GS(t)}),this.register(function(t){return new RS(t)}),this.register(function(t){return new BS(t)}),this.register(function(t){return new OS(t)}),this.register(function(t){return new FS(t)}),this.register(function(t){return new IS(t)}),this.register(function(t){return new US(t)})}load(e,t,n,i){let s=this,o;this.resourcePath!==""?o=this.resourcePath:this.path!==""?o=this.path:o=Ei.extractUrlBase(e),this.manager.itemStart(e);let a=function(c){i?i(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new Xn(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,o,function(u){t(u),s.manager.itemEnd(e)},a)}catch(u){a(u)}},n,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let s,o={},a={};if(typeof e=="string")s=e;else if(Ei.decodeText(new Uint8Array(e,0,4))===kS){try{o[dt.KHR_BINARY_GLTF]=new HS(e)}catch(h){i&&i(h);return}s=o[dt.KHR_BINARY_GLTF].content}else s=Ei.decodeText(new Uint8Array(e));let l=JSON.parse(s);if(l.asset===void 0||l.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new $S(l,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){let h=this.pluginCallbacks[u](c);a[h.name]=h,o[h.name]=!0}if(l.extensionsUsed)for(let u=0;u<l.extensionsUsed.length;++u){let h=l.extensionsUsed[u],d=l.extensionsRequired||[];switch(h){case dt.KHR_MATERIALS_UNLIT:o[h]=new PS;break;case dt.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:o[h]=new JS;break;case dt.KHR_DRACO_MESH_COMPRESSION:o[h]=new jS(l,this.dracoLoader);break;case dt.KHR_TEXTURE_TRANSFORM:o[h]=new WS;break;case dt.KHR_MESH_QUANTIZATION:o[h]=new XS;break;default:d.indexOf(h)>=0&&a[h]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+h+'".')}}c.setExtensions(o),c.setPlugins(a),c.parse(n,i)}};function u3(){let r={};return{get:function(e){return r[e]},add:function(e,t){r[e]=t},remove:function(e){delete r[e]},removeAll:function(){r={}}}}var dt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"},IS=class{constructor(e){this.parser=e,this.name=dt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){let s=t[n];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n="light:"+e,i=t.cache.get(n);if(i)return i;let s=t.json,l=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e],c,u=new fe(16777215);l.color!==void 0&&u.fromArray(l.color);let h=l.range!==void 0?l.range:0;switch(l.type){case"directional":c=new Fr(u),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new xo(u),c.distance=h;break;case"spot":c=new vo(u),c.distance=h,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,c.angle=l.spot.outerConeAngle,c.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return c.position.set(0,0,0),c.decay=2,l.intensity!==void 0&&(c.intensity=l.intensity),c.name=t.createUniqueName(l.name||"light_"+e),i=Promise.resolve(c),t.cache.add(n,i),i}createNodeAttachment(e){let t=this,n=this.parser,s=n.json.nodes[e],a=(s.extensions&&s.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(l){return n._getNodeRef(t.cache,a,l)})}},PS=class{constructor(){this.name=dt.KHR_MATERIALS_UNLIT}getMaterialType(){return dn}extendParams(e,t,n){let i=[];e.color=new fe(1,1,1),e.opacity=1;let s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){let o=s.baseColorFactor;e.color.fromArray(o),e.opacity=o[3]}s.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",s.baseColorTexture))}return Promise.all(i)}},DS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(s.push(n.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){let a=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new O(a,-a)}return Promise.all(s)}},RS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&s.push(n.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(s)}},BS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_VOLUME}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&s.push(n.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||0;let a=o.attenuationColor||[1,1,1];return t.attenuationTint=new fe(a[0],a[1],a[2]),Promise.all(s)}},OS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_IOR}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=i.extensions[this.name];return t.ior=s.ior!==void 0?s.ior:1.5,Promise.resolve()}},FS=class{constructor(e){this.parser=e,this.name=dt.KHR_MATERIALS_SPECULAR}getMaterialType(e){let n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:Or}extendMaterialParams(e,t){let n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();let s=[],o=i.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&s.push(n.assignTexture(t,"specularIntensityMap",o.specularTexture));let a=o.specularColorFactor||[1,1,1];return t.specularTint=new fe(a[0],a[1],a[2]),o.specularColorTexture!==void 0&&s.push(n.assignTexture(t,"specularTintMap",o.specularColorTexture).then(function(l){l.encoding=Fi})),Promise.all(s)}},zS=class{constructor(e){this.parser=e,this.name=dt.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;let s=i.extensions[this.name],o=n.images[s.source],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,o,a)}},GS=class{constructor(e){this.parser=e,this.name=dt.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,n=this.parser,i=n.json,s=i.textures[e];if(!s.extensions||!s.extensions[t])return null;let o=s.extensions[t],a=i.images[o.source],l=n.textureLoader;if(a.uri){let c=n.options.manager.getHandler(a.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return n.loadTextureImage(e,a,l);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}},US=class{constructor(e){this.name=dt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let i=n.extensions[this.name],s=this.parser.getDependency("buffer",i.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return Promise.all([s,o.ready]).then(function(a){let l=i.byteOffset||0,c=i.byteLength||0,u=i.count,h=i.byteStride,d=new ArrayBuffer(u*h),f=new Uint8Array(a[0],l,c);return o.decodeGltfBuffer(new Uint8Array(d),u,h,f,i.mode,i.filter),d})}else return null}},kS="glTF",eu=12,VS={JSON:1313821514,BIN:5130562},HS=class{constructor(e){this.name=dt.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,eu);if(this.header={magic:Ei.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==kS)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");let n=this.header.length-eu,i=new DataView(e,eu),s=0;for(;s<n;){let o=i.getUint32(s,!0);s+=4;let a=i.getUint32(s,!0);if(s+=4,a===VS.JSON){let l=new Uint8Array(e,eu+s,o);this.content=Ei.decodeText(l)}else if(a===VS.BIN){let l=eu+s;this.body=e.slice(l,l+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}},jS=class{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=dt.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,i=this.dracoLoader,s=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},l={},c={};for(let u in o){let h=$m[u]||u.toLowerCase();a[h]=o[u]}for(let u in e.attributes){let h=$m[u]||u.toLowerCase();if(o[u]!==void 0){let d=n.accessors[e.attributes[u]],f=tu[d.componentType];c[h]=f,l[h]=d.normalized===!0}}return t.getDependency("bufferView",s).then(function(u){return new Promise(function(h){i.decodeDracoFile(u,function(d){for(let f in d.attributes){let p=d.attributes[f],m=l[f];m!==void 0&&(p.normalized=m)}h(d)},a,c)})})}},WS=class{constructor(){this.name=dt.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return t.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}},zd=class extends Xi{constructor(e){super();this.isGLTFSpecularGlossinessMaterial=!0;let t=["#ifdef USE_SPECULARMAP"," uniform sampler2D specularMap;","#endif"].join(`
|
|
4115
4115
|
`),n=["#ifdef USE_GLOSSINESSMAP"," uniform sampler2D glossinessMap;","#endif"].join(`
|
|
4116
4116
|
`),i=["vec3 specularFactor = specular;","#ifdef USE_SPECULARMAP"," vec4 texelSpecular = texture2D( specularMap, vUv );"," texelSpecular = sRGBToLinear( texelSpecular );"," // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture"," specularFactor *= texelSpecular.rgb;","#endif"].join(`
|
|
4117
4117
|
`),s=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP"," vec4 texelGlossiness = texture2D( glossinessMap, vUv );"," // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture"," glossinessFactor *= texelGlossiness.a;","#endif"].join(`
|
|
@@ -4390,6 +4390,6 @@ vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord
|
|
|
4390
4390
|
#else
|
|
4391
4391
|
float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset));
|
|
4392
4392
|
#endif
|
|
4393
|
-
outputColor=vec4(color,inputColor.a);}`,AM=class extends Mr{constructor(r={}){let e=Object.assign({blendFunction:ut.NORMAL,eskil:!1,offset:.5,darkness:.5},r);super("VignetteEffect",bF,{blendFunction:e.blendFunction,uniforms:new Map([["offset",new Ae(e.offset)],["darkness",new Ae(e.darkness)]])});this.eskil=e.eskil}get eskil(){return this.defines.has("ESKIL")}set eskil(r){this.eskil!==r&&(r?this.defines.set("ESKIL","1"):this.defines.delete("ESKIL"),this.setChanged())}},j$=[new Float32Array(3),new Float32Array(3)],W$=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],J$=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];var X$=[new Float32Array(2),new Float32Array(2)];var q$=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),Y$=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],K$=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],Q$=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];var Z$=new Map([[Hn(0,0,0,0),new Float32Array([0,0,0,0])],[Hn(0,0,0,1),new Float32Array([0,0,0,1])],[Hn(0,0,1,0),new Float32Array([0,0,1,0])],[Hn(0,0,1,1),new Float32Array([0,0,1,1])],[Hn(0,1,0,0),new Float32Array([0,1,0,0])],[Hn(0,1,0,1),new Float32Array([0,1,0,1])],[Hn(0,1,1,0),new Float32Array([0,1,1,0])],[Hn(0,1,1,1),new Float32Array([0,1,1,1])],[Hn(1,0,0,0),new Float32Array([1,0,0,0])],[Hn(1,0,0,1),new Float32Array([1,0,0,1])],[Hn(1,0,1,0),new Float32Array([1,0,1,0])],[Hn(1,0,1,1),new Float32Array([1,0,1,1])],[Hn(1,1,0,0),new Float32Array([1,1,0,0])],[Hn(1,1,0,1),new Float32Array([1,1,0,1])],[Hn(1,1,1,0),new Float32Array([1,1,1,0])],[Hn(1,1,1,1),new Float32Array([1,1,1,1])]]);function ag(r,e,t){return r+(e-r)*t}function Hn(r,e,t,n){let i=ag(r,e,1-.25),s=ag(t,n,1-.25);return ag(i,s,1-.125)}var _M=class extends fn{load(r=()=>{},e=null){arguments.length===4?(r=arguments[1],e=arguments[3]):(arguments.length===3||typeof arguments[0]!="function")&&(r=arguments[1],e=null);let t=this.manager,n=new yo;return new Promise((i,s)=>{let o=new Image,a=new Image;n.onError=l=>{t.itemError(l),e!==null?(e(`Failed to load ${l}`),i()):s(`Failed to load ${l}`)},n.onLoad=()=>{let l=[o,a];r(l),i(l)},o.addEventListener("error",l=>{n.itemError("smaa-search")}),a.addEventListener("error",l=>{n.itemError("smaa-area")}),o.addEventListener("load",()=>{t.itemEnd("smaa-search"),n.itemEnd("smaa-search")}),a.addEventListener("load",()=>{t.itemEnd("smaa-area"),n.itemEnd("smaa-area")}),t.itemStart("smaa-search"),t.itemStart("smaa-area"),n.itemStart("smaa-search"),n.itemStart("smaa-area"),o.src=wM,a.src=SM})}};var hn=class{constructor(e,t){this.enabled=!1;this.effect=new e(t),Object.defineProperty(this,"opacity",{enumerable:!0,set(n){this.effect.blendMode.opacity.value=n},get(){return this.effect.blendMode.opacity.value}}),Object.defineProperty(this,"blendFunction",{enumerable:!0,set(n){this.effect.blendMode.setBlendFunction(Number(n))},get(){return this.effect.blendMode.blendFunction}}),this.blendFunction=ut.NORMAL}toJSON(){let e=["constructor","effect","subscriptions"],t=Ue({},this),n=Object.getPrototypeOf(this),i=Object.getOwnPropertyNames(n);for(let s of i){let o=Object.getOwnPropertyDescriptor(n,s);o&&typeof o.get=="function"&&(t[s]=this[s])}return e.forEach(s=>delete t[s]),t}};var ru=class extends hn{constructor(){super(fM);this.blendFunction=ut.SCREEN}set intensity(e){this.effect.intensity=e}get intensity(){return this.effect.intensity}set luminanceThreshold(e){this.effect.luminanceMaterial.threshold=e}get luminanceThreshold(){return this.effect.luminanceMaterial.threshold}set luminanceSmoothing(e){this.effect.luminanceMaterial.smoothing=e}get luminanceSmoothing(){return this.effect.luminanceMaterial.smoothing}set blurScale(e){this.effect.blurPass.scale=e}get blurScale(){return this.effect.blurPass.scale}set kernelSize(e){this.effect.blurPass.kernelSize=e}get kernelSize(){return this.effect.blurPass.kernelSize}};var su=class extends hn{constructor(){super(pM)}set contrast(e){this.effect.uniforms.get("contrast").value=e}get contrast(){return this.effect.uniforms.get("contrast").value}set brightness(e){this.effect.uniforms.get("brightness").value=e}get brightness(){return this.effect.uniforms.get("brightness").value}};var ou=class extends hn{constructor(){super(gM);this.effect.offset=new O(.01,.01)}set offset(e){this.effect.offset.set(e[0]/1e3,e[1]/1e3)}get offset(){return[this.effect.offset.x*1e3,this.effect.offset.y*1e3]}};var au=class extends hn{constructor(){super(mM)}};var lu=class extends hn{constructor(){super(vM);this._hue=0}set hue(e){this._hue=e,this.effect.setHue(e)}get hue(){return this._hue}set saturation(e){this.effect.uniforms.get("saturation").value=e}get saturation(){return this.effect.uniforms.get("saturation").value}};var cu=class extends hn{constructor(){super(xM);this.blendFunction=ut.OVERLAY}};var uu=class extends hn{constructor(){super(AM)}get eskil(){return this.effect.eskil}set eskil(e){this.effect.eskil=e}get darkness(){return this.effect.uniforms.get("darkness").value}set darkness(e){this.effect.uniforms.get("darkness").value=e}get offset(){return this.effect.uniforms.get("offset").value}set offset(e){this.effect.uniforms.get("offset").value=e}};var hu=class extends hn{constructor(e){super(yM,e)}set focalLength(e){this.effect.circleOfConfusionMaterial.uniforms.focalLength.value=e}get focalLength(){return this.effect.circleOfConfusionMaterial.uniforms.focalLength.value}set focusDistance(e){this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value=e}get focusDistance(){return this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value}get bokehScale(){return this.effect.bokehScale}set bokehScale(e){this.effect.bokehScale=e}};var du=class extends hn{constructor(){super(bM)}get granularity(){return this.effect.getGranularity()}set granularity(e){this.effect.setGranularity(e)}};function TM(r,e){return e&&e.enabled&&r.push(e.effect),r}var fu=class{constructor(){this._scene=new An;this._camera=new Sr;this.effects=new Map;this.loadingManager=new yo;this.smaaImageLoader=new _M(this.loadingManager);this.renderPass=new sg;this._renderToScreen=!0;this.clock=new Ep,this.enabled=!1,this.debug=!1,this.effects.set("bloom",new ru),this.effects.set("chromaticAberration",new ou),this.effects.set("vignette",new uu),this.effects.set("noise",new cu),this.effects.set("colorAverage",new au),this.effects.set("hueSaturation",new lu),this.effects.set("brightnessContrast",new su),this.effects.set("depthOfField",new hu),this.effects.set("pixelation",new du)}get scene(){return this._scene}set scene(e){this._scene=e,this._initPasses()}get camera(){return this._camera}set camera(e){this._camera=e,this._initPasses()}_initSmaa(){let e=this.effectComposer.passes.length;this.smaaImageLoader.load(([t,n])=>{if(!this.effectComposer)return;let i=new MM(t,n,Uo.ULTRA,Vd.COLOR);i.edgeDetectionMaterial.setPredicationMode(oM.DEPTH),i.edgeDetectionMaterial.setEdgeDetectionThreshold(.05),i.edgeDetectionMaterial.setPredicationThreshold(.002),i.edgeDetectionMaterial.setPredicationScale(1),this.effectComposer.addPass(new Hd(this.camera,i),e)})}_initPasses(){if(!(!this.effectComposer||!this.renderer))if(this.effectComposer.removeAllPasses(),this.renderPass=new sg(this.scene,this.camera),this.enabled){this.effectComposer.addPass(this.renderPass),this._initSmaa();let e=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(TM,[]),t=[this.effects.get("pixelation")].reduce(TM,[]);t.length>0&&this.effectComposer.addPass(new Hd(this.camera,...t)),this.effectComposer.addPass(new Hd(this.camera,...e))}else this.effectComposer.addPass(this.renderPass)}reinit(){!this.renderer||(this.effectComposer=new dM(this.renderer),this._initPasses())}init({renderer:e,camera:t,scene:n}){this.renderer=e,this.scene=n,this.camera=t,this._initSavePass(),this.reinit()}_initSavePass(){if(this._savePass)return;let e=new O;this.renderer.getDrawingBufferSize(e);let t=this.renderer.capabilities.isWebGL2?Zr:bt;this._rt=new t(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:di,wrapT:di}),this._savePass=new lM(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){var n,i;let t=this.effectComposer;!t||(e===!0?(((n=this.renderer)==null?void 0:n.capabilities.isWebGL2)&&(t.multisampling=0),t.removePass(this._savePass),t.passes[t.passes.length-1].renderToScreen=!0,t.autoRenderToScreen=!0):(((i=this.renderer)==null?void 0:i.capabilities.isWebGL2)&&(t.multisampling=4),t.autoRenderToScreen=!1,t.passes[t.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,t.addPass(this._savePass)),this._renderToScreen=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}fromJSON(e){e&&(Object.keys(e).forEach(t=>{let n=e[t],i=this.effects.get(t);Object.keys(n).forEach(s=>{i[s]=n[s]})}),this.enabled=e.enabled)}toJSON(){let e={};return this.effects.forEach((t,n)=>{e[n]=t.toJSON()},e),Ue({enabled:this.enabled},e)}render(){var e;(e=this.effectComposer)==null||e.render(this.clock.getDelta())}setScissor(e,t,n,i){if(!this.effectComposer||!this.renderer)return;e instanceof Qe?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,n,i),this.effectComposer.outputBuffer.scissor.set(e,t,n,i));let s=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(s),this.effectComposer.outputBuffer.scissor.multiplyScalar(s),this.renderer.setScissor(e,t,n,i)}setScissorTest(e){!this.effectComposer||!this.renderer||(this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e))}setViewport(e,t,n,i){!this.effectComposer||(e instanceof Qe?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,n,i),this.effectComposer.outputBuffer.viewport.set(e,t,n,i)))}resize(e,t){var n,i;if((n=this.effectComposer)==null||n.setSize(e,t),this._rt){let s=((i=this.renderer)==null?void 0:i.getPixelRatio())||window.devicePixelRatio;this._rt.setSize(e*s,t*s)}}};var EM;(function(e){function r(t){new Qe(t.r/255,t.g/255,t.b/255,t.a)}e.getThreeVector4=r})(EM||(EM={}));var jd;(function(t){function r(n,i){n.setRGB(i.r/255,i.g/255,i.b/255)}t.setThreeColor=r;function e(n){return new fe(n.r/255,n.g/255,n.b/255).getHex()}t.getHex=e})(jd||(jd={}));var zs=class extends Ld(An){constructor(){super();this.objectType="Scene";this.alpha=1;this.backupFog=new hs(16777215,.1,2e3);this.fogUseBGColor=!1;this.directionalLightState=!0;this.ambientLightState=!0;this.wireframeState=!1;this._color=new fe(1644825);this.canvas={mode:1,preset:"fullscreen",size:{width:512,height:512},editorSize:{width:1,height:1},color:[0,0,0,.5]};this.name="Untitled",this.postprocessing=new fu}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){this.camera=new Sr(e,t),this.camera.setDefault(),this.camera.orthoCamera.near=-5e4,this.camera.perspCamera.near=50,this.camera.orthoCamera.far=1e5,this.camera.perspCamera.far=1e5,this.camera.updateProjectionMatrix(),this.camera.position.set(0,0,Sr.DefaultTargetOffset),this.camera.lookAt(new M(0,0,-1)),this.add(this.camera),this.canvas.size.width=e,this.canvas.size.height=t,this.ambientLight=new uc(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.add(this.ambientLight),this.directionalLight=new Fr(16777215,.75),this.directionalLight.name="Default Directional Light",this.directionalLight.position.set(85e4,13e5,1e6),this.activeCamera=this.camera,this.activeCamera.add(this.directionalLight)}initFromObjectLoader(e){return this.traverse(t=>{t.uuid===e.ambientLight?this.ambientLight=t:t.uuid===e.directionalLight?this.directionalLight=t:(t.uuid===e.activeCamera&&(this.activeCamera=t),t.uuid===e.camera&&(this.camera=t,this.camera.setDefault()))}),this}raycast(e){let t=[],n=i=>{for(let s of i.children)ei(s)&&!s.raycastLock&&s.visible&&((ai(s)||Hh(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,t),n(s))};return n(this),t}traverseEntity(e){for(let t of this.children)ei(t)&&this.camera!==t&&t.traverseEntity(e)}updateFog(e){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.color):jd.setThreeColor(this.backupFog.color,e.color),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){var i,s,o,a,l;let t=super.toJSON(e),n=t.object;return n.objectType="Scene",n.activeCamera=(i=this.activeCamera)==null?void 0:i.uuid,n.camera=(s=this.camera)==null?void 0:s.uuid,n.directionalLight=(o=this.directionalLight)==null?void 0:o.uuid,n.ambientLight=(a=this.ambientLight)==null?void 0:a.uuid,n.color=this.color.toArray(),n.alpha=this.alpha,this.background instanceof xt?n.background=this.background.toJSON(e):this.background instanceof fe&&(n.background=this.background.toArray()),this.environment!==null&&(n.environment=this.environment.toJSON(e)),this.enableFog===!0&&(n.enableFog=!0,this.fogUseBGColor===!0&&(n.fogUseBGColor=!0),this.fog!==null&&(n.fog=this.fog.toJSON())),this.directionalLightState===!0&&(n.directionalLightState=!0),this.ambientLightState===!0&&(n.ambientLightState=!0),this.wireframeState===!0&&(n.wireframeState=!0),n.canvas={mode:this.canvas.mode,preset:this.canvas.preset,editorSize:{width:window.innerWidth,height:window.innerHeight},color:this.canvas.color},this.canvas.mode!==1&&(n.canvas.size={width:this.canvas.size.width,height:this.canvas.size.height}),n.postprocessing=(l=this.postprocessing)==null?void 0:l.toJSON(),t}fromJSON(e){var n,i,s,o,a;super.fromJSON(e),this.postprocessing=new fu,this.color.fromArray(e.color),this.alpha=e.alpha,e.background!==void 0&&Array.isArray(e.background)&&(this.background=new fe().fromArray(e.background)),e.fog!==void 0&&(e.fog.type==="FogExp2"?this.backupFog=new io(e.fog.color,e.fog.density):this.backupFog=new hs(e.fog.color,e.fog.near,e.fog.far)),this.fogUseBGColor=(n=e.fogUseBGColor)!=null?n:!1,this.enableFog=(i=e.enableFog)!=null?i:!1,this.directionalLightState=(s=e.directionalLightState)!=null?s:!1,this.ambientLightState=(o=e.ambientLightState)!=null?o:!1,this.wireframeState=(a=e.wireframeState)!=null?a:!1;let t=e.canvas;return this.canvas.mode=t.mode,this.canvas.preset=t.preset,t.size&&(this.canvas.size={width:t.size.width,height:t.size.height}),this.canvas.editorSize=t.editorSize?{width:t.editorSize.width,height:t.editorSize.height}:{width:window.innerWidth,height:window.innerHeight},t.color&&(this.canvas.color=[...t.color]),this.postprocessing.fromJSON(e.postprocessing),this}dispose(){this.traverseEntity(e=>{"geometry"in e&&e.geometry.dispose(),"material"in e&&(e.material instanceof Array?e.material.forEach(t=>t.dispose()):e.material.dispose())})}};var lg=class extends je{constructor(e="",t){super(t);this.nodeType="Attribute";this.name=e}getAttributeType(e){return typeof this.type=="number"?e.getConstructorFromLength(this.type):this.type}getType(e){let t=this.getAttributeType(e);return e.getTypeByFormat(t)}generate(e,t,n,i,s){i=this.getAttributeType(e);let o=e.getAttribute(this.name,i),a=e.isShader("vertex")?this.name:o.varying.name;return e.format(a,this.getType(e),t)}toJSON(e){let t=super.toJSON(e);return t.nodeType=this.nodeType,t.name=this.name,t}fromJSON(e,t){return super.fromJSON(e,t),e.scope&&(this.scope=e.scope),e.name&&(this.name=e.name),this}};var cg=class extends ze{constructor(e="",t=0){super(e);this.nodeType="Varying";this.value=t}getType(e){return e.getTypeByFormat(this.type)}generate(e,t,n,i,s){let o=e.getVar(this.uuid,this.type);return this.value&&e.isShader("vertex")&&e.addNodeCode(o.name+" = "+this.value.build(e,this.getType(e))+";"),e.format(o.name,this.getType(e),t)}copy(e){return super.copy(e),this.value=e.value,this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.value&&(t.value=this.value)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.value&&(this.value=e.value),this}};var ug=class extends Ct{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e!=null?e:new me}generateReadonly(e,t,n,i,s,o){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}copy(e){return super.copy(e),this.elements=e.elements,this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),t.elements=this.value.elements.concat()),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.elements&&(this.elements=e.elements),this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Ar;(function(l){l.EQUAL="==",l.NOT_EQUAL="!=",l.GREATER=">",l.GREATER_EQUAL=">=",l.LESS="<",l.LESS_EQUAL="<=",l.AND="&&",l.OR="||"})(Ar||(Ar={}));var hg=class extends je{constructor(e=new ze,t=new ze,n=hg.GREATER,i=new ze,s=new ze){super();this.nodeType="Cond";this.a=e,this.b=t,this.op=n,this.ifNode=i,this.elseNode=s}getType(e){if(this.ifNode){let t=this.ifNode.getType(e),n=this.elseNode.getType(e);return e.getTypeLength(n)>e.getTypeLength(t)?n:t}return"b"}getCondType(e){return e.getTypeLength(this.b.getType(e))>e.getTypeLength(this.a.getType(e))?this.b.getType(e):this.a.getType(e)}generate(e,t){let n=this.getType(e),i=this.getCondType(e),s=this.a.build(e,i),o=this.b.build(e,i),a;if(this.type=n,this.ifNode){let l=this.ifNode.build(e,n),c=this.elseNode.build(e,n);a="( "+[s,this.op,o,"?",l,":",c].join(" ")+" )"}else a="( "+s+" "+this.op+" "+o+" )";return e.format(a,this.getType(e),t)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this.ifNode.copy(e.ifNode),this.elseNode.copy(e.elseNode),this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),t.a=this.a.toJSON(e).uuid,t.b=this.b.toJSON(e).uuid,t.op=this.op,this.ifNode&&(t.ifNode=this.ifNode.toJSON(e).uuid),this.elseNode&&(t.elseNode=this.elseNode.toJSON(e).uuid)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.a&&(this.a=t.getNode(e.a)),e.b&&(this.b=t.getNode(e.b)),e.op&&(this.op=e.op),e.ifNode&&(this.ifNode=t.getNode(e.ifNode)),e.elseNode&&(this.elseNode=t.getNode(e.elseNode)),this}},rr=hg;rr.EQUAL=Ar.EQUAL,rr.NOT_EQUAL=Ar.NOT_EQUAL,rr.GREATER=Ar.GREATER,rr.GREATER_EQUAL=Ar.GREATER_EQUAL,rr.LESS=Ar.LESS,rr.LESS_EQUAL=Ar.LESS_EQUAL,rr.AND=Ar.AND,rr.OR=Ar.OR;var Tl=class extends Te{constructor(e){super();this.nodeType="MaxMIPLevel";this.texture=e,this.maxMIPLevel=0}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.texture&&(t.texture=this.texture.toJSON(e).uuid),t.maxMIPLevel=this.maxMIPLevel),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.texture&&(this.texture=t.getNode(e.texture)),e.maxMIPLevel!==void 0&&(this.maxMIPLevel=e.maxMIPLevel),this}};Object.defineProperties(Tl.prototype,{value:{get:function(){if(this.maxMIPLevel===0){let r=this.texture.value.image;Array.isArray(r)&&(r=r[0]),this.maxMIPLevel=r!==void 0?Math.log(Math.max(r.width,r.height))*Math.LOG2E:0}return this.maxMIPLevel},set:function(){}}});var dg=class extends je{constructor(e=new ze,t){super("f");this.nodeType="SpecularMIPLevel";this.roughness=e,this.texture=t}setTexture(e){return this.texture=e,this}generate(e,t){var n;if(e.isShader("fragment")){this.maxMIPLevel=(n=this.maxMIPLevel)!=null?n:new Tl,this.maxMIPLevel.texture=this.texture;let i=e.include(dg.Nodes.getSpecularMIPLevel);return e.format(i+"( "+this.roughness.build(e,"f")+", "+this.maxMIPLevel.build(e,"f")+" )",this.type,t)}else return console.warn("SpecularMIPLevelNode is not compatible with "+e.shader+" shader."),e.format("0.0",this.type,t)}copy(e){return super.copy(e),this.roughness=e.roughness,e.texture?this.texture?this.texture.copy(e.texture):this.texture=e.texture.clone():this.texture=void 0,e.maxMIPLevel?this.maxMIPLevel?this.maxMIPLevel.copy(e.maxMIPLevel):this.maxMIPLevel=e.maxMIPLevel.clone():this.maxMIPLevel=void 0,this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.texture&&(t.texture=this.texture.toJSON(e).uuid),this.roughness&&(t.roughness=this.roughness.toJSON(e).uuid),this.maxMIPLevel&&(t.maxMIPLevel=this.maxMIPLevel.toJSON(e).uuid)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.roughness&&(this.roughness=t.getNode(e.roughness)),e.texture&&(this.texture=t.getNode(e.texture)),e.maxMIPLevel&&(this.maxMIPLevel=t.getNode(e.maxMIPLevel)),this}},Wd=dg;Wd.Nodes=function(){return{getSpecularMIPLevel:new Le(["float getSpecularMIPLevel( const in float roughness, const in float maxMIPLevelScalar ) {"," float sigma = PI * roughness * roughness / ( 1.0 + roughness );"," float desiredMIPLevel = maxMIPLevelScalar + log2( sigma );"," return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );","}"].join(`
|
|
4393
|
+
outputColor=vec4(color,inputColor.a);}`,AM=class extends Mr{constructor(r={}){let e=Object.assign({blendFunction:ut.NORMAL,eskil:!1,offset:.5,darkness:.5},r);super("VignetteEffect",bF,{blendFunction:e.blendFunction,uniforms:new Map([["offset",new Ae(e.offset)],["darkness",new Ae(e.darkness)]])});this.eskil=e.eskil}get eskil(){return this.defines.has("ESKIL")}set eskil(r){this.eskil!==r&&(r?this.defines.set("ESKIL","1"):this.defines.delete("ESKIL"),this.setChanged())}},j$=[new Float32Array(3),new Float32Array(3)],W$=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],J$=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];var X$=[new Float32Array(2),new Float32Array(2)];var q$=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),Y$=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],K$=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],Q$=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];var Z$=new Map([[Hn(0,0,0,0),new Float32Array([0,0,0,0])],[Hn(0,0,0,1),new Float32Array([0,0,0,1])],[Hn(0,0,1,0),new Float32Array([0,0,1,0])],[Hn(0,0,1,1),new Float32Array([0,0,1,1])],[Hn(0,1,0,0),new Float32Array([0,1,0,0])],[Hn(0,1,0,1),new Float32Array([0,1,0,1])],[Hn(0,1,1,0),new Float32Array([0,1,1,0])],[Hn(0,1,1,1),new Float32Array([0,1,1,1])],[Hn(1,0,0,0),new Float32Array([1,0,0,0])],[Hn(1,0,0,1),new Float32Array([1,0,0,1])],[Hn(1,0,1,0),new Float32Array([1,0,1,0])],[Hn(1,0,1,1),new Float32Array([1,0,1,1])],[Hn(1,1,0,0),new Float32Array([1,1,0,0])],[Hn(1,1,0,1),new Float32Array([1,1,0,1])],[Hn(1,1,1,0),new Float32Array([1,1,1,0])],[Hn(1,1,1,1),new Float32Array([1,1,1,1])]]);function ag(r,e,t){return r+(e-r)*t}function Hn(r,e,t,n){let i=ag(r,e,1-.25),s=ag(t,n,1-.25);return ag(i,s,1-.125)}var _M=class extends fn{load(r=()=>{},e=null){arguments.length===4?(r=arguments[1],e=arguments[3]):(arguments.length===3||typeof arguments[0]!="function")&&(r=arguments[1],e=null);let t=this.manager,n=new yo;return new Promise((i,s)=>{let o=new Image,a=new Image;n.onError=l=>{t.itemError(l),e!==null?(e(`Failed to load ${l}`),i()):s(`Failed to load ${l}`)},n.onLoad=()=>{let l=[o,a];r(l),i(l)},o.addEventListener("error",l=>{n.itemError("smaa-search")}),a.addEventListener("error",l=>{n.itemError("smaa-area")}),o.addEventListener("load",()=>{t.itemEnd("smaa-search"),n.itemEnd("smaa-search")}),a.addEventListener("load",()=>{t.itemEnd("smaa-area"),n.itemEnd("smaa-area")}),t.itemStart("smaa-search"),t.itemStart("smaa-area"),n.itemStart("smaa-search"),n.itemStart("smaa-area"),o.src=wM,a.src=SM})}};var hn=class{constructor(e,t){this.enabled=!1;this.effect=new e(t),Object.defineProperty(this,"opacity",{enumerable:!0,set(n){this.effect.blendMode.opacity.value=n},get(){return this.effect.blendMode.opacity.value}}),Object.defineProperty(this,"blendFunction",{enumerable:!0,set(n){this.effect.blendMode.setBlendFunction(Number(n))},get(){return this.effect.blendMode.blendFunction}}),this.blendFunction=ut.NORMAL}toJSON(){let e=["constructor","effect","subscriptions"],t=Ue({},this),n=Object.getPrototypeOf(this),i=Object.getOwnPropertyNames(n);for(let s of i){let o=Object.getOwnPropertyDescriptor(n,s);o&&typeof o.get=="function"&&(t[s]=this[s])}return e.forEach(s=>delete t[s]),t}};var ru=class extends hn{constructor(){super(fM);this.blendFunction=ut.SCREEN}set intensity(e){this.effect.intensity=e}get intensity(){return this.effect.intensity}set luminanceThreshold(e){this.effect.luminanceMaterial.threshold=e}get luminanceThreshold(){return this.effect.luminanceMaterial.threshold}set luminanceSmoothing(e){this.effect.luminanceMaterial.smoothing=e}get luminanceSmoothing(){return this.effect.luminanceMaterial.smoothing}set blurScale(e){this.effect.blurPass.scale=e}get blurScale(){return this.effect.blurPass.scale}set kernelSize(e){this.effect.blurPass.kernelSize=e}get kernelSize(){return this.effect.blurPass.kernelSize}};var su=class extends hn{constructor(){super(pM)}set contrast(e){this.effect.uniforms.get("contrast").value=e}get contrast(){return this.effect.uniforms.get("contrast").value}set brightness(e){this.effect.uniforms.get("brightness").value=e}get brightness(){return this.effect.uniforms.get("brightness").value}};var ou=class extends hn{constructor(){super(gM);this.effect.offset=new O(.01,.01)}set offset(e){this.effect.offset.set(e[0]/1e3,e[1]/1e3)}get offset(){return[this.effect.offset.x*1e3,this.effect.offset.y*1e3]}};var au=class extends hn{constructor(){super(mM)}};var lu=class extends hn{constructor(){super(vM);this._hue=0}set hue(e){this._hue=e,this.effect.setHue(e)}get hue(){return this._hue}set saturation(e){this.effect.uniforms.get("saturation").value=e}get saturation(){return this.effect.uniforms.get("saturation").value}};var cu=class extends hn{constructor(){super(xM);this.blendFunction=ut.OVERLAY}};var uu=class extends hn{constructor(){super(AM)}get eskil(){return this.effect.eskil}set eskil(e){this.effect.eskil=e}get darkness(){return this.effect.uniforms.get("darkness").value}set darkness(e){this.effect.uniforms.get("darkness").value=e}get offset(){return this.effect.uniforms.get("offset").value}set offset(e){this.effect.uniforms.get("offset").value=e}};var hu=class extends hn{constructor(e){super(yM,e)}set focalLength(e){this.effect.circleOfConfusionMaterial.uniforms.focalLength.value=e}get focalLength(){return this.effect.circleOfConfusionMaterial.uniforms.focalLength.value}set focusDistance(e){this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value=e}get focusDistance(){return this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value}get bokehScale(){return this.effect.bokehScale}set bokehScale(e){this.effect.bokehScale=e}};var du=class extends hn{constructor(){super(bM)}get granularity(){return this.effect.getGranularity()}set granularity(e){this.effect.setGranularity(e)}};function TM(r,e){return e&&e.enabled&&r.push(e.effect),r}var fu=class{constructor(){this._scene=new An;this._camera=new Sr;this.effects=new Map;this.loadingManager=new yo;this.smaaImageLoader=new _M(this.loadingManager);this.renderPass=new sg;this._renderToScreen=!0;this._hasSmaa=!1;this.clock=new Ep,this.enabled=!1,this.debug=!1,this.effects.set("bloom",new ru),this.effects.set("chromaticAberration",new ou),this.effects.set("vignette",new uu),this.effects.set("noise",new cu),this.effects.set("colorAverage",new au),this.effects.set("hueSaturation",new lu),this.effects.set("brightnessContrast",new su),this.effects.set("depthOfField",new hu),this.effects.set("pixelation",new du)}get scene(){return this._scene}set scene(e){this._scene=e,this._initPasses()}get camera(){return this._camera}set camera(e){this._camera=e,this._initPasses()}_initSmaa(){let e=this.effectComposer.passes.length;this.smaaImageLoader.load(([t,n])=>{if(!this.effectComposer)return;let i=new MM(t,n,Uo.ULTRA,Vd.COLOR);i.edgeDetectionMaterial.setPredicationMode(oM.DEPTH),i.edgeDetectionMaterial.setEdgeDetectionThreshold(.05),i.edgeDetectionMaterial.setPredicationThreshold(.002),i.edgeDetectionMaterial.setPredicationScale(1),this.effectComposer.addPass(new Hd(this.camera,i),e),this._hasSmaa=!0})}_initPasses(){if(!(!this.effectComposer||!this.renderer))if(this.effectComposer.removeAllPasses(),this._hasSmaa=!1,this.renderPass=new sg(this.scene,this.camera),this.enabled){this.effectComposer.addPass(this.renderPass),this._initSmaa();let e=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(TM,[]),t=[this.effects.get("pixelation")].reduce(TM,[]);t.length>0&&this.effectComposer.addPass(new Hd(this.camera,...t)),this.effectComposer.addPass(new Hd(this.camera,...e))}else this.effectComposer.addPass(this.renderPass)}reinit(){!this.renderer||(this.effectComposer=new dM(this.renderer),this._initPasses())}init({renderer:e,camera:t,scene:n}){this.renderer=e,this.scene=n,this.camera=t,this._initSavePass(),this.reinit()}_initSavePass(){if(this._savePass)return;let e=new O;this.renderer.getDrawingBufferSize(e);let t=this.renderer.capabilities.isWebGL2?Zr:bt;this._rt=new t(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:di,wrapT:di}),this._savePass=new lM(this._rt,!1),this._savePass.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){var n,i;let t=this.effectComposer;!t||(e===!0?(((n=this.renderer)==null?void 0:n.capabilities.isWebGL2)&&(t.multisampling=0),t.removePass(this._savePass),t.passes[t.passes.length-1].renderToScreen=!0,t.autoRenderToScreen=!0):(((i=this.renderer)==null?void 0:i.capabilities.isWebGL2)&&!this._hasSmaa&&(t.multisampling=4),t.autoRenderToScreen=!1,t.passes[t.passes.length-1].renderToScreen=!1,this._savePass.renderToScreen=!1,t.addPass(this._savePass)),this._renderToScreen=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}fromJSON(e){e&&(Object.keys(e).forEach(t=>{let n=e[t],i=this.effects.get(t);Object.keys(n).forEach(s=>{i[s]=n[s]})}),this.enabled=e.enabled)}toJSON(){let e={};return this.effects.forEach((t,n)=>{e[n]=t.toJSON()},e),Ue({enabled:this.enabled},e)}render(){var e;(e=this.effectComposer)==null||e.render(this.clock.getDelta())}setScissor(e,t,n,i){if(!this.effectComposer||!this.renderer)return;e instanceof Qe?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,n,i),this.effectComposer.outputBuffer.scissor.set(e,t,n,i));let s=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(s),this.effectComposer.outputBuffer.scissor.multiplyScalar(s),this.renderer.setScissor(e,t,n,i)}setScissorTest(e){!this.effectComposer||!this.renderer||(this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e))}setViewport(e,t,n,i){!this.effectComposer||(e instanceof Qe?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,n,i),this.effectComposer.outputBuffer.viewport.set(e,t,n,i)))}resize(e,t){var n,i;if((n=this.effectComposer)==null||n.setSize(e,t),this._rt){let s=((i=this.renderer)==null?void 0:i.getPixelRatio())||window.devicePixelRatio;this._rt.setSize(e*s,t*s)}}};var EM;(function(e){function r(t){new Qe(t.r/255,t.g/255,t.b/255,t.a)}e.getThreeVector4=r})(EM||(EM={}));var jd;(function(t){function r(n,i){n.setRGB(i.r/255,i.g/255,i.b/255)}t.setThreeColor=r;function e(n){return new fe(n.r/255,n.g/255,n.b/255).getHex()}t.getHex=e})(jd||(jd={}));var zs=class extends Ld(An){constructor(){super();this.objectType="Scene";this.alpha=1;this.backupFog=new hs(16777215,.1,2e3);this.fogUseBGColor=!1;this.directionalLightState=!0;this.ambientLightState=!0;this.wireframeState=!1;this._color=new fe(1644825);this.canvas={mode:1,preset:"fullscreen",size:{width:512,height:512},editorSize:{width:1,height:1},color:[0,0,0,.5]};this.name="Untitled",this.postprocessing=new fu}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){this.camera=new Sr(e,t),this.camera.setDefault(),this.camera.orthoCamera.near=-5e4,this.camera.perspCamera.near=50,this.camera.orthoCamera.far=1e5,this.camera.perspCamera.far=1e5,this.camera.updateProjectionMatrix(),this.camera.position.set(0,0,Sr.DefaultTargetOffset),this.camera.lookAt(new M(0,0,-1)),this.add(this.camera),this.canvas.size.width=e,this.canvas.size.height=t,this.ambientLight=new uc(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.add(this.ambientLight),this.directionalLight=new Fr(16777215,.75),this.directionalLight.name="Default Directional Light",this.directionalLight.position.set(85e4,13e5,1e6),this.activeCamera=this.camera,this.activeCamera.add(this.directionalLight)}initFromObjectLoader(e){return this.traverse(t=>{t.uuid===e.ambientLight?this.ambientLight=t:t.uuid===e.directionalLight?this.directionalLight=t:(t.uuid===e.activeCamera&&(this.activeCamera=t),t.uuid===e.camera&&(this.camera=t,this.camera.setDefault()))}),this}raycast(e){let t=[],n=i=>{for(let s of i.children)ei(s)&&!s.raycastLock&&s.visible&&((ai(s)||Hh(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,t),n(s))};return n(this),t}traverseEntity(e){for(let t of this.children)ei(t)&&this.camera!==t&&t.traverseEntity(e)}updateFog(e){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.color):jd.setThreeColor(this.backupFog.color,e.color),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){var i,s,o,a,l;let t=super.toJSON(e),n=t.object;return n.objectType="Scene",n.activeCamera=(i=this.activeCamera)==null?void 0:i.uuid,n.camera=(s=this.camera)==null?void 0:s.uuid,n.directionalLight=(o=this.directionalLight)==null?void 0:o.uuid,n.ambientLight=(a=this.ambientLight)==null?void 0:a.uuid,n.color=this.color.toArray(),n.alpha=this.alpha,this.background instanceof xt?n.background=this.background.toJSON(e):this.background instanceof fe&&(n.background=this.background.toArray()),this.environment!==null&&(n.environment=this.environment.toJSON(e)),this.enableFog===!0&&(n.enableFog=!0,this.fogUseBGColor===!0&&(n.fogUseBGColor=!0),this.fog!==null&&(n.fog=this.fog.toJSON())),this.directionalLightState===!0&&(n.directionalLightState=!0),this.ambientLightState===!0&&(n.ambientLightState=!0),this.wireframeState===!0&&(n.wireframeState=!0),n.canvas={mode:this.canvas.mode,preset:this.canvas.preset,editorSize:{width:window.innerWidth,height:window.innerHeight},color:this.canvas.color},this.canvas.mode!==1&&(n.canvas.size={width:this.canvas.size.width,height:this.canvas.size.height}),n.postprocessing=(l=this.postprocessing)==null?void 0:l.toJSON(),t}fromJSON(e){var n,i,s,o,a;super.fromJSON(e),this.postprocessing=new fu,this.color.fromArray(e.color),this.alpha=e.alpha,e.background!==void 0&&Array.isArray(e.background)&&(this.background=new fe().fromArray(e.background)),e.fog!==void 0&&(e.fog.type==="FogExp2"?this.backupFog=new io(e.fog.color,e.fog.density):this.backupFog=new hs(e.fog.color,e.fog.near,e.fog.far)),this.fogUseBGColor=(n=e.fogUseBGColor)!=null?n:!1,this.enableFog=(i=e.enableFog)!=null?i:!1,this.directionalLightState=(s=e.directionalLightState)!=null?s:!1,this.ambientLightState=(o=e.ambientLightState)!=null?o:!1,this.wireframeState=(a=e.wireframeState)!=null?a:!1;let t=e.canvas;return this.canvas.mode=t.mode,this.canvas.preset=t.preset,t.size&&(this.canvas.size={width:t.size.width,height:t.size.height}),this.canvas.editorSize=t.editorSize?{width:t.editorSize.width,height:t.editorSize.height}:{width:window.innerWidth,height:window.innerHeight},t.color&&(this.canvas.color=[...t.color]),this.postprocessing.fromJSON(e.postprocessing),this}dispose(){this.traverseEntity(e=>{"geometry"in e&&e.geometry.dispose(),"material"in e&&(e.material instanceof Array?e.material.forEach(t=>t.dispose()):e.material.dispose())})}};var lg=class extends je{constructor(e="",t){super(t);this.nodeType="Attribute";this.name=e}getAttributeType(e){return typeof this.type=="number"?e.getConstructorFromLength(this.type):this.type}getType(e){let t=this.getAttributeType(e);return e.getTypeByFormat(t)}generate(e,t,n,i,s){i=this.getAttributeType(e);let o=e.getAttribute(this.name,i),a=e.isShader("vertex")?this.name:o.varying.name;return e.format(a,this.getType(e),t)}toJSON(e){let t=super.toJSON(e);return t.nodeType=this.nodeType,t.name=this.name,t}fromJSON(e,t){return super.fromJSON(e,t),e.scope&&(this.scope=e.scope),e.name&&(this.name=e.name),this}};var cg=class extends ze{constructor(e="",t=0){super(e);this.nodeType="Varying";this.value=t}getType(e){return e.getTypeByFormat(this.type)}generate(e,t,n,i,s){let o=e.getVar(this.uuid,this.type);return this.value&&e.isShader("vertex")&&e.addNodeCode(o.name+" = "+this.value.build(e,this.getType(e))+";"),e.format(o.name,this.getType(e),t)}copy(e){return super.copy(e),this.value=e.value,this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.value&&(t.value=this.value)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.value&&(this.value=e.value),this}};var ug=class extends Ct{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e!=null?e:new me}generateReadonly(e,t,n,i,s,o){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}copy(e){return super.copy(e),this.elements=e.elements,this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),t.elements=this.value.elements.concat()),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.elements&&(this.elements=e.elements),this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Ar;(function(l){l.EQUAL="==",l.NOT_EQUAL="!=",l.GREATER=">",l.GREATER_EQUAL=">=",l.LESS="<",l.LESS_EQUAL="<=",l.AND="&&",l.OR="||"})(Ar||(Ar={}));var hg=class extends je{constructor(e=new ze,t=new ze,n=hg.GREATER,i=new ze,s=new ze){super();this.nodeType="Cond";this.a=e,this.b=t,this.op=n,this.ifNode=i,this.elseNode=s}getType(e){if(this.ifNode){let t=this.ifNode.getType(e),n=this.elseNode.getType(e);return e.getTypeLength(n)>e.getTypeLength(t)?n:t}return"b"}getCondType(e){return e.getTypeLength(this.b.getType(e))>e.getTypeLength(this.a.getType(e))?this.b.getType(e):this.a.getType(e)}generate(e,t){let n=this.getType(e),i=this.getCondType(e),s=this.a.build(e,i),o=this.b.build(e,i),a;if(this.type=n,this.ifNode){let l=this.ifNode.build(e,n),c=this.elseNode.build(e,n);a="( "+[s,this.op,o,"?",l,":",c].join(" ")+" )"}else a="( "+s+" "+this.op+" "+o+" )";return e.format(a,this.getType(e),t)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this.ifNode.copy(e.ifNode),this.elseNode.copy(e.elseNode),this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),t.a=this.a.toJSON(e).uuid,t.b=this.b.toJSON(e).uuid,t.op=this.op,this.ifNode&&(t.ifNode=this.ifNode.toJSON(e).uuid),this.elseNode&&(t.elseNode=this.elseNode.toJSON(e).uuid)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.a&&(this.a=t.getNode(e.a)),e.b&&(this.b=t.getNode(e.b)),e.op&&(this.op=e.op),e.ifNode&&(this.ifNode=t.getNode(e.ifNode)),e.elseNode&&(this.elseNode=t.getNode(e.elseNode)),this}},rr=hg;rr.EQUAL=Ar.EQUAL,rr.NOT_EQUAL=Ar.NOT_EQUAL,rr.GREATER=Ar.GREATER,rr.GREATER_EQUAL=Ar.GREATER_EQUAL,rr.LESS=Ar.LESS,rr.LESS_EQUAL=Ar.LESS_EQUAL,rr.AND=Ar.AND,rr.OR=Ar.OR;var Tl=class extends Te{constructor(e){super();this.nodeType="MaxMIPLevel";this.texture=e,this.maxMIPLevel=0}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.texture&&(t.texture=this.texture.toJSON(e).uuid),t.maxMIPLevel=this.maxMIPLevel),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.texture&&(this.texture=t.getNode(e.texture)),e.maxMIPLevel!==void 0&&(this.maxMIPLevel=e.maxMIPLevel),this}};Object.defineProperties(Tl.prototype,{value:{get:function(){if(this.maxMIPLevel===0){let r=this.texture.value.image;Array.isArray(r)&&(r=r[0]),this.maxMIPLevel=r!==void 0?Math.log(Math.max(r.width,r.height))*Math.LOG2E:0}return this.maxMIPLevel},set:function(){}}});var dg=class extends je{constructor(e=new ze,t){super("f");this.nodeType="SpecularMIPLevel";this.roughness=e,this.texture=t}setTexture(e){return this.texture=e,this}generate(e,t){var n;if(e.isShader("fragment")){this.maxMIPLevel=(n=this.maxMIPLevel)!=null?n:new Tl,this.maxMIPLevel.texture=this.texture;let i=e.include(dg.Nodes.getSpecularMIPLevel);return e.format(i+"( "+this.roughness.build(e,"f")+", "+this.maxMIPLevel.build(e,"f")+" )",this.type,t)}else return console.warn("SpecularMIPLevelNode is not compatible with "+e.shader+" shader."),e.format("0.0",this.type,t)}copy(e){return super.copy(e),this.roughness=e.roughness,e.texture?this.texture?this.texture.copy(e.texture):this.texture=e.texture.clone():this.texture=void 0,e.maxMIPLevel?this.maxMIPLevel?this.maxMIPLevel.copy(e.maxMIPLevel):this.maxMIPLevel=e.maxMIPLevel.clone():this.maxMIPLevel=void 0,this}toJSON(e){let t=this.getJSONNode(e);return t||(t=this.createJSONNode(e),this.texture&&(t.texture=this.texture.toJSON(e).uuid),this.roughness&&(t.roughness=this.roughness.toJSON(e).uuid),this.maxMIPLevel&&(t.maxMIPLevel=this.maxMIPLevel.toJSON(e).uuid)),t.nodeType=this.nodeType,t}fromJSON(e,t){return super.fromJSON(e,t),e.roughness&&(this.roughness=t.getNode(e.roughness)),e.texture&&(this.texture=t.getNode(e.texture)),e.maxMIPLevel&&(this.maxMIPLevel=t.getNode(e.maxMIPLevel)),this}},Wd=dg;Wd.Nodes=function(){return{getSpecularMIPLevel:new Le(["float getSpecularMIPLevel( const in float roughness, const in float maxMIPLevelScalar ) {"," float sigma = PI * roughness * roughness / ( 1.0 + roughness );"," float desiredMIPLevel = maxMIPLevelScalar + log2( sigma );"," return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );","}"].join(`
|
|
4394
4394
|
`))}}();var NM={Int:it,Float:Te,Bool:mc,Vector2:In,Vector3:Un,Vector4:yc,Matrix3:zr,Matrix4:ug,FloatArray:Ba,Vector4Array:Ra,Normal:mn,Position:_n,Reflect:Qi,UV:bo,Attribute:lg,Const:rt,Struct:Ao,Varying:cg,SpecularMIPLevel:Wd,MaxMIPLevel:Tl,ColorSpace:Bt,Noise:Wa,TextureCubeUV:_o,TextureCube:vc,Operator:Yn,Math:Ye,Cond:rr,Fresnel:Ga,Rainbow:ka,Transmission:Va,Depth:qa,Blend:Xa,Raw:Qa,CubeTexture:xc,Texture:kn,CustomTexture:za,VertexDisplacement:Mo,CustomNormal:Ha,Gradient:ja,Matcap:Ya,Expression:yt,Color:ct,Phong:wc,Basic:bc,Lambert:Sc,Standard:Tc,Toon:Ac};var Jd=class{constructor(){this._nodes={};this._dataNodes={};this._textures={};this.uuid=Ee.generateUUID()}init(e,t){this._dataNodes=e,this._textures=t}clear(){this._nodes={},this._dataNodes={},this._textures={}}getNode(e){let t=this._nodes[e];return t||(t=this.createNode(e)),t}getNodeData(e){return this._dataNodes[e]}getTexture(e){let t=this._textures[e];return t||new bi}createNode(e){let t=this._dataNodes[e];if(!t)throw new Error("Failed to create Node from uuid: "+e+", its data does not seem to exist");let n=NM[t.nodeType];if(!n)throw new Error("Failed to create Node from uuid: "+e+" and nodeType: "+t.nodeType+", constructor for this not is not registered");let i=new n().fromJSON(t,this);return this._nodes[e]=i,i}};function CM(r){wF(r.geometries),SF(r.interactionStates),LM(r.object),MF(r.materials)}function wF(r){var e;if(r!==void 0){for(let t of r)if(((e=t.userData)==null?void 0:e.type)!==void 0){let n=t.userData.parameters;"extrudeDepth"in n||Object.assign(n,{extrudeDepth:0}),"extrudeBevelSize"in n||Object.assign(n,{extrudeBevelSize:0}),"extrudeBevelSegments"in n||Object.assign(n,{extrudeBevelSegments:1})}}}function SF(r){if(r!==void 0){for(let e of r)if(e.quaternion!==void 0){let t=new Tt().fromArray(e.quaternion);Object.assign(e,{rotation:new On().setFromQuaternion(t).toArray()})}}}function LM(r){var e,t,n,i;if(((e=r.userData)==null?void 0:e.type)===void 0)if(r.type==="OrthographicCamera"||r.type==="PerspectiveCamera"){let s=r;Object.assign(r,{objectType:"CombinedCamera",cameraType:s.type,isDefaultCamera:!0,hiddenMatrix:new me().toArray(),name:"Default Camera",far:1e5,zoomOrtho:s.zoom,zoomPersp:1,nearOrtho:-5e4,nearPersp:50}),delete r.type,s.typeCamera!==void 0&&(Object.assign(r,{cameraType:s.typeCamera}),delete r.typeCamera)}else r.type==="Scene"?(Object.assign(r,{objectType:r.type}),delete r.type):r.type==="HemisphereLight"?Object.assign(r,{isDefaultAmbientLight:!0}):r.type==="DirectionalLight"&&Object.assign(r,{isDefaultDirectionalLight:!0});if(r.userData!==void 0){let s=r.userData;s.type!==void 0&&(Object.assign(r,{objectType:s.type}),delete s.type),s.interaction!==void 0&&(Object.assign(r,{interaction:s.interaction}),delete s.interaction),s.isDefaultAmbientLight===!0?(Object.assign(r,{isDefaultAmbientLight:!0}),delete s.isDefaultAmbientLight):s.isDefaultDirectionalLight===!0?(Object.assign(r,{isDefaultDirectionalLight:!0}),delete s.isDefaultDirectionalLight):s.isDefaultCamera===!0&&(Object.assign(r,{isDefaultCamera:!0}),delete s.isDefaultCamera),Object.assign(r,{raycastLock:s.lock,scaleLock:s.scaleLock,hiddenMatrix:(n=(t=s.hiddenMatrix)==null?void 0:t.elements)!=null?n:new me().toArray()}),delete s.lock,delete s.scaleLock,delete s.hiddenMatrix,delete s.isEntity}if(((i=r.interaction)==null?void 0:i.events)!==void 0){for(let s of r.interaction.events)if(s.targets!==void 0)for(let o of s.targets)o.springControls!==void 0&&(Object.assign(o,{springParameters:{mass:o.springControls[0],stiffness:o.springControls[1],damping:o.springControls[2],velocity:o.springControls[3]}}),delete o.springControls)}if(r.children!==void 0)for(let s of r.children)LM(s)}function MF(r){if(r!==void 0)for(let e of r){let n=e.userData.layers.head;for(;n;){for(let i in n.uniforms){let s=`f${n.id}_tex`,o=`f${n.id}_texture`;i===s&&(n.uniforms[o]=n.uniforms[s],delete n.uniforms[s])}n=n.next}}}function IM(r){PM(r.object,r.object)}function PM(r,e){var t;if(r.type==="HemisphereLight"||r.isDefaultAmbientLight===!0?e.ambientLight=r.uuid:((t=r.userData)==null?void 0:t.isDefaultDirectionalLight)===!0||r.isDefaultDirectionalLight===!0?e.directionalLight=r.uuid:r.isDefaultCamera===!0&&(e.camera=r.uuid,e.activeCamera=r.uuid,Object.assign(r,{name:"Default Camera"})),r.children!==void 0)for(let n of r.children)PM(n,e)}function DM(r){AF(r.object)}function AF(r){var e,t,n,i,s,o,a;if(r.objectType==="Scene"){let l=r.userData,c=(e=l.rgb)!=null?e:{r:25,g:25,b:25},u=(t=l.fogColor)!=null?t:{r:25,g:25,b:25};Object.assign(r,{color:[c.r/255,c.g/255,c.b/255],alpha:l.alpha,enableFog:l.fogEnable,fogUseBGColor:l.fogUseBGColor,fog:{color:new fe().setRGB(u.r/255,u.g/255,u.b/255).getHex(),near:l.fogNear,far:l.fogFar},directionalLightState:l.directionalLightState,ambientLightState:l.ambientLightState,shadowsState:l.shadowsState,wireframeState:l.wireframeState,canvas:{mode:(n=l.canvasMode)!=null?n:1,size:{width:(s=(i=l.canvasCustomSize)==null?void 0:i.width)!=null?s:512,height:(a=(o=l.canvasCustomSize)==null?void 0:o.height)!=null?a:512}}}),delete l.rgb,delete l.alpha,delete l.fogEnable,delete l.fogUseBGColor,delete l.fogColor,delete l.fogNear,delete l.fogFar,delete l.directionalLightState,delete l.ambientLightState,delete l.shadowsState,delete l.wireframeState,delete l.canvasMode,delete l.canvasFullScreen,delete l.canvasCustomSize}}function RM(r){return{uuid:Ee.generateUUID(),type:"b",value:r,nodeType:"Bool"}}function Si(r,e){let t=new fe().set(r);return{uuid:Ee.generateUUID(),type:"c",r:t.r,g:t.g,b:t.b,value:r,alpha:e==null?void 0:e.uuid,nodeType:"Color"}}function BM(r,e){return{uuid:Ee.generateUUID(),type:"f[]",size:r,value:e,nodeType:"FloatArray"}}function mt(r){return{uuid:Ee.generateUUID(),type:"f",value:r,nodeType:"Float"}}function an(r){return{uuid:Ee.generateUUID(),type:"i",value:r,nodeType:"Int"}}function El(r){let{x:e,y:t}=r;return{uuid:Ee.generateUUID(),type:"v2",x:e,y:t,nodeType:"Vector2"}}function fg(r){let{x:e,y:t,z:n}=r;return{uuid:Ee.generateUUID(),type:"v3",x:e,y:t,z:n,nodeType:"Vector3"}}function OM(r,e){return{uuid:Ee.generateUUID(),type:"v4[]",size:r,value:e,nodeType:"Vector4Array"}}function FM(r){return{uuid:Ee.generateUUID(),type:"m3",elements:r.elements,nodeType:"Matrix3"}}function zM(r,e){return{uuid:Ee.generateUUID(),type:"v4",value:r,uv:e.uuid,project:!1,nodeType:"Texture"}}function GM(r){return{uuid:Ee.generateUUID(),type:"v2",index:r,nodeType:"UV"}}function pg(r,e){let t={uuid:Ee.generateUUID(),type:"v3",nodeType:"Blend",a:r==null?void 0:r.uuid,b:e.uuid};return"mode"in e&&(t.mode=e.mode),t}function UM(r,e){let t=r.uniforms,n=r.id,i=mt(t[`f${n}_alpha`].value),s=an(t[`f${n}_mode`].value);return[i,s].forEach(o=>e[o.uuid]=o),Object.assign(r,{uniforms:{[`f${n}_alpha`]:i.uuid,[`f${n}_mode`]:s.uuid}}),{uuid:Ee.generateUUID(),type:"v3",nodeType:"CustomTexture",alpha:i.uuid,mode:s.uuid}}function mg(r,e){let t=r.uniforms,n=r.id,i=an(t[`f${n}_mode`].value),s=mt(t[`f${n}_alpha`].value),o=Si(t[`f${n}_color`].value,s);return[o,s,i].forEach(a=>e[a.uuid]=a),Object.assign(r,{uniforms:{[`f${n}_color`]:o.uuid,[`f${n}_alpha`]:s.uuid,[`f${n}_mode`]:i.uuid}}),o}function kM(r,e){let t=r.uniforms,n=r.id,i=an(t[`f${n}_mode`].value),s=mt(t[`f${n}_alpha`].value),o=fg(t[`f${n}_cnormal`].value);return[o,s,i].forEach(a=>e[a.uuid]=a),Object.assign(r,{uniforms:{[`f${n}_cnormal`]:o.uuid,[`f${n}_alpha`]:s.uuid,[`f${n}_mode`]:i.uuid}}),{uuid:Ee.generateUUID(),type:"v3",nodeType:"CustomNormal",cnormal:o.uuid,alpha:s.uuid,mode:i.uuid}}function VM(r,e){let t=r.uniforms,n=r.id,i=an(t[`f${n}_mode`].value),s=mt(t[`f${n}_alpha`].value),o=mt(t[`f${n}_near`].value),a=mt(t[`f${n}_far`].value),l=mt(t[`f${n}_isVector`].value),c=fg(t[`f${n}_origin`].value),u=Si(t[`f${n}_colorA`].value),h=Si(t[`f${n}_colorB`].value);return[o,a,l,c,u,h,s,i].forEach(d=>e[d.uuid]=d),Object.assign(r,{uniforms:{[`f${n}_near`]:o.uuid,[`f${n}_far`]:a.uuid,[`f${n}_isVector`]:l.uuid,[`f${n}_origin`]:c.uuid,[`f${n}_colorA`]:u.uuid,[`f${n}_colorB`]:h.uuid,[`f${n}_alpha`]:s.uuid,[`f${n}_mode`]:i.uuid}}),{uuid:Ee.generateUUID(),type:"v3",nodeType:"Depth",near:o.uuid,far:a.uuid,isVector:l.uuid,origin:c.uuid,colorA:u.uuid,colorB:h.uuid,alpha:s.uuid,mode:i.uuid}}function HM(r,e){let t=r.uniforms,n=r.id,i=an(t[`f${n}_mode`].value),s=mt(t[`f${n}_alpha`].value),o=Si(t[`f${n}_color`].value),a=mt(t[`f${n}_bias`].value),l=mt(t[`f${n}_scale`].value),c=mt(t[`f${n}_intensity`].value),u=mt(t[`f${n}_factor`].value);return[o,a,l,c,u,s,i].forEach(h=>e[h.uuid]=h),Object.assign(r,{uniforms:{[`f${n}_color`]:o.uuid,[`f${n}_bias`]:a.uuid,[`f${n}_scale`]:l.uuid,[`f${n}_intensity`]:c.uuid,[`f${n}_factor`]:u.uuid,[`f${n}_alpha`]:s.uuid,[`f${n}_mode`]:i.uuid}}),{uuid:Ee.generateUUID(),type:"v3",nodeType:"Fresnel",color:o.uuid,bias:a.uuid,scale:l.uuid,intensity:c.uuid,factor:u.uuid,alpha:s.uuid,mode:i.uuid}}function jM(r,e){let t=r.uniforms,n=r.id,i=an(t[`f${n}_mode`].value),s=mt(t[`f${n}_alpha`].value),o=an(t[`f${n}_gl_type`].value),a=an(t[`f${n}_num`].value),l=RM(t[`f${n}_smooth`].value),c=OM(10,t[`f${n}_colors`].value),u=BM(10,t[`f${n}_steps`].value),h=El(t[`f${n}_offset`].value),d=El(t[`f${n}_morph`].value),f=mt(t[`f${n}_angle`].value);return[o,a,l,c,u,h,d,f,s,i].forEach(p=>e[p.uuid]=p),Object.assign(r,{uniforms:{[`f${n}_gl_type`]:o.uuid,[`f${n}_num`]:a.uuid,[`f${n}_smooth`]:l.uuid,[`f${n}_colors`]:c.uuid,[`f${n}_steps`]:u.uuid,[`f${n}_offset`]:h.uuid,[`f${n}_morph`]:d.uuid,[`f${n}_angle`]:f.uuid,[`f${n}_alpha`]:s.uuid,[`f${n}_mode`]:i.uuid}}),{uuid:Ee.generateUUID(),type:"v3",nodeType:"Gradient",gl_type:o.uuid,num:a.uuid,smooth:l.uuid,colors:c.uuid,steps:u.uuid,offset:h.uuid,morph:d.uuid,angle:f.uuid,alpha:s.uuid,mode:i.uuid}}function WM(r,e){let t=r.uniforms,n=r.id,i=Ee.generateUUID(),s=an(t[`f${n}_mode`].value),o=mt(t[`f${n}_alpha`].value),a=mt(t[`f${n}_crop`].value),l=GM(0),c=zM(t[`f${n}_texture`].value,l),u=FM(t[`f${n}_mat`].value);return[c,l,u,a,o,s].forEach(h=>e[h.uuid]=h),Object.assign(r,{uniforms:{[`f${n}_texture`]:c.uuid,[`f${n}_mat`]:u.uuid,[`f${n}_crop`]:a.uuid,[`f${n}_alpha`]:o.uuid,[`f${n}_mode`]:s.uuid}}),{uuid:i,type:"v3",nodeType:"CustomTexture",texture:c.uuid,crop:a.uuid,alpha:o.uuid,mode:s.uuid}}function JM(r,e){let t=r.uniforms,n=r.id,i=an(t[`f${n}_mode`].value),s=mt(t[`f${n}_alpha`].value),o=mt(t[`f${n}_scale`].value),a=mt(t[`f${n}_move`].value),l=El(t[`f${n}_fA`].value),c=El(t[`f${n}_fB`].value),u=El(t[`f${n}_distortion`].value),h=Si(t[`f${n}_colorA`].value),d=Si(t[`f${n}_colorB`].value),f=Si(t[`f${n}_colorC`].value),p=Si(t[`f${n}_colorD`].value),m=an(t[`f${n}_intA`].value),v=an(t[`f${n}_intB`].value),g=an(t[`f${n}_intC`].value),y=an(t[`f${n}_intD`].value);return[o,a,l,c,u,h,d,f,p,m,v,g,y,s,i].forEach(x=>e[x.uuid]=x),Object.assign(r,{uniforms:{[`f${n}_scale`]:o.uuid,[`f${n}_move`]:a.uuid,[`f${n}_fA`]:l.uuid,[`f${n}_fB`]:c.uuid,[`f${n}_distortion`]:u.uuid,[`f${n}_colorA`]:h.uuid,[`f${n}_colorB`]:d.uuid,[`f${n}_colorC`]:f.uuid,[`f${n}_colorD`]:p.uuid,[`f${n}_intA`]:m.uuid,[`f${n}_intB`]:v.uuid,[`f${n}_intC`]:g.uuid,[`f${n}_intD`]:y.uuid,[`f${n}_alpha`]:s.uuid,[`f${n}_mode`]:i.uuid}}),{uuid:Ee.generateUUID(),type:"v3",nodeType:"Noise",scale:o.uuid,move:a.uuid,fA:l.uuid,fB:c.uuid,distortion:u.uuid,colorA:h.uuid,colorB:d.uuid,colorC:f.uuid,colorD:p.uuid,intA:m.uuid,intB:v.uuid,intC:g.uuid,intD:y.uuid,alpha:s.uuid,mode:i.uuid}}function gg(r,e,t){let n=e.uniforms,i=e.id,s=mt(n[`f${i}_alpha`].value),o=an(n[`f${i}_mode`].value);return[s,o].forEach(a=>t[a.uuid]=a),Object.assign(e,{uniforms:{[`f${i}_alpha`]:s.uuid,[`f${i}_mode`]:o.uuid}}),{uuid:Ee.generateUUID(),type:"basic",nodeType:"Basic",shadingAlpha:s.uuid,shadingBlend:o.uuid}}function XM(r,e,t){var c,u;let n=e.uniforms,i=e.id,s=Si((c=r.specular)!=null?c:69905),o=mt((u=r.shininess)!=null?u:30),a=mt(n[`f${i}_alpha`].value),l=an(n[`f${i}_mode`].value);return[s,o,a,l].forEach(h=>t[h.uuid]=h),Object.assign(e,{uniforms:{[`f${i}_alpha`]:a.uuid,[`f${i}_mode`]:l.uuid}}),{uuid:Ee.generateUUID(),type:"phong",nodeType:"Phong",specular:s.uuid,shininess:o.uuid,shadingAlpha:a.uuid,shadingBlend:l.uuid}}function qM(r,e,t){var c,u;let n=e.uniforms,i=e.id,s=Si((c=r.emissive)!=null?c:0),o=mt((u=r.emissiveIntensity)!=null?u:1),a=mt(n[`f${i}_alpha`].value),l=an(n[`f${i}_mode`].value);return[o,s,a,l].forEach(h=>t[h.uuid]=h),Object.assign(e,{uniforms:{[`f${i}_alpha`]:a.uuid,[`f${i}_mode`]:l.uuid}}),{uuid:Ee.generateUUID(),type:"lambert",nodeType:"Lambert",emissiveIntensity:o.uuid,emissive:s.uuid,shadingAlpha:a.uuid,shadingBlend:l.uuid}}function YM(r,e,t){var c,u;let n=e.uniforms,i=e.id,s=Si((c=r.specular)!=null?c:69905),o=mt((u=r.shininess)!=null?u:30),a=mt(n[`f${i}_alpha`].value),l=an(n[`f${i}_mode`].value);return[s,o,a,l].forEach(h=>t[h.uuid]=h),Object.assign(e,{uniforms:{[`f${i}_alpha`]:a.uuid,[`f${i}_mode`]:l.uuid}}),{uuid:Ee.generateUUID(),type:"toon",nodeType:"Toon",specular:s.uuid,shininess:o.uuid,shadingAlpha:a.uuid,shadingBlend:l.uuid}}function KM(r,e,t){var u,h,d;let n=e.uniforms,i=e.id,s=mt((u=r.roughness)!=null?u:.3),o=mt((h=r.metalness)!=null?h:0),a=mt((d=r.reflectivity)!=null?d:.5),l=mt(n[`f${i}_alpha`].value),c=an(n[`f${i}_mode`].value);return[s,o,a,l,c].forEach(f=>t[f.uuid]=f),Object.assign(e,{uniforms:{[`f${i}_alpha`]:l.uuid,[`f${i}_mode`]:c.uuid}}),{uuid:Ee.generateUUID(),type:"standard",nodeType:"Standard",roughness:s.uuid,metalness:o.uuid,reflectivity:a.uuid,shadingAlpha:l.uuid,shadingBlend:c.uuid}}var QM=new me,_F=["RectangleGeometry","TriangleGeometry","PolygonGeometry","StarGeometry"];function ZM(r){let e={};NF(r.materials,e),EF(r.interactionStates,e),TF(r.geometries,r.object),Object.keys(e).length&&(r.nodes=IF(e))}function $M(r,e){let t=r.geometry;if(t&&t===e)return r;let n=r.children;if(n)for(let i=0,s=n.length;i<s;i++){let o=n[i],a=$M(o,e);if(a!==void 0)return a}}function TF(r,e){var t;if(r!==void 0){for(let n of r)if(n.userData&&_F.includes((t=n.userData)==null?void 0:t.type)){let i=n.userData.parameters,s=i.extrudeBevelSize;if(s>0){i.width+=s*2,i.height+=s*2,i.extrudeDepth+=s*2;let o=$M(e,n.uuid);if(o!==void 0){let a=new Ke;QM.fromArray(o.matrix),a.applyMatrix4(QM),a.position.z-=s,a.updateMatrix(),o.matrix=a.matrix.toArray()}}}}}function EF(r,e){if(r!==void 0){for(let t of r)if(t.material)if(Array.isArray(t.material))for(let n of t.material)for(let i of n.layersList)pu(i,e);else for(let n of t.material.layersList)pu(n,e)}}function NF(r,e){if(r!==void 0)for(let t of r){let{beforeLayers:n,lightingLayer:i,afterLayers:s}=CF(t.userData.layers);if(!i){console.error("Material upgrade: could not find a ligthing layer");continue}let o=LF(t,i,e);if(e[o.uuid]=o,n.length>0){let a=pu(n[0],e);e[a.uuid]=a;for(let l=1,c=n.length;l<c;++l){let u=n[l],h=pu(u,e),d=pg(a,h);e[d.uuid]=d,e[h.uuid]=h,a=d}o.color=a.uuid}if(s.length>0){let a;for(let l of s){let c=pu(l,e),u=pg(a,c);e[u.uuid]=u,e[c.uuid]=c,a=u}o.afterColor=a==null?void 0:a.uuid}Object.assign(t,{type:"ShaderMaterial",wireframeLinecap:"",wireframeLinejoin:"",vertex:o==null?void 0:o.uuid,fragment:o==null?void 0:o.uuid}),delete t.color,delete t.emissive,delete t.specular,delete t.shininess,delete t.roughness,delete t.metalness}}function CF(r){let e=[],t=[],n,i=r.head;for(;i;){if(i.type==="light"){n=i,i=i.next;break}e.push(i),i=i.next}for(;i;)t.unshift(i),i=i.next;return{beforeLayers:e,lightingLayer:n,afterLayers:t}}function LF(r,e,t){let n,i;switch(r.userData.type){case"BasicMaterial":n=gg(r,e,t),i="BasicNodeMaterial";break;case"PhongMaterial":n=XM(r,e,t),i="PhongNodeMaterial";break;case"LambertMaterial":n=qM(r,e,t),i="LambertNodeMaterial";break;case"ToonMaterial":n=YM(r,e,t),i="ToonNodeMaterial";break;case"PhysicalMaterial":n=KM(r,e,t),i="StandardNodeMaterial";break;default:console.warn(`Material upgrade: could not find a properly material node to ${r.userData.type}`),n=gg(r,e,t),i="BasicNodeMaterial"}return Object.assign(r.userData,{nodeType:i}),n}function pu(r,e){switch(r.type){case"light":return UM(r,e);case"color":return mg(r,e);case"depth":return VM(r,e);case"fresnel":return HM(r,e);case"gradient":return jM(r,e);case"noise":return JM(r,e);case"normal":return kM(r,e);case"texture":return WM(r,e);default:return console.warn(`Material upgrade: could not find a properly "layer" node to ${r.type}`),mg(r,e)}}function IF(r){let e=[];for(let t in r)e.push(r[t]);return e}function yg(r){let e=r.metadata;return console.info(`File format version ${e==null?void 0:e.version}`),(e==null?void 0:e.version)===void 0?(console.warn("Unknow file version"),!1):((e.version<=1.1||e.version===4.5)&&(CM(r),e.version=1.2,console.warn("File upgraded from v1.1 or inferior to v1.2")),e.version===1.2&&(IM(r),e.version=1.3,console.warn("File upgraded from v1.2 to v1.3")),e.version===1.3&&(DM(r),e.version=1.4,console.warn("File upgraded from v1.3 to v1.4")),e.version===1.4&&(ZM(r),e.version=1.5,console.warn("File upgraded from v1.4 to v1.5")),!0)}var nA=Cg(tA()),iA=new me,PF=new me,DF=new me,RF=new me,Nl=class extends Vn{constructor(e=Qn.create({}),t=new Ci){super(e,t);this.objectType="SubdivObject";this.resized=!1;this.newlyPasted=!1;this.matrixWorldRigid=new me;this.scaleMatrix=new me;this.hiddenMatrixOld=new me;this.isNegativeDeterminant=!1;this.isUniformScaling=!0;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1,this.subdivPointer=Qn.activeSubdivPtr}toJSON(e){let t=super.toJSON(e);return t.object.objectType="SubdivObject",t}updateGeometry(e){let t=this.geometry,n=Uc[t.userData.type],i=this.objectType==="SubdivObject"?Object.assign({},t.userData,{geometry:t,subdivPointer:this.subdivPointer,smoothShading:this.smoothShading}):t.userData,s=n.build(n.normalizeInputs(e,i));this.geometry.dispose(),this.geometry=s}clone(e){var a,l;if(this.resized){this.resized=!1;let c;this.geometry.userData.parameters.subdivisions>0?c=this.geometry.originalGeometry:c=this.geometry,Qn.allocate(c),this.subdivPointer=Qn.activeSubdivPtr}let t=this.material.clone(),n=Qn.clone(Ue({},this.geometry.userData.parameters),this.subdivPointer,this.smoothShading),i=(a=this.geometry.originalGeometry)!=null?a:this.geometry,s=(l=n.originalGeometry)!=null?l:n;s.boundingSphere=i.boundingSphere.clone();let o=new Nl(n,t).copy(this,e);return o.subdivPointer=Qn.activeSubdivPtr,o}raycast(e,t){let n=this.geometry.originalGeometry;if(n){let i=this.geometry;this.geometry=n,Vn.prototype.raycast.call(this,e,t),this.geometry=i}else Vn.prototype.raycast.call(this,e,t)}applySVDScaling(){let e=this.matrixWorld.elements,t=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:n,v:i,q:s}=(0,nA.SVD)(t);this.isNegativeDeterminant=this.matrixWorld.determinant()<0,this.isUniformScaling=s.every(h=>Math.abs(s[0]-h)<.01);let o,a,l=iA.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=PF.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=DF.copy(c).transpose();if(o=RF.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),a=l.multiply(u),!this.isUniformScaling){this.geometry.applyMatrix4(o);let h=this.geometry.originalGeometry;h?(h.applyMatrix4(o),h.getAttribute("positionWASM").applyMatrix4(o)):this.geometry.getAttribute("positionWASM").applyMatrix4(o),this.resized=!0}return{scaleMatrix:o,matrixWorldRigid:a}}revertSVDScaling(e){let t=this.geometry.originalGeometry;t?Qn.getTopologicalMesh(t):Qn.getTopologicalMesh(this.geometry);let n=e.elements,i=[n[0],n[5],n[10]];if(!i.every(o=>Math.abs(i[0]-o)<.01)){let o=iA.copy(this.scaleMatrix).invert();this.geometry.applyMatrix4(o),t?(t.applyMatrix4(o),t.getAttribute("positionWASM").applyMatrix4(o)):this.geometry.getAttribute("positionWASM").applyMatrix4(o),this.resized=!0}}};var vg=class{constructor(){this._buffers=[]}parse(e){var n;let t=new we;if(this._vertexData=e.vertexData,this._loadBuffers(this._vertexData.buffers),t.uuid=e.uuid,this._vertexData.accessors)for(let i=0,s=this._vertexData.accessors.length;i<s;++i){let o=this._vertexData.accessors[i].attributeName;o==="indices"?t.setIndex(this._loadAccessor(i)):t.setAttribute(o,this._loadAccessor(i))}if((n=e.data)==null?void 0:n.groups)for(let i of e.data.groups)t.addGroup(i.start,i.count,i.materialIndex);return t}_loadAccessor(e){let t=this._vertexData.accessors[e],n=this._loadBufferView(t.bufferView),i=OF[t.type],s=BF[t.componentType],o=new s(n.buffer);return new Re(o,i)}_loadBufferView(e){let t=this._vertexData.bufferViews[e],n=this._buffers[t.buffer],i=t.byteLength||0,s=t.byteOffset||0;return n.slice(s,s+i)}_loadBuffers(e){for(let t of e){if(!t.uri)continue;let n=t.uri.slice(t.uri.indexOf("base64")+7),i=atob(n),s=new Uint8Array(i.length);for(let o=0;o<i.length;o++)s[o]=i.charCodeAt(o);this._buffers.push(s)}}},BF={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},OF={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var xg=new WeakMap,bg=class extends fn{constructor(e){super(e);this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,i){let s=new Xn(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,o=>{let a={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(o,a).then(t).catch(i)},n,i)}decodeDracoFile(e,t,n,i){let s={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(e,s).then(t)}decodeGeometry(e,t){for(let l in t.attributeTypes){let c=t.attributeTypes[l];c.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[l]=c.name)}let n=JSON.stringify(t);if(xg.has(e)){let l=xg.get(e);if(l.key===n)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i,s=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(s,o).then(l=>(i=l,new Promise((c,u)=>{i._callbacks[s]={resolve:c,reject:u},i.postMessage({type:"decode",id:s,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return a.catch(()=>!0).then(()=>{i&&s&&this._releaseTask(i,s)}),xg.set(e,{key:n,promise:a}),a}_createGeometry(e){let t=new we;e.index&&t.setIndex(new Re(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let i=e.attributes[n],s=i.name,o=i.array,a=i.itemSize;t.setAttribute(s,new Re(o,a))}return t}_loadLibrary(e,t){let n=new Xn(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((i,s)=>{n.load(e,i,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(n=>{let i=n[0];e||(this.decoderConfig.wasmBinary=n[1]);let s=FF.toString(),o=["/* draco decoder */",i,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
|
4395
4395
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(s){let o=s.data;switch(o.type){case"decode":i._callbacks[o.id].resolve(o);break;case"error":i._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,s){return i._taskLoad>s._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}};function FF(){let r,e;onmessage=function(o){let a=o.data;switch(a.type){case"init":r=a.decoderConfig,e=new Promise(function(u){r.onModuleLoaded=function(h){u({draco:h})},DracoDecoderModule(r)});break;case"decode":let l=a.buffer,c=a.taskConfig;e.then(u=>{let h=u.draco,d=new h.Decoder,f=new h.DecoderBuffer;f.Init(new Int8Array(l),l.byteLength);try{let p=t(h,d,f,c),m=p.attributes.map(v=>v.array.buffer);p.index&&m.push(p.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:p},m)}catch(p){console.error(p),self.postMessage({type:"error",id:a.id,error:p.message})}finally{h.destroy(f),h.destroy(d)}});break}};function t(o,a,l,c){let u=c.attributeIDs,h=c.attributeTypes,d,f,p=a.GetEncodedGeometryType(l);if(p===o.TRIANGULAR_MESH)d=new o.Mesh,f=a.DecodeBufferToMesh(l,d);else if(p===o.POINT_CLOUD)d=new o.PointCloud,f=a.DecodeBufferToPointCloud(l,d);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||d.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());let m={index:null,attributes:[]};for(let v in u){let g=self[h[v]],y,x;if(c.useUniqueIDs)x=u[v],y=a.GetAttributeByUniqueId(d,x);else{if(x=a.GetAttributeId(d,o[u[v]]),x===-1)continue;y=a.GetAttribute(d,x)}m.attributes.push(i(o,a,d,v,g,y))}return p===o.TRIANGULAR_MESH&&(m.index=n(o,a,d)),o.destroy(d),m}function n(o,a,l){let u=l.num_faces()*3,h=u*4,d=o._malloc(h);a.GetTrianglesUInt32Array(l,h,d);let f=new Uint32Array(o.HEAPF32.buffer,d,u).slice();return o._free(d),{array:f,itemSize:1}}function i(o,a,l,c,u,h){let d=h.num_components(),p=l.num_points()*d,m=p*u.BYTES_PER_ELEMENT,v=s(o,u),g=o._malloc(m);a.GetAttributeDataArrayForAllPoints(l,h,v,m,g);let y=new u(o.HEAPF32.buffer,g,p).slice();return o._free(g),{name:c,array:y,itemSize:d}}function s(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}function Cl(r){let e;return r instanceof Array?(e={},r.forEach(t=>{e[t.uuid]=t})):e=r,e}function rA(r,e){return r[e]===void 0&&console.warn("ObjectLoader > getGeometry: undefined geometry",e),r[e]}function sA(r,e){if(e!==void 0){if(e instanceof Array){let t=[];for(let n=0,i=e.length;n<i;n++){let s=e[n];r[s]===void 0&&console.warn("ObjectLoader > getMaterial: undefined material",s),t.push(r[s])}return t}return r[e]===void 0&&console.warn("ObjectLoader > getMaterial: undefined material",e),r[e]}}var wg=class extends gx(Ap){constructor(){super(...arguments);this.path="";this.resourcePath=""}async loadFromFile(e){var s;let t=await LS(e,this.manager,Ds.TEXT),{object:n,materials:i}=this.parse(JSON.parse(t));return n.name=(s=e.name.split(".").shift())!=null?s:e.name,this.manager.itemEnd(e.name),{scene:n,materials:i}}load(e,t,n,i){let s=this.path===""?Ei.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||s;let o=new Xn(this.manager);o.setPath(this.path),o.load(e,a=>{let l=null;try{l=JSON.parse(a)}catch(u){i!==void 0&&i(u),console.warn(`ObjectLoader > load: can't parse ${e}.`),console.error(u);return}let c=l.metadata;if(c===void 0||c.type===void 0||c.type.toLowerCase()==="geometry"){console.error("ObjectLoader: Can't load "+e);return}this.parse(l,t)},n,i)}parse(e,t){var d;if(yg(e)===!1)return console.error("File can not be parser"),{object:new zs,materials:{}};let n={},i=this.parseGeometries(e.geometries),s=this.loader.parseImages(e.images,()=>{t!==void 0&&t(u)}),o=this.parseTextures(e.textures,s),a=new Jd;a.init(Cl((d=e.nodes)!=null?d:[]),Cl(o));let l=Cl(this.loader.parseMaterials(e.materials,o)),c=this.customParseMaterials(l,e.materials,a),u=this.parseObject(e.object,i,c,n);this.upgradeNoise(u);let h=this.parseInteractionStates(e.interactionStates,a);return this.parseInteractions(e.object,n,h),(e.images===void 0||e.images.length===0)&&t!==void 0&&t(u),{object:u,materials:c}}upgradeNoise(e){e.traverseEntity(t=>{var n;if(t.type==="Mesh"){let i=t,s=i.material;if(!s.userData)return;let o=(n=s.userData.layers)==null?void 0:n.head;for(;o;){if(o.type===lt.NOISE&&o.uniforms[`f${o.id}_size`].value.equals(new M(-1,-1,-1))&&(i.geometry.boundingBox||i.geometry.computeBoundingBox(),i.geometry.boundingBox)){let a=o.uniforms[`f${o.id}_scale`].value,{x:l,y:c,z:u}=i.geometry.boundingBox.max,h=Math.max(l,Math.max(c,u))/(a*a);o.uniforms[`f${o.id}_size`].value.x=h,o.uniforms[`f${o.id}_size`].value.y=h,o.uniforms[`f${o.id}_size`].value.z=h}o=o.next}}})}parseGeometries(e){var n,i;let t={};if(e!==void 0)for(let s=0,o=e.length;s<o;s++){let a=e[s],l;try{switch((n=a.userData)==null?void 0:n.type){case void 0:l=this.loader.parseGeometries([a])[a.uuid];break;case"NonParametricGeometry":a.vertexData?l=new vg().parse(a):l=this.loader.parseGeometries([a])[a.uuid],l.userData={};let c=Object.assign({},a.userData,{geometry:l});l=Lo.create(c);break;case"SubdivGeometry":l=this.loader.parseGeometries([a])[a.uuid],l=Qn.create({parameters:a.userData.parameters,geometry:l}),Qn.activeSubdivPtr=void 0;break;default:l=kc(a.userData)}l.uuid=a.uuid,a.name!==void 0&&(l.name=a.name),t[a.uuid]=l}catch(c){console.warn("ObjectLoader > parseGeometries: error parsing geometry of type .",(i=a.userData)==null?void 0:i.type),console.error(c)}}return t}async parseAsync(e){var h;if(yg(e)===!1)return console.error("File can not be parser"),new zs;let t=new Jd,n={},i=await this.parseGeometriesAsync(e.geometries),s=this.loader.parseImages(e.images,()=>{}),o=this.parseTextures(e.textures,s);t.init(Cl((h=e.nodes)!=null?h:[]),Cl(o));let a=Cl(this.loader.parseMaterials(e.materials,o)),l=this.customParseMaterials(a,e.materials,t),c=await this.parseObjectAsync(e.object,i,l,n),u=this.parseInteractionStates(e.interactionStates,t);return this.parseInteractions(e.object,n,u),c}async parseGeometriesAsync(e){var n,i;let t={};if(e!==void 0)for(let s=0,o=e.length;s<o;s++){let a=e[s],l;try{switch((n=a.userData)==null?void 0:n.type){case void 0:l=this.loader.parseGeometries([a])[a.uuid];break;case"NonParametricGeometry":if(a.gltf){if(!this.gltfLoader){this.gltfLoader=new Zm;let d=new bg;d.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.2/"),this.gltfLoader.setDRACOLoader(d)}let u=await new Promise(d=>{this.gltfLoader.parse(JSON.stringify(a.gltf),"",d)}),h=[];u.scene.traverse(d=>{let f=d;f.isMesh&&h.push(f.geometry)}),h.length===1?l=h[0]:(h=Jm(h,d=>d.userData.groupIndex),l=tl.mergeBufferGeometries(h,!0),l.groups.forEach((d,f)=>{d.materialIndex=h[f].userData.materialIndex}))}else l=this.loader.parseGeometries([a])[a.uuid];l.userData={};let c=Object.assign({},a.userData,{geometry:l});l=Lo.create(c);break;default:l=kc(a.userData)}l.uuid=a.uuid,a.name!==void 0&&(l.name=a.name),t[a.uuid]=l}catch(c){console.warn("ObjectLoader > parseGeometries: error parsing geometry of type .",(i=a.userData)==null?void 0:i.type),console.error(c)}}return t}parseTextures(e,t){let n=this.loader.parseTextures(e,t);return Object.keys(n).forEach(i=>{let s=new bi().copy(n[i]);s.uuid=i,n[i]=s}),n}customParseMaterials(e,t,n){let i={};if(t!==void 0)for(let s=0,o=t.length;s<o;s++){let a=t[s],l=e[a.uuid],c=l.userData;if(c.type!==void 0){let u=wx[c.type];i[a.uuid]=u.fromJSON(l,a,n)}}return i}parseObject(e,t,n,i){let s;if(e.geometry!==void 0){let o=rA(t,e.geometry),a=sA(n,e.material);if(o){switch(e.objectType){case"Mesh2D":s=new Ml(o,a).fromJSON(e);break;case"Mesh3D":s=new Al(o,a).fromJSON(e);break;case"NonParametric":s=new Fd(o,a).fromJSON(e);break;case"TextFrame":s=new Os(o,a),s.fromJSONasync(e).then(()=>{}).catch(()=>{});break;case"VectorObject":s=new Ps(o,a).fromJSON(e);break;case"SubdivObject":s=new Nl(o,a).fromJSON(e),s.subdivPointer=o.subdivPointer;break;default:console.warn("ObjectLoader > parseObject: unsupported object type",e.objectType);return}a||(s.name+=" (Recovered)")}else s=new Pi().fromJSON(e),s.name+=" (Recovered)",console.warn("An empty object is created instead")}else switch(e.objectType){case"Scene":s=new zs().fromJSON(e);break;case"CombinedCamera":s=new Sr().fromJSON(e);break;case"LightDirectional":s=new Rd().fromJSON(e);break;case"LightPoint":s=new Bd().fromJSON(e);break;case"LightSpot":s=new Od().fromJSON(e);break;case"EmptyObject":s=new Pi().fromJSON(e);break;default:if(e.type==="HemisphereLight"||e.type==="DirectionalLight")s=this.loader.parseObject(e,t,n);else{console.warn("ObjectLoader > parseObject: unsupported object type",e.objectType);return}}if(ei(s)&&(i[e.uuid]=s),e.children!==void 0)for(let o of e.children){let a=this.parseObject(o,t,n,i);a!==void 0&&s.add(a)}return s instanceof zs&&s.initFromObjectLoader(e),s}async parseObjectAsync(e,t,n,i){let s;if(e.geometry!==void 0){let o=rA(t,e.geometry),a=sA(n,e.material);if(o){switch(e.objectType){case"Mesh2D":s=new Ml(o,a).fromJSON(e);break;case"Mesh3D":s=new Al(o,a).fromJSON(e);break;case"NonParametric":s=new Fd(o,a).fromJSON(e);break;case"TextFrame":s=new Os(o,a);try{await s.fromJSONasync(e)}catch(l){console.log(l)}break;case"VectorObject":s=new Ps(o,a).fromJSON(e);break;case"SubdivObject":s=new Nl(o,a).fromJSON(e),s.subdivPointer=o.subdivPointer;break;default:console.warn("ObjectLoader > parseObject: unsupported object type",e.objectType);return}a||(s.name+=" (Recovered)")}else s=new Pi().fromJSON(e),s.name+=" (Recovered)",console.warn("An empty object is created instead")}else switch(e.objectType){case"Scene":s=new zs().fromJSON(e);break;case"CombinedCamera":s=new Sr().fromJSON(e);break;case"LightDirectional":s=new Rd().fromJSON(e);break;case"LightPoint":s=new Bd().fromJSON(e);break;case"LightSpot":s=new Od().fromJSON(e);break;case"EmptyObject":s=new Pi().fromJSON(e);break;default:if(e.type==="HemisphereLight"||e.type==="DirectionalLight")s=this.loader.parseObject(e,t,n);else{console.warn("ObjectLoader > parseObject: unsupported object type",e.objectType);return}}if(ei(s)&&(i[e.uuid]=s),e.children!==void 0)for(let o of e.children){let a=await this.parseObjectAsync(o,t,n,i);a!==void 0&&s.add(a)}return s instanceof zs&&s.initFromObjectLoader(e),s}parseInteractionStates(e,t){let n={};if(e!==void 0)for(let i=0,s=e.length;i<s;i++){let o=new bs().fromJSON(e[i],t);n[o.uuid]=o}return n}parseInteractions(e,t,n){let i=t[e.uuid];if(e.interaction!==void 0&&i!==void 0&&(i.interaction=new Ls(i).fromJSON(e.interaction,t,n)),e.children!==void 0)for(let s of e.children)this.parseInteractions(s,t,n)}};var Sg=class{constructor(e,t,n,i){this.isEnable=!1;this._enableEvent={};this._map={};this._prevAncestors=[];this._raycaster=new Up;this._intersection=new M;this._plane=new ni;this._normal=new M;this._position=new M;this._onMouseDown=e=>{this._raycaster.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._handleMouseDownEvent()};this._onMouseUp=e=>{this._raycaster.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._handleMouseUpEvent()};this._onMouseMove=e=>{this._raycaster.setFromCamera(this._getPointer(e.clientX,e.clientY),this._camera),this._camera.getWorldDirection(this._normal),this._normal.negate(),this._handleMouseHoverEvent(),this._handleLookAtEvent(),this._handleFollowEvent()};this._onTouchStart=e=>{e.touches.length===1&&(e.preventDefault(),this._raycaster.setFromCamera(this._getPointer(e.touches[0].clientX,e.touches[0].clientY),this._camera),this._camera.getWorldDirection(this._normal),this._normal.negate(),this._handleMouseDownEvent(),this._handleMouseHoverEvent(),this._handleLookAtEvent(),this._handleFollowEvent())};this._onTouchEnd=()=>{this._handleMouseUpEvent(),this._handleMouseHoverEvent(!0)};this._onTouchMove=e=>{e.touches.length===1&&(e.preventDefault(),e.stopPropagation(),this._raycaster.setFromCamera(this._getPointer(e.touches[0].clientX,e.touches[0].clientY),this._camera),this._camera.getWorldDirection(this._normal),this._normal.negate(),this._handleMouseHoverEvent(),this._handleLookAtEvent(),this._handleFollowEvent())};this._onKeyDown=e=>{this._handleKeyDownEvent(e.key)};this._onKeyUp=e=>{this._handleKeyUpEvent(e.key)};this._domElement=e,this._scene=t,this._camera=n,this._app=i}activate(){this.isEnable=!0,this._scene.traverseEntity(e=>{if(e.interaction!==void 0){e.interaction.start();for(let t of e.interaction.events){let n=t.type;this._enableEvent[n]=!0,(n===Ze.KEY_DOWN||n===Ze.KEY_UP||n===Ze.START||n===Ze.LOOK_AT||n===Ze.FOLLOW)&&(this._map[n]===void 0&&(this._map[n]=[]),this._map[n].push(e))}}}),this._enableEvent[Ze.START]!==void 0&&this._handleStartEvent(),this._enableEvent[Ze.MOUSE_DOWN]!==void 0&&(this._domElement.addEventListener("pointerdown",this._onMouseDown,!1),this._domElement.addEventListener("touchstart",this._onTouchStart,!1)),this._enableEvent[Ze.MOUSE_UP]!==void 0&&(this._domElement.addEventListener("pointerup",this._onMouseUp,!1),this._domElement.addEventListener("touchend",this._onTouchEnd,!1)),(this._enableEvent[Ze.MOUSE_HOVER]!==void 0||this._enableEvent[Ze.LOOK_AT]!==void 0||this._enableEvent[Ze.FOLLOW]!==void 0)&&(this._domElement.addEventListener("pointermove",this._onMouseMove,!1),this._domElement.addEventListener("touchstart",this._onTouchStart,!1),this._domElement.addEventListener("touchend",this._onTouchEnd,!1),this._domElement.addEventListener("touchmove",this._onTouchMove,!1)),this._enableEvent[Ze.KEY_DOWN]!==void 0&&document.addEventListener("keydown",this._onKeyDown,!1),this._enableEvent[Ze.KEY_UP]!==void 0&&document.addEventListener("keyup",this._onKeyUp,!1)}deactivate(){this._scene.traverseEntity(e=>{e.interaction!==void 0&&e.interaction.end(),e.interaction.cache=void 0}),this._domElement.removeEventListener("pointerdown",this._onMouseDown),this._domElement.removeEventListener("pointerup",this._onMouseUp),this._domElement.removeEventListener("pointermove",this._onMouseMove),this._domElement.removeEventListener("touchstart",this._onTouchStart),this._domElement.removeEventListener("touchend",this._onTouchEnd),this._domElement.removeEventListener("touchmove",this._onTouchMove),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("keyup",this._onKeyUp),this._enableEvent={},this._map={},this.isEnable=!1}reset(){this._scene.traverseEntity(e=>{e.interaction.start()}),this._handleStartEvent()}_getPointer(e,t){let n=this._domElement.getBoundingClientRect();return{x:(e-n.left)/n.width*2-1,y:-((t-n.top)/n.height)*2+1}}_handleStartEvent(){var e;(e=this._map[Ze.START])==null||e.forEach(t=>{var n;(n=t.interactionCache.start)==null||n.dispatch()})}_handleMouseDownEvent(){var t;let e=this._raycastMesh(this._raycaster);for(let n=0,i=e.length;n<i;++n){let s=e[n].object;if((t=s.interactionCache.mouseDown)==null||t.dispatch(),s.traverseAncestors(o=>{var a;o instanceof Pi&&((a=o.interactionCache.mouseDown)==null||a.dispatch())}),!s.interactionCache.follow)break}}_handleMouseUpEvent(){var t;let e=this._raycastMesh(this._raycaster);for(let n=0,i=e.length;n<i;++n){let s=e[n].object;if((t=s.interactionCache.mouseUp)==null||t.dispatch(),s.traverseAncestors(o=>{var a;o instanceof Pi&&((a=o.interactionCache.mouseUp)==null||a.dispatch())}),!s.interactionCache.follow)break}}_handleMouseHoverEvent(e=!1){var t,n;if(this._enableEvent[Ze.MOUSE_HOVER]!==void 0){let i;if(!e){let o=this._raycastMesh(this._raycaster).find(a=>!a.object.interactionCache.follow);i=o?o.object:void 0}if(this._prevObject!==i){this._prevObject!==void 0&&((t=this._prevObject.interactionCache.mouseHover)==null||t.dispatchReverse()),i!==void 0&&((n=i.interactionCache.mouseHover)==null||n.dispatch());let s=[];i==null||i.traverseAncestors(l=>{l instanceof Pi&&l.interactionCache.mouseHover&&s.push(l)}),this._prevAncestors.filter(l=>{var c;return s.includes(l)?!1:((c=l.interactionCache.mouseHover)==null||c.dispatchReverse(),!0)});let o=s.filter(l=>{var c;return this._prevAncestors.includes(l)?!1:((c=l.interactionCache.mouseHover)==null||c.dispatch(),!0)}),a=this._prevAncestors.filter(l=>s.includes(l));this._prevAncestors=[...a,...o]}this._prevObject=i}}_handleLookAtEvent(){var e;(e=this._map[Ze.LOOK_AT])==null||e.forEach(t=>{var i;let n=(i=t.interactionCache.lookAt)==null?void 0:i.distance;n!==void 0&&(this._plane.set(this._normal,-n),this._raycaster.ray.intersectPlane(this._plane,this._intersection),t.interaction.lookAt(this._intersection))}),this._app.skipRender=!1}_handleFollowEvent(){var e;(e=this._map[Ze.FOLLOW])==null||e.forEach(t=>{this._plane.setFromNormalAndCoplanarPoint(this._normal,t.getWorldPosition(this._position)),this._raycaster.ray.intersectPlane(this._plane,this._intersection),t.interaction.follow(this._intersection)}),this._app.skipRender=!1}_handleKeyDownEvent(e){var t;(t=this._map[Ze.KEY_DOWN])==null||t.forEach(n=>{var s;let i=(s=n.interactionCache.keyDown)==null?void 0:s.find(o=>o.key===e);i==null||i.dispatch()})}_handleKeyUpEvent(e){var t;(t=this._map[Ze.KEY_UP])==null||t.forEach(n=>{var s;let i=(s=n.interactionCache.keyUp)==null?void 0:s.find(o=>o.key===e);i==null||i.dispatch()})}_raycastMesh(e){let t=[],n=i=>{for(let s of i.children)ei(s)&&!s.raycastLock&&s.visible&&(wS(s)&&e.intersectObject(s,!1,t),n(s))};return n(this._scene),t}};var Mg=class{constructor(e,t,n,i,s){this._aspect=1;this._renderer=e,this._camera=t,this._frameSize=new O().copy(n),this._editorSize=new O().copy(i),this._aspect=t.aspect,this._fov=s!=null?s:t.fov}set frameSize(e){this._frameSize.copy(e)}updateRenderer(){!this._renderer||this._renderer.setSize(this._frameSize.x,this._frameSize.y)}updateViewport(){if(!this._renderer||!this._camera||this._camera.cameraType!=="PerspectiveCamera")return;let e=this._frameSize.x,t=this._frameSize.y,n=this._editorSize.x,i=this._editorSize.y,s=0,o=0,a=e,l=t;e<n&&(s=(n-e)*.5,s=-s,a=n),t<i&&(o=(i-t)*.5,o=-o,l=i),this._aspect=a/l,this._renderer.setViewport(s,o,a,l)}updateCamera(){if(!!this._camera)if(this._camera.cameraType==="PerspectiveCamera"){let e=this._frameSize.y,t=this._editorSize.y,n=this._fov;if(e>t){let i=zF(e,1080,2160,1,15)/100;n*=e/t,n*=1-i}this._camera.aspect=this._aspect,this._camera.fov=n,this._camera.updateProjectionMatrix()}else this._camera.setViewplaneSize(this._frameSize.x,this._frameSize.y)}revert(){let e=window.innerWidth,t=window.innerHeight;this._renderer&&(this._renderer.setViewport(0,0,e,t),this._renderer.setSize(e,t)),this._camera&&(this._camera.aspect=e/t,this._camera.fov=this._fov,this._camera.setViewplaneSize(e,t),this._camera.updateProjectionMatrix())}};function zF(r,e,t,n,i){return(r-e)/(t-e)*(i-n)+n}var ko;(function(t){t[t.FULLSCREEN=1]="FULLSCREEN",t[t.CUSTOM=2]="CUSTOM"})(ko||(ko={}));var GF=class{constructor(){this._needsTransmission=!0;this._viewportMode=1;this._viewportWidth=window.innerWidth;this._viewportHeight=window.innerHeight;this.skipRender=!0;this.render=()=>{var t;requestAnimationFrame(this.render);let e=Ls.isAllAnimationsEnded;if(!(this.skipRender&&(e===void 0||e))){if(!this._renderer){console.error("Application::render >>> tried to renderer without a renderer");return}this._controls&&(this._controls.enableDamping||this._controls.autoRotate)?this.skipRender=!this._controls.update():this.skipRender=!0,this._playmode&&!this._playmode.isEnable&&this._playmode.activate(),this._scene&&this._camera&&(this._renderer.autoClear=!1,this._needsTransmission&&this.renderTransmissionTarget(),((t=this._scene.postprocessing)==null?void 0:t.enabled)?(this._renderer.autoClear=!1,this._scene.postprocessing.render()):(this._renderer.autoClear=!0,this._renderer.render(this._scene,this._camera)))}};this.resize=()=>{var e,t,n,i;this.skipRender=!1,!!this._renderer&&(this._viewportMode===1&&(this._viewportWidth=window.innerWidth,this._viewportHeight=window.innerHeight,this._frameView&&(this._frameView.frameSize=new O(this._viewportWidth,this._viewportHeight))),(e=this._frameView)==null||e.updateRenderer(),((t=this._scene)==null?void 0:t.postprocessing)&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight),this._viewportMode!==1&&((n=this._frameView)==null||n.updateViewport()),this._camera&&((i=this._frameView)==null||i.updateCamera(),this._camera.cameraType==="PerspectiveCamera"&&this._viewportMode===1&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()))};window.addEventListener("resize",Wm(this.resize,200))}async load(e){let n=await(await fetch(e,{credentials:"include",mode:"no-cors"})).json();await this.start(n)}async start(e){this._editorData=e.editor,this._needsTransmission=e.needsTransmission!==void 0?e.needsTransmission:!0;let n=await new wg().parseAsync(e);this._scene=n,this._camera=this._scene.activeCamera,this.init(),this.resize(),this.render()}renderTransmissionTarget(){!this._renderer||!this._transmissionRenderTarget||!this._scene||!this._camera||(this._renderer.setRenderTarget(this._transmissionRenderTarget),this._renderer.clear(),this._camera.layers.enable(0),this._camera.layers.disable(3),this._renderer.render(this._scene,this._camera),this._renderer.setRenderTarget(null),this._camera.layers.enable(3))}init(){var n,i,s,o;let e=document.getElementById("canvas3d");if(!this._scene||!this._camera)return;((n=this._scene.postprocessing)==null?void 0:n.enabled)?(this._renderer=new wt({canvas:e,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._scene.postprocessing.init({renderer:this._renderer,camera:this._camera,scene:this._scene})):this._renderer=new wt({canvas:e,antialias:!0,alpha:!0,stencil:!0,depth:!0,powerPreference:"high-performance"}),this._needsTransmission&&(this._transmissionRenderTarget=new bt(2048,2048,{generateMipmaps:!0,minFilter:Ai,magFilter:$e,wrapS:Zt,wrapT:Zt}),this._transmissionRenderTarget.depthTexture=new so(2048,2048),this._scene.traverseEntity(a=>{if(!(!(a instanceof Vn)||!this._transmissionRenderTarget)&&!Array.isArray(a.material)){let l=a.material.userData.layers.getLayersOfType(lt.TRANSMISSION);for(let c of l)c.uniforms[`f${c.id}_transmissionSamplerMap`].value=this._transmissionRenderTarget.texture,c.uniforms[`f${c.id}_transmissionDepthMap`].value=this._transmissionRenderTarget.depthTexture}})),this._viewportMode=(i=this._scene.canvas.mode)!=null?i:1,this._viewportWidth=(s=this._scene.canvas.size.width)!=null?s:window.innerWidth,this._viewportHeight=(o=this._scene.canvas.size.height)!=null?o:window.innerHeight,this._renderer.setPixelRatio(window.devicePixelRatio),this._renderer.setSize(this._viewportWidth,this._viewportHeight),this._scene.postprocessing&&this._scene.postprocessing.resize(this._viewportWidth,this._viewportHeight),this._renderer.shadowMap.enabled=!0,this._renderer.shadowMap.type=qd,this._renderer.setClearColor(this._scene.color,this._scene.alpha),this._frameView=new Mg(this._renderer,this._camera,new O(this._viewportWidth,this._viewportHeight),new O(this._scene.canvas.editorSize.width,this._scene.canvas.editorSize.height)),!0&&(this._controls=new Gp(this._camera,this._renderer.domElement),this._editorData&&(this._controls.fromJSON(this._editorData.orbitControls),this._controls.useKeyEvents=!1),this._controls.addEventListener("change",()=>this.skipRender=!1),this._controls.addEventListener("start",()=>this.skipRender=!1)),this._playmode=new Sg(this._renderer.domElement,this._scene,this._camera,this)}};ui.FONTS_PATH="_assets/_fonts/";export{GF as Application};
|