@splinetool/loader 0.9.469 → 0.9.471
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/SplineLoader.cjs +33 -33
- package/build/SplineLoader.js +32 -32
- package/package.json +1 -1
package/build/SplineLoader.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var px=Object.create;var Us=Object.defineProperty;var fx=Object.getOwnPropertyDescriptor;var mx=Object.getOwnPropertyNames;var hx=Object.getPrototypeOf,yx=Object.prototype.hasOwnProperty;var Fn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),dp=(n,r)=>{for(var e in r)Us(n,e,{get:r[e],enumerable:!0})},up=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of mx(r))!yx.call(n,o)&&o!==e&&Us(n,o,{get:()=>r[o],enumerable:!(t=fx(r,o))||t.enumerable});return n};var za=(n,r,e)=>(e=n!=null?px(hx(n)):{},up(r||!n||!n.__esModule?Us(e,"default",{value:n,enumerable:!0}):e,n)),gx=n=>up(Us({},"__esModule",{value:!0}),n);var $h=Fn((zd,qh)=>{(function(n,r){typeof zd=="object"?qh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(zd,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var c=0;c<e.length;c++)t-=s(e[c]),t<0&&(t+=1),o-=s(e[c]),o<0&&(o+=1),i-=s(e[c]),i<0&&(i+=1);s=null;var u=function(){var l=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=l-(a=l|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,a]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,a=+l[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Jh=Fn((Jl,Qh)=>{(function(n,r){typeof Jl=="object"&&typeof Qh<"u"?r(Jl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Jl,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,c,u,l,d,p,f,m,h,y,g,x=r[0].length,S=r.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],T=[],_=e==="f"?S:x,v=h=p=0;v<S;v++)b[v]=new Array(_).fill(0);for(v=0;v<x;v++)T[v]=new Array(x).fill(0);var N,P=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=r[v][a];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,a=v;a<S;a++)m+=Math.pow(b[a][v],2);if(m<i)p=0;else for(f=(d=b[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v]=d-p,a=c;a<x;a++){for(m=0,s=v;s<S;s++)m+=b[s][v]*b[s][a];for(d=m/f,s=v;s<S;s++)b[s][a]=b[s][a]+d*b[s][v]}for(P[v]=p,m=0,a=c;a<x;a++)m+=Math.pow(b[v][a],2);if(m<i)p=0;else{for(f=(d=b[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v+1]=d-p,a=c;a<x;a++)w[a]=b[v][a]/f;for(a=c;a<S;a++){for(m=0,s=c;s<x;s++)m+=b[a][s]*b[v][s];for(s=c;s<x;s++)b[a][s]=b[a][s]+m*w[s]}}h<(y=Math.abs(P[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=c;a<x;a++)T[a][v]=b[v][a]/f;for(a=c;a<x;a++){for(m=0,s=c;s<x;s++)m+=b[v][s]*T[s][a];for(s=c;s<x;s++)T[s][a]=T[s][a]+m*T[s][v]}}for(a=c;a<x;a++)T[v][a]=0,T[a][v]=0;T[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<S;v++){for(a=x;a<S;a++)b[v][a]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=P[v],a=c;a<_;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=c;a<_;a++){for(m=0,s=c;s<S;s++)m+=b[s][v]*b[s][a];for(d=m/f,s=v;s<S;s++)b[s][a]=b[s][a]+d*b[s][v]}for(a=v;a<S;a++)b[a][v]=b[a][v]/p}else for(a=v;a<S;a++)b[a][v]=0;b[v][v]=b[v][v]+1}}for(o*=h,s=x-1;0<=s;s--)for(var C=0;C<50;C++){for(N=!1,c=s;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(P[c-1])<=o)break}if(!N){for(l=0,u=c-(m=1),v=c;v<s+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=P[v],P[v]=Math.sqrt(d*d+p*p),l=p/(f=P[v]),m=-d/f,e)for(a=0;a<S;a++)y=b[a][u],g=b[a][v],b[a][u]=y*l+g*m,b[a][v]=-y*m+g*l}if(g=P[s],c===s){if(g<0&&(P[s]=-g,t))for(a=0;a<x;a++)T[a][s]=-T[a][s];break}for(h=P[c],d=(((y=P[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,v=c+(m=l=1);v<s+1;v++){if(p=w[v],y=P[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(a=0;a<x;a++)h=T[a][v-1],g=T[a][v],T[a][v-1]=h*l+g*m,T[a][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(P[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*l+g*m,b[a][v]=-y*m+g*l}w[c]=0,w[s]=d,P[s]=h}for(v=0;v<x;v++)P[v]<o&&(P[v]=0);return{u:b,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Ny=Fn((nu,iu)=>{(function(n,r){typeof nu=="object"&&typeof iu<"u"?iu.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(nu,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var c=t-1>>1,u=i[c];if(a(s,u)>=0)break;i[t]=u,t=c}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,c=i[t];t<s;){var u=(t<<1)+1,l=i[u],d=u+1;if(d<this.length&&a(i[d],l)<0&&(u=d,l=i[d]),a(l,c)>=0)break;i[t]=l,t=u}i[t]=c};function r(e,t){return e<t?-1:e>t?1:0}return n})});var My=Fn((bz,au)=>{"use strict";var nc=Ny();nc.default&&(nc=nc.default);au.exports=Iy;au.exports.default=Iy;function Iy(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var c=n[0][s];(!s||c[0]<t)&&(t=c[0]),(!s||c[1]<o)&&(o=c[1]),(!s||c[0]>i)&&(i=c[0]),(!s||c[1]>a)&&(a=c[1])}var u=i-t,l=a-o,d=Math.min(u,l),p=d/2;if(d===0){var f=[t,o];return f.distance=0,f}for(var m=new nc(void 0,aP),h=t;h<i;h+=d)for(var y=o;y<a;y+=d)m.push(new Jo(h+p,y+p,p,n));var g=lP(n),x=new Jo(t+u/2,o+l/2,0,n);x.d>g.d&&(g=x);for(var S=m.length;m.length;){var w=m.pop();w.d>g.d&&(g=w,e&&console.log("found best %d after %d probes",Math.round(1e4*w.d)/1e4,S)),!(w.max-g.d<=r)&&(p=w.h/2,m.push(new Jo(w.x-p,w.y-p,p,n)),m.push(new Jo(w.x+p,w.y-p,p,n)),m.push(new Jo(w.x-p,w.y+p,p,n)),m.push(new Jo(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function aP(n,r){return r.max-n.max}function Jo(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=sP(n,r,t),this.max=this.d+this.h*Math.SQRT2}function sP(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,c=a.length,u=c-1;s<c;u=s++){var l=a[s],d=a[u];l[1]>r!=d[1]>r&&n<(d[0]-l[0])*(r-l[1])/(d[1]-l[1])+l[0]&&(t=!t),o=Math.min(o,cP(n,r,l,d))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function lP(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var c=o[i],u=o[s],l=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*l,t+=(c[1]+u[1])*l,r+=l*3}return r===0?new Jo(o[0][0],o[0][1],0,n):new Jo(e/r,t/r,0,n)}function cP(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var c=((n-o)*a+(r-i)*s)/(a*a+s*s);c>1?(o=t[0],i=t[1]):c>0&&(o+=a*c,i+=s*c)}return a=n-o,s=r-i,a*a+s*s}});var kg=Fn(Lc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var S=0;S<l._howls.length;S++)l._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),S=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=S*1e3/Math.abs(y._rate),b=p._sprite[l][0]/1e3,T=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=b,y._stop=T,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=T){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var P=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(M){p._emit("playerror",y._id,M)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var C=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||C)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,S=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,S)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var T=(Date.now()-b)/f;b=Date.now(),g+=x*T,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),S=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=S*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var S=function(){l._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);s(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}s(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},a(h)}},a=function(l){try{l.send()}catch{l.onerror()}},s=function(l,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Lc<"u"&&(Lc.Howler=r,Lc.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(r,e,t,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var c=s._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,a=typeof a!="number"?c[5]:a,typeof r=="number")s._orientation=[r,e,t,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(r,e,t,o,i,a);else return c;return s},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),a=0;a<i.length;a++){var s=t._soundById(i[a]);if(s)if(typeof r=="number")s._stereo=r,s._pos=[r,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&n(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(r,0,0):s._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",s._id);else return s._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var c=i._soundById(a[s]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var c=i._soundById(a[s]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var a=r._getSoundIds(o),s=0;s<a.length;s++)if(i=r._soundById(a[s]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var tx=Fn((uZ,ex)=>{ex.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});var $O={};dp($O,{default:()=>td});module.exports=gx($O);var rd=require("three");function pp(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Yt(n,r){return Object.setPrototypeOf(n,r),n}function Hs(n){return Array.isArray(n)?n:[n]}function fp(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var xx=typeof global=="object"&&global&&global.Object===Object&&global,Ws=xx;var vx=typeof self=="object"&&self&&self.Object===Object&&self,bx=Ws||vx||Function("return this")(),pt=bx;var Sx=pt.Symbol,St=Sx;var mp=Object.prototype,wx=mp.hasOwnProperty,Tx=mp.toString,ja=St?St.toStringTag:void 0;function _x(n){var r=wx.call(n,ja),e=n[ja];try{n[ja]=void 0;var t=!0}catch{}var o=Tx.call(n);return t&&(r?n[ja]=e:delete n[ja]),o}var hp=_x;var Px=Object.prototype,Ox=Px.toString;function Ax(n){return Ox.call(n)}var yp=Ax;var Cx="[object Null]",Nx="[object Undefined]",gp=St?St.toStringTag:void 0;function Ix(n){return n==null?n===void 0?Nx:Cx:gp&&gp in Object(n)?hp(n):yp(n)}var ir=Ix;function Mx(n){return n!=null&&typeof n=="object"}var Nt=Mx;var Ex="[object Symbol]";function Lx(n){return typeof n=="symbol"||Nt(n)&&ir(n)==Ex}var kn=Lx;function Dx(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var qs=Dx;var Bx=Array.isArray,rt=Bx;var Rx=1/0,xp=St?St.prototype:void 0,vp=xp?xp.toString:void 0;function bp(n){if(typeof n=="string")return n;if(rt(n))return qs(n,bp)+"";if(kn(n))return vp?vp.call(n):"";var r=n+"";return r=="0"&&1/n==-Rx?"-0":r}var Sp=bp;function Gx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var ar=Gx;function Vx(n){return n}var wp=Vx;var zx="[object AsyncFunction]",jx="[object Function]",Fx="[object GeneratorFunction]",kx="[object Proxy]";function Ux(n){if(!ar(n))return!1;var r=ir(n);return r==jx||r==Fx||r==zx||r==kx}var $s=Ux;var Hx=pt["__core-js_shared__"],Ys=Hx;var Tp=function(){var n=/[^.]+$/.exec(Ys&&Ys.keys&&Ys.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wx(n){return!!Tp&&Tp in n}var _p=Wx;var qx=Function.prototype,$x=qx.toString;function Yx(n){if(n!=null){try{return $x.call(n)}catch{}try{return n+""}catch{}}return""}var po=Yx;var Xx=/[\\^$.*+?()[\]{}|]/g,Kx=/^\[object .+?Constructor\]$/,Zx=Function.prototype,Qx=Object.prototype,Jx=Zx.toString,ev=Qx.hasOwnProperty,tv=RegExp("^"+Jx.call(ev).replace(Xx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rv(n){if(!ar(n)||_p(n))return!1;var r=$s(n)?tv:Kx;return r.test(po(n))}var Pp=rv;function ov(n,r){return n?.[r]}var Op=ov;function nv(n,r){var e=Op(n,r);return Pp(e)?e:void 0}var Xt=nv;var iv=Xt(pt,"WeakMap"),Xs=iv;var Ap=Object.create,av=function(){function n(){}return function(r){if(!ar(r))return{};if(Ap)return Ap(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Cp=av;function sv(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Np=sv;function lv(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Ip=lv;var cv=800,dv=16,uv=Date.now;function pv(n){var r=0,e=0;return function(){var t=uv(),o=dv-(t-e);if(e=t,o>0){if(++r>=cv)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Mp=pv;function fv(n){return function(){return n}}var Ep=fv;var mv=function(){try{var n=Xt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Un=mv;var hv=Un?function(n,r){return Un(n,"toString",{configurable:!0,enumerable:!1,value:Ep(r),writable:!0})}:wp,Lp=hv;var yv=Mp(Lp),Dp=yv;function gv(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Bp=gv;var xv=9007199254740991,vv=/^(?:0|[1-9]\d*)$/;function bv(n,r){var e=typeof n;return r=r??xv,!!r&&(e=="number"||e!="symbol"&&vv.test(n))&&n>-1&&n%1==0&&n<r}var Hn=bv;function Sv(n,r,e){r=="__proto__"&&Un?Un(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Ks=Sv;function wv(n,r){return n===r||n!==n&&r!==r}var Wn=wv;var Tv=Object.prototype,_v=Tv.hasOwnProperty;function Pv(n,r,e){var t=n[r];(!(_v.call(n,r)&&Wn(t,e))||e===void 0&&!(r in n))&&Ks(n,r,e)}var qn=Pv;function Ov(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],c=t?t(e[s],n[s],s,e,n):void 0;c===void 0&&(c=n[s]),o?Ks(e,s,c):qn(e,s,c)}return e}var jr=Ov;var Rp=Math.max;function Av(n,r,e){return r=Rp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Rp(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Np(n,this,s)}}var Gp=Av;var Cv=9007199254740991;function Nv(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Cv}var $n=Nv;function Iv(n){return n!=null&&$n(n.length)&&!$s(n)}var Zs=Iv;var Mv=Object.prototype;function Ev(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Mv;return n===e}var Yn=Ev;function Lv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Vp=Lv;var Dv="[object Arguments]";function Bv(n){return Nt(n)&&ir(n)==Dv}var nd=Bv;var zp=Object.prototype,Rv=zp.hasOwnProperty,Gv=zp.propertyIsEnumerable,Vv=nd(function(){return arguments}())?nd:function(n){return Nt(n)&&Rv.call(n,"callee")&&!Gv.call(n,"callee")},Xn=Vv;function zv(){return!1}var jp=zv;var Up=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fp=Up&&typeof module=="object"&&module&&!module.nodeType&&module,jv=Fp&&Fp.exports===Up,kp=jv?pt.Buffer:void 0,Fv=kp?kp.isBuffer:void 0,kv=Fv||jp,un=kv;var Uv="[object Arguments]",Hv="[object Array]",Wv="[object Boolean]",qv="[object Date]",$v="[object Error]",Yv="[object Function]",Xv="[object Map]",Kv="[object Number]",Zv="[object Object]",Qv="[object RegExp]",Jv="[object Set]",eb="[object String]",tb="[object WeakMap]",rb="[object ArrayBuffer]",ob="[object DataView]",nb="[object Float32Array]",ib="[object Float64Array]",ab="[object Int8Array]",sb="[object Int16Array]",lb="[object Int32Array]",cb="[object Uint8Array]",db="[object Uint8ClampedArray]",ub="[object Uint16Array]",pb="[object Uint32Array]",Xe={};Xe[nb]=Xe[ib]=Xe[ab]=Xe[sb]=Xe[lb]=Xe[cb]=Xe[db]=Xe[ub]=Xe[pb]=!0;Xe[Uv]=Xe[Hv]=Xe[rb]=Xe[Wv]=Xe[ob]=Xe[qv]=Xe[$v]=Xe[Yv]=Xe[Xv]=Xe[Kv]=Xe[Zv]=Xe[Qv]=Xe[Jv]=Xe[eb]=Xe[tb]=!1;function fb(n){return Nt(n)&&$n(n.length)&&!!Xe[ir(n)]}var Hp=fb;function mb(n){return function(r){return n(r)}}var Kn=mb;var Wp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fa=Wp&&typeof module=="object"&&module&&!module.nodeType&&module,hb=Fa&&Fa.exports===Wp,id=hb&&Ws.process,yb=function(){try{var n=Fa&&Fa.require&&Fa.require("util").types;return n||id&&id.binding&&id.binding("util")}catch{}}(),fo=yb;var qp=fo&&fo.isTypedArray,gb=qp?Kn(qp):Hp,Qs=gb;var xb=Object.prototype,vb=xb.hasOwnProperty;function bb(n,r){var e=rt(n),t=!e&&Xn(n),o=!e&&!t&&un(n),i=!e&&!t&&!o&&Qs(n),a=e||t||o||i,s=a?Vp(n.length,String):[],c=s.length;for(var u in n)(r||vb.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Hn(u,c)))&&s.push(u);return s}var Js=bb;function Sb(n,r){return function(e){return n(r(e))}}var el=Sb;var wb=el(Object.keys,Object),$p=wb;var Tb=Object.prototype,_b=Tb.hasOwnProperty;function Pb(n){if(!Yn(n))return $p(n);var r=[];for(var e in Object(n))_b.call(n,e)&&e!="constructor"&&r.push(e);return r}var Yp=Pb;function Ob(n){return Zs(n)?Js(n):Yp(n)}var Zn=Ob;function Ab(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Xp=Ab;var Cb=Object.prototype,Nb=Cb.hasOwnProperty;function Ib(n){if(!ar(n))return Xp(n);var r=Yn(n),e=[];for(var t in n)t=="constructor"&&(r||!Nb.call(n,t))||e.push(t);return e}var Kp=Ib;function Mb(n){return Zs(n)?Js(n,!0):Kp(n)}var Qn=Mb;var Eb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lb=/^\w*$/;function Db(n,r){if(rt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||kn(n)?!0:Lb.test(n)||!Eb.test(n)||r!=null&&n in Object(r)}var Zp=Db;var Bb=Xt(Object,"create"),mo=Bb;function Rb(){this.__data__=mo?mo(null):{},this.size=0}var Qp=Rb;function Gb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Jp=Gb;var Vb="__lodash_hash_undefined__",zb=Object.prototype,jb=zb.hasOwnProperty;function Fb(n){var r=this.__data__;if(mo){var e=r[n];return e===Vb?void 0:e}return jb.call(r,n)?r[n]:void 0}var ef=Fb;var kb=Object.prototype,Ub=kb.hasOwnProperty;function Hb(n){var r=this.__data__;return mo?r[n]!==void 0:Ub.call(r,n)}var tf=Hb;var Wb="__lodash_hash_undefined__";function qb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=mo&&r===void 0?Wb:r,this}var rf=qb;function Jn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Jn.prototype.clear=Qp;Jn.prototype.delete=Jp;Jn.prototype.get=ef;Jn.prototype.has=tf;Jn.prototype.set=rf;var ad=Jn;function $b(){this.__data__=[],this.size=0}var of=$b;function Yb(n,r){for(var e=n.length;e--;)if(Wn(n[e][0],r))return e;return-1}var Io=Yb;var Xb=Array.prototype,Kb=Xb.splice;function Zb(n){var r=this.__data__,e=Io(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Kb.call(r,e,1),--this.size,!0}var nf=Zb;function Qb(n){var r=this.__data__,e=Io(r,n);return e<0?void 0:r[e][1]}var af=Qb;function Jb(n){return Io(this.__data__,n)>-1}var sf=Jb;function eS(n,r){var e=this.__data__,t=Io(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var lf=eS;function ei(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}ei.prototype.clear=of;ei.prototype.delete=nf;ei.prototype.get=af;ei.prototype.has=sf;ei.prototype.set=lf;var Mo=ei;var tS=Xt(pt,"Map"),Eo=tS;function rS(){this.size=0,this.__data__={hash:new ad,map:new(Eo||Mo),string:new ad}}var cf=rS;function oS(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var df=oS;function nS(n,r){var e=n.__data__;return df(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Lo=nS;function iS(n){var r=Lo(this,n).delete(n);return this.size-=r?1:0,r}var uf=iS;function aS(n){return Lo(this,n).get(n)}var pf=aS;function sS(n){return Lo(this,n).has(n)}var ff=sS;function lS(n,r){var e=Lo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var mf=lS;function ti(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}ti.prototype.clear=cf;ti.prototype.delete=uf;ti.prototype.get=pf;ti.prototype.has=ff;ti.prototype.set=mf;var pn=ti;var cS="Expected a function";function sd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(cS);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(sd.Cache||pn),e}sd.Cache=pn;var hf=sd;var dS=500;function uS(n){var r=hf(n,function(t){return e.size===dS&&e.clear(),t}),e=r.cache;return r}var yf=uS;var pS=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fS=/\\(\\)?/g,mS=yf(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(pS,function(e,t,o,i){r.push(o?i.replace(fS,"$1"):t||e)}),r}),gf=mS;function hS(n){return n==null?"":Sp(n)}var xf=hS;function yS(n,r){return rt(n)?n:Zp(n,r)?[n]:gf(xf(n))}var pr=yS;var gS=1/0;function xS(n){if(typeof n=="string"||kn(n))return n;var r=n+"";return r=="0"&&1/n==-gS?"-0":r}var Do=xS;function vS(n,r){r=pr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Do(r[e++])];return e&&e==t?n:void 0}var tl=vS;function bS(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var ri=bS;var vf=St?St.isConcatSpreadable:void 0;function SS(n){return rt(n)||Xn(n)||!!(vf&&n&&n[vf])}var bf=SS;function Sf(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=bf),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Sf(s,r-1,e,t,o):ri(o,s):t||(o[o.length]=s)}return o}var wf=Sf;function wS(n){var r=n==null?0:n.length;return r?wf(n,1):[]}var Tf=wS;function TS(n){return Dp(Gp(n,void 0,Tf),n+"")}var rl=TS;var _S=el(Object.getPrototypeOf,Object),oi=_S;var PS="[object Object]",OS=Function.prototype,AS=Object.prototype,_f=OS.toString,CS=AS.hasOwnProperty,NS=_f.call(Object);function IS(n){if(!Nt(n)||ir(n)!=PS)return!1;var r=oi(n);if(r===null)return!0;var e=CS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&_f.call(e)==NS}var Pf=IS;function MS(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Of=MS;function ES(){this.__data__=new Mo,this.size=0}var Af=ES;function LS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Cf=LS;function DS(n){return this.__data__.get(n)}var Nf=DS;function BS(n){return this.__data__.has(n)}var If=BS;var RS=200;function GS(n,r){var e=this.__data__;if(e instanceof Mo){var t=e.__data__;if(!Eo||t.length<RS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new pn(t)}return e.set(n,r),this.size=e.size,this}var Mf=GS;function ni(n){var r=this.__data__=new Mo(n);this.size=r.size}ni.prototype.clear=Af;ni.prototype.delete=Cf;ni.prototype.get=Nf;ni.prototype.has=If;ni.prototype.set=Mf;var ii=ni;function VS(n,r){return n&&jr(r,Zn(r),n)}var Ef=VS;function zS(n,r){return n&&jr(r,Qn(r),n)}var Lf=zS;var Gf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Df=Gf&&typeof module=="object"&&module&&!module.nodeType&&module,jS=Df&&Df.exports===Gf,Bf=jS?pt.Buffer:void 0,Rf=Bf?Bf.allocUnsafe:void 0;function FS(n,r){if(r)return n.slice();var e=n.length,t=Rf?Rf(e):new n.constructor(e);return n.copy(t),t}var Vf=FS;function kS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var zf=kS;function US(){return[]}var ol=US;var HS=Object.prototype,WS=HS.propertyIsEnumerable,jf=Object.getOwnPropertySymbols,qS=jf?function(n){return n==null?[]:(n=Object(n),zf(jf(n),function(r){return WS.call(n,r)}))}:ol,ai=qS;function $S(n,r){return jr(n,ai(n),r)}var Ff=$S;var YS=Object.getOwnPropertySymbols,XS=YS?function(n){for(var r=[];n;)ri(r,ai(n)),n=oi(n);return r}:ol,nl=XS;function KS(n,r){return jr(n,nl(n),r)}var kf=KS;function ZS(n,r,e){var t=r(n);return rt(n)?t:ri(t,e(n))}var il=ZS;function QS(n){return il(n,Zn,ai)}var ka=QS;function JS(n){return il(n,Qn,nl)}var al=JS;var ew=Xt(pt,"DataView"),sl=ew;var tw=Xt(pt,"Promise"),ll=tw;var rw=Xt(pt,"Set"),cl=rw;var Uf="[object Map]",ow="[object Object]",Hf="[object Promise]",Wf="[object Set]",qf="[object WeakMap]",$f="[object DataView]",nw=po(sl),iw=po(Eo),aw=po(ll),sw=po(cl),lw=po(Xs),fn=ir;(sl&&fn(new sl(new ArrayBuffer(1)))!=$f||Eo&&fn(new Eo)!=Uf||ll&&fn(ll.resolve())!=Hf||cl&&fn(new cl)!=Wf||Xs&&fn(new Xs)!=qf)&&(fn=function(n){var r=ir(n),e=r==ow?n.constructor:void 0,t=e?po(e):"";if(t)switch(t){case nw:return $f;case iw:return Uf;case aw:return Hf;case sw:return Wf;case lw:return qf}return r});var ho=fn;var cw=Object.prototype,dw=cw.hasOwnProperty;function uw(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&dw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Yf=uw;var pw=pt.Uint8Array,si=pw;function fw(n){var r=new n.constructor(n.byteLength);return new si(r).set(new si(n)),r}var li=fw;function mw(n,r){var e=r?li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Xf=mw;var hw=/\w*$/;function yw(n){var r=new n.constructor(n.source,hw.exec(n));return r.lastIndex=n.lastIndex,r}var Kf=yw;var Zf=St?St.prototype:void 0,Qf=Zf?Zf.valueOf:void 0;function gw(n){return Qf?Object(Qf.call(n)):{}}var Jf=gw;function xw(n,r){var e=r?li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var em=xw;var vw="[object Boolean]",bw="[object Date]",Sw="[object Map]",ww="[object Number]",Tw="[object RegExp]",_w="[object Set]",Pw="[object String]",Ow="[object Symbol]",Aw="[object ArrayBuffer]",Cw="[object DataView]",Nw="[object Float32Array]",Iw="[object Float64Array]",Mw="[object Int8Array]",Ew="[object Int16Array]",Lw="[object Int32Array]",Dw="[object Uint8Array]",Bw="[object Uint8ClampedArray]",Rw="[object Uint16Array]",Gw="[object Uint32Array]";function Vw(n,r,e){var t=n.constructor;switch(r){case Aw:return li(n);case vw:case bw:return new t(+n);case Cw:return Xf(n,e);case Nw:case Iw:case Mw:case Ew:case Lw:case Dw:case Bw:case Rw:case Gw:return em(n,e);case Sw:return new t;case ww:case Pw:return new t(n);case Tw:return Kf(n);case _w:return new t;case Ow:return Jf(n)}}var tm=Vw;function zw(n){return typeof n.constructor=="function"&&!Yn(n)?Cp(oi(n)):{}}var rm=zw;var jw="[object Map]";function Fw(n){return Nt(n)&&ho(n)==jw}var om=Fw;var nm=fo&&fo.isMap,kw=nm?Kn(nm):om,im=kw;var Uw="[object Set]";function Hw(n){return Nt(n)&&ho(n)==Uw}var am=Hw;var sm=fo&&fo.isSet,Ww=sm?Kn(sm):am,lm=Ww;var qw=1,$w=2,Yw=4,cm="[object Arguments]",Xw="[object Array]",Kw="[object Boolean]",Zw="[object Date]",Qw="[object Error]",dm="[object Function]",Jw="[object GeneratorFunction]",e1="[object Map]",t1="[object Number]",um="[object Object]",r1="[object RegExp]",o1="[object Set]",n1="[object String]",i1="[object Symbol]",a1="[object WeakMap]",s1="[object ArrayBuffer]",l1="[object DataView]",c1="[object Float32Array]",d1="[object Float64Array]",u1="[object Int8Array]",p1="[object Int16Array]",f1="[object Int32Array]",m1="[object Uint8Array]",h1="[object Uint8ClampedArray]",y1="[object Uint16Array]",g1="[object Uint32Array]",qe={};qe[cm]=qe[Xw]=qe[s1]=qe[l1]=qe[Kw]=qe[Zw]=qe[c1]=qe[d1]=qe[u1]=qe[p1]=qe[f1]=qe[e1]=qe[t1]=qe[um]=qe[r1]=qe[o1]=qe[n1]=qe[i1]=qe[m1]=qe[h1]=qe[y1]=qe[g1]=!0;qe[Qw]=qe[dm]=qe[a1]=!1;function dl(n,r,e,t,o,i){var a,s=r&qw,c=r&$w,u=r&Yw;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!ar(n))return n;var l=rt(n);if(l){if(a=Yf(n),!s)return Ip(n,a)}else{var d=ho(n),p=d==dm||d==Jw;if(un(n))return Vf(n,s);if(d==um||d==cm||p&&!o){if(a=c||p?{}:rm(n),!s)return c?kf(n,Lf(a,n)):Ff(n,Ef(a,n))}else{if(!qe[d])return o?n:{};a=tm(n,d,s)}}i||(i=new ii);var f=i.get(n);if(f)return f;i.set(n,a),lm(n)?n.forEach(function(y){a.add(dl(y,r,e,y,n,i))}):im(n)&&n.forEach(function(y,g){a.set(g,dl(y,r,e,g,n,i))});var m=u?c?al:ka:c?Qn:Zn,h=l?void 0:m(n);return Bp(h||n,function(y,g){h&&(g=y,y=n[g]),qn(a,g,dl(y,r,e,g,n,i))}),a}var ul=dl;var x1=1,v1=4;function b1(n){return ul(n,x1|v1)}var yo=b1;var S1="__lodash_hash_undefined__";function w1(n){return this.__data__.set(n,S1),this}var pm=w1;function T1(n){return this.__data__.has(n)}var fm=T1;function pl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}pl.prototype.add=pl.prototype.push=pm;pl.prototype.has=fm;var mm=pl;function _1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var hm=_1;function P1(n,r){return n.has(r)}var ym=P1;var O1=1,A1=2;function C1(n,r,e,t,o,i){var a=e&O1,s=n.length,c=r.length;if(s!=c&&!(a&&c>s))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&A1?new mm:void 0;for(i.set(n,r),i.set(r,n);++d<s;){var m=n[d],h=r[d];if(t)var y=a?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!hm(r,function(g,x){if(!ym(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var fl=C1;function N1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var gm=N1;function I1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var xm=I1;var M1=1,E1=2,L1="[object Boolean]",D1="[object Date]",B1="[object Error]",R1="[object Map]",G1="[object Number]",V1="[object RegExp]",z1="[object Set]",j1="[object String]",F1="[object Symbol]",k1="[object ArrayBuffer]",U1="[object DataView]",vm=St?St.prototype:void 0,ld=vm?vm.valueOf:void 0;function H1(n,r,e,t,o,i,a){switch(e){case U1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case k1:return!(n.byteLength!=r.byteLength||!i(new si(n),new si(r)));case L1:case D1:case G1:return Wn(+n,+r);case B1:return n.name==r.name&&n.message==r.message;case V1:case j1:return n==r+"";case R1:var s=gm;case z1:var c=t&M1;if(s||(s=xm),n.size!=r.size&&!c)return!1;var u=a.get(n);if(u)return u==r;t|=E1,a.set(n,r);var l=fl(s(n),s(r),t,o,i,a);return a.delete(n),l;case F1:if(ld)return ld.call(n)==ld.call(r)}return!1}var bm=H1;var W1=1,q1=Object.prototype,$1=q1.hasOwnProperty;function Y1(n,r,e,t,o,i){var a=e&W1,s=ka(n),c=s.length,u=ka(r),l=u.length;if(c!=l&&!a)return!1;for(var d=c;d--;){var p=s[d];if(!(a?p in r:$1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=a;++d<c;){p=s[d];var g=n[p],x=r[p];if(t)var S=a?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(S===void 0?g===x||o(g,x,e,t,i):S)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,b=r.constructor;w!=b&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var Sm=Y1;var X1=1,wm="[object Arguments]",Tm="[object Array]",ml="[object Object]",K1=Object.prototype,_m=K1.hasOwnProperty;function Z1(n,r,e,t,o,i){var a=rt(n),s=rt(r),c=a?Tm:ho(n),u=s?Tm:ho(r);c=c==wm?ml:c,u=u==wm?ml:u;var l=c==ml,d=u==ml,p=c==u;if(p&&un(n)){if(!un(r))return!1;a=!0,l=!1}if(p&&!l)return i||(i=new ii),a||Qs(n)?fl(n,r,e,t,o,i):bm(n,r,c,e,t,o,i);if(!(e&X1)){var f=l&&_m.call(n,"__wrapped__"),m=d&&_m.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new ii),o(h,y,e,t,i)}}return p?(i||(i=new ii),Sm(n,r,e,t,o,i)):!1}var Pm=Z1;function Om(n,r,e,t,o){return n===r?!0:n==null||r==null||!Nt(n)&&!Nt(r)?n!==n&&r!==r:Pm(n,r,e,t,Om,o)}var Am=Om;function Q1(n,r){return n!=null&&r in Object(n)}var Cm=Q1;function J1(n,r,e){r=pr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Do(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&$n(o)&&Hn(a,o)&&(rt(n)||Xn(n)))}var Nm=J1;function eT(n,r){return n!=null&&Nm(n,r,Cm)}var Im=eT;function tT(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Mm=tT;function rT(n,r){return r.length<2?n:tl(n,Of(r,0,-1))}var Em=rT;function oT(n,r){return Am(n,r)}var cd=oT;function nT(n,r){return r=pr(r,n),n=Em(n,r),n==null||delete n[Do(Mm(r))]}var Lm=nT;function iT(n){return Pf(n)?void 0:n}var Dm=iT;var aT=1,sT=2,lT=4,cT=rl(function(n,r){var e={};if(n==null)return e;var t=!1;r=qs(r,function(i){return i=pr(i,n),t||(t=i.length>1),i}),jr(n,al(n),e),t&&(e=ul(e,aT|sT|lT,Dm));for(var o=r.length;o--;)Lm(e,r[o]);return e}),ci=cT;function dT(n,r,e,t){if(!ar(n))return n;r=pr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var c=Do(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=a){var l=s[c];u=t?t(l,c,s):void 0,u===void 0&&(u=ar(l)?l:Hn(r[o+1])?[]:{})}qn(s,c,u),s=s[c]}return n}var Bm=dT;function uT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=tl(n,a);e(s,a)&&Bm(i,pr(a,n),s)}return i}var Rm=uT;function pT(n,r){return Rm(n,r,function(e,t){return Im(n,t)})}var Gm=pT;var fT=rl(function(n,r){return n==null?{}:Gm(n,r)}),Tr=fT;var me=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,me.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,me.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,me.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ua(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Ua(t)}return Object.freeze(n)}function Vm(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var di=class extends Error{};function hl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Fr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function ui(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function zm(){return typeof process<"u"}function jm(n,r){for(let e of n)r(e.id,e.data)!==!0&&jm(e.children,r)}function Fm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Fm(e,r)}var Qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ua(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Fm(o,t)}}traverse(e){jm(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(l=>l.id===e);if(s<0)throw new Error("not expected");let c=a[s];return a=[...a],a[s]={...c,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,Qe.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:a,children:s};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new di("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,c=this.childrenArray(a),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(a,c);a=t,c=d.childrenArray(a);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(a,c),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Vm(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Fr(0,o,o);{let a=i[0].fi;return Fr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(c=>c.fi>a.fi);if(s===void 0){let c=i[i.length-1].fi;return Fr(c,c+o,o)}else return Fr(a.fi,s.fi,o)}}};var pi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=a[u],a[u]=o[c],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let c of Object.keys(o)){i[c]=a[c];let u=o[c];u===void 0?delete a[c]:a[c]=u,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(pi||(pi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ua(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ye.prototype);let t=e;return zm()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((u,l)=>u.fi-l.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(l=>l.id===o);if(a===-1)return null;let s=i[a].fi,c={...i[a],fi:t};return i[a]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Fr(0,t,t);{let i=o[0].fi;return Fr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Fr(s,s+t,t)}else return Fr(i.fi,a.fi,t)}}};function fi(n){return n&&typeof n=="object"&&n instanceof We}var We=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!fi(t))return null;o+=1}t=t?hl(t):new We;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=hl(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=hl(c);u[r.path[o-1]]=t,t=u}else{let u=new We;u[r.path[o-1]]=t,t=u}}o-=1}let a=Object.setPrototypeOf(t,We.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},kr;(t=>{function n(o,i){return Ha(o,i)??o}t.apply=n;function r(o,i){return ud(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,c=o;for(;a<s.length&&c!==void 0;){if(c=ft.zoomOnce(c,s[a]),c===void 0)return i;if(!fi(c))return;a+=1}if(c===void 0)return i;if(!!fi(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=dd([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(kr||(kr={}));function dd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ha(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=dd(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function mT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ha(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Ha(n,r){if(!fi(r))return r;if(n instanceof Qe){let e=dd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return mT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Ha(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof We)return ud(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Ha(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function ud(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!fi(r))return r;if(!fi(n))return kr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new We;for(let o of e){let i=ud(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function km(n,r){let e={cur:[],result:[],len:0};return n=Wa(n,r,e)??n,[n,e.result]}function yl(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function gl(n){n&&(n.len-=1)}function hT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Um(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let c=Wa(i.data,r,yl(e,a));gl(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Um(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:a,data:c,children:u}});if(t)return o}function yT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let c=Wa(i.data,r,yl(e,a));return gl(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:a,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Wa(n,r,e){if(n instanceof Qe){let t=Um(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return yT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=Wa(i,r,yl(e,a));return gl(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!ui(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let c=Wa(a,r,yl(e,i));gl(e),o=o||c!==void 0,c===void 0&&(c=a),t[i]=c}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&hT(e),t}else return}}var xl;(r=>{function n(e,t){let o=ft.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(xl||(xl={}));var lt;(s=>{function n(c,u){return{...c,path:c.path.slice(u)}}s.drop=n;function r(c,u){return e(c,u)?.data??c}s.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof We&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof Qe||c instanceof ye||c instanceof me?p=c.runOp(u):p=pi.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof Qe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof We){let S={...x,[g]:h};h=Object.setPrototypeOf(S,We.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=h;h=[...x],h[g]=S}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof Qe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}s.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}s.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}s.pathEq=o;function i(c,u){return t(c.path,u.path)}s.commutative=i;function a(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}s.subsumed=a})(lt||(lt={}));var qa;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>lt.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>lt.commutative(d,p)))}c.commutative=i;function a(u,l){for(let d of l){let p=s(u,d);p!==null&&(u=p.data)}return u}c.applyAll=a;function s(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3||m.type===5&&m.path[m.path.length-1]==="variables"){let h,y,g;if(m.type===3?(h=ft.zoom(d,[...m.path,m.id]),g=lt.apply(d,{...m,type:2})):(h=ft.zoom(d,[...m.path,m.id,"value"]),g=lt.apply(d,m)),g!==null){d=g.data;let[x,S]=km(d,{[m.id]:h});d=x;for(let w=0;w<S.length;w++){let b=S[w],T=b.pop();if(typeof T=="number"){let _=[T];for(let N=w+1;N<S.length;N++){let P=S[N],C=P[P.length-1];if(typeof C=="number"&&ft.equal(b,P.slice(0,P.length-1)))_.push(C),S.splice(N,1);else break}let v=ft.zoom(d,b);y=v.map((N,P)=>_.includes(P)?m.id:N),h=v,T=b.pop()}else y=m.id;p.push({type:0,path:b,props:{[T]:h}}),f.push({type:0,path:b,props:{[T]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let h=lt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof di)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=s})(qa||(qa={}));var Hm=Symbol(),gT=Symbol(),bl=Symbol(),mn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof vl);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[bl];t&&t(),delete this._children[r]}}}},fd=class extends mn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,pi.runOp(this._current,r),r.path)}},md=class extends mn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,me.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Wm={get(n,r){if(r===bl)return()=>{n._parent=null};if(r===Hm)return n._current;if(r===gT)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=Sl(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},xT={...Wm,set(n,r,e){let t={type:0,props:{[r]:Je(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},vT={...Wm,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},mi=class extends mn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[bl]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=Sl(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},hi=class extends mn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[bl]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=Sl(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function pd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ft.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var vl=class extends mn{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){pd(this.ts,e,r),pd(this.actual,t,r),pd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Sl(n,r,e){return e instanceof Qe?new mi(n,r,e):e instanceof ye?new hi(n,r,e):e instanceof me?new Proxy(new md(n,r,e),vT):e!==null&&typeof e=="object"?ui(e)?e:new Proxy(new fd(n,r,e),xT):e}function hd(n){let r=new vl(n);return[Sl(r,"",n),r]}function Bo(n,r){let[e,t]=hd(n);return r(e),t.result()}function Je(n){return n instanceof mi||n instanceof hi?n._current:n!==null&&typeof n=="object"?n[Hm]:n}var ft;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let c=t(s,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...a};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return a}o.removeOverridden=r;function e(i,a){if((i instanceof Qe||i instanceof mi)&&typeof a=="string")return i.data(a);if((i instanceof ye||i instanceof hi)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ft||(ft={}));function qm(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Gt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var wl=class{},$a=class extends wl{constructor(e){super();this.id=e}},Ya=class extends wl{constructor(e){super();this.data=e}};var gd;try{gd=new TextDecoder}catch{}var re,Go,I=0;var eh=[],xd=eh,vd=0,Kt={},Be,Ro,fr=0,Ur=0,sr,go,jt=[],Ve,$m={useRecords:!1,mapsAsObjects:!0},Xa=class{},Sd=new Xa;Sd.name="MessagePack 0xC1";var yi=!1,Hr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(re)return ih(()=>(_l(),this?this.unpack(r,e):Hr.prototype.unpack.call($m,r,e)));Go=e>-1?e:r.length,I=0,vd=0,Ur=0,Ro=null,xd=eh,sr=null,re=r;try{Ve=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw re=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Hr){if(Kt=this,this.structures)return Be=this.structures,Tl();(!Be||Be.length>0)&&(Be=[])}else Kt=$m,(!Be||Be.length>0)&&(Be=[]);return Tl()}unpackMultiple(r,e){let t,o=0;try{yi=!0;let i=r.length,a=this?this.unpack(r,i):Al.unpack(r,i);if(e){for(e(a);I<i;)if(o=I,e(Tl())===!1)return}else{for(t=[a];I<i;)o=I,t.push(Tl());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{yi=!1,_l()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Tl(){try{if(!Kt.trusted&&!yi){let r=Be.sharedLength||0;r<Be.length&&(Be.length=r)}let n=ot();if(I==Go)Be.restoreStructures&&Ym(),Be=null,re=null,go&&(go=null);else if(I>Go){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!yi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Be.restoreStructures&&Ym(),_l(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Ym(){for(let n in Be.restoreStructures)Be[n]=Be.restoreStructures[n];Be.restoreStructures=null}function ot(){let n=re[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Be[n&63]||Kt.getStructures&&th()[n&63];return r?(r.read||(r.read=wd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[oh()]=ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(ot(),ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=ot();return r}else if(n<192){let r=n-160;if(Ur>=I)return Ro.slice(I-fr,(I+=r)-fr);if(Ur==0&&Go<140){let e=r<16?Td(r):rh(r);if(e!=null)return e}return bd(r)}else{let r;switch(n){case 192:return null;case 193:return sr?(r=ot(),r>0?sr[1].slice(sr.position1,sr.position1+=r):sr[0].slice(sr.position0,sr.position0-=r)):Sd;case 194:return!1;case 195:return!0;case 196:return yd(re[I++]);case 197:return r=Ve.getUint16(I),I+=2,yd(r);case 198:return r=Ve.getUint32(I),I+=4,yd(r);case 199:return hn(re[I++]);case 200:return r=Ve.getUint16(I),I+=2,hn(r);case 201:return r=Ve.getUint32(I),I+=4,hn(r);case 202:if(r=Ve.getFloat32(I),Kt.useFloat32>2){let e=Ol[(re[I]&127)<<1|re[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Ve.getFloat64(I),I+=8,r;case 204:return re[I++];case 205:return r=Ve.getUint16(I),I+=2,r;case 206:return r=Ve.getUint32(I),I+=4,r;case 207:return Kt.int64AsNumber?(r=Ve.getUint32(I)*4294967296,r+=Ve.getUint32(I+4)):r=Ve.getBigUint64(I),I+=8,r;case 208:return Ve.getInt8(I++);case 209:return r=Ve.getInt16(I),I+=2,r;case 210:return r=Ve.getInt32(I),I+=4,r;case 211:return Kt.int64AsNumber?(r=Ve.getInt32(I)*4294967296,r+=Ve.getUint32(I+4)):r=Ve.getBigInt64(I),I+=8,r;case 212:if(r=re[I++],r==114)return Jm(re[I++]&63);{let e=jt[r];if(e)return e.read?(I++,e.read(ot())):e.noBuffer?(I++,e()):e(re.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=re[I],r==114?(I++,Jm(re[I++]&63,re[I++])):hn(2);case 214:return hn(4);case 215:return hn(8);case 216:return hn(16);case 217:return r=re[I++],Ur>=I?Ro.slice(I-fr,(I+=r)-fr):ST(r);case 218:return r=Ve.getUint16(I),I+=2,Ur>=I?Ro.slice(I-fr,(I+=r)-fr):wT(r);case 219:return r=Ve.getUint32(I),I+=4,Ur>=I?Ro.slice(I-fr,(I+=r)-fr):TT(r);case 220:return r=Ve.getUint16(I),I+=2,Km(r);case 221:return r=Ve.getUint32(I),I+=4,Km(r);case 222:return r=Ve.getUint16(I),I+=2,Zm(r);case 223:return r=Ve.getUint32(I),I+=4,Zm(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var bT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>bT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(ot);return n.highByte===0&&(n.read=Xm(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=ot()}return t}return e.count=0,n.highByte===0?Xm(r,e):e}var Xm=(n,r)=>function(){let e=re[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Be[t]||th()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=wd(o,n)),o.read()};function th(){let n=ih(()=>(re=null,Kt.getStructures()));return Be=Kt._mergeStructures(n,Be)}var bd=Pl,ST=Pl,wT=Pl,TT=Pl;function Pl(n){let r;if(n<16&&(r=Td(n)))return r;if(n>64&&gd)return gd.decode(re.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=re[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=re[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=re[I++]&63,a=re[I++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[I++]&63,a=re[I++]&63,s=re[I++]&63,c=(o&7)<<18|i<<12|a<<6|s;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=wt.apply(String,t),t.length=0)}return t.length>0&&(r+=wt.apply(String,t)),r}function Km(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=ot();return r}function Zm(n){if(Kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[oh()]=ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(ot(),ot());return r}}var wt=String.fromCharCode;function rh(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=re[I++];if((o&128)>0){I=r;return}e[t]=o}return wt.apply(String,e)}function Td(n){if(n<4)if(n<2){if(n===0)return"";{let r=re[I++];if((r&128)>1){I-=1;return}return wt(r)}}else{let r=re[I++],e=re[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return wt(r,e);let t=re[I++];if((t&128)>0){I-=3;return}return wt(r,e,t)}else{let r=re[I++],e=re[I++],t=re[I++],o=re[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return wt(r,e,t,o);{let i=re[I++];if((i&128)>0){I-=5;return}return wt(r,e,t,o,i)}}else if(n<8){let i=re[I++],a=re[I++];if((i&128)>0||(a&128)>0){I-=6;return}if(n<7)return wt(r,e,t,o,i,a);let s=re[I++];if((s&128)>0){I-=7;return}return wt(r,e,t,o,i,a,s)}else{let i=re[I++],a=re[I++],s=re[I++],c=re[I++];if((i&128)>0||(a&128)>0||(s&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return wt(r,e,t,o,i,a,s,c);{let u=re[I++];if((u&128)>0){I-=9;return}return wt(r,e,t,o,i,a,s,c,u)}}else if(n<12){let u=re[I++],l=re[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return wt(r,e,t,o,i,a,s,c,u,l);let d=re[I++];if((d&128)>0){I-=11;return}return wt(r,e,t,o,i,a,s,c,u,l,d)}else{let u=re[I++],l=re[I++],d=re[I++],p=re[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return wt(r,e,t,o,i,a,s,c,u,l,d,p);{let f=re[I++];if((f&128)>0){I-=13;return}return wt(r,e,t,o,i,a,s,c,u,l,d,p,f)}}else{let f=re[I++],m=re[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return wt(r,e,t,o,i,a,s,c,u,l,d,p,f,m);let h=re[I++];if((h&128)>0){I-=15;return}return wt(r,e,t,o,i,a,s,c,u,l,d,p,f,m,h)}}}}}function yd(n){return Kt.copyBuffers?Uint8Array.prototype.slice.call(re,I,I+=n):re.subarray(I,I+=n)}function hn(n){let r=re[I++];if(jt[r])return jt[r](re.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Qm=new Array(4096);function oh(){let n=re[I++];if(n>=160&&n<192){if(n=n-160,Ur>=I)return Ro.slice(I-fr,(I+=n)-fr);if(!(Ur==0&&Go<180))return bd(n)}else return I--,ot();let r=(n<<5^(n>1?Ve.getUint16(I):n>0?re[I]:0))&4095,e=Qm[r],t=I,o=I+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ve.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=re[t++],i!=e[a++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Qm[r]=e,e.bytes=n;t<o;)i=Ve.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=re[t++],e.push(i);let s=n<16?Td(n):rh(n);return s!=null?e.string=s:e.string=bd(n)}var Jm=(n,r)=>{var e=ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Be[n];return o&&o.isShared&&((Be.restoreStructures||(Be.restoreStructures=[]))[n]=o),Be[n]=e,e.read=wd(e,t),e.read()},nh=typeof self=="object"?self:global;jt[0]=()=>{};jt[0].noBuffer=!0;jt[101]=()=>{let n=ot();return(nh[n[0]]||Error)(n[1])};jt[105]=n=>{let r=Ve.getUint32(I-4);go||(go=new Map);let e=re[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};go.set(r,o);let i=ot();return o.used?Object.assign(t,i):(o.target=i,i)};jt[112]=n=>{let r=Ve.getUint32(I-4),e=go.get(r);return e.used=!0,e.target};jt[115]=()=>new Set(ot());var _d=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");jt[116]=n=>{let r=n[0],e=_d[r];if(!e)throw new Error("Could not find typed array for code "+r);return new nh[e](Uint8Array.prototype.slice.call(n,1).buffer)};jt[120]=()=>{let n=ot();return new RegExp(n[0],n[1])};jt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,sr=[ot(),ot()],sr.position0=0,sr.position1=0;let t=I;I=e;try{return ot()}finally{I=t}};jt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function ih(n){let r=Go,e=I,t=vd,o=fr,i=Ur,a=Ro,s=xd,c=go,u=sr,l=new Uint8Array(re.slice(0,Go)),d=Be,p=Be.slice(0,Be.length),f=Kt,m=yi,h=n();return Go=r,I=e,vd=t,fr=o,Ur=i,Ro=a,xd=s,go=c,sr=u,re=l,yi=m,Be=d,Be.splice(0,Be.length,...p),Kt=f,Ve=new DataView(re.buffer,re.byteOffset,re.byteLength),h}function _l(){re=null,go=null,Be=null}function ah(n){n.unpack?jt[n.type]=n.unpack:jt[n.type]=n}var Ol=new Array(147);for(let n=0;n<256;n++)Ol[n]=+("1e"+Math.floor(45.15-n*.30103));var Al=new Hr({useRecords:!1}),_T=Al.unpack,PT=Al.unpackMultiple,OT=Al.unpack,Cl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},AT=new Float32Array(1),pD=new Uint8Array(AT.buffer,0,4);var Nl;try{Nl=new TextEncoder}catch{}var Il,Od,Ml=typeof Buffer<"u",Pd=Ml?Buffer.allocUnsafeSlow:Uint8Array,dh=Ml?Buffer:Uint8Array,sh=Ml?4294967296:2144337920,G,ct,E=0,Wr,qr=null,CT=/[\u0080-\uFFFF]/,Ka=Symbol("record-id"),yn=class extends Hr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,c=0,u=dh.prototype.utf8Write?function(v,N,P){return G.utf8Write(v,N,P)}:Nl&&Nl.encodeInto?function(v,N){return Nl.encodeInto(v,G.subarray(N)).written}:!1,l=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(v,N){if(G||(G=new Pd(8192),ct=new DataView(G.buffer,0,8192),E=0),Wr=G.length-10,Wr-E<2048?(G=new Pd(G.length),ct=new DataView(G.buffer,0,G.length),Wr=G.length-10,E=0):E=E+7&2147483640,t=E,s=l.structuredClone?new Map:null,l.bundleStrings?(qr=["",""],G[E++]=214,G[E++]=98,qr.position=E-t,E+=4):qr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let P=o.sharedLength||0;if(P>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let C=0;C<P;C++){let O=o[C];if(!O)continue;let A,M=o.transitions;for(let L=0,X=O.length;L<X;L++){let R=O[L];A=M[R],A||(A=M[R]=Object.create(null)),M=A}M[Ka]=C+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),a=o||[];try{if(b(v),qr){ct.setUint32(qr.position+t,E-qr.position-t);let P=qr;qr=null,b(P[0]),b(P[1])}if(l.offset=E,s&&s.idsToInsert){E+=s.idsToInsert.length*6,E>Wr&&_(E),l.offset=E;let P=IT(G.subarray(t,E),s.idsToInsert);return s=null,P}return N&ph?(G.start=t,G.end=E,G):G.subarray(t,E)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let P=0,C=x.length;P<C;P++)x[P][Ka]=0;x=[]}if(i&&l.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let C=G.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=P,C)}}N>&&(E=t)}};let b=v=>{E>Wr&&(G=_(E));var N=typeof v,P;if(N==="string"){let C=v.length;if(qr&&C>=8&&C<4096){let M=CT.test(v);qr[M?0:1]+=v,G[E++]=193,b(M?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>Wr&&(G=_(E+A)),C<64||!u){let M,L,X,R=E+O;for(M=0;M<C;M++)L=v.charCodeAt(M),L<128?G[R++]=L:L<2048?(G[R++]=L>>6|192,G[R++]=L&63|128):(L&64512)===55296&&((X=v.charCodeAt(M+1))&64512)===56320?(L=65536+((L&1023)<<10)+(X&1023),M++,G[R++]=L>>18|240,G[R++]=L>>12&63|128,G[R++]=L>>6&63|128,G[R++]=L&63|128):(G[R++]=L>>12|224,G[R++]=L>>6&63|128,G[R++]=L&63|128);P=R-E-O}else P=u(v,E+O,A);P<32?G[E++]=160|P:P<256?(O<2&&G.copyWithin(E+2,E+1,E+1+P),G[E++]=217,G[E++]=P):P<65536?(O<3&&G.copyWithin(E+3,E+2,E+2+P),G[E++]=218,G[E++]=P>>8,G[E++]=P&255):(O<5&&G.copyWithin(E+5,E+3,E+3+P),G[E++]=219,ct.setUint32(E,P),E+=4),E+=P}else if(N==="number")if(v>>>0===v)v<64?G[E++]=v:v<256?(G[E++]=204,G[E++]=v):v<65536?(G[E++]=205,G[E++]=v>>8,G[E++]=v&255):(G[E++]=206,ct.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?G[E++]=256+v:v>=-128?(G[E++]=208,G[E++]=v+256):v>=-32768?(G[E++]=209,ct.setInt16(E,v),E+=2):(G[E++]=210,ct.setInt32(E,v),E+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){G[E++]=202,ct.setFloat32(E,v);let O;if(C<4||(O=v*Ol[(G[E]&127)<<1|G[E+1]>>7])>>0===O){E+=4;return}else E--}G[E++]=203,ct.setFloat64(E,v),E+=8}else if(N==="object")if(!v)G[E++]=192;else{if(s){let O=s.get(v);if(O){if(!O.id){let A=s.idsToInsert||(s.idsToInsert=[]);O.id=A.push(O)}G[E++]=214,G[E++]=112,ct.setUint32(E,O.id),E+=4;return}else s.set(v,{offset:E-t})}let C=v.constructor;if(C===Object)T(v,!0);else if(C===Array){P=v.length,P<16?G[E++]=144|P:P<65536?(G[E++]=220,G[E++]=P>>8,G[E++]=P&255):(G[E++]=221,ct.setUint32(E,P),E+=4);for(let O=0;O<P;O++)b(v[O])}else if(C===Map){P=v.size,P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,ct.setUint32(E,P),E+=4);for(let[O,A]of v)b(O),b(A)}else{for(let O=0,A=Il.length;O<A;O++){let M=Od[O];if(v instanceof M){let L=Il[O];if(L.write){L.type&&(G[E++]=212,G[E++]=L.type,G[E++]=0),b(L.write.call(this,v));return}let X=G,R=ct,Z=E;G=null;let z;try{z=L.pack.call(this,v,V=>(G=X,X=null,E+=V,E>Wr&&_(E),{target:G,targetView:ct,position:E-V}),b)}finally{X&&(G=X,ct=R,E=Z,Wr=G.length-10)}z&&(z.length+E>Wr&&_(z.length+E),E=NT(z,G,E,L.type));return}}T(v,!v.hasOwnProperty)}}else if(N==="boolean")G[E++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))G[E++]=211,ct.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)G[E++]=207,ct.setBigUint64(E,v);else if(this.largeBigIntToFloat)G[E++]=203,ct.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?G[E++]=192:(G[E++]=212,G[E++]=0,G[E++]=0);else if(N==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},T=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),P=N.length;P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,ct.setUint32(E,P),E+=4);let C;for(let O=0;O<P;O++)b(C=N[O]),b(v[C])}:(v,N)=>{G[E++]=222;let P=E-t;E+=2;let C=0;for(let O in v)(N||v.hasOwnProperty(O))&&(b(O),b(v[O]),C++);G[P+++t]=C>>8,G[P+t]=C&255}:v=>{let N=Object.keys(v),P,C=a.transitions||(a.transitions=Object.create(null)),O=0;for(let M=0,L=N.length;M<L;M++){let X=N[M];P=C[X],P||(P=C[X]=Object.create(null),O++),C=P}let A=C[Ka];if(A)A>=96&&h?(G[E++]=((A-=96)&31)+96,G[E++]=A>>5):G[E++]=A;else{A=a.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=a.nextOwnId,A<g||(A=y),a.nextOwnId=A+1):(A>=g&&(A=y),a.nextId=A+1);let M=N.highByte=A>=96&&h?A-96>>5:-1;C[Ka]=A,a[A-64]=N,A<y?(N.isShared=!0,a.sharedLength=A-63,i=!0,M>=0?(G[E++]=(A&31)+96,G[E++]=M):G[E++]=A):(M>=0?(G[E++]=213,G[E++]=114,G[E++]=(A&31)+96,G[E++]=M):(G[E++]=212,G[E++]=114,G[E++]=A),O&&(S+=w*O),x.length>=m&&(x.shift()[Ka]=0),x.push(C),b(N))}for(let M=0,L=N.length;M<L;M++)b(v[N[M]])},_=v=>{let N;if(v>16777216){if(v-t>sh)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(sh,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,G.length-1)>>12)+1<<12;let P=new Pd(N);return ct=new DataView(P.buffer,0,N),G.copy?G.copy(P,0,t,v):P.set(G.slice(t,v)),E-=t,t=0,Wr=P.length-10,G=P}}useBuffer(r){G=r,ct=new DataView(G.buffer,G.byteOffset,G.byteLength),E=0}};Od=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Xa];Il=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?lh(n,16,r):ch(Ml?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==dh&&this.structuredClone?lh(n,_d.indexOf(e.name),r):ch(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function lh(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function ch(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function NT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function IT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Vo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Od.unshift(n.Class),Il.unshift(n)}ah(n)}var uh=new yn({useRecords:!1}),MT=uh.pack,ET=uh.pack;var{NEVER:LT,ALWAYS:DT,DECIMAL_ROUND:BT,DECIMAL_FIT:RT}=Cl,ph=512,GT=1024;var fh=new yn({structuredClone:!0});Vo({Class:me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,me.prototype),n}});Vo({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});Vo({Class:Qe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});Vo({Class:$a.prototype.constructor,type:4,write(n){return n.id},read(n){return new $a(n)}});Vo({Class:Ya.prototype.constructor,type:5,write(n){return n.data},read(n){return new Ya(n)}});Vo({Class:We.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,We.prototype),n}});function VT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Ad(n){if(ui(n))return n;if(Array.isArray(n))return n.map(Ad);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Ad(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var El;(t=>{function n(o){return fh.pack(o)}t.serialize=n;function r(o){return fh.unpack(o)}t.deserialize=r;function e(o){return VT(n(Ad(o))).toString()}t.checksum=e})(El||(El={}));var Fo="personal camera",ko="a218fcc3-276b-49b9-b485-49037fd14f5f",vh=2960946,ht=5526619;var mh;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(mh||(mh={}));var zo;(s=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}s.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}s.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}s.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}s.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}s.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}s.dist=i;function a(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}s.lerp=a})(zo||(zo={}));var hh;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(hh||(hh={}));var jo;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var c=0,u=a.length;c<u;c+=3){let l=i[3]*a[c]+i[7]*a[c+1]+i[11]*a[c+2]+i[15];s[c]=(i[0]*a[c]+i[4]*a[c+1]+i[8]*a[c+2]+i[12])/l,s[c+1]=(i[1]*a[c]+i[5]*a[c+1]+i[9]*a[c+2]+i[13])/l,s[c+2]=(i[2]*a[c]+i[6]*a[c+1]+i[10]*a[c+2]+i[14])/l}return s}o.applyMatrix4=t})(jo||(jo={}));var Tt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=s;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(Tt||(Tt={}));var Ft;(s=>{s.white={...Tt.white,a:1},s.transparent={...Tt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}s.from0to1=e;function t(c,u){return{...Tt.fromHex(c),a:u}}s.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}s.toRgb255a1=o;function i(c,u){return Tt.equals(c,u)&&c.a===u.a}s.equals=i;function a(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}s.lerp=a})(Ft||(Ft={}));var Ll;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ll||(Ll={}));var yh;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(yh||(yh={}));var gh;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(gh||(gh={}));var xh;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(xh||(xh={}));function bh(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var _r;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(_r||(_r={}));var Uo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(Uo||(Uo={}));var $r;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(zT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;jT.forEach(c=>{Object.assign(i.radial,{[c]:s[c]??a[c]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;FT.forEach(c=>{Object.assign(i.linear,{[c]:s[c]??a[c]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;kT.forEach(c=>{Object.assign(i.grid,{[c]:s[c]??a[c]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;UT.forEach(c=>{Object.assign(i.toObject,{[c]:s[c]??a[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;HT.forEach(c=>{Object.assign(i.randomnessObject,{[c]:s[c]??a[c]})})}return i}e.merge=r})($r||($r={}));var Dl;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let c=o[s];c&&Object.keys(c).length>0&&a.push({type:0,path:[...i,s],props:c})}return a}t.toOps=e})(Dl||(Dl={}));var zT=["count"],jT=["radius","start","end","position","scale","rotation"],FT=["position","scale","rotation"],kT=["count","size"],UT=["count","position","scale","rotation"],HT=["strength","scale","rotation","position","movement","seed","freqScale"];var Bl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Bl||(Bl={}));var Rl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ft.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ft.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ft.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Rl||(Rl={}));var Ho;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Ho||(Ho={}));var Cd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Cd||(Cd={}));var Nd;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(Nd||(Nd={}));var Gl;(r=>r.defaultData={...Nd.defaultData,...Cd.defaultData})(Gl||(Gl={}));var Sh;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(Sh||(Sh={}));var gi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(gi||(gi={}));var wh;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(wh||(wh={}));function _h(n){return n.type!=="displace"}var Th;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Th||(Th={}));var Ph=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Oh=["wrapping","image","video","name"],kt;(o=>{function n(i,a){let{texture:s,...c}=a;if(Object.assign(i,c),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:gi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:Tt.fromHex(ht)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ft.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ft.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ft.fromHexAndA(0,1),contourColor:Ft.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Tt.fromHex(0),a:1},colorB:{...Tt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(kt||(kt={}));var It;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new ye}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new ye;return p.push({fi:0,data:kt.defaultData("light",u),id:l}),p.push({fi:1,data:kt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function a(u,l="phong",d="layer1",p="layer2"){let f=kt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:kt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=a;function s(u,l="phong",d="layer1",p="layer2"){let f=kt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:kt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=s})(It||(It={}));var xi;(r=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(xi||(xi={}));var vi;(r=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(vi||(vi={}));var Id={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Vl;(r=>{function n(e,t){let o={...e};return WT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Vl||(Vl={}));var zl={shape:Id,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},WT=["depth","offset","angle","twist","startScale","endScale"];var Za;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Za||(Za={}));var jl;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Vl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(jl||(jl={}));var Wo;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:vi.defaultData(),extrusion:zl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:xi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}r.defaultData=n})(Wo||(Wo={}));var Fl;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:Tt.white,near:.1,far:2e3})(Fl||(Fl={}));var kl;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(kl||(kl={}));var Md;(r=>r.defaultData={softShadowQuality:"low"})(Md||(Md={}));var Ed;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Ed||(Ed={}));var Ld;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Ld||(Ld={}));var Qa;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Qa||(Qa={}));var Dd;(r=>r.defaultData={playCamera:Fo,gameControlObject:null})(Dd||(Dd={}));var Ul;(r=>r.defaultData={backgroundColor:Ft.fromHexAndA(vh,1),postprocessing:kl.defaultData,fog:Fl.defaultData,globalPhysics:Qa.defaultData,ambient:Ed.defaultData,ao:Ld.defaultData,shadow:Md.defaultData,publish:Dd.defaultData})(Ul||(Ul={}));var Ah;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Ah||(Ah={}));var bi;(o=>{o.identity={...Ll.identity,hiddenMatrix:jo.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return pp({position:zo.isEqual(i.position,a.position)?void 0:a.position,rotation:zo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:zo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:jo.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(bi||(bi={}));var Mt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Ho.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...bi.identity,cloner:null})(Mt||(Mt={}));var Hl;(r=>r.defaultData={type:"Empty",...Mt.defaultData})(Hl||(Hl={}));var Ch;(r=>r.defaultData={type:"Component",...Mt.defaultData})(Ch||(Ch={}));var gn;(r=>r.defaultData={type:"Mesh",...Mt.defaultData,...Gl.defaultData})(gn||(gn={}));var xn;(r=>r.defaultData={...Mt.defaultData,...bi.identity,position:[0,0,Uo.DefaultTargetOffset],...Uo.defaultData})(xn||(xn={}));var Wl;(e=>{function n(t){return{...Mt.defaultData,...Rl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Wl||(Wl={}));var Si;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(Si||(Si={}));var Yr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Mt.defaultData,...s,component:a,overrides:new We,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=bi.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Yr||(Yr={}));var xo;(r=>r.defaultData={type:"Page",...Mt.defaultData,physics:{...Ho.defaultData,fusedBody:!1},...Ul.defaultData,camera:xn.defaultData})(xo||(xo={}));var ql;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:jo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Ho.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Uo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Mt.defaultData,...gn.defaultData,geometry:Wo.defaultData("RectangleGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Mt.defaultData,...gn.defaultData,geometry:Wo.defaultData("BooleanGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Mt.defaultData,...gn.defaultData,geometry:Wo.defaultData("TextGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")}))(ql||(ql={}));var vn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new We}),"materials"in i&&(s.materials=i.materials.map(c=>({layers:new We})))):_r.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Bo(s.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(a.material.layers)){let d=c.layers.data(u);d&&kt.patch(d,l)}}).data),s.materials&&a.materials&&(s.materials=Bo(s.materials,c=>{for(let u=0;u<s.materials.length;u++){let l=a.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&kt.patch(f,p)}}}).data),s}function e(i,a){let s,c=[],u={orthographic:0,perspective:0,geometry:0};function l(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")c.push(...Dl.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},c.push(s)),s.props[d]=p;return c}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,bi.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),_r.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let c=a;c.orthographic?.zoom!==void 0&&(s.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(s.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(s.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:jl.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:$r.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:$r.merge(s.cloner,a.cloner)});else if(Bl.is(i.type)){let c=a;c.intensity!==void 0&&(s.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?s.color=c.color:s.color=Tt.clone(c.color))}return s}o.patch=t})(vn||(vn={}));var Ti;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Ti||(Ti={}));var Xr;(r=>r.defaultData={orbitControls:Ti.defaultData,playPage:ko,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Xr||(Xr={}));var Bd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Bd||(Bd={}));var Rd;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Rd||(Rd={}));var qo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Bd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Rd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(qo||(qo={}));var Nh;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let c=_i.getComponentData(t,s.component)?.data;c&&i(a,s,c.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(Nh||(Nh={}));var $o;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=ql.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:Wl.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new Qe;return d.push({fi:1,id:ko,data:{...xo.defaultData,name:"Scene 1"},children:u}),d}s.defaultData={objects:r(),publish:Xr.defaultData,styles:qo.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new Qe,publish:Xr.defaultData,styles:qo.defaultData()}},s.emptyDataWithPage=function(c){return{objects:r(c),publish:Xr.defaultData,styles:qo.defaultData()}};function i(c){return{...s.defaultData,objects:Yt(c,Qe.prototype)}}s.withObjs=i;function a(c,u){return i([{id:c,data:u,children:[],fi:0}])}s.withObj=a})($o||($o={}));var Pi;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Pi||(Pi={}));var Oi;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Oi||(Oi={}));var $l;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})($l||($l={}));var Gd;(r=>r.all=["images","videos","colors","audios","fonts","materials","variables"])(Gd||(Gd={}));var Ih;(r=>r.all=[...Gd.all,"components"])(Ih||(Ih={}));var Mh;(r=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}r.defaultData=n})(Mh||(Mh={}));var Yo;(r=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}r.defaultData=n})(Yo||(Yo={}));var Pr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Yt(a,me.prototype)}i.defaultColors=n;function r(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Oi.emptyImage,name:"AI generated image"}),Yt(s,me.prototype)}i.defaultImages=r;function e(){return{catelogs:new me,materials:new me,images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,variables:new ye,lib:Yo.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let c=Math.floor(a/3600),u=Math.floor((a-c*3600)/60),l=Math.round(a-c*3600-u*60);return{textValue:[c,u,l]}}else if(s.format==="mm:ss"){let c=Math.floor(a/60),u=Math.round(a-c*60);return{textValue:[c,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(Pr||(Pr={}));var Ja=require("three");var Yl;(r=>r.list=["idle","move","jump","run"])(Yl||(Yl={}));var Xl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ye,move:new ye,jump:new ye,run:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ft.fromHexAndA(3728051,1)}}))(Xl||(Xl={}));function Eh(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Tr(Je(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Je(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function vo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function bo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=It.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&r(o.material)})})}function qT(n){Object.assign(n.scene.publish,{orbitControls:{...Ti.defaultData,...Je(n.scene.publish.orbitControls)}})}function $T(n){Object.assign(n.scene.publish.settings,{video:{...Xr.defaultData.settings.video,...Je(n.scene.publish.settings.video)}})}function YT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Ph.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Oh.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function XT(n){n.scene.publish.withBackground=!0}function KT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ZT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function QT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function JT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Je(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Je(e).booleanExclude!==!0)}})}function e_(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function t_(n){function r(t){Object.setPrototypeOf(t,We.prototype),t.texture&&Object.setPrototypeOf(t.texture,We.prototype)}function e(t){Object.setPrototypeOf(t,We.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=Je(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let c=a.materials[s],u=Je(c).layers;e(u),c.layers=u}})})}function Lh(n){n.layers===void 0&&Object.assign(n,It.defaultTwoLayerData("lambert"))}function Vd(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...Je(r),colors:e,steps:t};Object.assign(r,o)}})}function r_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Dh(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Vd(t)}):"material"in e&&typeof e.material!="string"&&Vd(e.material)}),Object.values(n.shared.materials).forEach(r=>Vd(r))}function o_(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function n_(n){n.shared.audios=Yt({},me.prototype)}function i_(n){n.shared.videos=Yt({},me.prototype)}function a_(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function s_(n){Object.entries(Je(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Je(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function l_(n){n.scene.publish.settings.web.preload=!1}function Bh(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Rh(n){n.layers&&n.layers.forEach(r=>{_h(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function c_(n){n.shared.fonts=Yt({},me.prototype)}function d_(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function u_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=It.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=d_(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let c={name:o.name,...Mt.defaultData,...gn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Wo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Je(o.states),events:Je(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Je(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function p_(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ye,move:new ye,jump:new ye}});else{let i=new ye;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Ja.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(l,Tr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(l,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...l},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:Ja.MathUtils.generateUUID(),data:u},{fi:1,id:Ja.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:s,data:f})}),delete o.targets)}})})}function f_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ye,s=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;s.push(u),c.interaction==="play"?d={...Tr(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...Tr(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:l,id:u,data:d})}}),s.forEach(c=>e.events.delete(c)),a.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Ja.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Gh(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=kt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Vh(n){vo(n,Gh),bo(n,Gh)}function m_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function h_(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function y_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=It.defaultTwoLayerData("phong"))})}function g_(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function x_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function v_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function b_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function S_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function w_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function T_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Xl.defaultDataThirdPerson.navmesh)})})}function __(n){n.scene.styles||(n.scene.styles=qo.defaultData())}function zh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function P_(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),bo(n,zh),vo(n,zh)}function O_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ye})})})}function A_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function jh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Fh(n,r){if(r<1&&(bo(n,Eh),vo(n,Eh),n.schema=1),r<2&&(qT(n),n.schema=2),r<3&&(YT(n),n.schema=3),r<4&&(XT(n),n.schema=4),r<5&&(KT(n),n.schema=5),r<6&&(ZT(n),n.schema=6),r<7&&(QT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Dh(n),n.schema=9),r<10&&(r_(n),n.schema=10),r<11&&(o_(n),n.schema=11),r<12&&(Dh(n),n.schema=12),r<13&&(n_(n),n.schema=13),r<14&&(a_(n),n.schema=14),r<15&&(s_(n),n.schema=15),r<16&&(l_(n),n.schema=16),r<17&&(bo(n,Bh),vo(n,Bh),n.schema=17),r<18&&(bo(n,Lh),vo(n,Lh),n.schema=18),r<19&&($T(n),n.schema=19),r<20&&(c_(n),u_(n),n.schema=20),r<21&&(p_(n),f_(n),n.schema=21),r<22&&(Vh(n),n.schema=22),r<23&&(m_(n),n.schema=23),r<24&&(h_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(i_(n),r<25&&(n.schema=25)),r<26&&(JT(n),n.schema=26),r<27&&(e_(n),n.schema=27),r<28&&(Vh(n),n.schema=28),r<29&&(t_(n),n.schema=29),r<30&&(y_(n),n.schema=30),r<31&&(g_(n),n.schema=31),r<33&&(x_(n),n.schema=33),r<34&&(v_(n),n.schema=34),r<35&&(b_(n),n.schema=35),r<36&&(S_(n),n.schema=36),r<37&&(w_(n),n.schema=37),r<38&&(bo(n,Rh),vo(n,Rh),n.schema=38),r<39&&(T_(n),n.schema=39),r<40&&(__(n),n.schema=40),r<41&&(P_(n),n.schema=41),r<42&&(O_(n),n.schema=42),r<43&&(A_(n),n.schema=43),r<99){bo(n,jh),vo(n,jh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Fo);let e=Je(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=ko,t.insertBefore(null,null,[{id:ko,data:{...xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Tr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Tr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Qa.defaultData,...Tr(n.scene.environment,"usePhysics","gravity")},camera:Je(n.scene.ownerCamera)??xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==$o.TRASH_CAN_ID&&t.move(ko,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,Ho.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function kh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function C_(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}var Ai=180/Math.PI;function Uh(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Ai)}function Hh(n){Uh(n),n.type==="Page"&&Uh(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Ai))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=r.thetaLength*Ai),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Ai),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Ai,r.extrusion.twist*=Ai),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(Je(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Once")})}function N_(n){n.shared.variables=Yt({},me.prototype)}function I_(n){let r=Je(n.shared.variables);n.shared.variables=Yt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ye.prototype)}var So=107;function Wh(n,r){r(n.data);for(let e of n.children)Wh(e,r)}function M_(n){let r=n.schema??104;r!==So&&r<105&&(Wh(n.asset,Hh),n.schema=105)}function Kl(n){let r=n.schema??0;if(r!==So){console.warn("updating from ",r,"to ",So),Fh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Xr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(bo(n,kh),vo(n,kh),n.schema=101),r<102&&(C_(n),n.schema=102),r<104&&(n.shared.catelogs=new me,n.shared.lib=Yo.defaultData(),n.schema=104),r<105&&(N_(n),n.scene.objects.traverse((e,t)=>{Hh(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))M_(e);r<106&&(I_(n),n.schema=106),r<107&&(n.shared.lib.variables=Yo.defaultData().variables,n.schema=107)}}var _i;(s=>{s.defaultData={schema:So,scene:$o.defaultData,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Pi.defaultData),shared:{...Pr.emptyData(),colors:Pr.defaultColors()}},s.emptyDataForImports=function(c){let u=$o.emptyDataWithPage(c);return{schema:So,scene:u,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Pi.defaultData),shared:{...Pr.emptyData(),colors:Pr.defaultColors(),images:Pr.defaultImages(c)}}},s.emptyData=function(){return{schema:So,scene:$o.emptyDataWithPage(),frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Pi.defaultData),shared:Pr.emptyData()}},s.collabHelper={...qa,updateSchema(c){return(c.schema??0)<So?Bo(c,Kl):(c.schema??0)-So}};function o(c){let u=s.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}s.updateSchemaDirectly=o;function i(c){return{...c,shared:{...c.shared,lib:Yo.defaultData()}}}s.withoutLib=i;function a(c,u){let l=c.scene.objects.get(u);if(l&&l.data.type==="Component")return l;{let d=c.shared.lib.components[u];if(d)return d.asset}}s.getComponentData=a})(_i||(_i={}));var Ge=require("three"),_a=za($h());var E_=.5*(Math.sqrt(3)-1),es=(3-Math.sqrt(3))/6,L_=1/3,Kr=1/6,YG=(Math.sqrt(5)-1)/4,XG=(5-Math.sqrt(5))/20,ts=n=>Math.floor(n)|0,Yh=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),jd=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Zl(n=Math.random){let r=Kh(n),e=new Float64Array(r).map(o=>Yh[o%12*2]),t=new Float64Array(r).map(o=>Yh[o%12*2+1]);return function(i,a){let s=0,c=0,u=0,l=(i+a)*E_,d=ts(i+l),p=ts(a+l),f=(d+p)*es,m=d-f,h=p-f,y=i-m,g=a-h,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+es,b=g-S+es,T=y-1+2*es,_=g-1+2*es,v=d&255,N=p&255,P=.5-y*y-g*g;if(P>=0){let A=v+r[N],M=e[A],L=t[A];P*=P,s=P*P*(M*y+L*g)}let C=.5-w*w-b*b;if(C>=0){let A=v+x+r[N+S],M=e[A],L=t[A];C*=C,c=C*C*(M*w+L*b)}let O=.5-T*T-_*_;if(O>=0){let A=v+1+r[N+1],M=e[A],L=t[A];O*=O,u=O*O*(M*T+L*_)}return 70*(s+c+u)}}function Xh(n=Math.random){let r=Kh(n),e=new Float64Array(r).map(i=>jd[i%12*3]),t=new Float64Array(r).map(i=>jd[i%12*3+1]),o=new Float64Array(r).map(i=>jd[i%12*3+2]);return function(a,s,c){let u,l,d,p,f=(a+s+c)*L_,m=ts(a+f),h=ts(s+f),y=ts(c+f),g=(m+h+y)*Kr,x=m-g,S=h-g,w=y-g,b=a-x,T=s-S,_=c-w,v,N,P,C,O,A;b>=T?T>=_?(v=1,N=0,P=0,C=1,O=1,A=0):b>=_?(v=1,N=0,P=0,C=1,O=0,A=1):(v=0,N=0,P=1,C=1,O=0,A=1):T<_?(v=0,N=0,P=1,C=0,O=1,A=1):b<_?(v=0,N=1,P=0,C=0,O=1,A=1):(v=0,N=1,P=0,C=1,O=1,A=0);let M=b-v+Kr,L=T-N+Kr,X=_-P+Kr,R=b-C+2*Kr,Z=T-O+2*Kr,z=_-A+2*Kr,V=b-1+3*Kr,W=T-1+3*Kr,$=_-1+3*Kr,Y=m&255,q=h&255,k=y&255,U=.6-b*b-T*T-_*_;if(U<0)u=0;else{let D=Y+r[q+r[k]];U*=U,u=U*U*(e[D]*b+t[D]*T+o[D]*_)}let B=.6-M*M-L*L-X*X;if(B<0)l=0;else{let D=Y+v+r[q+N+r[k+P]];B*=B,l=B*B*(e[D]*M+t[D]*L+o[D]*X)}let F=.6-R*R-Z*Z-z*z;if(F<0)d=0;else{let D=Y+C+r[q+O+r[k+A]];F*=F,d=F*F*(e[D]*R+t[D]*Z+o[D]*z)}let j=.6-V*V-W*W-$*$;if(j<0)p=0;else{let D=Y+1+r[q+1+r[k+1]];j*=j,p=j*j*(e[D]*V+t[D]*W+o[D]*$)}return 32*(u+l+d+p)}}function Kh(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Zh=require("three"),Or=new Zh.Triangle,Ql=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Or.a.fromBufferAttribute(r,o),Or.b.fromBufferAttribute(r,o+1),Or.c.fromBufferAttribute(r,o+2),i*=Or.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Or.a.fromBufferAttribute(this.positionAttribute,r*3),Or.b.fromBufferAttribute(this.positionAttribute,r*3+1),Or.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Or.a,o).addScaledVector(Or.b,i).addScaledVector(Or.c,1-(o+i)),Or.getNormal(t),this}};var ty=require("three");var lr=require("three"),ey=za(Jh()),D_=new lr.Matrix4,B_=new lr.Matrix4,R_=new lr.Matrix4,Ci;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ci||(Ci={}));var Ni=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new lr.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new lr.Matrix4;this.matrixWorldRigid=new lr.Matrix4;this.shearScale=new lr.Matrix4;this.shearScaleInv=new lr.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof lr.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}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 o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){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)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)Ci.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ci.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,ey.SVD)(o),c=D_.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=B_.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),l=R_.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new lr.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof lr.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Fd=class extends Ni(ty.Object3D){},G_=n=>n.type==="Mesh",wo=class extends Fd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new wo(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return G_(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};var Ki=require("three");var xc=require("three");var Vt=require("three");var nt=require("three"),bn=new nt.Vector3,Sn=new nt.Vector3,Ii=new nt.Matrix4,oy=[new nt.Vector3(-1,1,1),new nt.Vector3(-1,-1,1),new nt.Vector3(1,-1,1),new nt.Vector3(1,1,1),new nt.Vector3(-1,1,-1),new nt.Vector3(-1,-1,-1),new nt.Vector3(1,-1,-1),new nt.Vector3(1,1,-1)],V_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],z_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],ry=(n,r,e)=>{n.updateEntityBoxSize(bn,Sn),Ii.copy(r).multiply(n.matrixWorld),Sn.x===0&&Sn.y===0&&Sn.z===0?e.push(new nt.Vector3(bn.x,bn.y,bn.z).applyMatrix4(Ii)):oy.forEach(t=>{e.push(t.clone().multiply(Sn).add(bn).applyMatrix4(Ii))})},rs=class extends nt.Box3{constructor(){super(...arguments);this.matrix=new nt.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new nt.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new nt.Vector3);return}ry(a,t,i)}}):ry(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Ii.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Sn).multiplyScalar(.5),this.getCenter(bn),Ii.copy(this.matrix).setPosition(bn),this.vertices=oy.map(e=>e.clone().multiply(Sn).applyMatrix4(Ii))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=V_.map(([e,t])=>new nt.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new nt.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=z_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Ar={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var _t=require("three"),Ud=class extends _t.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,c=this.curves;s<c.length;s++){let u=c[s],l=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(r*l/a),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Hd=.001;function Wd(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Hd}function kd(n,r){let e=new _t.Vector3(...n.position),t=new _t.Vector3(...n.controlNext.position),o=new _t.Vector3(...r.controlPrevious.position),i=new _t.Vector3(...r.position);return Wd(e,t,i)&&Wd(e,o,i)}function ec(n){let r=n.points.map(l=>new _t.Vector3(...l.data.position)),e=[n.points[0]],t=new _t.Vector3(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Wd(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let l=0;l<a;l++){let d=e[l].data,p=new _t.Vector3(...d.position),f=new _t.Vector3(...d.controlPrevious.position),m=new _t.Vector3(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===a-1)){s[l]={...h,removedLength:0};continue}let y=o&&l==0?a-1:l-1,g=o&&l==a-1?0:l+1,x=e[y].data,S=e[g].data,w=new _t.Vector3(...x.position),b=new _t.Vector3(...S.position),T=w.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let v=kd(x,d),N=kd(d,S);if(!v||!N)s[l]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),C=P.clone().cross(T).length()/T.dot(P);s[l]={...h,tan:C,removedLength:d.roundness/C}}}for(let l=0;l<i;l++){let d=l,p=o&&l===a-1?0:l+1,f=s[d],m=s[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let d=l,p=o&&l===a-1?0:l+1,f=s[d],m=s[p],h=null;if(!kd(e[d].data,e[p].data))f.position.distanceTo(m.position)>Hd&&(h=new _t.CubicBezierCurve3(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Hd&&(h=new _t.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<a;l++){let d=s[l];if(d.removedLength===0){c[2*l]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(S),b=p.distanceTo(w)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),v=f.clone().lerp(T,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new _t.CubicBezierCurve3(f,v,N,m)}let u=new Ud;return c.forEach(l=>{l&&u.add(l)}),u}var Oe;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Oe||(Oe={}));var Mi=n=>Oe.is(n),j_={type:"completeState",isfromEntity:!0},F_=["x","y","z"],qd=new Vt.Vector3,k_=new Vt.Vector3().set(0,1,0),Ei=n=>class extends Ni(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new rs;this._recursiveBBox=new rs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Oe.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Oe.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Oe.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)vn.toOps(this.data,a.data).forEach(c=>{let u=xl.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=vn.patch(this.data,a),vn.toOps(this.data,a).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Mi(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Oe.is(o[i]))return o[i];if(Oe.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Oe.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Mi(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Oe.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Mi(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Mi(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Mi(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Mi(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Vt.MathUtils.RAD2DEG,this.rotation.y*Vt.MathUtils.RAD2DEG,this.rotation.z*Vt.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ci(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,F_[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(qd.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Vt.MathUtils.DEG2RAD),this.rotation.setFromVector3(qd),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??jo.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Oe.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Oe.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return ci(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let c=t,u=Gt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(delete d.name,Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ft.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=ft.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,vn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Gt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(kr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=ft.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=Si.resolve(o.overrides,l),p.updateByOp(t,lt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of Yr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of Yr.rootOverrideProps)if(Gt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=kr.filterOp(d.overrideData,l);p&&d.updateByOp(p,lt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=kr.filterOp(d.overrideData,t);if(p){let f;s===d.data&&t===p?f=o:f=lt.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!_r.is(t.props.type)&&Ar.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Ar.changeEntityProptotype(this,o,i);for(let a of this.children)Oe.is(a)&&a.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Gt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Gt(t.path,["cloner"])!==null){let a=lt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data;if(u.geometry.path.points.length<=1)return;let l=ec(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new Vt.Matrix4;c.updateMatrixWorld();let m=new Vt.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Vt.Matrix4().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new Vt.Matrix4().lookAt(p,g,k_),S=qd.setFromEuler(new Vt.Euler().setFromRotationMatrix(x)).multiplyScalar(Vt.MathUtils.RAD2DEG);h={...h,rotation:S.toArray()}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(j_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Ar.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Ar.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};var Ko=require("three");var Ue=require("three"),iy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=Ue.MathUtils.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return c===0?(m=new Ue.BufferGeometry,m.setAttribute("position",new Ue.Float32BufferAttribute([],3))):d||f?m=new os(u,l,t,o,i,a,s,c*Math.PI/180,d,d,p,f):m=new Ue.CylinderGeometry(u,l,t,o,i,a,s,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Xo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function ny(n){return new Ue.Vector2(n.y,-n.x)}var os=class extends Ue.BufferGeometry{constructor(r,e,t,o,i,a,s,c,u,l,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,c=c!==void 0?c:Math.PI*2,a&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,S=t/2,w=new Ue.Vector3,b=new Ue.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=l);let T=new Ue.Vector2(r,S),_=new Ue.Vector2(e,-S),v=null,N=null,P=null,C=null,O=T.clone().sub(_),A=0,M=0,L=0;p>0&&(A=Math.min(r,e)*(1-p),M=r-A,L=e-A);let X=T.clone();X.x-=A;let R=Math.PI-O.angle(),Z=O.angle(),z=Math.tan(Z/2),V=Math.tan(R/2),W=z+V,$=p?W:V,Y=p?W:z;if(u=Math.min(u,(r-M)/$,O.length()/W),l=Math.min(l,(e-L)/Y,O.length()/W),u>0){let j=u/z;v=T.clone().sub(new Ue.Vector2(j,u)),p&&(P=v.clone(),P.x-=A-W*u),T.sub(O.clone().setLength(j))}if(l>0){let j=l/V;N=_.clone().sub(new Ue.Vector2(j,-l)),_.add(O.clone().setLength(j)),p&&(C=N.clone(),C.x-=A-W*l,X.sub(O.clone().setLength(j)))}O=T.clone().sub(_);let q=O.length()<.5,k=[];for(let j=0;j<=o;j++){let D=[],ne=j/o,ee=ne*c+s,K=new Ue.Vector2(Math.sin(ee),Math.cos(ee));C&&N?(U(D,ne,K,R,l,C,-1,!0),U(D,ne,K,Z,l,N,-1,!1)):N?(B(D,K,N.x,0,-1),U(D,ne,K,Z,l,N,-1,!1)):a||B(D,K,e,L,-1);let te=ny(O).normalize();if(Xo(te,K,w),!q)for(let Q=0;Q<=i;Q++){let le=Q/i,ie=O.clone().multiplyScalar(le).add(_);Xo(ie,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/t),D.push(x++)}if(P&&v?(U(D,ne,K,R,u,v,1,!1),U(D,ne,K,Z,u,P,1,!0)):v?(U(D,ne,K,R,u,v,1,!1),B(D,K,v.x,0,1)):a||B(D,K,r,M,1),p&&!q){let Q=ny(O).multiplyScalar(-1).normalize();Xo(Q,K,w);for(let le=0;le<=i;le++){let ie=le/i,ae=O.clone().multiplyScalar(-ie).add(X);Xo(ae,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/t),D.push(x++)}}p&&!a&&D.push(D[0]),k.push(D)}for(let j=0;j<k.length-1;j++)for(let D=0;D<k[0].length-1;D++){if(a&&p&&D==i)continue;let ne=k[j][D],ee=k[j+1][D],K=k[j+1][D+1],te=k[j][D+1],Q=h[K*3+0],le=h[K*3+2];m.push(ne,ee,te),(Q!=0||le!=0)&&m.push(ee,K,te)}c<Math.PI*2&&(F(-1,k[0],s),F(1,k[k.length-1],s+c)),this.setIndex(m),this.setAttribute("position",new Ue.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Ue.Float32BufferAttribute(y,3)),this.setAttribute("uv",new Ue.Float32BufferAttribute(g,2));function U(j,D,ne,ee,K,te,Q,le){for(let ie=0;ie<d+1;ie++){let ae=ie/d,de=Q<0?ae:1-ae;le&&(de-=1),de*=ee;let ce=new Ue.Vector2(Math.sin(de),Math.cos(de)*Q),ue=ce.clone().multiplyScalar(K).add(te);Xo(ue,ne,b),h.push(b.x,b.y,b.z),Xo(ce,ne,w),y.push(w.x,w.y,w.z),g.push(D,.5+b.y/t),j.push(x++)}}function B(j,D,ne,ee,K){let te=new Ue.Vector3,Q=new Ue.Vector2,le=[ne,ee];K<0&&le.reverse();for(let ie of le)Q.set(ie,S*K),Xo(Q,D,te),h.push(te.x,te.y,te.z),y.push(0,K,0),g.push(.5,.5),j.push(x++)}function F(j,D,ne){let ee=new Ue.Vector2(Math.sin(ne),Math.cos(ne)),K=new Ue.Vector2(-Math.cos(ne),Math.sin(ne)),te=new Ue.Vector3,Q=j<0?(ae,de,ce)=>m.push(ae,de,ce):(ae,de,ce)=>m.push(ae,ce,de),le=new Ue.Vector2((r+e+M+L)/4,0);Xo(le,ee,te),h.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ie=x++;for(let ae of D){let de=h.slice(ae*3,ae*3+3);h.push(...de),y.push(K.x,0,K.y);let ce=g.slice(ae*2,ae*2+2);g.push(...ce),x++}for(let ae=ie+1;ae<x-1;ae++)Q(ie,ae,ae+1);Q(ie,x-1,ie+1)}}};var ay=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=Ko.MathUtils.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return c===0?(p=new Ko.BufferGeometry,p.setAttribute("position",new Ko.Float32BufferAttribute([],3))):u>0||l>0||c<360?p=new os(0,r/2,t,o,i,a,s,c*Math.PI/180,u,l,d,0,!0):p=new Ko.ConeGeometry(r/2,t,o,i,a),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Zt=require("three"),sy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:c}=n.parameters,u;return s==0?u=new Zt.BoxGeometry(r,e,t,o,i,a):u=new Yd(r,e,t,o,i,a,s,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},$d=Math.PI/2,Yd=class extends Zt.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),c=Math.floor(c),s=Math.min(s,r/2,e/2,t/2);let l=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,a,i,0),y("z","y","x",1,-1,t,e,-r,a,i,1),y("x","z","y",1,1,r,t,e,o,a,2),y("x","z","y",1,-1,r,t,-e,o,a,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),s>0&&(g("z","y","x",-1,-1,1,t,e,r,a,0),g("z","y","x",1,-1,-1,t,e,r,a,1),g("z","y","x",-1,1,-1,t,e,r,a,1),g("z","y","x",1,1,1,t,e,r,a,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Zt.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Zt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Zt.Float32BufferAttribute(f,2));function y(S,w,b,T,_,v,N,P,C,O,A){let M=(v-2*s)/C,L=(N-2*s)/O,X=v/2-s,R=N/2-s,Z=P/2,z=C+1,V=O+1,W=0,$=0,Y=new Zt.Vector3;for(let q=0;q<V;q++){let k=q*L-R;for(let U=0;U<z;U++){let B=U*M-X;Y[S]=B*T,Y[w]=k*_,Y[b]=Z,d.push(Y.x,Y.y,Y.z),Y[S]=0,Y[w]=0,Y[b]=P>0?1:-1,p.push(Y.x,Y.y,Y.z),f.push(U/C),f.push(1-q/O),W+=1}}for(let q=0;q<O;q++)for(let k=0;k<C;k++){let U=m+k+z*q,B=m+k+z*(q+1),F=m+(k+1)+z*(q+1),j=m+(k+1)+z*q;l.push(U,B,j),l.push(B,F,j),$+=6}u.addGroup(h,$,A),h+=$,m+=W}function g(S,w,b,T,_,v,N,P,C,O,A){let M=(N-2*s)/O,L=N/2-s,X=P/2-s,R=C/2,Z=O+1,z=0,V=0,W=new Zt.Vector3,$=new Zt.Vector3;for(let Y=0;Y<c+1;Y++){let q=Y/c*$d,k=Math.sin(q)*s,U=(1-Math.cos(q))*s,B=Math.sin(q),F=Math.cos(q);W[w]=(X+k)*_,W[b]=(R-U)*v,$[S]=0,$[w]=B*Math.sign(W[w]),$[b]=F*Math.sign(W[b]);for(let j=0;j<Z;j++){let D=j*M-L;W[S]=D*T,d.push(W.x,W.y,W.z),p.push($.x,$.y,$.z),f.push(j/O),f.push(0),z+=1}}for(let Y=0;Y<c;Y++)for(let q=0;q<O;q++){let k=m+q+Z*Y,U=m+q+Z*(Y+1),B=m+(q+1)+Z*(Y+1),F=m+(q+1)+Z*Y;l.push(k,U,F),l.push(U,B,F),V+=6}u.addGroup(h,V,A),h+=V,m+=z}function x(S,w,b){let T=new Zt.Vector3,_=new Zt.Vector3(r/2,e/2,t/2);_.subScalar(s);let v=[],N=S*w*b>0?(C,O,A)=>l.push(C,O,A):(C,O,A)=>l.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=$d*(1-C/c),M=Math.cos(A),L=Math.sin(A),X=0;for(let R=0;R<=C;R++){let Z=Math.cos(X),z=Math.sin(X);T.x=M*Z,T.y=L,T.z=M*z;let V=_.clone().addScaledVector(T,s);d.push(S*V.x,w*V.y,b*V.z),p.push(S*T.x,w*T.y,b*T.z),f.push(0,0),O.push(m++),X+=$d/C}v.push(O)}let P=v.length-1;for(let C=0;C<P;C++){let O=v[C],A=v[C+1],M=O.length-1;N(O[0],A[1],A[0]);for(let L=1;L<=M;L++)N(O[L-1],O[L],A[L]),N(O[L],A[L+1],A[L])}}}};var it=require("three"),Zo=class extends it.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],c=[],u=[];l(),d(),this.setAttribute("position",new it.Float32BufferAttribute(s,3)),this.setAttribute("normal",new it.Float32BufferAttribute(u,3)),this.setAttribute("uv",new it.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new it.Vector3,h=m.clone(),y=new it.Triangle,g=i*o,x=o-g,S=a+1,w=new it.Vector3,b=(z,V)=>w.subVectors(z,V).normalize(),T=(z,V)=>Array(z).fill(void 0).map(V),_=T(r.length/3,(z,V)=>new it.Vector3().fromArray(r,V*3).setLength(o)),v=[],N=1e6;for(let z=0;z<_.length;z++){let V=_[z],W=[],$,Y,q,k=1e10,U=-1;for(;(U=e.indexOf(z,U+1))!=-1;){let D=U-U%3;$=e[D+(U+1)%3],Y=e[D+(U+2)%3],q=V.distanceToSquared(_[$]),k=Math.min(k,q),W.push([$,Y,q])}k+=1e-6;let B=[],F=0,j=W.length;for(let D=0;D<j;D++){[$,Y,q]=W[F];let ne=v[$]?.includes(z)==!0;q<=k&&B.push($+ +ne*N),F=W.findIndex(ee=>ee[0]==Y)}v.push(B)}let P=[];{let z=0,V=0,W,$,Y=f==3;for(let q=0;q<=a;q++){W=q*(q+1)/2,$=(q+1)*(q+2)/2;for(let k=0;k<a-q;k++)[z,V]=[W+k+q+2,$+k+q+3],P.push(W,$,...Y?[V,W]:[z,$],V,z),[W,$]=[z,V];P.push(W,$,W+a+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),M=m.clone(),L=m.clone(),X=[],R=T(_.length,()=>T(f,()=>m.clone()));for(let z=0;z<_.length;z++){m.copy(_[z]).normalize(),C.copy(m).multiplyScalar(x);let V=v[z];for(let B=0;B<V.length;B++){let F=V[B],j=V[(B+1)%f];y.setFromPointsAndIndices(_,z,F%N,j%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,R[z][B])}let W=[],$=[],Y=[],q=new it.Vector3;a==0&&[...R[z]].reduce((B,F)=>B.add(F),q).multiplyScalar(1/f);for(let B=0;B<f;B++){let F=[],j=(B-1+f)%f,D=R[z][j],ne=R[z][B];m.copy(D).sub(C),h.copy(ne).sub(C);let ee=C.angleTo(m),K=m.angleTo(h),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(C).setLength(x+te),$.push(te);let Q=[O,D,ne];for(let le=0;le<2;le++){let ie=Q[le],ae=Q[le+1];M.subVectors(ie,C),L.subVectors(ae,C),A.crossVectors(M,L).normalize();for(let de=0;de<S;de++){let ce=[ee,K][le]*de/S;m.copy(M).applyAxisAngle(A,ce).add(C),W.push(m.clone()),le&&(b(m,C),F.push([de==0?ie:m.clone(),w.clone()]))}le&&(b(ae,C),F.push([ae,w.clone()]))}Y.push(F)}X.push(Y);let k=2*S,U=2;for(let B=0;B<f;B++){let F=k*B,j=k*((B+1)%f),D=[W[F]];for(let ee=1;ee<S;ee++){M=W[F+ee],L=W[j+ee],D.push(M);for(let K=1,te=ee-U+1;K<=te;K++)m.lerpVectors(M,L,K/(te+1)),m.sub(C).setLength($[B]).add(C),D.push(m.clone());D.push(L)}for(let ee=0;ee<S;ee++)D.push(W[ee+S+F]);D.push(W[j+S]);let ne=P.map(ee=>D[ee]);s.push(...ne.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...ne.map(ee=>(b(ee,C),[w.x,w.y,w.z])).flat())}}let Z=[];for(let z=0;z<v.length;z++)for(let V=0;V<f;V++){let W=v[z][V];if(W<N){let $=v[W].findIndex(k=>k%N==z),Y=X[z][V],q=X[W][$];for(let k=0;k<S;k++){let U=Y[k],B=q[S-k],F=Y[k+1],j=q[S-(k+1)];[U,B,F,F,B,j].forEach(D=>{s.push(D[0].x,D[0].y,D[0].z),u.push(D[1].x,D[1].y,D[1].z)})}Z.push(Y[0][0],q[S][0],Y[S][0],q[0][0])}}for(;Z.length;){let z,V,W,$;[z,V]=Z.splice(0,2);let Y=[z];for(;z!=V;)Y.push(V),W=Z.indexOf(V),$=W%2,V=Z.splice(W-$,2)[1-$];w.subVectors(Y[0],Y[1]).cross(m.subVectors(Y[0],Y[2])).normalize();let q=w.dot(Y[0])<0;q&&w.negate();for(let k=1;k<=Y.length-2;k++)[Y[k+ +q],Y[k+1-+q],Y[0]].forEach(U=>{s.push(U.x,U.y,U.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new it.Vector3;for(let _=0;_<s.length;_+=3){p.x=s[_+0],p.y=s[_+1],p.z=s[_+2];let v=b(p)/2/Math.PI+.5,N=T(p)/Math.PI+.5;c.push(v,1-N)}let f=new it.Vector3,m=new it.Vector3,h=new it.Vector3,y=new it.Vector3,g=new it.Vector2,x=new it.Vector2,S=new it.Vector2,w=(_,v,N,P)=>{P<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=P/2/Math.PI+.5)};for(let _=0,v=0;_<s.length;_+=9,v+=6){f.set(s[_+0],s[_+1],s[_+2]),m.set(s[_+3],s[_+4],s[_+5]),h.set(s[_+6],s[_+7],s[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),S.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=b(y);w(g,v+0,f,N),w(x,v+2,m,N),w(S,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],P=c[_+4],C=Math.max(v,N,P),O=Math.min(v,N,P);C>.9&&O<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function b(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new Zo(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var ly=require("three"),cy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new ns(r*.5,i,a):new ly.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},ns=class extends Zo{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-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,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[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],c="DodecahedronGeometry";super(a,s,c,r,e,t),this.type=c}static fromJSON(r){return new ns(r.radius,r.corner,r.cornerSides)}};var Le=require("three");var Se=require("three"),is=1e-12,Li=class{constructor(r){this.position=new Se.Vector2;this.startPosition=new Se.Vector2;this.uuid=Se.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Li(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Di=class extends Li{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Di(this.parent).copy(this)}},Cr=class extends Li{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Di(this),new Di(this))}static create(e,t){let o=new Cr(e,new Se.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}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 o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.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 Cr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Se.Vector2,t=new Se.Vector2){let[o,i]=this.computeTangents();return o&&i&&(dy(o,e),dy(i,t)),[e,t]}computeTangent(e=new Se.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Se.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function dy(n,r=new Se.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Kd=n=>n,Bi=new Se.Vector2,tc=new Se.Vector2,U_=new Se.Vector2,H_=new Se.Vector2,W_=new Se.Vector2,q_=new Se.Vector2,py=new Se.Vector3,fy=new Se.Vector3;function my(n){let r=new Se.Vector2;r.addVectors(n.v0,Bi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Se.Vector2;return e.addVectors(n.v2,tc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Se.CubicBezierCurve(n.v0,r,e,n.v2)}function as(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function $_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Y_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Zd(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function hy(n,r,e){return uy(n,r)&&uy(r,e)&&Xd(n.position,r.position,e.position)}function Xd(n,r,e){return Bi.copy(r).sub(n).cross(tc.copy(e).sub(n))===0}function yy(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+c,a+u),o.set(s-c,a-u),[t,o]}function gy(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function xy(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((a+c)*(a+c)+(s+u)*(s+u)),d;return Zd(r,n,e)>Math.PI&&(l*=-1),as(u,s)?d=(s+u)*(t/l-.5)*8/3/(a-c):d=(a+c)*(t/l-.5)*8/3/(u-s),o.set(r.x-d*s,r.y+d*a),i.set(e.x+d*u,e.y-d*c),[o,i]}function Qd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function uy(n,r){return Xd(n.position,n.controls[1].position,r.position)&&Xd(n.position,r.controls[0].position,r.position)}function vy(n,r,e,t,o=.5){let i=Bi.subVectors(r,n).multiplyScalar(o).add(n),a=tc.subVectors(e,r).multiplyScalar(o).add(r),s=U_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=H_.subVectors(a,i).multiplyScalar(o).add(i),l=W_.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=q_.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function by(n,r,e=12,t=!0){let o=fy.set(0,0,0),i,a=0,s=[];for(let c=0;c<r.length;c++){let u=Kd(r[c]),l=Bi,d=Qo(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof Se.CubicBezierCurve||u instanceof Se.QuadraticBezierCurve||u instanceof Se.LineCurve){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&Y_(i,o))continue;i===void 0&&(i=py),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function Sy(n,r,e,t=12,o=!0){let i=fy.set(0,0,0),a=0,s=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=Kd(r[c]),d=Bi,p=Qo(l,t);s.push(p);for(let f=0;f<=p;f++)if(l instanceof Se.CubicBezierCurve||l instanceof Se.QuadraticBezierCurve||l instanceof Se.LineCurve){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=py:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Jd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let c=Qo(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),s+=c}a.curveAfter!==void 0&&(s+=Qo(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Qo(n[0].roundedCurveCorner,r)*.5),t}function Qo(n,r=12){return n&&n instanceof Se.EllipseCurve?r*2:n&&(n instanceof Se.LineCurve||n instanceof Se.LineCurve3)?1:n&&n instanceof Se.SplineCurve?r*n.points.length:r}function wy(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Kd(r[a]),c=Qo(s,e),u=Bi;for(let l=0;l<=c;l++)if(s instanceof Se.CubicBezierCurve||s instanceof Se.QuadraticBezierCurve||s instanceof Se.LineCurve){if(s.getPoint(l/c,u),o!==void 0&&$_(o,u,is))continue;o===void 0&&(o=tc),o.copy(u),n.push(u.x,u.y),i++}}return as(n[0],n[n.length-2],is)&&as(n[1],n[n.length-1],is)&&(n.pop(),n.pop()),t&&i>1&&!(as(n[i-1],n[1],is)&&as(n[i-2],n[0],is))&&(n.push(n[0],n[1]),i++),n}var eu=new Le.Vector2,X_=new Le.Vector2,K_=new Le.Vector2,Z_=new Le.Vector2,Q_=new Le.Vector2,J_=new Le.Vector2,Ee=class extends Le.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Le.Plane(new Le.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Le.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Ee;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Cr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ee.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}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,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let a=0,s=this.shapeHoles.length;a<s;a++){let c=this.shapeHoles[a],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}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 o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.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._width=e,this._height=t}applyScale(e,t){let o=eu.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Le.MathUtils.generateUUID()){let i;e instanceof Le.Vector2?i=e:i=new Le.Vector2(e,t);let a=new Cr(o,i);return a.roundness=this.roundness,a}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,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}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}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return by(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Jd(this.points,e,!1),this.roundedCurveDivisions=Jd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Sy(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),wy(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=Qo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(s<o+l)return[c,(s-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,c=s[e];if(Qd(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(eu.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Qd(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 o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=a.roundness,l=s&&c&&hy(s,a,c);if(!a.controlsMoved()&&u>0&&!l){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,m=a.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),x=Math.min(u,y*.499),S=Math.min(g,x),w=1-S/h,b=S/y,T=d.getPointAt(w,eu),_=p.getPointAt(b,X_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=Zd(T,a.position,_)/2,P=Math.tan(N)*T.distanceTo(a.position),[C,O]=yy(T,_,P,K_,Z_),A=gy(C,O,a.position),[M,L]=xy(A,T,_,P,Q_,J_);v=new Le.CubicBezierCurve(T.clone(),M.clone(),L.clone(),_.clone())}else v=new Le.QuadraticBezierCurve(T.clone(),a.position.clone(),_.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Le.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,c=t,u=s.getUtoTmapping(o,0),l=vy(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),a!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new Ee(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){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Cr(Le.MathUtils.generateUUID(),new Le.Vector2(a,s));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ee;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Le.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],c,u;for(c=0,u=a.length;c<u;c++)a[c]instanceof Le.QuadraticBezierCurve&&(a[c]=my(a[c]));for(c=0,u=a.length;c<u;c++){let p=a[c],f=c>0?a[c-1]:null,m;p instanceof Le.CubicBezierCurve?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof Le.LineCurve&&(m=this.createPoint(p.v1)),m!==void 0&&(f!==null&&o(m,f),s.push(m))}let l=a[a.length-1],d=!1;return l instanceof Le.CubicBezierCurve?l.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(l.v2),d=!0):l instanceof Le.LineCurve&&l.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof Le.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new Ee;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var ru=Math.PI*2;function tu({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function eP(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function Ty(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function tP(n,r,e,t,o,i,a,s,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*s,y=m*-i/o*a,g=h+(n+e)/2,x=y+(r+t)/2,S=(a-h)/o,w=(s-y)/i,b=(-a-h)/o,T=(-s-y)/i,_=Ty(1,0,S,w),v=Ty(S,w,b,T);return!u&&v>0&&(v-=ru),u&&v<0&&(v+=ru),{centerx:g,centery:x,ang1:_,ang2:v}}function _y({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=tP(n,r,e,t,o,i,u,l,a,s),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(ru/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let S=0;S<x;S++)c.push(eP(f,m)),f+=m;return c.map(S=>{let{x:w,y:b}=tu(S[0],o,i,h,y),{x:T,y:_}=tu(S[1],o,i,h,y),{x:v,y:N}=tu(S[2],o,i,h,y);return{x1:w,y1:b,x2:T,y2:_,x:v,y:N}})}var wn=require("three");var Ce;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ce||(Ce={}));var et;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(et||(et={}));function he(n,r){if(!n)throw r||"Assertion Failed!"}var pe=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){he(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){he(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){he(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){he(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),ss=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),rc=function(){function n(r){this.side=r,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(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Ri=function(){function n(){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 n}(),Py=function(){function n(){var r=new Ri,e=new ss,t=new rc(0),o=new rc(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new rc(0),t=new rc(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;he(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;he(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Ri,e=new Ri,t=new ss,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Ri;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new ss;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ss;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Ri;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new ss;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),s+c-2<=r&&pe.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&pe.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){he(o.prev===i),c=o.anEdge;do he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c),he(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(he(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){he(a.prev===s),c=a.anEdge;do he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c),he(c.Org===a),c=c.Onext;while(c!==a.anEdge)}for(he(a.prev===s&&a.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)he(c.Sym.next===u.Sym),he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Org!==null),he(c.Dst!==null),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c);he(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Oy=function(){function n(){this.handle=null}return n}(),Ay=function(){function n(){this.key=null,this.node=0}return n}(),rP=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Oy,this.handles[t]=new Ay;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,he(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Oy;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ay}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;he(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),ou=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Cy=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),oP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Cy,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Cy;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),nP=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?pe.vertLeq(i.Org,a.Org)?pe.edgeSign(a.Dst,i.Org,a.Org)<=0:pe.edgeSign(i.Dst,a.Org,i.Org)>=0:pe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return pe.edgeSign(i.Dst,o,i.Org)>=0;var s=pe.edgeEval(i.Dst,o,i.Org),c=pe.edgeEval(a.Dst,o,a.Org);return s>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&he(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){he(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new ou;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ce.ODD:return(e&1)!==0;case Ce.NONZERO:return e!==0;case Ce.POSITIVE:return e>0;case Ce.NEGATIVE:return e<0;case Ce.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,c,u,l,d=!0;u=t;do he(pe.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;s=n.regionBelow(c),u=s.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),s.windingNumber=c.windingNumber-u.winding,s.inside=n.isWindingInside(r,s.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=s,l=u;c.dirty=!0,he(c.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=pe.vertL1dist(e,r),i=pe.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(pe.vertLeq(o.Org,i.Org)){if(pe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;pe.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(pe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(he(!pe.vertEq(o.Dst,i.Dst)),pe.vertLeq(o.Dst,i.Dst)){if(pe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(pe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,c=o.Dst,u=i.Dst,l,d,p=new Ri,f,m;if(he(!pe.vertEq(u,c)),he(pe.edgeSign(c,r.event,a)<=0),he(pe.edgeSign(u,r.event,s)>=0),he(a!==r.event&&s!==r.event),he(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(l=Math.min(a.t,c.t),d=Math.max(s.t,u.t),l>d))return!1;if(pe.vertLeq(a,s)){if(pe.edgeSign(u,a,s)>0)return!1}else if(pe.edgeSign(c,s,a)<0)return!1;return n.debugEvent(r),pe.intersect(c,a,u,s,p),he(Math.min(a.t,c.t)<=p.t),he(p.t<=Math.max(s.t,u.t)),he(Math.min(u.s,c.s)<=p.s),he(p.s<=Math.max(s.s,a.s)),pe.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=pe.vertLeq(a,s)?a:s,pe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),pe.vertEq(p,a)||pe.vertEq(p,s)?(n.checkForRightSplice(r,e),!1):!pe.vertEq(c,r.event)&&pe.edgeSign(c,r.event,p)>=0||!pe.vertEq(u,r.event)&&pe.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(pe.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),pe.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,c,s,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,c=a.eUp,u=!1;if(s.Dst!==c.Dst&&n.checkForIntersect(r,e),pe.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),u=!0),pe.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,a,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}pe.vertLeq(c.Org,s.Org)?o=c.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,c;if(o=e.eUp,pe.vertEq(o.Org,t)){he(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!pe.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}he(!1),e=n.topRightRegion(e),c=n.regionBelow(e),a=c.eUp.Sym,i=s=a.Onext,c.fixUpperEdge&&(he(i!==a),n.deleteRegion(r,c),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),pe.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,c,u=new ou;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,pe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=pe.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var l=r.mesh.connect(s.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);he(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new ou,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new oP(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(he(e.fixUpperEdge),he(++t===1)),he(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,pe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new rP(i,pe.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,he(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!pe.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),iP=function(){function n(){this.mesh=new Py,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=Ce.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 n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,c=[0,0,0],u=[0,0,0],l=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,r[0]=p[0],r[1]=p[1],r[2]=p[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;pe.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;pe.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(pe.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(pe.edgeGoesLeft(o.Lnext)||pe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(pe.edgeGoesRight(t.Lprev)||pe.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=a,++a}this.elementCount=a,e===et.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===et.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,l=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[l++]=i,this.elements[l++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Py),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=Ce.ODD),e===void 0&&(e=et.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),nP.computeInterior(this,a);var s=this.mesh;return e===et.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===et.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Nr(n){var r=n.windingRule,e=r===void 0?Ce.ODD:r,t=n.elementType,o=t===void 0?et.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,c=s===void 0?2:s,u=n.normal,l=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new iP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,a,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var dz=Ce.ODD,uz=Ce.NONZERO,pz=Ce.POSITIVE,fz=Ce.NEGATIVE,mz=Ce.ABS_GEQ_TWO,hz=et.POLYGONS,yz=et.CONNECTED_POLYGONS,gz=et.BOUNDARY_CONTOURS;var Ir=require("three");var oc=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*oc.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*oc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,3*r);a+=3*r;let u=new Float32Array(o,a*i,2*r);e?(s.set(this.positions.subarray(0,this.size*3)),c.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),c.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=c,this.uvs=u,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ls=oc;ls.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ey=za(My()),cs={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},lu={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},cu={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},su=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),en=class extends Ir.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=Ce.ODD,c=!1){super();this.forPathBevel=c;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(C=>{let O=C.extractShapePointsToFlatArray([],i),A=[];for(let M=O.length-1;M>=1;M-=2){let L=O[M-1],X=O[M-0];A.push(L,X)}return A}),d=[],p=[];for(let C=0;C<u.length;C+=2)p.push([u[C],u[C+1]]);d.push(p);for(let C=0;C<l.length;C++){let O=l[C],A=[];for(let M=0;M<O.length;M+=2)A.push([O[M],O[M+1]]);d.push(A)}let f;e.isText?f=new Ir.Box2().setFromPoints(e.points.map(O=>O.position)).getSize(new Ir.Vector2).length()*.1:d[0].length===0?f=o:f=(0,Ey.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,t/2),this._bevelSegments=Math.floor(a));let m;try{m=Nr({windingRule:s,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{m=cs}let h;try{h=Nr({windingRule:Ce.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]})}catch{h=lu}if(!m)throw new Error("error generating geometry");let y=m.elementCount;if(h){m.elementCount+=h.elementCount;for(let C=0;C<h.elements.length;C++){let O=h.elements[C],A=C%2===0?m.vertexCount:0;m.elements.push(O+A)}for(let C=0;C<h.vertexIndices.length;C++){let O=h.vertexIndices[C],A=m.vertexCount;m.vertexIndices.push(O+A)}for(let C=0;C<h.vertices.length;C++){let O=h.vertices[C];m.vertices.push(O)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let C=0,O=m.vertexCount;C<O;C++){let A=C*2,M=m.vertices[A+0],L=m.vertices[A+1];M<g&&(g=M),M>x&&(x=M),L<S&&(S=L),L>w&&(w=L)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new ls(this._computeBufferEstimatedSize(m));let b=[],T=[];for(let C=m.elementCount-1;C>=0;C--){let O=C>=y,A=C*2,M=m.elements[A+0],L=m.elements[A+1],X=M+L,R={start:M,count:L,normals:[],continuous:[],concave:[]},Z=M,z=X-1,V=M+1,W=this._shape.roundedCurves.length;do{let U=Z-M,B=m.vertices[z*2+0],F=m.vertices[z*2+1],j=m.vertices[Z*2+0],D=m.vertices[Z*2+1],ne=m.vertices[V*2+0],ee=m.vertices[V*2+1],K=j-B,te=D-F,Q=Math.sqrt(K*K+te*te);K/=Q,te/=Q;let le=j-ne,ie=D-ee,ae=Math.sqrt(le*le+ie*ie);le/=ae,ie/=ae,R.normals[U*2+0]=-ie,R.normals[U*2+1]=le,R.concave[U]=K*ie-te*le>0;let de=m.vertexIndices[Z];if(Array.isArray(de))R.continuous[U]=!1;else{let[ce,ue]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(ue>0&&ue<1)R.continuous[U]=!0;else{let ge=ue===1?ce+1:ce-1;ge=(ge+W)%W;let Ne=ue===1?0:1,Ye=this._shape.roundedCurves[ce].getTangent(ue),Ie=this._shape.roundedCurves[ge].getTangent(Ne);R.continuous[U]=Ye.dot(Ie)>.95}}O&&(R.normals[U*2+0]*=-1,R.normals[U*2+1]*=-1),[z,Z,V]=[Z,V,V+1],V>=X&&(V-=L)}while(V!==M+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:m.vertices.slice(M*2,X*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((U,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:m.vertices.slice(M*2,X*2)});let Y=0;for(let U=1;U<=this._bevelSegments;U++){let B=U/this._bevelSegments*Math.PI/2,F=(1-Math.cos(B))*this._bevel,j=[],D=[],ne=[],ee=[],K=0;for(let Q=0;Q<L;Q++){let le=Q*2,ie=(Q-1+L)%L*2,ae=m.vertices[R.start*2+le+0],de=m.vertices[R.start*2+le+1],ce=-R.normals[ie+0]*F,ue=-R.normals[ie+1]*F,ge=-R.normals[le+0]*F,Ne=-R.normals[le+1]*F;if(R.concave[Q]||!R.concave[Q]&&O){let Ye=Math.atan2(ue,ce),Ie=Math.atan2(Ne,ge);Ie>Ye&&(Ie-=Math.PI*2);let ke=Ie-Ye;if(R.continuous[Q]||O){let qt=Ye+ke/2,Te=Math.cos(qt)*F,mt=Math.sin(qt)*F;j[2*K+0]=ae+Te*(O?-1:1),j[2*K+1]=de+mt*(O?-1:1),ee[K]=Q,K++}else{let qt=Math.max(1,Math.floor(i/4*Math.abs(ke)/Math.PI));for(let Te=0;Te<=qt;Te++){let mt=Ye+ke*(Te/qt),bt=Math.cos(mt)*F,jn=Math.sin(mt)*F;j[2*K+0]=ae+bt,j[2*K+1]=de+jn,ee[K]=Q,K++}}}else j[2*K+0]=ae+ce,j[2*K+1]=de+ue,ee[K]=Q,D[Q]=K,K++,j[2*K+0]=ae,j[2*K+1]=de,ee[K]=Q,K++,j[2*K+0]=ae+ge,j[2*K+1]=de+Ne,ee[K]=Q,ne[Q]=K,K++}let te=Nr({windingRule:Ce.POSITIVE,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:Q=>{let ie=Q.Org.idx,ae=ee[ie],de=ee[(ie+1)%ee.length];Q.idx=[ae,de],Q.Sym.idx=[de,ae]},vertexIdCallback:Q=>{let le=Q.Lprev.idx;return[le?le[1]:0,Q.idx?Q.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${U}'th loop`);if(!te.vertexCount){let Q=(U-1)/this._bevelSegments*Math.PI/2;Y=(1-Math.sin(Q))*this._bevel;break}for(let Q=0;Q<te.vertexIndices.length;Q++){let[le,ie]=te.vertexIndices[Q];if(le===ie)continue;let ae=ie;ie<le&&(ae+=L);for(let de=le;de<ae;de++){let ce=de%L,ue=(de+1)%L;if(!R.continuous[ce]||!R.continuous[ue]){te.vertexIndices[Q]=[le,ce],te.vertexIndices.splice(Q+1,0,[ue,ie]),te.vertices.splice((Q+1)*2,0,te.vertices[Q*2],te.vertices[Q*2+1]);break}}}$.push({bevelI:U,angle:B,size:F,boundary:te,reverseMap:ee,insetPoints:j})}let q=(U,B,F)=>{let j=0,D=U.boundary.vertexIndices.length;for(;j<D&&F(U.boundary.vertexIndices[B]);)B=(B+1)%D,j++;return j},k=b.length;for(let U=1;U<$.length;U++){let B=$[U-1],F=$[U],j=B.boundary.vertexIndices.length,D=F.boundary.vertexIndices.length;if(!j||!D)break;let ne=R.concave.length,ee=0,K=su(ee,L);for(;!B.boundary.vertexIndices.filter(K).length||!F.boundary.vertexIndices.filter(K).length;)ee++,K=su(ee,L);let te=B.boundary.vertexIndices.findIndex(K),Q=F.boundary.vertexIndices.findIndex(K);do te=(te+1)%j;while(K(B.boundary.vertexIndices[te]));do Q=(Q+1)%D;while(K(F.boundary.vertexIndices[Q]));ee=(ee+1)%L;let le=ee,ie=0,ae=this._buildBevelVert(R,B,(te-1+j)%j,void 0,ie),de=this._buildBevelVert(R,F,(Q-1+D)%D,void 0,ie),ce=ae,ue=de,ge,Ne,Ye=!1;do{ie=(ee||ne)/ne,K=su(ee,L);let Ie=q(B,te,K),ke=q(F,Q,K),qt=Ye;if(Ye=!1,Ie&&!ke){for(let Te=0;Te<Ie;Te++)ge=this._buildBevelVert(R,B,(te+Te)%j,Te/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge;Ye=!0}else if(!Ie&&ke)for(let Te=0;Te<ke;Te++)Ne=this._buildBevelVert(R,F,(Q+Te)%D,Te/(ke-1),ie),b.push(ue.topN,ce.topP,Ne.topP),c===!1&&b.push(ce.bottomP,ue.bottomN,Ne.bottomP),ue=Ne;else if(Ie&&ke)if(ge=this._buildBevelVert(R,B,te,0,ie),Ne=this._buildBevelVert(R,F,Q,0,ie),qt?(b.push(ce.topN,Ne.topP,ue.topN),b.push(ce.topN,ge.topP,Ne.topP),c===!1&&(b.push(Ne.bottomP,ce.bottomN,ue.bottomN),b.push(Ne.bottomP,ge.bottomP,ce.bottomN))):(b.push(ue.topN,ce.topN,ge.topP),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&(b.push(ge.bottomP,ce.bottomN,ue.bottomN),b.push(ge.bottomP,ue.bottomN,Ne.bottomP))),ce=ge,ue=Ne,Ie===ke)for(let Te=1;Te<Ie;Te++)ge=this._buildBevelVert(R,B,(te+Te)%j,Te/(Ie-1),ie),Ne=this._buildBevelVert(R,F,(Q+Te)%D,Te/(ke-1),ie),b.push(ce.topN,ge.topP,ue.topN),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&(b.push(ge.bottomP,ce.bottomN,ue.bottomN),b.push(ge.bottomP,ue.bottomN,Ne.bottomP)),ce=ge,ue=Ne;else if(Ie>ke){let Te=Ie/ke,mt=0;for(let bt=1;bt<Ie;bt++)ge=this._buildBevelVert(R,B,(te+bt)%j,bt/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge,bt>(mt+1)*Te&&(mt++,Ne=this._buildBevelVert(R,F,(Q+mt)%D,mt/(ke-1),ie),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&b.push(ge.bottomP,ue.bottomN,Ne.bottomP),ue=Ne)}else{let Te=ke/Ie,mt=0;for(let bt=1;bt<ke;bt++)Ne=this._buildBevelVert(R,F,(Q+bt)%D,bt/(ke-1),ie),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&b.push(ge.bottomP,ue.bottomN,Ne.bottomP),ue=Ne,bt>(mt+1)*Te&&(mt++,ge=this._buildBevelVert(R,B,(te+mt)%j,mt/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge)}te=(te+Ie)%j,Q=(Q+ke)%D,ee=(ee+1)%ne}while(ee!==le)}if(c===!1&&this._depth>this._bevel*2&&this._buildWall($,R,b),O){let U=[];for(let B=b.length-1;B>=k+2;B-=3){let F=b[B-2],j=b[B-1],D=b[B-0];U.push(D,j,F)}b.splice(k,b.length-k,...U)}if(O){let U=[];for(let B=$[$.length-1].boundary.vertices.length-1;B>=1;B-=2){let F=$[$.length-1].boundary.vertices[B-1],j=$[$.length-1].boundary.vertices[B-0];U.push(F,j)}T.push(U)}if(!O){let U=$[$.length-1],B;try{B=Nr({windingRule:$.length>1?Ce.POSITIVE:Ce.ODD,elementType:et.POLYGONS,vertexSize:2,strict:!0,contours:[U.insetPoints,...T]})}catch{B=cu}if(!B)throw new Error("Error generating geometry for surface");l.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let F=0;F<B.elementCount*3;F+=3){let j=this._buildSurfaceVert(B,B.elements[F+0],Y),D=this._buildSurfaceVert(B,B.elements[F+1],Y),ne=this._buildSurfaceVert(B,B.elements[F+2],Y);b.push(j.top,D.top,ne.top),c===!1&&b.push(ne.bottom,D.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let _=new Ir.BufferAttribute(Uint32Array.from(b),1),v=new Ir.BufferAttribute(this._buffer.positions,3),N=new Ir.BufferAttribute(this._buffer.normals,3),P=new Ir.BufferAttribute(this._buffer.uvs,2);v.needsUpdate=!0,N.needsUpdate=!0,P.needsUpdate=!0,_.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",N),this.setAttribute("uv",P),this.setIndex(_)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let c=this._buildBevelVert(t,i,a),u=this._buildBevelVert(t,i,(a+1)%s);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],c=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let l=this._buffer.get(this.forPathBevel?1:2),d=l*3,p=l*2,f={top:l+0,bottom:l+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=c,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=c,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[c,u]=t.boundary.vertexIndices[o],l,d,p,f;c!==u?(d=c,l=u,f=!1,p=e.continuous[d]&&e.continuous[l]):(l=c,d=(l-1+e.count)%e.count,f=e.concave[l]&&t.bevelI>0,p=e.continuous[l]||f);let m=Math.cos(t.angle),h=Math.sin(t.angle),y=o*2,g=l*2,x=d*2,S=t.boundary.vertices[y+0],w=t.boundary.vertices[y+1],b=(1-h)*this._bevel,T=(S-this._minX)/this._width,_=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),_=1);let v=e.normals[g+0],N=e.normals[g+1],P=e.normals[x+0],C=e.normals[x+1];if(f){let X=P-v,R=C-N;v=v+X*(1-i),N=N+R*(1-i);let Z=Math.sqrt(v*v+N*N);v/=Z,N/=Z}let O=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),A=O*3,M=O*2,L={i:o,fi:l,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1,pathBevelUCoord:a};return this._buffer.positions[A+0]=S,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[A+0]=v*m,this._buffer.normals[A+1]=N*m,this._buffer.normals[A+2]=h,this._buffer.uvs[M+0]=T,this._buffer.uvs[M+1]=_,this.forPathBevel===!1&&(this._buffer.positions[A+3]=S,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=b,this._buffer.normals[A+3]=v*m,this._buffer.normals[A+4]=N*m,this._buffer.normals[A+5]=-h,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=T),p||(this.forPathBevel?(O+=1,A+=3,M+=2):(O+=2,A+=6,M+=4),L.topP=O+0,L.bottomP=O+1,this._buffer.positions[A+0]=S,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[A+0]=P*m,this._buffer.normals[A+1]=C*m,this._buffer.normals[A+2]=h,this._buffer.uvs[M+0]=T,this._buffer.uvs[M+1]=_,this.forPathBevel===!1&&(this._buffer.positions[A+3]=S,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=b,this._buffer.normals[A+3]=P*m,this._buffer.normals[A+4]=C*m,this._buffer.normals[A+5]=-h,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=T)),this.vertexCache[s]=L,L}clone(){let e=new en(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Gi=class extends wn.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ce.ODD;this.elementType=et.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ce.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),s,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{s=Nr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=cs}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new wn.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new wn.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new wn.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new wn.BufferAttribute(new Uint32Array(f*3),1),s){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let T=w*2,_=s.vertices[T+0],v=s.vertices[T+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,S=g-y;for(let w=0,b=p;w<b;w++){let T=w*2,_=s.vertices[T+0],v=s.vertices[T+1],N=(_-m)/x,P=(v-y)/S;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,P)}for(let w=0,b=f;w<b;w++){let T=w*3,_=s.elements[T+0],v=s.elements[T+1],N=s.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,v),this._indexAttribute.setX(T+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Gi(this._shape,this._curveSegments);return e.userData=yo(this.userData),e}};var Vi=class extends en{constructor(e,t,o=0,i=12,a=3,s=Ce.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let c=this._buildBevelVert(t,i,a),u=this._buildBevelVert(t,i,(a+1)%s);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Vi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Qt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ce.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ee?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Ee(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let c=a??new Ee(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new Gi(n.shape,o,{windingRule:a}):s=new Vi(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var Mr=require("three"),Dy=Math.PI*2,ji=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Mr.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=dP(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f;return o===0?(f=new Mr.BufferGeometry,f.setAttribute("position",new Mr.Float32BufferAttribute([],3))):f=Qt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function dP(n,r,e,t,o,i){if(t>=Dy)return o>30||o%4===0?(pP(n,r,e,i),Math.round(o/4)):Ly(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,c={x:Math.cos(s)*r,y:Math.sin(s)*e},u=_y({px:a.x,py:a.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?uP(n,a.x,a.y,u,o,r,e,i):Ly(n,t,o,r,e,i)}function uP(n,r,e,t,o,i,a,s){let c=Math.round(o/t.length);n.addPoint(zi(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=zi(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return s>0?By(n,i,a,s):n.addPoint(zi(0,0)),c}function Ly(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let c=a*s,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(zi(u,l))}return r<Dy?i>0?By(n,t,o,i):n.addPoint(zi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Ry(n,t,o,i)),1}function pP(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,c=e*a;n.addPoint(ic(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(ic(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ic(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(ic(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Ry(n,r,e,t)}function zi(n,r){return new Cr(Mr.MathUtils.generateUUID(),new Mr.Vector2(n,r))}function ic(n,r,e,t,o,i){let a=zi(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function By(n,r,e,t){Gy(n,r,e,t).forEach(i=>n.addPoint(i))}function Ry(n,r,e,t){let o=Gy(n,r,e,t),i=new Ee;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Gy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Mr.Vector2(o/r,i/e),s=n.points.map(c=>{let u=c.clone();return u.uuid=Mr.MathUtils.generateUUID(),u}).reverse();return s.forEach(c=>{c.position.multiply(a);let u=c.controls[0].position.clone().multiply(a),l=c.controls[1].position.clone().multiply(a);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),s}var Er=require("three"),Vy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new ds(!1,r,e,t,o,i,a,s,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},du=new Er.Uint32BufferAttribute([0,0,0],1),ds=class extends Er.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,c=1,u=1,l=1,d=1,p=1){if(super(),a===0)return;let f=r&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new Er.Vector3,h=new Er.Vector3,y=m(),g=m(),x=m(),S,w,b,T,_,v,N,P,C=m(),O=m(),A=m(),M=m(),L=m(),X=m(),R=m(),Z=m(),z=t-2*c+.001,V=z/a,W=Math.ceil(s*a),$=W+1,Y=z/W,q=-z/2,k=l+1,U=2*Math.PI/l,B=Math.PI/2/p,F=.01,j=Math.min((1-d/100)*c,c-F),D=c-j,ne=0,ee=2,K=p*ee+ee,te=k*K/ee,Q=te+k*$,le=Math.max(0,k*($+K)),[ie,ae,de]=[3,3,2].map(st=>Array(le*st).fill(0)),ce=[],ue=i-c;function ge(st,nr){let zr=Math.PI/2;v=nr*Y,P=2*Math.PI*(v%V)/V+zr,v+=q,N=Math.sin(P)*ue,_=Math.cos(P)*ue,r?st.set(_,N,v):st.set(_,v,N)}ge(h,-1e-10),ge(y,0),C.copy(h),ge(h,1);let Ne=h.distanceTo(y),Ye=f?0:D+j,Ie=Ne*W+2*Ye,ke=j,qt=Ie-Ye;for(let st=0;st<=W;st++){ge(g,st),Z.subVectors(g,C).normalize(),C.copy(g),X.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(Z,X).normalize();let nr=st===0,zr=st===W,ix=nr?3*Math.PI/2:B,ax=nr?ke:qt,sx=nr?k:Q,lx=nr?0:le-k,cx=Z.clone().multiplyScalar(nr?-D:D).add(g),dx=Z.clone().multiplyScalar(nr?-1:1).normalize();for(let uo=0;uo<k;uo++){let cp=uo*U;if(O.addVectors(h.copy(X).multiplyScalar(c*Math.cos(cp)),y.copy(R).multiplyScalar(c*Math.sin(cp))),A.copy(O).normalize(),nr||zr){f||(ne=lx+uo,[0,1,2].forEach($t=>{ie[ne*3+$t]=cx.getComponent($t),ae[ne*3+$t]=dx.getComponent($t)}),de[ne*2]=+zr,de[ne*2+1]=uo/l),y.copy(A).multiplyScalar(j),x.addVectors(g,y);for(let $t=0;$t<p;$t++){let od=$t*B+ix;M.addVectors(h.copy(Z).multiplyScalar(D*Math.sin(od)),y.copy(A).multiplyScalar(D*Math.cos(od))),L.copy(M).normalize(),y.addVectors(x,M),M.normalize(),ne=sx+$t*k+uo,[0,1,2].forEach(ks=>{ie[ne*3+ks]=y.getComponent(ks),ae[ne*3+ks]=L.getComponent(ks)});let ux=+nr+Math.sin(od);de[ne*2]=(ax+D*ux)/Ie,de[ne*2+1]=uo/l}}y.addVectors(g,O),ne=te+st*k+uo,[0,1,2].forEach($t=>{ie[ne*3+$t]=y.getComponent($t),ae[ne*3+$t]=A.getComponent($t)}),de[ne*2]=(Ye+st*Ne)/Ie,de[ne*2+1]=uo/l}}let Te=$+2*p+ee,mt=1,[bt,jn]=[+f,Te-1];for(let st=bt;st<=jn-1;st++){let nr=f&&st===jn-1;for(let zr=0;zr<k-1;zr++)S=st*k+zr,w=S+1,b=(nr?zr:S)+k,T=(nr?zr+1:w)+k,st===0?ce.push(w,T,b):st===Te-2?ce.push(S,w,b):ce.push(S,w,b,w,T,b)}this.setIndex(ce),this.setAttribute("position",new Er.Float32BufferAttribute(ie,3)),this.setAttribute("normal",new Er.Float32BufferAttribute(ae,3)),this.setAttribute("uv",new Er.Float32BufferAttribute(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,a=i+1,s=(d?p:i)+t,c=(d?p+1:a)+t,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=c,o[u++]=s;return o.length=u,du.array=o,du.count=o.length,du}};var zy=require("three");var jy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new us(r*.5,i,a):new zy.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},us=class extends Zo{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[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],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new us(r.radius,r.corner,r.cornerSides)}};var ac=require("three"),Fy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{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}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new ac.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new ac.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Qr=require("three");var To=require("three");var oe=require("three"),Zr=new oe.Matrix4,uu=new oe.Object3D,sc=new oe.Vector3,tn=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.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(r){let e=new oe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Zr.makeRotationX(r),this.applyMatrix4(Zr),this}rotateY(r){return Zr.makeRotationY(r),this.applyMatrix4(Zr),this}rotateZ(r){return Zr.makeRotationZ(r),this.applyMatrix4(Zr),this}translate(r,e,t){return Zr.makeTranslation(r,e,t),this.applyMatrix4(Zr),this}scale(r,e,t){return Zr.makeScale(r,e,t),this.applyMatrix4(Zr),this}lookAt(r){return uu.lookAt(r),uu.updateMatrix(),this.applyMatrix4(uu.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new oe.Vector3().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(s,p));function l(p,f,m,h){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=a===void 0?[]:[new oe.Vector3().fromBufferAttribute(a,p),new oe.Vector3().fromBufferAttribute(a,f),new oe.Vector3().fromBufferAttribute(a,m)],x=new Fi(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,p),new oe.Vector2().fromBufferAttribute(c,f),new oe.Vector2().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(u,p),new oe.Vector2().fromBufferAttribute(u,f),new oe.Vector2().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(sc).negate(),this.translate(sc.x,sc.y,sc.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new oe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new oe.Vector3,e=new oe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new oe.Vector3;if(r){let t=new oe.Vector3,o=new oe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],c=this.vertices[s.a],u=this.vertices[s.b],l=this.vertices[s.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new tn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,c=this.faces.length;s<c;s++){let u=new oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};i.push(u),a.push(l)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let h=s[p].clone();e!==void 0&&h.applyMatrix4(e),a.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,S=new Fi(m.a+i,m.b+i,m.c+i);S.normal.copy(m.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=g.length;w<b;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),S.vertexNormals.push(h);S.color.copy(m.color);for(let w=0,b=x.length;w<b;w++)y=x[w],S.vertexColors.push(y.clone());S.materialIndex=m.materialIndex+t,c.push(S)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let a=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(c);break}}for(let c=a.length-1;c>=0;c--){let u=a[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let s=this.vertices.length-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let c=0;c<e;c++){let u=r[c]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},a=[],s={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,S=h.normal.length()>0,w=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,S),_=l(_,5,w),_=l(_,6,b),_=l(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(b&&t.push(p(h.color)),T){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return s[h]!==void 0||(s[h]=a.length,a.push(m.getHex())),s[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new tn().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let a=r.morphNormals;for(let p=0,f=a.length;p<f;p++){let m={};if(a[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=a[p].vertexNormals.length;h<y;h++){let g=a[p].vertexNormals[h],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}if(a[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=a[p].faceNormals.length;h<y;h++)m.faceNormals.push(a[p].faceNormals[h].clone())}this.morphNormals.push(m)}let s=r.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new pu().fromGeometry(this),e=new oe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",lc.call(new oe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",lc.call(new oe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",ky.call(new oe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Uy.call(new oe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Uy.call(new oe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,c=a.length;s<c;s++){let u=a[s],l=new oe.Float32BufferAttribute(u.data.length*3,3);l.name=u.name,i.push(lc.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new oe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Hy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new oe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Hy.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new oe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new oe.Float32BufferAttribute(t.vertices.length*3,3),i=new oe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",lc.call(o,t.vertices)),e.setAttribute("color",ky.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new oe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",fP.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};tn.prototype.isGeometry=!0;var pu=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(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,c=s.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(a===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<c;b++){let T=s[b].vertices;u[b].data.push(T[x.a],T[x.b],T[x.c])}for(let b=0;b<d;b++){let T=l[b].vertexNormals[g];p[b].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Fi=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function fP(n){return this.array.set(n),this}function ky(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new oe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Uy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new oe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function lc(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new oe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Hy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new oe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var mP=["a","b","c"];function hP(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function fu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function mu(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),c=a+"_"+s,u;if(t.has(c))u=t.get(c);else{let l=e[a],d=e[s];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function yP(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],mu(a.a,a.b,n,t,a,e),mu(a.b,a.c,n,t,a,e),mu(a.c,a.a,n,t,a,e)}function cc(n,r,e,t,o){n.push(new Fi(r,e,t,void 0,void 0,o))}function ki(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function dc(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var uc=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof To.BufferGeometry?r=new tn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new To.Vector3,t,o,i,a,s,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;yP(c,u,p,f);let m=[],h,y,g,x,S,w,b;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new To.Vector3,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=y.faces[a],s=0;s<3&&(h=c[hP(x,mP[s])],!(h!==y.a&&h!==y.b));s++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,v,N,P,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),v=T,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),a=0;a<t;a++)N=P[a],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let M=A.concat(m),L=A.length,X,R,Z,z=[],V=[],W,$,Y,q,k=new To.Vector2,U=new To.Vector2,B=new To.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],X=Number(fu(x.a,x.b,f).newEdge)+L,R=Number(fu(x.b,x.c,f).newEdge)+L,Z=Number(fu(x.c,x.a,f).newEdge)+L,cc(z,X,R,Z,x.materialIndex),cc(z,x.a,X,Z,x.materialIndex),cc(z,x.b,R,X,x.materialIndex),cc(z,x.c,Z,R,x.materialIndex),d&&(W=l[o],$=W[0],Y=W[1],q=W[2],k.set(ki($.x,Y.x),ki($.y,Y.y)),U.set(ki(Y.x,q.x),ki(Y.y,q.y)),B.set(ki($.x,q.x),ki($.y,q.y)),dc(V,k,U,B),dc(V,$,k,B),dc(V,Y,U,k),dc(V,q,B,U));r.vertices=M,r.faces=z,d&&(r.faceVertexUvs[0]=V)}};var yt=new Qr.Vector3,Wy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Qr.BufferGeometry().copy(new Qr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(yt),t={width:yt.x,height:yt.y,depth:yt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Qr.BufferGeometry().copy(new Qr.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(yt)):yt.set(a.width,a.height,a.depth),(r!==yt.x||e!==yt.y||t!==yt.z)&&i.scale(yt.x===0?1:r/yt.x,yt.y===0?1:e/yt.y,yt.z===0?1:t/yt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new uc(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Qr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(yt);let a=100/yt.x;Object.assign(i.parameters,{width:100,height:yt.y*a,depth:yt.z*a}),r(this.build(i))})}};var pc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,c=n.shape,u=r*.5,l=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Qt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var Ae=require("three"),qy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:c}=n.parameters,u=new yu(r*.5,e,o,i,a,s,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function ps(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function hu(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),c=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,t/Math.sin(u))}}function gP(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var yu=class extends Ae.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let c=[],u=[],l=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,S=new Ae.Vector3(0,-f,0),w=new Ae.Vector3(0,f,0),b=new Ae.Vector2(r,-f),T=new Ae.Vector2(h,-f),_=new Ae.Vector2(0,w.y).sub(T),v=new Ae.Vector2(0,w.y).sub(b),N=new Ae.Vector2(_.y,-_.x).normalize(),P=new Ae.Vector2(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;a=Math.min(a,O);let A;{let V=new Ae.Vector3(N.x,N.y,0),W=new Ae.Vector3(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);A=V.angleTo(W)}let M=a/Math.tan((Math.PI-_.angle())/2),L=a/Math.tan((Math.PI-A)/2),X=new Ae.Vector3;if(!i){u.push(S.x,S.y,S.z),l.push(0,-1,0),d.push(0,0);let V=p++,W=[],$=b.clone(),Y=M/Math.cos(Math.PI/t);$.x-=Y;for(let q=0;q<t;q++){let k=q/t*Math.PI*2+m,U=new Ae.Vector2(Math.sin(k),Math.cos(k));ps($,U,X),u.push(X.x,X.y,X.z),l.push(0,-1,0),d.push(0,0),W.push(p++)}for(let q=0;q<W.length;q++)c.push(W[q],V,W[(q+1)%W.length])}let R=[];{let V=new Ae.Vector3,W=new Ae.Vector3,$=new Ae.Vector3,Y=new Ae.Vector3,q=new Ae.Vector3,k=new Ae.Vector3;for(let U=0;U<t;U++){let B=U/t*Math.PI*2+m,F=(U+.5)/t*Math.PI*2+m,j=(U+1)/t*Math.PI*2+m,D=new Ae.Vector2(Math.sin(B),Math.cos(B)),ne=new Ae.Vector2(Math.sin(F),Math.cos(F)),ee=new Ae.Vector2(Math.sin(j),Math.cos(j));ps(b,D,W),ps(b,ee,$),ps(N,ne,V),hu(w,W,$,L,L,Y),u.push(Y.x,Y.y,Y.z),hu(W,w,$,L,M,q),u.push(q.x,q.y,q.z),hu($,W,w,M,L,k),u.push(k.x,k.y,k.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),d.push(0,0),d.push(0,0),d.push(0,0);let K=p++,te=p++,Q=p++;if(c.push(K,te,Q),a>0){{let ae=W.clone().add($).multiplyScalar(.5),de=w.clone().sub(ae).normalize(),ue=S.clone().sub(ae).normalize().add(de).normalize().multiplyScalar(-1),ge=k.clone().sub(q);Z(ae,ge,ue,_.angle())}let le,ie;{let ae=new Ae.Vector3;ps(P,ee,ae);let de=k.clone().add(Y).multiplyScalar(.5);de=gP(de,$,w);let ce=k.clone().sub(Y);[le,ie]=Z(de,ce,ae,A,Y.y)}{let ae=le,de=ae.clone().setY(0).normalize(),ce=new Ae.Vector3(0,-1,0),ue=de.clone().cross(ce);z(ae,de,ce,ue)}R.concat(ie);{let ae=_.angle(),de=Math.PI-ae,ce=w.clone();ce.y-=a/Math.sin(ae-Math.PI/2);let ue=new Ae.Vector3,ge=[];for(let Ye=0;Ye<s;Ye++){let Ie=[],ke=Math.PI/2-de*Ye/s,qt=Math.cos(ke),Te=Math.sin(ke),mt=F;for(let bt=0;bt<=Ye;bt++){let jn=Math.cos(mt),st=Math.sin(mt);V.x=qt*st,V.y=Te,V.z=qt*jn,ue.copy(ce).addScaledVector(V,a),u.push(ue.x,ue.y,ue.z),l.push(V.x,V.y,V.z),d.push(0,0),Ie.push(p++),mt+=Math.PI*2/Ye/t}ge.push(Ie)}ie.reverse(),ge.push(ie);let Ne=ge.length-1;for(let Ye=0;Ye<Ne;Ye++){let Ie=ge[Ye],ke=ge[Ye+1],qt=Ie.length-1;c.push(ke[1],Ie[0],ke[0]);for(let Te=1;Te<=qt;Te++)c.push(Ie[Te],Ie[Te-1],ke[Te]),c.push(ke[Te+1],Ie[Te],ke[Te])}}}}}this.setIndex(c),this.setAttribute("position",new Ae.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Ae.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Ae.Float32BufferAttribute(d,2));function Z(V,W,$,Y,q){let k=-Y/2,U=(Math.PI-Y)/2,B=W.clone().normalize().cross($);V.addScaledVector($,-a/Math.sin(U));let F=new Ae.Vector3,j=new Ae.Vector3,D=1,ne=p,ee=[];for(let K=0;K<=s;K++){let te=k+K/s*Y;j.set(0,0,0),j.addScaledVector(B,Math.sin(te)),j.addScaledVector($,Math.cos(te));for(let Q=0;Q<=D;Q++){let le=Q/D-.5;if(F.copy(V),F.addScaledVector(W,le),F.addScaledVector(j,a),q!=null){let ie=Math.max(0,F.y-q);F.addScaledVector(W,-ie/W.y)}u.push(F.x,F.y,F.z),l.push(j.x,j.y,j.z),d.push(0,0),Q===0&&ee.push(p),p++}}for(let K=0;K<s;K++)for(let te=0;te<D;te++){let Q=ne+te+(D+1)*K,le=Q+(D+1),ie=le+1,ae=Q+1;c.push(Q,le,ae),c.push(le,ie,ae)}return[V.clone().addScaledVector(W,.5),ee]}function z(V,W,$,Y){let q=Math.PI/2,k=v.angle()-q,U=[],B=new Ae.Vector3,F=new Ae.Vector3;for(let D=0;D<=s;D++){let ne=[],ee=D/s;for(let K=0;K<=D;K++){let Q=((D?K/D:0)-.5)*x,le=Math.cos(Q),ie=Math.sin(Q),ae=Math.atan(Math.tan(k)*le),de=(q+ae)*ee,ce=Math.cos(de),ue=Math.sin(de);B.set(0,0,0),B.addScaledVector(W,ue*le),B.addScaledVector($,ce),B.addScaledVector(Y,ue*ie),F.copy(V).addScaledVector(B,a),u.push(F.x,F.y,F.z),l.push(B.x,B.y,B.z),d.push(0,0),ne.push(p++)}U.push(ne)}let j=U.length-1;for(let D=0;D<j;D++){let ne=U[D],ee=U[D+1],K=ne.length-1;c.push(ne[0],ee[1],ee[0]);for(let te=1;te<=K;te++)c.push(ne[te-1],ne[te],ee[te]),c.push(ne[te],ee[te+1],ee[te])}}}};var fc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,b,T){return b>e&&T>t?Math.min(w*e/b,w*t/T):b>e?w*e/b:T>t?w*t/T:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=d.x,y=d.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,b=r.points.length;w<b;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let S=Qt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};var _o=require("three"),$y=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=_o.MathUtils.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:c,thetaLength:u}=n.parameters,l;return u===0?(l=new _o.BufferGeometry,l.setAttribute("position",new _o.Float32BufferAttribute([],3))):l=new _o.SphereGeometry(.5*r,o,i,a,s,c,u*_o.MathUtils.DEG2RAD),l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Yy=require("three"),Xy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new Yy.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var rn=require("three"),Ky=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new gu(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},gu=class extends rn.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],c=[],u=[],l=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(F=0,j=0,D=0)=>new rn.Vector3(F,j,D),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],S=-g,w=+g,[b,T,_]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),N=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-x,C=b.z-l;o<=p?(_.z=Math.min(P,C),_.z==C&&(_.y-=(P-C)/Math.tan(p-o))):T.z=Math.min(T.z-P-x,b.z-l),m.subVectors(b,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),M=O/Math.cos(o/2),L=m.clone().normalize().add(h.normalize()).setLength(M).add(T);m.set(0,v(o,!0),N(o,!0)),d.push([_,m.clone()]);let X=(Math.PI-o)/a;for(let F=0;F<=a;F++){let j=p+o+F*X;m.set(0,Math.sin(j)*A,Math.cos(j)*A),m.add(L),h.set(0,v(j),N(j)),d.push([m.clone(),h.clone()])}d.push([b,f(0,1,0)]);let R=Math.sin(X/2)*A*2,Z=d.length-1,z=d[0][0].distanceTo(d[1][0]),V=d[Z-1][0].distanceTo(d[Z][0]),W=z+R*a+V;d[0].push(1);for(let F=0;F<=a;F++)d[F+1].push(1-(z+F*R)/W);d[Z].push(0);let[$,Y,q]=d[0],k,U,B;for(let F=1;F<d.length;F++)[k,U,B]=d[F],s.push(S,$.y,$.z,S,k.y,k.z,w,$.y,$.z,w,$.y,$.z,S,k.y,k.z,w,k.y,k.z),c.push(0,Y.y,Y.z,0,U.y,U.z,0,Y.y,Y.z,0,Y.y,Y.z,0,U.y,U.z,0,U.y,U.z),u.push(0,q,0,B,1,q,1,q,0,B,1,B),[$,Y,q]=[k,U,B];this.setAttribute("position",new rn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new rn.Float32BufferAttribute(c,3)),this.setAttribute("uv",new rn.Float32BufferAttribute(u,2))}};var mc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let b=h*w,T=f+Math.sin(b)*d,_=m+Math.cos(b)*p;l.addPoint(l.createPoint(T,_))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*d,T=m+Math.sin(y)*p;l.addPoint(l.createPoint(b,T)),y+=h,b=f+Math.cos(y)*g,T=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(b,T)),y+=h}l.isClosed=!0;for(let w=0,b=l.points.length;w<b;w++)l.points[w].roundness=i;l.roundness=i,l.update();let S=Qt.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};var Zy=require("three"),Qy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new Zy.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Ui=require("three");var Jy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:c}=n.parameters,u=xP(r,e,t,r*.5,a,i,0,0,o,s,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function xP(n,r,e,t,o,i,a,s,c,u,l){[r,e]=[e,r],a=r/2;let d=Ui.MathUtils.clamp(o/360,0,1);if(d===0){let p=new Ui.BufferGeometry;return p.setAttribute("position",new Ui.Float32BufferAttribute([],3)),p}return d===1&&(u=0),new ds(!0,n,r,e,t,d,i,a,s,c,u,l)}var eg=require("three"),tg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let c=new eg.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var rg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,c=n.shape,u=r*.5,l=e*.5;s?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Qt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var ve=require("three");function og(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var vP=new ve.Matrix4,bP=new ve.Matrix4;function SP(n,r,e){let t=[new ve.Vector3,new ve.Vector3,new ve.Vector3],o=[new ve.Vector3,new ve.Vector3,new ve.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],c=ve.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(c)}),new ve.Matrix4().makeBasis(t[0],t[1],t[2])}var ng=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ji.create({parameters:Id}).userData.shape;return{path:n.path??vi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...zl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new xu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ve.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},xu=class extends ve.BufferGeometry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!og(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),c=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),u=Math.min(Math.max(2,c-s+1),a+2),l=[],d=[];for(let z=0;z<u;z++){let V=this.inputs.path.isClosed?(z+s)%e.length:Math.min(z+s,e.length-1);l.push(e[V].clone()),d.push(t[V].clone())}let p=(z,V,W)=>{l[z]=l[z].clone().lerp(l[V],W),d[z]=SP(d[z],d[V],W)},f=0,m=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let z=l.length-1;l[z].copy(l[0]),d[z].copy(d[0])}this._applyPathModifiers(d,f,h);let{bevel:g,bevelSides:x}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:b,infos:T,vertices:_}=this._computeShapePoints(w),v=0,N;S==="round"&&(N=new en(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=N.getAttribute("position").count);let P=0,C=0;T.sort((z,V)=>z.start-V.start),T.forEach(z=>{z.verticesStart=P,z.verticesCount=z.continuous.reduce((V,W,$)=>V+($===0||!W?2:1),0),C+=z.verticesCount,P=C});let O=C*u,A,M=0;if(this._isOpenEnded()&&S==="flat"){try{A=Nr({windingRule:Ce.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{A=cu}M=A.vertexCount}let L=O+2*M+v*2,X=O+2*M,R={positions:new Float32Array(L*3),normals:new Float32Array(L*3),uvs:new Float32Array(L*2)},Z=[];if(T.forEach(z=>{this._extrudeRegion(z,_,d,l,R,Z,this._isGeometryClosed()&&!this._isOpenEnded())}),A&&(this._closeEnd(A,O,Z,R,d[0],l[0],!1),this._closeEnd(A,O+M,Z,R,d[d.length-1],l[l.length-1],!0)),N){R.positions.set(N.getAttribute("position").array,X*3),R.normals.set(N.getAttribute("normal").array,X*3),R.uvs.set(N.getAttribute("uv").array,X*2);let z=Z.length;Z.push(...N.getIndex().array.map($=>$+X)),X+=v,R.positions.set(N.getAttribute("position").array,X*3),R.normals.set(N.getAttribute("normal").array,X*3),R.uvs.set(N.getAttribute("uv").array,X*2);let V=Z.length;Z.push(...N.getIndex().array.map($=>$+X)),this.setAttribute("position",new ve.BufferAttribute(R.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(R.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(R.uvs,2)),this.setIndex(Z);let W=vP;W.copy(d[d.length-1]).setPosition(l[l.length-1]),this.applyMatrix4OnRange(W,X,L),W.copy(d[0]).setPosition(l[0]).multiply(bP.makeScale(1,1,-1)),this.applyMatrix4OnRange(W,X-v,X),this.reverseIndicesOnRange(z,V)}else this.setAttribute("position",new ve.BufferAttribute(R.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(R.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(R.uvs,2)),this.setIndex(Z)}_extractPathPoints(){let t=ec(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,a=new ve.Vector3,s=new ve.Vector3,c=new ve.Vector3,u=new ve.Vector3,l=new ve.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(x).normalize(),b=S.clone().sub(g).normalize(),T=w.clone().add(b).normalize();c.copy(T),y===0&&(T.equals(l)||T.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(T).normalize(),v=T.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(a.copy(v),s.copy(T));let N=new ve.Matrix4().makeBasis(_,v,T);t.push(N)}let d=i?s:c,p=i?a:new ve.Vector3(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ve.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new ve.Matrix4,d=new ve.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(ve.MathUtils.lerp(a,a+s,m)*ve.MathUtils.DEG2RAD);let h=ve.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=Ce.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),s;try{s=Nr({windingRule:t,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=cs}let c;try{c=Nr({windingRule:Ce.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{c=lu}if(!s)throw new Error("error generating geometry");let u=s.elementCount;if(c){s.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];s.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=s.vertexCount;h<y;h++){let g=h*2,x=s.vertices[g+0],S=s.vertices[g+1];x<l&&(l=x),x>d&&(d=x),S<p&&(p=S),S>f&&(f=S)}let m=[];for(let h=s.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=s.elements[g+0],S=s.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let T=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let P=T-x,C=s.vertices[_*2+0],O=s.vertices[_*2+1],A=s.vertices[T*2+0],M=s.vertices[T*2+1],L=s.vertices[v*2+0],X=s.vertices[v*2+1],R=A-C,Z=M-O,z=Math.sqrt(R*R+Z*Z);R/=z,Z/=z;let V=A-L,W=M-X,$=Math.sqrt(V*V+W*W);V/=$,W/=$,b.normals[P*2+0]=-W,b.normals[P*2+1]=V;let Y=s.vertexIndices[T];if(Array.isArray(Y))b.continuous[P]=!1;else{let[q,k]=o.getCurveIndexFromVertexId(Y-1,!0);if(k>0&&k<1)b.continuous[P]=!0;else{let U=k===1?q+1:q-1;U=(U+N)%N;let B=k===1?0:1,F=o.roundedCurves[q].getTangent(k),j=o.roundedCurves[U].getTangent(B);b.continuous[P]=F.dot(j)>.95}}y&&(b.normals[P*2+0]*=-1,b.normals[P*2+1]*=-1),[_,T,v]=[T,v,v+1],v>=w&&(v-=S)}while(v!==x+1)}return{regions:[i,...a],infos:m,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,c){let u=new ve.Vector3,l=new ve.Vector3,d=new ve.Vector3,p=new ve.Vector3,f=new ve.Vector2;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;l.set(t[b+0],t[b+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,x,d,p,f),x++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let b=S===e.count-1?e.start*2:w+2;l.set(t[b+0],t[b+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(a,x,d,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,T=y+w,_=g+w,v=g+x;e.isHole?s.push(b,_,T,b,v,_):s.push(b,T,_,b,_,v),x++}}}_closeEnd(e,t,o,i,a,s,c){let u=e.vertexCount,l=new ve.Vector3(0,0,c?-1:1).applyMatrix4(a),d=new ve.Vector3,p=new ve.Vector2;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+m,d,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new ve.Matrix3().getNormalMatrix(e).elements,s,c,u,l,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,m=p.array,h=d.itemSize;for(let y=t*h,g=o*h;y<g;y+=h){if(y===t)debugger;s=f[y+0],c=f[y+1],u=f[y+2],l=1/(i[3]*s+i[7]*c+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*c+i[8]*u+i[12])*l,f[y+1]=(i[1]*s+i[5]*c+i[9]*u+i[13])*l,f[y+2]=(i[2]*s+i[6]*c+i[10]*u+i[14])*l,s=m[y+0],c=m[y+1],u=m[y+2],m[y+0]=a[0]*s+a[3]*c+a[6]*u,m[y+1]=a[1]*s+a[4]*c+a[7]*u,m[y+2]=a[2]*s+a[5]*c+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),c=o.getX(i+2);o.setXYZ(i,c,s,a)}o.needsUpdate=!0}}};var Tn=require("three"),ig=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ag(){let n=new Tn.BufferGeometry;return n.setAttribute("position",new Tn.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Tn.BufferAttribute(new Uint16Array([]),1)),n}var wP=ag().attributes,TP=12,_P=1,Hi=class extends Tn.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,wP),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=$l.getDisplayedValue(u),p=l===2?d.toUpperCase():l===3?d.toLowerCase():d,f=PP(e,t,p),{shapes:m,charWidths:h,charCoords:y}=t.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=m.map(T=>new Ee().fromShape(T,!0));this.vectorShapes=S;let w=S.map(T=>Qt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:c,extrudeBevelSize:s,windingRule:a<=0?Ce.NONZERO:Ce.ODD,subdivisions:this.isLowResolution&&a>0?_P:TP}})),b=w.length?(0,ig.mergeBufferGeometries)(w):ag();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=h,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([T,_])=>{this.setAttribute(T,_)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Yt(new Tn.BufferGeometry,Hi.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function PP(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
1
|
+
"use strict";var px=Object.create;var Us=Object.defineProperty;var fx=Object.getOwnPropertyDescriptor;var mx=Object.getOwnPropertyNames;var hx=Object.getPrototypeOf,yx=Object.prototype.hasOwnProperty;var kn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),dp=(n,r)=>{for(var e in r)Us(n,e,{get:r[e],enumerable:!0})},up=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of mx(r))!yx.call(n,o)&&o!==e&&Us(n,o,{get:()=>r[o],enumerable:!(t=fx(r,o))||t.enumerable});return n};var ja=(n,r,e)=>(e=n!=null?px(hx(n)):{},up(r||!n||!n.__esModule?Us(e,"default",{value:n,enumerable:!0}):e,n)),gx=n=>up(Us({},"__esModule",{value:!0}),n);var $h=kn((zd,qh)=>{(function(n,r){typeof zd=="object"?qh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(zd,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var c=0;c<e.length;c++)t-=s(e[c]),t<0&&(t+=1),o-=s(e[c]),o<0&&(o+=1),i-=s(e[c]),i<0&&(i+=1);s=null;var u=function(){var l=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=l-(a=l|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,a]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,a=+l[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Jh=kn((Jl,Qh)=>{(function(n,r){typeof Jl=="object"&&typeof Qh<"u"?r(Jl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Jl,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,c,u,l,d,p,f,m,h,y,g,x=r[0].length,S=r.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],T=[],_=e==="f"?S:x,v=h=p=0;v<S;v++)b[v]=new Array(_).fill(0);for(v=0;v<x;v++)T[v]=new Array(x).fill(0);var N,P=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=r[v][a];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,a=v;a<S;a++)m+=Math.pow(b[a][v],2);if(m<i)p=0;else for(f=(d=b[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v]=d-p,a=c;a<x;a++){for(m=0,s=v;s<S;s++)m+=b[s][v]*b[s][a];for(d=m/f,s=v;s<S;s++)b[s][a]=b[s][a]+d*b[s][v]}for(P[v]=p,m=0,a=c;a<x;a++)m+=Math.pow(b[v][a],2);if(m<i)p=0;else{for(f=(d=b[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v+1]=d-p,a=c;a<x;a++)w[a]=b[v][a]/f;for(a=c;a<S;a++){for(m=0,s=c;s<x;s++)m+=b[a][s]*b[v][s];for(s=c;s<x;s++)b[a][s]=b[a][s]+m*w[s]}}h<(y=Math.abs(P[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=c;a<x;a++)T[a][v]=b[v][a]/f;for(a=c;a<x;a++){for(m=0,s=c;s<x;s++)m+=b[v][s]*T[s][a];for(s=c;s<x;s++)T[s][a]=T[s][a]+m*T[s][v]}}for(a=c;a<x;a++)T[v][a]=0,T[a][v]=0;T[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<S;v++){for(a=x;a<S;a++)b[v][a]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=P[v],a=c;a<_;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=c;a<_;a++){for(m=0,s=c;s<S;s++)m+=b[s][v]*b[s][a];for(d=m/f,s=v;s<S;s++)b[s][a]=b[s][a]+d*b[s][v]}for(a=v;a<S;a++)b[a][v]=b[a][v]/p}else for(a=v;a<S;a++)b[a][v]=0;b[v][v]=b[v][v]+1}}for(o*=h,s=x-1;0<=s;s--)for(var C=0;C<50;C++){for(N=!1,c=s;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(P[c-1])<=o)break}if(!N){for(l=0,u=c-(m=1),v=c;v<s+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=P[v],P[v]=Math.sqrt(d*d+p*p),l=p/(f=P[v]),m=-d/f,e)for(a=0;a<S;a++)y=b[a][u],g=b[a][v],b[a][u]=y*l+g*m,b[a][v]=-y*m+g*l}if(g=P[s],c===s){if(g<0&&(P[s]=-g,t))for(a=0;a<x;a++)T[a][s]=-T[a][s];break}for(h=P[c],d=(((y=P[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,v=c+(m=l=1);v<s+1;v++){if(p=w[v],y=P[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(a=0;a<x;a++)h=T[a][v-1],g=T[a][v],T[a][v-1]=h*l+g*m,T[a][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(P[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*l+g*m,b[a][v]=-y*m+g*l}w[c]=0,w[s]=d,P[s]=h}for(v=0;v<x;v++)P[v]<o&&(P[v]=0);return{u:b,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Ny=kn((nu,iu)=>{(function(n,r){typeof nu=="object"&&typeof iu<"u"?iu.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(nu,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var c=t-1>>1,u=i[c];if(a(s,u)>=0)break;i[t]=u,t=c}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,c=i[t];t<s;){var u=(t<<1)+1,l=i[u],d=u+1;if(d<this.length&&a(i[d],l)<0&&(u=d,l=i[d]),a(l,c)>=0)break;i[t]=l,t=u}i[t]=c};function r(e,t){return e<t?-1:e>t?1:0}return n})});var My=kn((bz,au)=>{"use strict";var nc=Ny();nc.default&&(nc=nc.default);au.exports=Iy;au.exports.default=Iy;function Iy(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var c=n[0][s];(!s||c[0]<t)&&(t=c[0]),(!s||c[1]<o)&&(o=c[1]),(!s||c[0]>i)&&(i=c[0]),(!s||c[1]>a)&&(a=c[1])}var u=i-t,l=a-o,d=Math.min(u,l),p=d/2;if(d===0){var f=[t,o];return f.distance=0,f}for(var m=new nc(void 0,aP),h=t;h<i;h+=d)for(var y=o;y<a;y+=d)m.push(new Jo(h+p,y+p,p,n));var g=lP(n),x=new Jo(t+u/2,o+l/2,0,n);x.d>g.d&&(g=x);for(var S=m.length;m.length;){var w=m.pop();w.d>g.d&&(g=w,e&&console.log("found best %d after %d probes",Math.round(1e4*w.d)/1e4,S)),!(w.max-g.d<=r)&&(p=w.h/2,m.push(new Jo(w.x-p,w.y-p,p,n)),m.push(new Jo(w.x+p,w.y-p,p,n)),m.push(new Jo(w.x-p,w.y+p,p,n)),m.push(new Jo(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function aP(n,r){return r.max-n.max}function Jo(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=sP(n,r,t),this.max=this.d+this.h*Math.SQRT2}function sP(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,c=a.length,u=c-1;s<c;u=s++){var l=a[s],d=a[u];l[1]>r!=d[1]>r&&n<(d[0]-l[0])*(r-l[1])/(d[1]-l[1])+l[0]&&(t=!t),o=Math.min(o,cP(n,r,l,d))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function lP(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var c=o[i],u=o[s],l=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*l,t+=(c[1]+u[1])*l,r+=l*3}return r===0?new Jo(o[0][0],o[0][1],0,n):new Jo(e/r,t/r,0,n)}function cP(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var c=((n-o)*a+(r-i)*s)/(a*a+s*s);c>1?(o=t[0],i=t[1]):c>0&&(o+=a*c,i+=s*c)}return a=n-o,s=r-i,a*a+s*s}});var kg=kn(Lc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var S=0;S<l._howls.length;S++)l._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),S=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=S*1e3/Math.abs(y._rate),b=p._sprite[l][0]/1e3,T=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=b,y._stop=T,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=T){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var P=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(M){p._emit("playerror",y._id,M)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var C=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||C)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,S=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,S)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var T=(Date.now()-b)/f;b=Date.now(),g+=x*T,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),S=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=S*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var S=function(){l._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);s(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}s(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},a(h)}},a=function(l){try{l.send()}catch{l.onerror()}},s=function(l,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Lc<"u"&&(Lc.Howler=r,Lc.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(r,e,t,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var c=s._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,a=typeof a!="number"?c[5]:a,typeof r=="number")s._orientation=[r,e,t,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(r,e,t,o,i,a);else return c;return s},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),a=0;a<i.length;a++){var s=t._soundById(i[a]);if(s)if(typeof r=="number")s._stereo=r,s._pos=[r,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&n(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(r,0,0):s._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",s._id);else return s._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var c=i._soundById(a[s]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var c=i._soundById(a[s]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var a=r._getSoundIds(o),s=0;s<a.length;s++)if(i=r._soundById(a[s]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var tx=kn((uZ,ex)=>{ex.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});var $O={};dp($O,{default:()=>td});module.exports=gx($O);var rd=require("three");function pp(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Yt(n,r){return Object.setPrototypeOf(n,r),n}function Hs(n){return Array.isArray(n)?n:[n]}function fp(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var xx=typeof global=="object"&&global&&global.Object===Object&&global,Ws=xx;var vx=typeof self=="object"&&self&&self.Object===Object&&self,bx=Ws||vx||Function("return this")(),pt=bx;var Sx=pt.Symbol,St=Sx;var mp=Object.prototype,wx=mp.hasOwnProperty,Tx=mp.toString,Fa=St?St.toStringTag:void 0;function _x(n){var r=wx.call(n,Fa),e=n[Fa];try{n[Fa]=void 0;var t=!0}catch{}var o=Tx.call(n);return t&&(r?n[Fa]=e:delete n[Fa]),o}var hp=_x;var Px=Object.prototype,Ox=Px.toString;function Ax(n){return Ox.call(n)}var yp=Ax;var Cx="[object Null]",Nx="[object Undefined]",gp=St?St.toStringTag:void 0;function Ix(n){return n==null?n===void 0?Nx:Cx:gp&&gp in Object(n)?hp(n):yp(n)}var ir=Ix;function Mx(n){return n!=null&&typeof n=="object"}var Nt=Mx;var Ex="[object Symbol]";function Lx(n){return typeof n=="symbol"||Nt(n)&&ir(n)==Ex}var Un=Lx;function Dx(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var qs=Dx;var Bx=Array.isArray,rt=Bx;var Rx=1/0,xp=St?St.prototype:void 0,vp=xp?xp.toString:void 0;function bp(n){if(typeof n=="string")return n;if(rt(n))return qs(n,bp)+"";if(Un(n))return vp?vp.call(n):"";var r=n+"";return r=="0"&&1/n==-Rx?"-0":r}var Sp=bp;function Gx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var ar=Gx;function Vx(n){return n}var wp=Vx;var zx="[object AsyncFunction]",jx="[object Function]",Fx="[object GeneratorFunction]",kx="[object Proxy]";function Ux(n){if(!ar(n))return!1;var r=ir(n);return r==jx||r==Fx||r==zx||r==kx}var $s=Ux;var Hx=pt["__core-js_shared__"],Ys=Hx;var Tp=function(){var n=/[^.]+$/.exec(Ys&&Ys.keys&&Ys.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wx(n){return!!Tp&&Tp in n}var _p=Wx;var qx=Function.prototype,$x=qx.toString;function Yx(n){if(n!=null){try{return $x.call(n)}catch{}try{return n+""}catch{}}return""}var po=Yx;var Xx=/[\\^$.*+?()[\]{}|]/g,Kx=/^\[object .+?Constructor\]$/,Zx=Function.prototype,Qx=Object.prototype,Jx=Zx.toString,ev=Qx.hasOwnProperty,tv=RegExp("^"+Jx.call(ev).replace(Xx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rv(n){if(!ar(n)||_p(n))return!1;var r=$s(n)?tv:Kx;return r.test(po(n))}var Pp=rv;function ov(n,r){return n?.[r]}var Op=ov;function nv(n,r){var e=Op(n,r);return Pp(e)?e:void 0}var Xt=nv;var iv=Xt(pt,"WeakMap"),Xs=iv;var Ap=Object.create,av=function(){function n(){}return function(r){if(!ar(r))return{};if(Ap)return Ap(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Cp=av;function sv(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Np=sv;function lv(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Ip=lv;var cv=800,dv=16,uv=Date.now;function pv(n){var r=0,e=0;return function(){var t=uv(),o=dv-(t-e);if(e=t,o>0){if(++r>=cv)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Mp=pv;function fv(n){return function(){return n}}var Ep=fv;var mv=function(){try{var n=Xt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Hn=mv;var hv=Hn?function(n,r){return Hn(n,"toString",{configurable:!0,enumerable:!1,value:Ep(r),writable:!0})}:wp,Lp=hv;var yv=Mp(Lp),Dp=yv;function gv(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Bp=gv;var xv=9007199254740991,vv=/^(?:0|[1-9]\d*)$/;function bv(n,r){var e=typeof n;return r=r??xv,!!r&&(e=="number"||e!="symbol"&&vv.test(n))&&n>-1&&n%1==0&&n<r}var Wn=bv;function Sv(n,r,e){r=="__proto__"&&Hn?Hn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Ks=Sv;function wv(n,r){return n===r||n!==n&&r!==r}var qn=wv;var Tv=Object.prototype,_v=Tv.hasOwnProperty;function Pv(n,r,e){var t=n[r];(!(_v.call(n,r)&&qn(t,e))||e===void 0&&!(r in n))&&Ks(n,r,e)}var $n=Pv;function Ov(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],c=t?t(e[s],n[s],s,e,n):void 0;c===void 0&&(c=n[s]),o?Ks(e,s,c):$n(e,s,c)}return e}var jr=Ov;var Rp=Math.max;function Av(n,r,e){return r=Rp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Rp(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Np(n,this,s)}}var Gp=Av;var Cv=9007199254740991;function Nv(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Cv}var Yn=Nv;function Iv(n){return n!=null&&Yn(n.length)&&!$s(n)}var Zs=Iv;var Mv=Object.prototype;function Ev(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Mv;return n===e}var Xn=Ev;function Lv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Vp=Lv;var Dv="[object Arguments]";function Bv(n){return Nt(n)&&ir(n)==Dv}var nd=Bv;var zp=Object.prototype,Rv=zp.hasOwnProperty,Gv=zp.propertyIsEnumerable,Vv=nd(function(){return arguments}())?nd:function(n){return Nt(n)&&Rv.call(n,"callee")&&!Gv.call(n,"callee")},Kn=Vv;function zv(){return!1}var jp=zv;var Up=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fp=Up&&typeof module=="object"&&module&&!module.nodeType&&module,jv=Fp&&Fp.exports===Up,kp=jv?pt.Buffer:void 0,Fv=kp?kp.isBuffer:void 0,kv=Fv||jp,pn=kv;var Uv="[object Arguments]",Hv="[object Array]",Wv="[object Boolean]",qv="[object Date]",$v="[object Error]",Yv="[object Function]",Xv="[object Map]",Kv="[object Number]",Zv="[object Object]",Qv="[object RegExp]",Jv="[object Set]",eb="[object String]",tb="[object WeakMap]",rb="[object ArrayBuffer]",ob="[object DataView]",nb="[object Float32Array]",ib="[object Float64Array]",ab="[object Int8Array]",sb="[object Int16Array]",lb="[object Int32Array]",cb="[object Uint8Array]",db="[object Uint8ClampedArray]",ub="[object Uint16Array]",pb="[object Uint32Array]",Xe={};Xe[nb]=Xe[ib]=Xe[ab]=Xe[sb]=Xe[lb]=Xe[cb]=Xe[db]=Xe[ub]=Xe[pb]=!0;Xe[Uv]=Xe[Hv]=Xe[rb]=Xe[Wv]=Xe[ob]=Xe[qv]=Xe[$v]=Xe[Yv]=Xe[Xv]=Xe[Kv]=Xe[Zv]=Xe[Qv]=Xe[Jv]=Xe[eb]=Xe[tb]=!1;function fb(n){return Nt(n)&&Yn(n.length)&&!!Xe[ir(n)]}var Hp=fb;function mb(n){return function(r){return n(r)}}var Zn=mb;var Wp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ka=Wp&&typeof module=="object"&&module&&!module.nodeType&&module,hb=ka&&ka.exports===Wp,id=hb&&Ws.process,yb=function(){try{var n=ka&&ka.require&&ka.require("util").types;return n||id&&id.binding&&id.binding("util")}catch{}}(),fo=yb;var qp=fo&&fo.isTypedArray,gb=qp?Zn(qp):Hp,Qs=gb;var xb=Object.prototype,vb=xb.hasOwnProperty;function bb(n,r){var e=rt(n),t=!e&&Kn(n),o=!e&&!t&&pn(n),i=!e&&!t&&!o&&Qs(n),a=e||t||o||i,s=a?Vp(n.length,String):[],c=s.length;for(var u in n)(r||vb.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Wn(u,c)))&&s.push(u);return s}var Js=bb;function Sb(n,r){return function(e){return n(r(e))}}var el=Sb;var wb=el(Object.keys,Object),$p=wb;var Tb=Object.prototype,_b=Tb.hasOwnProperty;function Pb(n){if(!Xn(n))return $p(n);var r=[];for(var e in Object(n))_b.call(n,e)&&e!="constructor"&&r.push(e);return r}var Yp=Pb;function Ob(n){return Zs(n)?Js(n):Yp(n)}var Qn=Ob;function Ab(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Xp=Ab;var Cb=Object.prototype,Nb=Cb.hasOwnProperty;function Ib(n){if(!ar(n))return Xp(n);var r=Xn(n),e=[];for(var t in n)t=="constructor"&&(r||!Nb.call(n,t))||e.push(t);return e}var Kp=Ib;function Mb(n){return Zs(n)?Js(n,!0):Kp(n)}var Jn=Mb;var Eb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lb=/^\w*$/;function Db(n,r){if(rt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Un(n)?!0:Lb.test(n)||!Eb.test(n)||r!=null&&n in Object(r)}var Zp=Db;var Bb=Xt(Object,"create"),mo=Bb;function Rb(){this.__data__=mo?mo(null):{},this.size=0}var Qp=Rb;function Gb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Jp=Gb;var Vb="__lodash_hash_undefined__",zb=Object.prototype,jb=zb.hasOwnProperty;function Fb(n){var r=this.__data__;if(mo){var e=r[n];return e===Vb?void 0:e}return jb.call(r,n)?r[n]:void 0}var ef=Fb;var kb=Object.prototype,Ub=kb.hasOwnProperty;function Hb(n){var r=this.__data__;return mo?r[n]!==void 0:Ub.call(r,n)}var tf=Hb;var Wb="__lodash_hash_undefined__";function qb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=mo&&r===void 0?Wb:r,this}var rf=qb;function ei(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}ei.prototype.clear=Qp;ei.prototype.delete=Jp;ei.prototype.get=ef;ei.prototype.has=tf;ei.prototype.set=rf;var ad=ei;function $b(){this.__data__=[],this.size=0}var of=$b;function Yb(n,r){for(var e=n.length;e--;)if(qn(n[e][0],r))return e;return-1}var Io=Yb;var Xb=Array.prototype,Kb=Xb.splice;function Zb(n){var r=this.__data__,e=Io(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Kb.call(r,e,1),--this.size,!0}var nf=Zb;function Qb(n){var r=this.__data__,e=Io(r,n);return e<0?void 0:r[e][1]}var af=Qb;function Jb(n){return Io(this.__data__,n)>-1}var sf=Jb;function eS(n,r){var e=this.__data__,t=Io(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var lf=eS;function ti(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}ti.prototype.clear=of;ti.prototype.delete=nf;ti.prototype.get=af;ti.prototype.has=sf;ti.prototype.set=lf;var Mo=ti;var tS=Xt(pt,"Map"),Eo=tS;function rS(){this.size=0,this.__data__={hash:new ad,map:new(Eo||Mo),string:new ad}}var cf=rS;function oS(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var df=oS;function nS(n,r){var e=n.__data__;return df(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Lo=nS;function iS(n){var r=Lo(this,n).delete(n);return this.size-=r?1:0,r}var uf=iS;function aS(n){return Lo(this,n).get(n)}var pf=aS;function sS(n){return Lo(this,n).has(n)}var ff=sS;function lS(n,r){var e=Lo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var mf=lS;function ri(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}ri.prototype.clear=cf;ri.prototype.delete=uf;ri.prototype.get=pf;ri.prototype.has=ff;ri.prototype.set=mf;var fn=ri;var cS="Expected a function";function sd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(cS);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(sd.Cache||fn),e}sd.Cache=fn;var hf=sd;var dS=500;function uS(n){var r=hf(n,function(t){return e.size===dS&&e.clear(),t}),e=r.cache;return r}var yf=uS;var pS=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fS=/\\(\\)?/g,mS=yf(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(pS,function(e,t,o,i){r.push(o?i.replace(fS,"$1"):t||e)}),r}),gf=mS;function hS(n){return n==null?"":Sp(n)}var xf=hS;function yS(n,r){return rt(n)?n:Zp(n,r)?[n]:gf(xf(n))}var pr=yS;var gS=1/0;function xS(n){if(typeof n=="string"||Un(n))return n;var r=n+"";return r=="0"&&1/n==-gS?"-0":r}var Do=xS;function vS(n,r){r=pr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Do(r[e++])];return e&&e==t?n:void 0}var tl=vS;function bS(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var oi=bS;var vf=St?St.isConcatSpreadable:void 0;function SS(n){return rt(n)||Kn(n)||!!(vf&&n&&n[vf])}var bf=SS;function Sf(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=bf),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Sf(s,r-1,e,t,o):oi(o,s):t||(o[o.length]=s)}return o}var wf=Sf;function wS(n){var r=n==null?0:n.length;return r?wf(n,1):[]}var Tf=wS;function TS(n){return Dp(Gp(n,void 0,Tf),n+"")}var rl=TS;var _S=el(Object.getPrototypeOf,Object),ni=_S;var PS="[object Object]",OS=Function.prototype,AS=Object.prototype,_f=OS.toString,CS=AS.hasOwnProperty,NS=_f.call(Object);function IS(n){if(!Nt(n)||ir(n)!=PS)return!1;var r=ni(n);if(r===null)return!0;var e=CS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&_f.call(e)==NS}var Pf=IS;function MS(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Of=MS;function ES(){this.__data__=new Mo,this.size=0}var Af=ES;function LS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Cf=LS;function DS(n){return this.__data__.get(n)}var Nf=DS;function BS(n){return this.__data__.has(n)}var If=BS;var RS=200;function GS(n,r){var e=this.__data__;if(e instanceof Mo){var t=e.__data__;if(!Eo||t.length<RS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new fn(t)}return e.set(n,r),this.size=e.size,this}var Mf=GS;function ii(n){var r=this.__data__=new Mo(n);this.size=r.size}ii.prototype.clear=Af;ii.prototype.delete=Cf;ii.prototype.get=Nf;ii.prototype.has=If;ii.prototype.set=Mf;var ai=ii;function VS(n,r){return n&&jr(r,Qn(r),n)}var Ef=VS;function zS(n,r){return n&&jr(r,Jn(r),n)}var Lf=zS;var Gf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Df=Gf&&typeof module=="object"&&module&&!module.nodeType&&module,jS=Df&&Df.exports===Gf,Bf=jS?pt.Buffer:void 0,Rf=Bf?Bf.allocUnsafe:void 0;function FS(n,r){if(r)return n.slice();var e=n.length,t=Rf?Rf(e):new n.constructor(e);return n.copy(t),t}var Vf=FS;function kS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var zf=kS;function US(){return[]}var ol=US;var HS=Object.prototype,WS=HS.propertyIsEnumerable,jf=Object.getOwnPropertySymbols,qS=jf?function(n){return n==null?[]:(n=Object(n),zf(jf(n),function(r){return WS.call(n,r)}))}:ol,si=qS;function $S(n,r){return jr(n,si(n),r)}var Ff=$S;var YS=Object.getOwnPropertySymbols,XS=YS?function(n){for(var r=[];n;)oi(r,si(n)),n=ni(n);return r}:ol,nl=XS;function KS(n,r){return jr(n,nl(n),r)}var kf=KS;function ZS(n,r,e){var t=r(n);return rt(n)?t:oi(t,e(n))}var il=ZS;function QS(n){return il(n,Qn,si)}var Ua=QS;function JS(n){return il(n,Jn,nl)}var al=JS;var ew=Xt(pt,"DataView"),sl=ew;var tw=Xt(pt,"Promise"),ll=tw;var rw=Xt(pt,"Set"),cl=rw;var Uf="[object Map]",ow="[object Object]",Hf="[object Promise]",Wf="[object Set]",qf="[object WeakMap]",$f="[object DataView]",nw=po(sl),iw=po(Eo),aw=po(ll),sw=po(cl),lw=po(Xs),mn=ir;(sl&&mn(new sl(new ArrayBuffer(1)))!=$f||Eo&&mn(new Eo)!=Uf||ll&&mn(ll.resolve())!=Hf||cl&&mn(new cl)!=Wf||Xs&&mn(new Xs)!=qf)&&(mn=function(n){var r=ir(n),e=r==ow?n.constructor:void 0,t=e?po(e):"";if(t)switch(t){case nw:return $f;case iw:return Uf;case aw:return Hf;case sw:return Wf;case lw:return qf}return r});var ho=mn;var cw=Object.prototype,dw=cw.hasOwnProperty;function uw(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&dw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Yf=uw;var pw=pt.Uint8Array,li=pw;function fw(n){var r=new n.constructor(n.byteLength);return new li(r).set(new li(n)),r}var ci=fw;function mw(n,r){var e=r?ci(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Xf=mw;var hw=/\w*$/;function yw(n){var r=new n.constructor(n.source,hw.exec(n));return r.lastIndex=n.lastIndex,r}var Kf=yw;var Zf=St?St.prototype:void 0,Qf=Zf?Zf.valueOf:void 0;function gw(n){return Qf?Object(Qf.call(n)):{}}var Jf=gw;function xw(n,r){var e=r?ci(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var em=xw;var vw="[object Boolean]",bw="[object Date]",Sw="[object Map]",ww="[object Number]",Tw="[object RegExp]",_w="[object Set]",Pw="[object String]",Ow="[object Symbol]",Aw="[object ArrayBuffer]",Cw="[object DataView]",Nw="[object Float32Array]",Iw="[object Float64Array]",Mw="[object Int8Array]",Ew="[object Int16Array]",Lw="[object Int32Array]",Dw="[object Uint8Array]",Bw="[object Uint8ClampedArray]",Rw="[object Uint16Array]",Gw="[object Uint32Array]";function Vw(n,r,e){var t=n.constructor;switch(r){case Aw:return ci(n);case vw:case bw:return new t(+n);case Cw:return Xf(n,e);case Nw:case Iw:case Mw:case Ew:case Lw:case Dw:case Bw:case Rw:case Gw:return em(n,e);case Sw:return new t;case ww:case Pw:return new t(n);case Tw:return Kf(n);case _w:return new t;case Ow:return Jf(n)}}var tm=Vw;function zw(n){return typeof n.constructor=="function"&&!Xn(n)?Cp(ni(n)):{}}var rm=zw;var jw="[object Map]";function Fw(n){return Nt(n)&&ho(n)==jw}var om=Fw;var nm=fo&&fo.isMap,kw=nm?Zn(nm):om,im=kw;var Uw="[object Set]";function Hw(n){return Nt(n)&&ho(n)==Uw}var am=Hw;var sm=fo&&fo.isSet,Ww=sm?Zn(sm):am,lm=Ww;var qw=1,$w=2,Yw=4,cm="[object Arguments]",Xw="[object Array]",Kw="[object Boolean]",Zw="[object Date]",Qw="[object Error]",dm="[object Function]",Jw="[object GeneratorFunction]",e1="[object Map]",t1="[object Number]",um="[object Object]",r1="[object RegExp]",o1="[object Set]",n1="[object String]",i1="[object Symbol]",a1="[object WeakMap]",s1="[object ArrayBuffer]",l1="[object DataView]",c1="[object Float32Array]",d1="[object Float64Array]",u1="[object Int8Array]",p1="[object Int16Array]",f1="[object Int32Array]",m1="[object Uint8Array]",h1="[object Uint8ClampedArray]",y1="[object Uint16Array]",g1="[object Uint32Array]",qe={};qe[cm]=qe[Xw]=qe[s1]=qe[l1]=qe[Kw]=qe[Zw]=qe[c1]=qe[d1]=qe[u1]=qe[p1]=qe[f1]=qe[e1]=qe[t1]=qe[um]=qe[r1]=qe[o1]=qe[n1]=qe[i1]=qe[m1]=qe[h1]=qe[y1]=qe[g1]=!0;qe[Qw]=qe[dm]=qe[a1]=!1;function dl(n,r,e,t,o,i){var a,s=r&qw,c=r&$w,u=r&Yw;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!ar(n))return n;var l=rt(n);if(l){if(a=Yf(n),!s)return Ip(n,a)}else{var d=ho(n),p=d==dm||d==Jw;if(pn(n))return Vf(n,s);if(d==um||d==cm||p&&!o){if(a=c||p?{}:rm(n),!s)return c?kf(n,Lf(a,n)):Ff(n,Ef(a,n))}else{if(!qe[d])return o?n:{};a=tm(n,d,s)}}i||(i=new ai);var f=i.get(n);if(f)return f;i.set(n,a),lm(n)?n.forEach(function(y){a.add(dl(y,r,e,y,n,i))}):im(n)&&n.forEach(function(y,g){a.set(g,dl(y,r,e,g,n,i))});var m=u?c?al:Ua:c?Jn:Qn,h=l?void 0:m(n);return Bp(h||n,function(y,g){h&&(g=y,y=n[g]),$n(a,g,dl(y,r,e,g,n,i))}),a}var ul=dl;var x1=1,v1=4;function b1(n){return ul(n,x1|v1)}var yo=b1;var S1="__lodash_hash_undefined__";function w1(n){return this.__data__.set(n,S1),this}var pm=w1;function T1(n){return this.__data__.has(n)}var fm=T1;function pl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new fn;++r<e;)this.add(n[r])}pl.prototype.add=pl.prototype.push=pm;pl.prototype.has=fm;var mm=pl;function _1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var hm=_1;function P1(n,r){return n.has(r)}var ym=P1;var O1=1,A1=2;function C1(n,r,e,t,o,i){var a=e&O1,s=n.length,c=r.length;if(s!=c&&!(a&&c>s))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&A1?new mm:void 0;for(i.set(n,r),i.set(r,n);++d<s;){var m=n[d],h=r[d];if(t)var y=a?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!hm(r,function(g,x){if(!ym(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var fl=C1;function N1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var gm=N1;function I1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var xm=I1;var M1=1,E1=2,L1="[object Boolean]",D1="[object Date]",B1="[object Error]",R1="[object Map]",G1="[object Number]",V1="[object RegExp]",z1="[object Set]",j1="[object String]",F1="[object Symbol]",k1="[object ArrayBuffer]",U1="[object DataView]",vm=St?St.prototype:void 0,ld=vm?vm.valueOf:void 0;function H1(n,r,e,t,o,i,a){switch(e){case U1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case k1:return!(n.byteLength!=r.byteLength||!i(new li(n),new li(r)));case L1:case D1:case G1:return qn(+n,+r);case B1:return n.name==r.name&&n.message==r.message;case V1:case j1:return n==r+"";case R1:var s=gm;case z1:var c=t&M1;if(s||(s=xm),n.size!=r.size&&!c)return!1;var u=a.get(n);if(u)return u==r;t|=E1,a.set(n,r);var l=fl(s(n),s(r),t,o,i,a);return a.delete(n),l;case F1:if(ld)return ld.call(n)==ld.call(r)}return!1}var bm=H1;var W1=1,q1=Object.prototype,$1=q1.hasOwnProperty;function Y1(n,r,e,t,o,i){var a=e&W1,s=Ua(n),c=s.length,u=Ua(r),l=u.length;if(c!=l&&!a)return!1;for(var d=c;d--;){var p=s[d];if(!(a?p in r:$1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=a;++d<c;){p=s[d];var g=n[p],x=r[p];if(t)var S=a?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(S===void 0?g===x||o(g,x,e,t,i):S)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,b=r.constructor;w!=b&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var Sm=Y1;var X1=1,wm="[object Arguments]",Tm="[object Array]",ml="[object Object]",K1=Object.prototype,_m=K1.hasOwnProperty;function Z1(n,r,e,t,o,i){var a=rt(n),s=rt(r),c=a?Tm:ho(n),u=s?Tm:ho(r);c=c==wm?ml:c,u=u==wm?ml:u;var l=c==ml,d=u==ml,p=c==u;if(p&&pn(n)){if(!pn(r))return!1;a=!0,l=!1}if(p&&!l)return i||(i=new ai),a||Qs(n)?fl(n,r,e,t,o,i):bm(n,r,c,e,t,o,i);if(!(e&X1)){var f=l&&_m.call(n,"__wrapped__"),m=d&&_m.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new ai),o(h,y,e,t,i)}}return p?(i||(i=new ai),Sm(n,r,e,t,o,i)):!1}var Pm=Z1;function Om(n,r,e,t,o){return n===r?!0:n==null||r==null||!Nt(n)&&!Nt(r)?n!==n&&r!==r:Pm(n,r,e,t,Om,o)}var Am=Om;function Q1(n,r){return n!=null&&r in Object(n)}var Cm=Q1;function J1(n,r,e){r=pr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Do(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Yn(o)&&Wn(a,o)&&(rt(n)||Kn(n)))}var Nm=J1;function eT(n,r){return n!=null&&Nm(n,r,Cm)}var Im=eT;function tT(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Mm=tT;function rT(n,r){return r.length<2?n:tl(n,Of(r,0,-1))}var Em=rT;function oT(n,r){return Am(n,r)}var cd=oT;function nT(n,r){return r=pr(r,n),n=Em(n,r),n==null||delete n[Do(Mm(r))]}var Lm=nT;function iT(n){return Pf(n)?void 0:n}var Dm=iT;var aT=1,sT=2,lT=4,cT=rl(function(n,r){var e={};if(n==null)return e;var t=!1;r=qs(r,function(i){return i=pr(i,n),t||(t=i.length>1),i}),jr(n,al(n),e),t&&(e=ul(e,aT|sT|lT,Dm));for(var o=r.length;o--;)Lm(e,r[o]);return e}),di=cT;function dT(n,r,e,t){if(!ar(n))return n;r=pr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var c=Do(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=a){var l=s[c];u=t?t(l,c,s):void 0,u===void 0&&(u=ar(l)?l:Wn(r[o+1])?[]:{})}$n(s,c,u),s=s[c]}return n}var Bm=dT;function uT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=tl(n,a);e(s,a)&&Bm(i,pr(a,n),s)}return i}var Rm=uT;function pT(n,r){return Rm(n,r,function(e,t){return Im(n,t)})}var Gm=pT;var fT=rl(function(n,r){return n==null?{}:Gm(n,r)}),Tr=fT;var me=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,me.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,me.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,me.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ha(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Ha(t)}return Object.freeze(n)}function Vm(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var ui=class extends Error{};function hl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Fr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function pi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function zm(){return typeof process<"u"}function jm(n,r){for(let e of n)r(e.id,e.data)!==!0&&jm(e.children,r)}function Fm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Fm(e,r)}var Qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ha(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Fm(o,t)}}traverse(e){jm(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(l=>l.id===e);if(s<0)throw new Error("not expected");let c=a[s];return a=[...a],a[s]={...c,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,Qe.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:a,children:s};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(u=>u.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new ui("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,c=this.childrenArray(a),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(a,c);a=t,c=d.childrenArray(a);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(a,c),{data:d,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Vm(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Fr(0,o,o);{let a=i[0].fi;return Fr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(c=>c.fi>a.fi);if(s===void 0){let c=i[i.length-1].fi;return Fr(c,c+o,o)}else return Fr(a.fi,s.fi,o)}}};var fi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=a[u],a[u]=o[c],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let c of Object.keys(o)){i[c]=a[c];let u=o[c];u===void 0?delete a[c]:a[c]=u,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(fi||(fi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ha(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ye.prototype);let t=e;return zm()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((u,l)=>u.fi-l.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(l=>l.id===o);if(a===-1)return null;let s=i[a].fi,c={...i[a],fi:t};return i[a]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Fr(0,t,t);{let i=o[0].fi;return Fr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Fr(s,s+t,t)}else return Fr(i.fi,a.fi,t)}}};function mi(n){return n&&typeof n=="object"&&n instanceof We}var We=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!mi(t))return null;o+=1}t=t?hl(t):new We;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=hl(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=hl(c);u[r.path[o-1]]=t,t=u}else{let u=new We;u[r.path[o-1]]=t,t=u}}o-=1}let a=Object.setPrototypeOf(t,We.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},kr;(t=>{function n(o,i){return Wa(o,i)??o}t.apply=n;function r(o,i){return ud(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,c=o;for(;a<s.length&&c!==void 0;){if(c=ft.zoomOnce(c,s[a]),c===void 0)return i;if(!mi(c))return;a+=1}if(c===void 0)return i;if(!!mi(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=dd([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(kr||(kr={}));function dd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Wa(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=dd(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function mT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Wa(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Wa(n,r){if(!mi(r))return r;if(n instanceof Qe){let e=dd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return mT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Wa(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof We)return ud(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Wa(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function ud(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!mi(r))return r;if(!mi(n))return kr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new We;for(let o of e){let i=ud(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function km(n,r){let e={cur:[],result:[],len:0};return n=qa(n,r,e)??n,[n,e.result]}function yl(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function gl(n){n&&(n.len-=1)}function hT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Um(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let c=qa(i.data,r,yl(e,a));gl(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Um(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:a,data:c,children:u}});if(t)return o}function yT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let c=qa(i.data,r,yl(e,a));return gl(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:a,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function qa(n,r,e){if(n instanceof Qe){let t=Um(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return yT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=qa(i,r,yl(e,a));return gl(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!pi(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let c=qa(a,r,yl(e,i));gl(e),o=o||c!==void 0,c===void 0&&(c=a),t[i]=c}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&hT(e),t}else return}}var xl;(r=>{function n(e,t){let o=ft.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(xl||(xl={}));var lt;(s=>{function n(c,u){return{...c,path:c.path.slice(u)}}s.drop=n;function r(c,u){return e(c,u)?.data??c}s.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof We&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof Qe||c instanceof ye||c instanceof me?p=c.runOp(u):p=fi.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof Qe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof We){let S={...x,[g]:h};h=Object.setPrototypeOf(S,We.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=h;h=[...x],h[g]=S}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof Qe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}s.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}s.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}s.pathEq=o;function i(c,u){return t(c.path,u.path)}s.commutative=i;function a(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}s.subsumed=a})(lt||(lt={}));var $a;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>lt.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>lt.commutative(d,p)))}c.commutative=i;function a(u,l){for(let d of l){let p=s(u,d);p!==null&&(u=p.data)}return u}c.applyAll=a;function s(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3||m.type===5&&m.path[m.path.length-1]==="variables"){let h,y,g;if(m.type===3?(h=ft.zoom(d,[...m.path,m.id]),g=lt.apply(d,{...m,type:2})):(h=ft.zoom(d,[...m.path,m.id,"value"]),g=lt.apply(d,m)),g!==null){d=g.data;let[x,S]=km(d,{[m.id]:h});d=x;for(let w=0;w<S.length;w++){let b=S[w],T=b.pop();if(typeof T=="number"){let _=[T];for(let N=w+1;N<S.length;N++){let P=S[N],C=P[P.length-1];if(typeof C=="number"&&ft.equal(b,P.slice(0,P.length-1)))_.push(C),S.splice(N,1);else break}let v=ft.zoom(d,b);y=v.map((N,P)=>_.includes(P)?m.id:N),h=v,T=b.pop()}else y=m.id;p.push({type:0,path:b,props:{[T]:h}}),f.push({type:0,path:b,props:{[T]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let h=lt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof ui)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=s})($a||($a={}));var Hm=Symbol(),gT=Symbol(),bl=Symbol(),hn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof vl);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[bl];t&&t(),delete this._children[r]}}}},fd=class extends hn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,fi.runOp(this._current,r),r.path)}},md=class extends hn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,me.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Wm={get(n,r){if(r===bl)return()=>{n._parent=null};if(r===Hm)return n._current;if(r===gT)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=Sl(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},xT={...Wm,set(n,r,e){let t={type:0,props:{[r]:Je(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},vT={...Wm,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},hi=class extends hn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[bl]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=Sl(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},yi=class extends hn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[bl]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=Sl(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function pd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ft.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var vl=class extends hn{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){pd(this.ts,e,r),pd(this.actual,t,r),pd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Sl(n,r,e){return e instanceof Qe?new hi(n,r,e):e instanceof ye?new yi(n,r,e):e instanceof me?new Proxy(new md(n,r,e),vT):e!==null&&typeof e=="object"?pi(e)?e:new Proxy(new fd(n,r,e),xT):e}function hd(n){let r=new vl(n);return[Sl(r,"",n),r]}function Bo(n,r){let[e,t]=hd(n);return r(e),t.result()}function Je(n){return n instanceof hi||n instanceof yi?n._current:n!==null&&typeof n=="object"?n[Hm]:n}var ft;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let c=t(s,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...a};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return a}o.removeOverridden=r;function e(i,a){if((i instanceof Qe||i instanceof hi)&&typeof a=="string")return i.data(a);if((i instanceof ye||i instanceof yi)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ft||(ft={}));function qm(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Gt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var wl=class{},Ya=class extends wl{constructor(e){super();this.id=e}},Xa=class extends wl{constructor(e){super();this.data=e}};var gd;try{gd=new TextDecoder}catch{}var re,Go,I=0;var eh=[],xd=eh,vd=0,Kt={},Be,Ro,fr=0,Ur=0,sr,go,jt=[],Ve,$m={useRecords:!1,mapsAsObjects:!0},Ka=class{},Sd=new Ka;Sd.name="MessagePack 0xC1";var gi=!1,Hr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(re)return ih(()=>(_l(),this?this.unpack(r,e):Hr.prototype.unpack.call($m,r,e)));Go=e>-1?e:r.length,I=0,vd=0,Ur=0,Ro=null,xd=eh,sr=null,re=r;try{Ve=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw re=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Hr){if(Kt=this,this.structures)return Be=this.structures,Tl();(!Be||Be.length>0)&&(Be=[])}else Kt=$m,(!Be||Be.length>0)&&(Be=[]);return Tl()}unpackMultiple(r,e){let t,o=0;try{gi=!0;let i=r.length,a=this?this.unpack(r,i):Al.unpack(r,i);if(e){for(e(a);I<i;)if(o=I,e(Tl())===!1)return}else{for(t=[a];I<i;)o=I,t.push(Tl());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{gi=!1,_l()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Tl(){try{if(!Kt.trusted&&!gi){let r=Be.sharedLength||0;r<Be.length&&(Be.length=r)}let n=ot();if(I==Go)Be.restoreStructures&&Ym(),Be=null,re=null,go&&(go=null);else if(I>Go){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!gi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Be.restoreStructures&&Ym(),_l(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Ym(){for(let n in Be.restoreStructures)Be[n]=Be.restoreStructures[n];Be.restoreStructures=null}function ot(){let n=re[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Be[n&63]||Kt.getStructures&&th()[n&63];return r?(r.read||(r.read=wd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[oh()]=ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(ot(),ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=ot();return r}else if(n<192){let r=n-160;if(Ur>=I)return Ro.slice(I-fr,(I+=r)-fr);if(Ur==0&&Go<140){let e=r<16?Td(r):rh(r);if(e!=null)return e}return bd(r)}else{let r;switch(n){case 192:return null;case 193:return sr?(r=ot(),r>0?sr[1].slice(sr.position1,sr.position1+=r):sr[0].slice(sr.position0,sr.position0-=r)):Sd;case 194:return!1;case 195:return!0;case 196:return yd(re[I++]);case 197:return r=Ve.getUint16(I),I+=2,yd(r);case 198:return r=Ve.getUint32(I),I+=4,yd(r);case 199:return yn(re[I++]);case 200:return r=Ve.getUint16(I),I+=2,yn(r);case 201:return r=Ve.getUint32(I),I+=4,yn(r);case 202:if(r=Ve.getFloat32(I),Kt.useFloat32>2){let e=Ol[(re[I]&127)<<1|re[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Ve.getFloat64(I),I+=8,r;case 204:return re[I++];case 205:return r=Ve.getUint16(I),I+=2,r;case 206:return r=Ve.getUint32(I),I+=4,r;case 207:return Kt.int64AsNumber?(r=Ve.getUint32(I)*4294967296,r+=Ve.getUint32(I+4)):r=Ve.getBigUint64(I),I+=8,r;case 208:return Ve.getInt8(I++);case 209:return r=Ve.getInt16(I),I+=2,r;case 210:return r=Ve.getInt32(I),I+=4,r;case 211:return Kt.int64AsNumber?(r=Ve.getInt32(I)*4294967296,r+=Ve.getUint32(I+4)):r=Ve.getBigInt64(I),I+=8,r;case 212:if(r=re[I++],r==114)return Jm(re[I++]&63);{let e=jt[r];if(e)return e.read?(I++,e.read(ot())):e.noBuffer?(I++,e()):e(re.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=re[I],r==114?(I++,Jm(re[I++]&63,re[I++])):yn(2);case 214:return yn(4);case 215:return yn(8);case 216:return yn(16);case 217:return r=re[I++],Ur>=I?Ro.slice(I-fr,(I+=r)-fr):ST(r);case 218:return r=Ve.getUint16(I),I+=2,Ur>=I?Ro.slice(I-fr,(I+=r)-fr):wT(r);case 219:return r=Ve.getUint32(I),I+=4,Ur>=I?Ro.slice(I-fr,(I+=r)-fr):TT(r);case 220:return r=Ve.getUint16(I),I+=2,Km(r);case 221:return r=Ve.getUint32(I),I+=4,Km(r);case 222:return r=Ve.getUint16(I),I+=2,Zm(r);case 223:return r=Ve.getUint32(I),I+=4,Zm(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var bT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>bT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(ot);return n.highByte===0&&(n.read=Xm(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=ot()}return t}return e.count=0,n.highByte===0?Xm(r,e):e}var Xm=(n,r)=>function(){let e=re[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Be[t]||th()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=wd(o,n)),o.read()};function th(){let n=ih(()=>(re=null,Kt.getStructures()));return Be=Kt._mergeStructures(n,Be)}var bd=Pl,ST=Pl,wT=Pl,TT=Pl;function Pl(n){let r;if(n<16&&(r=Td(n)))return r;if(n>64&&gd)return gd.decode(re.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=re[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=re[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=re[I++]&63,a=re[I++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[I++]&63,a=re[I++]&63,s=re[I++]&63,c=(o&7)<<18|i<<12|a<<6|s;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=wt.apply(String,t),t.length=0)}return t.length>0&&(r+=wt.apply(String,t)),r}function Km(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=ot();return r}function Zm(n){if(Kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[oh()]=ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(ot(),ot());return r}}var wt=String.fromCharCode;function rh(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=re[I++];if((o&128)>0){I=r;return}e[t]=o}return wt.apply(String,e)}function Td(n){if(n<4)if(n<2){if(n===0)return"";{let r=re[I++];if((r&128)>1){I-=1;return}return wt(r)}}else{let r=re[I++],e=re[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return wt(r,e);let t=re[I++];if((t&128)>0){I-=3;return}return wt(r,e,t)}else{let r=re[I++],e=re[I++],t=re[I++],o=re[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return wt(r,e,t,o);{let i=re[I++];if((i&128)>0){I-=5;return}return wt(r,e,t,o,i)}}else if(n<8){let i=re[I++],a=re[I++];if((i&128)>0||(a&128)>0){I-=6;return}if(n<7)return wt(r,e,t,o,i,a);let s=re[I++];if((s&128)>0){I-=7;return}return wt(r,e,t,o,i,a,s)}else{let i=re[I++],a=re[I++],s=re[I++],c=re[I++];if((i&128)>0||(a&128)>0||(s&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return wt(r,e,t,o,i,a,s,c);{let u=re[I++];if((u&128)>0){I-=9;return}return wt(r,e,t,o,i,a,s,c,u)}}else if(n<12){let u=re[I++],l=re[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return wt(r,e,t,o,i,a,s,c,u,l);let d=re[I++];if((d&128)>0){I-=11;return}return wt(r,e,t,o,i,a,s,c,u,l,d)}else{let u=re[I++],l=re[I++],d=re[I++],p=re[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return wt(r,e,t,o,i,a,s,c,u,l,d,p);{let f=re[I++];if((f&128)>0){I-=13;return}return wt(r,e,t,o,i,a,s,c,u,l,d,p,f)}}else{let f=re[I++],m=re[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return wt(r,e,t,o,i,a,s,c,u,l,d,p,f,m);let h=re[I++];if((h&128)>0){I-=15;return}return wt(r,e,t,o,i,a,s,c,u,l,d,p,f,m,h)}}}}}function yd(n){return Kt.copyBuffers?Uint8Array.prototype.slice.call(re,I,I+=n):re.subarray(I,I+=n)}function yn(n){let r=re[I++];if(jt[r])return jt[r](re.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Qm=new Array(4096);function oh(){let n=re[I++];if(n>=160&&n<192){if(n=n-160,Ur>=I)return Ro.slice(I-fr,(I+=n)-fr);if(!(Ur==0&&Go<180))return bd(n)}else return I--,ot();let r=(n<<5^(n>1?Ve.getUint16(I):n>0?re[I]:0))&4095,e=Qm[r],t=I,o=I+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ve.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=re[t++],i!=e[a++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Qm[r]=e,e.bytes=n;t<o;)i=Ve.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=re[t++],e.push(i);let s=n<16?Td(n):rh(n);return s!=null?e.string=s:e.string=bd(n)}var Jm=(n,r)=>{var e=ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Be[n];return o&&o.isShared&&((Be.restoreStructures||(Be.restoreStructures=[]))[n]=o),Be[n]=e,e.read=wd(e,t),e.read()},nh=typeof self=="object"?self:global;jt[0]=()=>{};jt[0].noBuffer=!0;jt[101]=()=>{let n=ot();return(nh[n[0]]||Error)(n[1])};jt[105]=n=>{let r=Ve.getUint32(I-4);go||(go=new Map);let e=re[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};go.set(r,o);let i=ot();return o.used?Object.assign(t,i):(o.target=i,i)};jt[112]=n=>{let r=Ve.getUint32(I-4),e=go.get(r);return e.used=!0,e.target};jt[115]=()=>new Set(ot());var _d=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");jt[116]=n=>{let r=n[0],e=_d[r];if(!e)throw new Error("Could not find typed array for code "+r);return new nh[e](Uint8Array.prototype.slice.call(n,1).buffer)};jt[120]=()=>{let n=ot();return new RegExp(n[0],n[1])};jt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,sr=[ot(),ot()],sr.position0=0,sr.position1=0;let t=I;I=e;try{return ot()}finally{I=t}};jt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function ih(n){let r=Go,e=I,t=vd,o=fr,i=Ur,a=Ro,s=xd,c=go,u=sr,l=new Uint8Array(re.slice(0,Go)),d=Be,p=Be.slice(0,Be.length),f=Kt,m=gi,h=n();return Go=r,I=e,vd=t,fr=o,Ur=i,Ro=a,xd=s,go=c,sr=u,re=l,gi=m,Be=d,Be.splice(0,Be.length,...p),Kt=f,Ve=new DataView(re.buffer,re.byteOffset,re.byteLength),h}function _l(){re=null,go=null,Be=null}function ah(n){n.unpack?jt[n.type]=n.unpack:jt[n.type]=n}var Ol=new Array(147);for(let n=0;n<256;n++)Ol[n]=+("1e"+Math.floor(45.15-n*.30103));var Al=new Hr({useRecords:!1}),_T=Al.unpack,PT=Al.unpackMultiple,OT=Al.unpack,Cl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},AT=new Float32Array(1),pD=new Uint8Array(AT.buffer,0,4);var Nl;try{Nl=new TextEncoder}catch{}var Il,Od,Ml=typeof Buffer<"u",Pd=Ml?Buffer.allocUnsafeSlow:Uint8Array,dh=Ml?Buffer:Uint8Array,sh=Ml?4294967296:2144337920,G,ct,E=0,Wr,qr=null,CT=/[\u0080-\uFFFF]/,Za=Symbol("record-id"),gn=class extends Hr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,c=0,u=dh.prototype.utf8Write?function(v,N,P){return G.utf8Write(v,N,P)}:Nl&&Nl.encodeInto?function(v,N){return Nl.encodeInto(v,G.subarray(N)).written}:!1,l=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(v,N){if(G||(G=new Pd(8192),ct=new DataView(G.buffer,0,8192),E=0),Wr=G.length-10,Wr-E<2048?(G=new Pd(G.length),ct=new DataView(G.buffer,0,G.length),Wr=G.length-10,E=0):E=E+7&2147483640,t=E,s=l.structuredClone?new Map:null,l.bundleStrings?(qr=["",""],G[E++]=214,G[E++]=98,qr.position=E-t,E+=4):qr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let P=o.sharedLength||0;if(P>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let C=0;C<P;C++){let O=o[C];if(!O)continue;let A,M=o.transitions;for(let L=0,X=O.length;L<X;L++){let R=O[L];A=M[R],A||(A=M[R]=Object.create(null)),M=A}M[Za]=C+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),a=o||[];try{if(b(v),qr){ct.setUint32(qr.position+t,E-qr.position-t);let P=qr;qr=null,b(P[0]),b(P[1])}if(l.offset=E,s&&s.idsToInsert){E+=s.idsToInsert.length*6,E>Wr&&_(E),l.offset=E;let P=IT(G.subarray(t,E),s.idsToInsert);return s=null,P}return N&ph?(G.start=t,G.end=E,G):G.subarray(t,E)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let P=0,C=x.length;P<C;P++)x[P][Za]=0;x=[]}if(i&&l.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let C=G.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=P,C)}}N>&&(E=t)}};let b=v=>{E>Wr&&(G=_(E));var N=typeof v,P;if(N==="string"){let C=v.length;if(qr&&C>=8&&C<4096){let M=CT.test(v);qr[M?0:1]+=v,G[E++]=193,b(M?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>Wr&&(G=_(E+A)),C<64||!u){let M,L,X,R=E+O;for(M=0;M<C;M++)L=v.charCodeAt(M),L<128?G[R++]=L:L<2048?(G[R++]=L>>6|192,G[R++]=L&63|128):(L&64512)===55296&&((X=v.charCodeAt(M+1))&64512)===56320?(L=65536+((L&1023)<<10)+(X&1023),M++,G[R++]=L>>18|240,G[R++]=L>>12&63|128,G[R++]=L>>6&63|128,G[R++]=L&63|128):(G[R++]=L>>12|224,G[R++]=L>>6&63|128,G[R++]=L&63|128);P=R-E-O}else P=u(v,E+O,A);P<32?G[E++]=160|P:P<256?(O<2&&G.copyWithin(E+2,E+1,E+1+P),G[E++]=217,G[E++]=P):P<65536?(O<3&&G.copyWithin(E+3,E+2,E+2+P),G[E++]=218,G[E++]=P>>8,G[E++]=P&255):(O<5&&G.copyWithin(E+5,E+3,E+3+P),G[E++]=219,ct.setUint32(E,P),E+=4),E+=P}else if(N==="number")if(v>>>0===v)v<64?G[E++]=v:v<256?(G[E++]=204,G[E++]=v):v<65536?(G[E++]=205,G[E++]=v>>8,G[E++]=v&255):(G[E++]=206,ct.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?G[E++]=256+v:v>=-128?(G[E++]=208,G[E++]=v+256):v>=-32768?(G[E++]=209,ct.setInt16(E,v),E+=2):(G[E++]=210,ct.setInt32(E,v),E+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){G[E++]=202,ct.setFloat32(E,v);let O;if(C<4||(O=v*Ol[(G[E]&127)<<1|G[E+1]>>7])>>0===O){E+=4;return}else E--}G[E++]=203,ct.setFloat64(E,v),E+=8}else if(N==="object")if(!v)G[E++]=192;else{if(s){let O=s.get(v);if(O){if(!O.id){let A=s.idsToInsert||(s.idsToInsert=[]);O.id=A.push(O)}G[E++]=214,G[E++]=112,ct.setUint32(E,O.id),E+=4;return}else s.set(v,{offset:E-t})}let C=v.constructor;if(C===Object)T(v,!0);else if(C===Array){P=v.length,P<16?G[E++]=144|P:P<65536?(G[E++]=220,G[E++]=P>>8,G[E++]=P&255):(G[E++]=221,ct.setUint32(E,P),E+=4);for(let O=0;O<P;O++)b(v[O])}else if(C===Map){P=v.size,P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,ct.setUint32(E,P),E+=4);for(let[O,A]of v)b(O),b(A)}else{for(let O=0,A=Il.length;O<A;O++){let M=Od[O];if(v instanceof M){let L=Il[O];if(L.write){L.type&&(G[E++]=212,G[E++]=L.type,G[E++]=0),b(L.write.call(this,v));return}let X=G,R=ct,Z=E;G=null;let z;try{z=L.pack.call(this,v,V=>(G=X,X=null,E+=V,E>Wr&&_(E),{target:G,targetView:ct,position:E-V}),b)}finally{X&&(G=X,ct=R,E=Z,Wr=G.length-10)}z&&(z.length+E>Wr&&_(z.length+E),E=NT(z,G,E,L.type));return}}T(v,!v.hasOwnProperty)}}else if(N==="boolean")G[E++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))G[E++]=211,ct.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)G[E++]=207,ct.setBigUint64(E,v);else if(this.largeBigIntToFloat)G[E++]=203,ct.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?G[E++]=192:(G[E++]=212,G[E++]=0,G[E++]=0);else if(N==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},T=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),P=N.length;P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,ct.setUint32(E,P),E+=4);let C;for(let O=0;O<P;O++)b(C=N[O]),b(v[C])}:(v,N)=>{G[E++]=222;let P=E-t;E+=2;let C=0;for(let O in v)(N||v.hasOwnProperty(O))&&(b(O),b(v[O]),C++);G[P+++t]=C>>8,G[P+t]=C&255}:v=>{let N=Object.keys(v),P,C=a.transitions||(a.transitions=Object.create(null)),O=0;for(let M=0,L=N.length;M<L;M++){let X=N[M];P=C[X],P||(P=C[X]=Object.create(null),O++),C=P}let A=C[Za];if(A)A>=96&&h?(G[E++]=((A-=96)&31)+96,G[E++]=A>>5):G[E++]=A;else{A=a.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=a.nextOwnId,A<g||(A=y),a.nextOwnId=A+1):(A>=g&&(A=y),a.nextId=A+1);let M=N.highByte=A>=96&&h?A-96>>5:-1;C[Za]=A,a[A-64]=N,A<y?(N.isShared=!0,a.sharedLength=A-63,i=!0,M>=0?(G[E++]=(A&31)+96,G[E++]=M):G[E++]=A):(M>=0?(G[E++]=213,G[E++]=114,G[E++]=(A&31)+96,G[E++]=M):(G[E++]=212,G[E++]=114,G[E++]=A),O&&(S+=w*O),x.length>=m&&(x.shift()[Za]=0),x.push(C),b(N))}for(let M=0,L=N.length;M<L;M++)b(v[N[M]])},_=v=>{let N;if(v>16777216){if(v-t>sh)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(sh,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,G.length-1)>>12)+1<<12;let P=new Pd(N);return ct=new DataView(P.buffer,0,N),G.copy?G.copy(P,0,t,v):P.set(G.slice(t,v)),E-=t,t=0,Wr=P.length-10,G=P}}useBuffer(r){G=r,ct=new DataView(G.buffer,G.byteOffset,G.byteLength),E=0}};Od=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ka];Il=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?lh(n,16,r):ch(Ml?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==dh&&this.structuredClone?lh(n,_d.indexOf(e.name),r):ch(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function lh(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function ch(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function NT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function IT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Vo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Od.unshift(n.Class),Il.unshift(n)}ah(n)}var uh=new gn({useRecords:!1}),MT=uh.pack,ET=uh.pack;var{NEVER:LT,ALWAYS:DT,DECIMAL_ROUND:BT,DECIMAL_FIT:RT}=Cl,ph=512,GT=1024;var fh=new gn({structuredClone:!0});Vo({Class:me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,me.prototype),n}});Vo({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});Vo({Class:Qe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});Vo({Class:Ya.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ya(n)}});Vo({Class:Xa.prototype.constructor,type:5,write(n){return n.data},read(n){return new Xa(n)}});Vo({Class:We.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,We.prototype),n}});function VT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Ad(n){if(pi(n))return n;if(Array.isArray(n))return n.map(Ad);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Ad(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var El;(t=>{function n(o){return fh.pack(o)}t.serialize=n;function r(o){return fh.unpack(o)}t.deserialize=r;function e(o){return VT(n(Ad(o))).toString()}t.checksum=e})(El||(El={}));var Fo="personal camera",ko="a218fcc3-276b-49b9-b485-49037fd14f5f",vh=2960946,ht=5526619;var mh;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(mh||(mh={}));var zo;(s=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}s.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}s.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}s.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}s.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}s.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}s.dist=i;function a(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}s.lerp=a})(zo||(zo={}));var hh;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(hh||(hh={}));var jo;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var c=0,u=a.length;c<u;c+=3){let l=i[3]*a[c]+i[7]*a[c+1]+i[11]*a[c+2]+i[15];s[c]=(i[0]*a[c]+i[4]*a[c+1]+i[8]*a[c+2]+i[12])/l,s[c+1]=(i[1]*a[c]+i[5]*a[c+1]+i[9]*a[c+2]+i[13])/l,s[c+2]=(i[2]*a[c]+i[6]*a[c+1]+i[10]*a[c+2]+i[14])/l}return s}o.applyMatrix4=t})(jo||(jo={}));var Tt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=s;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(Tt||(Tt={}));var Ft;(s=>{s.white={...Tt.white,a:1},s.transparent={...Tt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}s.from0to1=e;function t(c,u){return{...Tt.fromHex(c),a:u}}s.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}s.toRgb255a1=o;function i(c,u){return Tt.equals(c,u)&&c.a===u.a}s.equals=i;function a(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}s.lerp=a})(Ft||(Ft={}));var Ll;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ll||(Ll={}));var yh;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(yh||(yh={}));var gh;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(gh||(gh={}));var xh;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(xh||(xh={}));function bh(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var _r;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(_r||(_r={}));var Uo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(Uo||(Uo={}));var $r;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(zT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;jT.forEach(c=>{Object.assign(i.radial,{[c]:s[c]??a[c]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;FT.forEach(c=>{Object.assign(i.linear,{[c]:s[c]??a[c]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;kT.forEach(c=>{Object.assign(i.grid,{[c]:s[c]??a[c]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;UT.forEach(c=>{Object.assign(i.toObject,{[c]:s[c]??a[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;HT.forEach(c=>{Object.assign(i.randomnessObject,{[c]:s[c]??a[c]})})}return i}e.merge=r})($r||($r={}));var Dl;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let c=o[s];c&&Object.keys(c).length>0&&a.push({type:0,path:[...i,s],props:c})}return a}t.toOps=e})(Dl||(Dl={}));var zT=["count"],jT=["radius","start","end","position","scale","rotation"],FT=["position","scale","rotation"],kT=["count","size"],UT=["count","position","scale","rotation"],HT=["strength","scale","rotation","position","movement","seed","freqScale"];var Bl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Bl||(Bl={}));var Rl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ft.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ft.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ft.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Rl||(Rl={}));var Ho;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Ho||(Ho={}));var Cd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Cd||(Cd={}));var Nd;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(Nd||(Nd={}));var Gl;(r=>r.defaultData={...Nd.defaultData,...Cd.defaultData})(Gl||(Gl={}));var Sh;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(Sh||(Sh={}));var xi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(xi||(xi={}));var wh;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(wh||(wh={}));function _h(n){return n.type!=="displace"}var Th;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Th||(Th={}));var Ph=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Oh=["wrapping","image","video","name"],kt;(o=>{function n(i,a){let{texture:s,...c}=a;if(Object.assign(i,c),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:xi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:Tt.fromHex(ht)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ft.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ft.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ft.fromHexAndA(0,1),contourColor:Ft.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Tt.fromHex(0),a:1},colorB:{...Tt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(kt||(kt={}));var It;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new ye}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new ye;return p.push({fi:0,data:kt.defaultData("light",u),id:l}),p.push({fi:1,data:kt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function a(u,l="phong",d="layer1",p="layer2"){let f=kt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:kt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=a;function s(u,l="phong",d="layer1",p="layer2"){let f=kt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:kt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=s})(It||(It={}));var vi;(r=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(vi||(vi={}));var bi;(r=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(bi||(bi={}));var Id={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Vl;(r=>{function n(e,t){let o={...e};return WT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Vl||(Vl={}));var zl={shape:Id,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},WT=["depth","offset","angle","twist","startScale","endScale"];var Qa;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Qa||(Qa={}));var jl;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Vl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(jl||(jl={}));var Wo;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:bi.defaultData(),extrusion:zl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:vi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}r.defaultData=n})(Wo||(Wo={}));var Fl;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:Tt.white,near:.1,far:2e3})(Fl||(Fl={}));var kl;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(kl||(kl={}));var Md;(r=>r.defaultData={softShadowQuality:"low"})(Md||(Md={}));var Ed;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Ed||(Ed={}));var Ld;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Ld||(Ld={}));var Ja;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ja||(Ja={}));var Dd;(r=>r.defaultData={playCamera:Fo,gameControlObject:null})(Dd||(Dd={}));var Ul;(r=>r.defaultData={backgroundColor:Ft.fromHexAndA(vh,1),postprocessing:kl.defaultData,fog:Fl.defaultData,globalPhysics:Ja.defaultData,ambient:Ed.defaultData,ao:Ld.defaultData,shadow:Md.defaultData,publish:Dd.defaultData})(Ul||(Ul={}));var Ah;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Ah||(Ah={}));var Si;(o=>{o.identity={...Ll.identity,hiddenMatrix:jo.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return pp({position:zo.isEqual(i.position,a.position)?void 0:a.position,rotation:zo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:zo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:jo.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Si||(Si={}));var Mt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Ho.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Si.identity,cloner:null})(Mt||(Mt={}));var Hl;(r=>r.defaultData={type:"Empty",...Mt.defaultData})(Hl||(Hl={}));var Ch;(r=>r.defaultData={type:"Component",...Mt.defaultData})(Ch||(Ch={}));var xn;(r=>r.defaultData={type:"Mesh",...Mt.defaultData,...Gl.defaultData})(xn||(xn={}));var vn;(r=>r.defaultData={...Mt.defaultData,...Si.identity,position:[0,0,Uo.DefaultTargetOffset],...Uo.defaultData})(vn||(vn={}));var Wl;(e=>{function n(t){return{...Mt.defaultData,...Rl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Wl||(Wl={}));var wi;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(wi||(wi={}));var Yr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Mt.defaultData,...s,component:a,overrides:new We,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Si.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Yr||(Yr={}));var xo;(r=>r.defaultData={type:"Page",...Mt.defaultData,physics:{...Ho.defaultData,fusedBody:!1},...Ul.defaultData,camera:vn.defaultData})(xo||(xo={}));var ql;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:jo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Ho.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Uo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Mt.defaultData,...xn.defaultData,geometry:Wo.defaultData("RectangleGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Mt.defaultData,...xn.defaultData,geometry:Wo.defaultData("BooleanGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Mt.defaultData,...xn.defaultData,geometry:Wo.defaultData("TextGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")}))(ql||(ql={}));var bn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new We}),"materials"in i&&(s.materials=i.materials.map(c=>({layers:new We})))):_r.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Bo(s.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(a.material.layers)){let d=c.layers.data(u);d&&kt.patch(d,l)}}).data),s.materials&&a.materials&&(s.materials=Bo(s.materials,c=>{for(let u=0;u<s.materials.length;u++){let l=a.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&kt.patch(f,p)}}}).data),s}function e(i,a){let s,c=[],u={orthographic:0,perspective:0,geometry:0};function l(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(a))if(d!=="name")if(d==="cloner")c.push(...Dl.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},c.push(s)),s.props[d]=p;return c}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Si.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),_r.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let c=a;c.orthographic?.zoom!==void 0&&(s.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(s.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(s.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:jl.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:$r.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:$r.merge(s.cloner,a.cloner)});else if(Bl.is(i.type)){let c=a;c.intensity!==void 0&&(s.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?s.color=c.color:s.color=Tt.clone(c.color))}return s}o.patch=t})(bn||(bn={}));var _i;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(_i||(_i={}));var Xr;(r=>r.defaultData={orbitControls:_i.defaultData,playPage:ko,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Xr||(Xr={}));var Bd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Bd||(Bd={}));var Rd;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Rd||(Rd={}));var qo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Bd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Rd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(qo||(qo={}));var Nh;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let c=Pi.getComponentData(t,s.component)?.data;c&&i(a,s,c.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(Nh||(Nh={}));var $o;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=ql.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:Wl.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new Qe;return d.push({fi:1,id:ko,data:{...xo.defaultData,name:"Scene 1"},children:u}),d}s.defaultData={objects:r(),publish:Xr.defaultData,styles:qo.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new Qe,publish:Xr.defaultData,styles:qo.defaultData()}},s.emptyDataWithPage=function(c){return{objects:r(c),publish:Xr.defaultData,styles:qo.defaultData()}};function i(c){return{...s.defaultData,objects:Yt(c,Qe.prototype)}}s.withObjs=i;function a(c,u){return i([{id:c,data:u,children:[],fi:0}])}s.withObj=a})($o||($o={}));var Oi;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Oi||(Oi={}));var Ai;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Ai||(Ai={}));var $l;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})($l||($l={}));var Gd;(r=>r.all=["images","videos","colors","audios","fonts","materials","variables"])(Gd||(Gd={}));var Ih;(r=>r.all=[...Gd.all,"components"])(Ih||(Ih={}));var Mh;(r=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}r.defaultData=n})(Mh||(Mh={}));var Yo;(r=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}r.defaultData=n})(Yo||(Yo={}));var Pr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Yt(a,me.prototype)}i.defaultColors=n;function r(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ai.emptyImage,name:"AI generated image"}),Yt(s,me.prototype)}i.defaultImages=r;function e(){return{catelogs:new me,materials:new me,images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,variables:new ye,lib:Yo.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let c=Math.floor(a/3600),u=Math.floor((a-c*3600)/60),l=Math.round(a-c*3600-u*60);return{textValue:[c,u,l]}}else if(s.format==="mm:ss"){let c=Math.floor(a/60),u=Math.round(a-c*60);return{textValue:[c,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(Pr||(Pr={}));var es=require("three");var Yl;(r=>r.list=["idle","move","jump","run"])(Yl||(Yl={}));var Xl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ye,move:new ye,jump:new ye,run:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ft.fromHexAndA(3728051,1)}}))(Xl||(Xl={}));function Eh(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Tr(Je(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Je(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function vo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function bo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=It.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&r(o.material)})})}function qT(n){Object.assign(n.scene.publish,{orbitControls:{..._i.defaultData,...Je(n.scene.publish.orbitControls)}})}function $T(n){Object.assign(n.scene.publish.settings,{video:{...Xr.defaultData.settings.video,...Je(n.scene.publish.settings.video)}})}function YT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Ph.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Oh.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function XT(n){n.scene.publish.withBackground=!0}function KT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ZT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function QT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function JT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Je(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Je(e).booleanExclude!==!0)}})}function e_(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function t_(n){function r(t){Object.setPrototypeOf(t,We.prototype),t.texture&&Object.setPrototypeOf(t.texture,We.prototype)}function e(t){Object.setPrototypeOf(t,We.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=Je(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let c=a.materials[s],u=Je(c).layers;e(u),c.layers=u}})})}function Lh(n){n.layers===void 0&&Object.assign(n,It.defaultTwoLayerData("lambert"))}function Vd(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...Je(r),colors:e,steps:t};Object.assign(r,o)}})}function r_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Dh(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Vd(t)}):"material"in e&&typeof e.material!="string"&&Vd(e.material)}),Object.values(n.shared.materials).forEach(r=>Vd(r))}function o_(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function n_(n){n.shared.audios=Yt({},me.prototype)}function i_(n){n.shared.videos=Yt({},me.prototype)}function a_(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function s_(n){Object.entries(Je(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Je(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function l_(n){n.scene.publish.settings.web.preload=!1}function Bh(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Rh(n){n.layers&&n.layers.forEach(r=>{_h(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function c_(n){n.shared.fonts=Yt({},me.prototype)}function d_(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function u_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=It.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=d_(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let c={name:o.name,...Mt.defaultData,...xn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Wo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Je(o.states),events:Je(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Je(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function p_(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ye,move:new ye,jump:new ye}});else{let i=new ye;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:es.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(l,Tr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(l,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...l},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:es.MathUtils.generateUUID(),data:u},{fi:1,id:es.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:s,data:f})}),delete o.targets)}})})}function f_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ye,s=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;s.push(u),c.interaction==="play"?d={...Tr(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...Tr(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:l,id:u,data:d})}}),s.forEach(c=>e.events.delete(c)),a.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:es.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Gh(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=kt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Vh(n){vo(n,Gh),bo(n,Gh)}function m_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function h_(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function y_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=It.defaultTwoLayerData("phong"))})}function g_(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function x_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function v_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function b_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function S_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function w_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function T_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Xl.defaultDataThirdPerson.navmesh)})})}function __(n){n.scene.styles||(n.scene.styles=qo.defaultData())}function zh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function P_(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),bo(n,zh),vo(n,zh)}function O_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ye})})})}function A_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function jh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Fh(n,r){if(r<1&&(bo(n,Eh),vo(n,Eh),n.schema=1),r<2&&(qT(n),n.schema=2),r<3&&(YT(n),n.schema=3),r<4&&(XT(n),n.schema=4),r<5&&(KT(n),n.schema=5),r<6&&(ZT(n),n.schema=6),r<7&&(QT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Dh(n),n.schema=9),r<10&&(r_(n),n.schema=10),r<11&&(o_(n),n.schema=11),r<12&&(Dh(n),n.schema=12),r<13&&(n_(n),n.schema=13),r<14&&(a_(n),n.schema=14),r<15&&(s_(n),n.schema=15),r<16&&(l_(n),n.schema=16),r<17&&(bo(n,Bh),vo(n,Bh),n.schema=17),r<18&&(bo(n,Lh),vo(n,Lh),n.schema=18),r<19&&($T(n),n.schema=19),r<20&&(c_(n),u_(n),n.schema=20),r<21&&(p_(n),f_(n),n.schema=21),r<22&&(Vh(n),n.schema=22),r<23&&(m_(n),n.schema=23),r<24&&(h_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(i_(n),r<25&&(n.schema=25)),r<26&&(JT(n),n.schema=26),r<27&&(e_(n),n.schema=27),r<28&&(Vh(n),n.schema=28),r<29&&(t_(n),n.schema=29),r<30&&(y_(n),n.schema=30),r<31&&(g_(n),n.schema=31),r<33&&(x_(n),n.schema=33),r<34&&(v_(n),n.schema=34),r<35&&(b_(n),n.schema=35),r<36&&(S_(n),n.schema=36),r<37&&(w_(n),n.schema=37),r<38&&(bo(n,Rh),vo(n,Rh),n.schema=38),r<39&&(T_(n),n.schema=39),r<40&&(__(n),n.schema=40),r<41&&(P_(n),n.schema=41),r<42&&(O_(n),n.schema=42),r<43&&(A_(n),n.schema=43),r<99){bo(n,jh),vo(n,jh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Fo);let e=Je(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=ko,t.insertBefore(null,null,[{id:ko,data:{...xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Tr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Tr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ja.defaultData,...Tr(n.scene.environment,"usePhysics","gravity")},camera:Je(n.scene.ownerCamera)??xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==$o.TRASH_CAN_ID&&t.move(ko,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,Ho.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function kh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function C_(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}var Ci=180/Math.PI;function Uh(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Ci)}function Hh(n){Uh(n),n.type==="Page"&&Uh(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Ci))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=r.thetaLength*Ci),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Ci),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Ci,r.extrusion.twist*=Ci),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(Je(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Once")})}function N_(n){n.shared.variables=Yt({},me.prototype)}function I_(n){let r=Je(n.shared.variables);n.shared.variables=Yt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ye.prototype)}var So=107;function Wh(n,r){r(n.data);for(let e of n.children)Wh(e,r)}function M_(n){let r=n.schema??104;r!==So&&r<105&&(Wh(n.asset,Hh),n.schema=105)}function Kl(n){let r=n.schema??0;if(r!==So){console.warn("updating from ",r,"to ",So),Fh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Xr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(bo(n,kh),vo(n,kh),n.schema=101),r<102&&(C_(n),n.schema=102),r<104&&(n.shared.catelogs=new me,n.shared.lib=Yo.defaultData(),n.schema=104),r<105&&(N_(n),n.scene.objects.traverse((e,t)=>{Hh(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))M_(e);r<106&&(I_(n),n.schema=106),r<107&&(n.shared.lib.variables=Yo.defaultData().variables,n.schema=107)}}var Pi;(s=>{s.defaultData={schema:So,scene:$o.defaultData,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oi.defaultData),shared:{...Pr.emptyData(),colors:Pr.defaultColors()}},s.emptyDataForImports=function(c){let u=$o.emptyDataWithPage(c);return{schema:So,scene:u,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oi.defaultData),shared:{...Pr.emptyData(),colors:Pr.defaultColors(),images:Pr.defaultImages(c)}}},s.emptyData=function(){return{schema:So,scene:$o.emptyDataWithPage(),frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oi.defaultData),shared:Pr.emptyData()}},s.collabHelper={...$a,updateSchema(c){return(c.schema??0)<So?Bo(c,Kl):(c.schema??0)-So}};function o(c){let u=s.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}s.updateSchemaDirectly=o;function i(c){return{...c,shared:{...c.shared,lib:Yo.defaultData()}}}s.withoutLib=i;function a(c,u){let l=c.scene.objects.get(u);if(l&&l.data.type==="Component")return l;{let d=c.shared.lib.components[u];if(d)return d.asset}}s.getComponentData=a})(Pi||(Pi={}));var Ge=require("three"),Pa=ja($h());var E_=.5*(Math.sqrt(3)-1),ts=(3-Math.sqrt(3))/6,L_=1/3,Kr=1/6,YG=(Math.sqrt(5)-1)/4,XG=(5-Math.sqrt(5))/20,rs=n=>Math.floor(n)|0,Yh=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),jd=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Zl(n=Math.random){let r=Kh(n),e=new Float64Array(r).map(o=>Yh[o%12*2]),t=new Float64Array(r).map(o=>Yh[o%12*2+1]);return function(i,a){let s=0,c=0,u=0,l=(i+a)*E_,d=rs(i+l),p=rs(a+l),f=(d+p)*ts,m=d-f,h=p-f,y=i-m,g=a-h,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+ts,b=g-S+ts,T=y-1+2*ts,_=g-1+2*ts,v=d&255,N=p&255,P=.5-y*y-g*g;if(P>=0){let A=v+r[N],M=e[A],L=t[A];P*=P,s=P*P*(M*y+L*g)}let C=.5-w*w-b*b;if(C>=0){let A=v+x+r[N+S],M=e[A],L=t[A];C*=C,c=C*C*(M*w+L*b)}let O=.5-T*T-_*_;if(O>=0){let A=v+1+r[N+1],M=e[A],L=t[A];O*=O,u=O*O*(M*T+L*_)}return 70*(s+c+u)}}function Xh(n=Math.random){let r=Kh(n),e=new Float64Array(r).map(i=>jd[i%12*3]),t=new Float64Array(r).map(i=>jd[i%12*3+1]),o=new Float64Array(r).map(i=>jd[i%12*3+2]);return function(a,s,c){let u,l,d,p,f=(a+s+c)*L_,m=rs(a+f),h=rs(s+f),y=rs(c+f),g=(m+h+y)*Kr,x=m-g,S=h-g,w=y-g,b=a-x,T=s-S,_=c-w,v,N,P,C,O,A;b>=T?T>=_?(v=1,N=0,P=0,C=1,O=1,A=0):b>=_?(v=1,N=0,P=0,C=1,O=0,A=1):(v=0,N=0,P=1,C=1,O=0,A=1):T<_?(v=0,N=0,P=1,C=0,O=1,A=1):b<_?(v=0,N=1,P=0,C=0,O=1,A=1):(v=0,N=1,P=0,C=1,O=1,A=0);let M=b-v+Kr,L=T-N+Kr,X=_-P+Kr,R=b-C+2*Kr,Z=T-O+2*Kr,z=_-A+2*Kr,V=b-1+3*Kr,W=T-1+3*Kr,$=_-1+3*Kr,Y=m&255,q=h&255,k=y&255,U=.6-b*b-T*T-_*_;if(U<0)u=0;else{let D=Y+r[q+r[k]];U*=U,u=U*U*(e[D]*b+t[D]*T+o[D]*_)}let B=.6-M*M-L*L-X*X;if(B<0)l=0;else{let D=Y+v+r[q+N+r[k+P]];B*=B,l=B*B*(e[D]*M+t[D]*L+o[D]*X)}let F=.6-R*R-Z*Z-z*z;if(F<0)d=0;else{let D=Y+C+r[q+O+r[k+A]];F*=F,d=F*F*(e[D]*R+t[D]*Z+o[D]*z)}let j=.6-V*V-W*W-$*$;if(j<0)p=0;else{let D=Y+1+r[q+1+r[k+1]];j*=j,p=j*j*(e[D]*V+t[D]*W+o[D]*$)}return 32*(u+l+d+p)}}function Kh(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Zh=require("three"),Or=new Zh.Triangle,Ql=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Or.a.fromBufferAttribute(r,o),Or.b.fromBufferAttribute(r,o+1),Or.c.fromBufferAttribute(r,o+2),i*=Or.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Or.a.fromBufferAttribute(this.positionAttribute,r*3),Or.b.fromBufferAttribute(this.positionAttribute,r*3+1),Or.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Or.a,o).addScaledVector(Or.b,i).addScaledVector(Or.c,1-(o+i)),Or.getNormal(t),this}};var ty=require("three");var lr=require("three"),ey=ja(Jh()),D_=new lr.Matrix4,B_=new lr.Matrix4,R_=new lr.Matrix4,Ni;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ni||(Ni={}));var Ii=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new lr.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new lr.Matrix4;this.matrixWorldRigid=new lr.Matrix4;this.shearScale=new lr.Matrix4;this.shearScaleInv=new lr.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof lr.Object3D&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}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 o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){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)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)Ni.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ni.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,ey.SVD)(o),c=D_.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=B_.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),l=R_.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new lr.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof lr.Matrix4?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Fd=class extends Ii(ty.Object3D){},G_=n=>n.type==="Mesh",wo=class extends Fd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new wo(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return G_(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};var Zi=require("three");var xc=require("three");var Vt=require("three");var nt=require("three"),Sn=new nt.Vector3,wn=new nt.Vector3,Mi=new nt.Matrix4,oy=[new nt.Vector3(-1,1,1),new nt.Vector3(-1,-1,1),new nt.Vector3(1,-1,1),new nt.Vector3(1,1,1),new nt.Vector3(-1,1,-1),new nt.Vector3(-1,-1,-1),new nt.Vector3(1,-1,-1),new nt.Vector3(1,1,-1)],V_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],z_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],ry=(n,r,e)=>{n.updateEntityBoxSize(Sn,wn),Mi.copy(r).multiply(n.matrixWorld),wn.x===0&&wn.y===0&&wn.z===0?e.push(new nt.Vector3(Sn.x,Sn.y,Sn.z).applyMatrix4(Mi)):oy.forEach(t=>{e.push(t.clone().multiply(wn).add(Sn).applyMatrix4(Mi))})},os=class extends nt.Box3{constructor(){super(...arguments);this.matrix=new nt.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new nt.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new nt.Vector3);return}ry(a,t,i)}}):ry(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Mi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(wn).multiplyScalar(.5),this.getCenter(Sn),Mi.copy(this.matrix).setPosition(Sn),this.vertices=oy.map(e=>e.clone().multiply(wn).applyMatrix4(Mi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=V_.map(([e,t])=>new nt.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new nt.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=z_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Ar={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var _t=require("three"),Ud=class extends _t.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,c=this.curves;s<c.length;s++){let u=c[s],l=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(r*l/a),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Hd=.001;function Wd(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Hd}function kd(n,r){let e=new _t.Vector3(...n.position),t=new _t.Vector3(...n.controlNext.position),o=new _t.Vector3(...r.controlPrevious.position),i=new _t.Vector3(...r.position);return Wd(e,t,i)&&Wd(e,o,i)}function ec(n){let r=n.points.map(l=>new _t.Vector3(...l.data.position)),e=[n.points[0]],t=new _t.Vector3(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Wd(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let l=0;l<a;l++){let d=e[l].data,p=new _t.Vector3(...d.position),f=new _t.Vector3(...d.controlPrevious.position),m=new _t.Vector3(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===a-1)){s[l]={...h,removedLength:0};continue}let y=o&&l==0?a-1:l-1,g=o&&l==a-1?0:l+1,x=e[y].data,S=e[g].data,w=new _t.Vector3(...x.position),b=new _t.Vector3(...S.position),T=w.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let v=kd(x,d),N=kd(d,S);if(!v||!N)s[l]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),C=P.clone().cross(T).length()/T.dot(P);s[l]={...h,tan:C,removedLength:d.roundness/C}}}for(let l=0;l<i;l++){let d=l,p=o&&l===a-1?0:l+1,f=s[d],m=s[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let d=l,p=o&&l===a-1?0:l+1,f=s[d],m=s[p],h=null;if(!kd(e[d].data,e[p].data))f.position.distanceTo(m.position)>Hd&&(h=new _t.CubicBezierCurve3(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Hd&&(h=new _t.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<a;l++){let d=s[l];if(d.removedLength===0){c[2*l]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(S),b=p.distanceTo(w)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),v=f.clone().lerp(T,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new _t.CubicBezierCurve3(f,v,N,m)}let u=new Ud;return c.forEach(l=>{l&&u.add(l)}),u}var Oe;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Oe||(Oe={}));var Ei=n=>Oe.is(n),j_={type:"completeState",isfromEntity:!0},F_=["x","y","z"],qd=new Vt.Vector3,k_=new Vt.Vector3().set(0,1,0),Li=n=>class extends Ii(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new os;this._recursiveBBox=new os;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Oe.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Oe.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Oe.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)bn.toOps(this.data,a.data).forEach(c=>{let u=xl.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=bn.patch(this.data,a),bn.toOps(this.data,a).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Ei(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Oe.is(o[i]))return o[i];if(Oe.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Oe.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)Ei(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Oe.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ei(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ei(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ei(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ei(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Vt.MathUtils.RAD2DEG,this.rotation.y*Vt.MathUtils.RAD2DEG,this.rotation.z*Vt.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return di(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,F_[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(qd.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Vt.MathUtils.DEG2RAD),this.rotation.setFromVector3(qd),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??jo.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Oe.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Oe.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return di(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let c=t,u=Gt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(delete d.name,Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ft.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=ft.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,bn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Gt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(kr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=ft.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=wi.resolve(o.overrides,l),p.updateByOp(t,lt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of Yr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of Yr.rootOverrideProps)if(Gt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=kr.filterOp(d.overrideData,l);p&&d.updateByOp(p,lt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=kr.filterOp(d.overrideData,t);if(p){let f;s===d.data&&t===p?f=o:f=lt.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!_r.is(t.props.type)&&Ar.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Ar.changeEntityProptotype(this,o,i);for(let a of this.children)Oe.is(a)&&a.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Gt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Gt(t.path,["cloner"])!==null){let a=lt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data;if(u.geometry.path.points.length<=1)return;let l=ec(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new Vt.Matrix4;c.updateMatrixWorld();let m=new Vt.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Vt.Matrix4().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new Vt.Matrix4().lookAt(p,g,k_),S=qd.setFromEuler(new Vt.Euler().setFromRotationMatrix(x)).multiplyScalar(Vt.MathUtils.RAD2DEG);h={...h,rotation:S.toArray()}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(j_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Ar.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Ar.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};var Ko=require("three");var Ue=require("three"),iy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=Ue.MathUtils.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return c===0?(m=new Ue.BufferGeometry,m.setAttribute("position",new Ue.Float32BufferAttribute([],3))):d||f?m=new ns(u,l,t,o,i,a,s,c*Math.PI/180,d,d,p,f):m=new Ue.CylinderGeometry(u,l,t,o,i,a,s,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Xo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function ny(n){return new Ue.Vector2(n.y,-n.x)}var ns=class extends Ue.BufferGeometry{constructor(r,e,t,o,i,a,s,c,u,l,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,c=c!==void 0?c:Math.PI*2,a&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,S=t/2,w=new Ue.Vector3,b=new Ue.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=l);let T=new Ue.Vector2(r,S),_=new Ue.Vector2(e,-S),v=null,N=null,P=null,C=null,O=T.clone().sub(_),A=0,M=0,L=0;p>0&&(A=Math.min(r,e)*(1-p),M=r-A,L=e-A);let X=T.clone();X.x-=A;let R=Math.PI-O.angle(),Z=O.angle(),z=Math.tan(Z/2),V=Math.tan(R/2),W=z+V,$=p?W:V,Y=p?W:z;if(u=Math.min(u,(r-M)/$,O.length()/W),l=Math.min(l,(e-L)/Y,O.length()/W),u>0){let j=u/z;v=T.clone().sub(new Ue.Vector2(j,u)),p&&(P=v.clone(),P.x-=A-W*u),T.sub(O.clone().setLength(j))}if(l>0){let j=l/V;N=_.clone().sub(new Ue.Vector2(j,-l)),_.add(O.clone().setLength(j)),p&&(C=N.clone(),C.x-=A-W*l,X.sub(O.clone().setLength(j)))}O=T.clone().sub(_);let q=O.length()<.5,k=[];for(let j=0;j<=o;j++){let D=[],ne=j/o,ee=ne*c+s,K=new Ue.Vector2(Math.sin(ee),Math.cos(ee));C&&N?(U(D,ne,K,R,l,C,-1,!0),U(D,ne,K,Z,l,N,-1,!1)):N?(B(D,K,N.x,0,-1),U(D,ne,K,Z,l,N,-1,!1)):a||B(D,K,e,L,-1);let te=ny(O).normalize();if(Xo(te,K,w),!q)for(let Q=0;Q<=i;Q++){let le=Q/i,ie=O.clone().multiplyScalar(le).add(_);Xo(ie,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/t),D.push(x++)}if(P&&v?(U(D,ne,K,R,u,v,1,!1),U(D,ne,K,Z,u,P,1,!0)):v?(U(D,ne,K,R,u,v,1,!1),B(D,K,v.x,0,1)):a||B(D,K,r,M,1),p&&!q){let Q=ny(O).multiplyScalar(-1).normalize();Xo(Q,K,w);for(let le=0;le<=i;le++){let ie=le/i,ae=O.clone().multiplyScalar(-ie).add(X);Xo(ae,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/t),D.push(x++)}}p&&!a&&D.push(D[0]),k.push(D)}for(let j=0;j<k.length-1;j++)for(let D=0;D<k[0].length-1;D++){if(a&&p&&D==i)continue;let ne=k[j][D],ee=k[j+1][D],K=k[j+1][D+1],te=k[j][D+1],Q=h[K*3+0],le=h[K*3+2];m.push(ne,ee,te),(Q!=0||le!=0)&&m.push(ee,K,te)}c<Math.PI*2&&(F(-1,k[0],s),F(1,k[k.length-1],s+c)),this.setIndex(m),this.setAttribute("position",new Ue.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Ue.Float32BufferAttribute(y,3)),this.setAttribute("uv",new Ue.Float32BufferAttribute(g,2));function U(j,D,ne,ee,K,te,Q,le){for(let ie=0;ie<d+1;ie++){let ae=ie/d,de=Q<0?ae:1-ae;le&&(de-=1),de*=ee;let ce=new Ue.Vector2(Math.sin(de),Math.cos(de)*Q),ue=ce.clone().multiplyScalar(K).add(te);Xo(ue,ne,b),h.push(b.x,b.y,b.z),Xo(ce,ne,w),y.push(w.x,w.y,w.z),g.push(D,.5+b.y/t),j.push(x++)}}function B(j,D,ne,ee,K){let te=new Ue.Vector3,Q=new Ue.Vector2,le=[ne,ee];K<0&&le.reverse();for(let ie of le)Q.set(ie,S*K),Xo(Q,D,te),h.push(te.x,te.y,te.z),y.push(0,K,0),g.push(.5,.5),j.push(x++)}function F(j,D,ne){let ee=new Ue.Vector2(Math.sin(ne),Math.cos(ne)),K=new Ue.Vector2(-Math.cos(ne),Math.sin(ne)),te=new Ue.Vector3,Q=j<0?(ae,de,ce)=>m.push(ae,de,ce):(ae,de,ce)=>m.push(ae,ce,de),le=new Ue.Vector2((r+e+M+L)/4,0);Xo(le,ee,te),h.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ie=x++;for(let ae of D){let de=h.slice(ae*3,ae*3+3);h.push(...de),y.push(K.x,0,K.y);let ce=g.slice(ae*2,ae*2+2);g.push(...ce),x++}for(let ae=ie+1;ae<x-1;ae++)Q(ie,ae,ae+1);Q(ie,x-1,ie+1)}}};var ay=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=Ko.MathUtils.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return c===0?(p=new Ko.BufferGeometry,p.setAttribute("position",new Ko.Float32BufferAttribute([],3))):u>0||l>0||c<360?p=new ns(0,r/2,t,o,i,a,s,c*Math.PI/180,u,l,d,0,!0):p=new Ko.ConeGeometry(r/2,t,o,i,a),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Zt=require("three"),sy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:c}=n.parameters,u;return s==0?u=new Zt.BoxGeometry(r,e,t,o,i,a):u=new Yd(r,e,t,o,i,a,s,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},$d=Math.PI/2,Yd=class extends Zt.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),c=Math.floor(c),s=Math.min(s,r/2,e/2,t/2);let l=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,a,i,0),y("z","y","x",1,-1,t,e,-r,a,i,1),y("x","z","y",1,1,r,t,e,o,a,2),y("x","z","y",1,-1,r,t,-e,o,a,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),s>0&&(g("z","y","x",-1,-1,1,t,e,r,a,0),g("z","y","x",1,-1,-1,t,e,r,a,1),g("z","y","x",-1,1,-1,t,e,r,a,1),g("z","y","x",1,1,1,t,e,r,a,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Zt.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Zt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Zt.Float32BufferAttribute(f,2));function y(S,w,b,T,_,v,N,P,C,O,A){let M=(v-2*s)/C,L=(N-2*s)/O,X=v/2-s,R=N/2-s,Z=P/2,z=C+1,V=O+1,W=0,$=0,Y=new Zt.Vector3;for(let q=0;q<V;q++){let k=q*L-R;for(let U=0;U<z;U++){let B=U*M-X;Y[S]=B*T,Y[w]=k*_,Y[b]=Z,d.push(Y.x,Y.y,Y.z),Y[S]=0,Y[w]=0,Y[b]=P>0?1:-1,p.push(Y.x,Y.y,Y.z),f.push(U/C),f.push(1-q/O),W+=1}}for(let q=0;q<O;q++)for(let k=0;k<C;k++){let U=m+k+z*q,B=m+k+z*(q+1),F=m+(k+1)+z*(q+1),j=m+(k+1)+z*q;l.push(U,B,j),l.push(B,F,j),$+=6}u.addGroup(h,$,A),h+=$,m+=W}function g(S,w,b,T,_,v,N,P,C,O,A){let M=(N-2*s)/O,L=N/2-s,X=P/2-s,R=C/2,Z=O+1,z=0,V=0,W=new Zt.Vector3,$=new Zt.Vector3;for(let Y=0;Y<c+1;Y++){let q=Y/c*$d,k=Math.sin(q)*s,U=(1-Math.cos(q))*s,B=Math.sin(q),F=Math.cos(q);W[w]=(X+k)*_,W[b]=(R-U)*v,$[S]=0,$[w]=B*Math.sign(W[w]),$[b]=F*Math.sign(W[b]);for(let j=0;j<Z;j++){let D=j*M-L;W[S]=D*T,d.push(W.x,W.y,W.z),p.push($.x,$.y,$.z),f.push(j/O),f.push(0),z+=1}}for(let Y=0;Y<c;Y++)for(let q=0;q<O;q++){let k=m+q+Z*Y,U=m+q+Z*(Y+1),B=m+(q+1)+Z*(Y+1),F=m+(q+1)+Z*Y;l.push(k,U,F),l.push(U,B,F),V+=6}u.addGroup(h,V,A),h+=V,m+=z}function x(S,w,b){let T=new Zt.Vector3,_=new Zt.Vector3(r/2,e/2,t/2);_.subScalar(s);let v=[],N=S*w*b>0?(C,O,A)=>l.push(C,O,A):(C,O,A)=>l.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=$d*(1-C/c),M=Math.cos(A),L=Math.sin(A),X=0;for(let R=0;R<=C;R++){let Z=Math.cos(X),z=Math.sin(X);T.x=M*Z,T.y=L,T.z=M*z;let V=_.clone().addScaledVector(T,s);d.push(S*V.x,w*V.y,b*V.z),p.push(S*T.x,w*T.y,b*T.z),f.push(0,0),O.push(m++),X+=$d/C}v.push(O)}let P=v.length-1;for(let C=0;C<P;C++){let O=v[C],A=v[C+1],M=O.length-1;N(O[0],A[1],A[0]);for(let L=1;L<=M;L++)N(O[L-1],O[L],A[L]),N(O[L],A[L+1],A[L])}}}};var it=require("three"),Zo=class extends it.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],c=[],u=[];l(),d(),this.setAttribute("position",new it.Float32BufferAttribute(s,3)),this.setAttribute("normal",new it.Float32BufferAttribute(u,3)),this.setAttribute("uv",new it.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new it.Vector3,h=m.clone(),y=new it.Triangle,g=i*o,x=o-g,S=a+1,w=new it.Vector3,b=(z,V)=>w.subVectors(z,V).normalize(),T=(z,V)=>Array(z).fill(void 0).map(V),_=T(r.length/3,(z,V)=>new it.Vector3().fromArray(r,V*3).setLength(o)),v=[],N=1e6;for(let z=0;z<_.length;z++){let V=_[z],W=[],$,Y,q,k=1e10,U=-1;for(;(U=e.indexOf(z,U+1))!=-1;){let D=U-U%3;$=e[D+(U+1)%3],Y=e[D+(U+2)%3],q=V.distanceToSquared(_[$]),k=Math.min(k,q),W.push([$,Y,q])}k+=1e-6;let B=[],F=0,j=W.length;for(let D=0;D<j;D++){[$,Y,q]=W[F];let ne=v[$]?.includes(z)==!0;q<=k&&B.push($+ +ne*N),F=W.findIndex(ee=>ee[0]==Y)}v.push(B)}let P=[];{let z=0,V=0,W,$,Y=f==3;for(let q=0;q<=a;q++){W=q*(q+1)/2,$=(q+1)*(q+2)/2;for(let k=0;k<a-q;k++)[z,V]=[W+k+q+2,$+k+q+3],P.push(W,$,...Y?[V,W]:[z,$],V,z),[W,$]=[z,V];P.push(W,$,W+a+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),M=m.clone(),L=m.clone(),X=[],R=T(_.length,()=>T(f,()=>m.clone()));for(let z=0;z<_.length;z++){m.copy(_[z]).normalize(),C.copy(m).multiplyScalar(x);let V=v[z];for(let B=0;B<V.length;B++){let F=V[B],j=V[(B+1)%f];y.setFromPointsAndIndices(_,z,F%N,j%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,R[z][B])}let W=[],$=[],Y=[],q=new it.Vector3;a==0&&[...R[z]].reduce((B,F)=>B.add(F),q).multiplyScalar(1/f);for(let B=0;B<f;B++){let F=[],j=(B-1+f)%f,D=R[z][j],ne=R[z][B];m.copy(D).sub(C),h.copy(ne).sub(C);let ee=C.angleTo(m),K=m.angleTo(h),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(C).setLength(x+te),$.push(te);let Q=[O,D,ne];for(let le=0;le<2;le++){let ie=Q[le],ae=Q[le+1];M.subVectors(ie,C),L.subVectors(ae,C),A.crossVectors(M,L).normalize();for(let de=0;de<S;de++){let ce=[ee,K][le]*de/S;m.copy(M).applyAxisAngle(A,ce).add(C),W.push(m.clone()),le&&(b(m,C),F.push([de==0?ie:m.clone(),w.clone()]))}le&&(b(ae,C),F.push([ae,w.clone()]))}Y.push(F)}X.push(Y);let k=2*S,U=2;for(let B=0;B<f;B++){let F=k*B,j=k*((B+1)%f),D=[W[F]];for(let ee=1;ee<S;ee++){M=W[F+ee],L=W[j+ee],D.push(M);for(let K=1,te=ee-U+1;K<=te;K++)m.lerpVectors(M,L,K/(te+1)),m.sub(C).setLength($[B]).add(C),D.push(m.clone());D.push(L)}for(let ee=0;ee<S;ee++)D.push(W[ee+S+F]);D.push(W[j+S]);let ne=P.map(ee=>D[ee]);s.push(...ne.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...ne.map(ee=>(b(ee,C),[w.x,w.y,w.z])).flat())}}let Z=[];for(let z=0;z<v.length;z++)for(let V=0;V<f;V++){let W=v[z][V];if(W<N){let $=v[W].findIndex(k=>k%N==z),Y=X[z][V],q=X[W][$];for(let k=0;k<S;k++){let U=Y[k],B=q[S-k],F=Y[k+1],j=q[S-(k+1)];[U,B,F,F,B,j].forEach(D=>{s.push(D[0].x,D[0].y,D[0].z),u.push(D[1].x,D[1].y,D[1].z)})}Z.push(Y[0][0],q[S][0],Y[S][0],q[0][0])}}for(;Z.length;){let z,V,W,$;[z,V]=Z.splice(0,2);let Y=[z];for(;z!=V;)Y.push(V),W=Z.indexOf(V),$=W%2,V=Z.splice(W-$,2)[1-$];w.subVectors(Y[0],Y[1]).cross(m.subVectors(Y[0],Y[2])).normalize();let q=w.dot(Y[0])<0;q&&w.negate();for(let k=1;k<=Y.length-2;k++)[Y[k+ +q],Y[k+1-+q],Y[0]].forEach(U=>{s.push(U.x,U.y,U.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new it.Vector3;for(let _=0;_<s.length;_+=3){p.x=s[_+0],p.y=s[_+1],p.z=s[_+2];let v=b(p)/2/Math.PI+.5,N=T(p)/Math.PI+.5;c.push(v,1-N)}let f=new it.Vector3,m=new it.Vector3,h=new it.Vector3,y=new it.Vector3,g=new it.Vector2,x=new it.Vector2,S=new it.Vector2,w=(_,v,N,P)=>{P<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=P/2/Math.PI+.5)};for(let _=0,v=0;_<s.length;_+=9,v+=6){f.set(s[_+0],s[_+1],s[_+2]),m.set(s[_+3],s[_+4],s[_+5]),h.set(s[_+6],s[_+7],s[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),S.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=b(y);w(g,v+0,f,N),w(x,v+2,m,N),w(S,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],P=c[_+4],C=Math.max(v,N,P),O=Math.min(v,N,P);C>.9&&O<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function b(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new Zo(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var ly=require("three"),cy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new is(r*.5,i,a):new ly.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},is=class extends Zo{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-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,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[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],c="DodecahedronGeometry";super(a,s,c,r,e,t),this.type=c}static fromJSON(r){return new is(r.radius,r.corner,r.cornerSides)}};var Le=require("three");var Se=require("three"),as=1e-12,Di=class{constructor(r){this.position=new Se.Vector2;this.startPosition=new Se.Vector2;this.uuid=Se.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Di(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Bi=class extends Di{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Bi(this.parent).copy(this)}},Cr=class extends Di{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Bi(this),new Bi(this))}static create(e,t){let o=new Cr(e,new Se.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}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 o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.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 Cr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Se.Vector2,t=new Se.Vector2){let[o,i]=this.computeTangents();return o&&i&&(dy(o,e),dy(i,t)),[e,t]}computeTangent(e=new Se.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Se.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function dy(n,r=new Se.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Kd=n=>n,Ri=new Se.Vector2,tc=new Se.Vector2,U_=new Se.Vector2,H_=new Se.Vector2,W_=new Se.Vector2,q_=new Se.Vector2,py=new Se.Vector3,fy=new Se.Vector3;function my(n){let r=new Se.Vector2;r.addVectors(n.v0,Ri.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Se.Vector2;return e.addVectors(n.v2,tc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Se.CubicBezierCurve(n.v0,r,e,n.v2)}function ss(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function $_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Y_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Zd(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function hy(n,r,e){return uy(n,r)&&uy(r,e)&&Xd(n.position,r.position,e.position)}function Xd(n,r,e){return Ri.copy(r).sub(n).cross(tc.copy(e).sub(n))===0}function yy(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+c,a+u),o.set(s-c,a-u),[t,o]}function gy(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function xy(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((a+c)*(a+c)+(s+u)*(s+u)),d;return Zd(r,n,e)>Math.PI&&(l*=-1),ss(u,s)?d=(s+u)*(t/l-.5)*8/3/(a-c):d=(a+c)*(t/l-.5)*8/3/(u-s),o.set(r.x-d*s,r.y+d*a),i.set(e.x+d*u,e.y-d*c),[o,i]}function Qd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function uy(n,r){return Xd(n.position,n.controls[1].position,r.position)&&Xd(n.position,r.controls[0].position,r.position)}function vy(n,r,e,t,o=.5){let i=Ri.subVectors(r,n).multiplyScalar(o).add(n),a=tc.subVectors(e,r).multiplyScalar(o).add(r),s=U_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=H_.subVectors(a,i).multiplyScalar(o).add(i),l=W_.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=q_.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function by(n,r,e=12,t=!0){let o=fy.set(0,0,0),i,a=0,s=[];for(let c=0;c<r.length;c++){let u=Kd(r[c]),l=Ri,d=Qo(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof Se.CubicBezierCurve||u instanceof Se.QuadraticBezierCurve||u instanceof Se.LineCurve){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&Y_(i,o))continue;i===void 0&&(i=py),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function Sy(n,r,e,t=12,o=!0){let i=fy.set(0,0,0),a=0,s=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=Kd(r[c]),d=Ri,p=Qo(l,t);s.push(p);for(let f=0;f<=p;f++)if(l instanceof Se.CubicBezierCurve||l instanceof Se.QuadraticBezierCurve||l instanceof Se.LineCurve){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=py:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Jd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let c=Qo(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),s+=c}a.curveAfter!==void 0&&(s+=Qo(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Qo(n[0].roundedCurveCorner,r)*.5),t}function Qo(n,r=12){return n&&n instanceof Se.EllipseCurve?r*2:n&&(n instanceof Se.LineCurve||n instanceof Se.LineCurve3)?1:n&&n instanceof Se.SplineCurve?r*n.points.length:r}function wy(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Kd(r[a]),c=Qo(s,e),u=Ri;for(let l=0;l<=c;l++)if(s instanceof Se.CubicBezierCurve||s instanceof Se.QuadraticBezierCurve||s instanceof Se.LineCurve){if(s.getPoint(l/c,u),o!==void 0&&$_(o,u,as))continue;o===void 0&&(o=tc),o.copy(u),n.push(u.x,u.y),i++}}return ss(n[0],n[n.length-2],as)&&ss(n[1],n[n.length-1],as)&&(n.pop(),n.pop()),t&&i>1&&!(ss(n[i-1],n[1],as)&&ss(n[i-2],n[0],as))&&(n.push(n[0],n[1]),i++),n}var eu=new Le.Vector2,X_=new Le.Vector2,K_=new Le.Vector2,Z_=new Le.Vector2,Q_=new Le.Vector2,J_=new Le.Vector2,Ee=class extends Le.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Le.Plane(new Le.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Le.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Ee;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Cr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ee.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}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,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let a=0,s=this.shapeHoles.length;a<s;a++){let c=this.shapeHoles[a],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}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 o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.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._width=e,this._height=t}applyScale(e,t){let o=eu.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Le.MathUtils.generateUUID()){let i;e instanceof Le.Vector2?i=e:i=new Le.Vector2(e,t);let a=new Cr(o,i);return a.roundness=this.roundness,a}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,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}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}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return by(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Jd(this.points,e,!1),this.roundedCurveDivisions=Jd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Sy(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),wy(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=Qo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(s<o+l)return[c,(s-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,c=s[e];if(Qd(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(eu.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Qd(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 o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=a.roundness,l=s&&c&&hy(s,a,c);if(!a.controlsMoved()&&u>0&&!l){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,m=a.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),x=Math.min(u,y*.499),S=Math.min(g,x),w=1-S/h,b=S/y,T=d.getPointAt(w,eu),_=p.getPointAt(b,X_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=Zd(T,a.position,_)/2,P=Math.tan(N)*T.distanceTo(a.position),[C,O]=yy(T,_,P,K_,Z_),A=gy(C,O,a.position),[M,L]=xy(A,T,_,P,Q_,J_);v=new Le.CubicBezierCurve(T.clone(),M.clone(),L.clone(),_.clone())}else v=new Le.QuadraticBezierCurve(T.clone(),a.position.clone(),_.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Le.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,c=t,u=s.getUtoTmapping(o,0),l=vy(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),a!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new Ee(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){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Cr(Le.MathUtils.generateUUID(),new Le.Vector2(a,s));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ee;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Le.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],c,u;for(c=0,u=a.length;c<u;c++)a[c]instanceof Le.QuadraticBezierCurve&&(a[c]=my(a[c]));for(c=0,u=a.length;c<u;c++){let p=a[c],f=c>0?a[c-1]:null,m;p instanceof Le.CubicBezierCurve?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof Le.LineCurve&&(m=this.createPoint(p.v1)),m!==void 0&&(f!==null&&o(m,f),s.push(m))}let l=a[a.length-1],d=!1;return l instanceof Le.CubicBezierCurve?l.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(l.v2),d=!0):l instanceof Le.LineCurve&&l.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof Le.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new Ee;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var ru=Math.PI*2;function tu({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function eP(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function Ty(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function tP(n,r,e,t,o,i,a,s,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*s,y=m*-i/o*a,g=h+(n+e)/2,x=y+(r+t)/2,S=(a-h)/o,w=(s-y)/i,b=(-a-h)/o,T=(-s-y)/i,_=Ty(1,0,S,w),v=Ty(S,w,b,T);return!u&&v>0&&(v-=ru),u&&v<0&&(v+=ru),{centerx:g,centery:x,ang1:_,ang2:v}}function _y({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=tP(n,r,e,t,o,i,u,l,a,s),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(ru/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let S=0;S<x;S++)c.push(eP(f,m)),f+=m;return c.map(S=>{let{x:w,y:b}=tu(S[0],o,i,h,y),{x:T,y:_}=tu(S[1],o,i,h,y),{x:v,y:N}=tu(S[2],o,i,h,y);return{x1:w,y1:b,x2:T,y2:_,x:v,y:N}})}var Tn=require("three");var Ce;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ce||(Ce={}));var et;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(et||(et={}));function he(n,r){if(!n)throw r||"Assertion Failed!"}var pe=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){he(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){he(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){he(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){he(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),ls=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),rc=function(){function n(r){this.side=r,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(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Gi=function(){function n(){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 n}(),Py=function(){function n(){var r=new Gi,e=new ls,t=new rc(0),o=new rc(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new rc(0),t=new rc(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;he(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;he(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Gi,e=new Gi,t=new ls,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Gi;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new ls;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ls;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Gi;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new ls;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),s+c-2<=r&&pe.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&pe.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){he(o.prev===i),c=o.anEdge;do he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c),he(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(he(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){he(a.prev===s),c=a.anEdge;do he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c),he(c.Org===a),c=c.Onext;while(c!==a.anEdge)}for(he(a.prev===s&&a.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)he(c.Sym.next===u.Sym),he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Org!==null),he(c.Dst!==null),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c);he(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Oy=function(){function n(){this.handle=null}return n}(),Ay=function(){function n(){this.key=null,this.node=0}return n}(),rP=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Oy,this.handles[t]=new Ay;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,he(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Oy;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ay}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;he(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),ou=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Cy=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),oP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Cy,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Cy;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),nP=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?pe.vertLeq(i.Org,a.Org)?pe.edgeSign(a.Dst,i.Org,a.Org)<=0:pe.edgeSign(i.Dst,a.Org,i.Org)>=0:pe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return pe.edgeSign(i.Dst,o,i.Org)>=0;var s=pe.edgeEval(i.Dst,o,i.Org),c=pe.edgeEval(a.Dst,o,a.Org);return s>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&he(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){he(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new ou;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ce.ODD:return(e&1)!==0;case Ce.NONZERO:return e!==0;case Ce.POSITIVE:return e>0;case Ce.NEGATIVE:return e<0;case Ce.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,c,u,l,d=!0;u=t;do he(pe.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;s=n.regionBelow(c),u=s.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),s.windingNumber=c.windingNumber-u.winding,s.inside=n.isWindingInside(r,s.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=s,l=u;c.dirty=!0,he(c.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=pe.vertL1dist(e,r),i=pe.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(pe.vertLeq(o.Org,i.Org)){if(pe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;pe.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(pe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(he(!pe.vertEq(o.Dst,i.Dst)),pe.vertLeq(o.Dst,i.Dst)){if(pe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(pe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,c=o.Dst,u=i.Dst,l,d,p=new Gi,f,m;if(he(!pe.vertEq(u,c)),he(pe.edgeSign(c,r.event,a)<=0),he(pe.edgeSign(u,r.event,s)>=0),he(a!==r.event&&s!==r.event),he(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(l=Math.min(a.t,c.t),d=Math.max(s.t,u.t),l>d))return!1;if(pe.vertLeq(a,s)){if(pe.edgeSign(u,a,s)>0)return!1}else if(pe.edgeSign(c,s,a)<0)return!1;return n.debugEvent(r),pe.intersect(c,a,u,s,p),he(Math.min(a.t,c.t)<=p.t),he(p.t<=Math.max(s.t,u.t)),he(Math.min(u.s,c.s)<=p.s),he(p.s<=Math.max(s.s,a.s)),pe.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=pe.vertLeq(a,s)?a:s,pe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),pe.vertEq(p,a)||pe.vertEq(p,s)?(n.checkForRightSplice(r,e),!1):!pe.vertEq(c,r.event)&&pe.edgeSign(c,r.event,p)>=0||!pe.vertEq(u,r.event)&&pe.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(pe.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),pe.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,c,s,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,c=a.eUp,u=!1;if(s.Dst!==c.Dst&&n.checkForIntersect(r,e),pe.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),u=!0),pe.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,a,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}pe.vertLeq(c.Org,s.Org)?o=c.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,c;if(o=e.eUp,pe.vertEq(o.Org,t)){he(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!pe.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}he(!1),e=n.topRightRegion(e),c=n.regionBelow(e),a=c.eUp.Sym,i=s=a.Onext,c.fixUpperEdge&&(he(i!==a),n.deleteRegion(r,c),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),pe.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,c,u=new ou;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,pe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=pe.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var l=r.mesh.connect(s.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);he(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new ou,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new oP(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(he(e.fixUpperEdge),he(++t===1)),he(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,pe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new rP(i,pe.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,he(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!pe.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),iP=function(){function n(){this.mesh=new Py,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=Ce.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 n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,c=[0,0,0],u=[0,0,0],l=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,r[0]=p[0],r[1]=p[1],r[2]=p[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;pe.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;pe.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(pe.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(pe.edgeGoesLeft(o.Lnext)||pe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(pe.edgeGoesRight(t.Lprev)||pe.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=a,++a}this.elementCount=a,e===et.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===et.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,l=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[l++]=i,this.elements[l++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Py),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=Ce.ODD),e===void 0&&(e=et.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),nP.computeInterior(this,a);var s=this.mesh;return e===et.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===et.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Nr(n){var r=n.windingRule,e=r===void 0?Ce.ODD:r,t=n.elementType,o=t===void 0?et.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,c=s===void 0?2:s,u=n.normal,l=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new iP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,a,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var dz=Ce.ODD,uz=Ce.NONZERO,pz=Ce.POSITIVE,fz=Ce.NEGATIVE,mz=Ce.ABS_GEQ_TWO,hz=et.POLYGONS,yz=et.CONNECTED_POLYGONS,gz=et.BOUNDARY_CONTOURS;var Ir=require("three");var oc=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*oc.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*oc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,3*r);a+=3*r;let u=new Float32Array(o,a*i,2*r);e?(s.set(this.positions.subarray(0,this.size*3)),c.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),c.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=c,this.uvs=u,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},cs=oc;cs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ey=ja(My()),ds={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},lu={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},cu={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},su=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),en=class extends Ir.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=Ce.ODD,c=!1){super();this.forPathBevel=c;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(C=>{let O=C.extractShapePointsToFlatArray([],i),A=[];for(let M=O.length-1;M>=1;M-=2){let L=O[M-1],X=O[M-0];A.push(L,X)}return A}),d=[],p=[];for(let C=0;C<u.length;C+=2)p.push([u[C],u[C+1]]);d.push(p);for(let C=0;C<l.length;C++){let O=l[C],A=[];for(let M=0;M<O.length;M+=2)A.push([O[M],O[M+1]]);d.push(A)}let f;e.isText?f=new Ir.Box2().setFromPoints(e.points.map(O=>O.position)).getSize(new Ir.Vector2).length()*.1:d[0].length===0?f=o:f=(0,Ey.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,t/2),this._bevelSegments=Math.floor(a));let m;try{m=Nr({windingRule:s,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{m=ds}let h;try{h=Nr({windingRule:Ce.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]})}catch{h=lu}if(!m)throw new Error("error generating geometry");let y=m.elementCount;if(h){m.elementCount+=h.elementCount;for(let C=0;C<h.elements.length;C++){let O=h.elements[C],A=C%2===0?m.vertexCount:0;m.elements.push(O+A)}for(let C=0;C<h.vertexIndices.length;C++){let O=h.vertexIndices[C],A=m.vertexCount;m.vertexIndices.push(O+A)}for(let C=0;C<h.vertices.length;C++){let O=h.vertices[C];m.vertices.push(O)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let C=0,O=m.vertexCount;C<O;C++){let A=C*2,M=m.vertices[A+0],L=m.vertices[A+1];M<g&&(g=M),M>x&&(x=M),L<S&&(S=L),L>w&&(w=L)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new cs(this._computeBufferEstimatedSize(m));let b=[],T=[];for(let C=m.elementCount-1;C>=0;C--){let O=C>=y,A=C*2,M=m.elements[A+0],L=m.elements[A+1],X=M+L,R={start:M,count:L,normals:[],continuous:[],concave:[]},Z=M,z=X-1,V=M+1,W=this._shape.roundedCurves.length;do{let U=Z-M,B=m.vertices[z*2+0],F=m.vertices[z*2+1],j=m.vertices[Z*2+0],D=m.vertices[Z*2+1],ne=m.vertices[V*2+0],ee=m.vertices[V*2+1],K=j-B,te=D-F,Q=Math.sqrt(K*K+te*te);K/=Q,te/=Q;let le=j-ne,ie=D-ee,ae=Math.sqrt(le*le+ie*ie);le/=ae,ie/=ae,R.normals[U*2+0]=-ie,R.normals[U*2+1]=le,R.concave[U]=K*ie-te*le>0;let de=m.vertexIndices[Z];if(Array.isArray(de))R.continuous[U]=!1;else{let[ce,ue]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(ue>0&&ue<1)R.continuous[U]=!0;else{let ge=ue===1?ce+1:ce-1;ge=(ge+W)%W;let Ne=ue===1?0:1,Ye=this._shape.roundedCurves[ce].getTangent(ue),Ie=this._shape.roundedCurves[ge].getTangent(Ne);R.continuous[U]=Ye.dot(Ie)>.95}}O&&(R.normals[U*2+0]*=-1,R.normals[U*2+1]*=-1),[z,Z,V]=[Z,V,V+1],V>=X&&(V-=L)}while(V!==M+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:m.vertices.slice(M*2,X*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((U,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:m.vertices.slice(M*2,X*2)});let Y=0;for(let U=1;U<=this._bevelSegments;U++){let B=U/this._bevelSegments*Math.PI/2,F=(1-Math.cos(B))*this._bevel,j=[],D=[],ne=[],ee=[],K=0;for(let Q=0;Q<L;Q++){let le=Q*2,ie=(Q-1+L)%L*2,ae=m.vertices[R.start*2+le+0],de=m.vertices[R.start*2+le+1],ce=-R.normals[ie+0]*F,ue=-R.normals[ie+1]*F,ge=-R.normals[le+0]*F,Ne=-R.normals[le+1]*F;if(R.concave[Q]||!R.concave[Q]&&O){let Ye=Math.atan2(ue,ce),Ie=Math.atan2(Ne,ge);Ie>Ye&&(Ie-=Math.PI*2);let ke=Ie-Ye;if(R.continuous[Q]||O){let qt=Ye+ke/2,Te=Math.cos(qt)*F,mt=Math.sin(qt)*F;j[2*K+0]=ae+Te*(O?-1:1),j[2*K+1]=de+mt*(O?-1:1),ee[K]=Q,K++}else{let qt=Math.max(1,Math.floor(i/4*Math.abs(ke)/Math.PI));for(let Te=0;Te<=qt;Te++){let mt=Ye+ke*(Te/qt),bt=Math.cos(mt)*F,Fn=Math.sin(mt)*F;j[2*K+0]=ae+bt,j[2*K+1]=de+Fn,ee[K]=Q,K++}}}else j[2*K+0]=ae+ce,j[2*K+1]=de+ue,ee[K]=Q,D[Q]=K,K++,j[2*K+0]=ae,j[2*K+1]=de,ee[K]=Q,K++,j[2*K+0]=ae+ge,j[2*K+1]=de+Ne,ee[K]=Q,ne[Q]=K,K++}let te=Nr({windingRule:Ce.POSITIVE,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:Q=>{let ie=Q.Org.idx,ae=ee[ie],de=ee[(ie+1)%ee.length];Q.idx=[ae,de],Q.Sym.idx=[de,ae]},vertexIdCallback:Q=>{let le=Q.Lprev.idx;return[le?le[1]:0,Q.idx?Q.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${U}'th loop`);if(!te.vertexCount){let Q=(U-1)/this._bevelSegments*Math.PI/2;Y=(1-Math.sin(Q))*this._bevel;break}for(let Q=0;Q<te.vertexIndices.length;Q++){let[le,ie]=te.vertexIndices[Q];if(le===ie)continue;let ae=ie;ie<le&&(ae+=L);for(let de=le;de<ae;de++){let ce=de%L,ue=(de+1)%L;if(!R.continuous[ce]||!R.continuous[ue]){te.vertexIndices[Q]=[le,ce],te.vertexIndices.splice(Q+1,0,[ue,ie]),te.vertices.splice((Q+1)*2,0,te.vertices[Q*2],te.vertices[Q*2+1]);break}}}$.push({bevelI:U,angle:B,size:F,boundary:te,reverseMap:ee,insetPoints:j})}let q=(U,B,F)=>{let j=0,D=U.boundary.vertexIndices.length;for(;j<D&&F(U.boundary.vertexIndices[B]);)B=(B+1)%D,j++;return j},k=b.length;for(let U=1;U<$.length;U++){let B=$[U-1],F=$[U],j=B.boundary.vertexIndices.length,D=F.boundary.vertexIndices.length;if(!j||!D)break;let ne=R.concave.length,ee=0,K=su(ee,L);for(;!B.boundary.vertexIndices.filter(K).length||!F.boundary.vertexIndices.filter(K).length;)ee++,K=su(ee,L);let te=B.boundary.vertexIndices.findIndex(K),Q=F.boundary.vertexIndices.findIndex(K);do te=(te+1)%j;while(K(B.boundary.vertexIndices[te]));do Q=(Q+1)%D;while(K(F.boundary.vertexIndices[Q]));ee=(ee+1)%L;let le=ee,ie=0,ae=this._buildBevelVert(R,B,(te-1+j)%j,void 0,ie),de=this._buildBevelVert(R,F,(Q-1+D)%D,void 0,ie),ce=ae,ue=de,ge,Ne,Ye=!1;do{ie=(ee||ne)/ne,K=su(ee,L);let Ie=q(B,te,K),ke=q(F,Q,K),qt=Ye;if(Ye=!1,Ie&&!ke){for(let Te=0;Te<Ie;Te++)ge=this._buildBevelVert(R,B,(te+Te)%j,Te/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge;Ye=!0}else if(!Ie&&ke)for(let Te=0;Te<ke;Te++)Ne=this._buildBevelVert(R,F,(Q+Te)%D,Te/(ke-1),ie),b.push(ue.topN,ce.topP,Ne.topP),c===!1&&b.push(ce.bottomP,ue.bottomN,Ne.bottomP),ue=Ne;else if(Ie&&ke)if(ge=this._buildBevelVert(R,B,te,0,ie),Ne=this._buildBevelVert(R,F,Q,0,ie),qt?(b.push(ce.topN,Ne.topP,ue.topN),b.push(ce.topN,ge.topP,Ne.topP),c===!1&&(b.push(Ne.bottomP,ce.bottomN,ue.bottomN),b.push(Ne.bottomP,ge.bottomP,ce.bottomN))):(b.push(ue.topN,ce.topN,ge.topP),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&(b.push(ge.bottomP,ce.bottomN,ue.bottomN),b.push(ge.bottomP,ue.bottomN,Ne.bottomP))),ce=ge,ue=Ne,Ie===ke)for(let Te=1;Te<Ie;Te++)ge=this._buildBevelVert(R,B,(te+Te)%j,Te/(Ie-1),ie),Ne=this._buildBevelVert(R,F,(Q+Te)%D,Te/(ke-1),ie),b.push(ce.topN,ge.topP,ue.topN),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&(b.push(ge.bottomP,ce.bottomN,ue.bottomN),b.push(ge.bottomP,ue.bottomN,Ne.bottomP)),ce=ge,ue=Ne;else if(Ie>ke){let Te=Ie/ke,mt=0;for(let bt=1;bt<Ie;bt++)ge=this._buildBevelVert(R,B,(te+bt)%j,bt/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge,bt>(mt+1)*Te&&(mt++,Ne=this._buildBevelVert(R,F,(Q+mt)%D,mt/(ke-1),ie),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&b.push(ge.bottomP,ue.bottomN,Ne.bottomP),ue=Ne)}else{let Te=ke/Ie,mt=0;for(let bt=1;bt<ke;bt++)Ne=this._buildBevelVert(R,F,(Q+bt)%D,bt/(ke-1),ie),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&b.push(ge.bottomP,ue.bottomN,Ne.bottomP),ue=Ne,bt>(mt+1)*Te&&(mt++,ge=this._buildBevelVert(R,B,(te+mt)%j,mt/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge)}te=(te+Ie)%j,Q=(Q+ke)%D,ee=(ee+1)%ne}while(ee!==le)}if(c===!1&&this._depth>this._bevel*2&&this._buildWall($,R,b),O){let U=[];for(let B=b.length-1;B>=k+2;B-=3){let F=b[B-2],j=b[B-1],D=b[B-0];U.push(D,j,F)}b.splice(k,b.length-k,...U)}if(O){let U=[];for(let B=$[$.length-1].boundary.vertices.length-1;B>=1;B-=2){let F=$[$.length-1].boundary.vertices[B-1],j=$[$.length-1].boundary.vertices[B-0];U.push(F,j)}T.push(U)}if(!O){let U=$[$.length-1],B;try{B=Nr({windingRule:$.length>1?Ce.POSITIVE:Ce.ODD,elementType:et.POLYGONS,vertexSize:2,strict:!0,contours:[U.insetPoints,...T]})}catch{B=cu}if(!B)throw new Error("Error generating geometry for surface");l.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let F=0;F<B.elementCount*3;F+=3){let j=this._buildSurfaceVert(B,B.elements[F+0],Y),D=this._buildSurfaceVert(B,B.elements[F+1],Y),ne=this._buildSurfaceVert(B,B.elements[F+2],Y);b.push(j.top,D.top,ne.top),c===!1&&b.push(ne.bottom,D.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let _=new Ir.BufferAttribute(Uint32Array.from(b),1),v=new Ir.BufferAttribute(this._buffer.positions,3),N=new Ir.BufferAttribute(this._buffer.normals,3),P=new Ir.BufferAttribute(this._buffer.uvs,2);v.needsUpdate=!0,N.needsUpdate=!0,P.needsUpdate=!0,_.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",N),this.setAttribute("uv",P),this.setIndex(_)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let c=this._buildBevelVert(t,i,a),u=this._buildBevelVert(t,i,(a+1)%s);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],c=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let l=this._buffer.get(this.forPathBevel?1:2),d=l*3,p=l*2,f={top:l+0,bottom:l+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=c,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=c,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[c,u]=t.boundary.vertexIndices[o],l,d,p,f;c!==u?(d=c,l=u,f=!1,p=e.continuous[d]&&e.continuous[l]):(l=c,d=(l-1+e.count)%e.count,f=e.concave[l]&&t.bevelI>0,p=e.continuous[l]||f);let m=Math.cos(t.angle),h=Math.sin(t.angle),y=o*2,g=l*2,x=d*2,S=t.boundary.vertices[y+0],w=t.boundary.vertices[y+1],b=(1-h)*this._bevel,T=(S-this._minX)/this._width,_=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),_=1);let v=e.normals[g+0],N=e.normals[g+1],P=e.normals[x+0],C=e.normals[x+1];if(f){let X=P-v,R=C-N;v=v+X*(1-i),N=N+R*(1-i);let Z=Math.sqrt(v*v+N*N);v/=Z,N/=Z}let O=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),A=O*3,M=O*2,L={i:o,fi:l,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1,pathBevelUCoord:a};return this._buffer.positions[A+0]=S,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[A+0]=v*m,this._buffer.normals[A+1]=N*m,this._buffer.normals[A+2]=h,this._buffer.uvs[M+0]=T,this._buffer.uvs[M+1]=_,this.forPathBevel===!1&&(this._buffer.positions[A+3]=S,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=b,this._buffer.normals[A+3]=v*m,this._buffer.normals[A+4]=N*m,this._buffer.normals[A+5]=-h,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=T),p||(this.forPathBevel?(O+=1,A+=3,M+=2):(O+=2,A+=6,M+=4),L.topP=O+0,L.bottomP=O+1,this._buffer.positions[A+0]=S,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[A+0]=P*m,this._buffer.normals[A+1]=C*m,this._buffer.normals[A+2]=h,this._buffer.uvs[M+0]=T,this._buffer.uvs[M+1]=_,this.forPathBevel===!1&&(this._buffer.positions[A+3]=S,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=b,this._buffer.normals[A+3]=P*m,this._buffer.normals[A+4]=C*m,this._buffer.normals[A+5]=-h,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=T)),this.vertexCache[s]=L,L}clone(){let e=new en(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Vi=class extends Tn.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ce.ODD;this.elementType=et.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ce.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),s,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{s=Nr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=ds}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Tn.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new Tn.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new Tn.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new Tn.BufferAttribute(new Uint32Array(f*3),1),s){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let T=w*2,_=s.vertices[T+0],v=s.vertices[T+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,S=g-y;for(let w=0,b=p;w<b;w++){let T=w*2,_=s.vertices[T+0],v=s.vertices[T+1],N=(_-m)/x,P=(v-y)/S;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,P)}for(let w=0,b=f;w<b;w++){let T=w*3,_=s.elements[T+0],v=s.elements[T+1],N=s.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,v),this._indexAttribute.setX(T+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new Vi(this._shape,this._curveSegments);return e.userData=yo(this.userData),e}};var zi=class extends en{constructor(e,t,o=0,i=12,a=3,s=Ce.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let c=this._buildBevelVert(t,i,a),u=this._buildBevelVert(t,i,(a+1)%s);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new zi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Qt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ce.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ee?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Ee(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let c=a??new Ee(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new Vi(n.shape,o,{windingRule:a}):s=new zi(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var Mr=require("three"),Dy=Math.PI*2,Fi=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Mr.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=dP(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f;return o===0?(f=new Mr.BufferGeometry,f.setAttribute("position",new Mr.Float32BufferAttribute([],3))):f=Qt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function dP(n,r,e,t,o,i){if(t>=Dy)return o>30||o%4===0?(pP(n,r,e,i),Math.round(o/4)):Ly(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,c={x:Math.cos(s)*r,y:Math.sin(s)*e},u=_y({px:a.x,py:a.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?uP(n,a.x,a.y,u,o,r,e,i):Ly(n,t,o,r,e,i)}function uP(n,r,e,t,o,i,a,s){let c=Math.round(o/t.length);n.addPoint(ji(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=ji(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return s>0?By(n,i,a,s):n.addPoint(ji(0,0)),c}function Ly(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let c=a*s,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(ji(u,l))}return r<Dy?i>0?By(n,t,o,i):n.addPoint(ji(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Ry(n,t,o,i)),1}function pP(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,c=e*a;n.addPoint(ic(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(ic(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ic(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(ic(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Ry(n,r,e,t)}function ji(n,r){return new Cr(Mr.MathUtils.generateUUID(),new Mr.Vector2(n,r))}function ic(n,r,e,t,o,i){let a=ji(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function By(n,r,e,t){Gy(n,r,e,t).forEach(i=>n.addPoint(i))}function Ry(n,r,e,t){let o=Gy(n,r,e,t),i=new Ee;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Gy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Mr.Vector2(o/r,i/e),s=n.points.map(c=>{let u=c.clone();return u.uuid=Mr.MathUtils.generateUUID(),u}).reverse();return s.forEach(c=>{c.position.multiply(a);let u=c.controls[0].position.clone().multiply(a),l=c.controls[1].position.clone().multiply(a);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),s}var Er=require("three"),Vy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new us(!1,r,e,t,o,i,a,s,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},du=new Er.Uint32BufferAttribute([0,0,0],1),us=class extends Er.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,c=1,u=1,l=1,d=1,p=1){if(super(),a===0)return;let f=r&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new Er.Vector3,h=new Er.Vector3,y=m(),g=m(),x=m(),S,w,b,T,_,v,N,P,C=m(),O=m(),A=m(),M=m(),L=m(),X=m(),R=m(),Z=m(),z=t-2*c+.001,V=z/a,W=Math.ceil(s*a),$=W+1,Y=z/W,q=-z/2,k=l+1,U=2*Math.PI/l,B=Math.PI/2/p,F=.01,j=Math.min((1-d/100)*c,c-F),D=c-j,ne=0,ee=2,K=p*ee+ee,te=k*K/ee,Q=te+k*$,le=Math.max(0,k*($+K)),[ie,ae,de]=[3,3,2].map(st=>Array(le*st).fill(0)),ce=[],ue=i-c;function ge(st,nr){let zr=Math.PI/2;v=nr*Y,P=2*Math.PI*(v%V)/V+zr,v+=q,N=Math.sin(P)*ue,_=Math.cos(P)*ue,r?st.set(_,N,v):st.set(_,v,N)}ge(h,-1e-10),ge(y,0),C.copy(h),ge(h,1);let Ne=h.distanceTo(y),Ye=f?0:D+j,Ie=Ne*W+2*Ye,ke=j,qt=Ie-Ye;for(let st=0;st<=W;st++){ge(g,st),Z.subVectors(g,C).normalize(),C.copy(g),X.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(Z,X).normalize();let nr=st===0,zr=st===W,ix=nr?3*Math.PI/2:B,ax=nr?ke:qt,sx=nr?k:Q,lx=nr?0:le-k,cx=Z.clone().multiplyScalar(nr?-D:D).add(g),dx=Z.clone().multiplyScalar(nr?-1:1).normalize();for(let uo=0;uo<k;uo++){let cp=uo*U;if(O.addVectors(h.copy(X).multiplyScalar(c*Math.cos(cp)),y.copy(R).multiplyScalar(c*Math.sin(cp))),A.copy(O).normalize(),nr||zr){f||(ne=lx+uo,[0,1,2].forEach($t=>{ie[ne*3+$t]=cx.getComponent($t),ae[ne*3+$t]=dx.getComponent($t)}),de[ne*2]=+zr,de[ne*2+1]=uo/l),y.copy(A).multiplyScalar(j),x.addVectors(g,y);for(let $t=0;$t<p;$t++){let od=$t*B+ix;M.addVectors(h.copy(Z).multiplyScalar(D*Math.sin(od)),y.copy(A).multiplyScalar(D*Math.cos(od))),L.copy(M).normalize(),y.addVectors(x,M),M.normalize(),ne=sx+$t*k+uo,[0,1,2].forEach(ks=>{ie[ne*3+ks]=y.getComponent(ks),ae[ne*3+ks]=L.getComponent(ks)});let ux=+nr+Math.sin(od);de[ne*2]=(ax+D*ux)/Ie,de[ne*2+1]=uo/l}}y.addVectors(g,O),ne=te+st*k+uo,[0,1,2].forEach($t=>{ie[ne*3+$t]=y.getComponent($t),ae[ne*3+$t]=A.getComponent($t)}),de[ne*2]=(Ye+st*Ne)/Ie,de[ne*2+1]=uo/l}}let Te=$+2*p+ee,mt=1,[bt,Fn]=[+f,Te-1];for(let st=bt;st<=Fn-1;st++){let nr=f&&st===Fn-1;for(let zr=0;zr<k-1;zr++)S=st*k+zr,w=S+1,b=(nr?zr:S)+k,T=(nr?zr+1:w)+k,st===0?ce.push(w,T,b):st===Te-2?ce.push(S,w,b):ce.push(S,w,b,w,T,b)}this.setIndex(ce),this.setAttribute("position",new Er.Float32BufferAttribute(ie,3)),this.setAttribute("normal",new Er.Float32BufferAttribute(ae,3)),this.setAttribute("uv",new Er.Float32BufferAttribute(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,a=i+1,s=(d?p:i)+t,c=(d?p+1:a)+t,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=c,o[u++]=s;return o.length=u,du.array=o,du.count=o.length,du}};var zy=require("three");var jy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new ps(r*.5,i,a):new zy.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},ps=class extends Zo{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[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],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new ps(r.radius,r.corner,r.cornerSides)}};var ac=require("three"),Fy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{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}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new ac.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new ac.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Qr=require("three");var To=require("three");var oe=require("three"),Zr=new oe.Matrix4,uu=new oe.Object3D,sc=new oe.Vector3,tn=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.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(r){let e=new oe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Zr.makeRotationX(r),this.applyMatrix4(Zr),this}rotateY(r){return Zr.makeRotationY(r),this.applyMatrix4(Zr),this}rotateZ(r){return Zr.makeRotationZ(r),this.applyMatrix4(Zr),this}translate(r,e,t){return Zr.makeTranslation(r,e,t),this.applyMatrix4(Zr),this}scale(r,e,t){return Zr.makeScale(r,e,t),this.applyMatrix4(Zr),this}lookAt(r){return uu.lookAt(r),uu.updateMatrix(),this.applyMatrix4(uu.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new oe.Vector3().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(s,p));function l(p,f,m,h){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=a===void 0?[]:[new oe.Vector3().fromBufferAttribute(a,p),new oe.Vector3().fromBufferAttribute(a,f),new oe.Vector3().fromBufferAttribute(a,m)],x=new ki(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,p),new oe.Vector2().fromBufferAttribute(c,f),new oe.Vector2().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(u,p),new oe.Vector2().fromBufferAttribute(u,f),new oe.Vector2().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(sc).negate(),this.translate(sc.x,sc.y,sc.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new oe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new oe.Vector3,e=new oe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new oe.Vector3;if(r){let t=new oe.Vector3,o=new oe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],c=this.vertices[s.a],u=this.vertices[s.b],l=this.vertices[s.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new tn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,c=this.faces.length;s<c;s++){let u=new oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};i.push(u),a.push(l)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let h=s[p].clone();e!==void 0&&h.applyMatrix4(e),a.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,S=new ki(m.a+i,m.b+i,m.c+i);S.normal.copy(m.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=g.length;w<b;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),S.vertexNormals.push(h);S.color.copy(m.color);for(let w=0,b=x.length;w<b;w++)y=x[w],S.vertexColors.push(y.clone());S.materialIndex=m.materialIndex+t,c.push(S)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let a=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(c);break}}for(let c=a.length-1;c>=0;c--){let u=a[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let s=this.vertices.length-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let c=0;c<e;c++){let u=r[c]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},a=[],s={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,S=h.normal.length()>0,w=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,S),_=l(_,5,w),_=l(_,6,b),_=l(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(b&&t.push(p(h.color)),T){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return s[h]!==void 0||(s[h]=a.length,a.push(m.getHex())),s[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new tn().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let a=r.morphNormals;for(let p=0,f=a.length;p<f;p++){let m={};if(a[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=a[p].vertexNormals.length;h<y;h++){let g=a[p].vertexNormals[h],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}if(a[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=a[p].faceNormals.length;h<y;h++)m.faceNormals.push(a[p].faceNormals[h].clone())}this.morphNormals.push(m)}let s=r.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new pu().fromGeometry(this),e=new oe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",lc.call(new oe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",lc.call(new oe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",ky.call(new oe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Uy.call(new oe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Uy.call(new oe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,c=a.length;s<c;s++){let u=a[s],l=new oe.Float32BufferAttribute(u.data.length*3,3);l.name=u.name,i.push(lc.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new oe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Hy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new oe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Hy.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new oe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new oe.Float32BufferAttribute(t.vertices.length*3,3),i=new oe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",lc.call(o,t.vertices)),e.setAttribute("color",ky.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new oe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",fP.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};tn.prototype.isGeometry=!0;var pu=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(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,c=s.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(a===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<c;b++){let T=s[b].vertices;u[b].data.push(T[x.a],T[x.b],T[x.c])}for(let b=0;b<d;b++){let T=l[b].vertexNormals[g];p[b].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},ki=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function fP(n){return this.array.set(n),this}function ky(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new oe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Uy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new oe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function lc(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new oe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Hy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new oe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var mP=["a","b","c"];function hP(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function fu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function mu(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),c=a+"_"+s,u;if(t.has(c))u=t.get(c);else{let l=e[a],d=e[s];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function yP(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],mu(a.a,a.b,n,t,a,e),mu(a.b,a.c,n,t,a,e),mu(a.c,a.a,n,t,a,e)}function cc(n,r,e,t,o){n.push(new ki(r,e,t,void 0,void 0,o))}function Ui(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function dc(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var uc=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof To.BufferGeometry?r=new tn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new To.Vector3,t,o,i,a,s,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;yP(c,u,p,f);let m=[],h,y,g,x,S,w,b;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new To.Vector3,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=y.faces[a],s=0;s<3&&(h=c[hP(x,mP[s])],!(h!==y.a&&h!==y.b));s++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,v,N,P,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),v=T,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),a=0;a<t;a++)N=P[a],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let M=A.concat(m),L=A.length,X,R,Z,z=[],V=[],W,$,Y,q,k=new To.Vector2,U=new To.Vector2,B=new To.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],X=Number(fu(x.a,x.b,f).newEdge)+L,R=Number(fu(x.b,x.c,f).newEdge)+L,Z=Number(fu(x.c,x.a,f).newEdge)+L,cc(z,X,R,Z,x.materialIndex),cc(z,x.a,X,Z,x.materialIndex),cc(z,x.b,R,X,x.materialIndex),cc(z,x.c,Z,R,x.materialIndex),d&&(W=l[o],$=W[0],Y=W[1],q=W[2],k.set(Ui($.x,Y.x),Ui($.y,Y.y)),U.set(Ui(Y.x,q.x),Ui(Y.y,q.y)),B.set(Ui($.x,q.x),Ui($.y,q.y)),dc(V,k,U,B),dc(V,$,k,B),dc(V,Y,U,k),dc(V,q,B,U));r.vertices=M,r.faces=z,d&&(r.faceVertexUvs[0]=V)}};var yt=new Qr.Vector3,Wy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Qr.BufferGeometry().copy(new Qr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(yt),t={width:yt.x,height:yt.y,depth:yt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Qr.BufferGeometry().copy(new Qr.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(yt)):yt.set(a.width,a.height,a.depth),(r!==yt.x||e!==yt.y||t!==yt.z)&&i.scale(yt.x===0?1:r/yt.x,yt.y===0?1:e/yt.y,yt.z===0?1:t/yt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new uc(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Qr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(yt);let a=100/yt.x;Object.assign(i.parameters,{width:100,height:yt.y*a,depth:yt.z*a}),r(this.build(i))})}};var pc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,c=n.shape,u=r*.5,l=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Qt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var Ae=require("three"),qy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:c}=n.parameters,u=new yu(r*.5,e,o,i,a,s,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function fs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function hu(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),c=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,t/Math.sin(u))}}function gP(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var yu=class extends Ae.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let c=[],u=[],l=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,S=new Ae.Vector3(0,-f,0),w=new Ae.Vector3(0,f,0),b=new Ae.Vector2(r,-f),T=new Ae.Vector2(h,-f),_=new Ae.Vector2(0,w.y).sub(T),v=new Ae.Vector2(0,w.y).sub(b),N=new Ae.Vector2(_.y,-_.x).normalize(),P=new Ae.Vector2(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;a=Math.min(a,O);let A;{let V=new Ae.Vector3(N.x,N.y,0),W=new Ae.Vector3(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);A=V.angleTo(W)}let M=a/Math.tan((Math.PI-_.angle())/2),L=a/Math.tan((Math.PI-A)/2),X=new Ae.Vector3;if(!i){u.push(S.x,S.y,S.z),l.push(0,-1,0),d.push(0,0);let V=p++,W=[],$=b.clone(),Y=M/Math.cos(Math.PI/t);$.x-=Y;for(let q=0;q<t;q++){let k=q/t*Math.PI*2+m,U=new Ae.Vector2(Math.sin(k),Math.cos(k));fs($,U,X),u.push(X.x,X.y,X.z),l.push(0,-1,0),d.push(0,0),W.push(p++)}for(let q=0;q<W.length;q++)c.push(W[q],V,W[(q+1)%W.length])}let R=[];{let V=new Ae.Vector3,W=new Ae.Vector3,$=new Ae.Vector3,Y=new Ae.Vector3,q=new Ae.Vector3,k=new Ae.Vector3;for(let U=0;U<t;U++){let B=U/t*Math.PI*2+m,F=(U+.5)/t*Math.PI*2+m,j=(U+1)/t*Math.PI*2+m,D=new Ae.Vector2(Math.sin(B),Math.cos(B)),ne=new Ae.Vector2(Math.sin(F),Math.cos(F)),ee=new Ae.Vector2(Math.sin(j),Math.cos(j));fs(b,D,W),fs(b,ee,$),fs(N,ne,V),hu(w,W,$,L,L,Y),u.push(Y.x,Y.y,Y.z),hu(W,w,$,L,M,q),u.push(q.x,q.y,q.z),hu($,W,w,M,L,k),u.push(k.x,k.y,k.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),d.push(0,0),d.push(0,0),d.push(0,0);let K=p++,te=p++,Q=p++;if(c.push(K,te,Q),a>0){{let ae=W.clone().add($).multiplyScalar(.5),de=w.clone().sub(ae).normalize(),ue=S.clone().sub(ae).normalize().add(de).normalize().multiplyScalar(-1),ge=k.clone().sub(q);Z(ae,ge,ue,_.angle())}let le,ie;{let ae=new Ae.Vector3;fs(P,ee,ae);let de=k.clone().add(Y).multiplyScalar(.5);de=gP(de,$,w);let ce=k.clone().sub(Y);[le,ie]=Z(de,ce,ae,A,Y.y)}{let ae=le,de=ae.clone().setY(0).normalize(),ce=new Ae.Vector3(0,-1,0),ue=de.clone().cross(ce);z(ae,de,ce,ue)}R.concat(ie);{let ae=_.angle(),de=Math.PI-ae,ce=w.clone();ce.y-=a/Math.sin(ae-Math.PI/2);let ue=new Ae.Vector3,ge=[];for(let Ye=0;Ye<s;Ye++){let Ie=[],ke=Math.PI/2-de*Ye/s,qt=Math.cos(ke),Te=Math.sin(ke),mt=F;for(let bt=0;bt<=Ye;bt++){let Fn=Math.cos(mt),st=Math.sin(mt);V.x=qt*st,V.y=Te,V.z=qt*Fn,ue.copy(ce).addScaledVector(V,a),u.push(ue.x,ue.y,ue.z),l.push(V.x,V.y,V.z),d.push(0,0),Ie.push(p++),mt+=Math.PI*2/Ye/t}ge.push(Ie)}ie.reverse(),ge.push(ie);let Ne=ge.length-1;for(let Ye=0;Ye<Ne;Ye++){let Ie=ge[Ye],ke=ge[Ye+1],qt=Ie.length-1;c.push(ke[1],Ie[0],ke[0]);for(let Te=1;Te<=qt;Te++)c.push(Ie[Te],Ie[Te-1],ke[Te]),c.push(ke[Te+1],Ie[Te],ke[Te])}}}}}this.setIndex(c),this.setAttribute("position",new Ae.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Ae.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Ae.Float32BufferAttribute(d,2));function Z(V,W,$,Y,q){let k=-Y/2,U=(Math.PI-Y)/2,B=W.clone().normalize().cross($);V.addScaledVector($,-a/Math.sin(U));let F=new Ae.Vector3,j=new Ae.Vector3,D=1,ne=p,ee=[];for(let K=0;K<=s;K++){let te=k+K/s*Y;j.set(0,0,0),j.addScaledVector(B,Math.sin(te)),j.addScaledVector($,Math.cos(te));for(let Q=0;Q<=D;Q++){let le=Q/D-.5;if(F.copy(V),F.addScaledVector(W,le),F.addScaledVector(j,a),q!=null){let ie=Math.max(0,F.y-q);F.addScaledVector(W,-ie/W.y)}u.push(F.x,F.y,F.z),l.push(j.x,j.y,j.z),d.push(0,0),Q===0&&ee.push(p),p++}}for(let K=0;K<s;K++)for(let te=0;te<D;te++){let Q=ne+te+(D+1)*K,le=Q+(D+1),ie=le+1,ae=Q+1;c.push(Q,le,ae),c.push(le,ie,ae)}return[V.clone().addScaledVector(W,.5),ee]}function z(V,W,$,Y){let q=Math.PI/2,k=v.angle()-q,U=[],B=new Ae.Vector3,F=new Ae.Vector3;for(let D=0;D<=s;D++){let ne=[],ee=D/s;for(let K=0;K<=D;K++){let Q=((D?K/D:0)-.5)*x,le=Math.cos(Q),ie=Math.sin(Q),ae=Math.atan(Math.tan(k)*le),de=(q+ae)*ee,ce=Math.cos(de),ue=Math.sin(de);B.set(0,0,0),B.addScaledVector(W,ue*le),B.addScaledVector($,ce),B.addScaledVector(Y,ue*ie),F.copy(V).addScaledVector(B,a),u.push(F.x,F.y,F.z),l.push(B.x,B.y,B.z),d.push(0,0),ne.push(p++)}U.push(ne)}let j=U.length-1;for(let D=0;D<j;D++){let ne=U[D],ee=U[D+1],K=ne.length-1;c.push(ne[0],ee[1],ee[0]);for(let te=1;te<=K;te++)c.push(ne[te-1],ne[te],ee[te]),c.push(ne[te],ee[te+1],ee[te])}}}};var fc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,b,T){return b>e&&T>t?Math.min(w*e/b,w*t/T):b>e?w*e/b:T>t?w*t/T:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=d.x,y=d.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,b=r.points.length;w<b;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let S=Qt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};var _o=require("three"),$y=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=_o.MathUtils.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:c,thetaLength:u}=n.parameters,l;return u===0?(l=new _o.BufferGeometry,l.setAttribute("position",new _o.Float32BufferAttribute([],3))):l=new _o.SphereGeometry(.5*r,o,i,a,s,c,u*_o.MathUtils.DEG2RAD),l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Yy=require("three"),Xy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new Yy.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var rn=require("three"),Ky=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new gu(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},gu=class extends rn.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],c=[],u=[],l=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(F=0,j=0,D=0)=>new rn.Vector3(F,j,D),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],S=-g,w=+g,[b,T,_]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),N=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-x,C=b.z-l;o<=p?(_.z=Math.min(P,C),_.z==C&&(_.y-=(P-C)/Math.tan(p-o))):T.z=Math.min(T.z-P-x,b.z-l),m.subVectors(b,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),M=O/Math.cos(o/2),L=m.clone().normalize().add(h.normalize()).setLength(M).add(T);m.set(0,v(o,!0),N(o,!0)),d.push([_,m.clone()]);let X=(Math.PI-o)/a;for(let F=0;F<=a;F++){let j=p+o+F*X;m.set(0,Math.sin(j)*A,Math.cos(j)*A),m.add(L),h.set(0,v(j),N(j)),d.push([m.clone(),h.clone()])}d.push([b,f(0,1,0)]);let R=Math.sin(X/2)*A*2,Z=d.length-1,z=d[0][0].distanceTo(d[1][0]),V=d[Z-1][0].distanceTo(d[Z][0]),W=z+R*a+V;d[0].push(1);for(let F=0;F<=a;F++)d[F+1].push(1-(z+F*R)/W);d[Z].push(0);let[$,Y,q]=d[0],k,U,B;for(let F=1;F<d.length;F++)[k,U,B]=d[F],s.push(S,$.y,$.z,S,k.y,k.z,w,$.y,$.z,w,$.y,$.z,S,k.y,k.z,w,k.y,k.z),c.push(0,Y.y,Y.z,0,U.y,U.z,0,Y.y,Y.z,0,Y.y,Y.z,0,U.y,U.z,0,U.y,U.z),u.push(0,q,0,B,1,q,1,q,0,B,1,B),[$,Y,q]=[k,U,B];this.setAttribute("position",new rn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new rn.Float32BufferAttribute(c,3)),this.setAttribute("uv",new rn.Float32BufferAttribute(u,2))}};var mc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let b=h*w,T=f+Math.sin(b)*d,_=m+Math.cos(b)*p;l.addPoint(l.createPoint(T,_))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*d,T=m+Math.sin(y)*p;l.addPoint(l.createPoint(b,T)),y+=h,b=f+Math.cos(y)*g,T=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(b,T)),y+=h}l.isClosed=!0;for(let w=0,b=l.points.length;w<b;w++)l.points[w].roundness=i;l.roundness=i,l.update();let S=Qt.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};var Zy=require("three"),Qy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new Zy.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Hi=require("three");var Jy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:c}=n.parameters,u=xP(r,e,t,r*.5,a,i,0,0,o,s,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function xP(n,r,e,t,o,i,a,s,c,u,l){[r,e]=[e,r],a=r/2;let d=Hi.MathUtils.clamp(o/360,0,1);if(d===0){let p=new Hi.BufferGeometry;return p.setAttribute("position",new Hi.Float32BufferAttribute([],3)),p}return d===1&&(u=0),new us(!0,n,r,e,t,d,i,a,s,c,u,l)}var eg=require("three"),tg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let c=new eg.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var rg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,c=n.shape,u=r*.5,l=e*.5;s?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Qt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var ve=require("three");function og(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var vP=new ve.Matrix4,bP=new ve.Matrix4;function SP(n,r,e){let t=[new ve.Vector3,new ve.Vector3,new ve.Vector3],o=[new ve.Vector3,new ve.Vector3,new ve.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],c=ve.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(c)}),new ve.Matrix4().makeBasis(t[0],t[1],t[2])}var ng=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??Fi.create({parameters:Id}).userData.shape;return{path:n.path??bi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...zl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new xu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ve.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},xu=class extends ve.BufferGeometry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!og(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),c=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),u=Math.min(Math.max(2,c-s+1),a+2),l=[],d=[];for(let z=0;z<u;z++){let V=this.inputs.path.isClosed?(z+s)%e.length:Math.min(z+s,e.length-1);l.push(e[V].clone()),d.push(t[V].clone())}let p=(z,V,W)=>{l[z]=l[z].clone().lerp(l[V],W),d[z]=SP(d[z],d[V],W)},f=0,m=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let z=l.length-1;l[z].copy(l[0]),d[z].copy(d[0])}this._applyPathModifiers(d,f,h);let{bevel:g,bevelSides:x}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:b,infos:T,vertices:_}=this._computeShapePoints(w),v=0,N;S==="round"&&(N=new en(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=N.getAttribute("position").count);let P=0,C=0;T.sort((z,V)=>z.start-V.start),T.forEach(z=>{z.verticesStart=P,z.verticesCount=z.continuous.reduce((V,W,$)=>V+($===0||!W?2:1),0),C+=z.verticesCount,P=C});let O=C*u,A,M=0;if(this._isOpenEnded()&&S==="flat"){try{A=Nr({windingRule:Ce.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{A=cu}M=A.vertexCount}let L=O+2*M+v*2,X=O+2*M,R={positions:new Float32Array(L*3),normals:new Float32Array(L*3),uvs:new Float32Array(L*2)},Z=[];if(T.forEach(z=>{this._extrudeRegion(z,_,d,l,R,Z,this._isGeometryClosed()&&!this._isOpenEnded())}),A&&(this._closeEnd(A,O,Z,R,d[0],l[0],!1),this._closeEnd(A,O+M,Z,R,d[d.length-1],l[l.length-1],!0)),N){R.positions.set(N.getAttribute("position").array,X*3),R.normals.set(N.getAttribute("normal").array,X*3),R.uvs.set(N.getAttribute("uv").array,X*2);let z=Z.length;Z.push(...N.getIndex().array.map($=>$+X)),X+=v,R.positions.set(N.getAttribute("position").array,X*3),R.normals.set(N.getAttribute("normal").array,X*3),R.uvs.set(N.getAttribute("uv").array,X*2);let V=Z.length;Z.push(...N.getIndex().array.map($=>$+X)),this.setAttribute("position",new ve.BufferAttribute(R.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(R.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(R.uvs,2)),this.setIndex(Z);let W=vP;W.copy(d[d.length-1]).setPosition(l[l.length-1]),this.applyMatrix4OnRange(W,X,L),W.copy(d[0]).setPosition(l[0]).multiply(bP.makeScale(1,1,-1)),this.applyMatrix4OnRange(W,X-v,X),this.reverseIndicesOnRange(z,V)}else this.setAttribute("position",new ve.BufferAttribute(R.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(R.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(R.uvs,2)),this.setIndex(Z)}_extractPathPoints(){let t=ec(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,a=new ve.Vector3,s=new ve.Vector3,c=new ve.Vector3,u=new ve.Vector3,l=new ve.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(x).normalize(),b=S.clone().sub(g).normalize(),T=w.clone().add(b).normalize();c.copy(T),y===0&&(T.equals(l)||T.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(T).normalize(),v=T.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(a.copy(v),s.copy(T));let N=new ve.Matrix4().makeBasis(_,v,T);t.push(N)}let d=i?s:c,p=i?a:new ve.Vector3(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ve.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new ve.Matrix4,d=new ve.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(ve.MathUtils.lerp(a,a+s,m)*ve.MathUtils.DEG2RAD);let h=ve.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=Ce.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),s;try{s=Nr({windingRule:t,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=ds}let c;try{c=Nr({windingRule:Ce.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{c=lu}if(!s)throw new Error("error generating geometry");let u=s.elementCount;if(c){s.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];s.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=s.vertexCount;h<y;h++){let g=h*2,x=s.vertices[g+0],S=s.vertices[g+1];x<l&&(l=x),x>d&&(d=x),S<p&&(p=S),S>f&&(f=S)}let m=[];for(let h=s.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=s.elements[g+0],S=s.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let T=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let P=T-x,C=s.vertices[_*2+0],O=s.vertices[_*2+1],A=s.vertices[T*2+0],M=s.vertices[T*2+1],L=s.vertices[v*2+0],X=s.vertices[v*2+1],R=A-C,Z=M-O,z=Math.sqrt(R*R+Z*Z);R/=z,Z/=z;let V=A-L,W=M-X,$=Math.sqrt(V*V+W*W);V/=$,W/=$,b.normals[P*2+0]=-W,b.normals[P*2+1]=V;let Y=s.vertexIndices[T];if(Array.isArray(Y))b.continuous[P]=!1;else{let[q,k]=o.getCurveIndexFromVertexId(Y-1,!0);if(k>0&&k<1)b.continuous[P]=!0;else{let U=k===1?q+1:q-1;U=(U+N)%N;let B=k===1?0:1,F=o.roundedCurves[q].getTangent(k),j=o.roundedCurves[U].getTangent(B);b.continuous[P]=F.dot(j)>.95}}y&&(b.normals[P*2+0]*=-1,b.normals[P*2+1]*=-1),[_,T,v]=[T,v,v+1],v>=w&&(v-=S)}while(v!==x+1)}return{regions:[i,...a],infos:m,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,c){let u=new ve.Vector3,l=new ve.Vector3,d=new ve.Vector3,p=new ve.Vector3,f=new ve.Vector2;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;l.set(t[b+0],t[b+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,x,d,p,f),x++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let b=S===e.count-1?e.start*2:w+2;l.set(t[b+0],t[b+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(a,x,d,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,T=y+w,_=g+w,v=g+x;e.isHole?s.push(b,_,T,b,v,_):s.push(b,T,_,b,_,v),x++}}}_closeEnd(e,t,o,i,a,s,c){let u=e.vertexCount,l=new ve.Vector3(0,0,c?-1:1).applyMatrix4(a),d=new ve.Vector3,p=new ve.Vector2;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+m,d,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new ve.Matrix3().getNormalMatrix(e).elements,s,c,u,l,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,m=p.array,h=d.itemSize;for(let y=t*h,g=o*h;y<g;y+=h){if(y===t)debugger;s=f[y+0],c=f[y+1],u=f[y+2],l=1/(i[3]*s+i[7]*c+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*c+i[8]*u+i[12])*l,f[y+1]=(i[1]*s+i[5]*c+i[9]*u+i[13])*l,f[y+2]=(i[2]*s+i[6]*c+i[10]*u+i[14])*l,s=m[y+0],c=m[y+1],u=m[y+2],m[y+0]=a[0]*s+a[3]*c+a[6]*u,m[y+1]=a[1]*s+a[4]*c+a[7]*u,m[y+2]=a[2]*s+a[5]*c+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),c=o.getX(i+2);o.setXYZ(i,c,s,a)}o.needsUpdate=!0}}};var _n=require("three"),ig=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ag(){let n=new _n.BufferGeometry;return n.setAttribute("position",new _n.BufferAttribute(new Float32Array([]),3)),n.setIndex(new _n.BufferAttribute(new Uint16Array([]),1)),n}var wP=ag().attributes,TP=12,_P=1,Wi=class extends _n.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,wP),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=$l.getDisplayedValue(u),p=l===2?d.toUpperCase():l===3?d.toLowerCase():d,f=PP(e,t,p),{shapes:m,charWidths:h,charCoords:y}=t.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=m.map(T=>new Ee().fromShape(T,!0));this.vectorShapes=S;let w=S.map(T=>Qt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:c,extrudeBevelSize:s,windingRule:a<=0?Ce.NONZERO:Ce.ODD,subdivisions:this.isLowResolution&&a>0?_P:TP}})),b=w.length?(0,ig.mergeBufferGeometries)(w):ag();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=h,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([T,_])=>{this.setAttribute(T,_)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Yt(new _n.BufferGeometry,Wi.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function PP(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
2
2
|
`?(t[t.length-1]+=o,o="",i===`
|
|
3
|
-
`&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var He=require("three");var lg,Wi=new Promise(n=>{lg=n}),sg=!1;var hc;function cg(){if(sg)return;if(hc)return hc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.469/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,c=await s({wasmBinary:a});lg(c),sg=!0}return hc=n(),hc}var dg=require("three");function Pn(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let l=i;for(let d of u)l=l[d];for(o in l){let d=l[o];bh(d)&&(l[o]=r.getVariable(d,[t.uuid,"geometry",...u,o]))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=Ee.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new dg.BufferGeometryLoader().parse(i);else if(i.type==="SubdivGeometry"){let u=new dt(i,e);return u.data=n,u}else if(i.type==="TextGeometry")return new Hi(i,r);let c;try{c=vu(s)}catch(u){console.error(u)}if(!c){let u=Ee.createFromState(xi.defaultData(),100,100);s.shape=u,c=vu(s)}return c}var ug=require("three"),OP=new ug.Matrix4;function fs(n,r,e,t){let o=n.position.array,i=n.normal.array,a=OP.makeScale(r,e,t).invert().elements,s,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,s=i[l],c=i[l+1],u=i[l+2],i[l]=a[0]*s+a[4]*c+a[8]*u,i[l+1]=a[1]*s+a[5]*c+a[9]*u,i[l+2]=a[2]*s+a[6]*c+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var yc=new He.Box3,qi=new He.Vector3,fe;Wi.then(n=>{fe=n});var pg=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),fg=new Uint32Array([0,1,2,3]),mg=new Uint8Array([4]),dt=class extends He.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=zo.div(t,o);this.subdividedGeometry&&fs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&fs(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(qi.fromArray(i));let s=qi.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=dt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new He.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(dt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new He.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;yc.setFromBufferAttribute(t),yc.getCenter(o),e.boundingSphere.radius=o.distanceTo(yc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),yc.getSize(qi);let i={width:qi.x,height:qi.y,depth:qi.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{a=dt.allocate(e,i)}catch(l){console.error(l,e),a=dt.allocate({positionWASM:pg,indexWASM:fg,verticesPerFaceWASM:mg},i)}if(fe.set_destination_refinement_level(a,0),s=dt.buildLevel(a,!0,u),e.subdivisions>0)try{fe.set_destination_refinement_level(a,e.subdivisions),c=dt.buildLevel(a,!1,u)}catch{try{fe.set_destination_refinement_level(a,e.subdivisions-1),c=dt.buildLevel(a,!1,u)}catch{c=null}}else c=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:Pn(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,c,u,l;({positions:s,triIndices:l}=Tu(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=_u(s,l,i,d),{positions:s,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,a,s=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=pg,i=fg,a=mg);let u=o.length,l=i.length,d=a.length,p=o.length+s.length+c.length,f=i.length+a.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(m),x=new Float32Array(fe.HEAPF32.buffer,g,p),S=new Uint32Array(fe.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(s,o.length),x.set(c,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new He.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let b=w?fe.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):fe.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return fe._free(g),b}static buildLevel(e,t,o,i,a){let s=a?fe.get_mesh_data2(e,t?fe.Level.CONTROL:fe.Level.REFINED,o,a.elements):fe.get_mesh_data(e,t?fe.Level.CONTROL:fe.Level.REFINED,o),c=8,u=fe.HEAPU32.subarray(s>>2,(s>>2)+c),l=u.subarray(4,4+4),d=0,p=fe.HEAPU32[u[d]>>2],f=fe.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=fe.HEAPU32[u[d]>>2],h=fe.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=fe.HEAPU32[u[d]>>2],g=fe.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=fe.HEAPU32[u[d]>>2],S=fe.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new He.BufferGeometry;if(w.setIndex(new He.Uint32BufferAttribute(S,1)),w.setAttribute("position",new He.Float32BufferAttribute(f,3)),w.setAttribute("normal",new He.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new He.Uint32BufferAttribute(g,1));let b=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new He.BufferAttribute(b,4))}return fe.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,fe.free_mesh_data(s)}static freeSubdivPointer(e){fe.free_bvh(e),fe.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=fe.get_wireframe_data_for_base_level(e),a=4,s=fe.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+2),u=0,l=fe.HEAPU32[s[u]>>2],d=fe.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=fe.HEAPU32[s[u]>>2],f=fe.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new He.BufferGeometry;m.setAttribute("position",new He.Float32BufferAttribute(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new He.BufferAttribute(h,3)),m.setIndex(new He.Uint32BufferAttribute(f,1)),fe.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||fe.set_destination_refinement_level(e,t);let a=o?fe.get_topological_data2(e,i?fe.Level.CONTROL:fe.Level.REFINED,o.elements):fe.get_topological_data(e,i?fe.Level.CONTROL:fe.Level.REFINED),s=6,c=fe.HEAPU32.subarray(a>>2,(a>>2)+s),u=c.subarray(3,3+3),l=0,d=fe.HEAPU32[c[l]>>2],p=new Float32Array(fe.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=fe.HEAPU32[c[l]>>2],m=new Uint32Array(fe.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=fe.HEAPU32[c[l]>>2],y=new Uint8Array(fe.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return fe.free_topological_data(a),{positions:p,indices:m,verticesPerFace:y}}};var hg=["getX","getY","getZ"];function Tu(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[hg[p]](l)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[hg[p]](l));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:c}}var gc=new He.Vector3,bu=new He.Vector3,Su=new He.Vector3,wu=new He.Vector3;function _u(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let c=e.userData.shape.extractShapePointsToFlatArray([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=c.length/2/u;c=c.filter((f,m)=>Math.floor(m/2)%p===0)}let l=0;for(let p=0;p<c.length;p+=2)l+=(c[p]-c[(p===0?c.length:p)-2])*(c[p+1]+c[(p===0?c.length:p)-1]);n.length=0;let d=0;if(l<0)for(let p=0;p<c.length;p+=2)n.push(c[p],c[p+1],0),o.push(d++);else for(let p=c.length-2;p>=0;p-=2)n.push(c[p],c[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let c=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&c++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&c++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&c++,c===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){gc.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),bu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Su.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),wu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),bu.sub(gc).normalize(),Su.sub(gc).normalize(),wu.sub(gc).normalize();let c=bu.cross(Su).dot(wu);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let c=[],u=[],l=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(c.push(p),l++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}c.reverse(),o.push(...c,...u),i.push(l,l)}return{indices:o,verticesPerFace:i}}var mr={};dp(mr,{calcBoolean:()=>IP,calcBooleanTopological:()=>NP,freeMeshSet:()=>DP,getMeshSet:()=>MP,hasOpenEdges:()=>EP,transformMeshSet:()=>LP});var AP,yg=new Promise(n=>{AP=n});var ms=require("three");var _e,$i;yg.then(n=>_e=n);function CP(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Tu(n.getAttribute("position"),o),s;if(r&&e){let{indices:c,verticesPerFace:u}=_u(i,a,n);s=u.length,t=[];for(let l=0,d=0;l<s;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=a.length;t=Array(c+c/3),s=0;for(let u=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=a[u++],t[l++]=a[u++],t[l++]=a[u++]}return{positions:i,faceIndices:t,nFaces:s}}function gg(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=_e._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(_e.HEAPU32.buffer,i,r):new Float32Array(_e.HEAPF32.buffer,i,r)).set(n,0),i}function xg(n){switch(n){case 0:return _e.OP.UNION;case 1:return _e.OP.INTERSECTION;case 2:return _e.OP.A_MINUS_B;case 3:return _e.OP.B_MINUS_A;case 4:return _e.OP.SYMMETRIC_DIFFERENCE;case 5:return _e.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function NP(n,r){$i===void 0&&($i=_e.init_csg());let e=gg(n),t=_e.csg_calc_topological($i,e,n.length,xg(r));_e._free(e);let o=6,i=_e.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,c=_e.HEAPU32[i[s]>>2],u=new Float32Array(_e.HEAPF32.subarray(c>>2,(c>>2)+a[s]));s++;let l=_e.HEAPU32[i[s]>>2],d=new Uint32Array(_e.HEAPU32.subarray(l>>2,(l>>2)+a[s]));s++;let p=_e.HEAPU32[i[s]>>2],f=new Uint8Array(_e.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return _e.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function IP(n,r,e,t){$i===void 0&&($i=_e.init_csg());let o=gg(n),i=_e.csg_calc($i,o,n.length,t,xg(r));_e._free(o);let a=5,s=_e.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+3),u=0,l=_e.HEAPU32[s[u]>>2],d=_e.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=_e.HEAPU32[s[u]>>2],f=_e.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new ms.Float32BufferAttribute(d,3)),e.setAttribute("normal",new ms.Float32BufferAttribute(f,3));let h=_e.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ms.Sphere),e.boundingSphere.radius=-1,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},_e.free_mesh_data(i),m}function MP(n,r,e){if(_e===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,S=0;g<y.verticesPerFace.length;g++){o[S++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[S++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=CP(n,r,e));let a=t.length,s=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=_e._malloc(l),m=new Float32Array(_e.HEAPF32.buffer,f,c),h=new Uint32Array(_e.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),_e.get_csg_mesh(f,a,f+d,s,i)}function EP(n){return _e.has_open_edges(n)}function LP(n,r){_e.transform_csg_mesh(n,r.elements)}function DP(n){_e.free_csg_mesh(n)}var BP={ConeGeometry:ay,CubeGeometry:sy,CylinderGeometry:iy,DodecahedronGeometry:cy,EllipseGeometry:ji,HelixGeometry:Vy,IcosahedronGeometry:jy,LatheGeometry:Fy,NonParametricGeometry:Wy,PolygonGeometry:pc,PyramidGeometry:qy,RectangleGeometry:fc,SphereGeometry:$y,PlaneGeometry:Xy,BackdropGeometry:Ky,StarGeometry:mc,TextFrameGeometry:Qy,TorusGeometry:Jy,TorusKnotGeometry:tg,TriangleGeometry:rg,PathGeometry:ng,VectorGeometry:Qt},vu=n=>BP[n.type].create(n);function Yi(n){return n!==null&&"booleanOp"in n}var Xi=class extends Ei(xc.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new xc.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Yi(this.parent)&&this.visible,Yi(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(mr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Yi(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Xi&&(e.freeBooleanPointer(),Yi(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Yi(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Yi(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var vc=new Ki.Box3;function hs(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,c=-1/0,u=-1/0,l=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<a&&(a=f),m<s&&(s=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}vc.min.set(i,a,s),vc.max.set(c,u,l),vc.getCenter(t),vc.getSize(o).multiplyScalar(.5)}var RP=new Ki.BufferGeometry,GP=new Ki.MeshBasicMaterial,Et=class extends Xi{constructor(r,e){super(RP,GP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?hs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Oo=require("three");var ur=require("three");var Fg=require("three");var Dr=require("three");var ys=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var vg=require("three"),Pt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=vg.MathUtils.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof Pt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Pu=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},gt=new Pu;var Ou=require("three");var bg=require("three"),se=class extends Pt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=bg.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),c=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,s.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var ze=class extends se{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(c.fragment.name,i,t))}};var tt=class extends ze{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ou.Vector2?e:new Ou.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Au=require("three");var Lt=class extends ze{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Au.Vector3?e:new Au.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var Sg=require("three"),xt=class extends Sg.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Jt=class extends ze{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof xt?e:new xt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var VP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,wg=/[a-z_0-9]+/gi,H=class extends se{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let l=[];for(;s=wg.exec(this.src);)l.push(s);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&>.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=gt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||gt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&>.contains(h)&&e.include(gt.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=VP.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(wg);if(s){let c=0;for(;c<s.length;){let u=s[c++],l;u==="in"||u==="out"||u==="inout"?l=s[c++]:(l=u,u="");let d=s[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var zP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Cu=class extends se{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Cu.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,c,u="",l=zP.exec(e);this.useDefine=a??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],s=l[2],u=l[3]):(s=this.src,c="f"),this.name=s,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},Me=Cu;Me.PI="PI",Me.PI2="PI2",Me.RECIPROCAL_PI="RECIPROCAL_PI",Me.RECIPROCAL_PI2="RECIPROCAL_PI2",Me.LOG2="LOG2",Me.EPSILON="EPSILON";var jP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
-
)*?)}`,"gim"),FP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),
|
|
3
|
+
`&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}var He=require("three");var lg,qi=new Promise(n=>{lg=n}),sg=!1;var hc;function cg(){if(sg)return;if(hc)return hc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.471/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,c=await s({wasmBinary:a});lg(c),sg=!0}return hc=n(),hc}var dg=require("three");function On(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let l=i;for(let d of u)l=l[d];for(o in l){let d=l[o];bh(d)&&(l[o]=r.getVariable(d,[t.uuid,"geometry",...u,o]))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=Ee.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new dg.BufferGeometryLoader().parse(i);else if(i.type==="SubdivGeometry"){let u=new dt(i,e);return u.data=n,u}else if(i.type==="TextGeometry")return new Wi(i,r);let c;try{c=vu(s)}catch(u){console.error(u)}if(!c){let u=Ee.createFromState(vi.defaultData(),100,100);s.shape=u,c=vu(s)}return c}var ug=require("three"),OP=new ug.Matrix4;function ms(n,r,e,t){let o=n.position.array,i=n.normal.array,a=OP.makeScale(r,e,t).invert().elements,s,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,s=i[l],c=i[l+1],u=i[l+2],i[l]=a[0]*s+a[4]*c+a[8]*u,i[l+1]=a[1]*s+a[5]*c+a[9]*u,i[l+2]=a[2]*s+a[6]*c+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var yc=new He.Box3,$i=new He.Vector3,fe;qi.then(n=>{fe=n});var pg=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),fg=new Uint32Array([0,1,2,3]),mg=new Uint8Array([4]),dt=class extends He.BufferGeometry{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=zo.div(t,o);this.subdividedGeometry&&ms(this.subdividedGeometry.attributes,...i),this.originalGeometry&&ms(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply($i.fromArray(i));let s=$i.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=dt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new He.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(dt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new He.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;yc.setFromBufferAttribute(t),yc.getCenter(o),e.boundingSphere.radius=o.distanceTo(yc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),yc.getSize($i);let i={width:$i.x,height:$i.y,depth:$i.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{a=dt.allocate(e,i)}catch(l){console.error(l,e),a=dt.allocate({positionWASM:pg,indexWASM:fg,verticesPerFaceWASM:mg},i)}if(fe.set_destination_refinement_level(a,0),s=dt.buildLevel(a,!0,u),e.subdivisions>0)try{fe.set_destination_refinement_level(a,e.subdivisions),c=dt.buildLevel(a,!1,u)}catch{try{fe.set_destination_refinement_level(a,e.subdivisions-1),c=dt.buildLevel(a,!1,u)}catch{c=null}}else c=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:On(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,c,u,l;({positions:s,triIndices:l}=Tu(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=_u(s,l,i,d),{positions:s,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,a,s=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=pg,i=fg,a=mg);let u=o.length,l=i.length,d=a.length,p=o.length+s.length+c.length,f=i.length+a.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(m),x=new Float32Array(fe.HEAPF32.buffer,g,p),S=new Uint32Array(fe.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(s,o.length),x.set(c,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new He.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let b=w?fe.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):fe.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return fe._free(g),b}static buildLevel(e,t,o,i,a){let s=a?fe.get_mesh_data2(e,t?fe.Level.CONTROL:fe.Level.REFINED,o,a.elements):fe.get_mesh_data(e,t?fe.Level.CONTROL:fe.Level.REFINED,o),c=8,u=fe.HEAPU32.subarray(s>>2,(s>>2)+c),l=u.subarray(4,4+4),d=0,p=fe.HEAPU32[u[d]>>2],f=fe.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=fe.HEAPU32[u[d]>>2],h=fe.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=fe.HEAPU32[u[d]>>2],g=fe.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=fe.HEAPU32[u[d]>>2],S=fe.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new He.BufferGeometry;if(w.setIndex(new He.Uint32BufferAttribute(S,1)),w.setAttribute("position",new He.Float32BufferAttribute(f,3)),w.setAttribute("normal",new He.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new He.Uint32BufferAttribute(g,1));let b=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new He.BufferAttribute(b,4))}return fe.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,fe.free_mesh_data(s)}static freeSubdivPointer(e){fe.free_bvh(e),fe.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=fe.get_wireframe_data_for_base_level(e),a=4,s=fe.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+2),u=0,l=fe.HEAPU32[s[u]>>2],d=fe.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=fe.HEAPU32[s[u]>>2],f=fe.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new He.BufferGeometry;m.setAttribute("position",new He.Float32BufferAttribute(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new He.BufferAttribute(h,3)),m.setIndex(new He.Uint32BufferAttribute(f,1)),fe.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||fe.set_destination_refinement_level(e,t);let a=o?fe.get_topological_data2(e,i?fe.Level.CONTROL:fe.Level.REFINED,o.elements):fe.get_topological_data(e,i?fe.Level.CONTROL:fe.Level.REFINED),s=6,c=fe.HEAPU32.subarray(a>>2,(a>>2)+s),u=c.subarray(3,3+3),l=0,d=fe.HEAPU32[c[l]>>2],p=new Float32Array(fe.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=fe.HEAPU32[c[l]>>2],m=new Uint32Array(fe.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=fe.HEAPU32[c[l]>>2],y=new Uint8Array(fe.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return fe.free_topological_data(a),{positions:p,indices:m,verticesPerFace:y}}};var hg=["getX","getY","getZ"];function Tu(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[hg[p]](l)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[hg[p]](l));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:a,triIndices:c}}var gc=new He.Vector3,bu=new He.Vector3,Su=new He.Vector3,wu=new He.Vector3;function _u(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let c=e.userData.shape.extractShapePointsToFlatArray([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=c.length/2/u;c=c.filter((f,m)=>Math.floor(m/2)%p===0)}let l=0;for(let p=0;p<c.length;p+=2)l+=(c[p]-c[(p===0?c.length:p)-2])*(c[p+1]+c[(p===0?c.length:p)-1]);n.length=0;let d=0;if(l<0)for(let p=0;p<c.length;p+=2)n.push(c[p],c[p+1],0),o.push(d++);else for(let p=c.length-2;p>=0;p-=2)n.push(c[p],c[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let c=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&c++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&c++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&c++,c===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){gc.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),bu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Su.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),wu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),bu.sub(gc).normalize(),Su.sub(gc).normalize(),wu.sub(gc).normalize();let c=bu.cross(Su).dot(wu);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let c=[],u=[],l=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(c.push(p),l++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}c.reverse(),o.push(...c,...u),i.push(l,l)}return{indices:o,verticesPerFace:i}}var mr={};dp(mr,{calcBoolean:()=>IP,calcBooleanTopological:()=>NP,freeMeshSet:()=>DP,getMeshSet:()=>MP,hasOpenEdges:()=>EP,transformMeshSet:()=>LP});var AP,yg=new Promise(n=>{AP=n});var hs=require("three");var _e,Yi;yg.then(n=>_e=n);function CP(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Tu(n.getAttribute("position"),o),s;if(r&&e){let{indices:c,verticesPerFace:u}=_u(i,a,n);s=u.length,t=[];for(let l=0,d=0;l<s;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=a.length;t=Array(c+c/3),s=0;for(let u=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=a[u++],t[l++]=a[u++],t[l++]=a[u++]}return{positions:i,faceIndices:t,nFaces:s}}function gg(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=_e._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(_e.HEAPU32.buffer,i,r):new Float32Array(_e.HEAPF32.buffer,i,r)).set(n,0),i}function xg(n){switch(n){case 0:return _e.OP.UNION;case 1:return _e.OP.INTERSECTION;case 2:return _e.OP.A_MINUS_B;case 3:return _e.OP.B_MINUS_A;case 4:return _e.OP.SYMMETRIC_DIFFERENCE;case 5:return _e.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function NP(n,r){Yi===void 0&&(Yi=_e.init_csg());let e=gg(n),t=_e.csg_calc_topological(Yi,e,n.length,xg(r));_e._free(e);let o=6,i=_e.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,c=_e.HEAPU32[i[s]>>2],u=new Float32Array(_e.HEAPF32.subarray(c>>2,(c>>2)+a[s]));s++;let l=_e.HEAPU32[i[s]>>2],d=new Uint32Array(_e.HEAPU32.subarray(l>>2,(l>>2)+a[s]));s++;let p=_e.HEAPU32[i[s]>>2],f=new Uint8Array(_e.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return _e.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function IP(n,r,e,t){Yi===void 0&&(Yi=_e.init_csg());let o=gg(n),i=_e.csg_calc(Yi,o,n.length,t,xg(r));_e._free(o);let a=5,s=_e.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+3),u=0,l=_e.HEAPU32[s[u]>>2],d=_e.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=_e.HEAPU32[s[u]>>2],f=_e.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new hs.Float32BufferAttribute(d,3)),e.setAttribute("normal",new hs.Float32BufferAttribute(f,3));let h=_e.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new hs.Sphere),e.boundingSphere.radius=-1,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},_e.free_mesh_data(i),m}function MP(n,r,e){if(_e===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,S=0;g<y.verticesPerFace.length;g++){o[S++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[S++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=CP(n,r,e));let a=t.length,s=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=_e._malloc(l),m=new Float32Array(_e.HEAPF32.buffer,f,c),h=new Uint32Array(_e.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),_e.get_csg_mesh(f,a,f+d,s,i)}function EP(n){return _e.has_open_edges(n)}function LP(n,r){_e.transform_csg_mesh(n,r.elements)}function DP(n){_e.free_csg_mesh(n)}var BP={ConeGeometry:ay,CubeGeometry:sy,CylinderGeometry:iy,DodecahedronGeometry:cy,EllipseGeometry:Fi,HelixGeometry:Vy,IcosahedronGeometry:jy,LatheGeometry:Fy,NonParametricGeometry:Wy,PolygonGeometry:pc,PyramidGeometry:qy,RectangleGeometry:fc,SphereGeometry:$y,PlaneGeometry:Xy,BackdropGeometry:Ky,StarGeometry:mc,TextFrameGeometry:Qy,TorusGeometry:Jy,TorusKnotGeometry:tg,TriangleGeometry:rg,PathGeometry:ng,VectorGeometry:Qt},vu=n=>BP[n.type].create(n);function Xi(n){return n!==null&&"booleanOp"in n}var Ki=class extends Li(xc.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new xc.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Xi(this.parent)&&this.visible,Xi(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(mr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Xi(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ki&&(e.freeBooleanPointer(),Xi(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Xi(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Xi(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var vc=new Zi.Box3;function ys(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,c=-1/0,u=-1/0,l=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<a&&(a=f),m<s&&(s=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}vc.min.set(i,a,s),vc.max.set(c,u,l),vc.getCenter(t),vc.getSize(o).multiplyScalar(.5)}var RP=new Zi.BufferGeometry,GP=new Zi.MeshBasicMaterial,Et=class extends Ki{constructor(r,e){super(RP,GP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?ys(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Oo=require("three");var ur=require("three");var Fg=require("three");var Dr=require("three");var gs=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var vg=require("three"),Pt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=vg.MathUtils.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof Pt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Pu=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},gt=new Pu;var Ou=require("three");var bg=require("three"),se=class extends Pt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=bg.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),c=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,s.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var ze=class extends se{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(c.fragment.name,i,t))}};var tt=class extends ze{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ou.Vector2?e:new Ou.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Au=require("three");var Lt=class extends ze{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Au.Vector3?e:new Au.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var Sg=require("three"),xt=class extends Sg.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Jt=class extends ze{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof xt?e:new xt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var VP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,wg=/[a-z_0-9]+/gi,H=class extends se{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let l=[];for(;s=wg.exec(this.src);)l.push(s);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&>.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=gt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||gt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&>.contains(h)&&e.include(gt.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=VP.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(wg);if(s){let c=0;for(;c<s.length;){let u=s[c++],l;u==="in"||u==="out"||u==="inout"?l=s[c++]:(l=u,u="");let d=s[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var zP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Cu=class extends se{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Cu.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,c,u="",l=zP.exec(e);this.useDefine=a??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],s=l[2],u=l[3]):(s=this.src,c="f"),this.name=s,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},Me=Cu;Me.PI="PI",Me.PI2="PI2",Me.RECIPROCAL_PI="RECIPROCAL_PI",Me.RECIPROCAL_PI2="RECIPROCAL_PI2",Me.LOG2="LOG2",Me.EPSILON="EPSILON";var jP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
+
)*?)}`,"gim"),FP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qi=class extends se{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=jP.exec(e);if(t){let o=t[2],i;for(;i=FP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ji=class extends se{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};gt.addKeyword("uv",function(){return new Ji});gt.addKeyword("uv2",function(){return new Ji(1)});var bc=require("three");var An=class extends se{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??An.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case bc.LinearEncoding:return["Linear"];case bc.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=An.Nodes[this.method],s=e.include(a);if(s===An.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(s+"( "+o+", "+c+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=An.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=An.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},Ut=An;Ut.Nodes={LinearToLinear:new H(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
5
5
|
`)),sRGBToLinear:new H(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
6
6
|
`)),LinearTosRGB:new H(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
7
|
-
`))},Ut.LINEAR_TO_LINEAR="LinearToLinear",Ut.SRGB_TO_LINEAR="sRGBToLinear",Ut.LINEAR_TO_SRGB="LinearTosRGB";var De=class extends H{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};var Tg=require("three"),Ht=class extends ze{constructor(e=new Tg.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new
|
|
7
|
+
`))},Ut.LINEAR_TO_LINEAR="LinearToLinear",Ut.SRGB_TO_LINEAR="sRGBToLinear",Ut.LINEAR_TO_SRGB="LinearTosRGB";var De=class extends H{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};var Tg=require("three"),Ht=class extends ze{constructor(e=new Tg.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Ji,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,c;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?c=s+"( "+o+", "+i+", "+a+" )":c=s+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Ut(new De("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,t)}};var J=class extends ze{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var xs=class extends se{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,c=s.build(e,t)+"( ",u=[];if(s.inputs){for(let l=0;l<s.inputs.length;l++){let d=s.inputs[l],p=this.inputs[l]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var Nu=class extends se{constructor(e,t,o=Nu.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},Ot=Nu;Ot.ADD="+",Ot.SUB="-",Ot.MUL="*",Ot.DIV="/";var je=class extends se{constructor(e,t=je.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case je.MIX:case je.CLAMP:case je.REFRACT:case je.SMOOTHSTEP:case je.FACEFORWARD:return 3;case je.MIN:case je.MAX:case je.MOD:case je.STEP:case je.REFLECT:case je.DISTANCE:case je.DOT:case je.CROSS:case je.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case je.LENGTH:case je.DISTANCE:case je.DOT:return"f";case je.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case je.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case je.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case je.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case je.STEP:o=this.a.build(e,s===1?"f":l),i=this.b.build(e,l);break;case je.MIN:case je.MAX:case je.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case je.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),a=this.c.build(e,"f");break;case je.MIX:o=this.a.build(e,l),i=this.b.build(e,l),a=this.c.build(e,u===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(a=this.c.build(e,l));break}let p=[];p.push(o),i&&p.push(i),a&&p.push(a);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},xe=je;xe.RAD="radians",xe.DEG="degrees",xe.EXP="exp",xe.EXP2="exp2",xe.LOG="log",xe.LOG2="log2",xe.SQRT="sqrt",xe.INV_SQRT="inversesqrt",xe.FLOOR="floor",xe.CEIL="ceil",xe.NORMALIZE="normalize",xe.FRACT="fract",xe.SATURATE="saturate",xe.SIN="sin",xe.COS="cos",xe.TAN="tan",xe.ASIN="asin",xe.ACOS="acos",xe.ARCTAN="atan",xe.ABS="abs",xe.SIGN="sign",xe.LENGTH="length",xe.NEGATE="negate",xe.INVERT="invert",xe.MIN="min",xe.MAX="max",xe.MOD="mod",xe.STEP="step",xe.REFLECT="reflect",xe.DISTANCE="distance",xe.DOT="dot",xe.CROSS="cross",xe.POW="pow",xe.MIX="mix",xe.CLAMP="clamp",xe.REFRACT="refract",xe.SMOOTHSTEP="smoothstep",xe.FACEFORWARD="faceforward";var ea=class extends se{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new xs(ea.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Ut(new De("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Ut(new De("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Ut(new De("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Ut(new De("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new De(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new De(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new De(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new De(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new De("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=a,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new xs(ea.Nodes.roughnessToMip,[i]),s=new xe(a,ea.Nodes.m0,ea.Nodes.cubeUV_maxMipLevel,xe.CLAMP),c=new xe(s,xe.FLOOR),u=new xe(s,xe.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Ot(c,new J(1).setReadonly(!0),Ot.ADD)),p=new xe(l,d,u,xe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},ta=ea;ta.Nodes=function(){let e=new Qi(`struct TextureCubeUVData {
|
|
8
8
|
vec4 tl;
|
|
9
9
|
vec4 tr;
|
|
10
10
|
vec4 br;
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
84
84
|
}
|
|
85
85
|
return mip;
|
|
86
|
-
}`,N);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var
|
|
86
|
+
}`,N);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Cn=class extends se{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Cn.VIEW}getShared(){return this.scope===Cn.WORLD}build(e,t,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,a){let s;switch(this.scope){case Cn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Cn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Cn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),t)}},At=Cn;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.NORMAL="normal";gt.addKeyword("viewNormal",function(){return new At(At.VIEW)});gt.addKeyword("localNormal",function(){return new At(At.NORMAL)});gt.addKeyword("worldNormal",function(){return new At(At.WORLD)});var Jr=class extends se{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Jr.LOCAL}getType(){switch(this.scope){case Jr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Jr.LOCAL:case Jr.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case Jr.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Jr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Jr.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Jr.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},er=Jr;er.LOCAL="local",er.WORLD="world",er.VIEW="view",er.PROJECTION="projection";gt.addKeyword("position",function(){return new er});gt.addKeyword("worldPosition",function(){return new er(er.WORLD)});gt.addKeyword("viewPosition",function(){return new er(er.VIEW)});var Lr=class extends se{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Lr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Lr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Lr.VECTOR:{let a=new At(At.VIEW),s=e.context.roughness,c=a.build(e,"v3"),u=new er(er.VIEW).build(e,"v3"),l=s?s.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;l&&(d=`normalize( mix( ${d}, ${c}, ${l} * ${l} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Lr.CUBE:{let a=new Lr(Lr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case Lr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new Lr(Lr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},eo=Lr;eo.CUBE="cube",eo.SPHERE="sphere",eo.VECTOR="vector";var Sc=class extends se{constructor(e=new Ht,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ta(this.value,t??new eo(eo.VECTOR),o),this.irradianceNode=new ta(this.value,new At(At.WORLD),new J(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var _g=require("three");var wc=class extends ze{constructor(e=new _g.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new eo,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Ut(new De("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,u),e.removeContext(),e.format(s,u,t)}};var Pg=`
|
|
87
87
|
uniform int frameIndex;
|
|
88
88
|
uniform vec2 resolution;
|
|
89
89
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -230,13 +230,13 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
230
230
|
`}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",a=""){let s=this.getVars(o),c=s[r];if(!c){let u=s.length;c={name:t||"node"+i+u+(a?"_"+a:""),type:e},s.push(c),s[r]=c}return c}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
|
|
231
231
|
`)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let a=r[o],s=a.type,c=a.name,u=a.size,l=this.getFormatByType(s);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?t+=e+" "+l.substring(0,l.length-2)+" "+c+`[${u}];
|
|
232
232
|
`:t+=e+" "+l+" "+c+`;
|
|
233
|
-
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Pt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,c=s.list.length,u=new
|
|
233
|
+
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Pt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,c=s.list.length,u=new gs({type:e,size:t.size,name:o||"nodeUA"+c+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(u),s[r].push(u),s[r][u.name]=u,this.uniforms[u.name]=u,u}else{let s=this.inputs.uniforms,c=s.list.length,u=new gs({type:e,name:o||"nodeU"+c+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(u),s[r].push(u),s[r][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?gt.get(r):r,this.context.include===!1)return r.name;r instanceof H?o=this.includes.functions:r instanceof Me?o=this.includes.consts:r instanceof Qi&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof H&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return kP[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case Dr.CubeReflectionMapping:case Dr.CubeRefractionMapping:return new wc(t);case Dr.CubeUVReflectionMapping:return new Sc(new Ht(t));default:return new Ht(t)}else{if(t.isVector2)return new tt(t);if(t.isVector3)return new Lt(t);if(t.isVector4)return new Jt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return UP[r]||r}getFormatByType(r){return HP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Ng[r]}getIndexByElement(r){return Ng.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=Dr.LinearEncoding,e===Dr.LinearEncoding&&this.context.gamma&&(e=Dr.sRGBEncoding),e}};var Fe=require("three");var Re=class extends ze{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof xt?e:new xt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return u?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var Pe=class extends ze{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};var Oc=require("three");var at=class extends ze{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var Br=class extends ze{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var Ig=require("three");var on=class extends ze{};var _c=class extends on{constructor(e){super("v3");this.image=e;this._value=new Ig.Vector3}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Nn=class extends on{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var Mg=require("three");var ra=class extends ze{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new Mg.Matrix3}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Eg=require("three");var Dt=class extends ze{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new Eg.Matrix4}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Dg=require("three");function Lg(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Pc=class extends ra{constructor(e,t){super(new Dg.Matrix3);this.repeat=e;this.offset=t;Lg(this.value,e,t)}updateMatrix(){Lg(this.value,this.repeat,this.offset)}};var Iu=require("three");var Rr=class extends ze{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Iu.Vector4?new Array(e).fill(t):new Array(e).fill(new Iu.Vector4(0))}};var oa=class extends se{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Mu=class extends se{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Mu.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},In=Mu;In.Nodes=function(){return{customColor:new H(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
234
234
|
float lalpha = alpha * mask;
|
|
235
235
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
236
236
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
237
237
|
|
|
238
238
|
return color;
|
|
239
|
-
}`)}}();var Eu=class extends se{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Eu.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
239
|
+
}`)}}();var Eu=class extends se{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Eu.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},na=Eu;na.Nodes=function(){return{customNormal:new H(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
240
240
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
241
241
|
normal *= step( vec3(0.5), cnormal );
|
|
242
242
|
|
|
@@ -245,7 +245,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
245
245
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
246
246
|
|
|
247
247
|
return normal;
|
|
248
|
-
}`)}}();var
|
|
248
|
+
}`)}}();var ia=class extends se{constructor(e,t,o,i,a,s,c,u,l,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=c,this.blending=u,this.mat=l,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(ia.Nodes.cylindrical);break;case 2:i=e.include(ia.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=["zy","xz","xy"][this.axis.value],u=new H(`
|
|
249
249
|
vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
250
250
|
vec2 projected = (1. + (position.${c})) / 2.;
|
|
251
251
|
vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -269,7 +269,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
269
269
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
270
270
|
|
|
271
271
|
return col;
|
|
272
|
-
}`);i=e.include(u);break;case 4:i=e.include(
|
|
272
|
+
}`);i=e.include(u);break;case 4:i=e.include(ia.Nodes.triplanar);break;default:i=e.include(ia.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,c=s+"0",u=s+"1",l=s+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec3"),a.push(c),a.push(u),a.push(l),a.push(d)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),t)}},nn=ia;nn.Nodes=function(){let e=new H(`
|
|
273
273
|
vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
|
|
274
274
|
vec3 posN = normalize(position);
|
|
275
275
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -424,7 +424,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
424
424
|
|
|
425
425
|
return col;//n * 0.5 + 0.5;
|
|
426
426
|
}
|
|
427
|
-
`);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var
|
|
427
|
+
`);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var aa=class extends se{constructor(e,t,o,i,a,s,c,u,l,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=c,this.direction=u,this.colors=l,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new H(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
|
|
428
428
|
vec4 color = colors[0];
|
|
429
429
|
#ifdef ${o}_IS_VECTOR
|
|
430
430
|
#ifdef ${o}_LINEAR
|
|
@@ -464,7 +464,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
464
464
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
465
465
|
|
|
466
466
|
return color.rgb;
|
|
467
|
-
}`,[
|
|
467
|
+
}`,[aa.Nodes.vectorLinearWorldSpaceDepth,aa.Nodes.vectorLinearObjectSpaceDepth,aa.Nodes.vectorSphericalObjectSpaceDepth,aa.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.build(e,"f[]")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},sa=aa;sa.Nodes=function(){let e=new H(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
468
468
|
vec3 n = normalize(direction);
|
|
469
469
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
470
470
|
return ( dist - near ) / ( far - near );
|
|
@@ -478,7 +478,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
478
478
|
}`),i=new H(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
479
479
|
float dist = length(position - origin);
|
|
480
480
|
return ( dist - near ) / ( far - near );
|
|
481
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
481
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var vs=class extends se{constructor(e,t,o,i,a,s,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=a,this.isMask=u,this.alpha=s,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new H(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
482
482
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
483
483
|
|
|
484
484
|
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
@@ -486,7 +486,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
486
486
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
487
487
|
|
|
488
488
|
return color;
|
|
489
|
-
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Lu=class extends se{constructor(e,t,o,i,a,s,c,u,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=c,this.isMask=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Lu.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
489
|
+
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Lu=class extends se{constructor(e,t,o,i,a,s,c,u,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=c,this.isMask=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Lu.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},la=Lu;la.Nodes=function(){return{gradient:new H(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
|
|
490
490
|
vec4 color = colors[0];
|
|
491
491
|
vec2 m = morph / vUv.xy;
|
|
492
492
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -528,7 +528,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
528
528
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
529
529
|
|
|
530
530
|
return color.xyz;
|
|
531
|
-
}`)}}();var Du=class extends se{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Du.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
531
|
+
}`)}}();var Du=class extends se{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Du.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ca=Du;ca.Nodes=function(){return{matcap:new H(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
532
532
|
vec3 viewDir = normalize( vViewPosition );
|
|
533
533
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
534
534
|
vec3 y = cross( viewDir, x );
|
|
@@ -540,7 +540,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
540
540
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
541
541
|
|
|
542
542
|
return matcapColor.rgb;
|
|
543
|
-
}`)}}();var
|
|
543
|
+
}`)}}();var bs=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(bs||{}),Ct=function(){let r=new H(`vec3 random3(vec3 c) {
|
|
544
544
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
545
545
|
vec3 r;
|
|
546
546
|
r.z = fract(512.0*j);
|
|
@@ -893,7 +893,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
893
893
|
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
894
894
|
}
|
|
895
895
|
}
|
|
896
|
-
`,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:a,fbm:l,perlin:p,voronoi:S}}();var
|
|
896
|
+
`,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:a,fbm:l,perlin:p,voronoi:S}}();var da=class extends se{constructor(e,t,o,i,a,s,c,u,l,d,p,f,m,h,y,g,x,S,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=c,this.colorB=u,this.colorC=l,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=S,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(bs)[this.noiseType.value],c=s=="voronoi"?`
|
|
897
897
|
float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
898
898
|
|
|
899
899
|
// Apply clipping to colors
|
|
@@ -930,7 +930,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
930
930
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
931
931
|
|
|
932
932
|
return clamp(color, 0.0, 1.0).rgb;
|
|
933
|
-
}`,[Ct.simplex,Ct.simplexFractal,Ct.simplexAshima,Ct.fbm,Ct.perlin,Ct.voronoi]),l=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}};
|
|
933
|
+
}`,[Ct.simplex,Ct.simplexFractal,Ct.simplexAshima,Ct.fbm,Ct.perlin,Ct.voronoi]),l=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}};da.numOctaves=5;var Bu=class extends se{constructor(e,t,o,i,a,s,c,u,l,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=l,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
|
|
934
934
|
vID = randomColor.r;
|
|
935
935
|
vec2 ${o}_offset = vec2(0.0);
|
|
936
936
|
if (${s}) {
|
|
@@ -945,7 +945,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
945
945
|
// if this offset is the biggest of all the potential offsets
|
|
946
946
|
gl_Position = ${o}_clipPosition;
|
|
947
947
|
}
|
|
948
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Bu.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},
|
|
948
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Bu.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ua=Bu;ua.Nodes=function(){let e=new H(`
|
|
949
949
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
950
950
|
{
|
|
951
951
|
vec2 halton = haltonSequence[frameIndex];
|
|
@@ -1180,7 +1180,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1180
1180
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1181
1181
|
|
|
1182
1182
|
return clamp(color, 0.0, 1.0).rgb;
|
|
1183
|
-
}`,[s,a,to.DrawFunctions.circle,to.DrawFunctions.ring,to.DrawFunctions.polygon,to.DrawFunctions.cross,to.DrawFunctions.diamond,to.DrawFunctions.checkerboard,to.DrawFunctions.line,to.DrawFunctions.wave]),l=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},
|
|
1183
|
+
}`,[s,a,to.DrawFunctions.circle,to.DrawFunctions.ring,to.DrawFunctions.polygon,to.DrawFunctions.cross,to.DrawFunctions.diamond,to.DrawFunctions.checkerboard,to.DrawFunctions.line,to.DrawFunctions.wave]),l=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},pa=to;pa.DrawFunctions=function(){let e=new H(`float hashwithoutsine12(vec2 p) {
|
|
1184
1184
|
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1185
1185
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1186
1186
|
return fract((p3.x + p3.y) * p3.z);
|
|
@@ -1345,7 +1345,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1345
1345
|
float s = mix(size, size * rand, variation);
|
|
1346
1346
|
|
|
1347
1347
|
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1348
|
-
}`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:c,checkerboard:u,line:l,wave:d}}();var Ru=class extends se{constructor(e,t,o,i,a,s,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ru.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
1348
|
+
}`);return{tileAndCenter:t,circle:o,ring:i,polygon:a,cross:s,diamond:c,checkerboard:u,line:l,wave:d}}();var Ru=class extends se{constructor(e,t,o,i,a,s,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ru.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},fa=Ru;fa.Nodes=function(){let e=new H(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1349
1349
|
vec3 st = position / noiseScale;
|
|
1350
1350
|
vec3 q = vec3(simplex3d(st),
|
|
1351
1351
|
simplex3d(st + vec3(1.0)),
|
|
@@ -1368,7 +1368,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1368
1368
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1369
1369
|
|
|
1370
1370
|
return res;
|
|
1371
|
-
}`,[e])}}();var Gu=class extends se{constructor(e,t,o,i,a,s,c,u,l,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=c,this.shadowColor=u,this.offset=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Gu.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
1371
|
+
}`,[e])}}();var Gu=class extends se{constructor(e,t,o,i,a,s,c,u,l,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=c,this.shadowColor=u,this.offset=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Gu.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ma=Gu;ma.Nodes=function(){let e=new H(`float rand(float n) {
|
|
1372
1372
|
return fract(sin(n) * 43758.5453123);
|
|
1373
1373
|
}`),t=new H(`float hash1(float p) {
|
|
1374
1374
|
p = fract(p * 0.011);
|
|
@@ -1668,7 +1668,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1668
1668
|
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
|
|
1669
1669
|
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
|
|
1670
1670
|
return mix( fSample, cSample, fract( lod ) );
|
|
1671
|
-
}`)}}();function Rg(n,r){return n>=r?new Vu.Vector2(r/n,1):new Vu.Vector2(1,n/r)}var zu=class extends se{constructor(e,t,o,i,a,s,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,we.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(zu.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
1671
|
+
}`)}}();function Rg(n,r){return n>=r?new Vu.Vector2(r/n,1):new Vu.Vector2(1,n/r)}var zu=class extends se{constructor(e,t,o,i,a,s,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,we.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(zu.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ha=zu;ha.Nodes=function(){let e=new H(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1672
1672
|
// Slightly modified version of this:
|
|
1673
1673
|
// https://www.shadertoy.com/view/ltScRG
|
|
1674
1674
|
|
|
@@ -1759,7 +1759,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1759
1759
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1760
1760
|
|
|
1761
1761
|
return transmission;
|
|
1762
|
-
}`,[a])}}();var ju=(e=>(e.NOISE="noise",e.MAP="map",e))(ju||{}),Fu=class extends se{constructor(e,t,o,i,a,s,c,u,l,d,p){super("v3");this.displacementTypeIndex=new Pe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(ju)[this.displacementTypeIndex.value]==="map"&&(this.mat=new
|
|
1762
|
+
}`,[a])}}();var ju=(e=>(e.NOISE="noise",e.MAP="map",e))(ju||{}),Fu=class extends se{constructor(e,t,o,i,a,s,c,u,l,d,p){super("v3");this.displacementTypeIndex=new Pe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(ju)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ra(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=c,this.lowCut=u,this.quality=l}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(ju)[this.displacementTypeIndex.value]){case"map":{o=e.include(Fu.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let s=Object.values(bs)[this.noiseFunctionIndex.value],c=new H(`vec3 orthogonal(vec3 v) {
|
|
1763
1763
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1764
1764
|
}`),u=s=="voronoi"?`
|
|
1765
1765
|
float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
@@ -1788,7 +1788,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1788
1788
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1789
1789
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1790
1790
|
return displaced_position;
|
|
1791
|
-
}`,[l,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
1791
|
+
}`,[l,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ya=Fu;ya.Nodes=function(){let e=new H(`vec3 orthogonal(vec3 v) {
|
|
1792
1792
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1793
1793
|
}`),t=new H(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1794
1794
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -1810,7 +1810,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1810
1810
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1811
1811
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1812
1812
|
return displaced_position;
|
|
1813
|
-
}`,[e,t])}}();var we={normalRenderTarget:new Ht,normalRenderTargetDepth:new Ht,transmissionRenderTarget:new Ht,aspectRatio:new tt,transmissionSize:new tt(2048,2048),transmissionRenderTargetDepth:new Ht,aoRenderTarget:new Ht,aoEnabled:new at,pixelRatioNode:new J(1),resolution:new tt,penumbraSize:new Br(5,.5),frameIndex:new Pe(0),transmissionLod:new Pe(2)};for(let n of Object.values(we))n.isRenderGlobal=!0;var
|
|
1813
|
+
}`,[e,t])}}();var we={normalRenderTarget:new Ht,normalRenderTargetDepth:new Ht,transmissionRenderTarget:new Ht,aspectRatio:new tt,transmissionSize:new tt(2048,2048),transmissionRenderTargetDepth:new Ht,aoRenderTarget:new Ht,aoEnabled:new at,pixelRatioNode:new J(1),resolution:new tt,penumbraSize:new Br(5,.5),frameIndex:new Pe(0),transmissionLod:new Pe(2)};for(let n of Object.values(we))n.isRenderGlobal=!0;var En=class extends Pt{constructor(){super("basic");this.nodeType="Basic";this.color=new Re(ht),this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.previousModelViewMatrix=new Dt,this.previouseProjectionMatrix=new Dt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:we.frameIndex}),e.mergeUniform({resolution:we.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Oc.UniformsUtils.merge([Oc.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1814
1814
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1815
1815
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1816
1816
|
#include <defaultnormal_vertex>
|
|
@@ -1830,7 +1830,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1830
1830
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
|
|
1831
1831
|
`)}else{this.color===void 0&&(this.color=new Re(ht)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
1832
1832
|
`));let c=["#include <normal_fragment_begin>",o.code];i&&c.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?c.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):c.push(`vec3 finalColor = ${o.result};`);let u="1.0";this.mask&&(this.mask.analyze(e),u=`luminance(${this.mask.flow(e,"v3").result})`),i?c.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${u} );`):c.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&c.push(`gl_FragColor.a *= ${a.result};`),c.push("#include <fog_fragment>","#include <dithering_fragment>"),t=c.join(`
|
|
1833
|
-
`)}return t}};var
|
|
1833
|
+
`)}return t}};var Ss=require("three");var ws=class extends Pt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Re(ht),this.emissive=new Re(0),this.emissiveIntensity=new J(1),this.previousModelViewMatrix=new Dt,this.previouseProjectionMatrix=new Dt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.occlusion=new at(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:we.frameIndex}),e.mergeUniform({resolution:we.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ss.UniformsUtils.merge([Ss.UniformsLib.fog,Ss.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1834
1834
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1835
1835
|
#ifndef USE_LAYER_DISPLACE
|
|
1836
1836
|
#include <defaultnormal_vertex>
|
|
@@ -1939,7 +1939,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1939
1939
|
outgoingLight *= ao;
|
|
1940
1940
|
}
|
|
1941
1941
|
`),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
|
|
1942
|
-
`)}return t}};var
|
|
1942
|
+
`)}return t}};var Ts=require("three");var Po=function(){let n=new H(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
1943
1943
|
|
|
1944
1944
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
1945
1945
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -1970,7 +1970,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1970
1970
|
|
|
1971
1971
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
1972
1972
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
1973
|
-
}`);return{dHdxy:n,perturbNormalArb:r}}();var
|
|
1973
|
+
}`);return{dHdxy:n,perturbNormalArb:r}}();var _s=class extends Pt{constructor(){super("phong");this.nodeType="Phong";this.color=new Re(ht),this.specular=new Re(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Dt,this.previouseProjectionMatrix=new Dt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.occlusion=new at(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:we.frameIndex}),e.mergeUniform({resolution:we.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ts.UniformsUtils.merge([Ts.UniformsLib.fog,Ts.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1974
1974
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1975
1975
|
#include <skinbase_vertex>
|
|
1976
1976
|
#include <skinnormal_vertex>
|
|
@@ -2038,7 +2038,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2038
2038
|
outgoingLight *= ao;
|
|
2039
2039
|
}
|
|
2040
2040
|
`),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
|
|
2041
|
-
`)}return t}};var
|
|
2041
|
+
`)}return t}};var ga=require("three");var Ps=class extends Pt{constructor(){super("standard");this.nodeType="Standard";this.color=new Re(ht),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.previousModelViewMatrix=new Dt,this.previouseProjectionMatrix=new Dt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.occlusion=new at(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:we.frameIndex}),e.mergeUniform({resolution:we.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ga.UniformsUtils.merge([ga.UniformsLib.fog,ga.UniformsLib.lights])),ga.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2042
2042
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2043
2043
|
#if !defined( USE_LAYER_DISPLACE )
|
|
2044
2044
|
#include <defaultnormal_vertex>
|
|
@@ -2129,7 +2129,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2129
2129
|
outgoingLight *= ao;
|
|
2130
2130
|
}
|
|
2131
2131
|
`),d&&h.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&h.push(`gl_FragColor.a *= ${f.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
|
|
2132
|
-
`)}return t}};var
|
|
2132
|
+
`)}return t}};var Os=require("three");var As=class extends Pt{constructor(){super("toon");this.nodeType="Toon";this.color=new Re(ht),this.specular=new Re(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Dt,this.previouseProjectionMatrix=new Dt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:we.frameIndex}),e.mergeUniform({resolution:we.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Os.UniformsUtils.merge([Os.UniformsLib.fog,Os.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2133
2133
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2134
2134
|
#ifndef USE_LAYER_DISPLACE
|
|
2135
2135
|
#include <defaultnormal_vertex>
|
|
@@ -2212,11 +2212,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2212
2212
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${c.result} );
|
|
2213
2213
|
}
|
|
2214
2214
|
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),l?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&p.push(`gl_FragColor.a *= ${d.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
|
|
2215
|
-
`)}return t}};var Ic=require("three");var Ac=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Uu=class extends Ac{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},ku;function Gg(n){return typeof n=="string"?n:(ku||(ku=new Uu),ku.load(n))}var Cc=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Nc=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var ga=class extends Cc{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Gg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new Ic.VideoTexture(this.img,void 0,e,e):o=new Ic.Texture(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var hr=class extends ga{};var $e=require("three");function Bt(n,r){return r.color(n)}function Vg(n,r){switch(n.type){case"fresnel":return $P(n,r);case"gradient":return YP(n,r);case"depth":return XP(n,r);case"normal":return KP(n,r);case"noise":return ZP(n,r);case"rainbow":return QP(n,r);case"toon":return JP(n,r);case"outline":return eO(n,r);case"transmission":return tO(n,r);case"color":return qP(n,r);case"pattern":return rO(n,r)}}function WP(n){return{type:n.type}}function Gr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...WP(n),alpha:i,mode:t,isMask:o}}function qP(n,r){return{...Gr(n,r),color:Bt(n.color,r)}}function $P(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...Gr(n,r),color:Bt(a,r),bias:e,scale:t,intensity:o,factor:i}}function YP(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:c}=n;return{...Gr(n,r),gradientType:e,smooth:t,colors:o.map(u=>new $e.Vector4(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new $e.Vector2(...s),morph:new $e.Vector2(...c),angle:a}}function XP(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:c,colors:u,steps:l,smooth:d}=n;return{...Gr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new $e.Vector3(...s),direction:c?new $e.Vector3(...c):new $e.Vector3(1,0,0),colors:u.map(p=>p!==void 0?new $e.Vector4(p[0],p[1],p[2],p[3]):new $e.Vector4(0,0,0,0)),steps:l.slice(0,u.length),smooth:d}}function KP(n,r){let{cnormal:e}=n;return{...Gr(n,r),cnormal:new $e.Vector3(e[0],e[1],e[2])}}function ZP(n,r){return{...Gr(n,r),scale:n.scale,move:n.move,fA:new $e.Vector2(...n.fA),fB:new $e.Vector2(...n.fB),size:new $e.Vector3(...n.size),distortion:new $e.Vector2(...n.distortion),colorA:Bt(n.colorA,r),colorB:Bt(n.colorB,r),colorC:Bt(n.colorC,r),colorD:Bt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function QP(n,r){return{...Gr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new $e.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new $e.Vector3(...n.offset)}}function JP(n,r){return{...Gr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new $e.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new $e.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Bt(n.shadowColor,r),offset:new $e.Vector3(...n.offset)}}function eO(n,r){return{...Gr(n,r),outlineColor:Bt(n.outlineColor,r),contourColor:Bt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new $e.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function tO(n,r){return{...Gr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function rO(n,r){return{...Gr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new $e.Vector2(...n.offset),colorA:Bt(n.colorA,r),colorB:Bt(n.colorB,r),frequency:new $e.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new $e.Vector2(...n.vertical),horizontal:new $e.Vector2(...n.horizontal),sides:n.sides}}var an=class extends xt{};var zg=require("three");var Hu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Wu={depth:["colors"]};function oO(n,r,e){if(r==="isMask")return!0;let t=Hu[n.type],o=Wu[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function qu(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),c=t;c.image instanceof hr||c.image.deref(),c.image=s}if("video"in i){let a=i.video,s=r.video(a),c=t;c.image instanceof hr||c.image.deref(),c.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function jg(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if($u(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof on))switch(o=o||oO(e,i,a),s.constructor){case Re:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof an?s.value=new xt(c.r,c.g,c.b,c.a):s.setRGBA(c);break}case Jt:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof an?s.value=new xt(c.r,c.g,c.b,c.a):s.value.setRGBA(c.r,c.g,c.b,c.a);break}case tt:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]);break}case Lt:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]),s.value.setZ(c[2]);break}case Ht:{qu(a,r,e);break}case Rr:{s.value=a.map(c=>new zg.Vector4(...c));break}default:{s.value=a;break}}}return o}var As=(n,r)=>(typeof n=="string"?Math.max(0,Math.min(1,Number(r.getVariable(n)??100)/100)):n)??1,ro=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)$u(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return cr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),a=new Cn(i,t.texture.wrapping),s=new _c(i),c=new Pc(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),l=new Pe(t.projection??0),d=new Pe(["x","y","z"].indexOf(t.axis)??0),p=new Pe(t.side??0),f=new tt(t.size?new Fe.Vector2(t.size[0],t.size[1]):new Fe.Vector2(100,100)),m=new J(t.blending??0),h=new J(As(t.alpha,o)),y=new Pe(t.mode??0),g=new at(t.isMask??!1),x=new nn(a,s,u,l,d,p,f,m,c,h,y,g),S=new De(x.calpha,"f");return new Ke(r,e,t,{texture:a,textureSize:s,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,S,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Cn(i,t.texture.wrapping),s=new J(As(t.alpha,o)),c=new Pe(t.mode??0),u=new at(t.isMask??!1),l=new la(a,s,c,u),d=new De(l.calpha,"f");return new Ke(r,e,t,{texture:a,alpha:s,mode:c,isMask:u},l,c,d,u,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Lt(new Fe.Vector3(...t.offset)),a=new J(t.scale??10),s=new J(t.intensity??8),c=new J(t.movement??1),u=new Pe(t.noiseType??0),l=new Pe(t.voronoiStyle??0),d=new J(t.smoothness??.5),p=new J(t.seed??0),f=new J(t.highCut??1),m=new J(t.lowCut??0),h=new Pe(t.quality??1),y=new ha(s,c,i,l,d,p,f,m,h,a,u);return new Cs(r,e,t,{offset:i,scale:a,intensity:s,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y,o)}else throw new Error;else return aO(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):jg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?qu(o.props,t.shared,this):!0;return!1}dispose(){if(nO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof hr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},Ke=class extends ro{constructor(e,t,o,i,a,s,c,u,l){super(e,t,o,i,l);this.params=i;this.color=a;this.mode=s;this.alpha=c;this.isMask=u}},Cs=class extends ro{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},cr=class extends ro{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new J(As(o.alpha,i)),c=new Pe(o.mode),u=new J(o.bumpMapIntensity),l=new J(As(o.alphaOverride,i)),d;if(!o.visible)a=new Mn,d={};else if(o.category==="lambert"){a=new Ss;let p=new Re(i.color(o.emissive)??0),f=new at(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new Os;let p=new J(o.shininess??30),f=new Re(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new _s;let p=new J(o.roughness??.3),f=new J(o.metalness??0),m=new J(o.reflectivity??.5),h=new at(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:m,occlusion:h},a.roughness=p,a.metalness=f,a.reflectivity=m,a.occlusion=h}else{a=new Ts;let p=new J(o.shininess??30),f=new Re(o.specular!==void 0?i.color(o.specular)??1118481:1118481),m=new at(o.occlusion??!0);d={shininess:p,specular:f,occlusion:m},a.shininess=p,a.specular=f,a.occlusion=m}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=c,a.bumpMapIntensity=u,a.alphaOverride=l,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new cr(e,t,o,a,d,i)}get category(){return this.node.category}};function nO(n){let r=n instanceof ro?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function yr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new at(n.isMask??!1)}}function iO(n,r,e,t,o){switch(n.type){case"color":{let i=new Re(t.color??ht),a=yr(t),s=new Nn(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}case"fresnel":{let i=new Re(t.color??16777215),a=new J(t.bias??.1),s=new J(t.scale??1),c=new J(t.intensity??2),u=new J(t.factor??1),l=yr(t),d=new xs(i,a,s,c,u,l.alpha,l.mode,l.isMask),p=new De(d.calpha,"f");return new Ke(r,e,n,{color:i,bias:a,scale:s,intensity:c,factor:u,...l},d,l.mode,p,l.isMask,o)}case"rainbow":{let i=new J(t.filmThickness??30),a=new J(t.movement??0),s=new Lt(t.wavelengths??new Fe.Vector3(0,0,0)),c=new J(t.noiseStrength??0),u=new J(t.noiseScale??1),l=new Lt(t.offset??new Fe.Vector3(0,0,0)),d=yr(t),p=new pa(i,a,s,c,u,l,d.alpha,d.isMask),f=new De(p.calpha,"f");return new Ke(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:c,noiseScale:u,offset:l,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new J(t.thickness??10),a=new J(t.ior??1.5),s=new J(t.roughness??.5),c=we.transmissionSize,u=we.transmissionRenderTarget,l=we.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new tt(p/d,1):new tt(1,d/p),m=yr(t),h=new ma(i,a,s,c,u,l,f,m.alpha),y=new De(h.calpha,"f");return new Ke(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...m},h,m.mode,y,m.isMask,o)}case"toon":{let i=new Pe(t.positioning??0),a;t.colors?a=new Rr(t.colors.length,t.colors):(a=new Rr(10,new Fe.Vector4(0,0,0,1)),a.value[1]=new Fe.Vector4(1,1,1,1));let s;t.steps?s=new Br(t.steps.length,t.steps):(s=new Br(10,1),s.value[0]=0);let c=new Lt(t.source??new Fe.Vector3(0,0,0)),u=new at(t.isWorldSpace??!0),l=new J(t.noiseStrength??0),d=new J(t.noiseScale??1),p=new Jt(t.shadowColor),f=new Lt(t.offset??new Fe.Vector3(0,0,0)),m=yr(t),h=new fa(i,a,s,c,u,l,d,p,f,m.alpha),y=new De(h.calpha,"f");return new Ke(r,e,n,{positioning:i,colors:a,steps:s,source:c,isWorldSpace:u,noiseStrength:l,noiseScale:d,shadowColor:p,offset:f,...m},h,m.mode,y,m.isMask,o)}case"outline":{let i=new Re(t.outlineColor??16777215),a=new Re(t.contourColor??16777215),s=new J(t.outlineWidth??.1),c=new J(t.contourWidth??.1),u=new J(t.outlineThreshold??.1),l=new J(t.contourThreshold??.1),d=new J(t.outlineSmoothing??.1),p=new J(t.contourFrequency??.1),f=new Lt(t.contourDirection??new Fe.Vector3(0,1,0)),m=new at(t.positionalLines??!1),h=new at(t.compensation??!0),y=we.normalRenderTarget,g=we.normalRenderTargetDepth,x=we.pixelRatioNode,S=we.resolution,w=yr(t),b=new da(i,a,s,c,u,l,d,p,f,m,h,S,y,g,x,w.alpha),T=new De(b.calpha,"f");return new Ke(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:c,outlineThreshold:u,contourThreshold:l,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:m,compensation:h,...w},b,w.mode,T,w.isMask,o)}case"depth":{let i=new Pe(t.gradientType??0),a=new at(t.smooth??!1),s=new J(t.near??50),c=new J(t.far??200),u=new J(t.isVector??1),l=new J(t.isWorldSpace??0),d=new Lt(t.origin??new Fe.Vector3),p=new Lt(t.direction??new Fe.Vector3),f;t.colors?f=new Rr(t.colors.length,t.colors):(f=new Rr(2,new Fe.Vector4(0,0,0,1)),f.value[1]=new Fe.Vector4(1,1,1,1));let m;t.steps?m=new Br(t.steps.length,t.steps):(m=new Br(2,1),m.value[0]=0);let h=yr(t),y=new aa(i,a,s,c,u,l,d,p,f,m,h.alpha,h.isMask),g=new De(y.calpha,"f");return new Ke(r,e,n,{gradientType:i,smooth:a,near:s,far:c,isVector:u,isWorldSpace:l,origin:d,direction:p,colors:f,steps:m,...h},y,h.mode,g,h.isMask,o)}case"noise":{let i=new J(t.scale??1),a=new Lt(t.size??new Fe.Vector3(100,100,100)),s=new J(t.move??1),c=new tt(t.fA??new Fe.Vector2(1.7,9.2)),u=new tt(t.fB??new Fe.Vector2(8.3,2.8)),l=new tt(t.distortion??new Fe.Vector2(1,1)),d=new Jt(t.colorA),p=new Jt(t.colorB),f=new Jt(t.colorC),m=new Jt(t.colorD),h=new Pe(t.noiseType??0),y=new Pe(t.voronoiStyle??0),g=new J(t.highCut??1),x=new J(t.lowCut??0),S=new J(t.smoothness??.5),w=new J(t.seed??.5),b=new Pe(t.quality??1),T=yr(t),_=new ca(i,a,s,c,u,l,d,p,f,m,T.alpha,h,T.isMask,y,g,x,S,w,b),v=new De(_.calpha,"f");return new Ke(r,e,n,{scale:i,size:a,move:s,fA:c,fB:u,distortion:l,colorA:d,colorB:p,colorC:f,colorD:m,noiseType:h,...T,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},_,T.mode,v,T.isMask,o)}case"normal":{let i=new Lt(t.cnormal??new Fe.Vector3(1,1,1)),a=yr(t),s=new oa(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{cnormal:i,...a},s,a.mode,c,a.isMask,o)}case"gradient":{let i=new Pe(t.gradientType??0),a=new at(t.smooth??!1),s;t.colors?s=new Rr(t.colors.length,t.colors):(s=new Rr(10,new Fe.Vector4(0,0,0,1)),s.value[1]=new Fe.Vector4(1,1,1,1));let c;t.steps?c=new Br(t.steps.length,t.steps):(c=new Br(10,1),c.value[0]=0);let u=new tt(t.offset??new Fe.Vector2(0,0)),l=new tt(t.morph??new Fe.Vector2(0,0)),d=new J(t.angle??0),p=yr(t),f=new sa(i,a,s,c,u,l,d,p.alpha,p.isMask),m=new De(f.calpha,"f");return new Ke(r,e,n,{gradientType:i,smooth:a,colors:s,steps:c,offset:u,morph:l,angle:d,...p},f,p.mode,m,p.isMask,o)}case"pattern":{let i=new Pe(t.style??0),a=new Pe(t.projection??0),s=new Pe(["x","y","z"].indexOf(t.axis)??0),c=new J(t.blending??0),u=new tt(t.offset??new Fe.Vector2(0,0)),l=new Jt(t.colorA),d=new Jt(t.colorB),p=new tt(t.frequency??new Fe.Vector2(10,10)),f=new J(t.size??.5),m=new J(t.variation??0),h=new J(t.smoothness??.5),y=new J(t.zigzag??0),g=new J(t.rotation??0),x=new tt(t.vertical??new Fe.Vector2(0,1)),S=new tt(t.horizontal??new Fe.Vector2(0,1)),w=new Pe(t.sides??6),b=yr(t),T=new ua(i,a,s,c,u,l,d,p,f,m,h,y,g,x,S,w,b.alpha,b.isMask),_=new De(T.calpha,"f");return new Ke(r,e,n,{style:i,projection:a,axis:s,blending:c,offset:u,colorA:l,colorB:d,frequency:p,size:f,variation:m,smoothness:h,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},T,b.mode,_,b.isMask,o)}default:{let i=new Re(1,0,0,1),a=yr(t),s=new Nn(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}}}function aO(n,r,e,t){let o=Vg(e,t);return iO(e,n,r,o,t)}function $u(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=As(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Mc(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,c=r.color(o.data.colorC).a,u=r.color(o.data.colorD).a,l=Math.min(a,Math.min(s,Math.min(c,u)));l<1&&(i=l)}e+=(1-e)*i}}return e<1}var tr=class extends Fg.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Ec=class extends tr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},En=class extends tr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Ec(e,t,o,this),this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??It.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>ro.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Mc(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Mc(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(c=>c.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Mc(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(t=>t instanceof cr),this.lightLayer===void 0&&(this.lightLayer=new cr(0,"",{...kt.defaultData("light","phong"),visible:!1},new Mn,{},e)),this.dispose();for(let t of this.flavors)t&&t.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof cr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof Ke&&s.color instanceof nn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=Mc(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=ro.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let s=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(c=>c.uuid===a);if(s){let c=t.layers.data(a);if(s.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=ro.create(this.layerIdGen++,a,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===a),1,l),this.onUpdate(o.shared)}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof Ke?t.color.mask=void 0:t instanceof cr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof Ke&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof cr?i.node.mask=new Ot(t.color,t.alpha,Ot.MUL):i instanceof Ke&&(i.isMask.value||(i.color.mask=new Ot(t.color,t.alpha,Ot.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ke),t=this.layers.findIndex(o=>o instanceof cr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof Ke){if(a.isMask.value)continue;o=new ra(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new De("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof cr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ke){if(i.isMask.value)continue;e=new ra(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Cs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Ot(t,e[o].position,Ot.ADD),t=new Ot(t,new J(.5).setReadonly(!0),Ot.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Hu[t.type]??[]).map(u=>t[u]),i=(Wu[t.type]??[]).map(u=>t[u]?.length??0),a=[...o,...i],s="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${s}"`;a.length?e+=`[${c}, "${a.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Tc;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof Ke){let t=e.params.texture;if(t instanceof Cn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Ln=class extends En{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Wg=za(kg());var Ug=new Map;function Hg(n){if(typeof n=="string")return n;let r=Ug.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Ug.set(n,r)),r.url}var Dn=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:Hg(r),format:"wav"},this.sound=new Wg.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var vt=require("three"),Dc=class{constructor(){this.type="ShapePath";this.color=new vt.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new vt.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,x){let S=h.x,w=y.x,b=g.x,T=x.x,_=h.y,v=y.y,N=g.y,P=x.y,C=(T-b)*(_-N)-(P-N)*(S-b),O=(w-S)*(_-N)-(v-_)*(S-b),A=(P-N)*(w-S)-(T-b)*(v-_),M=C/A,L=O/A;if(A===0&&C!==0||M<=0||M>=1||L<0||L>1)return null;if(C===0&&A===0){for(let X=0;X<2;X++)if(i(X===0?g:x,h,y),t.loc===e.ORIGIN){let R=X===0?g:x;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(S+t.t*(w-S)).toPrecision(10),Z=+(_+t.t*(v-_)).toPrecision(10);return{x:R,y:Z,t:t.t}}return null}else{for(let Z=0;Z<2;Z++)if(i(Z===0?g:x,h,y),t.loc===e.ORIGIN){let z=Z===0?g:x;return{x:z.x,y:z.y,t:t.t}}let X=+(S+M*(w-S)).toPrecision(10),R=+(_+M*(v-_)).toPrecision(10);return{x:X,y:R,t:M}}}function i(h,y,g){let x=g.x-y.x,S=g.y-y.y,w=h.x-y.x,b=h.y-y.y,T=x*b-w*S;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||S*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=b/S,t.loc=e.BETWEEN,t.t=_}function a(h,y){let g=[],x=[];for(let S=1;S<h.length;S++){let w=h[S-1],b=h[S];for(let T=1;T<y.length;T++){let _=y[T-1],v=y[T],N=o(w,b,_,v);N!==null&&g.find(P=>P.t<=N.t+Number.EPSILON&&P.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new vt.Vector2(N.x,N.y)))}}return x}function s(h,y,g){let x=new vt.Vector2;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(h,w.points).forEach(T=>{S.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function c(h,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new vt.Vector2;h.boundingBox.getCenter(w);let b=[new vt.Vector2(g,w.y),new vt.Vector2(x,w.y)],T=s(b,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let N=_[0].point.x,P=[],C=0;for(;C<v.length&&v[C].point.x<N;)P.length>0&&P[P.length-1]===v[C].identifier?P.pop():P.push(v[C].identifier),C++;if(P.push(h.identifier),S==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(S==="nonzero"){let O=!0,A=null,M=null;for(let L=0;L<P.length;L++){let X=P[L];y[X]&&(O?(M=y[X].isCW,O=!1,A=X):M!==y[X].isCW&&(M=y[X].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let T=y[b];T.y>g&&(g=T.y),T.y<x&&(x=T.y),T.x>S&&(S=T.x),T.x<w&&(w=T.x)}d<=S&&(d=S+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:vt.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new vt.Box2(new vt.Vector2(w,x),new vt.Vector2(S,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new vt.Shape;g.curves=h.curves,f.filter(S=>S?.isHole&&S.for===h.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new vt.Path;b.curves=w.curves,g.holes.push(b)}}),m.push(g)}}),m}};var $g,Yu=new Promise(n=>{$g=n}),qg=!1;var Bc;function Yg(){if(qg)return;if(Bc)return Bc;async function n(){let e=await import("./opentype.js");$g(e),qg=!0}return Bc=n(),Bc}var Ns=class{async load(r,e,t=()=>{}){let{load:o}=await Yu;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Yu;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function sO(n){return await(await fetch(n)).arrayBuffer()}var lO=new Ns;async function Xu(n){let r,e,t=!1;if(n.url?(r=await sO(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r){let o=await lO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var xa=require("three");function cO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Rc=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xu(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xu(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[s];if(cO(l,p)||c)a.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,m=e.charAt(s),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(x=>this.getTextWidth(x,e)),s=e.width,c=this.getCharWidth(`
|
|
2215
|
+
`)}return t}};var Ic=require("three");var Ac=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Uu=class extends Ac{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},ku;function Gg(n){return typeof n=="string"?n:(ku||(ku=new Uu),ku.load(n))}var Cc=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Nc=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var xa=class extends Cc{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Gg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new Ic.VideoTexture(this.img,void 0,e,e):o=new Ic.Texture(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var hr=class extends xa{};var $e=require("three");function Bt(n,r){return r.color(n)}function Vg(n,r){switch(n.type){case"fresnel":return $P(n,r);case"gradient":return YP(n,r);case"depth":return XP(n,r);case"normal":return KP(n,r);case"noise":return ZP(n,r);case"rainbow":return QP(n,r);case"toon":return JP(n,r);case"outline":return eO(n,r);case"transmission":return tO(n,r);case"color":return qP(n,r);case"pattern":return rO(n,r)}}function WP(n){return{type:n.type}}function Gr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...WP(n),alpha:i,mode:t,isMask:o}}function qP(n,r){return{...Gr(n,r),color:Bt(n.color,r)}}function $P(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...Gr(n,r),color:Bt(a,r),bias:e,scale:t,intensity:o,factor:i}}function YP(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:c}=n;return{...Gr(n,r),gradientType:e,smooth:t,colors:o.map(u=>new $e.Vector4(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new $e.Vector2(...s),morph:new $e.Vector2(...c),angle:a}}function XP(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:c,colors:u,steps:l,smooth:d}=n;return{...Gr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new $e.Vector3(...s),direction:c?new $e.Vector3(...c):new $e.Vector3(1,0,0),colors:u.map(p=>p!==void 0?new $e.Vector4(p[0],p[1],p[2],p[3]):new $e.Vector4(0,0,0,0)),steps:l.slice(0,u.length),smooth:d}}function KP(n,r){let{cnormal:e}=n;return{...Gr(n,r),cnormal:new $e.Vector3(e[0],e[1],e[2])}}function ZP(n,r){return{...Gr(n,r),scale:n.scale,move:n.move,fA:new $e.Vector2(...n.fA),fB:new $e.Vector2(...n.fB),size:new $e.Vector3(...n.size),distortion:new $e.Vector2(...n.distortion),colorA:Bt(n.colorA,r),colorB:Bt(n.colorB,r),colorC:Bt(n.colorC,r),colorD:Bt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function QP(n,r){return{...Gr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new $e.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new $e.Vector3(...n.offset)}}function JP(n,r){return{...Gr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new $e.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new $e.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Bt(n.shadowColor,r),offset:new $e.Vector3(...n.offset)}}function eO(n,r){return{...Gr(n,r),outlineColor:Bt(n.outlineColor,r),contourColor:Bt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new $e.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function tO(n,r){return{...Gr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function rO(n,r){return{...Gr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new $e.Vector2(...n.offset),colorA:Bt(n.colorA,r),colorB:Bt(n.colorB,r),frequency:new $e.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new $e.Vector2(...n.vertical),horizontal:new $e.Vector2(...n.horizontal),sides:n.sides}}var an=class extends xt{};var zg=require("three");var Hu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Wu={depth:["colors"]};function oO(n,r,e){if(r==="isMask")return!0;let t=Hu[n.type],o=Wu[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function qu(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),c=t;c.image instanceof hr||c.image.deref(),c.image=s}if("video"in i){let a=i.video,s=r.video(a),c=t;c.image instanceof hr||c.image.deref(),c.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function jg(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if($u(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof on))switch(o=o||oO(e,i,a),s.constructor){case Re:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof an?s.value=new xt(c.r,c.g,c.b,c.a):s.setRGBA(c);break}case Jt:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof an?s.value=new xt(c.r,c.g,c.b,c.a):s.value.setRGBA(c.r,c.g,c.b,c.a);break}case tt:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]);break}case Lt:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]),s.value.setZ(c[2]);break}case Ht:{qu(a,r,e);break}case Rr:{s.value=a.map(c=>new zg.Vector4(...c));break}default:{s.value=a;break}}}return o}var sn=(n,r,e)=>(typeof n=="string"?Math.max(0,Math.min(1,Number(r.getVariable(n,e)??100)/100)):n)??1,ro=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)$u(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return cr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),a=new Nn(i,t.texture.wrapping),s=new _c(i),c=new Pc(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),l=new Pe(t.projection??0),d=new Pe(["x","y","z"].indexOf(t.axis)??0),p=new Pe(t.side??0),f=new tt(t.size?new Fe.Vector2(t.size[0],t.size[1]):new Fe.Vector2(100,100)),m=new J(t.blending??0),h=new J(sn(t.alpha,o)),y=new Pe(t.mode??0),g=new at(t.isMask??!1),x=new nn(a,s,u,l,d,p,f,m,c,h,y,g),S=new De(x.calpha,"f");return new Ke(r,e,t,{texture:a,textureSize:s,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,S,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Nn(i,t.texture.wrapping),s=new J(sn(t.alpha,o)),c=new Pe(t.mode??0),u=new at(t.isMask??!1),l=new ca(a,s,c,u),d=new De(l.calpha,"f");return new Ke(r,e,t,{texture:a,alpha:s,mode:c,isMask:u},l,c,d,u,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Lt(new Fe.Vector3(...t.offset)),a=new J(t.scale??10),s=new J(t.intensity??8),c=new J(t.movement??1),u=new Pe(t.noiseType??0),l=new Pe(t.voronoiStyle??0),d=new J(t.smoothness??.5),p=new J(t.seed??0),f=new J(t.highCut??1),m=new J(t.lowCut??0),h=new Pe(t.quality??1),y=new ya(s,c,i,l,d,p,f,m,h,a,u);return new Cs(r,e,t,{offset:i,scale:a,intensity:s,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y,o)}else throw new Error;else return aO(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):jg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?qu(o.props,t.shared,this):!0;return!1}dispose(){if(nO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof hr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},Ke=class extends ro{constructor(e,t,o,i,a,s,c,u,l){super(e,t,o,i,l);this.params=i;this.color=a;this.mode=s;this.alpha=c;this.isMask=u}},Cs=class extends ro{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},cr=class extends ro{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new J(sn(o.alpha,i)),c=new Pe(o.mode),u=new J(o.bumpMapIntensity),l=new J(sn(o.alphaOverride,i)),d;if(!o.visible)a=new En,d={};else if(o.category==="lambert"){a=new ws;let p=new Re(i.color(o.emissive)??0),f=new at(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new As;let p=new J(o.shininess??30),f=new Re(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Ps;let p=new J(o.roughness??.3),f=new J(o.metalness??0),m=new J(o.reflectivity??.5),h=new at(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:m,occlusion:h},a.roughness=p,a.metalness=f,a.reflectivity=m,a.occlusion=h}else{a=new _s;let p=new J(o.shininess??30),f=new Re(o.specular!==void 0?i.color(o.specular)??1118481:1118481),m=new at(o.occlusion??!0);d={shininess:p,specular:f,occlusion:m},a.shininess=p,a.specular=f,a.occlusion=m}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=c,a.bumpMapIntensity=u,a.alphaOverride=l,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new cr(e,t,o,a,d,i)}get category(){return this.node.category}};function nO(n){let r=n instanceof ro?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function yr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new at(n.isMask??!1)}}function iO(n,r,e,t,o){switch(n.type){case"color":{let i=new Re(t.color??ht),a=yr(t),s=new In(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}case"fresnel":{let i=new Re(t.color??16777215),a=new J(t.bias??.1),s=new J(t.scale??1),c=new J(t.intensity??2),u=new J(t.factor??1),l=yr(t),d=new vs(i,a,s,c,u,l.alpha,l.mode,l.isMask),p=new De(d.calpha,"f");return new Ke(r,e,n,{color:i,bias:a,scale:s,intensity:c,factor:u,...l},d,l.mode,p,l.isMask,o)}case"rainbow":{let i=new J(t.filmThickness??30),a=new J(t.movement??0),s=new Lt(t.wavelengths??new Fe.Vector3(0,0,0)),c=new J(t.noiseStrength??0),u=new J(t.noiseScale??1),l=new Lt(t.offset??new Fe.Vector3(0,0,0)),d=yr(t),p=new fa(i,a,s,c,u,l,d.alpha,d.isMask),f=new De(p.calpha,"f");return new Ke(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:c,noiseScale:u,offset:l,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new J(t.thickness??10),a=new J(t.ior??1.5),s=new J(t.roughness??.5),c=we.transmissionSize,u=we.transmissionRenderTarget,l=we.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new tt(p/d,1):new tt(1,d/p),m=yr(t),h=new ha(i,a,s,c,u,l,f,m.alpha),y=new De(h.calpha,"f");return new Ke(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...m},h,m.mode,y,m.isMask,o)}case"toon":{let i=new Pe(t.positioning??0),a;t.colors?a=new Rr(t.colors.length,t.colors):(a=new Rr(10,new Fe.Vector4(0,0,0,1)),a.value[1]=new Fe.Vector4(1,1,1,1));let s;t.steps?s=new Br(t.steps.length,t.steps):(s=new Br(10,1),s.value[0]=0);let c=new Lt(t.source??new Fe.Vector3(0,0,0)),u=new at(t.isWorldSpace??!0),l=new J(t.noiseStrength??0),d=new J(t.noiseScale??1),p=new Jt(t.shadowColor),f=new Lt(t.offset??new Fe.Vector3(0,0,0)),m=yr(t),h=new ma(i,a,s,c,u,l,d,p,f,m.alpha),y=new De(h.calpha,"f");return new Ke(r,e,n,{positioning:i,colors:a,steps:s,source:c,isWorldSpace:u,noiseStrength:l,noiseScale:d,shadowColor:p,offset:f,...m},h,m.mode,y,m.isMask,o)}case"outline":{let i=new Re(t.outlineColor??16777215),a=new Re(t.contourColor??16777215),s=new J(t.outlineWidth??.1),c=new J(t.contourWidth??.1),u=new J(t.outlineThreshold??.1),l=new J(t.contourThreshold??.1),d=new J(t.outlineSmoothing??.1),p=new J(t.contourFrequency??.1),f=new Lt(t.contourDirection??new Fe.Vector3(0,1,0)),m=new at(t.positionalLines??!1),h=new at(t.compensation??!0),y=we.normalRenderTarget,g=we.normalRenderTargetDepth,x=we.pixelRatioNode,S=we.resolution,w=yr(t),b=new ua(i,a,s,c,u,l,d,p,f,m,h,S,y,g,x,w.alpha),T=new De(b.calpha,"f");return new Ke(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:c,outlineThreshold:u,contourThreshold:l,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:m,compensation:h,...w},b,w.mode,T,w.isMask,o)}case"depth":{let i=new Pe(t.gradientType??0),a=new at(t.smooth??!1),s=new J(t.near??50),c=new J(t.far??200),u=new J(t.isVector??1),l=new J(t.isWorldSpace??0),d=new Lt(t.origin??new Fe.Vector3),p=new Lt(t.direction??new Fe.Vector3),f;t.colors?f=new Rr(t.colors.length,t.colors):(f=new Rr(2,new Fe.Vector4(0,0,0,1)),f.value[1]=new Fe.Vector4(1,1,1,1));let m;t.steps?m=new Br(t.steps.length,t.steps):(m=new Br(2,1),m.value[0]=0);let h=yr(t),y=new sa(i,a,s,c,u,l,d,p,f,m,h.alpha,h.isMask),g=new De(y.calpha,"f");return new Ke(r,e,n,{gradientType:i,smooth:a,near:s,far:c,isVector:u,isWorldSpace:l,origin:d,direction:p,colors:f,steps:m,...h},y,h.mode,g,h.isMask,o)}case"noise":{let i=new J(t.scale??1),a=new Lt(t.size??new Fe.Vector3(100,100,100)),s=new J(t.move??1),c=new tt(t.fA??new Fe.Vector2(1.7,9.2)),u=new tt(t.fB??new Fe.Vector2(8.3,2.8)),l=new tt(t.distortion??new Fe.Vector2(1,1)),d=new Jt(t.colorA),p=new Jt(t.colorB),f=new Jt(t.colorC),m=new Jt(t.colorD),h=new Pe(t.noiseType??0),y=new Pe(t.voronoiStyle??0),g=new J(t.highCut??1),x=new J(t.lowCut??0),S=new J(t.smoothness??.5),w=new J(t.seed??.5),b=new Pe(t.quality??1),T=yr(t),_=new da(i,a,s,c,u,l,d,p,f,m,T.alpha,h,T.isMask,y,g,x,S,w,b),v=new De(_.calpha,"f");return new Ke(r,e,n,{scale:i,size:a,move:s,fA:c,fB:u,distortion:l,colorA:d,colorB:p,colorC:f,colorD:m,noiseType:h,...T,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},_,T.mode,v,T.isMask,o)}case"normal":{let i=new Lt(t.cnormal??new Fe.Vector3(1,1,1)),a=yr(t),s=new na(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{cnormal:i,...a},s,a.mode,c,a.isMask,o)}case"gradient":{let i=new Pe(t.gradientType??0),a=new at(t.smooth??!1),s;t.colors?s=new Rr(t.colors.length,t.colors):(s=new Rr(10,new Fe.Vector4(0,0,0,1)),s.value[1]=new Fe.Vector4(1,1,1,1));let c;t.steps?c=new Br(t.steps.length,t.steps):(c=new Br(10,1),c.value[0]=0);let u=new tt(t.offset??new Fe.Vector2(0,0)),l=new tt(t.morph??new Fe.Vector2(0,0)),d=new J(t.angle??0),p=yr(t),f=new la(i,a,s,c,u,l,d,p.alpha,p.isMask),m=new De(f.calpha,"f");return new Ke(r,e,n,{gradientType:i,smooth:a,colors:s,steps:c,offset:u,morph:l,angle:d,...p},f,p.mode,m,p.isMask,o)}case"pattern":{let i=new Pe(t.style??0),a=new Pe(t.projection??0),s=new Pe(["x","y","z"].indexOf(t.axis)??0),c=new J(t.blending??0),u=new tt(t.offset??new Fe.Vector2(0,0)),l=new Jt(t.colorA),d=new Jt(t.colorB),p=new tt(t.frequency??new Fe.Vector2(10,10)),f=new J(t.size??.5),m=new J(t.variation??0),h=new J(t.smoothness??.5),y=new J(t.zigzag??0),g=new J(t.rotation??0),x=new tt(t.vertical??new Fe.Vector2(0,1)),S=new tt(t.horizontal??new Fe.Vector2(0,1)),w=new Pe(t.sides??6),b=yr(t),T=new pa(i,a,s,c,u,l,d,p,f,m,h,y,g,x,S,w,b.alpha,b.isMask),_=new De(T.calpha,"f");return new Ke(r,e,n,{style:i,projection:a,axis:s,blending:c,offset:u,colorA:l,colorB:d,frequency:p,size:f,variation:m,smoothness:h,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},T,b.mode,_,b.isMask,o)}default:{let i=new Re(1,0,0,1),a=yr(t),s=new In(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}}}function aO(n,r,e,t){let o=Vg(e,t);return iO(e,n,r,o,t)}function $u(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=sn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Mc(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,c=r.color(o.data.colorC).a,u=r.color(o.data.colorD).a,l=Math.min(a,Math.min(s,Math.min(c,u)));l<1&&(i=l)}e+=(1-e)*i}}return e<1}var tr=class extends Fg.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Ec=class extends tr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Ln=class extends tr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Ec(e,t,o,this),this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??It.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>ro.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Mc(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Mc(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(c=>c.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Mc(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(t=>t instanceof cr),this.lightLayer===void 0&&(this.lightLayer=new cr(0,"",{...kt.defaultData("light","phong"),visible:!1},new En,{},e)),this.dispose();for(let t of this.flavors)t&&t.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof cr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof Ke&&s.color instanceof nn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=Mc(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=ro.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let s=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(c=>c.uuid===a);if(s){let c=t.layers.data(a);if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?e.props.alpha=sn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"]):e.props.alphaOverride=sn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])),s.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=ro.create(this.layerIdGen++,a,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===a),1,l),this.onUpdate(o.shared)}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof Ke?t.color.mask=void 0:t instanceof cr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof Ke&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof cr?i.node.mask=new Ot(t.color,t.alpha,Ot.MUL):i instanceof Ke&&(i.isMask.value||(i.color.mask=new Ot(t.color,t.alpha,Ot.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ke),t=this.layers.findIndex(o=>o instanceof cr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof Ke){if(a.isMask.value)continue;o=new oa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new De("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof cr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ke){if(i.isMask.value)continue;e=new oa(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Cs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Ot(t,e[o].position,Ot.ADD),t=new Ot(t,new J(.5).setReadonly(!0),Ot.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Hu[t.type]??[]).map(u=>t[u]),i=(Wu[t.type]??[]).map(u=>t[u]?.length??0),a=[...o,...i],s="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${s}"`;a.length?e+=`[${c}, "${a.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Tc;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof Ke){let t=e.params.texture;if(t instanceof Nn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Dn=class extends Ln{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Wg=ja(kg());var Ug=new Map;function Hg(n){if(typeof n=="string")return n;let r=Ug.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Ug.set(n,r)),r.url}var Bn=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:Hg(r),format:"wav"},this.sound=new Wg.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var vt=require("three"),Dc=class{constructor(){this.type="ShapePath";this.color=new vt.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new vt.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,x){let S=h.x,w=y.x,b=g.x,T=x.x,_=h.y,v=y.y,N=g.y,P=x.y,C=(T-b)*(_-N)-(P-N)*(S-b),O=(w-S)*(_-N)-(v-_)*(S-b),A=(P-N)*(w-S)-(T-b)*(v-_),M=C/A,L=O/A;if(A===0&&C!==0||M<=0||M>=1||L<0||L>1)return null;if(C===0&&A===0){for(let X=0;X<2;X++)if(i(X===0?g:x,h,y),t.loc===e.ORIGIN){let R=X===0?g:x;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(S+t.t*(w-S)).toPrecision(10),Z=+(_+t.t*(v-_)).toPrecision(10);return{x:R,y:Z,t:t.t}}return null}else{for(let Z=0;Z<2;Z++)if(i(Z===0?g:x,h,y),t.loc===e.ORIGIN){let z=Z===0?g:x;return{x:z.x,y:z.y,t:t.t}}let X=+(S+M*(w-S)).toPrecision(10),R=+(_+M*(v-_)).toPrecision(10);return{x:X,y:R,t:M}}}function i(h,y,g){let x=g.x-y.x,S=g.y-y.y,w=h.x-y.x,b=h.y-y.y,T=x*b-w*S;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||S*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=b/S,t.loc=e.BETWEEN,t.t=_}function a(h,y){let g=[],x=[];for(let S=1;S<h.length;S++){let w=h[S-1],b=h[S];for(let T=1;T<y.length;T++){let _=y[T-1],v=y[T],N=o(w,b,_,v);N!==null&&g.find(P=>P.t<=N.t+Number.EPSILON&&P.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new vt.Vector2(N.x,N.y)))}}return x}function s(h,y,g){let x=new vt.Vector2;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(h,w.points).forEach(T=>{S.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function c(h,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new vt.Vector2;h.boundingBox.getCenter(w);let b=[new vt.Vector2(g,w.y),new vt.Vector2(x,w.y)],T=s(b,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let N=_[0].point.x,P=[],C=0;for(;C<v.length&&v[C].point.x<N;)P.length>0&&P[P.length-1]===v[C].identifier?P.pop():P.push(v[C].identifier),C++;if(P.push(h.identifier),S==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(S==="nonzero"){let O=!0,A=null,M=null;for(let L=0;L<P.length;L++){let X=P[L];y[X]&&(O?(M=y[X].isCW,O=!1,A=X):M!==y[X].isCW&&(M=y[X].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let T=y[b];T.y>g&&(g=T.y),T.y<x&&(x=T.y),T.x>S&&(S=T.x),T.x<w&&(w=T.x)}d<=S&&(d=S+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:vt.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new vt.Box2(new vt.Vector2(w,x),new vt.Vector2(S,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new vt.Shape;g.curves=h.curves,f.filter(S=>S?.isHole&&S.for===h.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new vt.Path;b.curves=w.curves,g.holes.push(b)}}),m.push(g)}}),m}};var $g,Yu=new Promise(n=>{$g=n}),qg=!1;var Bc;function Yg(){if(qg)return;if(Bc)return Bc;async function n(){let e=await import("./opentype.js");$g(e),qg=!0}return Bc=n(),Bc}var Ns=class{async load(r,e,t=()=>{}){let{load:o}=await Yu;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Yu;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function sO(n){return await(await fetch(n)).arrayBuffer()}var lO=new Ns;async function Xu(n){let r,e,t=!1;if(n.url?(r=await sO(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r){let o=await lO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var va=require("three");function cO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Rc=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xu(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xu(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[s];if(cO(l,p)||c)a.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,m=e.charAt(s),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(x=>this.getTextWidth(x,e)),s=e.width,c=this.getCharWidth(`
|
|
2216
2216
|
`,e),u=e.horizontalAlign===1?c:0,l=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(x=>[]),h=r.map(x=>[]),y;for(let x=0;x<r.length;x++){let S=r[x],w={features:{liga:!0}},b=[];try{b=t.stringToGlyphs(S,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(a[x],s,e.horizontalAlign,S,c);let T=[];try{T=this.reverseLigaturesTable(t,S,b)}catch(_){console.warn(_)}l=this.computeSpaceWidthForLine(r,x,e);for(let _=0;_<b.length;_++){let v=b[_],N=v.index===0?`
|
|
2217
2217
|
`:v.unicode?String.fromCharCode(v.unicode):void 0,P=T[_],C=0,O=0;_===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(O=-v.leftSideBearing*o),y&&(C=t.getKerningValue(v,y)*o),d+=O+C;let A=0;if(N===`
|
|
2218
2218
|
`)A=u;else if(N===" ")A=l;else{let M=this.createPath(v,o,d,p,e);M&&(A=M.offsetX-(C+O),f.push(M.path))}if(P.replacements.length===1)h[x].push([d,p]),m[x].push(A);else{let M=P.replacements.map(Z=>(t.glyphs.get(Z).advanceWidth??0)*o),L=M.reduce((Z,z)=>Z+=z,0),X=M.map(Z=>Z/L),R=d;for(let Z=0;Z<X.length;Z++){let z=A*X[Z];h[x].push([R,p]),m[x].push(z),R+=z}}d+=A,y=v}p-=i}let g=[];for(let x=0,S=f.length;x<S;x++)g.push(...f[x].toShapes());return{shapes:g,charWidths:m,lineWidths:a,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
|
|
2219
|
-
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,c=r-s,u=-this.ascender*o-c/2;return i===3?-(t-a-u):i===2?-(t*.5-a*.5-u):u}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new Dc,c=(r.advanceWidth??1)*e;if(r)for(let u of a.commands){let l=s.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let l=dO(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:s}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,c=this.getTextWidth(i,t);return(s-(c-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function dO(n){if(n.length){let r=n[0];if(r instanceof xa.LineCurve)return r.v1;if(r instanceof xa.CubicBezierCurve||r instanceof xa.QuadraticBezierCurve)return r.v0}}var Ku=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Is=class extends Ku{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=Pn(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Xg={markNeedsUpdateRendererDirty:()=>{}};var Kg=require("three"),Zu=class extends Nc{constructor(e){super();this.shared=e}create(e){return new ga(e,this.shared)}},Bn=class{constructor(r,e={}){this.data=r;this.geometryCache=new Is(!0);this.geometryCache2=new Is(!1);this.imageHolderCache=new Zu(this);this.thisContext={scene:Xg,shared:this};this.deletedMaterial=new Ln(It.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new hr(Oi.emptyImage,this);this.deletedVideo=new hr(gi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o);this.reset(r)}setRequestRender(r){this._requestRender=r}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new Ln(e,this.thisContext,r);this.materials[r]=t}}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new En(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new hr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new hr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new an(e.r,e.g,e.b,e.a):this.colors[r]=new an(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new xt(0,0,0,0))}else return"a"in r?new xt(r.r,r.g,r.b,r.a):new xt(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Dn)return e;{let t=new Dn({src:e.data});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Dn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Rc(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Dn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){return this.variables[r]===void 0?(this.variables[r]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0):(this.variables[r].value=e.value,!1)}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e;let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],c=t,u={scene:o,shared:this},l=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(l,c,u)});let d=this.materials[s];d&&d.onVariableUpdate(l,c,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[r].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let c=1;c<a.length-1;c++)s=s[a[c]];a[1]==="rotation"&&(t=Kg.MathUtils.DEG2RAD*t),s[a[a.length-1]]=t}if(s=o.find(a[0]),Oe.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let c=s;s.component&&(c=s.component);let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0),c.instances.forEach(l=>{let d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0)})}}}}return!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>ft.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;t=this.variables[t].value}while(typeof t=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){this.data=e,r.path[0]==="images"?r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="colors"?r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(lt.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t}):r.path[0]==="fonts"?r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===2&&r.type===0&&"value"in r.props?this.updateVariable(r.path[1],r.props.value):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id):r.path[0]==="lib"&&this.updateLibByOp(lt.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}},Zg=new Bn(Pr.emptyData());var rr=class extends Et{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),qm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Gt(e.path,["material"])&&this.material instanceof tr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(lt.drop(e,1),t.material,o);else if(Gt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(lt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&Hs(this.material).forEach(e=>{e instanceof tr&&(e instanceof Ln||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var dr=require("three");var Qg=new dr.Vector3,Jg=new dr.Vector4,e0=new dr.Vector4,pO=new dr.Vector3,t0=new dr.Matrix4,ut=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Bn){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Za.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Za.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Gt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(lt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=Pn(l,t,this.data.flatShading,this)}let a,s,c;i.scaleBaked?[a,s,c]=i.scaleBaked:{width:a,height:s,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&fs(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,c/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Pn(i,t,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof dt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Jg.fromBufferAttribute(i.attributes.skinIndex,e),e0.fromBufferAttribute(i.attributes.skinWeight,e),Qg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=e0.getComponent(a);if(s!==0){let c=Jg.getComponent(a);t0.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(pO.copy(Qg).applyMatrix4(t0),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function fO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,c=new ur.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(c):r.set(s,{normals:[c],result:new ur.Vector3})}r.forEach((a,s)=>{for(let c of a.normals)a.result.add(c);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,c=r.get(s)?.result;c&&(i[a]=c.x,i[a+1]=c.y,i[a+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new ur.Float32BufferAttribute(i,3))}function mO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new ur.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new ur.Float32BufferAttribute(t,3))}function va(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof tr)||n.material.getLayersOfType("outline").length===0)return;n instanceof ut&&n.is2DAndNoDepth?mO(n):fO(n)}function ba(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[ur.MathUtils.seededRandom(o),ur.MathUtils.seededRandom(o+1e4),ur.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new ur.BufferAttribute(t,3))}var hO;Wi.then(n=>{hO=n});var oo=new Oo.Box3,Ms=new Oo.Vector3;function r0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Rn=class extends ut{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new Oo.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=dt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,va(this),ba(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){dt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&dt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=dt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=dt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Et.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Oo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;oo.setFromBufferAttribute(t),oo.getCenter(o),e.boundingSphere.radius=o.distanceTo(oo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),oo.getSize(Ms),this.hasNonUniformScale&&Ms.divide(this.scale);let i={width:Ms.x,height:Ms.y,depth:Ms.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;oo.min.set(e[0],e[2],e[4]),oo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(oo.min.applyMatrix4(this.shearScaleInv),oo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Oo.Sphere);let o=t.boundingSphere.center;oo.getCenter(o),t.boundingSphere.radius=o.distanceTo(oo.max)}freeSubdivPointer(){this.subdivPointer&&(dt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var no=require("three"),o0=-1,yO=1,n0={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},i0={polygon_center:0,edge:1,vertex:2},Es=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,be=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-o0)*(e-t)/(yO-o0)+t};function a0(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var gO=new no.Vector3,Gc=new no.Vector3,xO=new no.Vector3,vO=new no.Vector3;function Sa(n,r){let e=xO.fromArray(n),t=vO.fromArray(r);Gc.copy(t).sub(e);let o=Gc.length();return Gc.normalize().multiplyScalar(o*.5),gO.copy(e).add(Gc).toArray()}var gr=new no.Triangle,Vc=new no.Vector3,zc=new no.Vector3,Gn=new no.Vector3;function s0(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Vc.fromArray(n.index.array,e*3),gr.setFromAttributeAndIndices(n.attributes.position,Vc.x,Vc.y,Vc.z),gr.getNormal(zc),gr.getMidpoint(Gn),!(isNaN(Gn.x)||isNaN(Gn.y)||isNaN(Gn.z))){let{a:t,b:o,c:i}=gr,a=t.toArray(),s=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=Sa(a,s),f=Sa(s,c),m=Sa(c,a),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=gr.getMidpoint(Gn).toArray();y===u&&!g&&(x=[f,m,m],S=p),y===l&&!g&&(x=[p,m,m],S=f),y===d&&!g&&(x=[p,f,f],S=m),g&&(x=[p,f,m]),r.push({vertices:[a,s,c],faceCenters:x,midpoint:S,norm:gr.getNormal(zc).toArray()})}return r}function l0(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){gr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),gr.getNormal(zc),gr.getMidpoint(Gn);let o=gr.a.toArray(),i=gr.b.toArray(),a=gr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[Sa(o,i),Sa(i,a),Sa(a,o)],midpoint:Gn.toArray(),norm:zc.toArray()})}return r}var bO=4,SO=.5,Qu=n=>.5*(1-Math.cos(n*Math.PI)),Ju=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),a=Math.floor(t),s=r-o,c=e-i,u=t-a,l,d,p=0,f=.5,m,h,y;for(let g=0;g<bO;g++){let x=o+(i<<4)+(a<<8);l=Qu(s),d=Qu(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Qu(u)*(h-m),p+=m*f,f*=SO,o<<=1,s*=2,i<<=1,c*=2,a<<=1,u*=2,s>=1&&(o++,s--),c>=1&&(i++,c--),u>=1&&(a++,u--)}return p}noiseSeed(r){let e=(()=>{let a,s;return{setSeed(c){s=a=(c??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},c0=Ju;var Ta=require("three");var d0=new Ta.Vector3,u0=new Ta.Matrix4,p0=new Ta.Ray;function f0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var wa=class extends ut{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(u0.copy(o).invert(),p0.copy(e.ray).applyMatrix4(u0),p0.intersectBox(this.singleBBox,d0))){let i=d0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var Wt=1e-4,io,y0,g0,x0,m0=new Ge.Vector3,h0=new Ge.Vector3;Wi.then(n=>{io=n,y0=[io.get_face_center,io.get_edge_midpoint,io.get_vertex_position],g0=[io.get_face_normal,io.get_edge_normal,io.get_vertex_normal],x0=[io.face_count,io.edge_count,io.vertex_count]});var wO=new Ge.Matrix4,TO=new Ge.Matrix4,sn=new Ge.Vector3,Vn=new Ge.Vector3,Ls=new Ge.Vector3,ep=new Ge.Vector3,_O=new Ge.Vector3,PO=new Ge.Vector3;var Ao=new c0,Pa=class extends Ni(Ge.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof wo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof wo&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new wo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let a=new wo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Ge.MathUtils.DEG2RAD,i=t.end*Ge.MathUtils.DEG2RAD,a=o-i,s=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Ge.Vector3(0,0,1);break;case"y":c=new Ge.Vector3(0,1,0);break;default:case"x":c=new Ge.Vector3(1,0,0);break}let u=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";Ao.noiseSeed(u.seed);let d=Zl((0,_a.default)(u.seed)),p=Es(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?Ao.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,be(y,u.scale[0]))||Wt,m.scale.y=t.scale[1]+p(g,be(y,u.scale[1]))||Wt,m.scale.z=t.scale[2]+p(g,be(y,u.scale[2]))||Wt,m.position.setScalar(0);let x=a/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,be(y,u.position[0])),m.position.y+=t.position[1]+p(g,be(y,u.position[1])),m.position.z+=t.position[2]+p(g,be(y,u.position[2]));let S=p(g,be(y,u.rotation[0])),w=p(g,be(y,u.rotation[1])),b=p(g,be(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=s.x+S,m.rotation.y+=s.y+w,m.rotation.z+=s.z+b):m.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let s=Zl((0,_a.default)(i.seed)),c=Es(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Ao.noise(d):s(d,d),f=u+1,m=c(f,be(p,i.rotation[0])),h=c(f,be(p,i.rotation[1])),y=c(f,be(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,be(p,i.scale[0]))||Wt,l.scale.y=1+(t.scale[1]-1)*u+c(f,be(p,i.scale[1]))||Wt,l.scale.z=1+(t.scale[2]-1)*u+c(f,be(p,i.scale[2]))||Wt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,be(p,i.position[0])),l.position.y=t.position[1]*u+c(f,be(p,i.position[1])),l.position.z=t.position[2]*u+c(f,be(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=Es(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let c=Xh((0,_a.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},l=new Ge.Vector3(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=s?Ao.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+a(t,be(h,i.scale[0]))||Wt,y.scale.y=1+a(t,be(h,i.scale[1]))||Wt,y.scale.z=1+a(t,be(h,i.scale[2]))||Wt;let g=a(t,be(h,i.rotation[0])),x=a(t,be(h,i.rotation[1])),S=a(t,be(h,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*d-l.x+a(t,be(h,i.position[0])),y.position.y=o.size[1]*p-l.y+a(t,be(h,i.position[1])),y.position.z=o.size[2]*f-l.z+a(t,be(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Ao.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+a(t,be(f,i.scale[0]))||Wt,m.scale.y=1+a(t,be(f,i.scale[1]))||Wt,m.scale.z=1+a(t,be(f,i.scale[2]))||Wt;let h=a(t,be(f,i.rotation[0])),y=a(t,be(f,i.rotation[1])),g=a(t,be(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+a(t,be(f,i.position[0])),m.position.y=-o.size[1]*l+a(t,be(f,i.position[1])),m.position.z=-o.size[2]*d+a(t,be(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let s=Zl((0,_a.default)(i.seed)),c=Es(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof wa)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),l=[],d=g=>{let x=g.length,S=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),b=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(S=>S.norm))}):l.push(g)});let f=a0(l);if(f.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let m=new Ql(this.objectForSample).build(),h=n0[t.axis],y=this.children;m.setRandomGenerator((0,_a.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Ao.noise(S):s(S,S),b=g+1,T=c(b,be(w,i.rotation[0])),_=c(b,be(w,i.rotation[1])),v=c(b,be(w,i.rotation[2]));t.spreadType==="random"?m.sample(Ls,ep):(f.length&&(Ls.fromArray(f[g].pos),ep.fromArray(f[g].norm)),this.objectForSample instanceof Rn&&Ls.applyMatrix4(wO.copy(this.objectForSample.matrixWorld).invert())),Ls.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(Ls),sn.fromArray(h);let N=t.align==="normal"?ep:this.object.getWorldDirection(PO),P=Vn.fromArray(t.position);Vn.x+=Vn.x+c(b,be(w,i.position[0])),Vn.y+=Vn.y+c(b,be(w,i.position[1])),Vn.z+=Vn.z+c(b,be(w,i.position[2]));let C=Math.acos(N.dot(sn)),O=_O.crossVectors(sn,N).normalize(),A=TO.makeRotationAxis(O,C),M=N.clone().cross(this.object.up).normalize(),L=M.clone().cross(N).normalize(),X=new Ge.Matrix4().makeBasis(M,N,L),R=new Ge.Vector3(sn.y,sn.z,sn.x).normalize(),Z=R.clone().cross(sn).normalize(),z=new Ge.Matrix4().makeBasis(R,sn,Z).invert(),V=new Ge.Matrix4().multiplyMatrices(X,z);x.rotation.setFromRotationMatrix(V),P.applyMatrix4(A),x.position.add(P),x.rotation.x=x.rotation.x+o.x+T,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(b,be(w,i.scale[0]))||Wt,x.scale.y=x.scale.y+t.scale[1]+c(b,be(w,i.scale[1]))||Wt,x.scale.z=x.scale.z+t.scale[2]+c(b,be(w,i.scale[2]))||Wt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Rn){let t=this.objectForSample,o=i0[e],i=x0[o],a=y0[o],s=g0[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=a(t.subdivPointerNew,l),p=s(t.subdivPointerNew,l);m0.fromArray(d).applyMatrix4(t.matrixWorld),h0.fromArray(p),c.push({pos:m0.toArray(),norm:h0.toArray()})}return c}else return(this.objectForSample.geometry.index?s0(this.objectForSample.geometry):l0(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=yo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof Et?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ge.Matrix4,this.hiddenMatrix=new Ge.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var wr=require("three");var Ze=require("three");var Rt=require("three");var v0=require("three"),ao=n=>{var r;return r=class extends n{},r.geometryHelper=new v0.BoxGeometry(30,30,30),r};var zt=require("three"),jc=new zt.Ray,tp=new zt.Sphere,b0=new zt.Matrix4,so=(n,r,e,t,o=!1)=>{let i=r,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),tp.copy(i.boundingSphere),tp.applyMatrix4(a),e.ray.intersectsSphere(tp)===!1||(b0.copy(a).invert(),jc.copy(e.ray).applyMatrix4(b0),i.boundingBox!==null&&jc.intersectsBox(i.boundingBox)===!1))return;let s,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),s=y(n,e,jc,p,c,u,l),s){s.faceIndex=Math.floor(m/3),t.push(s);return}}else{let x=i.attributes.position,S=new zt.Vector3,w=new zt.Vector3,b=new zt.Vector3,T=new zt.Vector3,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=N*N,C=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=C,M=O-1;A<M;A+=_){if(S.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),jc.distanceSqToSegment(S,w,T,b)>P)continue;T.applyMatrix4(n.matrixWorld);let X=e.ray.origin.distanceTo(T);X<e.near||X>e.far||t.push({distance:X,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,T,_){let v=new zt.Vector3,N=new zt.Vector3,P=new zt.Vector3,C=new zt.Vector3,O=new zt.Vector3;if(v.fromBufferAttribute(w,b),N.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),S.intersectTriangle(v,N,P,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let M=x.ray.origin.distanceTo(O);return M<x.near||M>x.far?null:{faceIndex:1,distance:M,point:O.clone(),object:g}}};var Fc=new Rt.Vector3,xr=new Rt.Camera,rp=class extends Rt.LineSegments{constructor(e){let t=new Rt.BufferGeometry,o=new Rt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},c=new Rt.Color(15711266),u=new Rt.Color(15711266),l=new Rt.Color(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),a.push(m.r,m.g,m.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}t.setAttribute("position",new Rt.Float32BufferAttribute(i,3)),t.setAttribute("color",new Rt.Float32BufferAttribute(a,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;xr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;Vr("n1",t,e,xr,-i,-a,s),Vr("n2",t,e,xr,i,-a,s),Vr("n3",t,e,xr,-i,a,s),Vr("n4",t,e,xr,i,a,s);let c=s;Vr("f1",t,e,xr,-i,-a,c),Vr("f2",t,e,xr,i,-a,c),Vr("f3",t,e,xr,-i,a,c),Vr("f4",t,e,xr,i,a,c);let u=c,l=.5;Vr("u1",t,e,xr,i*.7*l,a*1.1,u),Vr("u2",t,e,xr,-i*.7*l,a*1.1,u),Vr("u3",t,e,xr,0,a*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Vr(n,r,e,t,o,i,a){Fc.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let c=e.getAttribute("position");for(let u=0,l=s.length;u<l;u++)c.setXYZ(s[u],Fc.x,Fc.y,Fc.z)}}var kc=class extends ao(rp){constructor(e){super(e);this.object=e;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)}raycast(e,t){so(this.object,this.geometry,e,t,!0)}};var Ds=require("three");var Uc;(r=>r.is=e=>"objectHelper"in e)(Uc||(Uc={}));var lo=(n,r)=>class extends Ei(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Ds.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Ds.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Ds.Box3Helper&&(i.visible=!1)}}};var Hc=790,Oa=new Ze.Vector3,op=new Ze.Vector3,np=new Ze.Quaternion,ip=new Ze.Vector3,Bs=new Ze.Vector3,ap=new Ze.Vector3,Co=class extends lo(Ze.Camera,kc){constructor(e="",t={...xn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new Ze.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new Ze.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new Ze.PerspectiveCamera(45,o/i,50,1e4),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.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new Ze.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Oa),this.targetOffset=Oa.distanceTo(e)}getTarget(e=new Ze.Vector3){return this.getWorldDirection(op),this.getWorldPosition(Oa),op.multiplyScalar(this.targetOffset),e.copy(Oa).add(op),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Oa),Oa.distanceTo(e)}updateUp(){this.getWorldQuaternion(np),ip.set(0,0,1).applyQuaternion(np),Bs.copy(Ze.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Bs.negate(),Bs.applyQuaternion(np),ap.copy(Ze.Object3D.DEFAULT_UP).projectOnPlane(ip),this.angleOffsetFromUp=ap.angleTo(Bs),this.angleOffsetFromUp*=ap.cross(Bs).dot(ip)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new Ze.Vector3),i=e.getWorldDirection(new Ze.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new Ze.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new Ze.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-Hc*.5*i,this.right=Hc*.5*i,this.top=Hc*.5*(1/a),this.bottom=-Hc*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){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.objectHelper&&this.objectHelper.update()}toPerspective(){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.objectHelper&&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,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}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.parent=e.parent,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}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ci(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var vr=require("three");var Aa=new vr.Matrix4,AO=new vr.Matrix4,Wc=new vr.Matrix4,S0=new vr.Vector3,w0=new vr.Vector3;var br=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new vr.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof br&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Et&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(Aa.multiplyMatrices(a.hiddenMatrix,a.matrix),a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=mr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;mr.transformMeshSet(a.booleanMeshSetAddress,Aa),a.booleanMatrixInvOld.copy(Aa).invert(),a.booleanWasTransformed=!1}else a instanceof br&&a.needsTransformForDownstream===!0?(mr.transformMeshSet(a.booleanMeshSetAddress,Aa),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(mr.transformMeshSet(a.booleanMeshSetAddress,AO.multiplyMatrices(Aa,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Aa).invert(),a.booleanWasTransformed=!1);mr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.wasFilteredFromBoolean=!1):a.geometry.userData.wasFilteredFromBoolean=!0}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new vr.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return mr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new vr.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=mr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,va(this),ba(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),Wc.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Wc),S0.copy(e.max).applyMatrix4(Wc),w0.copy(e.min).applyMatrix4(Wc),this.geometry.boundingSphere.radius=S0.distanceTo(w0)/2),e}};var _0=require("three");var T0;(r=>{function n(e){return Oe.is(e)&&e instanceof _0.Light}r.is=n})(T0||(T0={}));var Ca=(n,r)=>class extends lo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var ln=n=>n instanceof Et,Na=n=>n!==null&&n instanceof br;var Rs=n=>Uc.is(n);var O0=require("three");var P0=require("three");var co=class extends ao(P0.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){so(this.object,co.geometryHelper,e,t)}update(){}};var zn=class extends lo(O0.Group,co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var Ba=require("three");var Ia=require("three"),CO=n=>`
|
|
2219
|
+
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,c=r-s,u=-this.ascender*o-c/2;return i===3?-(t-a-u):i===2?-(t*.5-a*.5-u):u}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new Dc,c=(r.advanceWidth??1)*e;if(r)for(let u of a.commands){let l=s.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let l=dO(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:s}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,c=this.getTextWidth(i,t);return(s-(c-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function dO(n){if(n.length){let r=n[0];if(r instanceof va.LineCurve)return r.v1;if(r instanceof va.CubicBezierCurve||r instanceof va.QuadraticBezierCurve)return r.v0}}var Ku=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Is=class extends Ku{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=On(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Xg={markNeedsUpdateRendererDirty:()=>{}};var Kg=require("three"),Zu=class extends Nc{constructor(e){super();this.shared=e}create(e){return new xa(e,this.shared)}},Rn=class{constructor(r,e={}){this.data=r;this.geometryCache=new Is(!0);this.geometryCache2=new Is(!1);this.imageHolderCache=new Zu(this);this.thisContext={scene:Xg,shared:this};this.deletedMaterial=new Dn(It.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new hr(Ai.emptyImage,this);this.deletedVideo=new hr(xi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o);this.reset(r)}setRequestRender(r){this._requestRender=r}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new Dn(e,this.thisContext,r);this.materials[r]=t}}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new Ln(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new hr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new hr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new an(e.r,e.g,e.b,e.a):this.colors[r]=new an(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new xt(0,0,0,0))}else return"a"in r?new xt(r.r,r.g,r.b,r.a):new xt(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Bn)return e;{let t=new Bn({src:e.data});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Bn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Rc(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Bn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){return this.variables[r]===void 0?(this.variables[r]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0):(this.variables[r].value=e.value,!1)}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e;let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],c=t,u={scene:o,shared:this},l=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(l,c,u)});let d=this.materials[s];d&&d.onVariableUpdate(l,c,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[r].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let c=1;c<a.length-1;c++)s=s[a[c]];a[1]==="rotation"&&(t=Kg.MathUtils.DEG2RAD*t),s[a[a.length-1]]=t}if(s=o.find(a[0]),Oe.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let c=s;s.component&&(c=s.component);let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0),c.instances.forEach(l=>{let d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0)})}}}}return!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>ft.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;t=this.variables[t].value}while(typeof t=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){this.data=e,r.path[0]==="images"?r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="colors"?r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(lt.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t}):r.path[0]==="fonts"?r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===2&&r.type===0&&"value"in r.props?this.updateVariable(r.path[1],r.props.value):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id):r.path[0]==="lib"&&this.updateLibByOp(lt.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}},Zg=new Rn(Pr.emptyData());var rr=class extends Et{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),qm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Gt(e.path,["material"])&&this.material instanceof tr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(lt.drop(e,1),t.material,o);else if(Gt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(lt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&Hs(this.material).forEach(e=>{e instanceof tr&&(e instanceof Dn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var dr=require("three");var Qg=new dr.Vector3,Jg=new dr.Vector4,e0=new dr.Vector4,pO=new dr.Vector3,t0=new dr.Matrix4,ut=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Rn){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Qa.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Qa.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Gt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(lt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=On(l,t,this.data.flatShading,this)}let a,s,c;i.scaleBaked?[a,s,c]=i.scaleBaked:{width:a,height:s,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&ms(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,c/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=On(i,t,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof dt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Jg.fromBufferAttribute(i.attributes.skinIndex,e),e0.fromBufferAttribute(i.attributes.skinWeight,e),Qg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=e0.getComponent(a);if(s!==0){let c=Jg.getComponent(a);t0.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(pO.copy(Qg).applyMatrix4(t0),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function fO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,c=new ur.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(c):r.set(s,{normals:[c],result:new ur.Vector3})}r.forEach((a,s)=>{for(let c of a.normals)a.result.add(c);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,c=r.get(s)?.result;c&&(i[a]=c.x,i[a+1]=c.y,i[a+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new ur.Float32BufferAttribute(i,3))}function mO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new ur.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new ur.Float32BufferAttribute(t,3))}function ba(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof tr)||n.material.getLayersOfType("outline").length===0)return;n instanceof ut&&n.is2DAndNoDepth?mO(n):fO(n)}function Sa(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[ur.MathUtils.seededRandom(o),ur.MathUtils.seededRandom(o+1e4),ur.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new ur.BufferAttribute(t,3))}var hO;qi.then(n=>{hO=n});var oo=new Oo.Box3,Ms=new Oo.Vector3;function r0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Gn=class extends ut{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new Oo.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=dt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ba(this),Sa(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){dt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&dt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=dt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=dt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Et.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Oo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;oo.setFromBufferAttribute(t),oo.getCenter(o),e.boundingSphere.radius=o.distanceTo(oo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),oo.getSize(Ms),this.hasNonUniformScale&&Ms.divide(this.scale);let i={width:Ms.x,height:Ms.y,depth:Ms.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;oo.min.set(e[0],e[2],e[4]),oo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(oo.min.applyMatrix4(this.shearScaleInv),oo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Oo.Sphere);let o=t.boundingSphere.center;oo.getCenter(o),t.boundingSphere.radius=o.distanceTo(oo.max)}freeSubdivPointer(){this.subdivPointer&&(dt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var no=require("three"),o0=-1,yO=1,n0={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},i0={polygon_center:0,edge:1,vertex:2},Es=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,be=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-o0)*(e-t)/(yO-o0)+t};function a0(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var gO=new no.Vector3,Gc=new no.Vector3,xO=new no.Vector3,vO=new no.Vector3;function wa(n,r){let e=xO.fromArray(n),t=vO.fromArray(r);Gc.copy(t).sub(e);let o=Gc.length();return Gc.normalize().multiplyScalar(o*.5),gO.copy(e).add(Gc).toArray()}var gr=new no.Triangle,Vc=new no.Vector3,zc=new no.Vector3,Vn=new no.Vector3;function s0(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Vc.fromArray(n.index.array,e*3),gr.setFromAttributeAndIndices(n.attributes.position,Vc.x,Vc.y,Vc.z),gr.getNormal(zc),gr.getMidpoint(Vn),!(isNaN(Vn.x)||isNaN(Vn.y)||isNaN(Vn.z))){let{a:t,b:o,c:i}=gr,a=t.toArray(),s=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=wa(a,s),f=wa(s,c),m=wa(c,a),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=gr.getMidpoint(Vn).toArray();y===u&&!g&&(x=[f,m,m],S=p),y===l&&!g&&(x=[p,m,m],S=f),y===d&&!g&&(x=[p,f,f],S=m),g&&(x=[p,f,m]),r.push({vertices:[a,s,c],faceCenters:x,midpoint:S,norm:gr.getNormal(zc).toArray()})}return r}function l0(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){gr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),gr.getNormal(zc),gr.getMidpoint(Vn);let o=gr.a.toArray(),i=gr.b.toArray(),a=gr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[wa(o,i),wa(i,a),wa(a,o)],midpoint:Vn.toArray(),norm:zc.toArray()})}return r}var bO=4,SO=.5,Qu=n=>.5*(1-Math.cos(n*Math.PI)),Ju=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),a=Math.floor(t),s=r-o,c=e-i,u=t-a,l,d,p=0,f=.5,m,h,y;for(let g=0;g<bO;g++){let x=o+(i<<4)+(a<<8);l=Qu(s),d=Qu(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Qu(u)*(h-m),p+=m*f,f*=SO,o<<=1,s*=2,i<<=1,c*=2,a<<=1,u*=2,s>=1&&(o++,s--),c>=1&&(i++,c--),u>=1&&(a++,u--)}return p}noiseSeed(r){let e=(()=>{let a,s;return{setSeed(c){s=a=(c??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},c0=Ju;var _a=require("three");var d0=new _a.Vector3,u0=new _a.Matrix4,p0=new _a.Ray;function f0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Ta=class extends ut{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(u0.copy(o).invert(),p0.copy(e.ray).applyMatrix4(u0),p0.intersectBox(this.singleBBox,d0))){let i=d0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var Wt=1e-4,io,y0,g0,x0,m0=new Ge.Vector3,h0=new Ge.Vector3;qi.then(n=>{io=n,y0=[io.get_face_center,io.get_edge_midpoint,io.get_vertex_position],g0=[io.get_face_normal,io.get_edge_normal,io.get_vertex_normal],x0=[io.face_count,io.edge_count,io.vertex_count]});var wO=new Ge.Matrix4,TO=new Ge.Matrix4,ln=new Ge.Vector3,zn=new Ge.Vector3,Ls=new Ge.Vector3,ep=new Ge.Vector3,_O=new Ge.Vector3,PO=new Ge.Vector3;var Ao=new c0,Oa=class extends Ii(Ge.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof wo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof wo&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new wo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let a=new wo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Ge.MathUtils.DEG2RAD,i=t.end*Ge.MathUtils.DEG2RAD,a=o-i,s=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Ge.Vector3(0,0,1);break;case"y":c=new Ge.Vector3(0,1,0);break;default:case"x":c=new Ge.Vector3(1,0,0);break}let u=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";Ao.noiseSeed(u.seed);let d=Zl((0,Pa.default)(u.seed)),p=Es(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?Ao.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,be(y,u.scale[0]))||Wt,m.scale.y=t.scale[1]+p(g,be(y,u.scale[1]))||Wt,m.scale.z=t.scale[2]+p(g,be(y,u.scale[2]))||Wt,m.position.setScalar(0);let x=a/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,be(y,u.position[0])),m.position.y+=t.position[1]+p(g,be(y,u.position[1])),m.position.z+=t.position[2]+p(g,be(y,u.position[2]));let S=p(g,be(y,u.rotation[0])),w=p(g,be(y,u.rotation[1])),b=p(g,be(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=s.x+S,m.rotation.y+=s.y+w,m.rotation.z+=s.z+b):m.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let s=Zl((0,Pa.default)(i.seed)),c=Es(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Ao.noise(d):s(d,d),f=u+1,m=c(f,be(p,i.rotation[0])),h=c(f,be(p,i.rotation[1])),y=c(f,be(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,be(p,i.scale[0]))||Wt,l.scale.y=1+(t.scale[1]-1)*u+c(f,be(p,i.scale[1]))||Wt,l.scale.z=1+(t.scale[2]-1)*u+c(f,be(p,i.scale[2]))||Wt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,be(p,i.position[0])),l.position.y=t.position[1]*u+c(f,be(p,i.position[1])),l.position.z=t.position[2]*u+c(f,be(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=Es(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let c=Xh((0,Pa.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},l=new Ge.Vector3(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=s?Ao.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+a(t,be(h,i.scale[0]))||Wt,y.scale.y=1+a(t,be(h,i.scale[1]))||Wt,y.scale.z=1+a(t,be(h,i.scale[2]))||Wt;let g=a(t,be(h,i.rotation[0])),x=a(t,be(h,i.rotation[1])),S=a(t,be(h,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*d-l.x+a(t,be(h,i.position[0])),y.position.y=o.size[1]*p-l.y+a(t,be(h,i.position[1])),y.position.z=o.size[2]*f-l.z+a(t,be(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Ao.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+a(t,be(f,i.scale[0]))||Wt,m.scale.y=1+a(t,be(f,i.scale[1]))||Wt,m.scale.z=1+a(t,be(f,i.scale[2]))||Wt;let h=a(t,be(f,i.rotation[0])),y=a(t,be(f,i.rotation[1])),g=a(t,be(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+a(t,be(f,i.position[0])),m.position.y=-o.size[1]*l+a(t,be(f,i.position[1])),m.position.z=-o.size[2]*d+a(t,be(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let s=Zl((0,Pa.default)(i.seed)),c=Es(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Ta)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),l=[],d=g=>{let x=g.length,S=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),b=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(S=>S.norm))}):l.push(g)});let f=a0(l);if(f.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let m=new Ql(this.objectForSample).build(),h=n0[t.axis],y=this.children;m.setRandomGenerator((0,Pa.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Ao.noise(S):s(S,S),b=g+1,T=c(b,be(w,i.rotation[0])),_=c(b,be(w,i.rotation[1])),v=c(b,be(w,i.rotation[2]));t.spreadType==="random"?m.sample(Ls,ep):(f.length&&(Ls.fromArray(f[g].pos),ep.fromArray(f[g].norm)),this.objectForSample instanceof Gn&&Ls.applyMatrix4(wO.copy(this.objectForSample.matrixWorld).invert())),Ls.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(Ls),ln.fromArray(h);let N=t.align==="normal"?ep:this.object.getWorldDirection(PO),P=zn.fromArray(t.position);zn.x+=zn.x+c(b,be(w,i.position[0])),zn.y+=zn.y+c(b,be(w,i.position[1])),zn.z+=zn.z+c(b,be(w,i.position[2]));let C=Math.acos(N.dot(ln)),O=_O.crossVectors(ln,N).normalize(),A=TO.makeRotationAxis(O,C),M=N.clone().cross(this.object.up).normalize(),L=M.clone().cross(N).normalize(),X=new Ge.Matrix4().makeBasis(M,N,L),R=new Ge.Vector3(ln.y,ln.z,ln.x).normalize(),Z=R.clone().cross(ln).normalize(),z=new Ge.Matrix4().makeBasis(R,ln,Z).invert(),V=new Ge.Matrix4().multiplyMatrices(X,z);x.rotation.setFromRotationMatrix(V),P.applyMatrix4(A),x.position.add(P),x.rotation.x=x.rotation.x+o.x+T,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(b,be(w,i.scale[0]))||Wt,x.scale.y=x.scale.y+t.scale[1]+c(b,be(w,i.scale[1]))||Wt,x.scale.z=x.scale.z+t.scale[2]+c(b,be(w,i.scale[2]))||Wt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Gn){let t=this.objectForSample,o=i0[e],i=x0[o],a=y0[o],s=g0[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=a(t.subdivPointerNew,l),p=s(t.subdivPointerNew,l);m0.fromArray(d).applyMatrix4(t.matrixWorld),h0.fromArray(p),c.push({pos:m0.toArray(),norm:h0.toArray()})}return c}else return(this.objectForSample.geometry.index?s0(this.objectForSample.geometry):l0(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=yo(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof Et?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ge.Matrix4,this.hiddenMatrix=new Ge.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var wr=require("three");var Ze=require("three");var Rt=require("three");var v0=require("three"),ao=n=>{var r;return r=class extends n{},r.geometryHelper=new v0.BoxGeometry(30,30,30),r};var zt=require("three"),jc=new zt.Ray,tp=new zt.Sphere,b0=new zt.Matrix4,so=(n,r,e,t,o=!1)=>{let i=r,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),tp.copy(i.boundingSphere),tp.applyMatrix4(a),e.ray.intersectsSphere(tp)===!1||(b0.copy(a).invert(),jc.copy(e.ray).applyMatrix4(b0),i.boundingBox!==null&&jc.intersectsBox(i.boundingBox)===!1))return;let s,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),s=y(n,e,jc,p,c,u,l),s){s.faceIndex=Math.floor(m/3),t.push(s);return}}else{let x=i.attributes.position,S=new zt.Vector3,w=new zt.Vector3,b=new zt.Vector3,T=new zt.Vector3,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=N*N,C=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=C,M=O-1;A<M;A+=_){if(S.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),jc.distanceSqToSegment(S,w,T,b)>P)continue;T.applyMatrix4(n.matrixWorld);let X=e.ray.origin.distanceTo(T);X<e.near||X>e.far||t.push({distance:X,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,T,_){let v=new zt.Vector3,N=new zt.Vector3,P=new zt.Vector3,C=new zt.Vector3,O=new zt.Vector3;if(v.fromBufferAttribute(w,b),N.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),S.intersectTriangle(v,N,P,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let M=x.ray.origin.distanceTo(O);return M<x.near||M>x.far?null:{faceIndex:1,distance:M,point:O.clone(),object:g}}};var Fc=new Rt.Vector3,xr=new Rt.Camera,rp=class extends Rt.LineSegments{constructor(e){let t=new Rt.BufferGeometry,o=new Rt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},c=new Rt.Color(15711266),u=new Rt.Color(15711266),l=new Rt.Color(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),a.push(m.r,m.g,m.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}t.setAttribute("position",new Rt.Float32BufferAttribute(i,3)),t.setAttribute("color",new Rt.Float32BufferAttribute(a,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;xr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;Vr("n1",t,e,xr,-i,-a,s),Vr("n2",t,e,xr,i,-a,s),Vr("n3",t,e,xr,-i,a,s),Vr("n4",t,e,xr,i,a,s);let c=s;Vr("f1",t,e,xr,-i,-a,c),Vr("f2",t,e,xr,i,-a,c),Vr("f3",t,e,xr,-i,a,c),Vr("f4",t,e,xr,i,a,c);let u=c,l=.5;Vr("u1",t,e,xr,i*.7*l,a*1.1,u),Vr("u2",t,e,xr,-i*.7*l,a*1.1,u),Vr("u3",t,e,xr,0,a*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Vr(n,r,e,t,o,i,a){Fc.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let c=e.getAttribute("position");for(let u=0,l=s.length;u<l;u++)c.setXYZ(s[u],Fc.x,Fc.y,Fc.z)}}var kc=class extends ao(rp){constructor(e){super(e);this.object=e;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)}raycast(e,t){so(this.object,this.geometry,e,t,!0)}};var Ds=require("three");var Uc;(r=>r.is=e=>"objectHelper"in e)(Uc||(Uc={}));var lo=(n,r)=>class extends Li(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Ds.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Ds.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Ds.Box3Helper&&(i.visible=!1)}}};var Hc=790,Aa=new Ze.Vector3,op=new Ze.Vector3,np=new Ze.Quaternion,ip=new Ze.Vector3,Bs=new Ze.Vector3,ap=new Ze.Vector3,Co=class extends lo(Ze.Camera,kc){constructor(e="",t={...vn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new Ze.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new Ze.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new Ze.PerspectiveCamera(45,o/i,50,1e4),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.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new Ze.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Aa),this.targetOffset=Aa.distanceTo(e)}getTarget(e=new Ze.Vector3){return this.getWorldDirection(op),this.getWorldPosition(Aa),op.multiplyScalar(this.targetOffset),e.copy(Aa).add(op),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Aa),Aa.distanceTo(e)}updateUp(){this.getWorldQuaternion(np),ip.set(0,0,1).applyQuaternion(np),Bs.copy(Ze.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Bs.negate(),Bs.applyQuaternion(np),ap.copy(Ze.Object3D.DEFAULT_UP).projectOnPlane(ip),this.angleOffsetFromUp=ap.angleTo(Bs),this.angleOffsetFromUp*=ap.cross(Bs).dot(ip)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new Ze.Vector3),i=e.getWorldDirection(new Ze.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new Ze.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new Ze.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-Hc*.5*i,this.right=Hc*.5*i,this.top=Hc*.5*(1/a),this.bottom=-Hc*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){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.objectHelper&&this.objectHelper.update()}toPerspective(){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.objectHelper&&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,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}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.parent=e.parent,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}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return di(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var vr=require("three");var Ca=new vr.Matrix4,AO=new vr.Matrix4,Wc=new vr.Matrix4,S0=new vr.Vector3,w0=new vr.Vector3;var br=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new vr.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,a,s),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof br&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Et&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(Ca.multiplyMatrices(a.hiddenMatrix,a.matrix),a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=mr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;mr.transformMeshSet(a.booleanMeshSetAddress,Ca),a.booleanMatrixInvOld.copy(Ca).invert(),a.booleanWasTransformed=!1}else a instanceof br&&a.needsTransformForDownstream===!0?(mr.transformMeshSet(a.booleanMeshSetAddress,Ca),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(mr.transformMeshSet(a.booleanMeshSetAddress,AO.multiplyMatrices(Ca,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Ca).invert(),a.booleanWasTransformed=!1);mr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.wasFilteredFromBoolean=!1):a.geometry.userData.wasFilteredFromBoolean=!0}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new vr.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return mr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new vr.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=mr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ba(this),Sa(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),Wc.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Wc),S0.copy(e.max).applyMatrix4(Wc),w0.copy(e.min).applyMatrix4(Wc),this.geometry.boundingSphere.radius=S0.distanceTo(w0)/2),e}};var _0=require("three");var T0;(r=>{function n(e){return Oe.is(e)&&e instanceof _0.Light}r.is=n})(T0||(T0={}));var Na=(n,r)=>class extends lo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var cn=n=>n instanceof Et,Ia=n=>n!==null&&n instanceof br;var Rs=n=>Uc.is(n);var O0=require("three");var P0=require("three");var co=class extends ao(P0.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){so(this.object,co.geometryHelper,e,t)}update(){}};var jn=class extends lo(O0.Group,co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var Ra=require("three");var Ma=require("three"),CO=n=>`
|
|
2220
2220
|
|
|
2221
2221
|
// PCSS implementation based on:
|
|
2222
2222
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2590,4 +2590,4 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2590
2590
|
}
|
|
2591
2591
|
|
|
2592
2592
|
#endif
|
|
2593
|
-
`,NO=Ia.ShaderChunk.lights_fragment_begin,IO=Ia.ShaderChunk.shadowmask_pars_fragment,A0=null,MO=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},C0=(n="medium")=>{if(A0===n)return!1;A0=n;let r=MO(n);Ia.ShaderChunk.shadowmap_pars_fragment=CO(r);let e=NO.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Ia.ShaderChunk.lights_fragment_begin=e;let t=IO.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ia.ShaderChunk.shadowmask_pars_fragment=t,!0};var Vs=require("three");var N0=require("three");var Ma=class extends ao(N0.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,Ma.geometryHelper,e,t)}};var I0=require("three");var Ea=class extends ao(I0.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,Ea.geometryHelper,e,t)}};var $c=require("three");var qc=class extends ao($c.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,qc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=qc._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,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 a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},Gs=qc;Gs._vector=new $c.Vector3;function EO(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var La=class extends Ca(Vs.DirectionalLight,Ma){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Vs.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Vs.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&EO(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var D0=require("three");var Sr=require("three");var M0=new Sr.Vector3,E0=new Sr.Vector3,L0=new Sr.Quaternion,Da=class extends Ca(Sr.SpotLight,Gs){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=Sr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Sr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Sr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),E0.setFromMatrixPosition(this.matrixWorld),L0.setFromRotationMatrix(this.matrixWorld),M0.copy(this.up).applyQuaternion(L0).negate().multiplyScalar(this.distance),this.target.position.copy(E0).add(M0),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var cn=class extends Ei(D0.Scene){constructor(e,t){super();this.data=t;this.bgColor=new xt(1,1,1,1);this.fog=null;this.backupFog=new Ba.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Ba.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Co(Fo,{...xn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Ba.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=Bt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&C0(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Bt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Bt(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let a=t;Gt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Gt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Gt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Gt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(Bt(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof La&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Da&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((ln(a)||Rs(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),js(a,e,t,!0)),o(a))}};return o(this),t}};var or=require("three");var Yc=class extends Ca(or.PointLight,Ea){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new or.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new or.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new or.Box3(a,s),u=new or.Box3Helper(c,new or.Color(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof or.Box3Helper){let t=this.shadow.camera,o=new or.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new or.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Xc=class extends ut{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?hs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Ra=class extends ut{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=fc;break;case"Ellipse":i=ji;break;case"Polygon":i=pc;break;case"Star":i=mc;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?hs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Ga=require("three");var No=class extends lo(Ga.Group,co){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=_i.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Yr.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=kr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Mt.defaultData,...e,...Tr(Mt.defaultData,Yr.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of Yr.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&Yr.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Oe.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Kc(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};R0(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Oe.is(s)){let c=s.data;c.type==="Empty"&&c.animations&&s.traverseEntity(u=>{if(u instanceof ut&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(a[m])),p=l.boneInverses.map(m=>new Ga.Matrix4().fromArray(m)),f=new Ga.Skeleton(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Kc(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Oe.is(e)&&Kc(e)}}function B0(n,r,e,t){return n.component===r&&cd(n.identity,t)?n.overrideData===e?2:1:0}function R0(n,r,e,t,o,i,a,s,c){if(a>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof No&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Oe.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=Si.resolve(e,d,1);if(p!=null&&!(p instanceof We)){if(!1)debugger;Object.setPrototypeOf(p,We.prototype),console.error("wrong prototype")}let f=null,m;if(!s){let h=t.children[u];if(f=Oe.is(h)?h:null,f!==null){let y=B0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=B0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?kr.apply(l.data,p):l.data;_r.is(h.type)&&(h={...h,type:"Empty"}),f=Ar.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,R0(n,r,e,f,l,i,a+1,s,c)}if(!s){let l=u;for(;;){let d=t.children[u];if(Oe.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}var G0=require("three");var Zc=class extends lo(G0.Bone,co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function LO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new wa(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Rn(n,r,e):r.geometry.type==="PathGeometry"?t=new Ra(n,r,e):r.geometry.type==="VectorGeometry"?t=new Xc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new br(n,r,e):t=new ut(n,r,e),t)}function Qc(n,r,e){return r.type==="Mesh"?LO(n,r,e):r.type==="Empty"?new zn(n,r):r.type==="Bone"?new Zc(n,r):r.type==="Page"?new cn(n,r):r.type==="PointLight"?new Yc(n,r,e):r.type==="SpotLight"?new Da(n,r,e):r.type==="DirectionalLight"?new La(n,r,e):r.type==="Component"||r.type==="Instance"?new No(n,r,e):_r.is(r.type)?new Co(n,r):(console.error(r),new zn(n,r))}Ar.createEntity=Qc;function DO(n,r,e){let t=Qc(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,c=n.instances,u=n.overrideData,l=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Ar.changeEntityProptotype=DO;Ar.Cloner=Pa;function V0(n,r,e,t){n.updateByOp(r,e,t,!1)}var Va=require("three");function z0(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,ba(n),va(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof rr&&n.needsAO&&n.layers.enable(5),e}function j0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function F0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)z0(e,e.material[t])&&(r=!0);else z0(e,e.material)&&(r=!0)}),r}function k0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)j0(e,e.material[t])&&(r=!0);else j0(e,e.material)&&(r=!0)}),r}var GO=new Va.Raycaster,VO=new Va.Matrix4,zO=new Va.Ray;function js(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=VO.copy(i.matrixWorld).invert(),s=zO.copy(r.ray).applyMatrix4(a),c=n.matrixWorld;s.applyMatrix4(c);let u=GO;u.set(s.origin,s.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var Jc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],a=t;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let c=r.find(i[s]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var jO=new wr.MeshBasicMaterial;jO.wireframe=!0;var U0=new wr.Vector3,ed=class extends wr.Scene{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Jc;this.errorPage=new cn("fdasfa",{...xo.defaultData,name:""});this.invisibleObjects=new zn("jflkdsafjasdifjaslk",{...Hl.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=k0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=F0(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof cn&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>fp(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===Fo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),ln(i)&&Na(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Na(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),ln(o)&&(o.freeBooleanPointer(),i instanceof br&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Ra&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),ln(o)&&(o.invalidateUpstreamBooleanData(),Na(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof br&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof cn&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{V0(a,t,o,{scene:this,shared:i}),a instanceof ut&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{Na(i)&&i.recomputeBoolean(),i instanceof Co&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Oe.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Oe.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,c){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(l=>{l.data=Bo(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(s);if(f){let m=[...Hs(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=ft.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,a,s):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof No&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Bo(s.data,c=>{s.isInstanceRoot||(c.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Yl.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof No&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Kc(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof No&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Oe.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let c=s.cloner;if(Oe.is(s)&&!s.raycastLock&&(s.visible||c?.object.data.visible))if(t===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let l=u[0];l.object=s,l.point.applyMatrix4(l.object.matrixWorld);let d=s.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else(ln(s)||Rs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),js(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((ln(a)||Rs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),js(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Oe.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Oe.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Oe.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof ut&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Na(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ci.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Oe.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let c={scene:this,shared:s},u=Qc(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(t,c),u instanceof ut&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof ut&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new wr.Matrix4().fromArray(h)),m=new wr.Skeleton(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:c}=e[i],u=this.find(s),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new wr.Box3;return o.setFromPoints(t),o.getCenter(U0),U0}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Et)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof tr&&e(t.material[o]);else t.material instanceof tr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof Co&&i.setViewplaneSize(e,t,o)})}};var H0=require("three/examples/jsm/loaders/DRACOLoader.js");var dn;function FO(){return dn||(dn=new H0.DRACOLoader,dn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),dn.decoderPending}async function kO(n){if(dn){let r={attributeIDs:dn.defaultAttributeIDs,attributeTypes:dn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await dn.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function W0(n,r){let[e,t]=hd(El.deserialize(new Uint8Array(n)));Kl(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await FO();for(let i of o){let a=await kO(Je(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:c,array:u,itemSize:l})=>{s[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var UO=require("three"),HO=require("three/examples/jsm/utils/BufferGeometryUtils.js");function q0(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var Fs=require("three");function $0(n){let r=new Set;return n.traverse(e=>{if(e instanceof rr)if(rt(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(WO(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Fs.Color,specularColor:new Fs.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},Fs.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let c=s.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=Rg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else qO(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function WO(n){return n.getLayersOfType("transmission").length>0}function qO(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function Y0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function X0(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var K0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Z0(n){let r=[];return n.traverse(e=>{e instanceof Pa&&r.push(e)}),r.forEach(e=>{let t=e.object,a=[...e.children.map(s=>{s.updateMatrix();let c;if(s.geometry!==void 0)try{c=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return c!==void 0&&s.matrix.determinant()<0&&q0(c),c}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Et&&a.unshift(t.geometry),a.length){let s=(0,K0.mergeBufferGeometries)(a);t instanceof Et&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Zg})}),n}function Q0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function J0(n){Object.values(n.shared.materials).forEach(r=>{lp(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?lp(e.material):"materials"in e&&e.materials.forEach(t=>{lp(t)})})}function lp(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var nx=za(tx(),1);function rx(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var ox="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",td=class extends rd.Loader{load(r,e,t,o=console.error){let i=new rd.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(ox+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(ox),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await W0(r,J0);e.version&&(0,nx.default)(e.version,"0.9.469")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([r0(e)&&cg(),f0(e)&&Yg()].filter(Boolean));let t=new Bn(e.shared);Object.values(t.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new ed(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=Z0(o),o=$0(o),o=Y0(o),o=X0(o),o=Q0(o),o=rx(o),o}};
|
|
2593
|
+
`,NO=Ma.ShaderChunk.lights_fragment_begin,IO=Ma.ShaderChunk.shadowmask_pars_fragment,A0=null,MO=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},C0=(n="medium")=>{if(A0===n)return!1;A0=n;let r=MO(n);Ma.ShaderChunk.shadowmap_pars_fragment=CO(r);let e=NO.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Ma.ShaderChunk.lights_fragment_begin=e;let t=IO.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ma.ShaderChunk.shadowmask_pars_fragment=t,!0};var Vs=require("three");var N0=require("three");var Ea=class extends ao(N0.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,Ea.geometryHelper,e,t)}};var I0=require("three");var La=class extends ao(I0.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,La.geometryHelper,e,t)}};var $c=require("three");var qc=class extends ao($c.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,qc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=qc._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,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 a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},Gs=qc;Gs._vector=new $c.Vector3;function EO(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var Da=class extends Na(Vs.DirectionalLight,Ea){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new Vs.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Vs.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&EO(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var D0=require("three");var Sr=require("three");var M0=new Sr.Vector3,E0=new Sr.Vector3,L0=new Sr.Quaternion,Ba=class extends Na(Sr.SpotLight,Gs){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=Sr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Sr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Sr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),E0.setFromMatrixPosition(this.matrixWorld),L0.setFromRotationMatrix(this.matrixWorld),M0.copy(this.up).applyQuaternion(L0).negate().multiplyScalar(this.distance),this.target.position.copy(E0).add(M0),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var dn=class extends Li(D0.Scene){constructor(e,t){super();this.data=t;this.bgColor=new xt(1,1,1,1);this.fog=null;this.backupFog=new Ra.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Ra.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Co(Fo,{...vn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Ra.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=Bt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&C0(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Bt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Bt(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let a=t;Gt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Gt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Gt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Gt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(Bt(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Da&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Ba&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||Rs(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),js(a,e,t,!0)),o(a))}};return o(this),t}};var or=require("three");var Yc=class extends Na(or.PointLight,La){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new or.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new or.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new or.Box3(a,s),u=new or.Box3Helper(c,new or.Color(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof or.Box3Helper){let t=this.shadow.camera,o=new or.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new or.Vector3(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Xc=class extends ut{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?ys(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Ga=class extends ut{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=fc;break;case"Ellipse":i=Fi;break;case"Polygon":i=pc;break;case"Star":i=mc;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?ys(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Va=require("three");var No=class extends lo(Va.Group,co){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=Pi.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Yr.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=kr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Mt.defaultData,...e,...Tr(Mt.defaultData,Yr.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of Yr.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&Yr.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Oe.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Kc(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};R0(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Oe.is(s)){let c=s.data;c.type==="Empty"&&c.animations&&s.traverseEntity(u=>{if(u instanceof ut&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(a[m])),p=l.boneInverses.map(m=>new Va.Matrix4().fromArray(m)),f=new Va.Skeleton(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Kc(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Oe.is(e)&&Kc(e)}}function B0(n,r,e,t){return n.component===r&&cd(n.identity,t)?n.overrideData===e?2:1:0}function R0(n,r,e,t,o,i,a,s,c){if(a>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof No&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Oe.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=wi.resolve(e,d,1);if(p!=null&&!(p instanceof We)){if(!1)debugger;Object.setPrototypeOf(p,We.prototype),console.error("wrong prototype")}let f=null,m;if(!s){let h=t.children[u];if(f=Oe.is(h)?h:null,f!==null){let y=B0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=B0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?kr.apply(l.data,p):l.data;_r.is(h.type)&&(h={...h,type:"Empty"}),f=Ar.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,R0(n,r,e,f,l,i,a+1,s,c)}if(!s){let l=u;for(;;){let d=t.children[u];if(Oe.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}var G0=require("three");var Zc=class extends lo(G0.Bone,co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function LO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Ta(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Gn(n,r,e):r.geometry.type==="PathGeometry"?t=new Ga(n,r,e):r.geometry.type==="VectorGeometry"?t=new Xc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new br(n,r,e):t=new ut(n,r,e),t)}function Qc(n,r,e){return r.type==="Mesh"?LO(n,r,e):r.type==="Empty"?new jn(n,r):r.type==="Bone"?new Zc(n,r):r.type==="Page"?new dn(n,r):r.type==="PointLight"?new Yc(n,r,e):r.type==="SpotLight"?new Ba(n,r,e):r.type==="DirectionalLight"?new Da(n,r,e):r.type==="Component"||r.type==="Instance"?new No(n,r,e):_r.is(r.type)?new Co(n,r):(console.error(r),new jn(n,r))}Ar.createEntity=Qc;function DO(n,r,e){let t=Qc(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,c=n.instances,u=n.overrideData,l=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Ar.changeEntityProptotype=DO;Ar.Cloner=Oa;function V0(n,r,e,t){n.updateByOp(r,e,t,!1)}var za=require("three");function z0(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,Sa(n),ba(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof rr&&n.needsAO&&n.layers.enable(5),e}function j0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function F0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)z0(e,e.material[t])&&(r=!0);else z0(e,e.material)&&(r=!0)}),r}function k0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)j0(e,e.material[t])&&(r=!0);else j0(e,e.material)&&(r=!0)}),r}var GO=new za.Raycaster,VO=new za.Matrix4,zO=new za.Ray;function js(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=VO.copy(i.matrixWorld).invert(),s=zO.copy(r.ray).applyMatrix4(a),c=n.matrixWorld;s.applyMatrix4(c);let u=GO;u.set(s.origin,s.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var Jc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],a=t;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let c=r.find(i[s]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var jO=new wr.MeshBasicMaterial;jO.wireframe=!0;var U0=new wr.Vector3,ed=class extends wr.Scene{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Jc;this.errorPage=new dn("fdasfa",{...xo.defaultData,name:""});this.invisibleObjects=new jn("jflkdsafjasdifjaslk",{...Hl.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=k0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=F0(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof dn&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>fp(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===Fo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),cn(i)&&Ia(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Ia(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),cn(o)&&(o.freeBooleanPointer(),i instanceof br&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Ga&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),cn(o)&&(o.invalidateUpstreamBooleanData(),Ia(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof br&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof dn&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{V0(a,t,o,{scene:this,shared:i}),a instanceof ut&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{Ia(i)&&i.recomputeBoolean(),i instanceof Co&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Oe.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Oe.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,c){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(l=>{l.data=Bo(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(s);if(f){let m=[...Hs(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=ft.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,a,s):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof No&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Bo(s.data,c=>{s.isInstanceRoot||(c.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Yl.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof No&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Kc(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof No&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Oe.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let c=s.cloner;if(Oe.is(s)&&!s.raycastLock&&(s.visible||c?.object.data.visible))if(t===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let l=u[0];l.object=s,l.point.applyMatrix4(l.object.matrixWorld);let d=s.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else(cn(s)||Rs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),js(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||Rs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),js(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Oe.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Oe.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Oe.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof ut&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Ia(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ni.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Oe.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let c={scene:this,shared:s},u=Qc(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(t,c),u instanceof ut&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof ut&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new wr.Matrix4().fromArray(h)),m=new wr.Skeleton(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:c}=e[i],u=this.find(s),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new wr.Box3;return o.setFromPoints(t),o.getCenter(U0),U0}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Et)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof tr&&e(t.material[o]);else t.material instanceof tr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof Co&&i.setViewplaneSize(e,t,o)})}};var H0=require("three/examples/jsm/loaders/DRACOLoader.js");var un;function FO(){return un||(un=new H0.DRACOLoader,un.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),un.decoderPending}async function kO(n){if(un){let r={attributeIDs:un.defaultAttributeIDs,attributeTypes:un.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await un.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function W0(n,r){let[e,t]=hd(El.deserialize(new Uint8Array(n)));Kl(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await FO();for(let i of o){let a=await kO(Je(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:c,array:u,itemSize:l})=>{s[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var UO=require("three"),HO=require("three/examples/jsm/utils/BufferGeometryUtils.js");function q0(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var Fs=require("three");function $0(n){let r=new Set;return n.traverse(e=>{if(e instanceof rr)if(rt(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(WO(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Fs.Color,specularColor:new Fs.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},Fs.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let c=s.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=Rg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else qO(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function WO(n){return n.getLayersOfType("transmission").length>0}function qO(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function Y0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function X0(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var K0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Z0(n){let r=[];return n.traverse(e=>{e instanceof Oa&&r.push(e)}),r.forEach(e=>{let t=e.object,a=[...e.children.map(s=>{s.updateMatrix();let c;if(s.geometry!==void 0)try{c=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return c!==void 0&&s.matrix.determinant()<0&&q0(c),c}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Et&&a.unshift(t.geometry),a.length){let s=(0,K0.mergeBufferGeometries)(a);t instanceof Et&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Zg})}),n}function Q0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function J0(n){Object.values(n.shared.materials).forEach(r=>{lp(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?lp(e.material):"materials"in e&&e.materials.forEach(t=>{lp(t)})})}function lp(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var nx=ja(tx(),1);function rx(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var ox="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",td=class extends rd.Loader{load(r,e,t,o=console.error){let i=new rd.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(ox+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(ox),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await W0(r,J0);e.version&&(0,nx.default)(e.version,"0.9.471")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([r0(e)&&cg(),f0(e)&&Yg()].filter(Boolean));let t=new Rn(e.shared);Object.values(t.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new ed(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=Z0(o),o=$0(o),o=Y0(o),o=X0(o),o=Q0(o),o=rx(o),o}};
|