@splinetool/loader 0.9.496 → 0.9.498

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.
@@ -1,16 +1,30 @@
1
- var Tx=Object.create;var Rc=Object.defineProperty;var _x=Object.getOwnPropertyDescriptor;var Px=Object.getOwnPropertyNames;var Ox=Object.getPrototypeOf,Ax=Object.prototype.hasOwnProperty;var On=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Cx=(n,r)=>{for(var e in r)Rc(n,e,{get:r[e],enumerable:!0})},Nx=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Px(r))!Ax.call(n,o)&&o!==e&&Rc(n,o,{get:()=>r[o],enumerable:!(t=_x(r,o))||t.enumerable});return n};var xa=(n,r,e)=>(e=n!=null?Tx(Ox(n)):{},Nx(r||!n||!n.__esModule?Rc(e,"default",{value:n,enumerable:!0}):e,n));var $h=On((xd,qh)=>{(function(n,r){typeof xd=="object"?qh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(xd,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 Qh=On((Cl,Zh)=>{(function(n,r){typeof Cl=="object"&&typeof Zh<"u"?r(Cl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Cl,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 C,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 N=0;N<50;N++){for(C=!1,c=s;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){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 My=On((Wd,qd)=>{(function(n,r){typeof Wd=="object"&&typeof qd<"u"?qd.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Wd,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 Ly=On((Wk,$d)=>{"use strict";var zl=My();zl.default&&(zl=zl.default);$d.exports=Ey;$d.exports.default=Ey;function Ey(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 zl(void 0,kP),h=t;h<i;h+=d)for(var y=o;y<a;y+=d)m.push(new Ro(h+p,y+p,p,n));var g=HP(n),x=new Ro(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 Ro(w.x-p,w.y-p,p,n)),m.push(new Ro(w.x+p,w.y-p,p,n)),m.push(new Ro(w.x-p,w.y+p,p,n)),m.push(new Ro(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 kP(n,r){return r.max-n.max}function Ro(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=UP(n,r,t),this.max=this.d+this.h*Math.SQRT2}function UP(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,WP(n,r,l,d))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function HP(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 Ro(o[0][0],o[0][1],0,n):new Ro(e/r,t/r,0,n)}function WP(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 Yg=On(fc=>{(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 C=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"?C():(p._playLock=!0,p.once("resume",C),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 N=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||N)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 fc<"u"&&(fc.Howler=r,fc.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 px=On((bre,ux)=>{ux.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}});import{FileLoader as oN,Loader as nN}from"three";function pp(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Dt(n,r){return Object.setPrototypeOf(n,r),n}function xs(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 Ix=typeof global=="object"&&global&&global.Object===Object&&global,vs=Ix;var Mx=typeof self=="object"&&self&&self.Object===Object&&self,Ex=vs||Mx||Function("return this")(),et=Ex;var Lx=et.Symbol,st=Lx;var mp=Object.prototype,Dx=mp.hasOwnProperty,Bx=mp.toString,va=st?st.toStringTag:void 0;function Rx(n){var r=Dx.call(n,va),e=n[va];try{n[va]=void 0;var t=!0}catch{}var o=Bx.call(n);return t&&(r?n[va]=e:delete n[va]),o}var hp=Rx;var Gx=Object.prototype,Vx=Gx.toString;function zx(n){return Vx.call(n)}var yp=zx;var jx="[object Null]",Fx="[object Undefined]",gp=st?st.toStringTag:void 0;function kx(n){return n==null?n===void 0?Fx:jx:gp&&gp in Object(n)?hp(n):yp(n)}var Ut=kx;function Ux(n){return n!=null&&typeof n=="object"}var yt=Ux;var Hx="[object Symbol]";function Wx(n){return typeof n=="symbol"||yt(n)&&Ut(n)==Hx}var An=Wx;function qx(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 bs=qx;var $x=Array.isArray,We=$x;var Yx=1/0,xp=st?st.prototype:void 0,vp=xp?xp.toString:void 0;function bp(n){if(typeof n=="string")return n;if(We(n))return bs(n,bp)+"";if(An(n))return vp?vp.call(n):"";var r=n+"";return r=="0"&&1/n==-Yx?"-0":r}var Sp=bp;function Xx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Ht=Xx;function Kx(n){return n}var wp=Kx;var Zx="[object AsyncFunction]",Qx="[object Function]",Jx="[object GeneratorFunction]",ev="[object Proxy]";function tv(n){if(!Ht(n))return!1;var r=Ut(n);return r==Qx||r==Jx||r==Zx||r==ev}var Ss=tv;var rv=et["__core-js_shared__"],ws=rv;var Tp=function(){var n=/[^.]+$/.exec(ws&&ws.keys&&ws.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function ov(n){return!!Tp&&Tp in n}var _p=ov;var nv=Function.prototype,iv=nv.toString;function av(n){if(n!=null){try{return iv.call(n)}catch{}try{return n+""}catch{}}return""}var Yr=av;var sv=/[\\^$.*+?()[\]{}|]/g,lv=/^\[object .+?Constructor\]$/,cv=Function.prototype,dv=Object.prototype,uv=cv.toString,pv=dv.hasOwnProperty,fv=RegExp("^"+uv.call(pv).replace(sv,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function mv(n){if(!Ht(n)||_p(n))return!1;var r=Ss(n)?fv:lv;return r.test(Yr(n))}var Pp=mv;function hv(n,r){return n?.[r]}var Op=hv;function yv(n,r){var e=Op(n,r);return Pp(e)?e:void 0}var Bt=yv;var gv=Bt(et,"WeakMap"),Ts=gv;var Ap=Object.create,xv=function(){function n(){}return function(r){if(!Ht(r))return{};if(Ap)return Ap(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Cp=xv;function vv(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=vv;function bv(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Ip=bv;var Sv=800,wv=16,Tv=Date.now;function _v(n){var r=0,e=0;return function(){var t=Tv(),o=wv-(t-e);if(e=t,o>0){if(++r>=Sv)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Mp=_v;function Pv(n){return function(){return n}}var Ep=Pv;var Ov=function(){try{var n=Bt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Cn=Ov;var Av=Cn?function(n,r){return Cn(n,"toString",{configurable:!0,enumerable:!1,value:Ep(r),writable:!0})}:wp,Lp=Av;var Cv=Mp(Lp),Dp=Cv;function Nv(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Bp=Nv;var Iv=9007199254740991,Mv=/^(?:0|[1-9]\d*)$/;function Ev(n,r){var e=typeof n;return r=r??Iv,!!r&&(e=="number"||e!="symbol"&&Mv.test(n))&&n>-1&&n%1==0&&n<r}var Nn=Ev;function Lv(n,r,e){r=="__proto__"&&Cn?Cn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var _s=Lv;function Dv(n,r){return n===r||n!==n&&r!==r}var In=Dv;var Bv=Object.prototype,Rv=Bv.hasOwnProperty;function Gv(n,r,e){var t=n[r];(!(Rv.call(n,r)&&In(t,e))||e===void 0&&!(r in n))&&_s(n,r,e)}var Mn=Gv;function Vv(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?_s(e,s,c):Mn(e,s,c)}return e}var Sr=Vv;var Rp=Math.max;function zv(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=zv;var jv=9007199254740991;function Fv(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=jv}var En=Fv;function kv(n){return n!=null&&En(n.length)&&!Ss(n)}var Ps=kv;var Uv=Object.prototype;function Hv(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Uv;return n===e}var Ln=Hv;function Wv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Vp=Wv;var qv="[object Arguments]";function $v(n){return yt(n)&&Ut(n)==qv}var Gc=$v;var zp=Object.prototype,Yv=zp.hasOwnProperty,Xv=zp.propertyIsEnumerable,Kv=Gc(function(){return arguments}())?Gc:function(n){return yt(n)&&Yv.call(n,"callee")&&!Xv.call(n,"callee")},Dn=Kv;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,Qv=Fp&&Fp.exports===Up,kp=Qv?et.Buffer:void 0,Jv=kp?kp.isBuffer:void 0,eb=Jv||jp,$o=eb;var tb="[object Arguments]",rb="[object Array]",ob="[object Boolean]",nb="[object Date]",ib="[object Error]",ab="[object Function]",sb="[object Map]",lb="[object Number]",cb="[object Object]",db="[object RegExp]",ub="[object Set]",pb="[object String]",fb="[object WeakMap]",mb="[object ArrayBuffer]",hb="[object DataView]",yb="[object Float32Array]",gb="[object Float64Array]",xb="[object Int8Array]",vb="[object Int16Array]",bb="[object Int32Array]",Sb="[object Uint8Array]",wb="[object Uint8ClampedArray]",Tb="[object Uint16Array]",_b="[object Uint32Array]",ze={};ze[yb]=ze[gb]=ze[xb]=ze[vb]=ze[bb]=ze[Sb]=ze[wb]=ze[Tb]=ze[_b]=!0;ze[tb]=ze[rb]=ze[mb]=ze[ob]=ze[hb]=ze[nb]=ze[ib]=ze[ab]=ze[sb]=ze[lb]=ze[cb]=ze[db]=ze[ub]=ze[pb]=ze[fb]=!1;function Pb(n){return yt(n)&&En(n.length)&&!!ze[Ut(n)]}var Hp=Pb;function Ob(n){return function(r){return n(r)}}var Bn=Ob;var Wp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ba=Wp&&typeof module=="object"&&module&&!module.nodeType&&module,Ab=ba&&ba.exports===Wp,Vc=Ab&&vs.process,Cb=function(){try{var n=ba&&ba.require&&ba.require("util").types;return n||Vc&&Vc.binding&&Vc.binding("util")}catch{}}(),Xr=Cb;var qp=Xr&&Xr.isTypedArray,Nb=qp?Bn(qp):Hp,Os=Nb;var Ib=Object.prototype,Mb=Ib.hasOwnProperty;function Eb(n,r){var e=We(n),t=!e&&Dn(n),o=!e&&!t&&$o(n),i=!e&&!t&&!o&&Os(n),a=e||t||o||i,s=a?Vp(n.length,String):[],c=s.length;for(var u in n)(r||Mb.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Nn(u,c)))&&s.push(u);return s}var As=Eb;function Lb(n,r){return function(e){return n(r(e))}}var Cs=Lb;var Db=Cs(Object.keys,Object),$p=Db;var Bb=Object.prototype,Rb=Bb.hasOwnProperty;function Gb(n){if(!Ln(n))return $p(n);var r=[];for(var e in Object(n))Rb.call(n,e)&&e!="constructor"&&r.push(e);return r}var Yp=Gb;function Vb(n){return Ps(n)?As(n):Yp(n)}var Rn=Vb;function zb(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Xp=zb;var jb=Object.prototype,Fb=jb.hasOwnProperty;function kb(n){if(!Ht(n))return Xp(n);var r=Ln(n),e=[];for(var t in n)t=="constructor"&&(r||!Fb.call(n,t))||e.push(t);return e}var Kp=kb;function Ub(n){return Ps(n)?As(n,!0):Kp(n)}var Gn=Ub;var Hb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wb=/^\w*$/;function qb(n,r){if(We(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||An(n)?!0:Wb.test(n)||!Hb.test(n)||r!=null&&n in Object(r)}var Zp=qb;var $b=Bt(Object,"create"),Kr=$b;function Yb(){this.__data__=Kr?Kr(null):{},this.size=0}var Qp=Yb;function Xb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Jp=Xb;var Kb="__lodash_hash_undefined__",Zb=Object.prototype,Qb=Zb.hasOwnProperty;function Jb(n){var r=this.__data__;if(Kr){var e=r[n];return e===Kb?void 0:e}return Qb.call(r,n)?r[n]:void 0}var ef=Jb;var eS=Object.prototype,tS=eS.hasOwnProperty;function rS(n){var r=this.__data__;return Kr?r[n]!==void 0:tS.call(r,n)}var tf=rS;var oS="__lodash_hash_undefined__";function nS(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Kr&&r===void 0?oS:r,this}var rf=nS;function Vn(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])}}Vn.prototype.clear=Qp;Vn.prototype.delete=Jp;Vn.prototype.get=ef;Vn.prototype.has=tf;Vn.prototype.set=rf;var zc=Vn;function iS(){this.__data__=[],this.size=0}var of=iS;function aS(n,r){for(var e=n.length;e--;)if(In(n[e][0],r))return e;return-1}var mo=aS;var sS=Array.prototype,lS=sS.splice;function cS(n){var r=this.__data__,e=mo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():lS.call(r,e,1),--this.size,!0}var nf=cS;function dS(n){var r=this.__data__,e=mo(r,n);return e<0?void 0:r[e][1]}var af=dS;function uS(n){return mo(this.__data__,n)>-1}var sf=uS;function pS(n,r){var e=this.__data__,t=mo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var lf=pS;function zn(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])}}zn.prototype.clear=of;zn.prototype.delete=nf;zn.prototype.get=af;zn.prototype.has=sf;zn.prototype.set=lf;var ho=zn;var fS=Bt(et,"Map"),yo=fS;function mS(){this.size=0,this.__data__={hash:new zc,map:new(yo||ho),string:new zc}}var cf=mS;function hS(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var df=hS;function yS(n,r){var e=n.__data__;return df(r)?e[typeof r=="string"?"string":"hash"]:e.map}var go=yS;function gS(n){var r=go(this,n).delete(n);return this.size-=r?1:0,r}var uf=gS;function xS(n){return go(this,n).get(n)}var pf=xS;function vS(n){return go(this,n).has(n)}var ff=vS;function bS(n,r){var e=go(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var mf=bS;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=cf;jn.prototype.delete=uf;jn.prototype.get=pf;jn.prototype.has=ff;jn.prototype.set=mf;var Yo=jn;var SS="Expected a function";function jc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(SS);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(jc.Cache||Yo),e}jc.Cache=Yo;var hf=jc;var wS=500;function TS(n){var r=hf(n,function(t){return e.size===wS&&e.clear(),t}),e=r.cache;return r}var yf=TS;var _S=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,PS=/\\(\\)?/g,OS=yf(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(_S,function(e,t,o,i){r.push(o?i.replace(PS,"$1"):t||e)}),r}),gf=OS;function AS(n){return n==null?"":Sp(n)}var xf=AS;function CS(n,r){return We(n)?n:Zp(n,r)?[n]:gf(xf(n))}var Kt=CS;var NS=1/0;function IS(n){if(typeof n=="string"||An(n))return n;var r=n+"";return r=="0"&&1/n==-NS?"-0":r}var xo=IS;function MS(n,r){r=Kt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[xo(r[e++])];return e&&e==t?n:void 0}var Ns=MS;function ES(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Fn=ES;var vf=st?st.isConcatSpreadable:void 0;function LS(n){return We(n)||Dn(n)||!!(vf&&n&&n[vf])}var bf=LS;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):Fn(o,s):t||(o[o.length]=s)}return o}var wf=Sf;function DS(n){var r=n==null?0:n.length;return r?wf(n,1):[]}var Tf=DS;function BS(n){return Dp(Gp(n,void 0,Tf),n+"")}var Is=BS;var RS=Cs(Object.getPrototypeOf,Object),kn=RS;var GS="[object Object]",VS=Function.prototype,zS=Object.prototype,_f=VS.toString,jS=zS.hasOwnProperty,FS=_f.call(Object);function kS(n){if(!yt(n)||Ut(n)!=GS)return!1;var r=kn(n);if(r===null)return!0;var e=jS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&_f.call(e)==FS}var Pf=kS;function US(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=US;function HS(){this.__data__=new ho,this.size=0}var Af=HS;function WS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Cf=WS;function qS(n){return this.__data__.get(n)}var Nf=qS;function $S(n){return this.__data__.has(n)}var If=$S;var YS=200;function XS(n,r){var e=this.__data__;if(e instanceof ho){var t=e.__data__;if(!yo||t.length<YS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Yo(t)}return e.set(n,r),this.size=e.size,this}var Mf=XS;function Un(n){var r=this.__data__=new ho(n);this.size=r.size}Un.prototype.clear=Af;Un.prototype.delete=Cf;Un.prototype.get=Nf;Un.prototype.has=If;Un.prototype.set=Mf;var Hn=Un;function KS(n,r){return n&&Sr(r,Rn(r),n)}var Ef=KS;function ZS(n,r){return n&&Sr(r,Gn(r),n)}var Lf=ZS;var Gf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Df=Gf&&typeof module=="object"&&module&&!module.nodeType&&module,QS=Df&&Df.exports===Gf,Bf=QS?et.Buffer:void 0,Rf=Bf?Bf.allocUnsafe:void 0;function JS(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=JS;function ew(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=ew;function tw(){return[]}var Ms=tw;var rw=Object.prototype,ow=rw.propertyIsEnumerable,jf=Object.getOwnPropertySymbols,nw=jf?function(n){return n==null?[]:(n=Object(n),zf(jf(n),function(r){return ow.call(n,r)}))}:Ms,Wn=nw;function iw(n,r){return Sr(n,Wn(n),r)}var Ff=iw;var aw=Object.getOwnPropertySymbols,sw=aw?function(n){for(var r=[];n;)Fn(r,Wn(n)),n=kn(n);return r}:Ms,Es=sw;function lw(n,r){return Sr(n,Es(n),r)}var kf=lw;function cw(n,r,e){var t=r(n);return We(n)?t:Fn(t,e(n))}var Ls=cw;function dw(n){return Ls(n,Rn,Wn)}var Sa=dw;function uw(n){return Ls(n,Gn,Es)}var Ds=uw;var pw=Bt(et,"DataView"),Bs=pw;var fw=Bt(et,"Promise"),Rs=fw;var mw=Bt(et,"Set"),Gs=mw;var Uf="[object Map]",hw="[object Object]",Hf="[object Promise]",Wf="[object Set]",qf="[object WeakMap]",$f="[object DataView]",yw=Yr(Bs),gw=Yr(yo),xw=Yr(Rs),vw=Yr(Gs),bw=Yr(Ts),Xo=Ut;(Bs&&Xo(new Bs(new ArrayBuffer(1)))!=$f||yo&&Xo(new yo)!=Uf||Rs&&Xo(Rs.resolve())!=Hf||Gs&&Xo(new Gs)!=Wf||Ts&&Xo(new Ts)!=qf)&&(Xo=function(n){var r=Ut(n),e=r==hw?n.constructor:void 0,t=e?Yr(e):"";if(t)switch(t){case yw:return $f;case gw:return Uf;case xw:return Hf;case vw:return Wf;case bw:return qf}return r});var Zr=Xo;var Sw=Object.prototype,ww=Sw.hasOwnProperty;function Tw(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&ww.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Yf=Tw;var _w=et.Uint8Array,qn=_w;function Pw(n){var r=new n.constructor(n.byteLength);return new qn(r).set(new qn(n)),r}var $n=Pw;function Ow(n,r){var e=r?$n(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Xf=Ow;var Aw=/\w*$/;function Cw(n){var r=new n.constructor(n.source,Aw.exec(n));return r.lastIndex=n.lastIndex,r}var Kf=Cw;var Zf=st?st.prototype:void 0,Qf=Zf?Zf.valueOf:void 0;function Nw(n){return Qf?Object(Qf.call(n)):{}}var Jf=Nw;function Iw(n,r){var e=r?$n(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var em=Iw;var Mw="[object Boolean]",Ew="[object Date]",Lw="[object Map]",Dw="[object Number]",Bw="[object RegExp]",Rw="[object Set]",Gw="[object String]",Vw="[object Symbol]",zw="[object ArrayBuffer]",jw="[object DataView]",Fw="[object Float32Array]",kw="[object Float64Array]",Uw="[object Int8Array]",Hw="[object Int16Array]",Ww="[object Int32Array]",qw="[object Uint8Array]",$w="[object Uint8ClampedArray]",Yw="[object Uint16Array]",Xw="[object Uint32Array]";function Kw(n,r,e){var t=n.constructor;switch(r){case zw:return $n(n);case Mw:case Ew:return new t(+n);case jw:return Xf(n,e);case Fw:case kw:case Uw:case Hw:case Ww:case qw:case $w:case Yw:case Xw:return em(n,e);case Lw:return new t;case Dw:case Gw:return new t(n);case Bw:return Kf(n);case Rw:return new t;case Vw:return Jf(n)}}var tm=Kw;function Zw(n){return typeof n.constructor=="function"&&!Ln(n)?Cp(kn(n)):{}}var rm=Zw;var Qw="[object Map]";function Jw(n){return yt(n)&&Zr(n)==Qw}var om=Jw;var nm=Xr&&Xr.isMap,e1=nm?Bn(nm):om,im=e1;var t1="[object Set]";function r1(n){return yt(n)&&Zr(n)==t1}var am=r1;var sm=Xr&&Xr.isSet,o1=sm?Bn(sm):am,lm=o1;var n1=1,i1=2,a1=4,cm="[object Arguments]",s1="[object Array]",l1="[object Boolean]",c1="[object Date]",d1="[object Error]",dm="[object Function]",u1="[object GeneratorFunction]",p1="[object Map]",f1="[object Number]",um="[object Object]",m1="[object RegExp]",h1="[object Set]",y1="[object String]",g1="[object Symbol]",x1="[object WeakMap]",v1="[object ArrayBuffer]",b1="[object DataView]",S1="[object Float32Array]",w1="[object Float64Array]",T1="[object Int8Array]",_1="[object Int16Array]",P1="[object Int32Array]",O1="[object Uint8Array]",A1="[object Uint8ClampedArray]",C1="[object Uint16Array]",N1="[object Uint32Array]",Ge={};Ge[cm]=Ge[s1]=Ge[v1]=Ge[b1]=Ge[l1]=Ge[c1]=Ge[S1]=Ge[w1]=Ge[T1]=Ge[_1]=Ge[P1]=Ge[p1]=Ge[f1]=Ge[um]=Ge[m1]=Ge[h1]=Ge[y1]=Ge[g1]=Ge[O1]=Ge[A1]=Ge[C1]=Ge[N1]=!0;Ge[d1]=Ge[dm]=Ge[x1]=!1;function Vs(n,r,e,t,o,i){var a,s=r&n1,c=r&i1,u=r&a1;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!Ht(n))return n;var l=We(n);if(l){if(a=Yf(n),!s)return Ip(n,a)}else{var d=Zr(n),p=d==dm||d==u1;if($o(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(!Ge[d])return o?n:{};a=tm(n,d,s)}}i||(i=new Hn);var f=i.get(n);if(f)return f;i.set(n,a),lm(n)?n.forEach(function(y){a.add(Vs(y,r,e,y,n,i))}):im(n)&&n.forEach(function(y,g){a.set(g,Vs(y,r,e,g,n,i))});var m=u?c?Ds:Sa:c?Gn:Rn,h=l?void 0:m(n);return Bp(h||n,function(y,g){h&&(g=y,y=n[g]),Mn(a,g,Vs(y,r,e,g,n,i))}),a}var zs=Vs;var I1=1,M1=4;function E1(n){return zs(n,I1|M1)}var Qr=E1;var L1="__lodash_hash_undefined__";function D1(n){return this.__data__.set(n,L1),this}var pm=D1;function B1(n){return this.__data__.has(n)}var fm=B1;function js(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Yo;++r<e;)this.add(n[r])}js.prototype.add=js.prototype.push=pm;js.prototype.has=fm;var mm=js;function R1(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=R1;function G1(n,r){return n.has(r)}var ym=G1;var V1=1,z1=2;function j1(n,r,e,t,o,i){var a=e&V1,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&z1?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 Fs=j1;function F1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var gm=F1;function k1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var xm=k1;var U1=1,H1=2,W1="[object Boolean]",q1="[object Date]",$1="[object Error]",Y1="[object Map]",X1="[object Number]",K1="[object RegExp]",Z1="[object Set]",Q1="[object String]",J1="[object Symbol]",eT="[object ArrayBuffer]",tT="[object DataView]",vm=st?st.prototype:void 0,Fc=vm?vm.valueOf:void 0;function rT(n,r,e,t,o,i,a){switch(e){case tT:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case eT:return!(n.byteLength!=r.byteLength||!i(new qn(n),new qn(r)));case W1:case q1:case X1:return In(+n,+r);case $1:return n.name==r.name&&n.message==r.message;case K1:case Q1:return n==r+"";case Y1:var s=gm;case Z1:var c=t&U1;if(s||(s=xm),n.size!=r.size&&!c)return!1;var u=a.get(n);if(u)return u==r;t|=H1,a.set(n,r);var l=Fs(s(n),s(r),t,o,i,a);return a.delete(n),l;case J1:if(Fc)return Fc.call(n)==Fc.call(r)}return!1}var bm=rT;var oT=1,nT=Object.prototype,iT=nT.hasOwnProperty;function aT(n,r,e,t,o,i){var a=e&oT,s=Sa(n),c=s.length,u=Sa(r),l=u.length;if(c!=l&&!a)return!1;for(var d=c;d--;){var p=s[d];if(!(a?p in r:iT.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=aT;var sT=1,wm="[object Arguments]",Tm="[object Array]",ks="[object Object]",lT=Object.prototype,_m=lT.hasOwnProperty;function cT(n,r,e,t,o,i){var a=We(n),s=We(r),c=a?Tm:Zr(n),u=s?Tm:Zr(r);c=c==wm?ks:c,u=u==wm?ks:u;var l=c==ks,d=u==ks,p=c==u;if(p&&$o(n)){if(!$o(r))return!1;a=!0,l=!1}if(p&&!l)return i||(i=new Hn),a||Os(n)?Fs(n,r,e,t,o,i):bm(n,r,c,e,t,o,i);if(!(e&sT)){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 Hn),o(h,y,e,t,i)}}return p?(i||(i=new Hn),Sm(n,r,e,t,o,i)):!1}var Pm=cT;function Om(n,r,e,t,o){return n===r?!0:n==null||r==null||!yt(n)&&!yt(r)?n!==n&&r!==r:Pm(n,r,e,t,Om,o)}var Am=Om;function dT(n,r){return n!=null&&r in Object(n)}var Cm=dT;function uT(n,r,e){r=Kt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=xo(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&&En(o)&&Nn(a,o)&&(We(n)||Dn(n)))}var Nm=uT;function pT(n,r){return n!=null&&Nm(n,r,Cm)}var Im=pT;function fT(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Mm=fT;function mT(n,r){return r.length<2?n:Ns(n,Of(r,0,-1))}var Em=mT;function hT(n,r){return Am(n,r)}var kc=hT;function yT(n,r){return r=Kt(r,n),n=Em(n,r),n==null||delete n[xo(Mm(r))]}var Lm=yT;function gT(n){return Pf(n)?void 0:n}var Dm=gT;var xT=1,vT=2,bT=4,ST=Is(function(n,r){var e={};if(n==null)return e;var t=!1;r=bs(r,function(i){return i=Kt(i,n),t||(t=i.length>1),i}),Sr(n,Ds(n),e),t&&(e=zs(e,xT|vT|bT,Dm));for(var o=r.length;o--;)Lm(e,r[o]);return e}),Yn=ST;function wT(n,r,e,t){if(!Ht(n))return n;r=Kt(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var c=xo(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=Ht(l)?l:Nn(r[o+1])?[]:{})}Mn(s,c,u),s=s[c]}return n}var Bm=wT;function TT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Ns(n,a);e(s,a)&&Bm(i,Kt(a,n),s)}return i}var Rm=TT;function _T(n,r){return Rm(n,r,function(e,t){return Im(n,t)})}var Gm=_T;var PT=Is(function(n,r){return n==null?{}:Gm(n,r)}),nr=PT;var fe=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,fe.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,fe.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,fe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function wa(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"&&wa(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 Xn=class extends Error{};function Us(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function wr(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 Kn(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 Fe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Fe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)wa(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,Fe.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 Xn("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 wr(0,o,o);{let a=i[0].fi;return wr(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 wr(c,c+o,o)}else return wr(a.fi,s.fi,o)}}};var Zn;(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})(Zn||(Zn={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)wa(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,he.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 wr(0,t,t);{let i=o[0].fi;return wr(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 wr(s,s+t,t)}else return wr(i.fi,a.fi,t)}}};function Qn(n){return n&&typeof n=="object"&&n instanceof Re}var Re=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&&!Qn(t))return null;o+=1}t=t?Us(t):new Re;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=Us(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Us(c);u[r.path[o-1]]=t,t=u}else{let u=new Re;u[r.path[o-1]]=t,t=u}}o-=1}let a=Object.setPrototypeOf(t,Re.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},Tr;(t=>{function n(o,i){return Ta(o,i)??o}t.apply=n;function r(o,i){return Hc(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=Xe.zoomOnce(c,s[a]),c===void 0)return i;if(!Qn(c))return;a+=1}if(c===void 0)return i;if(!!Qn(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=Uc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Tr||(Tr={}));function Uc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ta(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Uc(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 OT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Ta(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 Ta(n,r){if(!Qn(r))return r;if(n instanceof Fe){let e=Uc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return OT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Ta(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 Re)return Hc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Ta(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 Hc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Qn(r))return r;if(!Qn(n))return Tr.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 Re;for(let o of e){let i=Hc(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=_a(n,r,e)??n,[n,e.result]}function Hs(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Ws(n){n&&(n.len-=1)}function AT(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=_a(i.data,r,Hs(e,a));Ws(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 CT(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=_a(i.data,r,Hs(e,a));return Ws(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 _a(n,r,e){if(n instanceof Fe){let t=Um(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return CT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=_a(i,r,Hs(e,a));return Ws(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"&&!Kn(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=_a(a,r,Hs(e,i));Ws(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&&AT(e),t}else return}}var qs;(r=>{function n(e,t){let o=Xe.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})(qs||(qs={}));var Ke;(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 Re&&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 Fe||c instanceof he||c instanceof fe?p=c.runOp(u):p=Zn.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 Fe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof fe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Re){let S={...x,[g]:h};h=Object.setPrototypeOf(S,Re.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 Fe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){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})(Ke||(Ke={}));var Pa;(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=>Ke.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>Ke.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=Xe.zoom(d,[...m.path,m.id]),g=Ke.apply(d,{...m,type:2})):(h=Xe.zoom(d,[...m.path,m.id,"value"]),g=Ke.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 C=w+1;C<S.length;C++){let P=S[C],N=P[P.length-1];if(typeof N=="number"&&Xe.equal(b,P.slice(0,P.length-1)))_.push(N),S.splice(C,1);else break}let v=Xe.zoom(d,b);y=v.map((C,P)=>_.includes(P)?m.id:C),h=v,T=b.pop()}else{if(T==="alphaOverride"||T==="alpha"){h/=100;let _=h,v=Xe.zoom(d,b.slice(0,b.length-2)),C=v.layers.map(P=>P.id===b[b.length-1]?{...P,data:{...P.data,[T]:_}}:P);Object.setPrototypeOf(C,Object.getPrototypeOf(v.layers)),v.layers=C}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=Ke.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Xn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=s})(Pa||(Pa={}));var Hm=Symbol(),NT=Symbol(),Ys=Symbol(),Ko=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof $s);){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[Ys];t&&t(),delete this._children[r]}}}},qc=class extends Ko{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,Zn.runOp(this._current,r),r.path)}},$c=class extends Ko{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,fe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Wm={get(n,r){if(r===Ys)return()=>{n._parent=null};if(r===Hm)return n._current;if(r===NT)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=Xs(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]}}},IT={...Wm,set(n,r,e){let t={type:0,props:{[r]:ke(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}},MT={...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}},Jn=class extends Ko{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ys]=()=>{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=Xs(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)}},ei=class extends Ko{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ys]=()=>{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=Xs(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 Wc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Xe.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var $s=class extends Ko{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){Wc(this.ts,e,r),Wc(this.actual,t,r),Wc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Xs(n,r,e){return e instanceof Fe?new Jn(n,r,e):e instanceof he?new ei(n,r,e):e instanceof fe?new Proxy(new $c(n,r,e),MT):e!==null&&typeof e=="object"?Kn(e)?e:new Proxy(new qc(n,r,e),IT):e}function Yc(n){let r=new $s(n);return[Xs(r,"",n),r]}function vo(n,r){let[e,t]=Yc(n);return r(e),t.result()}function ke(n){return n instanceof Jn||n instanceof ei?n._current:n!==null&&typeof n=="object"?n[Hm]:n}var Xe;(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 Fe||i instanceof Jn)&&typeof a=="string")return i.data(a);if((i instanceof he||i instanceof ei)&&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})(Xe||(Xe={}));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 _t(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 Ks=class{},Oa=class extends Ks{constructor(e){super();this.id=e}},Aa=class extends Ks{constructor(e){super();this.data=e}};var Kc;try{Kc=new TextDecoder}catch{}var re,So,I=0;var eh=[],Zc=eh,Qc=0,Rt={},Ie,bo,Zt=0,_r=0,Wt,Jr,Ot=[],Ee,$m={useRecords:!1,mapsAsObjects:!0},Ca=class{},ed=new Ca;ed.name="MessagePack 0xC1";var ti=!1,Pr=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(()=>(Qs(),this?this.unpack(r,e):Pr.prototype.unpack.call($m,r,e)));So=e>-1?e:r.length,I=0,Qc=0,_r=0,bo=null,Zc=eh,Wt=null,re=r;try{Ee=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 Pr){if(Rt=this,this.structures)return Ie=this.structures,Zs();(!Ie||Ie.length>0)&&(Ie=[])}else Rt=$m,(!Ie||Ie.length>0)&&(Ie=[]);return Zs()}unpackMultiple(r,e){let t,o=0;try{ti=!0;let i=r.length,a=this?this.unpack(r,i):tl.unpack(r,i);if(e){for(e(a);I<i;)if(o=I,e(Zs())===!1)return}else{for(t=[a];I<i;)o=I,t.push(Zs());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ti=!1,Qs()}}_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 Zs(){try{if(!Rt.trusted&&!ti){let r=Ie.sharedLength||0;r<Ie.length&&(Ie.length=r)}let n=qe();if(I==So)Ie.restoreStructures&&Ym(),Ie=null,re=null,Jr&&(Jr=null);else if(I>So){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ti)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ie.restoreStructures&&Ym(),Qs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Ym(){for(let n in Ie.restoreStructures)Ie[n]=Ie.restoreStructures[n];Ie.restoreStructures=null}function qe(){let n=re[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Ie[n&63]||Rt.getStructures&&th()[n&63];return r?(r.read||(r.read=td(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Rt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[oh()]=qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(qe(),qe());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=qe();return r}else if(n<192){let r=n-160;if(_r>=I)return bo.slice(I-Zt,(I+=r)-Zt);if(_r==0&&So<140){let e=r<16?rd(r):rh(r);if(e!=null)return e}return Jc(r)}else{let r;switch(n){case 192:return null;case 193:return Wt?(r=qe(),r>0?Wt[1].slice(Wt.position1,Wt.position1+=r):Wt[0].slice(Wt.position0,Wt.position0-=r)):ed;case 194:return!1;case 195:return!0;case 196:return Xc(re[I++]);case 197:return r=Ee.getUint16(I),I+=2,Xc(r);case 198:return r=Ee.getUint32(I),I+=4,Xc(r);case 199:return Zo(re[I++]);case 200:return r=Ee.getUint16(I),I+=2,Zo(r);case 201:return r=Ee.getUint32(I),I+=4,Zo(r);case 202:if(r=Ee.getFloat32(I),Rt.useFloat32>2){let e=el[(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=Ee.getFloat64(I),I+=8,r;case 204:return re[I++];case 205:return r=Ee.getUint16(I),I+=2,r;case 206:return r=Ee.getUint32(I),I+=4,r;case 207:return Rt.int64AsNumber?(r=Ee.getUint32(I)*4294967296,r+=Ee.getUint32(I+4)):r=Ee.getBigUint64(I),I+=8,r;case 208:return Ee.getInt8(I++);case 209:return r=Ee.getInt16(I),I+=2,r;case 210:return r=Ee.getInt32(I),I+=4,r;case 211:return Rt.int64AsNumber?(r=Ee.getInt32(I)*4294967296,r+=Ee.getUint32(I+4)):r=Ee.getBigInt64(I),I+=8,r;case 212:if(r=re[I++],r==114)return Jm(re[I++]&63);{let e=Ot[r];if(e)return e.read?(I++,e.read(qe())):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++])):Zo(2);case 214:return Zo(4);case 215:return Zo(8);case 216:return Zo(16);case 217:return r=re[I++],_r>=I?bo.slice(I-Zt,(I+=r)-Zt):LT(r);case 218:return r=Ee.getUint16(I),I+=2,_r>=I?bo.slice(I-Zt,(I+=r)-Zt):DT(r);case 219:return r=Ee.getUint32(I),I+=4,_r>=I?bo.slice(I-Zt,(I+=r)-Zt):BT(r);case 220:return r=Ee.getUint16(I),I+=2,Km(r);case 221:return r=Ee.getUint32(I),I+=4,Km(r);case 222:return r=Ee.getUint16(I),I+=2,Zm(r);case 223:return r=Ee.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 ET=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function td(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>ET.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(qe);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]=qe()}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=Ie[t]||th()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=td(o,n)),o.read()};function th(){let n=ih(()=>(re=null,Rt.getStructures()));return Ie=Rt._mergeStructures(n,Ie)}var Jc=Js,LT=Js,DT=Js,BT=Js;function Js(n){let r;if(n<16&&(r=rd(n)))return r;if(n>64&&Kc)return Kc.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+=lt.apply(String,t),t.length=0)}return t.length>0&&(r+=lt.apply(String,t)),r}function Km(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=qe();return r}function Zm(n){if(Rt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[oh()]=qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(qe(),qe());return r}}var lt=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 lt.apply(String,e)}function rd(n){if(n<4)if(n<2){if(n===0)return"";{let r=re[I++];if((r&128)>1){I-=1;return}return lt(r)}}else{let r=re[I++],e=re[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return lt(r,e);let t=re[I++];if((t&128)>0){I-=3;return}return lt(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 lt(r,e,t,o);{let i=re[I++];if((i&128)>0){I-=5;return}return lt(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 lt(r,e,t,o,i,a);let s=re[I++];if((s&128)>0){I-=7;return}return lt(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 lt(r,e,t,o,i,a,s,c);{let u=re[I++];if((u&128)>0){I-=9;return}return lt(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 lt(r,e,t,o,i,a,s,c,u,l);let d=re[I++];if((d&128)>0){I-=11;return}return lt(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 lt(r,e,t,o,i,a,s,c,u,l,d,p);{let f=re[I++];if((f&128)>0){I-=13;return}return lt(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 lt(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 lt(r,e,t,o,i,a,s,c,u,l,d,p,f,m,h)}}}}}function Xc(n){return Rt.copyBuffers?Uint8Array.prototype.slice.call(re,I,I+=n):re.subarray(I,I+=n)}function Zo(n){let r=re[I++];if(Ot[r])return Ot[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,_r>=I)return bo.slice(I-Zt,(I+=n)-Zt);if(!(_r==0&&So<180))return Jc(n)}else return I--,qe();let r=(n<<5^(n>1?Ee.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=Ee.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=Ee.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=re[t++],e.push(i);let s=n<16?rd(n):rh(n);return s!=null?e.string=s:e.string=Jc(n)}var Jm=(n,r)=>{var e=qe();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ie[n];return o&&o.isShared&&((Ie.restoreStructures||(Ie.restoreStructures=[]))[n]=o),Ie[n]=e,e.read=td(e,t),e.read()},nh=typeof self=="object"?self:global;Ot[0]=()=>{};Ot[0].noBuffer=!0;Ot[101]=()=>{let n=qe();return(nh[n[0]]||Error)(n[1])};Ot[105]=n=>{let r=Ee.getUint32(I-4);Jr||(Jr=new Map);let e=re[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Jr.set(r,o);let i=qe();return o.used?Object.assign(t,i):(o.target=i,i)};Ot[112]=n=>{let r=Ee.getUint32(I-4),e=Jr.get(r);return e.used=!0,e.target};Ot[115]=()=>new Set(qe());var od=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Ot[116]=n=>{let r=n[0],e=od[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)};Ot[120]=()=>{let n=qe();return new RegExp(n[0],n[1])};Ot[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,Wt=[qe(),qe()],Wt.position0=0,Wt.position1=0;let t=I;I=e;try{return qe()}finally{I=t}};Ot[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=So,e=I,t=Qc,o=Zt,i=_r,a=bo,s=Zc,c=Jr,u=Wt,l=new Uint8Array(re.slice(0,So)),d=Ie,p=Ie.slice(0,Ie.length),f=Rt,m=ti,h=n();return So=r,I=e,Qc=t,Zt=o,_r=i,bo=a,Zc=s,Jr=c,Wt=u,re=l,ti=m,Ie=d,Ie.splice(0,Ie.length,...p),Rt=f,Ee=new DataView(re.buffer,re.byteOffset,re.byteLength),h}function Qs(){re=null,Jr=null,Ie=null}function ah(n){n.unpack?Ot[n.type]=n.unpack:Ot[n.type]=n}var el=new Array(147);for(let n=0;n<256;n++)el[n]=+("1e"+Math.floor(45.15-n*.30103));var tl=new Pr({useRecords:!1}),RT=tl.unpack,GT=tl.unpackMultiple,VT=tl.unpack,rl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},zT=new Float32Array(1),TG=new Uint8Array(zT.buffer,0,4);var ol;try{ol=new TextEncoder}catch{}var nl,id,il=typeof Buffer<"u",nd=il?Buffer.allocUnsafeSlow:Uint8Array,dh=il?Buffer:Uint8Array,sh=il?4294967296:2144337920,G,Ze,E=0,Or,Ar=null,jT=/[\u0080-\uFFFF]/,Na=Symbol("record-id"),Qo=class extends Pr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,c=0,u=dh.prototype.utf8Write?function(v,C,P){return G.utf8Write(v,C,P)}:ol&&ol.encodeInto?function(v,C){return ol.encodeInto(v,G.subarray(C)).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,C){if(G||(G=new nd(8192),Ze=new DataView(G.buffer,0,8192),E=0),Or=G.length-10,Or-E<2048?(G=new nd(G.length),Ze=new DataView(G.buffer,0,G.length),Or=G.length-10,E=0):E=E+7&2147483640,t=E,s=l.structuredClone?new Map:null,l.bundleStrings?(Ar=["",""],G[E++]=214,G[E++]=98,Ar.position=E-t,E+=4):Ar=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 N=0;N<P;N++){let O=o[N];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[Na]=N+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),a=o||[];try{if(b(v),Ar){Ze.setUint32(Ar.position+t,E-Ar.position-t);let P=Ar;Ar=null,b(P[0]),b(P[1])}if(l.offset=E,s&&s.idsToInsert){E+=s.idsToInsert.length*6,E>Or&&_(E),l.offset=E;let P=kT(G.subarray(t,E),s.idsToInsert);return s=null,P}return C&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,N=x.length;P<N;P++)x[P][Na]=0;x=[]}if(i&&l.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let N=G.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=P,N)}}C&XT&&(E=t)}};let b=v=>{E>Or&&(G=_(E));var C=typeof v,P;if(C==="string"){let N=v.length;if(Ar&&N>=8&&N<4096){let M=jT.test(v);Ar[M?0:1]+=v,G[E++]=193,b(M?-N:N);return}let O;N<32?O=1:N<256?O=2:N<65536?O=3:O=5;let A=N*3;if(E+A>Or&&(G=_(E+A)),N<64||!u){let M,L,X,R=E+O;for(M=0;M<N;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,Ze.setUint32(E,P),E+=4),E+=P}else if(C==="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,Ze.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,Ze.setInt16(E,v),E+=2):(G[E++]=210,Ze.setInt32(E,v),E+=4);else{let N;if((N=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){G[E++]=202,Ze.setFloat32(E,v);let O;if(N<4||(O=v*el[(G[E]&127)<<1|G[E+1]>>7])>>0===O){E+=4;return}else E--}G[E++]=203,Ze.setFloat64(E,v),E+=8}else if(C==="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,Ze.setUint32(E,O.id),E+=4;return}else s.set(v,{offset:E-t})}let N=v.constructor;if(N===Object)T(v,!0);else if(N===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,Ze.setUint32(E,P),E+=4);for(let O=0;O<P;O++)b(v[O])}else if(N===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,Ze.setUint32(E,P),E+=4);for(let[O,A]of v)b(O),b(A)}else{for(let O=0,A=nl.length;O<A;O++){let M=id[O];if(v instanceof M){let L=nl[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=Ze,Z=E;G=null;let z;try{z=L.pack.call(this,v,V=>(G=X,X=null,E+=V,E>Or&&_(E),{target:G,targetView:Ze,position:E-V}),b)}finally{X&&(G=X,Ze=R,E=Z,Or=G.length-10)}z&&(z.length+E>Or&&_(z.length+E),E=FT(z,G,E,L.type));return}}T(v,!v.hasOwnProperty)}}else if(C==="boolean")G[E++]=v?195:194;else if(C==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))G[E++]=211,Ze.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)G[E++]=207,Ze.setBigUint64(E,v);else if(this.largeBigIntToFloat)G[E++]=203,Ze.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(C==="undefined")this.encodeUndefinedAsNil?G[E++]=192:(G[E++]=212,G[E++]=0,G[E++]=0);else if(C==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?v=>{let C=Object.keys(v),P=C.length;P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,Ze.setUint32(E,P),E+=4);let N;for(let O=0;O<P;O++)b(N=C[O]),b(v[N])}:(v,C)=>{G[E++]=222;let P=E-t;E+=2;let N=0;for(let O in v)(C||v.hasOwnProperty(O))&&(b(O),b(v[O]),N++);G[P+++t]=N>>8,G[P+t]=N&255}:v=>{let C=Object.keys(v),P,N=a.transitions||(a.transitions=Object.create(null)),O=0;for(let M=0,L=C.length;M<L;M++){let X=C[M];P=N[X],P||(P=N[X]=Object.create(null),O++),N=P}let A=N[Na];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(C)?(A=a.nextOwnId,A<g||(A=y),a.nextOwnId=A+1):(A>=g&&(A=y),a.nextId=A+1);let M=C.highByte=A>=96&&h?A-96>>5:-1;N[Na]=A,a[A-64]=C,A<y?(C.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()[Na]=0),x.push(N),b(C))}for(let M=0,L=C.length;M<L;M++)b(v[C[M]])},_=v=>{let C;if(v>16777216){if(v-t>sh)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(sh,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(v-t<<2,G.length-1)>>12)+1<<12;let P=new nd(C);return Ze=new DataView(P.buffer,0,C),G.copy?G.copy(P,0,t,v):P.set(G.slice(t,v)),E-=t,t=0,Or=P.length-10,G=P}}useBuffer(r){G=r,Ze=new DataView(G.buffer,G.byteOffset,G.byteLength),E=0}};id=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ca];nl=[{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(il?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==dh&&this.structuredClone?lh(n,od.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 FT(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 kT(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 wo(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)");id.unshift(n.Class),nl.unshift(n)}ah(n)}var uh=new Qo({useRecords:!1}),UT=uh.pack,HT=uh.pack;var{NEVER:WT,ALWAYS:qT,DECIMAL_ROUND:$T,DECIMAL_FIT:YT}=rl,ph=512,XT=1024;var fh=new Qo({structuredClone:!0});wo({Class:fe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,fe.prototype),n}});wo({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});wo({Class:Fe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Fe.prototype),n}});wo({Class:Oa.prototype.constructor,type:4,write(n){return n.id},read(n){return new Oa(n)}});wo({Class:Aa.prototype.constructor,type:5,write(n){return n.data},read(n){return new Aa(n)}});wo({Class:Re.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Re.prototype),n}});function KT(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(Kn(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 al;(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 KT(n(ad(o))).toString()}t.checksum=e})(al||(al={}));var Po="personal camera",Oo="a218fcc3-276b-49b9-b485-49037fd14f5f",vh=2960946,rt=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 To;(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})(To||(To={}));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 _o;(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})(_o||(_o={}));var ct;(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})(ct||(ct={}));var At;(s=>{s.white={...ct.white,a:1},s.transparent={...ct.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{...ct.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 ct.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})(At||(At={}));var sl;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(sl||(sl={}));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 ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(ir||(ir={}));var Ao;(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})(Ao||(Ao={}));var Cr;(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;QT.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;JT.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;e_.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;t_.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;r_.forEach(c=>{Object.assign(i.randomnessObject,{[c]:s[c]??a[c]})})}return i}e.merge=r})(Cr||(Cr={}));var ll;(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})(ll||(ll={}));var ZT=["count"],QT=["radius","start","end","position","scale","rotation"],JT=["position","scale","rotation"],e_=["count","size"],t_=["count","position","scale","rotation"],r_=["strength","scale","rotation","position","movement","seed","freqScale"];var cl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(cl||(cl={}));var dl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:At.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:At.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:At.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(dl||(dl={}));var Co;(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]})(Co||(Co={}));var sd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(sd||(sd={}));var ld;(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})(ld||(ld={}));var ul;(r=>r.defaultData={...ld.defaultData,...sd.defaultData})(ul||(ul={}));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 ri;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(ri||(ri={}));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"],Ct;(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:ri.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:ct.fromHex(rt)};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:{...ct.fromHex(6710886),a:1},colorB:{...ct.fromHex(6710886),a:1},colorC:{...ct.fromHex(16777215),a:1},colorD:{...ct.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:At.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:At.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:At.fromHexAndA(0,1),contourColor:At.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:{...ct.fromHex(0),a:1},colorB:{...ct.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}}}})(Ct||(Ct={}));var gt;(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 he}}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 he;return p.push({fi:0,data:Ct.defaultData("light",u),id:l}),p.push({fi:1,data:Ct.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function a(u,l="phong",d="layer1",p="layer2"){let f=Ct.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Ct.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=a;function s(u,l="phong",d="layer1",p="layer2"){let f=Ct.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Ct.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=s})(gt||(gt={}));var oi;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(oi||(oi={}));var ni;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(ni||(ni={}));var cd={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var pl;(r=>{function n(e,t){let o={...e};return o_.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(pl||(pl={}));var fl={shape:cd,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},o_=["depth","offset","angle","twist","startScale","endScale"];var Ia;(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})(Ia||(Ia={}));var ml;(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,pl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ml||(ml={}));var No;(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:ni.defaultData(),extrusion:fl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:oi.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})(No||(No={}));var hl;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:ct.white,near:.1,far:2e3})(hl||(hl={}));var yl;(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}}})(yl||(yl={}));var dd;(r=>r.defaultData={softShadowQuality:"low"})(dd||(dd={}));var ud;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(ud||(ud={}));var pd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(pd||(pd={}));var Ma;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ma||(Ma={}));var fd;(r=>r.defaultData={playCamera:Po,gameControlObject:null})(fd||(fd={}));var gl;(r=>r.defaultData={backgroundColor:At.fromHexAndA(vh,1),postprocessing:yl.defaultData,fog:hl.defaultData,globalPhysics:Ma.defaultData,ambient:ud.defaultData,ao:pd.defaultData,shadow:dd.defaultData,publish:fd.defaultData})(gl||(gl={}));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 ii;(o=>{o.identity={...sl.identity,hiddenMatrix:_o.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:To.isEqual(i.position,a.position)?void 0:a.position,rotation:To.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:To.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:_o.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(ii||(ii={}));var xt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:Co.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...ii.identity,cloner:null})(xt||(xt={}));var xl;(r=>r.defaultData={type:"Empty",...xt.defaultData})(xl||(xl={}));var Ch;(r=>r.defaultData={type:"Component",...xt.defaultData})(Ch||(Ch={}));var Jo;(r=>r.defaultData={type:"Mesh",...xt.defaultData,...ul.defaultData})(Jo||(Jo={}));var en;(r=>r.defaultData={...xt.defaultData,...ii.identity,position:[0,0,Ao.DefaultTargetOffset],...Ao.defaultData})(en||(en={}));var vl;(e=>{function n(t){return{...xt.defaultData,...dl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(vl||(vl={}));var ai;(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})(ai||(ai={}));var Nr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...xt.defaultData,...s,component:a,overrides:new Re,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=ii.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Nr||(Nr={}));var eo;(r=>r.defaultData={type:"Page",...xt.defaultData,physics:{...Co.defaultData,fusedBody:!1},...gl.defaultData,camera:en.defaultData})(eo||(eo={}));var bl;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:_o.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Co.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Ao.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",...xt.defaultData,...Jo.defaultData,geometry:No.defaultData("RectangleGeometry"),material:gt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...xt.defaultData,...Jo.defaultData,geometry:No.defaultData("BooleanGeometry"),material:gt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...xt.defaultData,...Jo.defaultData,geometry:No.defaultData("TextGeometry"),material:gt.defaultTwoLayerData("phong","layer1","layer2")}))(bl||(bl={}));var tn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Re}),"materials"in i&&(s.materials=i.materials.map(c=>({layers:new Re})))):ir.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=vo(s.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(a.material.layers)){let d=c.layers.data(u);d&&Ct.patch(d,l)}}).data),s.materials&&a.materials&&(s.materials=vo(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&&Ct.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(...ll.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,ii.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})}),ir.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:ml.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Cr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Cr.merge(s.cloner,a.cloner)});else if(cl.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=ct.clone(c.color))}return s}o.patch=t})(tn||(tn={}));var li;(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})(li||(li={}));var Ir;(r=>r.defaultData={orbitControls:li.defaultData,playPage:Oo,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})(Ir||(Ir={}));var md;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(md||(md={}));var hd;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(hd||(hd={}));var Io;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...md.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:hd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Io||(Io={}));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=ci.getComponentData(t,s.component)?.data;c&&i(a,s,c.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(Nh||(Nh={}));var Mo;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=bl.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:vl.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 Fe;return d.push({fi:1,id:Oo,data:{...eo.defaultData,name:"Scene 1"},children:u}),d}s.defaultData={objects:r(),publish:Ir.defaultData,styles:Io.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new Fe,publish:Ir.defaultData,styles:Io.defaultData()}},s.emptyDataWithPage=function(c){return{objects:r(c),publish:Ir.defaultData,styles:Io.defaultData()}};function i(c){return{...s.defaultData,objects:Dt(c,Fe.prototype)}}s.withObjs=i;function a(c,u){return i([{id:c,data:u,children:[],fi:0}])}s.withObj=a})(Mo||(Mo={}));var di;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(di||(di={}));var ui;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ui||(ui={}));var Sl;(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})(Sl||(Sl={}));var yd;(r=>r.all=["images","videos","colors","audios","fonts","materials","variables"])(yd||(yd={}));var Ih;(r=>r.all=[...yd.all,"components"])(Ih||(Ih={}));var Mh;(r=>{function n(){return{images:new fe,videos:new fe,colors:new fe,audios:new fe,fonts:new fe,materials:new fe,components:new fe,variables:new fe}}r.defaultData=n})(Mh||(Mh={}));var Eo;(r=>{function n(){return{images:new fe,videos:new fe,colors:new fe,audios:new fe,fonts:new fe,materials:new fe,components:new fe,variables:new fe}}r.defaultData=n})(Eo||(Eo={}));var ar;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Dt(a,fe.prototype)}i.defaultColors=n;function r(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ui.emptyImage,name:"AI generated image"}),Dt(s,fe.prototype)}i.defaultImages=r;function e(){return{catelogs:new fe,materials:new fe,images:new fe,videos:new fe,colors:new fe,audios:new fe,fonts:new fe,variables:new he,lib:Eo.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})(ar||(ar={}));import{MathUtils as _l}from"three";var wl;(r=>r.list=["idle","move","jump","run"])(wl||(wl={}));var Tl;(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 he,move:new he,jump:new he,run:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:At.fromHexAndA(3728051,1)}}))(Tl||(Tl={}));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={...nr(ke(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={...ke(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function to(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function ro(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=gt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=gt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=gt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&r(o.material)})})}function n_(n){Object.assign(n.scene.publish,{orbitControls:{...li.defaultData,...ke(n.scene.publish.orbitControls)}})}function i_(n){Object.assign(n.scene.publish.settings,{video:{...Ir.defaultData.settings.video,...ke(n.scene.publish.settings.video)}})}function a_(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 s_(n){n.scene.publish.withBackground=!0}function l_(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function c_(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 d_(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 u_(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=ke(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=ke(e).booleanExclude!==!0)}})}function p_(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 f_(n){function r(t){Object.setPrototypeOf(t,Re.prototype),t.texture&&Object.setPrototypeOf(t.texture,Re.prototype)}function e(t){Object.setPrototypeOf(t,Re.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=ke(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=ke(c).layers;e(u),c.layers=u}})})}function Lh(n){n.layers===void 0&&Object.assign(n,gt.defaultTwoLayerData("lambert"))}function gd(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={...ke(r),colors:e,steps:t};Object.assign(r,o)}})}function m_(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"&&gd(t)}):"material"in e&&typeof e.material!="string"&&gd(e.material)}),Object.values(n.shared.materials).forEach(r=>gd(r))}function h_(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 y_(n){n.shared.audios=Dt({},fe.prototype)}function g_(n){n.shared.videos=Dt({},fe.prototype)}function x_(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 v_(n){Object.entries(ke(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(ke(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function b_(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 S_(n){n.shared.fonts=Dt({},fe.prototype)}function w_(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 T_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=gt.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=w_(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let c={name:o.name,...xt.defaultData,...Jo.defaultData,flatShading:!1,wireframe:!1,geometry:{...No.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:ke(o.states),events:ke(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=ke(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 __(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 he,move:new he,jump:new he}});else{let i=new he;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:_l.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,nr(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 he({fi:0,id:_l.generateUUID(),data:u},{fi:1,id:_l.generateUUID(),data:p})};i.push({fi:c,id:s,data:f})}),delete o.targets)}})})}function P_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new he,s=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;s.push(u),c.interaction==="play"?d={...nr(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={...nr(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:_l.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=Ct.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Vh(n){to(n,Gh),ro(n,Gh)}function O_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function A_(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 C_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=gt.defaultTwoLayerData("phong"))})}function N_(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 I_(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 M_(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 E_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function L_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function D_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function B_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Tl.defaultDataThirdPerson.navmesh)})})}function R_(n){n.scene.styles||(n.scene.styles=Io.defaultData())}function zh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function G_(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}),ro(n,zh),to(n,zh)}function V_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new he})})})}function z_(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&&(ro(n,Eh),to(n,Eh),n.schema=1),r<2&&(n_(n),n.schema=2),r<3&&(a_(n),n.schema=3),r<4&&(s_(n),n.schema=4),r<5&&(l_(n),n.schema=5),r<6&&(c_(n),n.schema=6),r<7&&(d_(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Dh(n),n.schema=9),r<10&&(m_(n),n.schema=10),r<11&&(h_(n),n.schema=11),r<12&&(Dh(n),n.schema=12),r<13&&(y_(n),n.schema=13),r<14&&(x_(n),n.schema=14),r<15&&(v_(n),n.schema=15),r<16&&(b_(n),n.schema=16),r<17&&(ro(n,Bh),to(n,Bh),n.schema=17),r<18&&(ro(n,Lh),to(n,Lh),n.schema=18),r<19&&(i_(n),n.schema=19),r<20&&(S_(n),T_(n),n.schema=20),r<21&&(__(n),P_(n),n.schema=21),r<22&&(Vh(n),n.schema=22),r<23&&(O_(n),n.schema=23),r<24&&(A_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(g_(n),r<25&&(n.schema=25)),r<26&&(u_(n),n.schema=26),r<27&&(p_(n),n.schema=27),r<28&&(Vh(n),n.schema=28),r<29&&(f_(n),n.schema=29),r<30&&(C_(n),n.schema=30),r<31&&(N_(n),n.schema=31),r<33&&(I_(n),n.schema=33),r<34&&(M_(n),n.schema=34),r<35&&(E_(n),n.schema=35),r<36&&(L_(n),n.schema=36),r<37&&(D_(n),n.schema=37),r<38&&(ro(n,Rh),to(n,Rh),n.schema=38),r<39&&(B_(n),n.schema=39),r<40&&(R_(n),n.schema=40),r<41&&(G_(n),n.schema=41),r<42&&(V_(n),n.schema=42),r<43&&(z_(n),n.schema=43),r<99){ro(n,jh),to(n,jh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Po);let e=ke(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=Oo,t.insertBefore(null,null,[{id:Oo,data:{...eo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:nr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:nr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ma.defaultData,...nr(n.scene.environment,"usePhysics","gravity")},camera:ke(n.scene.ownerCamera)??eo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Mo.TRASH_CAN_ID&&t.move(Oo,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,Co.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 j_(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 pi=180/Math.PI;function Uh(n){n.rotation=n.rotation.slice(0,3).map(r=>r*pi)}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*pi))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=r.thetaLength*pi),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*pi),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=pi,r.extrusion.twist*=pi),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(ke(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 F_(n){n.shared.variables=Dt({},fe.prototype)}function k_(n){let r=ke(n.shared.variables);n.shared.variables=Dt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),he.prototype)}var oo=107;function Wh(n,r){r(n.data);for(let e of n.children)Wh(e,r)}function U_(n){let r=n.schema??104;r!==oo&&r<105&&(Wh(n.asset,Hh),n.schema=105)}function Pl(n){let r=n.schema??0;if(r!==oo){console.warn("updating from ",r,"to ",oo),Fh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Ir.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(ro(n,kh),to(n,kh),n.schema=101),r<102&&(j_(n),n.schema=102),r<104&&(n.shared.catelogs=new fe,n.shared.lib=Eo.defaultData(),n.schema=104),r<105&&(F_(n),n.scene.objects.traverse((e,t)=>{Hh(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))U_(e);r<106&&(k_(n),n.schema=106),r<107&&(n.shared.lib.variables=Eo.defaultData().variables,n.schema=107)}}var ci;(s=>{s.defaultData={schema:oo,scene:Mo.defaultData,frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",di.defaultData),shared:{...ar.emptyData(),colors:ar.defaultColors()}},s.emptyDataForImports=function(c){let u=Mo.emptyDataWithPage(c);return{schema:oo,scene:u,frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",di.defaultData),shared:{...ar.emptyData(),colors:ar.defaultColors(),images:ar.defaultImages(c)}}},s.emptyData=function(){return{schema:oo,scene:Mo.emptyDataWithPage(),frames:new fe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",di.defaultData),shared:ar.emptyData()}},s.collabHelper={...Pa,updateSchema(c){return(c.schema??0)<oo?vo(c,Pl):(c.schema??0)-oo}};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:Eo.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})(ci||(ci={}));var sa=xa($h());import{Object3D as GC,Vector3 as Xt,Euler as Qu,MathUtils as _0,Matrix4 as Tn}from"three";var H_=.5*(Math.sqrt(3)-1),Ea=(3-Math.sqrt(3))/6,W_=1/3,Mr=1/6,aF=(Math.sqrt(5)-1)/4,sF=(5-Math.sqrt(5))/20,La=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]),vd=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 Ol(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)*H_,d=La(i+l),p=La(a+l),f=(d+p)*Ea,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+Ea,b=g-S+Ea,T=y-1+2*Ea,_=g-1+2*Ea,v=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let A=v+r[C],M=e[A],L=t[A];P*=P,s=P*P*(M*y+L*g)}let N=.5-w*w-b*b;if(N>=0){let A=v+x+r[C+S],M=e[A],L=t[A];N*=N,c=N*N*(M*w+L*b)}let O=.5-T*T-_*_;if(O>=0){let A=v+1+r[C+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=>vd[i%12*3]),t=new Float64Array(r).map(i=>vd[i%12*3+1]),o=new Float64Array(r).map(i=>vd[i%12*3+2]);return function(a,s,c){let u,l,d,p,f=(a+s+c)*W_,m=La(a+f),h=La(s+f),y=La(c+f),g=(m+h+y)*Mr,x=m-g,S=h-g,w=y-g,b=a-x,T=s-S,_=c-w,v,C,P,N,O,A;b>=T?T>=_?(v=1,C=0,P=0,N=1,O=1,A=0):b>=_?(v=1,C=0,P=0,N=1,O=0,A=1):(v=0,C=0,P=1,N=1,O=0,A=1):T<_?(v=0,C=0,P=1,N=0,O=1,A=1):b<_?(v=0,C=1,P=0,N=0,O=1,A=1):(v=0,C=1,P=0,N=1,O=1,A=0);let M=b-v+Mr,L=T-C+Mr,X=_-P+Mr,R=b-N+2*Mr,Z=T-O+2*Mr,z=_-A+2*Mr,V=b-1+3*Mr,W=T-1+3*Mr,$=_-1+3*Mr,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+C+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+N+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}import{Triangle as q_}from"three";var sr=new q_,Al=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;sr.a.fromBufferAttribute(r,o),sr.b.fromBufferAttribute(r,o+1),sr.c.fromBufferAttribute(r,o+2),i*=sr.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),sr.a.fromBufferAttribute(this.positionAttribute,r*3),sr.b.fromBufferAttribute(this.positionAttribute,r*3+1),sr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(sr.a,o).addScaledVector(sr.b,i).addScaledVector(sr.c,1-(o+i)),sr.getNormal(t),this}};import{Object3D as Z_}from"three";var Jh=xa(Qh());import{Object3D as $_,Matrix4 as Er}from"three";var Y_=new Er,X_=new Er,K_=new Er,fi;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(fi||(fi={}));var mi=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Er;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Er;this.matrixWorldRigid=new Er;this.shearScale=new Er;this.shearScaleInv=new Er}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof $_&&(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)fi.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)fi.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,Jh.SVD)(o),c=Y_.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=X_.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=K_.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 Er().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Er?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 bd=class extends mi(Z_){},Q_=n=>n.type==="Mesh",no=class extends bd{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 no(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 Q_(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}};import{Box3 as sA,BufferGeometry as lA,MeshBasicMaterial as cA}from"three";import{Matrix4 as iA,Mesh as aA}from"three";import{Matrix4 as Il,Vector3 as ry,Euler as nP,MathUtils as Ba}from"three";import{Box3 as J_,Line3 as eP,Matrix4 as Sd,Vector3 as qt}from"three";var rn=new qt,on=new qt,hi=new Sd,ty=[new qt(-1,1,1),new qt(-1,-1,1),new qt(1,-1,1),new qt(1,1,1),new qt(-1,1,-1),new qt(-1,-1,-1),new qt(1,-1,-1),new qt(1,1,-1)],tP=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],rP=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],ey=(n,r,e)=>{n.updateEntityBoxSize(rn,on),hi.copy(r).multiply(n.matrixWorld),on.x===0&&on.y===0&&on.z===0?e.push(new qt(rn.x,rn.y,rn.z).applyMatrix4(hi)):ty.forEach(t=>{e.push(t.clone().multiply(on).add(rn).applyMatrix4(hi))})},Da=class extends J_{constructor(){super(...arguments);this.matrix=new Sd;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 Sd().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 qt);return}ey(a,t,i)}}):ey(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(hi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(on).multiplyScalar(.5),this.getCenter(rn),hi.copy(this.matrix).setPosition(rn),this.vertices=ty.map(e=>e.clone().multiply(on).applyMatrix4(hi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=tP.map(([e,t])=>new eP(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new qt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=rP.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var lr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as oP,CubicBezierCurve3 as wd,Vector3 as cr}from"three";var _d=class extends oP{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 Pd=.001;function Od(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Pd}function Td(n,r){let e=new cr(...n.position),t=new cr(...n.controlNext.position),o=new cr(...r.controlPrevious.position),i=new cr(...r.position);return Od(e,t,i)&&Od(e,o,i)}function Nl(n){let r=n.points.map(l=>new cr(...l.data.position)),e=[n.points[0]],t=new cr(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Od(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 cr(...d.position),f=new cr(...d.controlPrevious.position),m=new cr(...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 cr(...x.position),b=new cr(...S.position),T=w.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let v=Td(x,d),C=Td(d,S);if(!v||!C)s[l]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),N=P.clone().cross(T).length()/T.dot(P);s[l]={...h,tan:N,removedLength:d.roundness/N}}}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(!Td(e[d].data,e[p].data))f.position.distanceTo(m.position)>Pd&&(h=new wd(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)>Pd&&(h=new wd(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),C=m.clone().lerp(_,4/3);c[2*l]=new wd(f,v,C,m)}let u=new _d;return c.forEach(l=>{l&&u.add(l)}),u}var Te;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Te||(Te={}));var yi=n=>Te.is(n),iP={type:"completeState",isfromEntity:!0},aP=["x","y","z"],Ad=new ry,sP=new ry().set(0,1,0),gi=n=>class extends mi(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 Da;this._recursiveBBox=new Da;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(Te.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Te.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(Te.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)tn.toOps(this.data,a.data).forEach(c=>{let u=qs.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=tn.patch(this.data,a),tn.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=>{yi(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(Te.is(o[i]))return o[i];if(Te.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Te.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)yi(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Te.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)yi(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)yi(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)yi(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=>yi(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*Ba.RAD2DEG,this.rotation.y*Ba.RAD2DEG,this.rotation.z*Ba.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Yn(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,aP[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(Ad.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Ba.DEG2RAD),this.rotation.setFromVector3(Ad),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??_o.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)Te.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Te.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Yn(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=_t(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=Xe.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=Xe.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,tn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),_t(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(Tr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=Xe.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=ai.resolve(o.overrides,l),p.updateByOp(t,Ke.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 Nr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of Nr.rootOverrideProps)if(_t(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Tr.filterOp(d.overrideData,l);p&&d.updateByOp(p,Ke.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Tr.filterOp(d.overrideData,t);if(p){let f;s===d.data&&t===p?f=o:f=Ke.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&&!ir.is(t.props.type)&&lr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){lr.changeEntityProptotype(this,o,i);for(let a of this.children)Te.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),_t(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),_t(t.path,["cloner"])!==null){let a=Ke.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.dataPatched.pathSnapping){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??0,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=Nl(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 Il;c.updateMatrixWorld();let m=new Il().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Il().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new Il().lookAt(p,g,sP),S=Ad.setFromEuler(new nP().setFromRotationMatrix(x)).multiplyScalar(Ba.RAD2DEG);h={...h,rotation:S.toArray()}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(iP)})}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 lr.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 lr.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)}};import{BufferGeometry as dP,ConeGeometry as uP,Float32BufferAttribute as pP,MathUtils as fP}from"three";import{BufferGeometry as ny,CylinderGeometry as lP,Float32BufferAttribute as El,MathUtils as cP,Vector2 as dr,Vector3 as Ml}from"three";var 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=cP.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 ny,m.setAttribute("position",new El([],3))):d||f?m=new Ra(u,l,t,o,i,a,s,c*Math.PI/180,d,d,p,f):m=new lP(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 Lo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function oy(n){return new dr(n.y,-n.x)}var Ra=class extends ny{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 Ml,b=new Ml;f&&r==0&&(r=u),f&&e==0&&(e=l);let T=new dr(r,S),_=new dr(e,-S),v=null,C=null,P=null,N=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 dr(j,u)),p&&(P=v.clone(),P.x-=A-W*u),T.sub(O.clone().setLength(j))}if(l>0){let j=l/V;C=_.clone().sub(new dr(j,-l)),_.add(O.clone().setLength(j)),p&&(N=C.clone(),N.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=[],oe=j/o,ee=oe*c+s,K=new dr(Math.sin(ee),Math.cos(ee));N&&C?(U(D,oe,K,R,l,N,-1,!0),U(D,oe,K,Z,l,C,-1,!1)):C?(B(D,K,C.x,0,-1),U(D,oe,K,Z,l,C,-1,!1)):a||B(D,K,e,L,-1);let te=oy(O).normalize();if(Lo(te,K,w),!q)for(let Q=0;Q<=i;Q++){let se=Q/i,ne=O.clone().multiplyScalar(se).add(_);Lo(ne,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/t),D.push(x++)}if(P&&v?(U(D,oe,K,R,u,v,1,!1),U(D,oe,K,Z,u,P,1,!0)):v?(U(D,oe,K,R,u,v,1,!1),B(D,K,v.x,0,1)):a||B(D,K,r,M,1),p&&!q){let Q=oy(O).multiplyScalar(-1).normalize();Lo(Q,K,w);for(let se=0;se<=i;se++){let ne=se/i,ie=O.clone().multiplyScalar(-ne).add(X);Lo(ie,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.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 oe=k[j][D],ee=k[j+1][D],K=k[j+1][D+1],te=k[j][D+1],Q=h[K*3+0],se=h[K*3+2];m.push(oe,ee,te),(Q!=0||se!=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 El(h,3)),this.setAttribute("normal",new El(y,3)),this.setAttribute("uv",new El(g,2));function U(j,D,oe,ee,K,te,Q,se){for(let ne=0;ne<d+1;ne++){let ie=ne/d,ce=Q<0?ie:1-ie;se&&(ce-=1),ce*=ee;let le=new dr(Math.sin(ce),Math.cos(ce)*Q),de=le.clone().multiplyScalar(K).add(te);Lo(de,oe,b),h.push(b.x,b.y,b.z),Lo(le,oe,w),y.push(w.x,w.y,w.z),g.push(D,.5+b.y/t),j.push(x++)}}function B(j,D,oe,ee,K){let te=new Ml,Q=new dr,se=[oe,ee];K<0&&se.reverse();for(let ne of se)Q.set(ne,S*K),Lo(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,oe){let ee=new dr(Math.sin(oe),Math.cos(oe)),K=new dr(-Math.cos(oe),Math.sin(oe)),te=new Ml,Q=j<0?(ie,ce,le)=>m.push(ie,ce,le):(ie,ce,le)=>m.push(ie,le,ce),se=new dr((r+e+M+L)/4,0);Lo(se,ee,te),h.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ne=x++;for(let ie of D){let ce=h.slice(ie*3,ie*3+3);h.push(...ce),y.push(K.x,0,K.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),x++}for(let ie=ne+1;ie<x-1;ie++)Q(ne,ie,ie+1);Q(ne,x-1,ne+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=fP.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 dP,p.setAttribute("position",new pP([],3))):u>0||l>0||c<360?p=new Ra(0,r/2,t,o,i,a,s,c*Math.PI/180,u,l,d,0,!0):p=new uP(r/2,t,o,i,a),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as mP,BufferGeometry as hP,Float32BufferAttribute as Cd,Vector3 as Ga}from"three";var 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 mP(r,e,t,o,i,a):u=new Id(r,e,t,o,i,a,s,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Nd=Math.PI/2,Id=class extends hP{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 Cd(d,3)),this.setAttribute("normal",new Cd(p,3)),this.setAttribute("uv",new Cd(f,2));function y(S,w,b,T,_,v,C,P,N,O,A){let M=(v-2*s)/N,L=(C-2*s)/O,X=v/2-s,R=C/2-s,Z=P/2,z=N+1,V=O+1,W=0,$=0,Y=new Ga;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/N),f.push(1-q/O),W+=1}}for(let q=0;q<O;q++)for(let k=0;k<N;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,C,P,N,O,A){let M=(C-2*s)/O,L=C/2-s,X=P/2-s,R=N/2,Z=O+1,z=0,V=0,W=new Ga,$=new Ga;for(let Y=0;Y<c+1;Y++){let q=Y/c*Nd,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 Ga,_=new Ga(r/2,e/2,t/2);_.subScalar(s);let v=[],C=S*w*b>0?(N,O,A)=>l.push(N,O,A):(N,O,A)=>l.push(N,A,O);for(let N=0;N<=c;N++){let O=[],A=Nd*(1-N/c),M=Math.cos(A),L=Math.sin(A),X=0;for(let R=0;R<=N;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+=Nd/N}v.push(O)}let P=v.length-1;for(let N=0;N<P;N++){let O=v[N],A=v[N+1],M=O.length-1;C(O[0],A[1],A[0]);for(let L=1;L<=M;L++)C(O[L-1],O[L],A[L]),C(O[L],A[L+1],A[L])}}}};import{BufferGeometry as yP,Float32BufferAttribute as Md,Triangle as gP,Vector3 as io,Vector2 as Ed}from"three";var Do=class extends yP{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],c=[],u=[];l(),d(),this.setAttribute("position",new Md(s,3)),this.setAttribute("normal",new Md(u,3)),this.setAttribute("uv",new Md(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 io,h=m.clone(),y=new gP,g=i*o,x=o-g,S=a+1,w=new io,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 io().fromArray(r,V*3).setLength(o)),v=[],C=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 oe=v[$]?.includes(z)==!0;q<=k&&B.push($+ +oe*C),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 N=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(),N.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%C,j%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(N,R[z][B])}let W=[],$=[],Y=[],q=new io;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],oe=R[z][B];m.copy(D).sub(N),h.copy(oe).sub(N);let ee=N.angleTo(m),K=m.angleTo(h),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(N).setLength(x+te),$.push(te);let Q=[O,D,oe];for(let se=0;se<2;se++){let ne=Q[se],ie=Q[se+1];M.subVectors(ne,N),L.subVectors(ie,N),A.crossVectors(M,L).normalize();for(let ce=0;ce<S;ce++){let le=[ee,K][se]*ce/S;m.copy(M).applyAxisAngle(A,le).add(N),W.push(m.clone()),se&&(b(m,N),F.push([ce==0?ne:m.clone(),w.clone()]))}se&&(b(ie,N),F.push([ie,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(N).setLength($[B]).add(N),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 oe=P.map(ee=>D[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...oe.map(ee=>(b(ee,N),[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<C){let $=v[W].findIndex(k=>k%C==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 io;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,C=T(p)/Math.PI+.5;c.push(v,1-C)}let f=new io,m=new io,h=new io,y=new io,g=new Ed,x=new Ed,S=new Ed,w=(_,v,C,P)=>{P<0&&_.x===1&&(c[v]=_.x-1),C.x===0&&C.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 C=b(y);w(g,v+0,f,C),w(x,v+2,m,C),w(S,v+4,h,C)}for(let _=0;_<c.length;_+=6){let v=c[_+0],C=c[_+2],P=c[_+4],N=Math.max(v,C,P),O=Math.min(v,C,P);N>.9&&O<.1&&(v<.2&&(c[_+0]+=1),C<.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 Do(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as xP}from"three";var ly=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 Va(r*.5,i,a):new xP(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Va=class extends Do{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 Va(r.radius,r.corner,r.cornerSides)}};import{Plane as NP,Shape as Ty,Vector2 as ao,Vector3 as IP,MathUtils as zd,LineCurve as jd,QuadraticBezierCurve as _y,CubicBezierCurve as Rl}from"three";import{CubicBezierCurve as Ll,EllipseCurve as vP,LineCurve as Dl,LineCurve3 as bP,MathUtils as SP,QuadraticBezierCurve as Dd,SplineCurve as wP,Vector2 as Pt,Vector3 as uy}from"three";var za=1e-12,xi=class{constructor(r){this.position=new Pt;this.startPosition=new Pt;this.uuid=SP.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 xi(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},vi=class extends xi{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new vi(this.parent).copy(this)}},ur=class extends xi{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new vi(this),new vi(this))}static create(e,t){let o=new ur(e,new Pt(...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 ur(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 Pt,t=new Pt){let[o,i]=this.computeTangents();return o&&i&&(cy(o,e),cy(i,t)),[e,t]}computeTangent(e=new Pt){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Pt){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function cy(n,r=new Pt){let e=n.length();return r.set(-n.y/e,n.x/e)}var Bd=n=>n,bi=new Pt,Bl=new Pt,TP=new Pt,_P=new Pt,PP=new Pt,OP=new Pt,py=new uy,fy=new uy;function my(n){let r=new Pt;r.addVectors(n.v0,bi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Pt;return e.addVectors(n.v2,Bl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ll(n.v0,r,e,n.v2)}function ja(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function AP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function CP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Rd(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 dy(n,r)&&dy(r,e)&&Ld(n.position,r.position,e.position)}function Ld(n,r,e){return bi.copy(r).sub(n).cross(Bl.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 Rd(r,n,e)>Math.PI&&(l*=-1),ja(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 Gd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function dy(n,r){return Ld(n.position,n.controls[1].position,r.position)&&Ld(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=Bl.subVectors(e,r).multiplyScalar(o).add(r),s=TP.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=_P.subVectors(a,i).multiplyScalar(o).add(i),l=PP.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=OP.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=Bd(r[c]),l=bi,d=Bo(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof Ll||u instanceof Dd||u instanceof Dl){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&CP(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=Bd(r[c]),d=bi,p=Bo(l,t);s.push(p);for(let f=0;f<=p;f++)if(l instanceof Ll||l instanceof Dd||l instanceof Dl){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 Vd(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=Bo(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),s+=c}a.curveAfter!==void 0&&(s+=Bo(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Bo(n[0].roundedCurveCorner,r)*.5),t}function Bo(n,r=12){return n&&n instanceof vP?r*2:n&&(n instanceof Dl||n instanceof bP)?1:n&&n instanceof wP?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=Bd(r[a]),c=Bo(s,e),u=bi;for(let l=0;l<=c;l++)if(s instanceof Ll||s instanceof Dd||s instanceof Dl){if(s.getPoint(l/c,u),o!==void 0&&AP(o,u,za))continue;o===void 0&&(o=Bl),o.copy(u),n.push(u.x,u.y),i++}}return ja(n[0],n[n.length-2],za)&&ja(n[1],n[n.length-1],za)&&(n.pop(),n.pop()),t&&i>1&&!(ja(n[i-1],n[1],za)&&ja(n[i-2],n[0],za))&&(n.push(n[0],n[1]),i++),n}var Fd=new ao,MP=new ao,EP=new ao,LP=new ao,DP=new ao,BP=new ao,Ce=class extends Ty{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new NP(new IP(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=zd.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Ce;return i.isClosed=e.isClosed,i.points=e.points.map(a=>ur.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ce.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=Fd.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=zd.generateUUID()){let i;e instanceof ao?i=e:i=new ao(e,t);let a=new ur(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=Vd(this.points,e,!1),this.roundedCurveDivisions=Vd(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=Bo(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(Gd(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(Fd.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){Gd(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,Fd),_=p.getPointAt(b,MP);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let v;if(this.useCubicForRoundedCorners){let C=Rd(T,a.position,_)/2,P=Math.tan(C)*T.distanceTo(a.position),[N,O]=yy(T,_,P,EP,LP),A=gy(N,O,a.position),[M,L]=xy(A,T,_,P,DP,BP);v=new Rl(T.clone(),M.clone(),L.clone(),_.clone())}else v=new _y(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 jd)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 Ce(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 ur(zd.generateUUID(),new ao(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 Ce;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 Rl&&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 _y&&(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 Rl?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof jd&&(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 Rl?l.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(l.v2),d=!0):l instanceof jd&&l.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof Ty&&(this.shapeHoles=e.holes.map(a=>{let s=new Ce;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 Ud=Math.PI*2;function kd({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function RP(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 Py(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 GP(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,_=Py(1,0,S,w),v=Py(S,w,b,T);return!u&&v>0&&(v-=Ud),u&&v<0&&(v+=Ud),{centerx:g,centery:x,ang1:_,ang2:v}}function Oy({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=GP(n,r,e,t,o,i,u,l,a,s),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Ud/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(RP(f,m)),f+=m;return c.map(S=>{let{x:w,y:b}=kd(S[0],o,i,h,y),{x:T,y:_}=kd(S[1],o,i,h,y),{x:v,y:C}=kd(S[2],o,i,h,y);return{x1:w,y1:b,x2:T,y2:_,x:v,y:C}})}import{BufferAttribute as Fl,BufferGeometry as XP}from"three";var _e;(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"})(_e||(_e={}));var Ue;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ue||(Ue={}));function me(n,r){if(!n)throw r||"Assertion Failed!"}var ue=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){me(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){me(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){me(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){me(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}(),Fa=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}(),Gl=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}(),Si=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}(),Ay=function(){function n(){var r=new Si,e=new Fa,t=new Gl(0),o=new Gl(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 Gl(0),t=new Gl(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;me(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;me(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 Si,e=new Si,t=new Fa,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 Si;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new Fa;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 Fa;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 Si;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 Fa;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&&ue.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ue.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){me(o.prev===i),c=o.anEdge;do me(c.Sym!==c),me(c.Sym.Sym===c),me(c.Lnext.Onext.Sym===c),me(c.Onext.Sym.Lnext===c),me(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){me(a.prev===s),c=a.anEdge;do me(c.Sym!==c),me(c.Sym.Sym===c),me(c.Lnext.Onext.Sym===c),me(c.Onext.Sym.Lnext===c),me(c.Org===a),c=c.Onext;while(c!==a.anEdge)}for(me(a.prev===s&&a.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)me(c.Sym.next===u.Sym),me(c.Sym!==c),me(c.Sym.Sym===c),me(c.Org!==null),me(c.Dst!==null),me(c.Lnext.Onext.Sym===c),me(c.Onext.Sym.Lnext===c);me(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}(),Cy=function(){function n(){this.handle=null}return n}(),Ny=function(){function n(){this.key=null,this.node=0}return n}(),VP=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 Cy,this.handles[t]=new Ny;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,me(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 Cy;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ny}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;me(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}(),Hd=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}(),Iy=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),zP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Iy,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 Iy;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}(),jP=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?ue.vertLeq(i.Org,a.Org)?ue.edgeSign(a.Dst,i.Org,a.Org)<=0:ue.edgeSign(i.Dst,a.Org,i.Org)>=0:ue.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return ue.edgeSign(i.Dst,o,i.Org)>=0;var s=ue.edgeEval(i.Dst,o,i.Org),c=ue.edgeEval(a.Dst,o,a.Org);return s>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){me(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 Hd;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 _e.ODD:return(e&1)!==0;case _e.NONZERO:return e!==0;case _e.POSITIVE:return e>0;case _e.NEGATIVE:return e<0;case _e.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 me(ue.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,me(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=ue.vertL1dist(e,r),i=ue.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(ue.vertLeq(o.Org,i.Org)){if(ue.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ue.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(ue.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(me(!ue.vertEq(o.Dst,i.Dst)),ue.vertLeq(o.Dst,i.Dst)){if(ue.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(ue.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 Si,f,m;if(me(!ue.vertEq(u,c)),me(ue.edgeSign(c,r.event,a)<=0),me(ue.edgeSign(u,r.event,s)>=0),me(a!==r.event&&s!==r.event),me(!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(ue.vertLeq(a,s)){if(ue.edgeSign(u,a,s)>0)return!1}else if(ue.edgeSign(c,s,a)<0)return!1;return n.debugEvent(r),ue.intersect(c,a,u,s,p),me(Math.min(a.t,c.t)<=p.t),me(p.t<=Math.max(s.t,u.t)),me(Math.min(u.s,c.s)<=p.s),me(p.s<=Math.max(s.s,a.s)),ue.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ue.vertLeq(a,s)?a:s,ue.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ue.vertEq(p,a)||ue.vertEq(p,s)?(n.checkForRightSplice(r,e),!1):!ue.vertEq(c,r.event)&&ue.edgeSign(c,r.event,p)>=0||!ue.vertEq(u,r.event)&&ue.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):(ue.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),ue.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),ue.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),ue.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}ue.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,ue.vertEq(o.Org,t)){me(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ue.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}me(!1),e=n.topRightRegion(e),c=n.regionBelow(e),a=c.eUp.Sym,i=s=a.Onext,c.fixUpperEdge&&(me(i!==a),n.deleteRegion(r,c),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),ue.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 Hd;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,ue.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ue.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);me(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 Hd,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 zP(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||(me(e.fixUpperEdge),me(++t===1)),me(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,ue.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 VP(i,ue.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,me(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||!ue.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}(),FP=function(){function n(){this.mesh=new Ay,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=_e.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(;ue.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ue.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ue.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ue.edgeGoesLeft(o.Lnext)||ue.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&&(ue.edgeGoesRight(t.Lprev)||ue.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===Ue.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===Ue.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 Ay),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=_e.ODD),e===void 0&&(e=Ue.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_(),jP.computeInterior(this,a);var s=this.mesh;return e===Ue.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===Ue.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function pr(n){var r=n.windingRule,e=r===void 0?_e.ODD:r,t=n.elementType,o=t===void 0?Ue.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 FP;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 Bk=_e.ODD,Rk=_e.NONZERO,Gk=_e.POSITIVE,Vk=_e.NEGATIVE,zk=_e.ABS_GEQ_TWO,jk=Ue.POLYGONS,Fk=Ue.CONNECTED_POLYGONS,kk=Ue.BOUNDARY_CONTOURS;import{Box2 as qP,BufferAttribute as jl,BufferGeometry as $P,Vector2 as YP}from"three";var Vl=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*Vl.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*Vl.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)}},ka=Vl;ka.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Dy=xa(Ly()),Ua={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Xd={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Kd={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},Yd=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Go=class extends $P{constructor(e,t,o=0,i=12,a=3,s=_e.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(N=>{let O=N.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 N=0;N<u.length;N+=2)p.push([u[N],u[N+1]]);d.push(p);for(let N=0;N<l.length;N++){let O=l[N],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 qP().setFromPoints(e.points.map(O=>O.position)).getSize(new YP).length()*.1:d[0].length===0?f=o:f=(0,Dy.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=pr({windingRule:s,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{m=Ua}let h;try{h=pr({windingRule:_e.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]})}catch{h=Xd}if(!m)throw new Error("error generating geometry");let y=m.elementCount;if(h){m.elementCount+=h.elementCount;for(let N=0;N<h.elements.length;N++){let O=h.elements[N],A=N%2===0?m.vertexCount:0;m.elements.push(O+A)}for(let N=0;N<h.vertexIndices.length;N++){let O=h.vertexIndices[N],A=m.vertexCount;m.vertexIndices.push(O+A)}for(let N=0;N<h.vertices.length;N++){let O=h.vertices[N];m.vertices.push(O)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let N=0,O=m.vertexCount;N<O;N++){let A=N*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 ka(this._computeBufferEstimatedSize(m));let b=[],T=[];for(let N=m.elementCount-1;N>=0;N--){let O=N>=y,A=N*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],oe=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 se=j-oe,ne=D-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,R.normals[U*2+0]=-ne,R.normals[U*2+1]=se,R.concave[U]=K*ne-te*se>0;let ce=m.vertexIndices[Z];if(Array.isArray(ce))R.continuous[U]=!1;else{let[le,de]=this._shape.getCurveIndexFromVertexId(ce-1,!0);if(de>0&&de<1)R.continuous[U]=!0;else{let ye=de===1?le+1:le-1;ye=(ye+W)%W;let Pe=de===1?0:1,Ve=this._shape.roundedCurves[le].getTangent(de),Oe=this._shape.roundedCurves[ye].getTangent(Pe);R.continuous[U]=Ve.dot(Oe)>.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=[],oe=[],ee=[],K=0;for(let Q=0;Q<L;Q++){let se=Q*2,ne=(Q-1+L)%L*2,ie=m.vertices[R.start*2+se+0],ce=m.vertices[R.start*2+se+1],le=-R.normals[ne+0]*F,de=-R.normals[ne+1]*F,ye=-R.normals[se+0]*F,Pe=-R.normals[se+1]*F;if(R.concave[Q]||!R.concave[Q]&&O){let Ve=Math.atan2(de,le),Oe=Math.atan2(Pe,ye);Oe>Ve&&(Oe-=Math.PI*2);let Be=Oe-Ve;if(R.continuous[Q]||O){let Et=Ve+Be/2,be=Math.cos(Et)*F,tt=Math.sin(Et)*F;j[2*K+0]=ie+be*(O?-1:1),j[2*K+1]=ce+tt*(O?-1:1),ee[K]=Q,K++}else{let Et=Math.max(1,Math.floor(i/4*Math.abs(Be)/Math.PI));for(let be=0;be<=Et;be++){let tt=Ve+Be*(be/Et),at=Math.cos(tt)*F,Pn=Math.sin(tt)*F;j[2*K+0]=ie+at,j[2*K+1]=ce+Pn,ee[K]=Q,K++}}}else j[2*K+0]=ie+le,j[2*K+1]=ce+de,ee[K]=Q,D[Q]=K,K++,j[2*K+0]=ie,j[2*K+1]=ce,ee[K]=Q,K++,j[2*K+0]=ie+ye,j[2*K+1]=ce+Pe,ee[K]=Q,oe[Q]=K,K++}let te=pr({windingRule:_e.POSITIVE,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:Q=>{let ne=Q.Org.idx,ie=ee[ne],ce=ee[(ne+1)%ee.length];Q.idx=[ie,ce],Q.Sym.idx=[ce,ie]},vertexIdCallback:Q=>{let se=Q.Lprev.idx;return[se?se[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[se,ne]=te.vertexIndices[Q];if(se===ne)continue;let ie=ne;ne<se&&(ie+=L);for(let ce=se;ce<ie;ce++){let le=ce%L,de=(ce+1)%L;if(!R.continuous[le]||!R.continuous[de]){te.vertexIndices[Q]=[se,le],te.vertexIndices.splice(Q+1,0,[de,ne]),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 oe=R.concave.length,ee=0,K=Yd(ee,L);for(;!B.boundary.vertexIndices.filter(K).length||!F.boundary.vertexIndices.filter(K).length;)ee++,K=Yd(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 se=ee,ne=0,ie=this._buildBevelVert(R,B,(te-1+j)%j,void 0,ne),ce=this._buildBevelVert(R,F,(Q-1+D)%D,void 0,ne),le=ie,de=ce,ye,Pe,Ve=!1;do{ne=(ee||oe)/oe,K=Yd(ee,L);let Oe=q(B,te,K),Be=q(F,Q,K),Et=Ve;if(Ve=!1,Oe&&!Be){for(let be=0;be<Oe;be++)ye=this._buildBevelVert(R,B,(te+be)%j,be/(Oe-1),ne),b.push(le.topN,ye.topP,de.topN),c===!1&&b.push(ye.bottomP,le.bottomN,de.bottomN),le=ye;Ve=!0}else if(!Oe&&Be)for(let be=0;be<Be;be++)Pe=this._buildBevelVert(R,F,(Q+be)%D,be/(Be-1),ne),b.push(de.topN,le.topP,Pe.topP),c===!1&&b.push(le.bottomP,de.bottomN,Pe.bottomP),de=Pe;else if(Oe&&Be)if(ye=this._buildBevelVert(R,B,te,0,ne),Pe=this._buildBevelVert(R,F,Q,0,ne),Et?(b.push(le.topN,Pe.topP,de.topN),b.push(le.topN,ye.topP,Pe.topP),c===!1&&(b.push(Pe.bottomP,le.bottomN,de.bottomN),b.push(Pe.bottomP,ye.bottomP,le.bottomN))):(b.push(de.topN,le.topN,ye.topP),b.push(de.topN,ye.topP,Pe.topP),c===!1&&(b.push(ye.bottomP,le.bottomN,de.bottomN),b.push(ye.bottomP,de.bottomN,Pe.bottomP))),le=ye,de=Pe,Oe===Be)for(let be=1;be<Oe;be++)ye=this._buildBevelVert(R,B,(te+be)%j,be/(Oe-1),ne),Pe=this._buildBevelVert(R,F,(Q+be)%D,be/(Be-1),ne),b.push(le.topN,ye.topP,de.topN),b.push(de.topN,ye.topP,Pe.topP),c===!1&&(b.push(ye.bottomP,le.bottomN,de.bottomN),b.push(ye.bottomP,de.bottomN,Pe.bottomP)),le=ye,de=Pe;else if(Oe>Be){let be=Oe/Be,tt=0;for(let at=1;at<Oe;at++)ye=this._buildBevelVert(R,B,(te+at)%j,at/(Oe-1),ne),b.push(le.topN,ye.topP,de.topN),c===!1&&b.push(ye.bottomP,le.bottomN,de.bottomN),le=ye,at>(tt+1)*be&&(tt++,Pe=this._buildBevelVert(R,F,(Q+tt)%D,tt/(Be-1),ne),b.push(de.topN,ye.topP,Pe.topP),c===!1&&b.push(ye.bottomP,de.bottomN,Pe.bottomP),de=Pe)}else{let be=Be/Oe,tt=0;for(let at=1;at<Be;at++)Pe=this._buildBevelVert(R,F,(Q+at)%D,at/(Be-1),ne),b.push(de.topN,ye.topP,Pe.topP),c===!1&&b.push(ye.bottomP,de.bottomN,Pe.bottomP),de=Pe,at>(tt+1)*be&&(tt++,ye=this._buildBevelVert(R,B,(te+tt)%j,tt/(Oe-1),ne),b.push(le.topN,ye.topP,de.topN),c===!1&&b.push(ye.bottomP,le.bottomN,de.bottomN),le=ye)}te=(te+Oe)%j,Q=(Q+Be)%D,ee=(ee+1)%oe}while(ee!==se)}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=pr({windingRule:$.length>1?_e.POSITIVE:_e.ODD,elementType:Ue.POLYGONS,vertexSize:2,strict:!0,contours:[U.insetPoints,...T]})}catch{B=Kd}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),oe=this._buildSurfaceVert(B,B.elements[F+2],Y);b.push(j.top,D.top,oe.top),c===!1&&b.push(oe.bottom,D.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let _=new jl(Uint32Array.from(b),1),v=new jl(this._buffer.positions,3),C=new jl(this._buffer.normals,3),P=new jl(this._buffer.uvs,2);v.needsUpdate=!0,C.needsUpdate=!0,P.needsUpdate=!0,_.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",C),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],C=e.normals[g+1],P=e.normals[x+0],N=e.normals[x+1];if(f){let X=P-v,R=N-C;v=v+X*(1-i),C=C+R*(1-i);let Z=Math.sqrt(v*v+C*C);v/=Z,C/=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]=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]=v*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),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]=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]=P*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)),this.vertexCache[s]=L,L}clone(){let e=new Go(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Qr(this.userData),e}};var wi=class extends XP{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=_e.ODD;this.elementType=Ue.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:_e.ODD,elementType:Ue.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=pr({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=Ua}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Fl(new Float32Array(p*3),3),this._normalAttribute=new Fl(new Float32Array(p*3),3),this._uvAttribute=new Fl(new Float32Array(p*2),2),this._indexAttribute=new Fl(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],C=(_-m)/x,P=(v-y)/S;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,P)}for(let w=0,b=f;w<b;w++){let T=w*3,_=s.elements[T+0],v=s.elements[T+1],C=s.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,v),this._indexAttribute.setX(T+2,C)}}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 wi(this._shape,this._curveSegments);return e.userData=Qr(this.userData),e}};var Ti=class extends Go{constructor(e,t,o=0,i=12,a=3,s=_e.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 Ti(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Qr(this.userData),e}};var Gt=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:_e.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 Ce?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Ce(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let c=a??new Ce(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 wi(n.shape,o,{windingRule:a}):s=new Ti(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as KP,Float32BufferAttribute as ZP,MathUtils as Zd,Vector2 as Ry}from"three";var Gy=Math.PI*2,Pi=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=Zd.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ce?n.shape:new Ce,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=QP(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f;return o===0?(f=new KP,f.setAttribute("position",new ZP([],3))):f=Gt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function QP(n,r,e,t,o,i){if(t>=Gy)return o>30||o%4===0?(eO(n,r,e,i),Math.round(o/4)):By(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=Oy({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?JP(n,a.x,a.y,u,o,r,e,i):By(n,t,o,r,e,i)}function JP(n,r,e,t,o,i,a,s){let c=Math.round(o/t.length);n.addPoint(_i(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=_i(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?Vy(n,i,a,s):n.addPoint(_i(0,0)),c}function By(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(_i(u,l))}return r<Gy?i>0?Vy(n,t,o,i):n.addPoint(_i(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&zy(n,t,o,i)),1}function eO(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,c=e*a;n.addPoint(kl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(kl(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(kl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(kl(o,i-e,o+s,i-e,o-s,i-e)),t>0&&zy(n,r,e,t)}function _i(n,r){return new ur(Zd.generateUUID(),new Ry(n,r))}function kl(n,r,e,t,o,i){let a=_i(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function Vy(n,r,e,t){jy(n,r,e,t).forEach(i=>n.addPoint(i))}function zy(n,r,e,t){let o=jy(n,r,e,t),i=new Ce;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function jy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Ry(o/r,i/e),s=n.points.map(c=>{let u=c.clone();return u.uuid=Zd.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}import{BufferGeometry as tO,Float32BufferAttribute as Qd,Uint32BufferAttribute as rO,Vector3 as Fy}from"three";var ky=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 Ha(!1,r,e,t,o,i,a,s,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Jd=new rO([0,0,0],1),Ha=class extends tO{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 Fy,h=new Fy,y=m(),g=m(),x=m(),S,w,b,T,_,v,C,P,N=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,oe=0,ee=2,K=p*ee+ee,te=k*K/ee,Q=te+k*$,se=Math.max(0,k*($+K)),[ne,ie,ce]=[3,3,2].map(Ye=>Array(se*Ye).fill(0)),le=[],de=i-c;function ye(Ye,kt){let br=Math.PI/2;v=kt*Y,P=2*Math.PI*(v%V)/V+br,v+=q,C=Math.sin(P)*de,_=Math.cos(P)*de,r?Ye.set(_,C,v):Ye.set(_,v,C)}ye(h,-1e-10),ye(y,0),N.copy(h),ye(h,1);let Pe=h.distanceTo(y),Ve=f?0:D+j,Oe=Pe*W+2*Ve,Be=j,Et=Oe-Ve;for(let Ye=0;Ye<=W;Ye++){ye(g,Ye),Z.subVectors(g,N).normalize(),N.copy(g),X.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(Z,X).normalize();let kt=Ye===0,br=Ye===W,yx=kt?3*Math.PI/2:B,gx=kt?Be:Et,xx=kt?k:Q,vx=kt?0:se-k,bx=Z.clone().multiplyScalar(kt?-D:D).add(g),Sx=Z.clone().multiplyScalar(kt?-1:1).normalize();for(let $r=0;$r<k;$r++){let up=$r*U;if(O.addVectors(h.copy(X).multiplyScalar(c*Math.cos(up)),y.copy(R).multiplyScalar(c*Math.sin(up))),A.copy(O).normalize(),kt||br){f||(oe=vx+$r,[0,1,2].forEach(Lt=>{ne[oe*3+Lt]=bx.getComponent(Lt),ie[oe*3+Lt]=Sx.getComponent(Lt)}),ce[oe*2]=+br,ce[oe*2+1]=$r/l),y.copy(A).multiplyScalar(j),x.addVectors(g,y);for(let Lt=0;Lt<p;Lt++){let Bc=Lt*B+yx;M.addVectors(h.copy(Z).multiplyScalar(D*Math.sin(Bc)),y.copy(A).multiplyScalar(D*Math.cos(Bc))),L.copy(M).normalize(),y.addVectors(x,M),M.normalize(),oe=xx+Lt*k+$r,[0,1,2].forEach(gs=>{ne[oe*3+gs]=y.getComponent(gs),ie[oe*3+gs]=L.getComponent(gs)});let wx=+kt+Math.sin(Bc);ce[oe*2]=(gx+D*wx)/Oe,ce[oe*2+1]=$r/l}}y.addVectors(g,O),oe=te+Ye*k+$r,[0,1,2].forEach(Lt=>{ne[oe*3+Lt]=y.getComponent(Lt),ie[oe*3+Lt]=A.getComponent(Lt)}),ce[oe*2]=(Ve+Ye*Pe)/Oe,ce[oe*2+1]=$r/l}}let be=$+2*p+ee,tt=1,[at,Pn]=[+f,be-1];for(let Ye=at;Ye<=Pn-1;Ye++){let kt=f&&Ye===Pn-1;for(let br=0;br<k-1;br++)S=Ye*k+br,w=S+1,b=(kt?br:S)+k,T=(kt?br+1:w)+k,Ye===0?le.push(w,T,b):Ye===be-2?le.push(S,w,b):le.push(S,w,b,w,T,b)}this.setIndex(le),this.setAttribute("position",new Qd(ne,3)),this.setAttribute("normal",new Qd(ie,3)),this.setAttribute("uv",new Qd(ce,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,Jd.array=o,Jd.count=o.length,Jd}};import{IcosahedronGeometry as oO}from"three";var Uy=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 Wa(r*.5,i,a):new oO(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Wa=class extends Do{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 Wa(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as nO,Shape as iO}from"three";var Hy=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 iO;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 nO(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Qy,BufferGeometryLoader as gO,Vector3 as xO,BoxGeometry as Jy}from"three";import{BufferGeometry as fO,Vector2 as ou,Vector3 as Zy}from"three";import{Box3 as aO,BufferAttribute as qa,BufferGeometry as Wy,Color as ru,EventDispatcher as sO,Float32BufferAttribute as Oi,Matrix3 as qy,Matrix4 as Ky,MathUtils as lO,Object3D as cO,Sphere as dO,Vector2 as $t,Vector3 as vt,Vector4 as uO}from"three";var Lr=new Ky,eu=new cO,Ul=new vt,Vo=class extends sO{constructor(){super(),this.uuid=lO.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 qy().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 Lr.makeRotationX(r),this.applyMatrix4(Lr),this}rotateY(r){return Lr.makeRotationY(r),this.applyMatrix4(Lr),this}rotateZ(r){return Lr.makeRotationZ(r),this.applyMatrix4(Lr),this}translate(r,e,t){return Lr.makeTranslation(r,e,t),this.applyMatrix4(Lr),this}scale(r,e,t){return Lr.makeScale(r,e,t),this.applyMatrix4(Lr),this}lookAt(r){return eu.lookAt(r),eu.updateMatrix(),this.applyMatrix4(eu.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 vt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new ru().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 vt().fromBufferAttribute(a,p),new vt().fromBufferAttribute(a,f),new vt().fromBufferAttribute(a,m)],x=new Ai(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new $t().fromBufferAttribute(c,p),new $t().fromBufferAttribute(c,f),new $t().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new $t().fromBufferAttribute(u,p),new $t().fromBufferAttribute(u,f),new $t().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(Ul).negate(),this.translate(Ul.x,Ul.y,Ul.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new Ky;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 vt,e=new vt;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 vt;if(r){let t=new vt,o=new vt;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 Vo;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 vt,l={a:new vt,b:new vt,c:new vt};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 aO),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new dO),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 qy().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 Ai(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 vt(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 Vo().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 tu().fromGeometry(this),e=new Wy,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Hl.call(new qa(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Hl.call(new qa(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",$y.call(new qa(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Yy.call(new qa(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Yy.call(new qa(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 Oi(u.data.length*3,3);l.name=u.name,i.push(Hl.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new Oi(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Xy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new Oi(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Xy.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 Wy,t=r.geometry;if(r.isPoints||r.isLine){let o=new Oi(t.vertices.length*3,3),i=new Oi(t.colors.length*3,3);if(e.setAttribute("position",Hl.call(o,t.vertices)),e.setAttribute("color",$y.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new Oi(t.lineDistances.length,1);e.setAttribute("lineDistance",pO.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}};Vo.prototype.isGeometry=!0;var tu=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 $t,new $t,new $t))}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 $t,new $t,new $t))}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}},Ai=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 vt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ru,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 pO(n){return this.array.set(n),this}function $y(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 ru),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Yy(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 $t),r[e++]=i.x,r[e++]=i.y}return this}function Hl(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 vt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Xy(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 uO),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var mO=["a","b","c"];function hO(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function nu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function iu(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 yO(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],iu(a.a,a.b,n,t,a,e),iu(a.b,a.c,n,t,a,e),iu(a.c,a.a,n,t,a,e)}function Wl(n,r,e,t,o){n.push(new Ai(r,e,t,void 0,void 0,o))}function Ci(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function ql(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var $l=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof fO?r=new Vo().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 Zy,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;yO(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 Zy,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[hO(x,mO[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,C,P,N,O,A=[];for(o=0,i=c.length;o<i;o++){for(N=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=N.clone().multiplyScalar(_),e.set(0,0,0),a=0;a<t;a++)C=P[a],h=C.a!==N?C.a:C.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 ou,U=new ou,B=new ou;for(o=0,i=u.length;o<i;o++)x=u[o],X=Number(nu(x.a,x.b,f).newEdge)+L,R=Number(nu(x.b,x.c,f).newEdge)+L,Z=Number(nu(x.c,x.a,f).newEdge)+L,Wl(z,X,R,Z,x.materialIndex),Wl(z,x.a,X,Z,x.materialIndex),Wl(z,x.b,R,X,x.materialIndex),Wl(z,x.c,Z,R,x.materialIndex),d&&(W=l[o],$=W[0],Y=W[1],q=W[2],k.set(Ci($.x,Y.x),Ci($.y,Y.y)),U.set(Ci(Y.x,q.x),Ci(Y.y,q.y)),B.set(Ci($.x,q.x),Ci($.y,q.y)),ql(V,k,U,B),ql(V,$,k,B),ql(V,Y,U,k),ql(V,q,B,U));r.vertices=M,r.faces=z,d&&(r.faceVertexUvs[0]=V)}};var ot=new xO,eg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Qy().copy(new Jy(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ot),t={width:ot.x,height:ot.y,depth:ot.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 Qy().copy(new Jy(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ot)):ot.set(a.width,a.height,a.depth),(r!==ot.x||e!==ot.y||t!==ot.z)&&i.scale(ot.x===0?1:r/ot.x,ot.y===0?1:e/ot.y,ot.z===0?1:t/ot.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new $l(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 gO(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ot);let a=100/ot.x;Object.assign(i.parameters,{width:100,height:ot.y*a,depth:ot.z*a}),r(this.build(i))})}};var Yl=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 Ce?n.shape:new Ce,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=Gt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as vO,Float32BufferAttribute as au,Vector2 as Dr,Vector3 as dt}from"three";var tg=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 lu(r*.5,e,o,i,a,s,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function $a(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function su(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 bO(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var lu=class extends vO{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 dt(0,-f,0),w=new dt(0,f,0),b=new Dr(r,-f),T=new Dr(h,-f),_=new Dr(0,w.y).sub(T),v=new Dr(0,w.y).sub(b),C=new Dr(_.y,-_.x).normalize(),P=new Dr(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 dt(C.x,C.y,0),W=new dt(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 dt;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 Dr(Math.sin(k),Math.cos(k));$a($,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 dt,W=new dt,$=new dt,Y=new dt,q=new dt,k=new dt;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 Dr(Math.sin(B),Math.cos(B)),oe=new Dr(Math.sin(F),Math.cos(F)),ee=new Dr(Math.sin(j),Math.cos(j));$a(b,D,W),$a(b,ee,$),$a(C,oe,V),su(w,W,$,L,L,Y),u.push(Y.x,Y.y,Y.z),su(W,w,$,L,M,q),u.push(q.x,q.y,q.z),su($,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 ie=W.clone().add($).multiplyScalar(.5),ce=w.clone().sub(ie).normalize(),de=S.clone().sub(ie).normalize().add(ce).normalize().multiplyScalar(-1),ye=k.clone().sub(q);Z(ie,ye,de,_.angle())}let se,ne;{let ie=new dt;$a(P,ee,ie);let ce=k.clone().add(Y).multiplyScalar(.5);ce=bO(ce,$,w);let le=k.clone().sub(Y);[se,ne]=Z(ce,le,ie,A,Y.y)}{let ie=se,ce=ie.clone().setY(0).normalize(),le=new dt(0,-1,0),de=ce.clone().cross(le);z(ie,ce,le,de)}R.concat(ne);{let ie=_.angle(),ce=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let de=new dt,ye=[];for(let Ve=0;Ve<s;Ve++){let Oe=[],Be=Math.PI/2-ce*Ve/s,Et=Math.cos(Be),be=Math.sin(Be),tt=F;for(let at=0;at<=Ve;at++){let Pn=Math.cos(tt),Ye=Math.sin(tt);V.x=Et*Ye,V.y=be,V.z=Et*Pn,de.copy(le).addScaledVector(V,a),u.push(de.x,de.y,de.z),l.push(V.x,V.y,V.z),d.push(0,0),Oe.push(p++),tt+=Math.PI*2/Ve/t}ye.push(Oe)}ne.reverse(),ye.push(ne);let Pe=ye.length-1;for(let Ve=0;Ve<Pe;Ve++){let Oe=ye[Ve],Be=ye[Ve+1],Et=Oe.length-1;c.push(Be[1],Oe[0],Be[0]);for(let be=1;be<=Et;be++)c.push(Oe[be],Oe[be-1],Be[be]),c.push(Be[be+1],Oe[be],Be[be])}}}}}this.setIndex(c),this.setAttribute("position",new au(u,3)),this.setAttribute("normal",new au(l,3)),this.setAttribute("uv",new au(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 dt,j=new dt,D=1,oe=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 se=Q/D-.5;if(F.copy(V),F.addScaledVector(W,se),F.addScaledVector(j,a),q!=null){let ne=Math.max(0,F.y-q);F.addScaledVector(W,-ne/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=oe+te+(D+1)*K,se=Q+(D+1),ne=se+1,ie=Q+1;c.push(Q,se,ie),c.push(se,ne,ie)}return[V.clone().addScaledVector(W,.5),ee]}function z(V,W,$,Y){let q=Math.PI/2,k=v.angle()-q,U=[],B=new dt,F=new dt;for(let D=0;D<=s;D++){let oe=[],ee=D/s;for(let K=0;K<=D;K++){let Q=((D?K/D:0)-.5)*x,se=Math.cos(Q),ne=Math.sin(Q),ie=Math.atan(Math.tan(k)*se),ce=(q+ie)*ee,le=Math.cos(ce),de=Math.sin(ce);B.set(0,0,0),B.addScaledVector(W,de*se),B.addScaledVector($,le),B.addScaledVector(Y,de*ne),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),oe.push(p++)}U.push(oe)}let j=U.length-1;for(let D=0;D<j;D++){let oe=U[D],ee=U[D+1],K=oe.length-1;c.push(oe[0],ee[1],ee[0]);for(let te=1;te<=K;te++)c.push(oe[te-1],oe[te],ee[te]),c.push(oe[te],ee[te+1],ee[te])}}}};var Xl=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 Ce?n.shape:new Ce,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=Gt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as SO,Float32BufferAttribute as wO,MathUtils as rg,SphereGeometry as TO}from"three";var og=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=rg.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 SO,l.setAttribute("position",new wO([],3))):l=new TO(.5*r,o,i,a,s,c,u*rg.DEG2RAD),l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as _O}from"three";var ng=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 _O(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as PO,Float32BufferAttribute as cu,Vector3 as OO}from"three";var ig=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 du(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},du=class extends PO{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 OO(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)),C=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-x,N=b.z-l;o<=p?(_.z=Math.min(P,N),_.z==N&&(_.y-=(P-N)/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),C(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),C(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 cu(s,3)),this.setAttribute("normal",new cu(c,3)),this.setAttribute("uv",new cu(u,2))}};var Kl=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 Ce?n.shape:new Ce,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=Gt.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as AO}from"three";var ag=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 AO(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as CO,Float32BufferAttribute as NO,MathUtils as IO}from"three";var sg=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=MO(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 MO(n,r,e,t,o,i,a,s,c,u,l){[r,e]=[e,r],a=r/2;let d=IO.clamp(o/360,0,1);if(d===0){let p=new CO;return p.setAttribute("position",new NO([],3)),p}return d===1&&(u=0),new Ha(!0,n,r,e,t,d,i,a,s,c,u,l)}import{TorusKnotGeometry as EO}from"three";var lg=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 EO(s,e,t,o,i,a);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var cg=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 Ce?n.shape:new Ce,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=Gt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as ug,Vector3 as ut,Matrix3 as LO,Matrix4 as nn,BufferGeometry as pg,BufferAttribute as Ni,MathUtils as Zl}from"three";function dg(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var DO=new nn,BO=new nn;function RO(n,r,e){let t=[new ut,new ut,new ut],o=[new ut,new ut,new ut];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=Zl.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(c)}),new nn().makeBasis(t[0],t[1],t[2])}var fg=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??Pi.create({parameters:cd}).userData.shape;return{path:n.path??ni.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...fl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new uu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new pg,{userData:{...n,type:"PathGeometry"}})}},uu=class extends pg{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)||!dg(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;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let 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]=RO(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,C;S==="round"&&(C=new Go(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=C.getAttribute("position").count);let P=0,N=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),N+=z.verticesCount,P=N});let O=N*u,A,M=0;if(this._isOpenEnded()&&S==="flat"){try{A=pr({windingRule:_e.ODD,elementType:Ue.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{A=Kd}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)),C){R.positions.set(C.getAttribute("position").array,X*3),R.normals.set(C.getAttribute("normal").array,X*3),R.uvs.set(C.getAttribute("uv").array,X*2);let z=Z.length;Z.push(...C.getIndex().array.map($=>$+X)),X+=v,R.positions.set(C.getAttribute("position").array,X*3),R.normals.set(C.getAttribute("normal").array,X*3),R.uvs.set(C.getAttribute("uv").array,X*2);let V=Z.length;Z.push(...C.getIndex().array.map($=>$+X)),this.setAttribute("position",new Ni(R.positions,3)),this.setAttribute("normal",new Ni(R.normals,3)),this.setAttribute("uv",new Ni(R.uvs,2)),this.setIndex(Z);let W=DO;W.copy(d[d.length-1]).setPosition(l[l.length-1]),this.applyMatrix4OnRange(W,X,L),W.copy(d[0]).setPosition(l[0]).multiply(BO.makeScale(1,1,-1)),this.applyMatrix4OnRange(W,X-v,X),this.reverseIndicesOnRange(z,V)}else this.setAttribute("position",new Ni(R.positions,3)),this.setAttribute("normal",new Ni(R.normals,3)),this.setAttribute("uv",new Ni(R.uvs,2)),this.setIndex(Z)}_extractPathPoints(){let t=Nl(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 ut,s=new ut,c=new ut,u=new ut,l=new ut(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 C=new nn().makeBasis(_,v,T);t.push(C)}let d=i?s:c,p=i?a:new ut(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 nn().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 nn,d=new nn;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(Zl.lerp(a,a+s,m)*Zl.DEG2RAD);let h=Zl.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=_e.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=pr({windingRule:t,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=Ua}let c;try{c=pr({windingRule:_e.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{c=Xd}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,C=o.roundedCurves.length;do{let P=T-x,N=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-N,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+C)%C;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 ut,l=new ut,d=new ut,p=new ut,f=new ug;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 ut(0,0,c?-1:1).applyMatrix4(a),d=new ut,p=new ug;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 LO().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}}};import{BufferAttribute as mg,BufferGeometry as pu}from"three";import{mergeBufferGeometries as GO}from"three/examples/jsm/utils/BufferGeometryUtils.js";function hg(){let n=new pu;return n.setAttribute("position",new mg(new Float32Array([]),3)),n.setIndex(new mg(new Uint16Array([]),1)),n}var VO=hg().attributes,zO=12,jO=1,Ii=class extends pu{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,VO),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=Sl.getDisplayedValue(u),p=l===2?d.toUpperCase():l===3?d.toLowerCase():d,f=FO(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 Ce().fromShape(T,!0));this.vectorShapes=S;let w=S.map(T=>Gt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:c,extrudeBevelSize:s,windingRule:a<=0?_e.NONZERO:_e.ODD,subdivisions:this.isLowResolution&&a>0?jO:zO}})),b=w.length?GO(w):hg();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=Dt(new pu,Ii.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 FO(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
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}import{BufferGeometry as mu,BufferAttribute as vg,Uint32BufferAttribute as hu,Float32BufferAttribute as yu,Matrix4 as WO,Vector3 as Xa,Sphere as qO,Box3 as $O,BoxGeometry as YO}from"three";var gg,Mi=new Promise(n=>{gg=n}),yg=!1;var Ql;function xg(){if(yg)return;if(Ql)return Ql;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.496/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});gg(c),yg=!0}return Ql=n(),Ql}import{BufferGeometryLoader as kO}from"three";function sn(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=Ce.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 kO().parse(i);else if(i.type==="SubdivGeometry"){let u=new Qe(i,e);return u.data=n,u}else if(i.type==="TextGeometry")return new Ii(i,r);let c;try{c=fu(s)}catch(u){console.error(u)}if(!c){let u=Ce.createFromState(oi.defaultData(),100,100);s.shape=u,c=fu(s)}return c}import{Matrix4 as UO}from"three";var HO=new UO;function Ya(n,r,e,t){let o=n.position.array,i=n.normal.array,a=HO.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 Jl=new $O,Ei=new Xa,pe;Mi.then(n=>{pe=n});var bg=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Sg=new Uint32Array([0,1,2,3]),wg=new Uint8Array([4]),Qe=class extends mu{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=To.div(t,o);this.subdividedGeometry&&Ya(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ya(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(Ei.fromArray(i));let s=Ei.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}=Qe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new YO(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&&(Qe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new qO,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Jl.setFromBufferAttribute(t),Jl.getCenter(o),e.boundingSphere.radius=o.distanceTo(Jl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Jl.getSize(Ei);let i={width:Ei.x,height:Ei.y,depth:Ei.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&&(pe.free_bvh(t),pe.free_subdivision_surface(t));try{a=Qe.allocate(e,i)}catch(l){console.error(l,e),a=Qe.allocate({positionWASM:bg,indexWASM:Sg,verticesPerFaceWASM:wg},i)}if(pe.set_destination_refinement_level(a,0),s=Qe.buildLevel(a,!0,u),e.subdivisions>0)try{pe.set_destination_refinement_level(a,e.subdivisions),c=Qe.buildLevel(a,!1,u)}catch{try{pe.set_destination_refinement_level(a,e.subdivisions-1),c=Qe.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:sn(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}=bu(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}=Su(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=bg,i=Sg,a=wg);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=pe._malloc(m),x=new Float32Array(pe.HEAPF32.buffer,g,p),S=new Uint32Array(pe.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 WO().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let b=w?pe.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):pe.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return pe._free(g),b}static buildLevel(e,t,o,i,a){let s=a?pe.get_mesh_data2(e,t?pe.Level.CONTROL:pe.Level.REFINED,o,a.elements):pe.get_mesh_data(e,t?pe.Level.CONTROL:pe.Level.REFINED,o),c=8,u=pe.HEAPU32.subarray(s>>2,(s>>2)+c),l=u.subarray(4,4+4),d=0,p=pe.HEAPU32[u[d]>>2],f=pe.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=pe.HEAPU32[u[d]>>2],h=pe.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=pe.HEAPU32[u[d]>>2],g=pe.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=pe.HEAPU32[u[d]>>2],S=pe.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new mu;if(w.setIndex(new hu(S,1)),w.setAttribute("position",new yu(f,3)),w.setAttribute("normal",new yu(h,3)),t){w.setAttribute("faceMap",new hu(g,1));let b=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new vg(b,4))}return pe.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,pe.free_mesh_data(s)}static freeSubdivPointer(e){pe.free_bvh(e),pe.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=pe.get_wireframe_data_for_base_level(e),a=4,s=pe.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+2),u=0,l=pe.HEAPU32[s[u]>>2],d=pe.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=pe.HEAPU32[s[u]>>2],f=pe.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new mu;m.setAttribute("position",new yu(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 vg(h,3)),m.setIndex(new hu(f,1)),pe.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||pe.set_destination_refinement_level(e,t);let a=o?pe.get_topological_data2(e,i?pe.Level.CONTROL:pe.Level.REFINED,o.elements):pe.get_topological_data(e,i?pe.Level.CONTROL:pe.Level.REFINED),s=6,c=pe.HEAPU32.subarray(a>>2,(a>>2)+s),u=c.subarray(3,3+3),l=0,d=pe.HEAPU32[c[l]>>2],p=new Float32Array(pe.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=pe.HEAPU32[c[l]>>2],m=new Uint32Array(pe.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=pe.HEAPU32[c[l]>>2],y=new Uint8Array(pe.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return pe.free_topological_data(a),{positions:p,indices:m,verticesPerFace:y}}};var Tg=["getX","getY","getZ"];function bu(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[Tg[p]](l)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[Tg[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 ec=new Xa,gu=new Xa,xu=new Xa,vu=new Xa;function Su(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]){ec.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),gu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),xu.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),vu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),gu.sub(ec).normalize(),xu.sub(ec).normalize(),vu.sub(ec).normalize();let c=gu.cross(xu).dot(vu);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 Qt={};Cx(Qt,{calcBoolean:()=>JO,calcBooleanTopological:()=>QO,freeMeshSet:()=>oA,getMeshSet:()=>eA,hasOpenEdges:()=>tA,transformMeshSet:()=>rA});var XO,_g=new Promise(n=>{XO=n});import{Float32BufferAttribute as Pg,Sphere as KO}from"three";var Se,Li;_g.then(n=>Se=n);function ZO(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}=bu(n.getAttribute("position"),o),s;if(r&&e){let{indices:c,verticesPerFace:u}=Su(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 Og(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=Se._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Se.HEAPU32.buffer,i,r):new Float32Array(Se.HEAPF32.buffer,i,r)).set(n,0),i}function Ag(n){switch(n){case 0:return Se.OP.UNION;case 1:return Se.OP.INTERSECTION;case 2:return Se.OP.A_MINUS_B;case 3:return Se.OP.B_MINUS_A;case 4:return Se.OP.SYMMETRIC_DIFFERENCE;case 5:return Se.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function QO(n,r){Li===void 0&&(Li=Se.init_csg());let e=Og(n),t=Se.csg_calc_topological(Li,e,n.length,Ag(r));Se._free(e);let o=6,i=Se.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,c=Se.HEAPU32[i[s]>>2],u=new Float32Array(Se.HEAPF32.subarray(c>>2,(c>>2)+a[s]));s++;let l=Se.HEAPU32[i[s]>>2],d=new Uint32Array(Se.HEAPU32.subarray(l>>2,(l>>2)+a[s]));s++;let p=Se.HEAPU32[i[s]>>2],f=new Uint8Array(Se.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Se.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function JO(n,r,e,t){Li===void 0&&(Li=Se.init_csg());let o=Og(n),i=Se.csg_calc(Li,o,n.length,t,Ag(r));Se._free(o);let a=5,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+3),u=0,l=Se.HEAPU32[s[u]>>2],d=Se.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=Se.HEAPU32[s[u]>>2],f=Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Pg(d,3)),e.setAttribute("normal",new Pg(f,3));let h=Se.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new KO),e.boundingSphere.radius=-1,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},Se.free_mesh_data(i),m}function eA(n,r,e){if(Se===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}=ZO(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=Se._malloc(l),m=new Float32Array(Se.HEAPF32.buffer,f,c),h=new Uint32Array(Se.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),Se.get_csg_mesh(f,a,f+d,s,i)}function tA(n){return Se.has_open_edges(n)}function rA(n,r){Se.transform_csg_mesh(n,r.elements)}function oA(n){Se.free_csg_mesh(n)}var nA={ConeGeometry:ay,CubeGeometry:sy,CylinderGeometry:iy,DodecahedronGeometry:ly,EllipseGeometry:Pi,HelixGeometry:ky,IcosahedronGeometry:Uy,LatheGeometry:Hy,NonParametricGeometry:eg,PolygonGeometry:Yl,PyramidGeometry:tg,RectangleGeometry:Xl,SphereGeometry:og,PlaneGeometry:ng,BackdropGeometry:ig,StarGeometry:Kl,TextFrameGeometry:ag,TorusGeometry:sg,TorusKnotGeometry:lg,TriangleGeometry:cg,PathGeometry:fg,VectorGeometry:Gt},fu=n=>nA[n.type].create(n);function Di(n){return n!==null&&"booleanOp"in n}var Bi=class extends gi(aA){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new iA}updateVisible(){super.updateVisible(),this.visible=!Di(this.parent)&&this.visible,Di(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Qt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Di(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Bi&&(e.freeBooleanPointer(),Di(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Di(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Di(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var tc=new sA;function Ka(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)}tc.min.set(i,a,s),tc.max.set(c,u,l),tc.getCenter(t),tc.getSize(o).multiplyScalar(.5)}var dA=new lA,uA=new cA,bt=class extends Bi{constructor(r,e){super(dA,uA),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?Ka(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as TC,Matrix4 as _C,Sphere as u0,Vector3 as PC}from"three";import{BufferAttribute as bC,Float32BufferAttribute as d0,MathUtils as Yu,Vector3 as Xu}from"three";import{ShaderMaterial as iC}from"three";import{CubeReflectionMapping as TA,CubeRefractionMapping as _A,CubeUVReflectionMapping as PA,LinearEncoding as Bg,sRGBEncoding as OA}from"three";var Za=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}};import{MathUtils as pA}from"three";var pt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=pA.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 wu=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}},nt=new wu;import{Vector2 as Cg}from"three";import{MathUtils as fA}from"three";var ae=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=fA.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 Le=class extends ae{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 He=class extends Le{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Cg?e:new Cg(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)}};import{Vector3 as Ng}from"three";var St=class extends Le{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ng?e:new Ng(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)}};import{Color as mA}from"three";var it=class extends mA{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 Vt=class extends Le{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof it?e:new it(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 hA=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Ig=/[a-z_0-9]+/gi,H=class extends ae{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=Ig.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&&nt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=nt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||nt.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&&nt.contains(h)&&e.include(nt.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=hA.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Ig);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 yA=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Tu=class extends ae{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Tu.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=yA.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)}},Ae=Tu;Ae.PI="PI",Ae.PI2="PI2",Ae.RECIPROCAL_PI="RECIPROCAL_PI",Ae.RECIPROCAL_PI2="RECIPROCAL_PI2",Ae.LOG2="LOG2",Ae.EPSILON="EPSILON";var gA=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),xA=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ri=class extends ae{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=gA.exec(e);if(t){let o=t[2],i;for(;i=xA.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Gi=class extends ae{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)}};nt.addKeyword("uv",function(){return new Gi});nt.addKeyword("uv2",function(){return new Gi(1)});import{LinearEncoding as vA,sRGBEncoding as bA}from"three";var ln=class extends ae{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??ln.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case vA:return["Linear"];case bA:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=ln.Nodes[this.method],s=e.include(a);if(s===ln.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=ln.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=ln.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},Nt=ln;Nt.Nodes={LinearToLinear:new H(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
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
- `)),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
- `))},Nt.LINEAR_TO_LINEAR="LinearToLinear",Nt.SRGB_TO_LINEAR="sRGBToLinear",Nt.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends H{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};import{Texture as SA}from"three";var It=class extends Le{constructor(e=new SA,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Gi,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 Nt(new Ne("",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 Le{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 Qa=class extends ae{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 _u=class extends ae{constructor(e,t,o=_u.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)}},ft=_u;ft.ADD="+",ft.SUB="-",ft.MUL="*",ft.DIV="/";var De=class extends ae{constructor(e,t=De.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 De.MIX:case De.CLAMP:case De.REFRACT:case De.SMOOTHSTEP:case De.FACEFORWARD:return 3;case De.MIN:case De.MAX:case De.MOD:case De.STEP:case De.REFLECT:case De.DISTANCE:case De.DOT:case De.CROSS:case De.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 De.LENGTH:case De.DISTANCE:case De.DOT:return"f";case De.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 De.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case De.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case De.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case De.STEP:o=this.a.build(e,s===1?"f":l),i=this.b.build(e,l);break;case De.MIN:case De.MAX:case De.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case De.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),a=this.c.build(e,"f");break;case De.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)}},ge=De;ge.RAD="radians",ge.DEG="degrees",ge.EXP="exp",ge.EXP2="exp2",ge.LOG="log",ge.LOG2="log2",ge.SQRT="sqrt",ge.INV_SQRT="inversesqrt",ge.FLOOR="floor",ge.CEIL="ceil",ge.NORMALIZE="normalize",ge.FRACT="fract",ge.SATURATE="saturate",ge.SIN="sin",ge.COS="cos",ge.TAN="tan",ge.ASIN="asin",ge.ACOS="acos",ge.ARCTAN="atan",ge.ABS="abs",ge.SIGN="sign",ge.LENGTH="length",ge.NEGATE="negate",ge.INVERT="invert",ge.MIN="min",ge.MAX="max",ge.MOD="mod",ge.STEP="step",ge.REFLECT="reflect",ge.DISTANCE="distance",ge.DOT="dot",ge.CROSS="cross",ge.POW="pow",ge.MIX="mix",ge.CLAMP="clamp",ge.REFRACT="refract",ge.SMOOTHSTEP="smoothstep",ge.FACEFORWARD="faceforward";var Vi=class extends ae{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 Qa(Vi.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Nt(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Nt(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Nt(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Nt(new Ne("","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 Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Ne("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 Qa(Vi.Nodes.roughnessToMip,[i]),s=new ge(a,Vi.Nodes.m0,Vi.Nodes.cubeUV_maxMipLevel,ge.CLAMP),c=new ge(s,ge.FLOOR),u=new ge(s,ge.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new ft(c,new J(1).setReadonly(!0),ft.ADD)),p=new ge(l,d,u,ge.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)}},zi=Vi;zi.Nodes=function(){let e=new Ri(`struct TextureCubeUVData {
1
+ var qv=Object.create;var Ws=Object.defineProperty;var Wv=Object.getOwnPropertyDescriptor;var $v=Object.getOwnPropertyNames;var Yv=Object.getPrototypeOf,Xv=Object.prototype.hasOwnProperty;var Kv=(n,t,e)=>t in n?Ws(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var qt=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Qv=(n,t)=>{for(var e in t)Ws(n,e,{get:t[e],enumerable:!0})},Zv=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $v(t))!Xv.call(n,o)&&o!==e&&Ws(n,o,{get:()=>t[o],enumerable:!(r=Wv(t,o))||r.enumerable});return n};var Rt=(n,t,e)=>(e=n!=null?qv(Yv(n)):{},Zv(t||!n||!n.__esModule?Ws(e,"default",{value:n,enumerable:!0}):e,n));var yt=(n,t,e)=>(Kv(n,typeof t!="symbol"?t+"":t,e),e);var Ly=qt((Qu,Dy)=>{(function(n,t){typeof Qu=="object"?Dy.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(Qu,function(){"use strict";return n.importState=function(e){var r=new n;return r.importState(e),r},n;function n(){return function(e){var r=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var d=function(){var c=2091639*r+a*23283064365386963e-26;return r=o,o=i,i=c-(a=c|0)};return d.next=d,d.uint32=function(){return d()*4294967296},d.fract53=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.version="Alea 0.9",d.args=e,d.exportState=function(){return[r,o,i,a]},d.importState=function(c){r=+c[0]||0,o=+c[1]||0,i=+c[2]||0,a=+c[3]||0},d}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=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 r.version="Mash 0.9",r}})});var zy=qt((oc,Gy)=>{(function(n,t){typeof oc=="object"&&typeof Gy<"u"?t(oc):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(oc,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,d,c,u,p,f,h,m,y,g,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],_=[],A=e==="f"?S:x,v=m=p=0;v<S;v++)b[v]=new Array(A).fill(0);for(v=0;v<x;v++)_[v]=new Array(x).fill(0);var M,O=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=t[v][a];for(v=0;v<x;v++){for(w[v]=p,h=0,l=v+1,a=v;a<S;a++)h+=Math.pow(b[a][v],2);if(h<i)p=0;else for(f=(u=b[v][v])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v]=u-p,a=l;a<x;a++){for(h=0,s=v;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(O[v]=p,h=0,a=l;a<x;a++)h+=Math.pow(b[v][a],2);if(h<i)p=0;else{for(f=(u=b[v][v+1])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v+1]=u-p,a=l;a<x;a++)w[a]=b[v][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<x;s++)h+=b[a][s]*b[v][s];for(s=l;s<x;s++)b[a][s]=b[a][s]+h*w[s]}}m<(y=Math.abs(O[v])+Math.abs(w[v]))&&(m=y)}if(r)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=l;a<x;a++)_[a][v]=b[v][a]/f;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=b[v][s]*_[s][a];for(s=l;s<x;s++)_[s][a]=_[s][a]+h*_[s][v]}}for(a=l;a<x;a++)_[v][a]=0,_[a][v]=0;_[v][v]=1,p=w[v],l=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(l=v+1,p=O[v],a=l;a<A;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=l;a<A;a++){for(h=0,s=l;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*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*=m,s=x-1;0<=s;s--)for(var T=0;T<50;T++){for(M=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){M=!0;break}if(Math.abs(O[l-1])<=o)break}if(!M){for(c=0,d=l-(h=1),v=l;v<s+1&&(u=h*w[v],w[v]=c*w[v],!(Math.abs(u)<=o));v++)if(p=O[v],O[v]=Math.sqrt(u*u+p*p),c=p/(f=O[v]),h=-u/f,e)for(a=0;a<S;a++)y=b[a][d],g=b[a][v],b[a][d]=y*c+g*h,b[a][v]=-y*h+g*c}if(g=O[s],l===s){if(g<0&&(O[s]=-g,r))for(a=0;a<x;a++)_[a][s]=-_[a][s];break}for(m=O[l],u=(((y=O[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((m-g)*(m+g)+f*(y/(u<0?u-p:u+p)-f))/m,v=l+(h=c=1);v<s+1;v++){if(p=w[v],y=O[v],f=h*p,p*=c,g=Math.sqrt(u*u+f*f),u=m*(c=u/(w[v-1]=g))+p*(h=f/g),p=-m*h+p*c,f=y*h,y*=c,r)for(a=0;a<x;a++)m=_[a][v-1],g=_[a][v],_[a][v-1]=m*c+g*h,_[a][v]=-m*h+g*c;if(g=Math.sqrt(u*u+f*f),u=(c=u/(O[v-1]=g))*p+(h=f/g)*y,m=-h*p+c*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*c+g*h,b[a][v]=-y*h+g*c}w[l]=0,w[s]=u,O[s]=m}for(v=0;v<x;v++)O[v]<o&&(O[v]=0);return{u:b,q:O,v:_}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var xg=qt((Ad,Td)=>{(function(n,t){typeof Ad=="object"&&typeof Td<"u"?Td.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.TinyQueue=t())})(Ad,function(){"use strict";var n=function(r,o){if(r===void 0&&(r=[]),o===void 0&&(o=t),this.data=r,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(r){this.data.push(r),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var r=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),r}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(r){for(var o=this,i=o.data,a=o.compare,s=i[r];r>0;){var l=r-1>>1,d=i[l];if(a(s,d)>=0)break;i[r]=d,r=l}i[r]=s},n.prototype._down=function(r){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[r];r<s;){var d=(r<<1)+1,c=i[d],u=d+1;if(u<this.length&&a(i[u],c)<0&&(d=u,c=i[u]),a(c,l)>=0)break;i[r]=c,r=d}i[r]=l};function t(e,r){return e<r?-1:e>r?1:0}return n})});var bg=qt((s5,Cd)=>{"use strict";var hc=xg();hc.default&&(hc=hc.default);Cd.exports=vg;Cd.exports.default=vg;function vg(n,t,e){t=t||1;for(var r,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<r)&&(r=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var d=i-r,c=a-o,u=Math.min(d,c),p=u/2;if(u===0){var f=[r,o];return f.distance=0,f}for(var h=new hc(void 0,dP),m=r;m<i;m+=u)for(var y=o;y<a;y+=u)h.push(new en(m+p,y+p,p,n));var g=fP(n),x=new en(r+d/2,o+c/2,0,n);x.d>g.d&&(g=x);for(var S=h.length;h.length;){var w=h.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<=t)&&(p=w.h/2,h.push(new en(w.x-p,w.y-p,p,n)),h.push(new en(w.x+p,w.y-p,p,n)),h.push(new en(w.x-p,w.y+p,p,n)),h.push(new en(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 dP(n,t){return t.max-n.max}function en(n,t,e,r){this.x=n,this.y=t,this.h=e,this.d=pP(n,t,r),this.max=this.d+this.h*Math.SQRT2}function pP(n,t,e){for(var r=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,d=l-1;s<l;d=s++){var c=a[s],u=a[d];c[1]>t!=u[1]>t&&n<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,hP(n,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function fP(n){for(var t=0,e=0,r=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],d=o[s],c=l[0]*d[1]-d[0]*l[1];e+=(l[0]+d[0])*c,r+=(l[1]+d[1])*c,t+=c*3}return t===0?new en(o[0][0],o[0][1],0,n):new en(e/t,r/t,0,n)}function hP(n,t,e,r){var o=e[0],i=e[1],a=r[0]-o,s=r[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(t-i)*s)/(a*a+s*s);l>1?(o=r[0],i=r[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=t-i,a*a+s*s}});var B0=qt(jc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var c=this||t;return c._counter=1e3,c._html5AudioPool=[],c.html5PoolSize=10,c._codecs={},c._howls=[],c._muted=!1,c._volume=1,c._canPlayEvent="canplaythrough",c._navigator=typeof window<"u"&&window.navigator?window.navigator:null,c.masterGain=null,c.noAudio=!1,c.usingWebAudio=!0,c.autoSuspend=!0,c.ctx=null,c.autoUnlock=!0,c._setup(),c},volume:function(c){var u=this||t;if(c=parseFloat(c),u.ctx||d(),typeof c<"u"&&c>=0&&c<=1){if(u._volume=c,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.volume=m._volume*c)}return u}return u._volume},mute:function(c){var u=this||t;u.ctx||d(),u._muted=c,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c?0:u._volume,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return u},stop:function(){for(var c=this||t,u=0;u<c._howls.length;u++)c._howls[u].stop();return c},unload:function(){for(var c=this||t,u=c._howls.length-1;u>=0;u--)c._howls[u].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,d()),c},codecs:function(c){return(this||t)._codecs[c.replace(/^x-/,"")]},_setup:function(){var c=this||t;if(c.state=c.ctx&&c.ctx.state||"suspended",c._autoSuspend(),!c.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var u=new Audio;u.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return c}if(!u||typeof u.canPlayType!="function")return c;var p=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=c._navigator?c._navigator.userAgent:"",h=f.match(/OPR\/([0-6].)/g),m=h&&parseInt(h[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 c._codecs={mp3:!!(!m&&(p||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},c},_unlockAudio:function(){var c=this||t;if(!(c._audioUnlocked||!c.ctx)){c._audioUnlocked=!1,c.autoUnlock=!1,!c._mobileUnloaded&&c.ctx.sampleRate!==44100&&(c._mobileUnloaded=!0,c.unload()),c._scratchBuffer=c.ctx.createBuffer(1,1,22050);var u=function(p){for(;c._html5AudioPool.length<c.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,c._releaseHtml5Audio(f)}catch{c.noAudio=!0;break}for(var h=0;h<c._howls.length;h++)if(!c._howls[h]._webAudio)for(var m=c._howls[h]._getSoundIds(),y=0;y<m.length;y++){var g=c._howls[h]._soundById(m[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}c._autoResume();var x=c.ctx.createBufferSource();x.buffer=c._scratchBuffer,x.connect(c.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),x.onended=function(){x.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(c){var u=this||t;return c._unlocked&&u._html5AudioPool.push(c),u},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<c._howls.length;u++)if(c._howls[u]._webAudio){for(var p=0;p<c._howls[u]._sounds.length;p++)if(!c._howls[u]._sounds[p]._paused)return c}return c._suspendTimer&&clearTimeout(c._suspendTimer),c._suspendTimer=setTimeout(function(){if(!!c.autoSuspend){c._suspendTimer=null,c.state="suspending";var f=function(){c.state="suspended",c._resumeAfterSuspend&&(delete c._resumeAfterSuspend,c._autoResume())};c.ctx.suspend().then(f,f)}},3e4),c}},_autoResume:function(){var c=this;if(!(!c.ctx||typeof c.ctx.resume>"u"||!t.usingWebAudio))return c.state==="running"&&c.ctx.state!=="interrupted"&&c._suspendTimer?(clearTimeout(c._suspendTimer),c._suspendTimer=null):c.state==="suspended"||c.state==="running"&&c.ctx.state==="interrupted"?(c.ctx.resume().then(function(){c.state="running";for(var u=0;u<c._howls.length;u++)c._howls[u]._emit("resume")}),c._suspendTimer&&(clearTimeout(c._suspendTimer),c._suspendTimer=null)):c.state==="suspending"&&(c._resumeAfterSuspend=!0),c}};var t=new n,e=function(c){var u=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(c)};e.prototype={init:function(c){var u=this;return t.ctx||d(),u._autoplay=c.autoplay||!1,u._format=typeof c.format!="string"?c.format:[c.format],u._html5=c.html5||!1,u._muted=c.mute||!1,u._loop=c.loop||!1,u._pool=c.pool||5,u._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,u._rate=c.rate||1,u._sprite=c.sprite||{},u._src=typeof c.src!="string"?c.src:[c.src],u._volume=c.volume!==void 0?c.volume:1,u._xhr={method:c.xhr&&c.xhr.method?c.xhr.method:"GET",headers:c.xhr&&c.xhr.headers?c.xhr.headers:null,withCredentials:c.xhr&&c.xhr.withCredentials?c.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=c.onend?[{fn:c.onend}]:[],u._onfade=c.onfade?[{fn:c.onfade}]:[],u._onload=c.onload?[{fn:c.onload}]:[],u._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],u._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],u._onpause=c.onpause?[{fn:c.onpause}]:[],u._onplay=c.onplay?[{fn:c.onplay}]:[],u._onstop=c.onstop?[{fn:c.onstop}]:[],u._onmute=c.onmute?[{fn:c.onmute}]:[],u._onvolume=c.onvolume?[{fn:c.onvolume}]:[],u._onrate=c.onrate?[{fn:c.onrate}]:[],u._onseek=c.onseek?[{fn:c.onseek}]:[],u._onunlock=c.onunlock?[{fn:c.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var c=this,u=null;if(t.noAudio){c._emit("loaderror",null,"No audio support.");return}typeof c._src=="string"&&(c._src=[c._src]);for(var p=0;p<c._src.length;p++){var f,h;if(c._format&&c._format[p])f=c._format[p];else{if(h=c._src[p],typeof h!="string"){c._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(h),f||(f=/\.([^.]+)$/.exec(h.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&&t.codecs(f)){u=c._src[p];break}}if(!u){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=u,c._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new r(c),c._webAudio&&i(c),c},play:function(c,u){var p=this,f=null;if(typeof c=="number")f=c,c=null;else{if(typeof c=="string"&&p._state==="loaded"&&!p._sprite[c])return null;if(typeof c>"u"&&(c="__default",!p._playLock)){for(var h=0,m=0;m<p._sounds.length;m++)p._sounds[m]._paused&&!p._sounds[m]._ended&&(h++,f=p._sounds[m]._id);h===1?c=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!c&&(c=y._sprite||"__default"),p._state!=="loaded"){y._sprite=c,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return u||p._loadQueue("play"),y._id;p._webAudio&&t._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[c][0]/1e3),S=Math.max(0,(p._sprite[c][0]+p._sprite[c][1])/1e3-x),w=S*1e3/Math.abs(y._rate),b=p._sprite[c][0]/1e3,_=(p._sprite[c][0]+p._sprite[c][1])/1e3;y._sprite=c,y._ended=!1;var A=function(){y._paused=!1,y._seek=x,y._start=b,y._stop=_,y._loop=!!(y._loop||p._sprite[c][2])};if(x>=_){p._ended(y);return}var v=y._node;if(p._webAudio){var M=function(){p._playLock=!1,A(),p._refreshBuffer(y);var P=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(P,t.ctx.currentTime),y._playStart=t.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)),u||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?M():(p._playLock=!0,p.once("resume",M),p._clearTimer(y._id))}else{var O=function(){v.currentTime=x,v.muted=y._muted||p._muted||t._muted||v.muted,v.volume=y._volume*t.volume(),v.playbackRate=y._rate;try{var P=v.play();if(P&&typeof Promise<"u"&&(P instanceof Promise||typeof P.then=="function")?(p._playLock=!0,A(),P.then(function(){p._playLock=!1,v._unlocked=!0,u?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})):u||(p._playLock=!1,A(),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}c!=="__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(I){p._emit("playerror",y._id,I)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var T=window&&window.ejecta||!v.readyState&&t._navigator.isCocoonJS;if(v.readyState>=3||T)O();else{p._playLock=!0,p._state="loading";var C=function(){p._state="loaded",O(),v.removeEventListener(t._canPlayEvent,C,!1)};v.addEventListener(t._canPlayEvent,C,!1),p._clearTimer(y._id)}}return y._id},pause:function(c){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(c)}}),u;for(var p=u._getSoundIds(c),f=0;f<p.length;f++){u._clearTimer(p[f]);var h=u._soundById(p[f]);if(h&&!h._paused&&(h._seek=u.seek(p[f]),h._rateSeek=0,h._paused=!0,u._stopFade(p[f]),h._node))if(u._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),u._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||u._emit("pause",h?h._id:null)}return u},stop:function(c,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(c)}}),p;for(var f=p._getSoundIds(c),h=0;h<f.length;h++){p._clearTimer(f[h]);var m=p._soundById(f[h]);m&&(m._seek=m._start||0,m._rateSeek=0,m._paused=!0,m._ended=!0,p._stopFade(f[h]),m._node&&(p._webAudio?m._node.bufferSource&&(typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),p._cleanBuffer(m._node)):(!isNaN(m._node.duration)||m._node.duration===1/0)&&(m._node.currentTime=m._start||0,m._node.pause(),m._node.duration===1/0&&p._clearSound(m._node))),u||p._emit("stop",m._id))}return p},mute:function(c,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(c,u)}}),p;if(typeof u>"u")if(typeof c=="boolean")p._muted=c;else return p._muted;for(var f=p._getSoundIds(u),h=0;h<f.length;h++){var m=p._soundById(f[h]);m&&(m._muted=c,m._interval&&p._stopFade(m._id),p._webAudio&&m._node?m._node.gain.setValueAtTime(c?0:m._volume,t.ctx.currentTime):m._node&&(m._node.muted=t._muted?!0:c),p._emit("mute",m._id))}return p},volume:function(){var c=this,u=arguments,p,f;if(u.length===0)return c._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length>=2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,u)}}),c;typeof f>"u"&&(c._volume=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)y=c._soundById(f[g]),y&&(y._volume=p,u[2]||c._stopFade(f[g]),c._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,t.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*t.volume()),c._emit("volume",y._id))}else return y=f?c._soundById(f):c._sounds[0],y?y._volume:0;return c},fade:function(c,u,p,f){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,u,p,f)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),u=Math.min(Math.max(0,parseFloat(u)),1),p=parseFloat(p),h.volume(c,f);for(var m=h._getSoundIds(f),y=0;y<m.length;y++){var g=h._soundById(m[y]);if(g){if(f||h._stopFade(m[y]),h._webAudio&&!g._muted){var x=t.ctx.currentTime,S=x+p/1e3;g._volume=c,g._node.gain.setValueAtTime(c,x),g._node.gain.linearRampToValueAtTime(u,S)}h._startFadeInterval(g,c,u,p,m[y],typeof f>"u")}}return h},_startFadeInterval:function(c,u,p,f,h,m){var y=this,g=u,x=p-u,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();c._fadeTo=p,c._interval=setInterval(function(){var _=(Date.now()-b)/f;b=Date.now(),g+=x*_,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?c._volume=g:y.volume(g,c._id,!0),m&&(y._volume=g),(p<u&&g<=p||p>u&&g>=p)&&(clearInterval(c._interval),c._interval=null,c._fadeTo=null,y.volume(p,c._id),y._emit("fade",c._id))},w)},_stopFade:function(c){var u=this,p=u._soundById(c);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,c),p._fadeTo=null,u._emit("fade",c)),u},loop:function(){var c=this,u=arguments,p,f,h;if(u.length===0)return c._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],c._loop=p;else return h=c._soundById(parseInt(u[0],10)),h?h._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[1],10));for(var m=c._getSoundIds(f),y=0;y<m.length;y++)h=c._soundById(m[y]),h&&(h._loop=p,c._webAudio&&h._node&&h._node.bufferSource&&(h._node.bufferSource.loop=p,p&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop,c.playing(m[y])&&(c.pause(m[y],!0),c.play(m[y],!0)))));return c},rate:function(){var c=this,u=arguments,p,f;if(u.length===0)f=c._sounds[0]._id;else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof p=="number"){if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,u)}}),c;typeof f>"u"&&(c._rate=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=c._soundById(f[g]),y){c.playing(f[g])&&(y._rateSeek=c.seek(f[g]),y._playStart=c._webAudio?t.ctx.currentTime:y._playStart),y._rate=p,c._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,t.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=c.seek(f[g]),S=(c._sprite[y._sprite][0]+c._sprite[y._sprite][1])/1e3-x,w=S*1e3/Math.abs(y._rate);(c._endTimers[f[g]]||!y._paused)&&(c._clearTimer(f[g]),c._endTimers[f[g]]=setTimeout(c._ended.bind(c,y),w)),c._emit("rate",y._id)}}else return y=c._soundById(f),y?y._rate:c._rate;return c},seek:function(){var c=this,u=arguments,p,f;if(u.length===0)c._sounds.length&&(f=c._sounds[0]._id);else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):c._sounds.length&&(f=c._sounds[0]._id,p=parseFloat(u[0]))}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,u)}}),c;var y=c._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=c.playing(f);g&&c.pause(f,!0),y._seek=p,y._ended=!1,c._clearTimer(f),!c._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&c.play(f,!0),c._emit("seek",f)};if(g&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(c._webAudio){var w=c.playing(f)?t.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 c},playing:function(c){var u=this;if(typeof c=="number"){var p=u._soundById(c);return p?!p._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(c){var u=this,p=u._duration,f=u._soundById(c);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var c=this,u=c._sounds,p=0;p<u.length;p++)u[p]._paused||c.stop(u[p]._id),c._webAudio||(c._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(t._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),t._releaseHtml5Audio(u[p]._node)),delete u[p]._node,c._clearTimer(u[p]._id);var f=t._howls.indexOf(c);f>=0&&t._howls.splice(f,1);var h=!0;for(p=0;p<t._howls.length;p++)if(t._howls[p]._src===c._src||c._src.indexOf(t._howls[p]._src)>=0){h=!1;break}return o&&h&&delete o[c._src],t.noAudio=!1,c._state="unloaded",c._sounds=[],c=null,null},on:function(c,u,p,f){var h=this,m=h["_on"+c];return typeof u=="function"&&m.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),h},off:function(c,u,p){var f=this,h=f["_on"+c],m=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(m=0;m<h.length;m++){var y=p===h[m].id;if(u===h[m].fn&&y||!u&&y){h.splice(m,1);break}}else if(c)f["_on"+c]=[];else{var g=Object.keys(f);for(m=0;m<g.length;m++)g[m].indexOf("_on")===0&&Array.isArray(f[g[m]])&&(f[g[m]]=[])}return f},once:function(c,u,p){var f=this;return f.on(c,u,p,1),f},_emit:function(c,u,p){for(var f=this,h=f["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===u||c==="load")&&(setTimeout(function(y){y.call(this,u,p)}.bind(f,h[m].fn),0),h[m].once&&f.off(c,h[m].fn,h[m].id));return f._loadQueue(c),f},_loadQueue:function(c){var u=this;if(u._queue.length>0){var p=u._queue[0];p.event===c&&(u._queue.shift(),u._loadQueue()),c||p.action()}return u},_ended:function(c){var u=this,p=c._sprite;if(!u._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(u._ended.bind(u,c),100),u;var f=!!(c._loop||u._sprite[p][2]);if(u._emit("end",c._id),!u._webAudio&&f&&u.stop(c._id,!0).play(c._id),u._webAudio&&f){u._emit("play",c._id),c._seek=c._start||0,c._rateSeek=0,c._playStart=t.ctx.currentTime;var h=(c._stop-c._start)*1e3/Math.abs(c._rate);u._endTimers[c._id]=setTimeout(u._ended.bind(u,c),h)}return u._webAudio&&!f&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,u._clearTimer(c._id),u._cleanBuffer(c._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(c._id,!0),u},_clearTimer:function(c){var u=this;if(u._endTimers[c]){if(typeof u._endTimers[c]!="function")clearTimeout(u._endTimers[c]);else{var p=u._soundById(c);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[c],!1)}delete u._endTimers[c]}return u},_soundById:function(c){for(var u=this,p=0;p<u._sounds.length;p++)if(c===u._sounds[p]._id)return u._sounds[p];return null},_inactiveSound:function(){var c=this;c._drain();for(var u=0;u<c._sounds.length;u++)if(c._sounds[u]._ended)return c._sounds[u].reset();return new r(c)},_drain:function(){var c=this,u=c._pool,p=0,f=0;if(!(c._sounds.length<u)){for(f=0;f<c._sounds.length;f++)c._sounds[f]._ended&&p++;for(f=c._sounds.length-1;f>=0;f--){if(p<=u)return;c._sounds[f]._ended&&(c._webAudio&&c._sounds[f]._node&&c._sounds[f]._node.disconnect(0),c._sounds.splice(f,1),p--)}}},_getSoundIds:function(c){var u=this;if(typeof c>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[c]},_refreshBuffer:function(c){var u=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[u._src],c._panner?c._node.bufferSource.connect(c._panner):c._node.bufferSource.connect(c._node),c._node.bufferSource.loop=c._loop,c._loop&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop||0),c._node.bufferSource.playbackRate.setValueAtTime(c._rate,t.ctx.currentTime),u},_cleanBuffer:function(c){var u=this,p=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&c.bufferSource&&(c.bufferSource.onended=null,c.bufferSource.disconnect(0),p))try{c.bufferSource.buffer=t._scratchBuffer}catch{}return c.bufferSource=null,u},_clearSound:function(c){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(c){this._parent=c,this.init()};r.prototype={init:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,u._sounds.push(c),c.create(),c},create:function(){var c=this,u=c._parent,p=t._muted||c._muted||c._parent._muted?0:c._volume;return u._webAudio?(c._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),c._node.gain.setValueAtTime(p,t.ctx.currentTime),c._node.paused=!0,c._node.connect(t.masterGain)):t.noAudio||(c._node=t._obtainHtml5Audio(),c._errorFn=c._errorListener.bind(c),c._node.addEventListener("error",c._errorFn,!1),c._loadFn=c._loadListener.bind(c),c._node.addEventListener(t._canPlayEvent,c._loadFn,!1),c._endFn=c._endListener.bind(c),c._node.addEventListener("ended",c._endFn,!1),c._node.src=u._src,c._node.preload=u._preload===!0?"auto":u._preload,c._node.volume=p*t.volume(),c._node.load()),c},reset:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._rate,c._seek=0,c._rateSeek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,c},_errorListener:function(){var c=this;c._parent._emit("loaderror",c._id,c._node.error?c._node.error.code:0),c._node.removeEventListener("error",c._errorFn,!1)},_loadListener:function(){var c=this,u=c._parent;u._duration=Math.ceil(c._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,u=c._parent;u._duration===1/0&&(u._duration=Math.ceil(c._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var u=c._src;if(o[u]){c._duration=o[u].duration,l(c);return}if(/^data:[^;]+;base64,/.test(u)){for(var p=atob(u.split(",")[1]),f=new Uint8Array(p.length),h=0;h<p.length;++h)f[h]=p.charCodeAt(h);s(f.buffer,c)}else{var m=new XMLHttpRequest;m.open(c._xhr.method,u,!0),m.withCredentials=c._xhr.withCredentials,m.responseType="arraybuffer",c._xhr.headers&&Object.keys(c._xhr.headers).forEach(function(y){m.setRequestHeader(y,c._xhr.headers[y])}),m.onload=function(){var y=(m.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){c._emit("loaderror",null,"Failed loading audio file with status: "+m.status+".");return}s(m.response,c)},m.onerror=function(){c._webAudio&&(c._html5=!0,c._webAudio=!1,c._sounds=[],delete o[u],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(h){h&&u._sounds.length>0?(o[u._src]=h,l(u,h)):p()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(c).then(f).catch(p):t.ctx.decodeAudioData(c,f,p)},l=function(c,u){u&&!c._duration&&(c._duration=u.duration),Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue())},d=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var c=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[1],10):null;if(c&&p&&p<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof jc<"u"&&(jc.Howler=t,jc.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],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(t,e,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var l=s._orientation;if(e=typeof e!="number"?l[1]:e,r=typeof r!="number"?l[2]:r,o=typeof o!="number"?l[3]:o,i=typeof i!="number"?l[4]:i,a=typeof a!="number"?l[5]:a,typeof t=="number")s._orientation=[t,e,r,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,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(t,e,r,o,i,a);else return l;return s},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._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},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),a=0;a<i.length;a++){var s=r._soundById(i[a]);if(s)if(typeof t=="number")s._stereo=t,s._pos=[t,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(t,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(t,0,0):s._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",s._id);else return s._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._pos=[t,e,r],l._node&&((!l._panner||l._panner.pan)&&n(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setPosition(t,e,r)),i._emit("pos",l._id);else return l._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._orientation=[t,e,r],l._node&&(l._panner||(l._pos||(l._pos=i._pos||[0,0,-.5]),n(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setOrientation(t,e,r)),i._emit("orientation",l._id);else return l._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var a=t._getSoundIds(o),s=0;s<a.length;s++)if(i=t._soundById(a[s]),i){var l=i._pannerAttr;l={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:l.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:l.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:l.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:l.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:l.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:l.panningModel};var d=i._panner;d?(d.coneInnerAngle=l.coneInnerAngle,d.coneOuterAngle=l.coneOuterAngle,d.coneOuterGain=l.coneOuterGain,d.distanceModel=l.distanceModel,d.maxDistance=l.maxDistance,d.refDistance=l.refDistance,d.rolloffFactor=l.rolloffFactor,d.panningModel=l.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Ux=qt((Yre,jx)=>{"use strict";function pI(n){for(var t=new Array(n),e=0;e<n;++e)t[e]=e;return t}jx.exports=pI});var Wx=qt((Xre,qx)=>{qx.exports=function(n){return n!=null&&(Hx(n)||fI(n)||!!n._isBuffer)};function Hx(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function fI(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&Hx(n.slice(0,0))}});var Ua=qt((Kre,$x)=>{var hI=Ux(),mI=Wx(),yI=typeof Float64Array<"u";function gI(n,t){return n[0]-t[0]}function xI(){var n=this.stride,t=new Array(n.length),e;for(e=0;e<t.length;++e)t[e]=[Math.abs(n[e]),e];t.sort(gI);var r=new Array(t.length);for(e=0;e<r.length;++e)r[e]=t[e][1];return r}function vI(n,t){var e=["View",t,"d",n].join("");t<0&&(e="View_Nil"+n);var r=n==="generic";if(t===-1){var o="function "+e+"(a){this.data=a;};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+e+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+e+"(a){return new "+e+"(a);}",m=new Function(o);return m()}else if(t===0){var o="function "+e+"(a,d) {this.data = a;this.offset = d};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+e+"_copy() {return new "+e+"(this.data,this.offset)};proto.pick=function "+e+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+e+"_get(){return "+(r?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+e+"_set(v){return "+(r?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+e+"(a,b,c,d){return new "+e+"(a,d)}",m=new Function("TrivialArray",o);return m(cu[n][0])}var o=["'use strict'"],i=hI(t),a=i.map(function(y){return"i"+y}),s="this.offset+"+i.map(function(y){return"this.stride["+y+"]*i"+y}).join("+"),l=i.map(function(y){return"b"+y}).join(","),d=i.map(function(y){return"c"+y}).join(",");o.push("function "+e+"(a,"+l+","+d+",d){this.data=a","this.shape=["+l+"]","this.stride=["+d+"]","this.offset=d|0}","var proto="+e+".prototype","proto.dtype='"+n+"'","proto.dimension="+t),o.push("Object.defineProperty(proto,'size',{get:function "+e+"_size(){return "+i.map(function(y){return"this.shape["+y+"]"}).join("*"),"}})"),t===1?o.push("proto.order=[0]"):(o.push("Object.defineProperty(proto,'order',{get:"),t<4?(o.push("function "+e+"_order(){"),t===2?o.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):t===3&&o.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):o.push("ORDER})")),o.push("proto.set=function "+e+"_set("+a.join(",")+",v){"),r?o.push("return this.data.set("+s+",v)}"):o.push("return this.data["+s+"]=v}"),o.push("proto.get=function "+e+"_get("+a.join(",")+"){"),r?o.push("return this.data.get("+s+")}"):o.push("return this.data["+s+"]}"),o.push("proto.index=function "+e+"_index(",a.join(),"){return "+s+"}"),o.push("proto.hi=function "+e+"_hi("+a.join(",")+"){return new "+e+"(this.data,"+i.map(function(y){return["(typeof i",y,"!=='number'||i",y,"<0)?this.shape[",y,"]:i",y,"|0"].join("")}).join(",")+","+i.map(function(y){return"this.stride["+y+"]"}).join(",")+",this.offset)}");var c=i.map(function(y){return"a"+y+"=this.shape["+y+"]"}),u=i.map(function(y){return"c"+y+"=this.stride["+y+"]"});o.push("proto.lo=function "+e+"_lo("+a.join(",")+"){var b=this.offset,d=0,"+c.join(",")+","+u.join(","));for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){d=i"+p+"|0;b+=c"+p+"*d;a"+p+"-=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"c"+y}).join(",")+",b)}"),o.push("proto.step=function "+e+"_step("+a.join(",")+"){var "+i.map(function(y){return"a"+y+"=this.shape["+y+"]"}).join(",")+","+i.map(function(y){return"b"+y+"=this.stride["+y+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'){d=i"+p+"|0;if(d<0){c+=b"+p+"*(a"+p+"-1);a"+p+"=ceil(-a"+p+"/d)}else{a"+p+"=ceil(a"+p+"/d)}b"+p+"*=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"b"+y}).join(",")+",c)}");for(var f=new Array(t),h=new Array(t),p=0;p<t;++p)f[p]="a[i"+p+"]",h[p]="b[i"+p+"]";o.push("proto.transpose=function "+e+"_transpose("+a+"){"+a.map(function(y,g){return y+"=("+y+"===undefined?"+g+":"+y+"|0)"}).join(";"),"var a=this.shape,b=this.stride;return new "+e+"(this.data,"+f.join(",")+","+h.join(",")+",this.offset)}"),o.push("proto.pick=function "+e+"_pick("+a+"){var a=[],b=[],c=this.offset");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){c=(c+this.stride["+p+"]*i"+p+")|0}else{a.push(this.shape["+p+"]);b.push(this.stride["+p+"])}");o.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),o.push("return function construct_"+e+"(data,shape,stride,offset){return new "+e+"(data,"+i.map(function(y){return"shape["+y+"]"}).join(",")+","+i.map(function(y){return"stride["+y+"]"}).join(",")+",offset)}");var m=new Function("CTOR_LIST","ORDER",o.join(`
2
+ `));return m(cu[n],xI)}function bI(n){if(mI(n))return"buffer";if(yI)switch(Object.prototype.toString.call(n)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(n)?"array":"generic"}var cu={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};function SI(n,t,e,r){if(n===void 0){var d=cu.array[0];return d([])}else typeof n=="number"&&(n=[n]);t===void 0&&(t=[n.length]);var o=t.length;if(e===void 0){e=new Array(o);for(var i=o-1,a=1;i>=0;--i)e[i]=a,a*=t[i]}if(r===void 0){r=0;for(var i=0;i<o;++i)e[i]<0&&(r-=(t[i]-1)*e[i])}for(var s=bI(n),l=cu[s];l.length<=o+1;)l.push(vI(s,l.length-1));var d=l[o+1];return d(n,t,e,r)}$x.exports=SI});var Xx=qt((Qre,Yx)=>{"use strict";function wI(n,t){for(var e=1,r=n.length,o=n[0],i=n[0],a=1;a<r;++a)if(i=o,o=n[a],t(o,i)){if(a===e){e++;continue}n[e++]=o}return n.length=e,n}function _I(n){for(var t=1,e=n.length,r=n[0],o=n[0],i=1;i<e;++i,o=r)if(o=r,r=n[i],r!==o){if(i===t){t++;continue}n[t++]=r}return n.length=t,n}function AI(n,t,e){return n.length===0?n:t?(e||n.sort(t),wI(n,t)):(e||n.sort(),_I(n))}Yx.exports=AI});var Zx=qt((Zre,Qx)=>{"use strict";var TI=Xx();function Kx(n,t,e){var r=n.length,o=t.arrayArgs.length,i=t.indexArgs.length>0,a=[],s=[],l=0,d=0,c,u;for(c=0;c<r;++c)s.push(["i",c,"=0"].join(""));for(u=0;u<o;++u)for(c=0;c<r;++c)d=l,l=n[c],c===0?s.push(["d",u,"s",c,"=t",u,"p",l].join("")):s.push(["d",u,"s",c,"=(t",u,"p",l,"-s",d,"*t",u,"p",d,")"].join(""));for(s.length>0&&a.push("var "+s.join(",")),c=r-1;c>=0;--c)l=n[c],a.push(["for(i",c,"=0;i",c,"<s",l,";++i",c,"){"].join(""));for(a.push(e),c=0;c<r;++c){for(d=l,l=n[c],u=0;u<o;++u)a.push(["p",u,"+=d",u,"s",c].join(""));i&&(c>0&&a.push(["index[",d,"]-=s",d].join("")),a.push(["++index[",l,"]"].join(""))),a.push("}")}return a.join(`
3
+ `)}function CI(n,t,e,r){for(var o=t.length,i=e.arrayArgs.length,a=e.blockSize,s=e.indexArgs.length>0,l=[],d=0;d<i;++d)l.push(["var offset",d,"=p",d].join(""));for(var d=n;d<o;++d)l.push(["for(var j"+d+"=SS[",t[d],"]|0;j",d,">0;){"].join("")),l.push(["if(j",d,"<",a,"){"].join("")),l.push(["s",t[d],"=j",d].join("")),l.push(["j",d,"=0"].join("")),l.push(["}else{s",t[d],"=",a].join("")),l.push(["j",d,"-=",a,"}"].join("")),s&&l.push(["index[",t[d],"]=j",d].join(""));for(var d=0;d<i;++d){for(var c=["offset"+d],u=n;u<o;++u)c.push(["j",u,"*t",d,"p",t[u]].join(""));l.push(["p",d,"=(",c.join("+"),")"].join(""))}l.push(Kx(t,e,r));for(var d=n;d<o;++d)l.push("}");return l.join(`
4
+ `)}function PI(n){for(var t=0,e=n[0].length;t<e;){for(var r=1;r<n.length;++r)if(n[r][t]!==n[0][t])return t;++t}return t}function jp(n,t,e){for(var r=n.body,o=[],i=[],a=0;a<n.args.length;++a){var s=n.args[a];if(!(s.count<=0)){var l=new RegExp(s.name,"g"),d="",c=t.arrayArgs.indexOf(a);switch(t.argTypes[a]){case"offset":var u=t.offsetArgIndex.indexOf(a),p=t.offsetArgs[u];c=p.array,d="+q"+u;case"array":d="p"+c+d;var f="l"+a,h="a"+c;if(t.arrayBlockIndices[c]===0)s.count===1?e[c]==="generic"?s.lvalue?(o.push(["var ",f,"=",h,".get(",d,")"].join("")),r=r.replace(l,f),i.push([h,".set(",d,",",f,")"].join(""))):r=r.replace(l,[h,".get(",d,")"].join("")):r=r.replace(l,[h,"[",d,"]"].join("")):e[c]==="generic"?(o.push(["var ",f,"=",h,".get(",d,")"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,".set(",d,",",f,")"].join(""))):(o.push(["var ",f,"=",h,"[",d,"]"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,"[",d,"]=",f].join("")));else{for(var m=[s.name],y=[d],g=0;g<Math.abs(t.arrayBlockIndices[c]);g++)m.push("\\s*\\[([^\\]]+)\\]"),y.push("$"+(g+1)+"*t"+c+"b"+g);if(l=new RegExp(m.join(""),"g"),d=y.join("+"),e[c]==="generic")throw new Error("cwise: Generic arrays not supported in combination with blocks!");r=r.replace(l,[h,"[",d,"]"].join(""))}break;case"scalar":r=r.replace(l,"Y"+t.scalarArgs.indexOf(a));break;case"index":r=r.replace(l,"index");break;case"shape":r=r.replace(l,"shape");break}}}return[o.join(`
5
+ `),r,i.join(`
6
+ `)].join(`
7
+ `).trim()}function OI(n){for(var t=new Array(n.length),e=!0,r=0;r<n.length;++r){var o=n[r],i=o.match(/\d+/);i?i=i[0]:i="",o.charAt(0)===0?t[r]="u"+o.charAt(1)+i:t[r]=o.charAt(0)+i,r>0&&(e=e&&t[r]===t[r-1])}return e?t[0]:t.join("")}function MI(n,t){for(var e=t[1].length-Math.abs(n.arrayBlockIndices[0])|0,r=new Array(n.arrayArgs.length),o=new Array(n.arrayArgs.length),i=0;i<n.arrayArgs.length;++i)o[i]=t[2*i],r[i]=t[2*i+1];for(var a=[],s=[],l=[],d=[],c=[],i=0;i<n.arrayArgs.length;++i){n.arrayBlockIndices[i]<0?(l.push(0),d.push(e),a.push(e),s.push(e+n.arrayBlockIndices[i])):(l.push(n.arrayBlockIndices[i]),d.push(n.arrayBlockIndices[i]+e),a.push(0),s.push(n.arrayBlockIndices[i]));for(var u=[],p=0;p<r[i].length;p++)l[i]<=r[i][p]&&r[i][p]<d[i]&&u.push(r[i][p]-l[i]);c.push(u)}for(var f=["SS"],h=["'use strict'"],m=[],p=0;p<e;++p)m.push(["s",p,"=SS[",p,"]"].join(""));for(var i=0;i<n.arrayArgs.length;++i){f.push("a"+i),f.push("t"+i),f.push("p"+i);for(var p=0;p<e;++p)m.push(["t",i,"p",p,"=t",i,"[",l[i]+p,"]"].join(""));for(var p=0;p<Math.abs(n.arrayBlockIndices[i]);++p)m.push(["t",i,"b",p,"=t",i,"[",a[i]+p,"]"].join(""))}for(var i=0;i<n.scalarArgs.length;++i)f.push("Y"+i);if(n.shapeArgs.length>0&&m.push("shape=SS.slice(0)"),n.indexArgs.length>0){for(var y=new Array(e),i=0;i<e;++i)y[i]="0";m.push(["index=[",y.join(","),"]"].join(""))}for(var i=0;i<n.offsetArgs.length;++i){for(var g=n.offsetArgs[i],x=[],p=0;p<g.offset.length;++p)g.offset[p]!==0&&(g.offset[p]===1?x.push(["t",g.array,"p",p].join("")):x.push([g.offset[p],"*t",g.array,"p",p].join("")));x.length===0?m.push("q"+i+"=0"):m.push(["q",i,"=",x.join("+")].join(""))}var S=TI([].concat(n.pre.thisVars).concat(n.body.thisVars).concat(n.post.thisVars));m=m.concat(S),m.length>0&&h.push("var "+m.join(","));for(var i=0;i<n.arrayArgs.length;++i)h.push("p"+i+"|=0");n.pre.body.length>3&&h.push(jp(n.pre,n,o));var w=jp(n.body,n,o),b=PI(c);b<e?h.push(CI(b,c[0],n,w)):h.push(Kx(c[0],n,w)),n.post.body.length>3&&h.push(jp(n.post,n,o)),n.debug&&console.log("-----Generated cwise routine for ",t,`:
8
+ `+h.join(`
9
+ `)+`
10
+ ----------`);var _=[n.funcName||"unnamed","_cwise_loop_",r[0].join("s"),"m",b,OI(o)].join(""),A=new Function(["function ",_,"(",f.join(","),"){",h.join(`
11
+ `),"} return ",_].join(""));return A()}Qx.exports=MI});var ev=qt((Jre,Jx)=>{"use strict";var II=Zx();function NI(n){var t=["'use strict'","var CACHED={}"],e=[],r=n.funcName+"_cwise_thunk";t.push(["return function ",r,"(",n.shimArgs.join(","),"){"].join(""));for(var o=[],i=[],a=[["array",n.arrayArgs[0],".shape.slice(",Math.max(0,n.arrayBlockIndices[0]),n.arrayBlockIndices[0]<0?","+n.arrayBlockIndices[0]+")":")"].join("")],s=[],l=[],d=0;d<n.arrayArgs.length;++d){var c=n.arrayArgs[d];e.push(["t",c,"=array",c,".dtype,","r",c,"=array",c,".order"].join("")),o.push("t"+c),o.push("r"+c),i.push("t"+c),i.push("r"+c+".join()"),a.push("array"+c+".data"),a.push("array"+c+".stride"),a.push("array"+c+".offset|0"),d>0&&(s.push("array"+n.arrayArgs[0]+".shape.length===array"+c+".shape.length+"+(Math.abs(n.arrayBlockIndices[0])-Math.abs(n.arrayBlockIndices[d]))),l.push("array"+n.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[0])+"]===array"+c+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[d])+"]"))}n.arrayArgs.length>1&&(t.push("if (!("+s.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),t.push("for(var shapeIndex=array"+n.arrayArgs[0]+".shape.length-"+Math.abs(n.arrayBlockIndices[0])+"; shapeIndex-->0;) {"),t.push("if (!("+l.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),t.push("}"));for(var d=0;d<n.scalarArgs.length;++d)a.push("scalar"+n.scalarArgs[d]);e.push(["type=[",i.join(","),"].join()"].join("")),e.push("proc=CACHED[type]"),t.push("var "+e.join(",")),t.push(["if(!proc){","CACHED[type]=proc=compile([",o.join(","),"])}","return proc(",a.join(","),")}"].join("")),n.debug&&console.log(`-----Generated thunk:
12
+ `+t.join(`
13
+ `)+`
14
+ ----------`);var u=new Function("compile",t.join(`
15
+ `));return u(II.bind(void 0,n))}Jx.exports=NI});var rv=qt((eoe,tv)=>{"use strict";var EI=ev();function DI(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function LI(n){var t=new DI;t.pre=n.pre,t.body=n.body,t.post=n.post;var e=n.args.slice(0);t.argTypes=e;for(var r=0;r<e.length;++r){var o=e[r];if(o==="array"||typeof o=="object"&&o.blockIndices){if(t.argTypes[r]="array",t.arrayArgs.push(r),t.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),t.shimArgs.push("array"+r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array args");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array args")}else if(o==="scalar")t.scalarArgs.push(r),t.shimArgs.push("scalar"+r);else if(o==="index"){if(t.indexArgs.push(r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array index");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array index");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array index")}else if(o==="shape"){if(t.shapeArgs.push(r),r<t.pre.args.length&&t.pre.args[r].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array shape");if(r<t.post.args.length&&t.post.args[r].lvalue)throw new Error("cwise: post() block may not write to array shape")}else if(typeof o=="object"&&o.offset)t.argTypes[r]="offset",t.offsetArgs.push({array:o.array,offset:o.offset}),t.offsetArgIndex.push(r);else throw new Error("cwise: Unknown argument type "+e[r])}if(t.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(t.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(t.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(t.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return t.debug=!!n.printCode||!!n.debug,t.funcName=n.funcName||"cwise",t.blockSize=n.blockSize||64,EI(t)}tv.exports=LI});var Ha=qt(Te=>{"use strict";var er=rv(),uu={body:"",args:[],thisVars:[],localVars:[]};function Up(n){if(!n)return uu;for(var t=0;t<n.args.length;++t){var e=n.args[t];t===0?n.args[t]={name:e,lvalue:!0,rvalue:!!n.rvalue,count:n.count||1}:n.args[t]={name:e,lvalue:!1,rvalue:!0,count:1}}return n.thisVars||(n.thisVars=[]),n.localVars||(n.localVars=[]),n}function BI(n){return er({args:n.args,pre:Up(n.pre),body:Up(n.body),post:Up(n.proc),funcName:n.funcName})}function Qe(n){for(var t=[],e=0;e<n.args.length;++e)t.push("a"+e);var r=new Function("P",["return function ",n.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""));return r(BI(n))}var ov={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in ov){var t=ov[n];Te[n]=Qe({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"eq"]=Qe({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Te[n+"s"]=Qe({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"seq"]=Qe({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var nv={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in nv){var t=nv[n];Te[n]=Qe({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Te[n+"eq"]=Qe({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var iv={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in iv){var t=iv[n];Te[n]=Qe({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Te[n+"s"]=Qe({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Te[n+"eq"]=Qe({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Te[n+"seq"]=Qe({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var av=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<av.length;++n){var t=av[n];Te[t]=Qe({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),Te[t+"eq"]=Qe({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}})();var sv=["max","min","atan2","pow"];(function(){for(var n=0;n<sv.length;++n){var t=sv[n];Te[t]=Qe({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),Te[t+"s"]=Qe({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),Te[t+"eq"]=Qe({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),Te[t+"seq"]=Qe({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}})();var lv=["atan2","pow"];(function(){for(var n=0;n<lv.length;++n){var t=lv[n];Te[t+"op"]=Qe({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),Te[t+"ops"]=Qe({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),Te[t+"opeq"]=Qe({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),Te[t+"opseq"]=Qe({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}})();Te.any=er({args:["array"],pre:uu,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});Te.all=er({args:["array"],pre:uu,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});Te.sum=er({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});Te.prod=er({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});Te.norm2squared=er({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});Te.norm2=er({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});Te.norminf=er({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});Te.norm1=er({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});Te.sup=er({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.inf=er({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Te.argmin=er({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.argmax=er({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Te.random=Qe({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});Te.assign=Qe({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Te.assigns=Qe({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Te.equals=er({args:["array","array"],pre:uu,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})});var Lv=qt((zie,Dv)=>{Dv.exports=function(t,e){for(var r=t.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(r[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}});import{FileLoader as vN,Loader as bN}from"three";function Jp(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function Wt(n,t){return Object.setPrototypeOf(n,t),n}function $s(n){return Array.isArray(n)?n:[n]}function ef(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Jv=typeof global=="object"&&global&&global.Object===Object&&global,Ys=Jv;var eb=typeof self=="object"&&self&&self.Object===Object&&self,tb=Ys||eb||Function("return this")(),lt=tb;var rb=lt.Symbol,gt=rb;var tf=Object.prototype,ob=tf.hasOwnProperty,nb=tf.toString,Wa=gt?gt.toStringTag:void 0;function ib(n){var t=ob.call(n,Wa),e=n[Wa];try{n[Wa]=void 0;var r=!0}catch{}var o=nb.call(n);return r&&(t?n[Wa]=e:delete n[Wa]),o}var rf=ib;var ab=Object.prototype,sb=ab.toString;function lb(n){return sb.call(n)}var of=lb;var cb="[object Null]",ub="[object Undefined]",nf=gt?gt.toStringTag:void 0;function db(n){return n==null?n===void 0?ub:cb:nf&&nf in Object(n)?rf(n):of(n)}var rr=db;function pb(n){return n!=null&&typeof n=="object"}var Ct=pb;var fb="[object Symbol]";function hb(n){return typeof n=="symbol"||Ct(n)&&rr(n)==fb}var Zn=hb;function mb(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Xs=mb;var yb=Array.isArray,Ze=yb;var gb=1/0,af=gt?gt.prototype:void 0,sf=af?af.toString:void 0;function lf(n){if(typeof n=="string")return n;if(Ze(n))return Xs(n,lf)+"";if(Zn(n))return sf?sf.call(n):"";var t=n+"";return t=="0"&&1/n==-gb?"-0":t}var cf=lf;function xb(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var or=xb;function vb(n){return n}var uf=vb;var bb="[object AsyncFunction]",Sb="[object Function]",wb="[object GeneratorFunction]",_b="[object Proxy]";function Ab(n){if(!or(n))return!1;var t=rr(n);return t==Sb||t==wb||t==bb||t==_b}var Ks=Ab;var Tb=lt["__core-js_shared__"],Qs=Tb;var df=function(){var n=/[^.]+$/.exec(Qs&&Qs.keys&&Qs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Cb(n){return!!df&&df in n}var pf=Cb;var Pb=Function.prototype,Ob=Pb.toString;function Mb(n){if(n!=null){try{return Ob.call(n)}catch{}try{return n+""}catch{}}return""}var po=Mb;var Ib=/[\\^$.*+?()[\]{}|]/g,Nb=/^\[object .+?Constructor\]$/,Eb=Function.prototype,Db=Object.prototype,Lb=Eb.toString,Bb=Db.hasOwnProperty,Rb=RegExp("^"+Lb.call(Bb).replace(Ib,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Vb(n){if(!or(n)||pf(n))return!1;var t=Ks(n)?Rb:Nb;return t.test(po(n))}var ff=Vb;function Gb(n,t){return n?.[t]}var hf=Gb;function zb(n,t){var e=hf(n,t);return ff(e)?e:void 0}var $t=zb;var kb=$t(lt,"WeakMap"),Zs=kb;var mf=Object.create,Fb=function(){function n(){}return function(t){if(!or(t))return{};if(mf)return mf(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),yf=Fb;function jb(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var gf=jb;function Ub(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var xf=Ub;var Hb=800,qb=16,Wb=Date.now;function $b(n){var t=0,e=0;return function(){var r=Wb(),o=qb-(r-e);if(e=r,o>0){if(++t>=Hb)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var vf=$b;function Yb(n){return function(){return n}}var bf=Yb;var Xb=function(){try{var n=$t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Jn=Xb;var Kb=Jn?function(n,t){return Jn(n,"toString",{configurable:!0,enumerable:!1,value:bf(t),writable:!0})}:uf,Sf=Kb;var Qb=vf(Sf),wf=Qb;function Zb(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var _f=Zb;var Jb=9007199254740991,eS=/^(?:0|[1-9]\d*)$/;function tS(n,t){var e=typeof n;return t=t??Jb,!!t&&(e=="number"||e!="symbol"&&eS.test(n))&&n>-1&&n%1==0&&n<t}var ei=tS;function rS(n,t,e){t=="__proto__"&&Jn?Jn(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Js=rS;function oS(n,t){return n===t||n!==n&&t!==t}var ti=oS;var nS=Object.prototype,iS=nS.hasOwnProperty;function aS(n,t,e){var r=n[t];(!(iS.call(n,t)&&ti(r,e))||e===void 0&&!(t in n))&&Js(n,t,e)}var ri=aS;function sS(n,t,e,r){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=r?r(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Js(e,s,l):ri(e,s,l)}return e}var Rr=sS;var Af=Math.max;function lS(n,t,e){return t=Af(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Af(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),gf(n,this,s)}}var Tf=lS;var cS=9007199254740991;function uS(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=cS}var oi=uS;function dS(n){return n!=null&&oi(n.length)&&!Ks(n)}var el=dS;var pS=Object.prototype;function fS(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||pS;return n===e}var ni=fS;function hS(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Cf=hS;var mS="[object Arguments]";function yS(n){return Ct(n)&&rr(n)==mS}var yu=yS;var Pf=Object.prototype,gS=Pf.hasOwnProperty,xS=Pf.propertyIsEnumerable,vS=yu(function(){return arguments}())?yu:function(n){return Ct(n)&&gS.call(n,"callee")&&!xS.call(n,"callee")},ii=vS;function bS(){return!1}var Of=bS;var Nf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Mf=Nf&&typeof module=="object"&&module&&!module.nodeType&&module,SS=Mf&&Mf.exports===Nf,If=SS?lt.Buffer:void 0,wS=If?If.isBuffer:void 0,_S=wS||Of,xn=_S;var AS="[object Arguments]",TS="[object Array]",CS="[object Boolean]",PS="[object Date]",OS="[object Error]",MS="[object Function]",IS="[object Map]",NS="[object Number]",ES="[object Object]",DS="[object RegExp]",LS="[object Set]",BS="[object String]",RS="[object WeakMap]",VS="[object ArrayBuffer]",GS="[object DataView]",zS="[object Float32Array]",kS="[object Float64Array]",FS="[object Int8Array]",jS="[object Int16Array]",US="[object Int32Array]",HS="[object Uint8Array]",qS="[object Uint8ClampedArray]",WS="[object Uint16Array]",$S="[object Uint32Array]",qe={};qe[zS]=qe[kS]=qe[FS]=qe[jS]=qe[US]=qe[HS]=qe[qS]=qe[WS]=qe[$S]=!0;qe[AS]=qe[TS]=qe[VS]=qe[CS]=qe[GS]=qe[PS]=qe[OS]=qe[MS]=qe[IS]=qe[NS]=qe[ES]=qe[DS]=qe[LS]=qe[BS]=qe[RS]=!1;function YS(n){return Ct(n)&&oi(n.length)&&!!qe[rr(n)]}var Ef=YS;function XS(n){return function(t){return n(t)}}var ai=XS;var Df=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$a=Df&&typeof module=="object"&&module&&!module.nodeType&&module,KS=$a&&$a.exports===Df,gu=KS&&Ys.process,QS=function(){try{var n=$a&&$a.require&&$a.require("util").types;return n||gu&&gu.binding&&gu.binding("util")}catch{}}(),fo=QS;var Lf=fo&&fo.isTypedArray,ZS=Lf?ai(Lf):Ef,tl=ZS;var JS=Object.prototype,e1=JS.hasOwnProperty;function t1(n,t){var e=Ze(n),r=!e&&ii(n),o=!e&&!r&&xn(n),i=!e&&!r&&!o&&tl(n),a=e||r||o||i,s=a?Cf(n.length,String):[],l=s.length;for(var d in n)(t||e1.call(n,d))&&!(a&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||ei(d,l)))&&s.push(d);return s}var rl=t1;function r1(n,t){return function(e){return n(t(e))}}var ol=r1;var o1=ol(Object.keys,Object),Bf=o1;var n1=Object.prototype,i1=n1.hasOwnProperty;function a1(n){if(!ni(n))return Bf(n);var t=[];for(var e in Object(n))i1.call(n,e)&&e!="constructor"&&t.push(e);return t}var Rf=a1;function s1(n){return el(n)?rl(n):Rf(n)}var si=s1;function l1(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Vf=l1;var c1=Object.prototype,u1=c1.hasOwnProperty;function d1(n){if(!or(n))return Vf(n);var t=ni(n),e=[];for(var r in n)r=="constructor"&&(t||!u1.call(n,r))||e.push(r);return e}var Gf=d1;function p1(n){return el(n)?rl(n,!0):Gf(n)}var li=p1;var f1=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h1=/^\w*$/;function m1(n,t){if(Ze(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Zn(n)?!0:h1.test(n)||!f1.test(n)||t!=null&&n in Object(t)}var zf=m1;var y1=$t(Object,"create"),ho=y1;function g1(){this.__data__=ho?ho(null):{},this.size=0}var kf=g1;function x1(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Ff=x1;var v1="__lodash_hash_undefined__",b1=Object.prototype,S1=b1.hasOwnProperty;function w1(n){var t=this.__data__;if(ho){var e=t[n];return e===v1?void 0:e}return S1.call(t,n)?t[n]:void 0}var jf=w1;var _1=Object.prototype,A1=_1.hasOwnProperty;function T1(n){var t=this.__data__;return ho?t[n]!==void 0:A1.call(t,n)}var Uf=T1;var C1="__lodash_hash_undefined__";function P1(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=ho&&t===void 0?C1:t,this}var Hf=P1;function ci(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}ci.prototype.clear=kf;ci.prototype.delete=Ff;ci.prototype.get=jf;ci.prototype.has=Uf;ci.prototype.set=Hf;var xu=ci;function O1(){this.__data__=[],this.size=0}var qf=O1;function M1(n,t){for(var e=n.length;e--;)if(ti(n[e][0],t))return e;return-1}var Eo=M1;var I1=Array.prototype,N1=I1.splice;function E1(n){var t=this.__data__,e=Eo(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():N1.call(t,e,1),--this.size,!0}var Wf=E1;function D1(n){var t=this.__data__,e=Eo(t,n);return e<0?void 0:t[e][1]}var $f=D1;function L1(n){return Eo(this.__data__,n)>-1}var Yf=L1;function B1(n,t){var e=this.__data__,r=Eo(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Xf=B1;function ui(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}ui.prototype.clear=qf;ui.prototype.delete=Wf;ui.prototype.get=$f;ui.prototype.has=Yf;ui.prototype.set=Xf;var Do=ui;var R1=$t(lt,"Map"),Lo=R1;function V1(){this.size=0,this.__data__={hash:new xu,map:new(Lo||Do),string:new xu}}var Kf=V1;function G1(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Qf=G1;function z1(n,t){var e=n.__data__;return Qf(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Bo=z1;function k1(n){var t=Bo(this,n).delete(n);return this.size-=t?1:0,t}var Zf=k1;function F1(n){return Bo(this,n).get(n)}var Jf=F1;function j1(n){return Bo(this,n).has(n)}var eh=j1;function U1(n,t){var e=Bo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var th=U1;function di(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}di.prototype.clear=Kf;di.prototype.delete=Zf;di.prototype.get=Jf;di.prototype.has=eh;di.prototype.set=th;var vn=di;var H1="Expected a function";function vu(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(H1);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,r);return e.cache=i.set(o,a)||i,a};return e.cache=new(vu.Cache||vn),e}vu.Cache=vn;var rh=vu;var q1=500;function W1(n){var t=rh(n,function(r){return e.size===q1&&e.clear(),r}),e=t.cache;return t}var oh=W1;var $1=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Y1=/\\(\\)?/g,X1=oh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace($1,function(e,r,o,i){t.push(o?i.replace(Y1,"$1"):r||e)}),t}),nh=X1;function K1(n){return n==null?"":cf(n)}var ih=K1;function Q1(n,t){return Ze(n)?n:zf(n,t)?[n]:nh(ih(n))}var cr=Q1;var Z1=1/0;function J1(n){if(typeof n=="string"||Zn(n))return n;var t=n+"";return t=="0"&&1/n==-Z1?"-0":t}var Ro=J1;function ew(n,t){t=cr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Ro(t[e++])];return e&&e==r?n:void 0}var nl=ew;function tw(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var pi=tw;var ah=gt?gt.isConcatSpreadable:void 0;function rw(n){return Ze(n)||ii(n)||!!(ah&&n&&n[ah])}var sh=rw;function lh(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=sh),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?lh(s,t-1,e,r,o):pi(o,s):r||(o[o.length]=s)}return o}var ch=lh;function ow(n){var t=n==null?0:n.length;return t?ch(n,1):[]}var uh=ow;function nw(n){return wf(Tf(n,void 0,uh),n+"")}var il=nw;var iw=ol(Object.getPrototypeOf,Object),fi=iw;var aw="[object Object]",sw=Function.prototype,lw=Object.prototype,dh=sw.toString,cw=lw.hasOwnProperty,uw=dh.call(Object);function dw(n){if(!Ct(n)||rr(n)!=aw)return!1;var t=fi(n);if(t===null)return!0;var e=cw.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&dh.call(e)==uw}var ph=dw;function pw(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var fh=pw;function fw(){this.__data__=new Do,this.size=0}var hh=fw;function hw(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var mh=hw;function mw(n){return this.__data__.get(n)}var yh=mw;function yw(n){return this.__data__.has(n)}var gh=yw;var gw=200;function xw(n,t){var e=this.__data__;if(e instanceof Do){var r=e.__data__;if(!Lo||r.length<gw-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new vn(r)}return e.set(n,t),this.size=e.size,this}var xh=xw;function hi(n){var t=this.__data__=new Do(n);this.size=t.size}hi.prototype.clear=hh;hi.prototype.delete=mh;hi.prototype.get=yh;hi.prototype.has=gh;hi.prototype.set=xh;var mi=hi;function vw(n,t){return n&&Rr(t,si(t),n)}var vh=vw;function bw(n,t){return n&&Rr(t,li(t),n)}var bh=bw;var Ah=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sh=Ah&&typeof module=="object"&&module&&!module.nodeType&&module,Sw=Sh&&Sh.exports===Ah,wh=Sw?lt.Buffer:void 0,_h=wh?wh.allocUnsafe:void 0;function ww(n,t){if(t)return n.slice();var e=n.length,r=_h?_h(e):new n.constructor(e);return n.copy(r),r}var Th=ww;function _w(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var a=n[e];t(a,e,n)&&(i[o++]=a)}return i}var Ch=_w;function Aw(){return[]}var al=Aw;var Tw=Object.prototype,Cw=Tw.propertyIsEnumerable,Ph=Object.getOwnPropertySymbols,Pw=Ph?function(n){return n==null?[]:(n=Object(n),Ch(Ph(n),function(t){return Cw.call(n,t)}))}:al,yi=Pw;function Ow(n,t){return Rr(n,yi(n),t)}var Oh=Ow;var Mw=Object.getOwnPropertySymbols,Iw=Mw?function(n){for(var t=[];n;)pi(t,yi(n)),n=fi(n);return t}:al,sl=Iw;function Nw(n,t){return Rr(n,sl(n),t)}var Mh=Nw;function Ew(n,t,e){var r=t(n);return Ze(n)?r:pi(r,e(n))}var ll=Ew;function Dw(n){return ll(n,si,yi)}var Ya=Dw;function Lw(n){return ll(n,li,sl)}var cl=Lw;var Bw=$t(lt,"DataView"),ul=Bw;var Rw=$t(lt,"Promise"),dl=Rw;var Vw=$t(lt,"Set"),pl=Vw;var Ih="[object Map]",Gw="[object Object]",Nh="[object Promise]",Eh="[object Set]",Dh="[object WeakMap]",Lh="[object DataView]",zw=po(ul),kw=po(Lo),Fw=po(dl),jw=po(pl),Uw=po(Zs),bn=rr;(ul&&bn(new ul(new ArrayBuffer(1)))!=Lh||Lo&&bn(new Lo)!=Ih||dl&&bn(dl.resolve())!=Nh||pl&&bn(new pl)!=Eh||Zs&&bn(new Zs)!=Dh)&&(bn=function(n){var t=rr(n),e=t==Gw?n.constructor:void 0,r=e?po(e):"";if(r)switch(r){case zw:return Lh;case kw:return Ih;case Fw:return Nh;case jw:return Eh;case Uw:return Dh}return t});var mo=bn;var Hw=Object.prototype,qw=Hw.hasOwnProperty;function Ww(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&qw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Bh=Ww;var $w=lt.Uint8Array,gi=$w;function Yw(n){var t=new n.constructor(n.byteLength);return new gi(t).set(new gi(n)),t}var xi=Yw;function Xw(n,t){var e=t?xi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Rh=Xw;var Kw=/\w*$/;function Qw(n){var t=new n.constructor(n.source,Kw.exec(n));return t.lastIndex=n.lastIndex,t}var Vh=Qw;var Gh=gt?gt.prototype:void 0,zh=Gh?Gh.valueOf:void 0;function Zw(n){return zh?Object(zh.call(n)):{}}var kh=Zw;function Jw(n,t){var e=t?xi(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Fh=Jw;var e_="[object Boolean]",t_="[object Date]",r_="[object Map]",o_="[object Number]",n_="[object RegExp]",i_="[object Set]",a_="[object String]",s_="[object Symbol]",l_="[object ArrayBuffer]",c_="[object DataView]",u_="[object Float32Array]",d_="[object Float64Array]",p_="[object Int8Array]",f_="[object Int16Array]",h_="[object Int32Array]",m_="[object Uint8Array]",y_="[object Uint8ClampedArray]",g_="[object Uint16Array]",x_="[object Uint32Array]";function v_(n,t,e){var r=n.constructor;switch(t){case l_:return xi(n);case e_:case t_:return new r(+n);case c_:return Rh(n,e);case u_:case d_:case p_:case f_:case h_:case m_:case y_:case g_:case x_:return Fh(n,e);case r_:return new r;case o_:case a_:return new r(n);case n_:return Vh(n);case i_:return new r;case s_:return kh(n)}}var jh=v_;function b_(n){return typeof n.constructor=="function"&&!ni(n)?yf(fi(n)):{}}var Uh=b_;var S_="[object Map]";function w_(n){return Ct(n)&&mo(n)==S_}var Hh=w_;var qh=fo&&fo.isMap,__=qh?ai(qh):Hh,Wh=__;var A_="[object Set]";function T_(n){return Ct(n)&&mo(n)==A_}var $h=T_;var Yh=fo&&fo.isSet,C_=Yh?ai(Yh):$h,Xh=C_;var P_=1,O_=2,M_=4,Kh="[object Arguments]",I_="[object Array]",N_="[object Boolean]",E_="[object Date]",D_="[object Error]",Qh="[object Function]",L_="[object GeneratorFunction]",B_="[object Map]",R_="[object Number]",Zh="[object Object]",V_="[object RegExp]",G_="[object Set]",z_="[object String]",k_="[object Symbol]",F_="[object WeakMap]",j_="[object ArrayBuffer]",U_="[object DataView]",H_="[object Float32Array]",q_="[object Float64Array]",W_="[object Int8Array]",$_="[object Int16Array]",Y_="[object Int32Array]",X_="[object Uint8Array]",K_="[object Uint8ClampedArray]",Q_="[object Uint16Array]",Z_="[object Uint32Array]",Ue={};Ue[Kh]=Ue[I_]=Ue[j_]=Ue[U_]=Ue[N_]=Ue[E_]=Ue[H_]=Ue[q_]=Ue[W_]=Ue[$_]=Ue[Y_]=Ue[B_]=Ue[R_]=Ue[Zh]=Ue[V_]=Ue[G_]=Ue[z_]=Ue[k_]=Ue[X_]=Ue[K_]=Ue[Q_]=Ue[Z_]=!0;Ue[D_]=Ue[Qh]=Ue[F_]=!1;function fl(n,t,e,r,o,i){var a,s=t&P_,l=t&O_,d=t&M_;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!or(n))return n;var c=Ze(n);if(c){if(a=Bh(n),!s)return xf(n,a)}else{var u=mo(n),p=u==Qh||u==L_;if(xn(n))return Th(n,s);if(u==Zh||u==Kh||p&&!o){if(a=l||p?{}:Uh(n),!s)return l?Mh(n,bh(a,n)):Oh(n,vh(a,n))}else{if(!Ue[u])return o?n:{};a=jh(n,u,s)}}i||(i=new mi);var f=i.get(n);if(f)return f;i.set(n,a),Xh(n)?n.forEach(function(y){a.add(fl(y,t,e,y,n,i))}):Wh(n)&&n.forEach(function(y,g){a.set(g,fl(y,t,e,g,n,i))});var h=d?l?cl:Ya:l?li:si,m=c?void 0:h(n);return _f(m||n,function(y,g){m&&(g=y,y=n[g]),ri(a,g,fl(y,t,e,g,n,i))}),a}var hl=fl;var J_=1,eA=4;function tA(n){return hl(n,J_|eA)}var yo=tA;var rA="__lodash_hash_undefined__";function oA(n){return this.__data__.set(n,rA),this}var Jh=oA;function nA(n){return this.__data__.has(n)}var em=nA;function ml(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new vn;++t<e;)this.add(n[t])}ml.prototype.add=ml.prototype.push=Jh;ml.prototype.has=em;var tm=ml;function iA(n,t){for(var e=-1,r=n==null?0:n.length;++e<r;)if(t(n[e],e,n))return!0;return!1}var rm=iA;function aA(n,t){return n.has(t)}var om=aA;var sA=1,lA=2;function cA(n,t,e,r,o,i){var a=e&sA,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var d=i.get(n),c=i.get(t);if(d&&c)return d==t&&c==n;var u=-1,p=!0,f=e&lA?new tm:void 0;for(i.set(n,t),i.set(t,n);++u<s;){var h=n[u],m=t[u];if(r)var y=a?r(m,h,u,t,n,i):r(h,m,u,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!rm(t,function(g,x){if(!om(f,x)&&(h===g||o(h,g,e,r,i)))return f.push(x)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,i))){p=!1;break}}return i.delete(n),i.delete(t),p}var yl=cA;function uA(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var nm=uA;function dA(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var im=dA;var pA=1,fA=2,hA="[object Boolean]",mA="[object Date]",yA="[object Error]",gA="[object Map]",xA="[object Number]",vA="[object RegExp]",bA="[object Set]",SA="[object String]",wA="[object Symbol]",_A="[object ArrayBuffer]",AA="[object DataView]",am=gt?gt.prototype:void 0,bu=am?am.valueOf:void 0;function TA(n,t,e,r,o,i,a){switch(e){case AA:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case _A:return!(n.byteLength!=t.byteLength||!i(new gi(n),new gi(t)));case hA:case mA:case xA:return ti(+n,+t);case yA:return n.name==t.name&&n.message==t.message;case vA:case SA:return n==t+"";case gA:var s=nm;case bA:var l=r&pA;if(s||(s=im),n.size!=t.size&&!l)return!1;var d=a.get(n);if(d)return d==t;r|=fA,a.set(n,t);var c=yl(s(n),s(t),r,o,i,a);return a.delete(n),c;case wA:if(bu)return bu.call(n)==bu.call(t)}return!1}var sm=TA;var CA=1,PA=Object.prototype,OA=PA.hasOwnProperty;function MA(n,t,e,r,o,i){var a=e&CA,s=Ya(n),l=s.length,d=Ya(t),c=d.length;if(l!=c&&!a)return!1;for(var u=l;u--;){var p=s[u];if(!(a?p in t:OA.call(t,p)))return!1}var f=i.get(n),h=i.get(t);if(f&&h)return f==t&&h==n;var m=!0;i.set(n,t),i.set(t,n);for(var y=a;++u<l;){p=s[u];var g=n[p],x=t[p];if(r)var S=a?r(x,g,p,t,n,i):r(g,x,p,n,t,i);if(!(S===void 0?g===x||o(g,x,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,b=t.constructor;w!=b&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(m=!1)}return i.delete(n),i.delete(t),m}var lm=MA;var IA=1,cm="[object Arguments]",um="[object Array]",gl="[object Object]",NA=Object.prototype,dm=NA.hasOwnProperty;function EA(n,t,e,r,o,i){var a=Ze(n),s=Ze(t),l=a?um:mo(n),d=s?um:mo(t);l=l==cm?gl:l,d=d==cm?gl:d;var c=l==gl,u=d==gl,p=l==d;if(p&&xn(n)){if(!xn(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new mi),a||tl(n)?yl(n,t,e,r,o,i):sm(n,t,l,e,r,o,i);if(!(e&IA)){var f=c&&dm.call(n,"__wrapped__"),h=u&&dm.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new mi),o(m,y,e,r,i)}}return p?(i||(i=new mi),lm(n,t,e,r,o,i)):!1}var pm=EA;function fm(n,t,e,r,o){return n===t?!0:n==null||t==null||!Ct(n)&&!Ct(t)?n!==n&&t!==t:pm(n,t,e,r,fm,o)}var hm=fm;function DA(n,t){return n!=null&&t in Object(n)}var mm=DA;function LA(n,t,e){t=cr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=Ro(t[r]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&oi(o)&&ei(a,o)&&(Ze(n)||ii(n)))}var ym=LA;function BA(n,t){return n!=null&&ym(n,t,mm)}var gm=BA;function RA(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var xm=RA;function VA(n,t){return t.length<2?n:nl(n,fh(t,0,-1))}var vm=VA;function GA(n,t){return hm(n,t)}var Su=GA;function zA(n,t){return t=cr(t,n),n=vm(n,t),n==null||delete n[Ro(xm(t))]}var bm=zA;function kA(n){return ph(n)?void 0:n}var Sm=kA;var FA=1,jA=2,UA=4,HA=il(function(n,t){var e={};if(n==null)return e;var r=!1;t=Xs(t,function(i){return i=cr(i,n),r||(r=i.length>1),i}),Rr(n,cl(n),e),r&&(e=hl(e,FA|jA|UA,Sm));for(var o=t.length;o--;)bm(e,t[o]);return e}),vi=HA;function qA(n,t,e,r){if(!or(n))return n;t=cr(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=Ro(t[o]),d=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];d=r?r(c,l,s):void 0,d===void 0&&(d=or(c)?c:ei(t[o+1])?[]:{})}ri(s,l,d),s=s[l]}return n}var wm=qA;function WA(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=nl(n,a);e(s,a)&&wm(i,cr(a,n),s)}return i}var _m=WA;function $A(n,t){return _m(n,t,function(e,r){return gm(n,r)})}var Am=$A;var YA=il(function(n,t){return n==null?{}:Am(n,t)}),xr=YA;var he=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,he.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,he.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,he.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Xa(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Xa(r)}return Object.freeze(n)}function Tm(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var bi=class extends Error{};function xl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Vr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(a)}return r}function Si(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 Cm(){return typeof process<"u"}function Pm(n,t){for(let e of n)t(e.id,e.data)!==!0&&Pm(e.children,t)}function Om(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Om(e,t)}var $e=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,$e.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Xa(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);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,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)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,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Om(o,r)}}traverse(e){Pm(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,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(i,a)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let d=i.findIndex(c=>c.id===l);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:s}}Object.setPrototypeOf(i,$e.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:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,d=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return d=[...d,c],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(c),{data:this.modifyArrayBy(l,d),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(d=>d.id===r);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:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new bi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),d=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(d,1)[0],u=this.modifyArrayBy(a,l);a=r,l=u.childrenArray(a);let p=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(c),u=u.modifyArrayBy(a,l),{data:u,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,r){if(r===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===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Tm(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),a=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Vr(0,o,o);{let a=i[0].fi;return Vr(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Vr(l,l+o,o)}else return Vr(a.fi,s.fi,o)}}};var wi;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let d=parseInt(l);if(isNaN(d))throw new Error("wrong index");i[l]=a[d],a[d]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let d=o[l];d===void 0?delete a[l]:a[l]=d,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(wi||(wi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Xa(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,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(d=>d.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ye.prototype);let r=e;return Cm()||r.fillCaches(),r}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:r,id:o,data:i}=e,a=this,s={fi:r,id:o,data:i};return a=[...a,s],a.sort((d,c)=>d.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);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:r,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:r};return i[a]=l,i.sort((c,u)=>c.fi-u.fi),e.localIndex=i.indexOf(l),{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 r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Vr(0,r,r);{let i=o[0].fi;return Vr(i-r,i,r)}}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 Vr(s,s+r,r)}else return Vr(i.fi,a.fi,r)}}};function _i(n){return n&&typeof n=="object"&&n instanceof ke}var ke=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!_i(r))return null;o+=1}r=r?xl(r):new ke;for(let[l,d]of Object.entries(t.props)){let c=r[l];i[l]=c,d===void 0?delete r[l]:r[l]=d}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=xl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let d=xl(l);d[t.path[o-1]]=r,r=d}else{let d=new ke;d[t.path[o-1]]=r,r=d}}o-=1}let a=Object.setPrototypeOf(r,ke.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},Gr;(r=>{function n(o,i){return Ka(o,i)??o}r.apply=n;function t(o,i){return _u(o,i)}r.merge=t;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!_i(l))return;a+=1}if(l===void 0)return i;if(!!_i(l))if(i.type===0){let d={...i.props};for(let c of Object.keys(l))delete d[c];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=wu([i],l);return d?(console.log(d),d):i}else return i}r.filterOp=e})(Gr||(Gr={}));function wu(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=Ka(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=wu(o.children,t);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 r}function XA(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=Ka(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Ka(n,t){if(!_i(t))return t;if(n instanceof $e){let e=wu(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return XA(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=Ka(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else{if(n instanceof ke)return _u(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=Ka(i,t[o]);r=r||a!==void 0,a===void 0&&(a=i),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function _u(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!_i(t))return t;if(!_i(n))return Gr.apply(n,t);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new ke;for(let o of e){let i=_u(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function Mm(n,t){let e={cur:[],result:[],len:0};return n=Qa(n,t,e)??n,[n,e.result]}function vl(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function bl(n){n&&(n.len-=1)}function KA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Im(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Qa(i.data,t,vl(e,a));bl(e),r=r||l!==void 0,l===void 0&&(l=i.data);let d=Im(i.children,t,e);return d!==void 0?r=!0:d=i.children,{...i,id:a,data:l,children:d}});if(r)return o}function QA(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Qa(i.data,t,vl(e,a));return bl(e),r=r||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Qa(n,t,e){if(n instanceof $e){let r=Im(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof ye)return QA(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Qa(i,t,vl(e,a));return bl(e),r=r||s!==void 0,s===void 0&&(s=i),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Si(n)){let r={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Qa(a,t,vl(e,i));bl(e),o=o||l!==void 0,l===void 0&&(l=a),r[i]=l}else r[i]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];return r!==void 0&&KA(e),r}else return}}var Sl;(t=>{function n(e,r){let o=ot.zoom(r,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:{}}}t.replaceProps=n})(Sl||(Sl={}));var nt;(s=>{function n(l,d){return{...l,path:l.path.slice(d)}}s.drop=n;function t(l,d){return e(l,d)?.data??l}s.applySimple=t;function e(l,d){let c=d.path;for(var u=[];;){let p;if(l instanceof ke&&d.type===0&&(p=l.runOp({...d,path:c.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===c.length&&(l instanceof $e||l instanceof ye||l instanceof he?p=l.runOp(d):p=wi.runOp(l,d)),p!==void 0)if(p!==null){let m=p.data;for(let y=u.length-1;y>=0;y--){let g=c[y],x=u[y];if(x instanceof $e){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof he){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ke){let S={...x,[g]:m};m=Object.setPrototypeOf(S,ke.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=m;m=[...x],m[g]=S}else m={...x,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[u.length],h;if(l instanceof $e){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ye){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)u.push(l),l=h;else return null}}s.apply=e;function r(l,d){for(let c=0;c<l.length&&c<d.length;c++)if(l[c]!==d[c])return!0;return!1}s.pathDisjoint=r;function o(l,d){if(l.length!==d.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==d[c])return!1;return!0}s.pathEq=o;function i(l,d){return r(l.path,d.path)}s.commutative=i;function a(l,d){return l.type===0&&d.type===0&&o(l.path,d.path)?Object.keys(l.props).every(c=>d.props[c]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var Za;(l=>{function n(){return[]}l.empty=n;function t(d,c){let u=[];for(let p of d){let[f,...h]=p.path;f===c&&u.push({...p,path:h})}return u}l.removePrefix=t;function e(d,c){return d.map(u=>({...u,path:[c,...u.path]}))}l.addPrefix=e;function r(d,c){return[...d,...c]}l.concat=r;function o(d,c){return[...d.filter(p=>!c.some(f=>nt.subsumed(p,f))),...c]}l.compress=o;function i(d,c){return d.every(u=>c.every(p=>nt.commutative(u,p)))}l.commutative=i;function a(d,c){for(let u of c){let p=s(d,u);p!==null&&(d=p.data)}return d}l.applyAll=a;function s(d,c){var u=d;let p=[],f=[];for(let h of c)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,g;if(h.type===3?(m=ot.zoom(u,[...h.path,h.id]),g=nt.apply(u,{...h,type:2})):(m=ot.zoom(u,[...h.path,h.id,"value"]),g=nt.apply(u,h)),g!==null){u=g.data;let[x,S]=Mm(u,{[h.id]:m});u=x;for(let w=0;w<S.length;w++){let b=S[w],_=b.pop();if(typeof _=="number"){let A=[_];for(let M=w+1;M<S.length;M++){let O=S[M],T=O[O.length-1];if(typeof T=="number"&&ot.equal(b,O.slice(0,O.length-1)))A.push(T),S.splice(M,1);else break}let v=ot.zoom(u,b);y=v.map((M,O)=>A.includes(O)?h.id:M),m=v,_=b.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,v=ot.zoom(u,b.slice(0,b.length-2)),M=v.layers.map(O=>O.id===b[b.length-1]?{...O,data:{...O.data,[_]:A}}:O);Object.setPrototypeOf(M,Object.getPrototypeOf(v.layers)),v.layers=M}y=h.id}p.push({type:0,path:b,props:{[_]:m}}),f.push({type:0,path:b,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=nt.apply(u,h);m!==null&&(p.push(m.actual),u=m.data,f.push(m.reverse))}}catch(m){if(m instanceof bi)return null;throw m}return{data:u,actual:p,reverse:f.reverse()}}l.apply=s})(Za||(Za={}));var Nm=Symbol(),ZA=Symbol(),_l=Symbol(),Sn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof wl);){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,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[_l];r&&r(),delete this._children[t]}}}},Tu=class extends Sn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,wi.runOp(this._current,t),t.path)}},Cu=class extends Sn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,he.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Em={get(n,t){if(t===_l)return()=>{n._parent=null};if(t===Nm)return n._current;if(t===ZA)return n;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],a=Al(n,t,i);return a!==i?(r===void 0&&(r={},n._children=r),r[t]=a,a):i},has(n,t){return t 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,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},JA={...Em,set(n,t,e){let r={type:0,props:{[t]:Ye(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},eT={...Em,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Ai=class extends Sn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[_l]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Al(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Ti=class extends Sn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[_l]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Al(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Au(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&ot.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var wl=class extends Sn{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Au(this.ts,e,t),Au(this.actual,r,t),Au(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Al(n,t,e){return e instanceof $e?new Ai(n,t,e):e instanceof ye?new Ti(n,t,e):e instanceof he?new Proxy(new Cu(n,t,e),eT):e!==null&&typeof e=="object"?Si(e)?e:new Proxy(new Tu(n,t,e),JA):e}function Pu(n){let t=new wl(n);return[Al(t,"",n),t]}function Vo(n,t){let[e,r]=Pu(n);return t(e),r.result()}function Ye(n){return n instanceof Ai||n instanceof Ti?n._current:n!==null&&typeof n=="object"?n[Nm]:n}var ot;(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 t(i,a,s){let l=r(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let d={...a};return Object.keys(l).forEach(c=>{delete d[c]}),d}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof $e||i instanceof Ai)&&typeof a=="string")return i.data(a);if((i instanceof ye||i instanceof Ti)&&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 r(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=r})(ot||(ot={}));function Dm(n,t){let e=[];if(t.length===n.length)for(var r=0;r<n.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}function Lt(n,t){let e=[];if(t.length<=n.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}var Tl=class{},Ja=class extends Tl{constructor(e){super();this.id=e}},es=class extends Tl{constructor(e){super();this.data=e}};var Mu;try{Mu=new TextDecoder}catch{}var re,zo,N=0;var Fm=[],Iu=Fm,Nu=0,Yt={},De,Go,ur=0,zr=0,nr,go,Vt=[],Be,Lm={useRecords:!1,mapsAsObjects:!0},ts=class{},Du=new ts;Du.name="MessagePack 0xC1";var Ci=!1,kr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(re)return Wm(()=>(Pl(),this?this.unpack(t,e):kr.prototype.unpack.call(Lm,t,e)));zo=e>-1?e:t.length,N=0,Nu=0,zr=0,Go=null,Iu=Fm,nr=null,re=t;try{Be=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw re=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof kr){if(Yt=this,this.structures)return De=this.structures,Cl();(!De||De.length>0)&&(De=[])}else Yt=Lm,(!De||De.length>0)&&(De=[]);return Cl()}unpackMultiple(t,e){let r,o=0;try{Ci=!0;let i=t.length,a=this?this.unpack(t,i):Il.unpack(t,i);if(e){for(e(a);N<i;)if(o=N,e(Cl())===!1)return}else{for(r=[a];N<i;)o=N,r.push(Cl());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Ci=!1,Pl()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Cl(){try{if(!Yt.trusted&&!Ci){let t=De.sharedLength||0;t<De.length&&(De.length=t)}let n=Je();if(N==zo)De.restoreStructures&&Bm(),De=null,re=null,go&&(go=null);else if(N>zo){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ci)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw De.restoreStructures&&Bm(),Pl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Bm(){for(let n in De.restoreStructures)De[n]=De.restoreStructures[n];De.restoreStructures=null}function Je(){let n=re[N++];if(n<160)if(n<128){if(n<64)return n;{let t=De[n&63]||Yt.getStructures&&jm()[n&63];return t?(t.read||(t.read=Lu(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,Yt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Hm()]=Je();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Je(),Je());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Je();return t}else if(n<192){let t=n-160;if(zr>=N)return Go.slice(N-ur,(N+=t)-ur);if(zr==0&&zo<140){let e=t<16?Bu(t):Um(t);if(e!=null)return e}return Eu(t)}else{let t;switch(n){case 192:return null;case 193:return nr?(t=Je(),t>0?nr[1].slice(nr.position1,nr.position1+=t):nr[0].slice(nr.position0,nr.position0-=t)):Du;case 194:return!1;case 195:return!0;case 196:return Ou(re[N++]);case 197:return t=Be.getUint16(N),N+=2,Ou(t);case 198:return t=Be.getUint32(N),N+=4,Ou(t);case 199:return wn(re[N++]);case 200:return t=Be.getUint16(N),N+=2,wn(t);case 201:return t=Be.getUint32(N),N+=4,wn(t);case 202:if(t=Be.getFloat32(N),Yt.useFloat32>2){let e=Ml[(re[N]&127)<<1|re[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=Be.getFloat64(N),N+=8,t;case 204:return re[N++];case 205:return t=Be.getUint16(N),N+=2,t;case 206:return t=Be.getUint32(N),N+=4,t;case 207:return Yt.int64AsNumber?(t=Be.getUint32(N)*4294967296,t+=Be.getUint32(N+4)):t=Be.getBigUint64(N),N+=8,t;case 208:return Be.getInt8(N++);case 209:return t=Be.getInt16(N),N+=2,t;case 210:return t=Be.getInt32(N),N+=4,t;case 211:return Yt.int64AsNumber?(t=Be.getInt32(N)*4294967296,t+=Be.getUint32(N+4)):t=Be.getBigInt64(N),N+=8,t;case 212:if(t=re[N++],t==114)return km(re[N++]&63);{let e=Vt[t];if(e)return e.read?(N++,e.read(Je())):e.noBuffer?(N++,e()):e(re.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=re[N],t==114?(N++,km(re[N++]&63,re[N++])):wn(2);case 214:return wn(4);case 215:return wn(8);case 216:return wn(16);case 217:return t=re[N++],zr>=N?Go.slice(N-ur,(N+=t)-ur):rT(t);case 218:return t=Be.getUint16(N),N+=2,zr>=N?Go.slice(N-ur,(N+=t)-ur):oT(t);case 219:return t=Be.getUint32(N),N+=4,zr>=N?Go.slice(N-ur,(N+=t)-ur):nT(t);case 220:return t=Be.getUint16(N),N+=2,Vm(t);case 221:return t=Be.getUint32(N),N+=4,Vm(t);case 222:return t=Be.getUint16(N),N+=2,Gm(t);case 223:return t=Be.getUint32(N),N+=4,Gm(t);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 tT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Lu(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>tT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Je);return n.highByte===0&&(n.read=Rm(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=Je()}return r}return e.count=0,n.highByte===0?Rm(t,e):e}var Rm=(n,t)=>function(){let e=re[N++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=De[r]||jm()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Lu(o,n)),o.read()};function jm(){let n=Wm(()=>(re=null,Yt.getStructures()));return De=Yt._mergeStructures(n,De)}var Eu=Ol,rT=Ol,oT=Ol,nT=Ol;function Ol(n){let t;if(n<16&&(t=Bu(n)))return t;if(n>64&&Mu)return Mu.decode(re.subarray(N,N+=n));let e=N+n,r=[];for(t="";N<e;){let o=re[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=re[N++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=re[N++]&63,a=re[N++]&63;r.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[N++]&63,a=re[N++]&63,s=re[N++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=xt.apply(String,r),r.length=0)}return r.length>0&&(t+=xt.apply(String,r)),t}function Vm(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Je();return t}function Gm(n){if(Yt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Hm()]=Je();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Je(),Je());return t}}var xt=String.fromCharCode;function Um(n){let t=N,e=new Array(n);for(let r=0;r<n;r++){let o=re[N++];if((o&128)>0){N=t;return}e[r]=o}return xt.apply(String,e)}function Bu(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[N++];if((t&128)>1){N-=1;return}return xt(t)}}else{let t=re[N++],e=re[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(n<3)return xt(t,e);let r=re[N++];if((r&128)>0){N-=3;return}return xt(t,e,r)}else{let t=re[N++],e=re[N++],r=re[N++],o=re[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return xt(t,e,r,o);{let i=re[N++];if((i&128)>0){N-=5;return}return xt(t,e,r,o,i)}}else if(n<8){let i=re[N++],a=re[N++];if((i&128)>0||(a&128)>0){N-=6;return}if(n<7)return xt(t,e,r,o,i,a);let s=re[N++];if((s&128)>0){N-=7;return}return xt(t,e,r,o,i,a,s)}else{let i=re[N++],a=re[N++],s=re[N++],l=re[N++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){N-=8;return}if(n<10){if(n===8)return xt(t,e,r,o,i,a,s,l);{let d=re[N++];if((d&128)>0){N-=9;return}return xt(t,e,r,o,i,a,s,l,d)}}else if(n<12){let d=re[N++],c=re[N++];if((d&128)>0||(c&128)>0){N-=10;return}if(n<11)return xt(t,e,r,o,i,a,s,l,d,c);let u=re[N++];if((u&128)>0){N-=11;return}return xt(t,e,r,o,i,a,s,l,d,c,u)}else{let d=re[N++],c=re[N++],u=re[N++],p=re[N++];if((d&128)>0||(c&128)>0||(u&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return xt(t,e,r,o,i,a,s,l,d,c,u,p);{let f=re[N++];if((f&128)>0){N-=13;return}return xt(t,e,r,o,i,a,s,l,d,c,u,p,f)}}else{let f=re[N++],h=re[N++];if((f&128)>0||(h&128)>0){N-=14;return}if(n<15)return xt(t,e,r,o,i,a,s,l,d,c,u,p,f,h);let m=re[N++];if((m&128)>0){N-=15;return}return xt(t,e,r,o,i,a,s,l,d,c,u,p,f,h,m)}}}}}function Ou(n){return Yt.copyBuffers?Uint8Array.prototype.slice.call(re,N,N+=n):re.subarray(N,N+=n)}function wn(n){let t=re[N++];if(Vt[t])return Vt[t](re.subarray(N,N+=n));throw new Error("Unknown extension type "+t)}var zm=new Array(4096);function Hm(){let n=re[N++];if(n>=160&&n<192){if(n=n-160,zr>=N)return Go.slice(N-ur,(N+=n)-ur);if(!(zr==0&&zo<180))return Eu(n)}else return N--,Je();let t=(n<<5^(n>1?Be.getUint16(N):n>0?re[N]:0))&4095,e=zm[t],r=N,o=N+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=Be.getUint32(r),i!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=re[r++],i!=e[a++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],zm[t]=e,e.bytes=n;r<o;)i=Be.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?Bu(n):Um(n);return s!=null?e.string=s:e.string=Eu(n)}var km=(n,t)=>{var e=Je();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=De[n];return o&&o.isShared&&((De.restoreStructures||(De.restoreStructures=[]))[n]=o),De[n]=e,e.read=Lu(e,r),e.read()},qm=typeof self=="object"?self:global;Vt[0]=()=>{};Vt[0].noBuffer=!0;Vt[101]=()=>{let n=Je();return(qm[n[0]]||Error)(n[1])};Vt[105]=n=>{let t=Be.getUint32(N-4);go||(go=new Map);let e=re[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};go.set(t,o);let i=Je();return o.used?Object.assign(r,i):(o.target=i,i)};Vt[112]=n=>{let t=Be.getUint32(N-4),e=go.get(t);return e.used=!0,e.target};Vt[115]=()=>new Set(Je());var Ru=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Vt[116]=n=>{let t=n[0],e=Ru[t];if(!e)throw new Error("Could not find typed array for code "+t);return new qm[e](Uint8Array.prototype.slice.call(n,1).buffer)};Vt[120]=()=>{let n=Je();return new RegExp(n[0],n[1])};Vt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=t-4,nr=[Je(),Je()],nr.position0=0,nr.position1=0;let r=N;N=e;try{return Je()}finally{N=r}};Vt[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 Wm(n){let t=zo,e=N,r=Nu,o=ur,i=zr,a=Go,s=Iu,l=go,d=nr,c=new Uint8Array(re.slice(0,zo)),u=De,p=De.slice(0,De.length),f=Yt,h=Ci,m=n();return zo=t,N=e,Nu=r,ur=o,zr=i,Go=a,Iu=s,go=l,nr=d,re=c,Ci=h,De=u,De.splice(0,De.length,...p),Yt=f,Be=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function Pl(){re=null,go=null,De=null}function $m(n){n.unpack?Vt[n.type]=n.unpack:Vt[n.type]=n}var Ml=new Array(147);for(let n=0;n<256;n++)Ml[n]=+("1e"+Math.floor(45.15-n*.30103));var Il=new kr({useRecords:!1}),iT=Il.unpack,aT=Il.unpackMultiple,sT=Il.unpack,Nl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lT=new Float32Array(1),zz=new Uint8Array(lT.buffer,0,4);var El;try{El=new TextEncoder}catch{}var Dl,Gu,Ll=typeof Buffer<"u",Vu=Ll?Buffer.allocUnsafeSlow:Uint8Array,Qm=Ll?Buffer:Uint8Array,Ym=Ll?4294967296:2144337920,F,it,L=0,Fr,jr=null,cT=/[\u0080-\uFFFF]/,rs=Symbol("record-id"),_n=class extends kr{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,d=Qm.prototype.utf8Write?function(v,M,O){return F.utf8Write(v,M,O)}:El&&El.encodeInto?function(v,M){return El.encodeInto(v,F.subarray(M)).written}:!1,c=this;t||(t={});let u=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),u&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,g=f+h+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(v,M){if(F||(F=new Vu(8192),it=new DataView(F.buffer,0,8192),L=0),Fr=F.length-10,Fr-L<2048?(F=new Vu(F.length),it=new DataView(F.buffer,0,F.length),Fr=F.length-10,L=0):L=L+7&2147483640,r=L,s=c.structuredClone?new Map:null,c.bundleStrings?(jr=["",""],F[L++]=214,F[L++]=98,jr.position=L-r,L+=4):jr=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let O=o.sharedLength||0;if(O>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 T=0;T<O;T++){let C=o[T];if(!C)continue;let P,I=o.transitions;for(let E=0,R=C.length;E<R;E++){let D=C[E];P=I[D],P||(P=I[D]=Object.create(null)),I=P}I[rs]=T+64}l=O}u||(o.nextId=O+64)}i&&(i=!1),a=o||[];try{if(b(v),jr){it.setUint32(jr.position+r,L-jr.position-r);let O=jr;jr=null,b(O[0]),b(O[1])}if(c.offset=L,s&&s.idsToInsert){L+=s.idsToInsert.length*6,L>Fr&&A(L),c.offset=L;let O=dT(F.subarray(r,L),s.idsToInsert);return s=null,O}return M&Jm?(F.start=r,F.end=L,F):F.subarray(r,L)}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&&!u){for(let O=0,T=x.length;O<T;O++)x[O][rs]=0;x=[]}if(i&&c.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let T=F.subarray(r,L);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(v)):(l=O,T)}}M&xT&&(L=r)}};let b=v=>{L>Fr&&(F=A(L));var M=typeof v,O;if(M==="string"){let T=v.length;if(jr&&T>=8&&T<4096){let I=cT.test(v);jr[I?0:1]+=v,F[L++]=193,b(I?-T:T);return}let C;T<32?C=1:T<256?C=2:T<65536?C=3:C=5;let P=T*3;if(L+P>Fr&&(F=A(L+P)),T<64||!d){let I,E,R,D=L+C;for(I=0;I<T;I++)E=v.charCodeAt(I),E<128?F[D++]=E:E<2048?(F[D++]=E>>6|192,F[D++]=E&63|128):(E&64512)===55296&&((R=v.charCodeAt(I+1))&64512)===56320?(E=65536+((E&1023)<<10)+(R&1023),I++,F[D++]=E>>18|240,F[D++]=E>>12&63|128,F[D++]=E>>6&63|128,F[D++]=E&63|128):(F[D++]=E>>12|224,F[D++]=E>>6&63|128,F[D++]=E&63|128);O=D-L-C}else O=d(v,L+C,P);O<32?F[L++]=160|O:O<256?(C<2&&F.copyWithin(L+2,L+1,L+1+O),F[L++]=217,F[L++]=O):O<65536?(C<3&&F.copyWithin(L+3,L+2,L+2+O),F[L++]=218,F[L++]=O>>8,F[L++]=O&255):(C<5&&F.copyWithin(L+5,L+3,L+3+O),F[L++]=219,it.setUint32(L,O),L+=4),L+=O}else if(M==="number")if(v>>>0===v)v<64?F[L++]=v:v<256?(F[L++]=204,F[L++]=v):v<65536?(F[L++]=205,F[L++]=v>>8,F[L++]=v&255):(F[L++]=206,it.setUint32(L,v),L+=4);else if(v>>0===v)v>=-32?F[L++]=256+v:v>=-128?(F[L++]=208,F[L++]=v+256):v>=-32768?(F[L++]=209,it.setInt16(L,v),L+=2):(F[L++]=210,it.setInt32(L,v),L+=4);else{let T;if((T=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){F[L++]=202,it.setFloat32(L,v);let C;if(T<4||(C=v*Ml[(F[L]&127)<<1|F[L+1]>>7])>>0===C){L+=4;return}else L--}F[L++]=203,it.setFloat64(L,v),L+=8}else if(M==="object")if(!v)F[L++]=192;else{if(s){let C=s.get(v);if(C){if(!C.id){let P=s.idsToInsert||(s.idsToInsert=[]);C.id=P.push(C)}F[L++]=214,F[L++]=112,it.setUint32(L,C.id),L+=4;return}else s.set(v,{offset:L-r})}let T=v.constructor;if(T===Object)_(v,!0);else if(T===Array){O=v.length,O<16?F[L++]=144|O:O<65536?(F[L++]=220,F[L++]=O>>8,F[L++]=O&255):(F[L++]=221,it.setUint32(L,O),L+=4);for(let C=0;C<O;C++)b(v[C])}else if(T===Map){O=v.size,O<16?F[L++]=128|O:O<65536?(F[L++]=222,F[L++]=O>>8,F[L++]=O&255):(F[L++]=223,it.setUint32(L,O),L+=4);for(let[C,P]of v)b(C),b(P)}else{for(let C=0,P=Dl.length;C<P;C++){let I=Gu[C];if(v instanceof I){let E=Dl[C];if(E.write){E.type&&(F[L++]=212,F[L++]=E.type,F[L++]=0),b(E.write.call(this,v));return}let R=F,D=it,z=L;F=null;let B;try{B=E.pack.call(this,v,V=>(F=R,R=null,L+=V,L>Fr&&A(L),{target:F,targetView:it,position:L-V}),b)}finally{R&&(F=R,it=D,L=z,Fr=F.length-10)}B&&(B.length+L>Fr&&A(B.length+L),L=uT(B,F,L,E.type));return}}_(v,!v.hasOwnProperty)}}else if(M==="boolean")F[L++]=v?195:194;else if(M==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))F[L++]=211,it.setBigInt64(L,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)F[L++]=207,it.setBigUint64(L,v);else if(this.largeBigIntToFloat)F[L++]=203,it.setFloat64(L,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");L+=8}else if(M==="undefined")this.encodeUndefinedAsNil?F[L++]=192:(F[L++]=212,F[L++]=0,F[L++]=0);else if(M==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},_=this.useRecords===!1?this.variableMapSize?v=>{let M=Object.keys(v),O=M.length;O<16?F[L++]=128|O:O<65536?(F[L++]=222,F[L++]=O>>8,F[L++]=O&255):(F[L++]=223,it.setUint32(L,O),L+=4);let T;for(let C=0;C<O;C++)b(T=M[C]),b(v[T])}:(v,M)=>{F[L++]=222;let O=L-r;L+=2;let T=0;for(let C in v)(M||v.hasOwnProperty(C))&&(b(C),b(v[C]),T++);F[O+++r]=T>>8,F[O+r]=T&255}:v=>{let M=Object.keys(v),O,T=a.transitions||(a.transitions=Object.create(null)),C=0;for(let I=0,E=M.length;I<E;I++){let R=M[I];O=T[R],O||(O=T[R]=Object.create(null),C++),T=O}let P=T[rs];if(P)P>=96&&m?(F[L++]=((P-=96)&31)+96,F[L++]=P>>5):F[L++]=P;else{P=a.nextId,P||(P=64),P<y&&this.shouldShareStructure&&!this.shouldShareStructure(M)?(P=a.nextOwnId,P<g||(P=y),a.nextOwnId=P+1):(P>=g&&(P=y),a.nextId=P+1);let I=M.highByte=P>=96&&m?P-96>>5:-1;T[rs]=P,a[P-64]=M,P<y?(M.isShared=!0,a.sharedLength=P-63,i=!0,I>=0?(F[L++]=(P&31)+96,F[L++]=I):F[L++]=P):(I>=0?(F[L++]=213,F[L++]=114,F[L++]=(P&31)+96,F[L++]=I):(F[L++]=212,F[L++]=114,F[L++]=P),C&&(S+=w*C),x.length>=h&&(x.shift()[rs]=0),x.push(T),b(M))}for(let I=0,E=M.length;I<E;I++)b(v[M[I]])},A=v=>{let M;if(v>16777216){if(v-r>Ym)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(Ym,Math.round(Math.max((v-r)*(v>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(v-r<<2,F.length-1)>>12)+1<<12;let O=new Vu(M);return it=new DataView(O.buffer,0,M),F.copy?F.copy(O,0,r,v):O.set(F.slice(r,v)),L-=r,r=0,Fr=O.length-10,F=O}}useBuffer(t){F=t,it=new DataView(F.buffer,F.byteOffset,F.byteLength),L=0}};Gu=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ts];Dl=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Xm(n,16,t):Km(Ll?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Qm&&this.structuredClone?Xm(n,Ru.indexOf(e.name),t):Km(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Xm(n,t,e,r){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++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Km(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function uT(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function dT(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;n.copyWithin(i+r,i,o),r-=6;let s=i+r;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 ko(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)");Gu.unshift(n.Class),Dl.unshift(n)}$m(n)}var Zm=new _n({useRecords:!1}),pT=Zm.pack,fT=Zm.pack;var{NEVER:hT,ALWAYS:mT,DECIMAL_ROUND:yT,DECIMAL_FIT:gT}=Nl,Jm=512,xT=1024;var ey=new _n({structuredClone:!0});ko({Class:he.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,he.prototype),n}});ko({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});ko({Class:$e.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,$e.prototype),n}});ko({Class:Ja.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ja(n)}});ko({Class:es.prototype.constructor,type:5,write(n){return n.data},read(n){return new es(n)}});ko({Class:ke.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ke.prototype),n}});function vT(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function zu(n){if(Si(n))return n;if(Array.isArray(n))return n.map(zu);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=zu(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Bl;(r=>{function n(o){return ey.pack(o)}r.serialize=n;function t(o){return ey.unpack(o)}r.deserialize=t;function e(o){return vT(n(zu(o))).toString()}r.checksum=e})(Bl||(Bl={}));var Uo="personal camera",Ho="a218fcc3-276b-49b9-b485-49037fd14f5f",ay=2960946,dt=5526619;var ty;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(ty||(ty={}));var Fo;(s=>{function n(l,d){return l[0]===d[0]&&l[1]===d[1]&&l[2]===d[2]}s.isEqual=n;function t(l,d){return[l[0]+d[0],l[1]+d[1],l[2]+d[2]]}s.add=t;function e(l,d){return[l[0]-d[0],l[1]-d[1],l[2]-d[2]]}s.sub=e;function r(l,d){return[l[0]/d[0],l[1]/d[1],l[2]/d[2]]}s.div=r;function o(l,d){return[l[0]*d[0],l[1]*d[1],l[2]*d[2]]}s.mul=o;function i(l,d){return Math.hypot(l[0]-d[0],l[1]-d[1],l[2]-d[2])}s.dist=i;function a(l,d,c){return[l[0]+(d[0]-l[0])*c,l[1]+(d[1]-l[1])*c,l[2]+(d[2]-l[2])*c]}s.lerp=a})(Fo||(Fo={}));var ry;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(ry||(ry={}));var jo;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,a){let s=a.slice(0);for(var l=0,d=a.length;l<d;l+=3){let c=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=r})(jo||(jo={}));var vt;(c=>{function n(u){return typeof u=="object"&&typeof u.r=="number"&&typeof u.g=="number"&&typeof u.b=="number"}c.isRGB=n,c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}c.toRgb255a1=o;function i(u){return{r:u.r,g:u.g,b:u.b}}c.clone=i;function a(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}c.fromHex=a;function s(u){return Math.round(u.r*255)*65536+Math.round(u.g*255)*256+Math.round(u.b*255)}c.toHex=s;function l(u,p){return u.r===p.r&&u.g===p.g&&u.b===p.b}c.equals=l;function d(u,p,f){return{r:u.r+(p.r-u.r)*f,g:u.g+(p.g-u.g)*f,b:u.b+(p.b-u.b)*f}}c.lerp=d})(vt||(vt={}));var Gt;(s=>{s.white={...vt.white,a:1},s.transparent={...vt.white,a:0};function e(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}s.from0to1=e;function r(l,d){return{...vt.fromHex(l),a:d}}s.fromHexAndA=r;function o(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}s.toRgb255a1=o;function i(l,d){return vt.equals(l,d)&&l.a===d.a}s.equals=i;function a(l,d,c){return{r:l.r+(d.r-l.r)*c,g:l.g+(d.g-l.g)*c,b:l.b+(d.b-l.b)*c,a:l.a+(d.a-l.a)*c}}s.lerp=a})(Gt||(Gt={}));var Rl;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Rl||(Rl={}));var oy;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(oy||(oy={}));var ny;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(ny||(ny={}));var iy;(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]))(iy||(iy={}));function sy(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 vr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(vr||(vr={}));var qo;(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 r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(qo||(qo={}));var Ur;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[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:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.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 t(r,o){let i={...r};if(bT.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;ST.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...r.linear},o.linear){let a=r.linear,s=o.linear;wT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...r.grid},o.grid){let a=r.grid,s=o.grid;_T.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...r.toObject},o.toObject){let a=r.toObject,s=o.toObject;AT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let a=r.randomnessObject,s=o.randomnessObject;TT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(Ur||(Ur={}));var Vl;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["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 t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}r.toOps=e})(Vl||(Vl={}));var bT=["count"],ST=["radius","start","end","position","scale","rotation"],wT=["position","scale","rotation"],_T=["count","size"],AT=["count","position","scale","rotation"],TT=["strength","scale","rotation","position","movement","seed","freqScale"];var Gl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gl||(Gl={}));var zl;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Gt.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(r==="DirectionalLight")return{type:r,color:Gt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(zl||(zl={}));var Wo;(t=>t.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]})(Wo||(Wo={}));var ku;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(ku||(ku={}));var Fu;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Fu||(Fu={}));var kl;(t=>t.defaultData={...Fu.defaultData,...ku.defaultData})(kl||(kl={}));var ly;(t=>{function n(e,r){let o=[];if("material"in e){let i=typeof e.material=="string"?r.materials[e.material]??r.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"?r.materials[i]??r.lib.materials[i]?.asset:i;a&&o.push(a)}return o}t.getMaterialData=n})(ly||(ly={}));var Pi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Pi||(Pi={}));var cy;(t=>{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"}t.is=n})(cy||(cy={}));function dy(n){return n.type!=="displace"}var uy;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(uy||(uy={}));var py=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],fy=["wrapping","image","video","name"],zt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let d=i.texture;d&&Object.assign(d,s)}}o.patch=n;function t(i,a){return i==="light"&&a?e(a):r(i)}o.defaultData=t;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 r(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:Pi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:vt.fromHex(dt)};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:{...vt.fromHex(6710886),a:1},colorB:{...vt.fromHex(6710886),a:1},colorC:{...vt.fromHex(16777215),a:1},colorD:{...vt.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:Gt.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:Gt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Gt.fromHexAndA(0,1),contourColor:Gt.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:{...vt.fromHex(0),a:1},colorB:{...vt.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}}}})(zt||(zt={}));var Pt;(l=>{function n(d){return!d.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}l.isMergable=n;function t(d){let c="";return d.layers.forEach(u=>{Object.entries(u.data).forEach(([p,f])=>{c+=`${p}${f}`,Array.isArray(f)?f.forEach(h=>c+=`${h}`):typeof f=="object"?Object.values(f).forEach(h=>{typeof h=="number"?c+=`${h.toFixed(4)}`:c+=`${h}`}):c+=`${f}`})}),c}l.getHash=t;function e(){return{layers:new ye}}l.defaultEmptyData=e;function r(d="layer1",c="layer2"){return i("phong",d,c)}l.defaultData=r;function o(d,c){return{...d,name:c}}l.withName=o;function i(d,c="layer1",u="layer2"){let p=new ye;return p.push({fi:0,data:zt.defaultData("light",d),id:c}),p.push({fi:1,data:zt.defaultData("color"),id:u}),{layers:p}}l.defaultTwoLayerData=i;function a(d,c="phong",u="layer1",p="layer2"){let f=zt.defaultData("texture");Object.assign(f.texture,{image:d});let h=new ye;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:zt.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerTextureData=a;function s(d,c="phong",u="layer1",p="layer2"){let f=zt.defaultData("video");Object.assign(f.texture,{video:d});let h=new ye;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:zt.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerVideoTextureData=s})(Pt||(Pt={}));var Oi;(t=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Oi||(Oi={}));var Mi;(t=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})(Mi||(Mi={}));var ju={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Fl;(t=>{function n(e,r){let o={...e};return CT.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(Fl||(Fl={}));var jl={shape:ju,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},CT=["depth","offset","angle","twist","startScale","endScale"];var os;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"}e.is2DParametricMesh=n;function t(r){return r==="PolygonGeometry"||r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="PathGeometry"||r==="VectorGeometry"||r==="ConeGeometry"||r==="CubeGeometry"||r==="CylinderGeometry"||r==="DodecahedronGeometry"||r==="HelixGeometry"||r==="IcosahedronGeometry"||r==="LatheGeometry"||r==="PyramidGeometry"||r==="SphereGeometry"||r==="PlaneGeometry"||r==="BackdropGeometry"||r==="TorusGeometry"||r==="TorusKnotGeometry"||r==="BooleanGeometry"||r==="TextGeometry"}e.isParametricMesh=t})(os||(os={}));var Ul;(t=>{function n(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Fl.merge(o.extrusion,r.extrusion))),o}t.merge=n})(Ul||(Ul={}));var $o;(t=>{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:Mi.defaultData(),extrusion:jl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Oi.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")}t.defaultData=n})($o||($o={}));var Hl;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:vt.white,near:.1,far:2e3})(Hl||(Hl={}));var ql;(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}}})(ql||(ql={}));var Uu;(t=>t.defaultData={softShadowQuality:"low"})(Uu||(Uu={}));var Hu;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Hu||(Hu={}));var qu;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(qu||(qu={}));var ns;(t=>t.defaultData={usePhysics:!1,gravity:-10})(ns||(ns={}));var Wu;(t=>t.defaultData={playCamera:Uo,gameControlObject:null})(Wu||(Wu={}));var Wl;(t=>t.defaultData={backgroundColor:Gt.fromHexAndA(ay,1),postprocessing:ql.defaultData,fog:Hl.defaultData,globalPhysics:ns.defaultData,ambient:Hu.defaultData,ao:qu.defaultData,shadow:Uu.defaultData,publish:Wu.defaultData})(Wl||(Wl={}));var hy;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(hy||(hy={}));var Ii;(o=>{o.identity={...Rl.identity,hiddenMatrix:jo.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;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 r(i,a){return Jp({position:Fo.isEqual(i.position,a.position)?void 0:a.position,rotation:Fo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Fo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:jo.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Ii||(Ii={}));var Ot;(t=>t.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Wo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ii.identity,cloner:null})(Ot||(Ot={}));var $l;(t=>t.defaultData={type:"Empty",...Ot.defaultData})($l||($l={}));var my;(t=>t.defaultData={type:"Component",...Ot.defaultData})(my||(my={}));var An;(t=>t.defaultData={type:"Mesh",...Ot.defaultData,...kl.defaultData})(An||(An={}));var Tn;(t=>t.defaultData={...Ot.defaultData,...Ii.identity,position:[0,0,qo.DefaultTargetOffset],...qo.defaultData})(Tn||(Tn={}));var Yl;(e=>{function n(r){return{...Ot.defaultData,...zl.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Yl||(Yl={}));var Ni;(e=>{function n(r,o,i=0){for(;i<o.length;){let a=r?r[o[i]]:void 0;if(o.length===i+1)return a;if(a)r=a.descendants,i+=1;else return}}e.resolveWithDes=n;function t(r,o,i=0){let a=n(r,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(Ni||(Ni={}));var Hr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...Ot.defaultData,...s,component:a,overrides:new ke,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Ii.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(Hr||(Hr={}));var xo;(t=>t.defaultData={type:"Page",...Ot.defaultData,physics:{...Wo.defaultData,fusedBody:!1},...Wl.defaultData,camera:Tn.defaultData})(xo||(xo={}));var Xl;(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:Wo.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...qo.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",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("RectangleGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("BooleanGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Ot.defaultData,...An.defaultData,geometry:$o.defaultData("TextGeometry"),material:Pt.defaultTwoLayerData("phong","layer1","layer2")}))(Xl||(Xl={}));var Cn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new ke}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new ke})))):vr.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function t(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Vo(s.material,l=>{if(typeof l!="string")for(let[d,c]of Object.entries(a.material.layers)){let u=l.layers.data(d);u&&zt.patch(u,c)}}).data),s.materials&&a.materials&&(s.materials=Vo(s.materials,l=>{for(let d=0;d<s.materials.length;d++){let c=a.materials[d];if(typeof c!="string")for(let[u,p]of Object.entries(c.layers)){let f=l[d]?.layers?.data(u);f&&zt.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],d={orthographic:0,perspective:0,geometry:0};function c(u,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...u,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};l.push(g)}}}for(let[u,p]of Object.entries(a))if(u!=="name")if(u==="cloner")l.push(...Vl.toOps(p,["cloner"]));else if(u==="pathSnapping")l.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")c(["material"],p);else if(u==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[u]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ii.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})}),vr.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Ul.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Ur.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Ur.merge(s.cloner,a.cloner)});else if(Gl.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=vt.clone(l.color))}return s}o.patch=r})(Cn||(Cn={}));var Di;(t=>t.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})(Di||(Di={}));var qr;(t=>t.defaultData={orbitControls:Di.defaultData,playPage:Ho,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===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})(qr||(qr={}));var $u;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})($u||($u={}));var Yu;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Yu||(Yu={}));var Yo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...$u.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Yu.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Yo||(Yo={}));var yy;(e=>{function n(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function t(r,o,i){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Li.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(yy||(yy={}));var Xo;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(l={withLight:!0,withSquare:!0}){let d=[],c=Xl.defaultMeshObject;l.withLight===!0&&d.push({fi:-1,data:Yl.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),l.withSquare===!0&&d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:c,children:[]});let u=new $e;return u.push({fi:1,id:Ho,data:{...xo.defaultData,name:"Scene 1"},children:d}),u}s.defaultData={objects:t(),publish:qr.defaultData,styles:Yo.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new $e,publish:qr.defaultData,styles:Yo.defaultData()}},s.emptyDataWithPage=function(l){return{objects:t(l),publish:qr.defaultData,styles:Yo.defaultData()}};function i(l){return{...s.defaultData,objects:Wt(l,$e.prototype)}}s.withObjs=i;function a(l,d){return i([{id:l,data:d,children:[],fi:0}])}s.withObj=a})(Xo||(Xo={}));var Bi;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Bi||(Bi={}));var Ri;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Ri||(Ri={}));var Kl;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function t(a){return typeof a=="number"}i.isNumber=t;function e(a){return typeof a=="boolean"}i.isBoolean=e;function r(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=r;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})(Kl||(Kl={}));var Xu;(t=>t.all=["images","videos","colors","audios","fonts","materials","variables"])(Xu||(Xu={}));var gy;(t=>t.all=[...Xu.all,"components"])(gy||(gy={}));var xy;(t=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,materials:new he,components:new he,variables:new he}}t.defaultData=n})(xy||(xy={}));var Ko;(t=>{function n(){return{images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,materials:new he,components:new he,variables:new he}}t.defaultData=n})(Ko||(Ko={}));var br;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Wt(a,he.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ri.emptyImage,name:"AI generated image"}),Wt(s,he.prototype)}i.defaultImages=t;function e(){return{catelogs:new he,materials:new he,images:new he,videos:new he,colors:new he,audios:new he,fonts:new he,variables:new ye,lib:Ko.defaultData()}}i.emptyData=e;function r(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=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),d=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-d*60);return{textValue:[l,d,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),d=Math.round(a-l*60);return{textValue:[l,d]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(br||(br={}));import{MathUtils as Jl}from"three";var Ql;(t=>t.list=["idle","move","jump","run"])(Ql||(Ql={}));var Zl;(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:Gt.fromHexAndA(3728051,1)}}))(Zl||(Zl={}));function vy(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...xr(Ye(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...Ye(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function vo(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function bo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Pt.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Pt.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Pt.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&t(o.material)})})}function PT(n){Object.assign(n.scene.publish,{orbitControls:{...Di.defaultData,...Ye(n.scene.publish.orbitControls)}})}function OT(n){Object.assign(n.scene.publish.settings,{video:{...qr.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function MT(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((py.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(fy.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function IT(n){n.scene.publish.withBackground=!0}function NT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ET(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function DT(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function LT(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=Ye(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function BT(n){n.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function RT(n){function t(r){Object.setPrototypeOf(r,ke.prototype),r.texture&&Object.setPrototypeOf(r.texture,ke.prototype)}function e(r){Object.setPrototypeOf(r,ke.prototype);for(let o in r)t(r[o])}n.scene.objects.traverse((r,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=Ye(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],d=Ye(l).layers;e(d),l.layers=d}})})}function by(n){n.layers===void 0&&Object.assign(n,Pt.defaultTwoLayerData("lambert"))}function Ku(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...Ye(t),colors:e,steps:r};Object.assign(t,o)}})}function VT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Sy(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ku(r)}):"material"in e&&typeof e.material!="string"&&Ku(e.material)}),Object.values(n.shared.materials).forEach(t=>Ku(t))}function GT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,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 zT(n){n.shared.audios=Wt({},he.prototype)}function kT(n){n.shared.videos=Wt({},he.prototype)}function FT(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.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(t,{[e]:o})}})}function jT(n){Object.entries(Ye(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(Ye(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function UT(n){n.scene.publish.settings.web.preload=!1}function wy(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function _y(n){n.layers&&n.layers.forEach(t=>{dy(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function HT(n){n.shared.fonts=Wt({},he.prototype)}function qT(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 WT(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Pt.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=qT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...Ot.defaultData,...An.defaultData,flatShading:!1,wireframe:!1,geometry:{...$o.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:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},d=Ye(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function $T(n){let t={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,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[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:Jl.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let d={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,xr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let u={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,...u,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:Jl.generateUUID(),data:d},{fi:1,id:Jl.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function YT(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new ye,s=[];if(e.events.forEach((l,d,c)=>{if(l.type==="Audio"&&l.trigger===i){let u;s.push(d),l.interaction==="play"?u={...xr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(u={...xr(l,"interaction","delay","object","playAudio"),type:"Audio"}),u&&a.push({fi:c,id:d,data:u})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(d=>d.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Jl.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Ay(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=zt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Ty(n){vo(n,Ay),bo(n,Ay)}function XT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function KT(n){n.scene.objects.traverse((t,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 QT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Pt.defaultTwoLayerData("phong"))})}function ZT(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((t,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 JT(n){n.scene.objects.traverse((t,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 eC(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 tC(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function rC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function oC(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function nC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Zl.defaultDataThirdPerson.navmesh)})})}function iC(n){n.scene.styles||(n.scene.styles=Yo.defaultData())}function Cy(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function aC(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,Cy),vo(n,Cy)}function sC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new ye})})})}function lC(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Py(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Oy(n,t){if(t<1&&(bo(n,vy),vo(n,vy),n.schema=1),t<2&&(PT(n),n.schema=2),t<3&&(MT(n),n.schema=3),t<4&&(IT(n),n.schema=4),t<5&&(NT(n),n.schema=5),t<6&&(ET(n),n.schema=6),t<7&&(DT(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Sy(n),n.schema=9),t<10&&(VT(n),n.schema=10),t<11&&(GT(n),n.schema=11),t<12&&(Sy(n),n.schema=12),t<13&&(zT(n),n.schema=13),t<14&&(FT(n),n.schema=14),t<15&&(jT(n),n.schema=15),t<16&&(UT(n),n.schema=16),t<17&&(bo(n,wy),vo(n,wy),n.schema=17),t<18&&(bo(n,by),vo(n,by),n.schema=18),t<19&&(OT(n),n.schema=19),t<20&&(HT(n),WT(n),n.schema=20),t<21&&($T(n),YT(n),n.schema=21),t<22&&(Ty(n),n.schema=22),t<23&&(XT(n),n.schema=23),t<24&&(KT(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(kT(n),t<25&&(n.schema=25)),t<26&&(LT(n),n.schema=26),t<27&&(BT(n),n.schema=27),t<28&&(Ty(n),n.schema=28),t<29&&(RT(n),n.schema=29),t<30&&(QT(n),n.schema=30),t<31&&(ZT(n),n.schema=31),t<33&&(JT(n),n.schema=33),t<34&&(eC(n),n.schema=34),t<35&&(tC(n),n.schema=35),t<36&&(rC(n),n.schema=36),t<37&&(oC(n),n.schema=37),t<38&&(bo(n,_y),vo(n,_y),n.schema=38),t<39&&(nC(n),n.schema=39),t<40&&(iC(n),n.schema=40),t<41&&(aC(n),n.schema=41),t<42&&(sC(n),n.schema=42),t<43&&(lC(n),n.schema=43),t<99){bo(n,Py),vo(n,Py),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Uo);let e=Ye(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=Ho,r.insertBefore(null,null,[{id:Ho,data:{...xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:xr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:xr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...ns.defaultData,...xr(n.scene.environment,"usePhysics","gravity")},camera:Ye(n.scene.ownerCamera)??xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Xo.TRASH_CAN_ID&&r.move(Ho,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,Wo.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function My(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function cC(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}var Vi=180/Math.PI;function Iy(n){n.rotation=n.rotation.slice(0,3).map(t=>t*Vi)}function Ny(n){Iy(n),n.type==="Page"&&Iy(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*Vi))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*Vi),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*Vi),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=Vi,t.extrusion.twist*=Vi),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(Ye(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 uC(n){n.shared.variables=Wt({},he.prototype)}function dC(n){let t=Ye(n.shared.variables);n.shared.variables=Wt(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),ye.prototype)}var So=107;function Ey(n,t){t(n.data);for(let e of n.children)Ey(e,t)}function pC(n){let t=n.schema??104;t!==So&&t<105&&(Ey(n.asset,Ny),n.schema=105)}function ec(n){let t=n.schema??0;if(t!==So){console.warn("updating from ",t,"to ",So),Oy(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=qr.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(bo(n,My),vo(n,My),n.schema=101),t<102&&(cC(n),n.schema=102),t<104&&(n.shared.catelogs=new he,n.shared.lib=Ko.defaultData(),n.schema=104),t<105&&(uC(n),n.scene.objects.traverse((e,r)=>{Ny(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))pC(e);t<106&&(dC(n),n.schema=106),t<107&&(n.shared.lib.variables=Ko.defaultData().variables,n.schema=107)}}var Li;(s=>{s.defaultData={schema:So,scene:Xo.defaultData,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:{...br.emptyData(),colors:br.defaultColors()}},s.emptyDataForImports=function(l){let d=Xo.emptyDataWithPage(l);return{schema:So,scene:d,frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:{...br.emptyData(),colors:br.defaultColors(),images:br.defaultImages(l)}}},s.emptyData=function(){return{schema:So,scene:Xo.emptyDataWithPage(),frames:new he().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Bi.defaultData),shared:br.emptyData()}},s.collabHelper={...Za,updateSchema(l){return(l.schema??0)<So?Vo(l,ec):(l.schema??0)-So}};function o(l){let d=s.collabHelper.updateSchema(l);return typeof d=="number"?d===0?l:null:d.data}s.updateSchemaDirectly=o;function i(l){return{...l,shared:{...l.shared,lib:Ko.defaultData()}}}s.withoutLib=i;function a(l,d){let c=l.scene.objects.get(d);if(c&&c.data.type==="Component")return c;{let u=l.shared.lib.components[d];if(u)return u.asset}}s.getComponentData=a})(Li||(Li={}));var Ea=Rt(Ly());import{Object3D as aM,Vector3 as lr,Euler as Np,MathUtils as dx,Matrix4 as $n}from"three";var fC=.5*(Math.sqrt(3)-1),is=(3-Math.sqrt(3))/6,hC=1/3,Wr=1/6,wU=(Math.sqrt(5)-1)/4,_U=(5-Math.sqrt(5))/20,as=n=>Math.floor(n)|0,By=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]),Zu=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 tc(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(o=>By[o%12*2]),r=new Float64Array(t).map(o=>By[o%12*2+1]);return function(i,a){let s=0,l=0,d=0,c=(i+a)*fC,u=as(i+c),p=as(a+c),f=(u+p)*is,h=u-f,m=p-f,y=i-h,g=a-m,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+is,b=g-S+is,_=y-1+2*is,A=g-1+2*is,v=u&255,M=p&255,O=.5-y*y-g*g;if(O>=0){let P=v+t[M],I=e[P],E=r[P];O*=O,s=O*O*(I*y+E*g)}let T=.5-w*w-b*b;if(T>=0){let P=v+x+t[M+S],I=e[P],E=r[P];T*=T,l=T*T*(I*w+E*b)}let C=.5-_*_-A*A;if(C>=0){let P=v+1+t[M+1],I=e[P],E=r[P];C*=C,d=C*C*(I*_+E*A)}return 70*(s+l+d)}}function Ry(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(i=>Zu[i%12*3]),r=new Float64Array(t).map(i=>Zu[i%12*3+1]),o=new Float64Array(t).map(i=>Zu[i%12*3+2]);return function(a,s,l){let d,c,u,p,f=(a+s+l)*hC,h=as(a+f),m=as(s+f),y=as(l+f),g=(h+m+y)*Wr,x=h-g,S=m-g,w=y-g,b=a-x,_=s-S,A=l-w,v,M,O,T,C,P;b>=_?_>=A?(v=1,M=0,O=0,T=1,C=1,P=0):b>=A?(v=1,M=0,O=0,T=1,C=0,P=1):(v=0,M=0,O=1,T=1,C=0,P=1):_<A?(v=0,M=0,O=1,T=0,C=1,P=1):b<A?(v=0,M=1,O=0,T=0,C=1,P=1):(v=0,M=1,O=0,T=1,C=1,P=0);let I=b-v+Wr,E=_-M+Wr,R=A-O+Wr,D=b-T+2*Wr,z=_-C+2*Wr,B=A-P+2*Wr,V=b-1+3*Wr,j=_-1+3*Wr,H=A-1+3*Wr,X=h&255,$=m&255,W=y&255,Y=.6-b*b-_*_-A*A;if(Y<0)d=0;else{let G=X+t[$+t[W]];Y*=Y,d=Y*Y*(e[G]*b+r[G]*_+o[G]*A)}let k=.6-I*I-E*E-R*R;if(k<0)c=0;else{let G=X+v+t[$+M+t[W+O]];k*=k,c=k*k*(e[G]*I+r[G]*E+o[G]*R)}let q=.6-D*D-z*z-B*B;if(q<0)u=0;else{let G=X+T+t[$+C+t[W+P]];q*=q,u=q*q*(e[G]*D+r[G]*z+o[G]*B)}let U=.6-V*V-j*j-H*H;if(U<0)p=0;else{let G=X+1+t[$+1+t[W+1]];U*=U,p=U*U*(e[G]*V+r[G]*j+o[G]*H)}return 32*(d+c+u+p)}}function Vy(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as mC}from"three";var Sr=new mC,rc=class{constructor(t){this.weightAttribute=null;let e=t.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 t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;Sr.a.fromBufferAttribute(t,o),Sr.b.fromBufferAttribute(t,o+1),Sr.c.fromBufferAttribute(t,o+2),i*=Sr.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){i=a;break}else t<e[a]?o=a-1:r=a+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Sr.a.fromBufferAttribute(this.positionAttribute,t*3),Sr.b.fromBufferAttribute(this.positionAttribute,t*3+1),Sr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Sr.a,o).addScaledVector(Sr.b,i).addScaledVector(Sr.c,1-(o+i)),Sr.getNormal(r),this}};import{Object3D as bC}from"three";var ky=Rt(zy());import{Object3D as yC,Matrix4 as $r}from"three";var gC=new $r,xC=new $r,vC=new $r,Gi;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(Gi||(Gi={}));var zi=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new $r;this.copyPreviousMatrix=!0;this.hiddenMatrix=new $r;this.matrixWorldRigid=new $r;this.shearScale=new $r;this.shearScaleInv=new $r}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof yC&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(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,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&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(r,o=0){for(let i of this.children)Gi.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Gi.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:i,v:a,q:s}=(0,ky.SVD)(o),l=gC.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),d=xC.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),c=vC.copy(d).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(u=>Math.abs(s[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new $r().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof $r?r.hiddenMatrix.premultiply(i):r.applyMatrix4(i),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Ju=class extends zi(bC){},SC=n=>n.type==="Mesh",wo=class extends Ju{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new wo(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=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 SC(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}};import{Box3 as I2,BufferGeometry as N2,MeshBasicMaterial as E2}from"three";import{Matrix4 as O2,Mesh as M2}from"three";import{Matrix4 as ic,Vector3 as Uy,Euler as PC,MathUtils as ls}from"three";import{Box3 as wC,Line3 as _C,Matrix4 as ed,Vector3 as ir}from"three";var Pn=new ir,On=new ir,ki=new ed,jy=[new ir(-1,1,1),new ir(-1,-1,1),new ir(1,-1,1),new ir(1,1,1),new ir(-1,1,-1),new ir(-1,-1,-1),new ir(1,-1,-1),new ir(1,1,-1)],AC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],TC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Fy=(n,t,e)=>{n.updateEntityBoxSize(Pn,On),ki.copy(t).multiply(n.matrixWorld),On.x===0&&On.y===0&&On.z===0?e.push(new ir(Pn.x,Pn.y,Pn.z).applyMatrix4(ki)):jy.forEach(r=>{e.push(r.clone().multiply(On).add(Pn).applyMatrix4(ki))})},ss=class extends wC{constructor(){super(...arguments);this.matrix=new ed;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new ed().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,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 ir);return}Fy(a,r,i)}}):Fy(e,r,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(ki.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(On).multiplyScalar(.5),this.getCenter(Pn),ki.copy(this.matrix).setPosition(Pn),this.vertices=jy.map(e=>e.clone().multiply(On).applyMatrix4(ki))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=AC.map(([e,r])=>new _C(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ir))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=TC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var wr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as CC,CubicBezierCurve3 as td,Vector3 as _r}from"three";var od=class extends CC{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let d=l[s],c=s===0?o[s]:o[s]-o[s-1],u=Math.ceil(t*c/a),p=d.getPoints(u);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var nd=.001;function id(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=nd}function rd(n,t){let e=new _r(...n.position),r=new _r(...n.controlNext.position),o=new _r(...t.controlPrevious.position),i=new _r(...t.position);return id(e,r,i)&&id(e,o,i)}function nc(n){let t=n.points.map(c=>new _r(...c.data.position)),e=[n.points[0]],r=new _r(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)id(r,t[c],t[c+1])||(e.push(n.points[c]),r=t[c]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let c=0;c<a;c++){let u=e[c].data,p=new _r(...u.position),f=new _r(...u.controlPrevious.position),h=new _r(...u.controlNext.position),m={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:h};if(u.roundness===0||!n.isClosed&&(c===0||c===a-1)){s[c]={...m,removedLength:0};continue}let y=o&&c==0?a-1:c-1,g=o&&c==a-1?0:c+1,x=e[y].data,S=e[g].data,w=new _r(...x.position),b=new _r(...S.position),_=w.clone().sub(p).normalize(),A=b.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let v=rd(x,u),M=rd(u,S);if(!v||!M)s[c]={...m,removedLength:0};else{let O=_.clone().add(A).normalize(),T=O.clone().cross(_).length()/_.dot(O);s[c]={...m,tan:T,removedLength:u.roundness/T}}}for(let c=0;c<i;c++){let u=c,p=o&&c===a-1?0:c+1,f=s[u],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let c=0;c<i;c++){let u=c,p=o&&c===a-1?0:c+1,f=s[u],h=s[p],m=null;if(!rd(e[u].data,e[p].data))f.position.distanceTo(h.position)>nd&&(m=new td(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),g=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&g.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(g)>nd&&(m=new td(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*c+1]=m}for(let c=0;c<a;c++){let u=s[c];if(u.removedLength===0){l[2*c]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),h=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),m=u.tan*u.removedLength,y=u.prevDir.clone().add(u.nextDir).normalize(),g=f.clone().lerp(h,.5),x=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),b=p.distanceTo(w)/p.distanceTo(g),_=u.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),v=f.clone().lerp(_,4/3),M=h.clone().lerp(A,4/3);l[2*c]=new td(f,v,M,h)}let d=new od;return l.forEach(c=>{c&&d.add(c)}),d}var Ae;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Ae||(Ae={}));var Fi=n=>Ae.is(n),OC={type:"completeState",isfromEntity:!0},MC=["x","y","z"],ad=new Uy,IC=new Uy().set(0,1,0),ji=n=>class extends zi(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 ss;this._recursiveBBox=new ss;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(Ae.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Ae.is(this.children[r]))return r+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 r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(Ae.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Cn.toOps(this.data,a.data).forEach(l=>{let d=Sl.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=Cn.patch(this.data,a),Cn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,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(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{Fi(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(i=>{i.uuid===r&&(o=i)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,i=o.indexOf(this)+1;if(Ae.is(o[i]))return o[i];if(Ae.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Ae.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,i=this;for(;i!==r;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)Fi(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Ae.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fi(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)Fi(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)Fi(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>Fi(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*ls.RAD2DEG,this.rotation.y*ls.RAD2DEG,this.rotation.z*ls.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return vi(o,r)}getTransformValues(r,o,i){return o[r].map((a,s)=>i?.shared.getVariable(a,[this.uuid,r,MC[s]])??a)}updateTransformState(r,o){let i=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),i=!0),r.rotation&&(ad.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(ls.DEG2RAD),this.rotation.setFromVector3(ad),i=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),i=!0),r.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??jo.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(r=!1){if(r){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 r of this.children)Ae.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Ae.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return vi(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,i,a){let s=this.data;this.data=o;let l=r,d=Lt(r.path,["states","*"]);if(d!==null){if(r.type===0){let[c]=d;if(this?.stateSelection===c){let u={...r.props};if(delete u.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=ot.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(u[h]=f[h])}}l={...r,props:u,path:r.path.slice(2)}}}}else if(r.type===0){let c=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(c!==void 0){if(r.props.name!==void 0&&c.name){let{name:p,...f}=c;c=f}if(r.props.material!==void 0&&"material"in c){let{material:p,...f}=c;c=f}let u=ot.removeOverridden(r.path,r.props,c);l={...r,props:u}}}if(this.updateByPatchedOpBase(l,Cn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Lt(r.path,["overrides"])){let c=[],u=[...r.path];for(c.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)c.push(u[1]),u.splice(0,2);if(c[c.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){c[c.length-1]=p;let f=i.scene.findInstance([this.uuid,...c]);f&&(f.overrideData=r.props[p],f.updateState(Gr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=ot.zoom(p.component.data,u);if(r={...r,path:u},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=Ni.resolve(o.overrides,c),p.updateByOp(r,nt.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let u;for(let p of Hr.rootOverrideProps)p in r.props&&(u===void 0&&(u={}),u[p]=r.props[p]);u&&(c={...r,props:u})}else for(let u of Hr.rootOverrideProps)if(Lt(r.path,[u])){c=r;break}c!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,c);p&&u.updateByOp(p,nt.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,r);if(p){let f;s===u.data&&r===p?f=o:f=nt.applySimple(u.data,p),u.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(r,o,i){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!vr.is(r.props.type)&&wr.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){wr.changeEntityProptotype(this,o,i);for(let a of this.children)Ae.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(r,o,i)}updateByPatchedOp(r,o,i){if(r.path.length===0&&r.type===0&&this.updateState(r.props,i),Lt(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Lt(r.path,["cloner"])!==null){let a=nt.drop(r,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(i.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){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??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let d=l.data;if(d.geometry.path.points.length<=1)return;let c=nc(d.geometry.path),u=(i+a)%1;i+a===1&&u===0&&(u=1);let p=c.getPointAt(u),f=this.parent?this.parent?.matrixWorld:new ic;l.updateMatrixWorld();let h=new ic().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:d.rotation};if(s==="tangential"){let y=new ic().extractRotation(l.matrixWorld),g=c.getTangentAt(u).applyMatrix4(y).add(p),x=new ic().lookAt(p,g,IC),S=ad.setFromEuler(new PC().setFromRotationMatrix(x)).multiplyScalar(ls.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(OC)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof wr.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new wr.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}};import{BufferGeometry as DC,ConeGeometry as LC,Float32BufferAttribute as BC,MathUtils as RC}from"three";import{BufferGeometry as qy,CylinderGeometry as NC,Float32BufferAttribute as sc,MathUtils as EC,Vector2 as Ar,Vector3 as ac}from"three";var Wy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=EC.clamp(e.thetaLength,0,360);let r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:d,radiusBottom:c,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new qy,h.setAttribute("position",new sc([],3))):u||f?h=new cs(d,c,r,o,i,a,s,l*Math.PI/180,u,u,p,f):h=new NC(d,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function Qo(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Hy(n){return new Ar(n.y,-n.x)}var cs=class extends qy{constructor(t,e,r,o,i,a,s,l,d,c,u,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(d=0,c=0);let h=[],m=[],y=[],g=[],x=0,S=r/2,w=new ac,b=new ac;f&&t==0&&(t=d),f&&e==0&&(e=c);let _=new Ar(t,S),A=new Ar(e,-S),v=null,M=null,O=null,T=null,C=_.clone().sub(A),P=0,I=0,E=0;p>0&&(P=Math.min(t,e)*(1-p),I=t-P,E=e-P);let R=_.clone();R.x-=P;let D=Math.PI-C.angle(),z=C.angle(),B=Math.tan(z/2),V=Math.tan(D/2),j=B+V,H=p?j:V,X=p?j:B;if(d=Math.min(d,(t-I)/H,C.length()/j),c=Math.min(c,(e-E)/X,C.length()/j),d>0){let U=d/B;v=_.clone().sub(new Ar(U,d)),p&&(O=v.clone(),O.x-=P-j*d),_.sub(C.clone().setLength(U))}if(c>0){let U=c/V;M=A.clone().sub(new Ar(U,-c)),A.add(C.clone().setLength(U)),p&&(T=M.clone(),T.x-=P-j*c,R.sub(C.clone().setLength(U)))}C=_.clone().sub(A);let $=C.length()<.5,W=[];for(let U=0;U<=o;U++){let G=[],oe=U/o,ee=oe*l+s,Q=new Ar(Math.sin(ee),Math.cos(ee));T&&M?(Y(G,oe,Q,D,c,T,-1,!0),Y(G,oe,Q,z,c,M,-1,!1)):M?(k(G,Q,M.x,0,-1),Y(G,oe,Q,z,c,M,-1,!1)):a||k(G,Q,e,E,-1);let te=Hy(C).normalize();if(Qo(te,Q,w),!$)for(let Z=0;Z<=i;Z++){let se=Z/i,ne=C.clone().multiplyScalar(se).add(A);Qo(ne,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/r),G.push(x++)}if(O&&v?(Y(G,oe,Q,D,d,v,1,!1),Y(G,oe,Q,z,d,O,1,!0)):v?(Y(G,oe,Q,D,d,v,1,!1),k(G,Q,v.x,0,1)):a||k(G,Q,t,I,1),p&&!$){let Z=Hy(C).multiplyScalar(-1).normalize();Qo(Z,Q,w);for(let se=0;se<=i;se++){let ne=se/i,ie=C.clone().multiplyScalar(-ne).add(R);Qo(ie,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(oe,.5+b.y/r),G.push(x++)}}p&&!a&&G.push(G[0]),W.push(G)}for(let U=0;U<W.length-1;U++)for(let G=0;G<W[0].length-1;G++){if(a&&p&&G==i)continue;let oe=W[U][G],ee=W[U+1][G],Q=W[U+1][G+1],te=W[U][G+1],Z=m[Q*3+0],se=m[Q*3+2];h.push(oe,ee,te),(Z!=0||se!=0)&&h.push(ee,Q,te)}l<Math.PI*2&&(q(-1,W[0],s),q(1,W[W.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new sc(m,3)),this.setAttribute("normal",new sc(y,3)),this.setAttribute("uv",new sc(g,2));function Y(U,G,oe,ee,Q,te,Z,se){for(let ne=0;ne<u+1;ne++){let ie=ne/u,ue=Z<0?ie:1-ie;se&&(ue-=1),ue*=ee;let le=new Ar(Math.sin(ue),Math.cos(ue)*Z),de=le.clone().multiplyScalar(Q).add(te);Qo(de,oe,b),m.push(b.x,b.y,b.z),Qo(le,oe,w),y.push(w.x,w.y,w.z),g.push(G,.5+b.y/r),U.push(x++)}}function k(U,G,oe,ee,Q){let te=new ac,Z=new Ar,se=[oe,ee];Q<0&&se.reverse();for(let ne of se)Z.set(ne,S*Q),Qo(Z,G,te),m.push(te.x,te.y,te.z),y.push(0,Q,0),g.push(.5,.5),U.push(x++)}function q(U,G,oe){let ee=new Ar(Math.sin(oe),Math.cos(oe)),Q=new Ar(-Math.cos(oe),Math.sin(oe)),te=new ac,Z=U<0?(ie,ue,le)=>h.push(ie,ue,le):(ie,ue,le)=>h.push(ie,le,ue),se=new Ar((t+e+I+E)/4,0);Qo(se,ee,te),m.push(te.x,te.y,te.z),y.push(Q.x,0,Q.y),g.push(.5,.5);let ne=x++;for(let ie of G){let ue=m.slice(ie*3,ie*3+3);m.push(...ue),y.push(Q.x,0,Q.y);let le=g.slice(ie*2,ie*2+2);g.push(...le),x++}for(let ie=ne+1;ie<x-1;ie++)Z(ne,ie,ie+1);Z(ne,x-1,ne+1)}}};var $y=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=RC.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:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:d,cornerRadiusBottom:c,cornerSegments:u}=n.parameters,p;return l===0?(p=new DC,p.setAttribute("position",new BC([],3))):d>0||c>0||l<360?p=new cs(0,t/2,r,o,i,a,s,l*Math.PI/180,d,c,u,0,!0):p=new LC(t/2,r,o,i,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as VC,BufferGeometry as GC,Float32BufferAttribute as sd,Vector3 as us}from"three";var Yy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,d;return s==0?d=new VC(t,e,r,o,i,a):d=new cd(t,e,r,o,i,a,s,l),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},ld=Math.PI/2,cd=class extends GC{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let d=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],p=[],f=[],h=0,m=0;y("z","y","x",-1,-1,r,e,t,a,i,0),y("z","y","x",1,-1,r,e,-t,a,i,1),y("x","z","y",1,1,t,r,e,o,a,2),y("x","z","y",1,-1,t,r,-e,o,a,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),s>0&&(g("z","y","x",-1,-1,1,r,e,t,a,0),g("z","y","x",1,-1,-1,r,e,t,a,1),g("z","y","x",-1,1,-1,r,e,t,a,1),g("z","y","x",1,1,1,r,e,t,a,0),g("x","y","z",-1,-1,-1,t,e,r,o,0),g("x","y","z",1,-1,1,t,e,r,o,1),g("x","y","z",-1,1,1,t,e,r,o,0),g("x","y","z",1,1,-1,t,e,r,o,1),g("y","x","z",-1,-1,1,e,t,r,i,0),g("y","x","z",1,-1,-1,e,t,r,i,1),g("y","x","z",1,1,1,e,t,r,i,1),g("y","x","z",-1,1,-1,e,t,r,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(c),this.setAttribute("position",new sd(u,3)),this.setAttribute("normal",new sd(p,3)),this.setAttribute("uv",new sd(f,2));function y(S,w,b,_,A,v,M,O,T,C,P){let I=(v-2*s)/T,E=(M-2*s)/C,R=v/2-s,D=M/2-s,z=O/2,B=T+1,V=C+1,j=0,H=0,X=new us;for(let $=0;$<V;$++){let W=$*E-D;for(let Y=0;Y<B;Y++){let k=Y*I-R;X[S]=k*_,X[w]=W*A,X[b]=z,u.push(X.x,X.y,X.z),X[S]=0,X[w]=0,X[b]=O>0?1:-1,p.push(X.x,X.y,X.z),f.push(Y/T),f.push(1-$/C),j+=1}}for(let $=0;$<C;$++)for(let W=0;W<T;W++){let Y=h+W+B*$,k=h+W+B*($+1),q=h+(W+1)+B*($+1),U=h+(W+1)+B*$;c.push(Y,k,U),c.push(k,q,U),H+=6}d.addGroup(m,H,P),m+=H,h+=j}function g(S,w,b,_,A,v,M,O,T,C,P){let I=(M-2*s)/C,E=M/2-s,R=O/2-s,D=T/2,z=C+1,B=0,V=0,j=new us,H=new us;for(let X=0;X<l+1;X++){let $=X/l*ld,W=Math.sin($)*s,Y=(1-Math.cos($))*s,k=Math.sin($),q=Math.cos($);j[w]=(R+W)*A,j[b]=(D-Y)*v,H[S]=0,H[w]=k*Math.sign(j[w]),H[b]=q*Math.sign(j[b]);for(let U=0;U<z;U++){let G=U*I-E;j[S]=G*_,u.push(j.x,j.y,j.z),p.push(H.x,H.y,H.z),f.push(U/C),f.push(0),B+=1}}for(let X=0;X<l;X++)for(let $=0;$<C;$++){let W=h+$+z*X,Y=h+$+z*(X+1),k=h+($+1)+z*(X+1),q=h+($+1)+z*X;c.push(W,Y,q),c.push(Y,k,q),V+=6}d.addGroup(m,V,P),m+=V,h+=B}function x(S,w,b){let _=new us,A=new us(t/2,e/2,r/2);A.subScalar(s);let v=[],M=S*w*b>0?(T,C,P)=>c.push(T,C,P):(T,C,P)=>c.push(T,P,C);for(let T=0;T<=l;T++){let C=[],P=ld*(1-T/l),I=Math.cos(P),E=Math.sin(P),R=0;for(let D=0;D<=T;D++){let z=Math.cos(R),B=Math.sin(R);_.x=I*z,_.y=E,_.z=I*B;let V=A.clone().addScaledVector(_,s);u.push(S*V.x,w*V.y,b*V.z),p.push(S*_.x,w*_.y,b*_.z),f.push(0,0),C.push(h++),R+=ld/T}v.push(C)}let O=v.length-1;for(let T=0;T<O;T++){let C=v[T],P=v[T+1],I=C.length-1;M(C[0],P[1],P[0]);for(let E=1;E<=I;E++)M(C[E-1],C[E],P[E]),M(C[E],P[E+1],P[E])}}}};import{BufferGeometry as zC,Float32BufferAttribute as ud,Triangle as kC,Vector3 as _o,Vector2 as dd}from"three";var Zo=class extends zC{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],d=[];c(),u(),this.setAttribute("position",new ud(s,3)),this.setAttribute("normal",new ud(d,3)),this.setAttribute("uv",new ud(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new _o,m=h.clone(),y=new kC,g=i*o,x=o-g,S=a+1,w=new _o,b=(B,V)=>w.subVectors(B,V).normalize(),_=(B,V)=>Array(B).fill(void 0).map(V),A=_(t.length/3,(B,V)=>new _o().fromArray(t,V*3).setLength(o)),v=[],M=1e6;for(let B=0;B<A.length;B++){let V=A[B],j=[],H,X,$,W=1e10,Y=-1;for(;(Y=e.indexOf(B,Y+1))!=-1;){let G=Y-Y%3;H=e[G+(Y+1)%3],X=e[G+(Y+2)%3],$=V.distanceToSquared(A[H]),W=Math.min(W,$),j.push([H,X,$])}W+=1e-6;let k=[],q=0,U=j.length;for(let G=0;G<U;G++){[H,X,$]=j[q];let oe=v[H]?.includes(B)==!0;$<=W&&k.push(H+ +oe*M),q=j.findIndex(ee=>ee[0]==X)}v.push(k)}let O=[];{let B=0,V=0,j,H,X=f==3;for(let $=0;$<=a;$++){j=$*($+1)/2,H=($+1)*($+2)/2;for(let W=0;W<a-$;W++)[B,V]=[j+W+$+2,H+W+$+3],O.push(j,H,...X?[V,j]:[B,H],V,B),[j,H]=[B,V];O.push(j,H,j+a+2)}}let T=h.clone(),C=h.clone(),P=h.clone(),I=h.clone(),E=h.clone(),R=[],D=_(A.length,()=>_(f,()=>h.clone()));for(let B=0;B<A.length;B++){h.copy(A[B]).normalize(),T.copy(h).multiplyScalar(x);let V=v[B];for(let k=0;k<V.length;k++){let q=V[k],U=V[(k+1)%f];y.setFromPointsAndIndices(A,B,q%M,U%M),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(T,D[B][k])}let j=[],H=[],X=[],$=new _o;a==0&&[...D[B]].reduce((k,q)=>k.add(q),$).multiplyScalar(1/f);for(let k=0;k<f;k++){let q=[],U=(k-1+f)%f,G=D[B][U],oe=D[B][k];h.copy(G).sub(T),m.copy(oe).sub(T);let ee=T.angleTo(h),Q=h.angleTo(m),te=Math.cos(ee)*g;a==0?C.copy($):C.copy(T).setLength(x+te),H.push(te);let Z=[C,G,oe];for(let se=0;se<2;se++){let ne=Z[se],ie=Z[se+1];I.subVectors(ne,T),E.subVectors(ie,T),P.crossVectors(I,E).normalize();for(let ue=0;ue<S;ue++){let le=[ee,Q][se]*ue/S;h.copy(I).applyAxisAngle(P,le).add(T),j.push(h.clone()),se&&(b(h,T),q.push([ue==0?ne:h.clone(),w.clone()]))}se&&(b(ie,T),q.push([ie,w.clone()]))}X.push(q)}R.push(X);let W=2*S,Y=2;for(let k=0;k<f;k++){let q=W*k,U=W*((k+1)%f),G=[j[q]];for(let ee=1;ee<S;ee++){I=j[q+ee],E=j[U+ee],G.push(I);for(let Q=1,te=ee-Y+1;Q<=te;Q++)h.lerpVectors(I,E,Q/(te+1)),h.sub(T).setLength(H[k]).add(T),G.push(h.clone());G.push(E)}for(let ee=0;ee<S;ee++)G.push(j[ee+S+q]);G.push(j[U+S]);let oe=O.map(ee=>G[ee]);s.push(...oe.map(ee=>[ee.x,ee.y,ee.z]).flat()),d.push(...oe.map(ee=>(b(ee,T),[w.x,w.y,w.z])).flat())}}let z=[];for(let B=0;B<v.length;B++)for(let V=0;V<f;V++){let j=v[B][V];if(j<M){let H=v[j].findIndex(W=>W%M==B),X=R[B][V],$=R[j][H];for(let W=0;W<S;W++){let Y=X[W],k=$[S-W],q=X[W+1],U=$[S-(W+1)];[Y,k,q,q,k,U].forEach(G=>{s.push(G[0].x,G[0].y,G[0].z),d.push(G[1].x,G[1].y,G[1].z)})}z.push(X[0][0],$[S][0],X[S][0],$[0][0])}}for(;z.length;){let B,V,j,H;[B,V]=z.splice(0,2);let X=[B];for(;B!=V;)X.push(V),j=z.indexOf(V),H=j%2,V=z.splice(j-H,2)[1-H];w.subVectors(X[0],X[1]).cross(h.subVectors(X[0],X[2])).normalize();let $=w.dot(X[0])<0;$&&w.negate();for(let W=1;W<=X.length-2;W++)[X[W+ +$],X[W+1-+$],X[0]].forEach(Y=>{s.push(Y.x,Y.y,Y.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new _o;for(let A=0;A<s.length;A+=3){p.x=s[A+0],p.y=s[A+1],p.z=s[A+2];let v=b(p)/2/Math.PI+.5,M=_(p)/Math.PI+.5;l.push(v,1-M)}let f=new _o,h=new _o,m=new _o,y=new _o,g=new dd,x=new dd,S=new dd,w=(A,v,M,O)=>{O<0&&A.x===1&&(l[v]=A.x-1),M.x===0&&M.z===0&&(l[v]=O/2/Math.PI+.5)};for(let A=0,v=0;A<s.length;A+=9,v+=6){f.set(s[A+0],s[A+1],s[A+2]),h.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[v+0],l[v+1]),x.set(l[v+2],l[v+3]),S.set(l[v+4],l[v+5]),y.copy(f).add(h).add(m).divideScalar(3);let M=b(y);w(g,v+0,f,M),w(x,v+2,h,M),w(S,v+4,m,M)}for(let A=0;A<l.length;A+=6){let v=l[A+0],M=l[A+2],O=l[A+4],T=Math.max(v,M,O),C=Math.min(v,M,O);T>.9&&C<.1&&(v<.2&&(l[A+0]+=1),M<.2&&(l[A+2]+=1),O<.2&&(l[A+4]+=1))}function b(A){return Math.atan2(A.z,-A.x)}function _(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(t){return new Zo(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as FC}from"three";var Xy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new ds(t*.5,i,a):new FC(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},ds=class extends Zo{constructor(t=1,e=.2,r=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],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new ds(t.radius,t.corner,t.cornerSides)}};import{Plane as ZC,Shape as ug,Vector2 as Ao,Vector3 as JC,MathUtils as xd,LineCurve as vd,QuadraticBezierCurve as dg,CubicBezierCurve as dc}from"three";import{CubicBezierCurve as lc,EllipseCurve as jC,LineCurve as cc,LineCurve3 as UC,MathUtils as HC,QuadraticBezierCurve as fd,SplineCurve as qC,Vector2 as Bt,Vector3 as Zy}from"three";var ps=1e-12,Ui=class{constructor(t){this.position=new Bt;this.startPosition=new Bt;this.uuid=HC.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Ui(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Hi=class extends Ui{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Hi(this.parent).copy(this)}},Tr=class extends Ui{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Hi(this),new Hi(this))}static create(e,r){let o=new Tr(e,new Bt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?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 Tr(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),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new Bt,r=new Bt){let[o,i]=this.computeTangents();return o&&i&&(Ky(o,e),Ky(i,r)),[e,r]}computeTangent(e=new Bt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new Bt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ky(n,t=new Bt){let e=n.length();return t.set(-n.y/e,n.x/e)}var hd=n=>n,qi=new Bt,uc=new Bt,WC=new Bt,$C=new Bt,YC=new Bt,XC=new Bt,Jy=new Zy,eg=new Zy;function tg(n){let t=new Bt;t.addVectors(n.v0,qi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Bt;return e.addVectors(n.v2,uc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new lc(n.v0,t,e,n.v2)}function fs(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function KC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function QC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function md(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.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+r*r-i*i)/(2*o*r))}function rg(n,t,e){return Qy(n,t)&&Qy(t,e)&&pd(n.position,t.position,e.position)}function pd(n,t,e){return qi.copy(t).sub(n).cross(uc.copy(e).sub(n))===0}function og(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=(n.y+t.y)/2,s=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+d),o.set(s-l,a-d),[r,o]}function ng(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function ig(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,d=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+d)*(s+d)),u;return md(t,n,e)>Math.PI&&(c*=-1),fs(d,s)?u=(s+d)*(r/c-.5)*8/3/(a-l):u=(a+l)*(r/c-.5)*8/3/(d-s),o.set(t.x-u*s,t.y+u*a),i.set(e.x+u*d,e.y-u*l),[o,i]}function yd(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Qy(n,t){return pd(n.position,n.controls[1].position,t.position)&&pd(n.position,t.controls[0].position,t.position)}function ag(n,t,e,r,o=.5){let i=qi.subVectors(t,n).multiplyScalar(o).add(n),a=uc.subVectors(e,t).multiplyScalar(o).add(t),s=WC.subVectors(r,e).multiplyScalar(o).add(e),l=i,d=$C.subVectors(a,i).multiplyScalar(o).add(i),c=YC.subVectors(s,a).multiplyScalar(o).add(a),u=s,p=XC.subVectors(c,d).multiplyScalar(o).add(d);return[n.x,n.y,l.x,l.y,d.x,d.y,p.x,p.y,c.x,c.y,u.x,u.y,r.x,r.y]}function sg(n,t,e=12,r=!0){let o=eg.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let d=hd(t[l]),c=qi,u=Jo(d,e);s.push(u);for(let p=0;p<=u;p++)if(d instanceof lc||d instanceof fd||d instanceof cc){if(d.getPoint(p/u,c),o.set(c.x,c.y,0),i!==void 0&&QC(i,o))continue;i===void 0&&(i=Jy),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return r&&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 lg(n,t,e,r=12,o=!0){let i=eg.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let d,c=hd(t[l]),u=qi,p=Jo(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof lc||c instanceof fd||c instanceof cc){if(c.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=Jy:(n.setXYZ(a,d.x,d.y,d.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),d.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 gd(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=Jo(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=Jo(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Jo(n[0].roundedCurveCorner,t)*.5),r}function Jo(n,t=12){return n&&n instanceof jC?t*2:n&&(n instanceof cc||n instanceof UC)?1:n&&n instanceof qC?t*n.points.length:t}function cg(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=hd(t[a]),l=Jo(s,e),d=qi;for(let c=0;c<=l;c++)if(s instanceof lc||s instanceof fd||s instanceof cc){if(s.getPoint(c/l,d),o!==void 0&&KC(o,d,ps))continue;o===void 0&&(o=uc),o.copy(d),n.push(d.x,d.y),i++}}return fs(n[0],n[n.length-2],ps)&&fs(n[1],n[n.length-1],ps)&&(n.pop(),n.pop()),r&&i>1&&!(fs(n[i-1],n[1],ps)&&fs(n[i-2],n[0],ps))&&(n.push(n[0],n[1]),i++),n}var bd=new Ao,eP=new Ao,tP=new Ao,rP=new Ao,oP=new Ao,nP=new Ao,Ne=class extends ug{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new ZC(new JC(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=xd.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Ne;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Tr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ne.createFromState(a)),r!==void 0&&o!==void 0&&i.applySize(r,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 r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],d=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=d;else return c+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 r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=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 r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=bd.set(e,r);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,r);this._update()}createPoint(e,r=0,o=xd.generateUUID()){let i;e instanceof Ao?i=e:i=new Ao(e,r);let a=new Tr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return sg(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=gd(this.points,e,!1),this.roundedCurveDivisions=gd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return lg(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),cg(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=Jo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,d)=>l+d,0));for(let l=0,d=i.length;l<d;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,r,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(yd(i,a)){let u=i.position.distanceTo(a.position);return i.position.distanceTo(bd.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=s[u];return(r-d)/l}dispose(){}_applyCurveForPoint(e,r){yd(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.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,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(r===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=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],l=this.points[o+1]??this.points[0],d=a.roundness,c=s&&l&&rg(s,a,l);if(!a.controlsMoved()&&d>0&&!c){let u=a.curveBefore,p=a.curveAfter;if(u===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=u.getLength(),y=p.getLength(),g=Math.min(d,m*.499),x=Math.min(d,y*.499),S=Math.min(g,x),w=1-S/m,b=S/y,_=u.getPointAt(w,bd),A=p.getPointAt(b,eP);this._subSplitCurve(u,f,w,_,void 0),this._subSplitCurve(p,h,b,void 0,A);let v;if(this.useCubicForRoundedCorners){let M=md(_,a.position,A)/2,O=Math.tan(M)*_.distanceTo(a.position),[T,C]=og(_,A,O,tP,rP),P=ng(T,C,a.position),[I,E]=ig(P,_,A,O,oP,nP);v=new dc(_.clone(),I.clone(),E.clone(),A.clone())}else v=new dg(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+r,0,v),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof vd)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,d=s.getUtoTmapping(o,0),c=ag(s.v0,s.v1,s.v2,s.v3,d);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return r}clone(){let e=new Ne(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],d=e.points[i+3],c=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new Tr(xd.generateUUID(),new Ao(a,s));f.controls[0].position.set(l,d),f.controls[1].position.set(c,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ne;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof dc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,d;for(l=0,d=a.length;l<d;l++)a[l]instanceof dg&&(a[l]=tg(a[l]));for(l=0,d=a.length;l<d;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof dc?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof vd&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],u=!1;return c instanceof dc?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof vd&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=i(e.curves),e instanceof ug&&(this.shapeHoles=e.holes.map(a=>{let s=new Ne;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let i=this.getPointByUuid(e)?.controls[0];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let i=this.getPointByUuid(e)?.controls[1];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}};var wd=Math.PI*2;function Sd({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function iP(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),a=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function pg(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function aP(n,t,e,r,o,i,a,s,l,d){let c=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*u-c*f-u*p;h<0&&(h=0),h/=c*f+u*p,h=Math.sqrt(h)*(l===d?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,x=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,b=(-a-m)/o,_=(-s-y)/i,A=pg(1,0,S,w),v=pg(S,w,b,_);return!d&&v>0&&(v-=wd),d&&v<0&&(v+=wd),{centerx:g,centery:x,ang1:A,ang2:v}}function fg({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let d=(n-e)/2,c=(t-r)/2;if(d===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=aP(n,t,e,r,o,i,d,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(wd/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);h/=x;for(let S=0;S<x;S++)l.push(iP(f,h)),f+=h;return l.map(S=>{let{x:w,y:b}=Sd(S[0],o,i,m,y),{x:_,y:A}=Sd(S[1],o,i,m,y),{x:v,y:M}=Sd(S[2],o,i,m,y);return{x1:w,y1:b,x2:_,y2:A,x:v,y:M}})}import{BufferAttribute as yc,BufferGeometry as xP}from"three";var Pe;(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"})(Pe||(Pe={}));var Xe;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Xe||(Xe={}));function me(n,t){if(!n)throw t||"Assertion Failed!"}var pe=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){me(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){me(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){me(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){me(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var a,s,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(a=n.edgeEval(t,r,e),s=n.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,e.s)):(a=n.edgeSign(t,r,e),s=-n.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(a=n.transEval(t,r,e),s=n.transEval(r,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,e.t)):(a=n.transSign(t,r,e),s=-n.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,o.t)):i.t=(r.t+e.t)/2},n}(),hs=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}(),pc=function(){function n(t){this.side=t,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(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Wi=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}(),hg=function(){function n(){var t=new Wi,e=new hs,r=new pc(0),o=new pc(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new pc(0),r=new pc(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;me(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;me(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var t=new Wi,e=new Wi,r=new hs,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Wi;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new hs;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new hs;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Wi;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var a=new hs;this.makeFace_(a,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&pe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&pe.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,a,s,l,d;for(i=t,i=t;(o=i.next)!==t;i=o){me(o.prev===i),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){me(a.prev===s),l=a.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(me(a.prev===s&&a.anEdge===null),d=r,d=r;(l=d.next)!==r;d=l)me(l.Sym.next===d.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(l.Sym.next===d.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),mg=function(){function n(){this.handle=null}return n}(),yg=function(){function n(){this.key=null,this.node=0}return n}(),sP=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new mg,this.handles[r]=new yg;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,me(a<=this.max),i=e[a].handle,a>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;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 mg;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new yg}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;me(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),_d=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}(),gg=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),lP=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new gg,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(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new gg;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),cP=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,a=r.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),l=pe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){me(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new _d;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),n.finishRegion(t,a),s=i.eUp,a=i}return s},n.addRightEdges=function(t,e,r,o,i,a){var s,l,d,c,u=!0;d=r;do me(pe.vertLeq(d.Org,d.Dst)),n.addRegionBelow(t,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),d=s.eUp.Sym,d.Org===c.Org;)d.Onext!==c&&(t.mesh.splice(d.Oprev,d),t.mesh.splice(c.Oprev,d)),s.windingNumber=l.windingNumber-d.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!u&&n.checkForRightSplice(t,l)&&(n.addWinding(d,c),n.deleteRegion(t,l),t.mesh.delete(c)),u=!1,l=s,c=d;l.dirty=!0,me(l.windingNumber-d.winding===s.windingNumber),a&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=pe.vertL1dist(e,t),i=pe.vertL1dist(r,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.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&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(pe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a;if(me(!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=t.mesh.splitEdge(o),t.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=r.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a=o.Org,s=i.Org,l=o.Dst,d=i.Dst,c,u,p=new Wi,f,h;if(me(!pe.vertEq(d,l)),me(pe.edgeSign(l,t.event,a)<=0),me(pe.edgeSign(d,t.event,s)>=0),me(a!==t.event&&s!==t.event),me(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),u=Math.max(s.t,d.t),c>u))return!1;if(pe.vertLeq(a,s)){if(pe.edgeSign(d,a,s)>0)return!1}else if(pe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),pe.intersect(l,a,d,s,p),me(Math.min(a.t,l.t)<=p.t),me(p.t<=Math.max(s.t,d.t)),me(Math.min(d.s,l.s)<=p.s),me(p.s<=Math.max(s.s,a.s)),pe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.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(t,e),!1):!pe.vertEq(l,t.event)&&pe.edgeSign(l,t.event,p)>=0||!pe.vertEq(d,t.event)&&pe.edgeSign(d,t.event,p)<=0?d===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(pe.edgeSign(l,t.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),pe.edgeSign(d,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,a,l,s,d),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,d=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),pe.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),a),d=!0),pe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),d=!0),d){n.addRightEdges(t,e,r.Onext,i,i,!0);return}pe.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,a,s,l;if(o=e.eUp,pe.vertEq(o.Org,r)){me(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!pe.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}me(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(me(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),pe.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,a,s,l,d=new _d;if(d.eUp=e.anEdge.Sym,r=t.dict.search(d).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,pe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=pe.vertLeq(s.Dst,a.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);me(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(t,i,null);s.Onext===a?n.connectRightVertex(t,o,s):n.addRightEdges(t,o,s.Onext,a,a,!0)},n.addSentinel=function(t,e,r,o){var i=new _d,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new lP(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;n.addSentinel(t,o,i,a),n.addSentinel(t,o,i,s)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(me(e.fixUpperEdge),me(++r===1)),me(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,pe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new sP(i,pe.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,me(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!pe.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),uP=function(){function n(){this.mesh=new hg,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=Pe.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(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,a,s,l=[0,0,0],d=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],d[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<d[g]&&(d[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var x=0;if(l[1]-d[1]>l[0]-d[0]&&(x=1),l[2]-d[2]>l[x]-d[x]&&(x=2),d[x]>=l[x]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[x],o=f[x],c[0]=r.coords[0]-o.coords[0],c[1]=r.coords[1]-o.coords[1],c[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],p[0]=c[1]*u[2]-c[2]*u[1],p[1]=c[2]*u[0]-c[0]*u[2],p[2]=c[0]*u[1]-c[1]*u[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,a=t.next;a!==t;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=r.next;e!==r;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 t=this.mesh.vHead,e=[0,0,0],r,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),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,d=t.next;d!==t;d=d.next)l?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,l=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;pe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;pe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(pe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(pe.edgeGoesLeft(o.Lnext)||pe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(pe.edgeGoesRight(r.Lprev)||pe.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var d=t.vHead.next;d!==t.vHead;d=d.next)d.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var d=i.Org;d.n===-1&&(d.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>r)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===Xe.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var d=t.vHead.next;d!==t.vHead;d=d.next)if(d.n!==-1){var u=d.n*o;this.vertices[u+0]=d.coords[0],this.vertices[u+1]=d.coords[1],o>2&&(this.vertices[u+2]=d.coords[2]),this.vertexIndices[d.n]=d.idx}for(var p=0,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var d=i.Org;this.elements[p++]=d.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===Xe.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==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 l=0,d=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[d++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new hg),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,a){if(t===void 0&&(t=Pe.ODD),e===void 0&&(e=Xe.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=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),cP.computeInterior(this,a);var s=this.mesh;return e===Xe.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===Xe.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function Cr(n){var t=n.windingRule,e=t===void 0?Pe.ODD:t,r=n.elementType,o=r===void 0?Xe.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,d=n.normal,c=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var g=new uP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(l||2,p[x]);return g.tesselate(e,o,a,l,c,h),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var Q4=Pe.ODD,Z4=Pe.NONZERO,J4=Pe.POSITIVE,e5=Pe.NEGATIVE,t5=Pe.ABS_GEQ_TWO,r5=Xe.POLYGONS,o5=Xe.CONNECTED_POLYGONS,n5=Xe.BOUNDARY_CONTOURS;import{Box2 as mP,BufferAttribute as mc,BufferGeometry as yP,Vector2 as gP}from"three";var fc=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*fc.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*fc.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let d=new Float32Array(o,a*i,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),d.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),d.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=d,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ms=fc;ms.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Sg=Rt(bg()),ys={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Od={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Md={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},Pd=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),tn=class extends yP{constructor(e,r,o=0,i=12,a=3,s=Pe.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=i,this._bevelSegmentsInput=a;let d=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(T=>{let C=T.extractShapePointsToFlatArray([],i),P=[];for(let I=C.length-1;I>=1;I-=2){let E=C[I-1],R=C[I-0];P.push(E,R)}return P}),u=[],p=[];for(let T=0;T<d.length;T+=2)p.push([d[T],d[T+1]]);u.push(p);for(let T=0;T<c.length;T++){let C=c[T],P=[];for(let I=0;I<C.length;I+=2)P.push([C[I],C[I+1]]);u.push(P)}let f;e.isText?f=new mP().setFromPoints(e.points.map(C=>C.position)).getSize(new gP).length()*.1:u[0].length===0?f=o:f=(0,Sg.default)(u).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=Cr({windingRule:s,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[d]})}catch{h=ys}let m;try{m=Cr({windingRule:Pe.ODD,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Od}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let T=0;T<m.elements.length;T++){let C=m.elements[T],P=T%2===0?h.vertexCount:0;h.elements.push(C+P)}for(let T=0;T<m.vertexIndices.length;T++){let C=m.vertexIndices[T],P=h.vertexCount;h.vertexIndices.push(C+P)}for(let T=0;T<m.vertices.length;T++){let C=m.vertices[T];h.vertices.push(C)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let T=0,C=h.vertexCount;T<C;T++){let P=T*2,I=h.vertices[P+0],E=h.vertices[P+1];I<g&&(g=I),I>x&&(x=I),E<S&&(S=E),E>w&&(w=E)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new ms(this._computeBufferEstimatedSize(h));let b=[],_=[];for(let T=h.elementCount-1;T>=0;T--){let C=T>=y,P=T*2,I=h.elements[P+0],E=h.elements[P+1],R=I+E,D={start:I,count:E,normals:[],continuous:[],concave:[]},z=I,B=R-1,V=I+1,j=this._shape.roundedCurves.length;do{let Y=z-I,k=h.vertices[B*2+0],q=h.vertices[B*2+1],U=h.vertices[z*2+0],G=h.vertices[z*2+1],oe=h.vertices[V*2+0],ee=h.vertices[V*2+1],Q=U-k,te=G-q,Z=Math.sqrt(Q*Q+te*te);Q/=Z,te/=Z;let se=U-oe,ne=G-ee,ie=Math.sqrt(se*se+ne*ne);se/=ie,ne/=ie,D.normals[Y*2+0]=-ne,D.normals[Y*2+1]=se,D.concave[Y]=Q*ne-te*se>0;let ue=h.vertexIndices[z];if(Array.isArray(ue))D.continuous[Y]=!1;else{let[le,de]=this._shape.getCurveIndexFromVertexId(ue-1,!0);if(de>0&&de<1)D.continuous[Y]=!0;else{let ge=de===1?le+1:le-1;ge=(ge+j)%j;let Oe=de===1?0:1,He=this._shape.roundedCurves[le].getTangent(de),Me=this._shape.roundedCurves[ge].getTangent(Oe);D.continuous[Y]=He.dot(Me)>.95}}C&&(D.normals[Y*2+0]*=-1,D.normals[Y*2+1]*=-1),[B,z,V]=[z,V,V+1],V>=R&&(V-=E)}while(V!==I+1);let H=[];H.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,R*2),vertexCount:E,vertexIndices:new Array(E).fill(!0).map((Y,k)=>[k,k]),elements:[0,E],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,R*2)});let X=0;for(let Y=1;Y<=this._bevelSegments;Y++){let k=Y/this._bevelSegments*Math.PI/2,q=(1-Math.cos(k))*this._bevel,U=[],G=[],oe=[],ee=[],Q=0;for(let Z=0;Z<E;Z++){let se=Z*2,ne=(Z-1+E)%E*2,ie=h.vertices[D.start*2+se+0],ue=h.vertices[D.start*2+se+1],le=-D.normals[ne+0]*q,de=-D.normals[ne+1]*q,ge=-D.normals[se+0]*q,Oe=-D.normals[se+1]*q;if(D.concave[Z]||!D.concave[Z]&&C){let He=Math.atan2(de,le),Me=Math.atan2(Oe,ge);Me>He&&(Me-=Math.PI*2);let Ge=Me-He;if(D.continuous[Z]||C){let Ut=He+Ge/2,Se=Math.cos(Ut)*q,ut=Math.sin(Ut)*q;U[2*Q+0]=ie+Se*(C?-1:1),U[2*Q+1]=ue+ut*(C?-1:1),ee[Q]=Z,Q++}else{let Ut=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let Se=0;Se<=Ut;Se++){let ut=He+Ge*(Se/Ut),mt=Math.cos(ut)*q,Qn=Math.sin(ut)*q;U[2*Q+0]=ie+mt,U[2*Q+1]=ue+Qn,ee[Q]=Z,Q++}}}else U[2*Q+0]=ie+le,U[2*Q+1]=ue+de,ee[Q]=Z,G[Z]=Q,Q++,U[2*Q+0]=ie,U[2*Q+1]=ue,ee[Q]=Z,Q++,U[2*Q+0]=ie+ge,U[2*Q+1]=ue+Oe,ee[Q]=Z,oe[Z]=Q,Q++}let te=Cr({windingRule:Pe.POSITIVE,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[U],edgeCreateCallback:Z=>{let ne=Z.Org.idx,ie=ee[ne],ue=ee[(ne+1)%ee.length];Z.idx=[ie,ue],Z.Sym.idx=[ue,ie]},vertexIdCallback:Z=>{let se=Z.Lprev.idx;return[se?se[1]:0,Z.idx?Z.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${Y}'th loop`);if(!te.vertexCount){let Z=(Y-1)/this._bevelSegments*Math.PI/2;X=(1-Math.sin(Z))*this._bevel;break}for(let Z=0;Z<te.vertexIndices.length;Z++){let[se,ne]=te.vertexIndices[Z];if(se===ne)continue;let ie=ne;ne<se&&(ie+=E);for(let ue=se;ue<ie;ue++){let le=ue%E,de=(ue+1)%E;if(!D.continuous[le]||!D.continuous[de]){te.vertexIndices[Z]=[se,le],te.vertexIndices.splice(Z+1,0,[de,ne]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}H.push({bevelI:Y,angle:k,size:q,boundary:te,reverseMap:ee,insetPoints:U})}let $=(Y,k,q)=>{let U=0,G=Y.boundary.vertexIndices.length;for(;U<G&&q(Y.boundary.vertexIndices[k]);)k=(k+1)%G,U++;return U},W=b.length;for(let Y=1;Y<H.length;Y++){let k=H[Y-1],q=H[Y],U=k.boundary.vertexIndices.length,G=q.boundary.vertexIndices.length;if(!U||!G)break;let oe=D.concave.length,ee=0,Q=Pd(ee,E);for(;!k.boundary.vertexIndices.filter(Q).length||!q.boundary.vertexIndices.filter(Q).length;)ee++,Q=Pd(ee,E);let te=k.boundary.vertexIndices.findIndex(Q),Z=q.boundary.vertexIndices.findIndex(Q);do te=(te+1)%U;while(Q(k.boundary.vertexIndices[te]));do Z=(Z+1)%G;while(Q(q.boundary.vertexIndices[Z]));ee=(ee+1)%E;let se=ee,ne=0,ie=this._buildBevelVert(D,k,(te-1+U)%U,void 0,ne),ue=this._buildBevelVert(D,q,(Z-1+G)%G,void 0,ne),le=ie,de=ue,ge,Oe,He=!1;do{ne=(ee||oe)/oe,Q=Pd(ee,E);let Me=$(k,te,Q),Ge=$(q,Z,Q),Ut=He;if(He=!1,Me&&!Ge){for(let Se=0;Se<Me;Se++)ge=this._buildBevelVert(D,k,(te+Se)%U,Se/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge;He=!0}else if(!Me&&Ge)for(let Se=0;Se<Ge;Se++)Oe=this._buildBevelVert(D,q,(Z+Se)%G,Se/(Ge-1),ne),b.push(de.topN,le.topP,Oe.topP),l===!1&&b.push(le.bottomP,de.bottomN,Oe.bottomP),de=Oe;else if(Me&&Ge)if(ge=this._buildBevelVert(D,k,te,0,ne),Oe=this._buildBevelVert(D,q,Z,0,ne),Ut?(b.push(le.topN,Oe.topP,de.topN),b.push(le.topN,ge.topP,Oe.topP),l===!1&&(b.push(Oe.bottomP,le.bottomN,de.bottomN),b.push(Oe.bottomP,ge.bottomP,le.bottomN))):(b.push(de.topN,le.topN,ge.topP),b.push(de.topN,ge.topP,Oe.topP),l===!1&&(b.push(ge.bottomP,le.bottomN,de.bottomN),b.push(ge.bottomP,de.bottomN,Oe.bottomP))),le=ge,de=Oe,Me===Ge)for(let Se=1;Se<Me;Se++)ge=this._buildBevelVert(D,k,(te+Se)%U,Se/(Me-1),ne),Oe=this._buildBevelVert(D,q,(Z+Se)%G,Se/(Ge-1),ne),b.push(le.topN,ge.topP,de.topN),b.push(de.topN,ge.topP,Oe.topP),l===!1&&(b.push(ge.bottomP,le.bottomN,de.bottomN),b.push(ge.bottomP,de.bottomN,Oe.bottomP)),le=ge,de=Oe;else if(Me>Ge){let Se=Me/Ge,ut=0;for(let mt=1;mt<Me;mt++)ge=this._buildBevelVert(D,k,(te+mt)%U,mt/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge,mt>(ut+1)*Se&&(ut++,Oe=this._buildBevelVert(D,q,(Z+ut)%G,ut/(Ge-1),ne),b.push(de.topN,ge.topP,Oe.topP),l===!1&&b.push(ge.bottomP,de.bottomN,Oe.bottomP),de=Oe)}else{let Se=Ge/Me,ut=0;for(let mt=1;mt<Ge;mt++)Oe=this._buildBevelVert(D,q,(Z+mt)%G,mt/(Ge-1),ne),b.push(de.topN,ge.topP,Oe.topP),l===!1&&b.push(ge.bottomP,de.bottomN,Oe.bottomP),de=Oe,mt>(ut+1)*Se&&(ut++,ge=this._buildBevelVert(D,k,(te+ut)%U,ut/(Me-1),ne),b.push(le.topN,ge.topP,de.topN),l===!1&&b.push(ge.bottomP,le.bottomN,de.bottomN),le=ge)}te=(te+Me)%U,Z=(Z+Ge)%G,ee=(ee+1)%oe}while(ee!==se)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(H,D,b),C){let Y=[];for(let k=b.length-1;k>=W+2;k-=3){let q=b[k-2],U=b[k-1],G=b[k-0];Y.push(G,U,q)}b.splice(W,b.length-W,...Y)}if(C){let Y=[];for(let k=H[H.length-1].boundary.vertices.length-1;k>=1;k-=2){let q=H[H.length-1].boundary.vertices[k-1],U=H[H.length-1].boundary.vertices[k-0];Y.push(q,U)}_.push(Y)}if(!C){let Y=H[H.length-1],k;try{k=Cr({windingRule:H.length>1?Pe.POSITIVE:Pe.ODD,elementType:Xe.POLYGONS,vertexSize:2,strict:!0,contours:[Y.insetPoints,..._]})}catch{k=Md}if(!k)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let q=0;q<k.elementCount*3;q+=3){let U=this._buildSurfaceVert(k,k.elements[q+0],X),G=this._buildSurfaceVert(k,k.elements[q+1],X),oe=this._buildSurfaceVert(k,k.elements[q+2],X);b.push(U.top,G.top,oe.top),l===!1&&b.push(oe.bottom,G.bottom,U.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new mc(Uint32Array.from(b),1),v=new mc(this._buffer.positions,3),M=new mc(this._buffer.normals,3),O=new mc(this._buffer.uvs,2);v.needsUpdate=!0,M.needsUpdate=!0,O.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",M),this.setAttribute("uv",O),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.bottomP)}}_buildSurfaceVert(e,r,o){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,d=(s-this._minY)/this._height;this.forPathBevel&&(d=1);let c=this._buffer.get(this.forPathBevel?1:2),u=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=a,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=d,this.forPathBevel===!1&&(this._buffer.positions[u+3]=a,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=o,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=d),this.vertexCache[i]=f,f}_buildBevelVert(e,r,o,i=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,d]=r.boundary.vertexIndices[o],c,u,p,f;l!==d?(u=l,c=d,f=!1,p=e.continuous[u]&&e.continuous[c]):(c=l,u=(c-1+e.count)%e.count,f=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,g=c*2,x=u*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],b=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let v=e.normals[g+0],M=e.normals[g+1],O=e.normals[x+0],T=e.normals[x+1];if(f){let R=O-v,D=T-M;v=v+R*(1-i),M=M+D*(1-i);let z=Math.sqrt(v*v+M*M);v/=z,M/=z}let C=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),P=C*3,I=C*2,E={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1,pathBevelUCoord:a};return this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=v*h,this._buffer.normals[P+1]=M*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=v*h,this._buffer.normals[P+4]=M*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(C+=1,P+=3,I+=2):(C+=2,P+=6,I+=4),E.topP=C+0,E.bottomP=C+1,this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=O*h,this._buffer.normals[P+1]=T*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=O*h,this._buffer.normals[P+4]=T*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=E,E}clone(){let e=new tn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var $i=class extends xP{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=Xe.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:Xe.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,d=!0,c,u;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],x=i[y+1];if(c!==void 0&&g!==c&&(l=!1),u!==void 0&&x!==u&&(d=!1),c=g,u=x,!l&&!d)break}if(!l&&!d)try{s=Cr({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=ys}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new yc(new Float32Array(p*3),3),this._normalAttribute=new yc(new Float32Array(p*3),3),this._uvAttribute=new yc(new Float32Array(p*2),2),this._indexAttribute=new yc(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),v<y&&(y=v),v>g&&(g=v)}let x=m-h,S=g-y;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1],M=(A-h)/x,O=(v-y)/S;this._positionAttribute.setXYZ(w,A,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,M,O)}for(let w=0,b=f;w<b;w++){let _=w*3,A=s.elements[_+0],v=s.elements[_+1],M=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,v),this._indexAttribute.setX(_+2,M)}}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 $i(this._shape,this._curveSegments);return e.userData=yo(this.userData),e}};var Yi=class extends tn{constructor(e,r,o=0,i=12,a=3,s=Pe.ODD){super(e,r,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.bottomP)}}clone(){let e=new Yi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Xt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Pe.ODD},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ne?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Ne(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Ne(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new $i(n.shape,o,{windingRule:a}):s=new Yi(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as vP,Float32BufferAttribute as bP,MathUtils as Id,Vector2 as _g}from"three";var Ag=Math.PI*2,Ki=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Id.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ne?n.shape:new Ne,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:t,height:e,spikes:r,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,d=n.shape,c=t*.5,u=e*.5,p=SP(d,c,u,o*Math.PI/180,r,i);d.isClosed=!0,d.update();let f;return o===0?(f=new vP,f.setAttribute("position",new bP([],3))):f=Xt.create({shape:d,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function SP(n,t,e,r,o,i){if(r>=Ag)return o>30||o%4===0?(_P(n,t,e,i),Math.round(o/4)):wg(n,r,o,t,e,i);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},d=fg({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%d.length===0?wP(n,a.x,a.y,d,o,t,e,i):wg(n,r,o,t,e,i)}function wP(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(Xi(t,e));for(let d=0,c=r.length;d<c;d++){let u=r[d],p=n.points[d],f=Xi(u.x,u.y);p.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return s>0?Tg(n,i,a,s):n.addPoint(Xi(0,0)),l}function wg(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,d=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(Xi(d,c))}return t<Ag?i>0?Tg(n,r,o,i):n.addPoint(Xi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Cg(n,r,o,i)),1}function _P(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(gc(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(gc(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(gc(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(gc(o,i-e,o+s,i-e,o-s,i-e)),r>0&&Cg(n,t,e,r)}function Xi(n,t){return new Tr(Id.generateUUID(),new _g(n,t))}function gc(n,t,e,r,o,i){let a=Xi(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function Tg(n,t,e,r){Pg(n,t,e,r).forEach(i=>n.addPoint(i))}function Cg(n,t,e,r){let o=Pg(n,t,e,r),i=new Ne;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Pg(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new _g(o/t,i/e),s=n.points.map(l=>{let d=l.clone();return d.uuid=Id.generateUUID(),d}).reverse();return s.forEach(l=>{l.position.multiply(a);let d=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(d)}),s}import{BufferGeometry as AP,Float32BufferAttribute as Nd,Uint32BufferAttribute as TP,Vector3 as Og}from"three";var Mg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),a=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,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:t,height:e,depth:r,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:d,cornerRadius:c,cornerSegments:u}=n.parameters,p=new gs(!1,t,e,r,o,i,a,s,l,d,c,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Ed=new TP([0,0,0],1),gs=class extends AP{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,d=1,c=1,u=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let h=()=>new Og,m=new Og,y=h(),g=h(),x=h(),S,w,b,_,A,v,M,O,T=h(),C=h(),P=h(),I=h(),E=h(),R=h(),D=h(),z=h(),B=r-2*l+.001,V=B/a,j=Math.ceil(s*a),H=j+1,X=B/j,$=-B/2,W=c+1,Y=2*Math.PI/c,k=Math.PI/2/p,q=.01,U=Math.min((1-u/100)*l,l-q),G=l-U,oe=0,ee=2,Q=p*ee+ee,te=W*Q/ee,Z=te+W*H,se=Math.max(0,W*(H+Q)),[ne,ie,ue]=[3,3,2].map(rt=>Array(se*rt).fill(0)),le=[],de=i-l;function ge(rt,tr){let Br=Math.PI/2;v=tr*X,O=2*Math.PI*(v%V)/V+Br,v+=$,M=Math.sin(O)*de,A=Math.cos(O)*de,t?rt.set(A,M,v):rt.set(A,v,M)}ge(m,-1e-10),ge(y,0),T.copy(m),ge(m,1);let Oe=m.distanceTo(y),He=f?0:G+U,Me=Oe*j+2*He,Ge=U,Ut=Me-He;for(let rt=0;rt<=j;rt++){ge(g,rt),z.subVectors(g,T).normalize(),T.copy(g),R.copy(g).setComponent(+t+1,0).normalize(),D.crossVectors(z,R).normalize();let tr=rt===0,Br=rt===j,Gv=tr?3*Math.PI/2:k,zv=tr?Ge:Ut,kv=tr?W:Z,Fv=tr?0:se-W,jv=z.clone().multiplyScalar(tr?-G:G).add(g),Uv=z.clone().multiplyScalar(tr?-1:1).normalize();for(let uo=0;uo<W;uo++){let Zp=uo*Y;if(C.addVectors(m.copy(R).multiplyScalar(l*Math.cos(Zp)),y.copy(D).multiplyScalar(l*Math.sin(Zp))),P.copy(C).normalize(),tr||Br){f||(oe=Fv+uo,[0,1,2].forEach(Ht=>{ne[oe*3+Ht]=jv.getComponent(Ht),ie[oe*3+Ht]=Uv.getComponent(Ht)}),ue[oe*2]=+Br,ue[oe*2+1]=uo/c),y.copy(P).multiplyScalar(U),x.addVectors(g,y);for(let Ht=0;Ht<p;Ht++){let mu=Ht*k+Gv;I.addVectors(m.copy(z).multiplyScalar(G*Math.sin(mu)),y.copy(P).multiplyScalar(G*Math.cos(mu))),E.copy(I).normalize(),y.addVectors(x,I),I.normalize(),oe=kv+Ht*W+uo,[0,1,2].forEach(qs=>{ne[oe*3+qs]=y.getComponent(qs),ie[oe*3+qs]=E.getComponent(qs)});let Hv=+tr+Math.sin(mu);ue[oe*2]=(zv+G*Hv)/Me,ue[oe*2+1]=uo/c}}y.addVectors(g,C),oe=te+rt*W+uo,[0,1,2].forEach(Ht=>{ne[oe*3+Ht]=y.getComponent(Ht),ie[oe*3+Ht]=P.getComponent(Ht)}),ue[oe*2]=(He+rt*Oe)/Me,ue[oe*2+1]=uo/c}}let Se=H+2*p+ee,ut=1,[mt,Qn]=[+f,Se-1];for(let rt=mt;rt<=Qn-1;rt++){let tr=f&&rt===Qn-1;for(let Br=0;Br<W-1;Br++)S=rt*W+Br,w=S+1,b=(tr?Br:S)+W,_=(tr?Br+1:w)+W,rt===0?le.push(w,_,b):rt===Se-2?le.push(S,w,b):le.push(S,w,b,w,_,b)}this.setIndex(le),this.setAttribute("position",new Nd(ne,3)),this.setAttribute("normal",new Nd(ie,3)),this.setAttribute("uv",new Nd(ue,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,d=6*(e-1)*t.radialSegments,c=e,u=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(u?p:i)+r,l=(u?p+1:a)+r,o[d++]=i,o[d++]=a,o[d++]=s,o[d++]=a,o[d++]=l,o[d++]=s;return o.length=d,Ed.array=o,Ed.count=o.length,Ed}};import{IcosahedronGeometry as CP}from"three";var Ig=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new xs(t*.5,i,a):new CP(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},xs=class extends Zo{constructor(t=1,e=.2,r=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,t,e,r),this.type=s}static fromJSON(t){return new xs(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as PP,Shape as OP}from"three";var Ng=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.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:t,segments:e,verticalSegments:r}=n.parameters,o=new OP;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new PP(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as zg,BufferGeometryLoader as kP,Vector3 as FP,BoxGeometry as kg}from"three";import{BufferGeometry as RP,Vector2 as Rd,Vector3 as Gg}from"three";import{Box3 as MP,BufferAttribute as vs,BufferGeometry as Eg,Color as Bd,EventDispatcher as IP,Float32BufferAttribute as Qi,Matrix3 as Dg,Matrix4 as Vg,MathUtils as NP,Object3D as EP,Sphere as DP,Vector2 as ar,Vector3 as Mt,Vector4 as LP}from"three";var Yr=new Vg,Dd=new EP,xc=new Mt,rn=class extends IP{constructor(){super(),this.uuid=NP.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(t){let e=new Dg().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];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(t){return Yr.makeRotationX(t),this.applyMatrix4(Yr),this}rotateY(t){return Yr.makeRotationY(t),this.applyMatrix4(Yr),this}rotateZ(t){return Yr.makeRotationZ(t),this.applyMatrix4(Yr),this}translate(t,e,r){return Yr.makeTranslation(t,e,r),this.applyMatrix4(Yr),this}scale(t,e,r){return Yr.makeScale(t,e,r),this.applyMatrix4(Yr),this}lookAt(t){return Dd.lookAt(t),Dd.updateMatrix(),this.applyMatrix4(Dd.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.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,l=o.uv,d=o.uv2;d!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new Mt().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new Bd().fromBufferAttribute(s,p));function c(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],g=a===void 0?[]:[new Mt().fromBufferAttribute(a,p),new Mt().fromBufferAttribute(a,f),new Mt().fromBufferAttribute(a,h)],x=new Zi(p,f,h,g,y,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new ar().fromBufferAttribute(l,p),new ar().fromBufferAttribute(l,f),new ar().fromBufferAttribute(l,h)]),d!==void 0&&e.faceVertexUvs[1].push([new ar().fromBufferAttribute(d,p),new ar().fromBufferAttribute(d,f),new ar().fromBufferAttribute(d,h)])}let u=t.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[p],h=f.start,m=f.count;for(let y=h,g=h+m;y<g;y+=3)r!==void 0?c(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):c(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)c(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<i.count;p+=3)c(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(xc).negate(),this.translate(xc.x,xc.y,xc.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Vg;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new Mt,e=new Mt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new Mt;if(t){let r=new Mt,o=new Mt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],d=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,d),o.subVectors(l,d),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],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 t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;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 t=new rn;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;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,l=this.faces.length;s<l;s++){let d=new Mt,c={a:new Mt,b:new Mt,c:new Mt};i.push(d),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],d=o.vertexNormals[i];l.copy(s.normal),d.a.copy(s.vertexNormals[0]),d.b.copy(s.vertexNormals[1]),d.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new MP),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new DP),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,d=t.faces,c=this.colors,u=t.colors;e!==void 0&&(o=new Dg().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=u.length;p<f;p++)c.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let h=d[p],m,y,g=h.vertexNormals,x=h.vertexColors,S=new Zi(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=g.length;w<b;w++)m=g[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,b=x.length;w<b;w++)y=x[w],S.vertexColors.push(y.clone());S.materialIndex=h.materialIndex+r,l.push(S)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,d=this.vertices.length;l<d;l++){let c=this.vertices[l],u=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[u]===void 0?(e[u]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[u]]}let a=[];for(let l=0,d=this.faces.length;l<d;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let u=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(u[p]===u[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let d=a[l];this.faces.splice(d,1);for(let c=0,u=this.faceVertexUvs.length;c<u;c++)this.faceVertexUvs[c].splice(d,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new Mt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,d){return l.materialIndex-d.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let d=t[l]._id;a&&a.push(o[d]),s&&s.push(i[d])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],i={},a=[],s={},l=[],d={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,x=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,b=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,A=0;if(A=c(A,0,0),A=c(A,1,y),A=c(A,2,g),A=c(A,3,x),A=c(A,4,S),A=c(A,5,w),A=c(A,6,b),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),x){let v=this.faceVertexUvs[0][h];r.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&r.push(u(m.normal)),w){let v=m.vertexNormals;r.push(u(v[0]),u(v[1]),u(v[2]))}if(b&&r.push(p(m.color)),_){let v=m.vertexColors;r.push(p(v[0]),p(v[1]),p(v[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function u(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return d[m]!==void 0||(d[m]=l.length/2,l.push(h.x,h.y)),d[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new rn().copy(this)}copy(t){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=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],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=t.morphTargets;for(let p=0,f=i.length;p<f;p++){let h={};if(h.name=i[p].name,i[p].vertices!==void 0){h.vertices=[];for(let m=0,y=i[p].vertices.length;m<y;m++)h.vertices.push(i[p].vertices[m].clone())}if(i[p].normals!==void 0){h.normals=[];for(let m=0,y=i[p].normals.length;m<y;m++)h.normals.push(i[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let g=a[p].vertexNormals[m],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),h.vertexNormals.push(x)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let d=t.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Ld().fromGeometry(this),e=new Eg,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",vc.call(new vs(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",vc.call(new vs(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",Lg.call(new vs(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Bg.call(new vs(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Bg.call(new vs(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let d=a[s],c=new Qi(d.data.length*3,3);c.name=d.name,i.push(vc.call(c,d.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Qi(t.skinIndices.length*4,4);e.setAttribute("skinIndex",Rg.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new Qi(t.skinWeights.length*4,4);e.setAttribute("skinWeight",Rg.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.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(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Eg,r=t.geometry;if(t.isPoints||t.isLine){let o=new Qi(r.vertices.length*3,3),i=new Qi(r.colors.length*3,3);if(e.setAttribute("position",vc.call(o,r.vertices)),e.setAttribute("color",Lg.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new Qi(r.lineDistances.length,1);e.setAttribute("lineDistance",BP.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};rn.prototype.isGeometry=!0;var Ld=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(t){let e=[],r,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,d;if(l>0){d=[];for(let g=0;g<l;g++)d[g]={name:s[g].name,data:[]};this.morphTargets.position=d}let c=t.morphNormals,u=c.length,p;if(u>0){p=[];for(let g=0;g<u;g++)p[g]={name:c[g].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.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(r[x.a],r[x.b],r[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 ar,new ar,new ar))}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 ar,new ar,new ar))}for(let b=0;b<l;b++){let _=s[b].vertices;d[b].data.push(_[x.a],_[x.b],_[x.c])}for(let b=0;b<u;b++){let _=c[b].vertexNormals[g];p[b].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(h[x.a],h[x.b],h[x.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Zi=class{constructor(t,e,r,o,i,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new Mt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Bd,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function BP(n){return this.array.set(n),this}function Lg(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),i=new Bd),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Bg(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),i=new ar),t[e++]=i.x,t[e++]=i.y}return this}function vc(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),i=new Mt),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function Rg(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),i=new LP),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var VP=["a","b","c"];function GP(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Vd(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Gd(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,d;if(r.has(l))d=r.get(l);else{let c=e[a],u=e[s];d={a:c,b:u,newEdge:null,faces:[]},r.set(l,d)}d.faces.push(o),i[n].edges.push(d),i[t].edges.push(d)}function zP(n,t,e,r){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],Gd(a.a,a.b,n,r,a,e),Gd(a.b,a.c,n,r,a,e),Gd(a.c,a.a,n,r,a,e)}function bc(n,t,e,r,o){n.push(new Zi(t,e,r,void 0,void 0,o))}function Ji(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Sc(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var wc=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof RP?t=new rn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new Gg,r,o,i,a,s,l=t.vertices,d=t.faces,c=t.faceVertexUvs[0],u=c!==void 0&&c.length>0,p=[],f=new Map;zP(l,d,p,f);let h=[],m,y,g,x,S,w,b;for(let q of Array.from(f.keys())){for(y=f.get(q),g=new Gg,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&&(m=l[GP(x,VP[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(w),g.add(e),y.newEdge=h.length,h.push(g)}let _,A,v,M,O,T,C,P=[];for(o=0,i=l.length;o<i;o++){for(T=l[o],O=p[o].edges,r=O.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),v=_,r<=2&&(r==2?(A=3/4,v=1/8):r==1||r==0),C=T.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)M=O[a],m=M.a!==T?M.a:M.b,e.add(m);e.multiplyScalar(Number(v)),C.add(e),P.push(C)}let I=P.concat(h),E=P.length,R,D,z,B=[],V=[],j,H,X,$,W=new Rd,Y=new Rd,k=new Rd;for(o=0,i=d.length;o<i;o++)x=d[o],R=Number(Vd(x.a,x.b,f).newEdge)+E,D=Number(Vd(x.b,x.c,f).newEdge)+E,z=Number(Vd(x.c,x.a,f).newEdge)+E,bc(B,R,D,z,x.materialIndex),bc(B,x.a,R,z,x.materialIndex),bc(B,x.b,D,R,x.materialIndex),bc(B,x.c,z,D,x.materialIndex),u&&(j=c[o],H=j[0],X=j[1],$=j[2],W.set(Ji(H.x,X.x),Ji(H.y,X.y)),Y.set(Ji(X.x,$.x),Ji(X.y,$.y)),k.set(Ji(H.x,$.x),Ji(H.y,$.y)),Sc(V,W,Y,k),Sc(V,H,W,k),Sc(V,X,Y,W),Sc(V,$,k,Y));t.vertices=I,t.faces=B,u&&(t.faceVertexUvs[0]=V)}};var pt=new FP,Fg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new zg().copy(new kg(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(pt),r={width:pt.x,height:pt.y,depth:pt.z,subdivisions:0}):r=t.parameters;let o={...r,...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:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new zg().copy(new kg(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(pt)):pt.set(a.width,a.height,a.depth),(t!==pt.x||e!==pt.y||r!==pt.z)&&i.scale(pt.x===0?1:t/pt.x,pt.y===0?1:e/pt.y,pt.z===0?1:r/pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new wc(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,t,e){new kP(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(pt);let a=100/pt.x;Object.assign(i.parameters,{width:100,height:pt.y*a,depth:pt.z*a}),t(this.build(i))})}};var _c=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Ne?n.shape:new Ne,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:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,d=t*.5,c=e*.5,u=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=u+Math.sin(y)*d,x=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,x))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=Xt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as jP,Float32BufferAttribute as zd,Vector2 as Xr,Vector3 as bt}from"three";var jg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,d=new Fd(t*.5,e,o,i,a,s,l);return d.scale(1,1,r/t),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function bs(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function kd(n,t,e,r,o,i){let a=t.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let d=a.add(s).normalize();i.copy(n).addScaledVector(d,r/Math.sin(l/2))}else{let d=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(d)),i.addScaledVector(s,r/Math.sin(d))}}function UP(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Fd=class extends jP{constructor(t=.5,e=1,r=4,o=1,i=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],d=[],c=[],u=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,g=(r-2)*Math.PI/r,x=Math.PI-g,S=new bt(0,-f,0),w=new bt(0,f,0),b=new Xr(t,-f),_=new Xr(m,-f),A=new Xr(0,w.y).sub(_),v=new Xr(0,w.y).sub(b),M=new Xr(A.y,-A.x).normalize(),O=new Xr(v.y,-v.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,C);let P;{let V=new bt(M.x,M.y,0),j=new bt(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);P=V.angleTo(j)}let I=a/Math.tan((Math.PI-A.angle())/2),E=a/Math.tan((Math.PI-P)/2),R=new bt;if(!i){d.push(S.x,S.y,S.z),c.push(0,-1,0),u.push(0,0);let V=p++,j=[],H=b.clone(),X=I/Math.cos(Math.PI/r);H.x-=X;for(let $=0;$<r;$++){let W=$/r*Math.PI*2+h,Y=new Xr(Math.sin(W),Math.cos(W));bs(H,Y,R),d.push(R.x,R.y,R.z),c.push(0,-1,0),u.push(0,0),j.push(p++)}for(let $=0;$<j.length;$++)l.push(j[$],V,j[($+1)%j.length])}let D=[];{let V=new bt,j=new bt,H=new bt,X=new bt,$=new bt,W=new bt;for(let Y=0;Y<r;Y++){let k=Y/r*Math.PI*2+h,q=(Y+.5)/r*Math.PI*2+h,U=(Y+1)/r*Math.PI*2+h,G=new Xr(Math.sin(k),Math.cos(k)),oe=new Xr(Math.sin(q),Math.cos(q)),ee=new Xr(Math.sin(U),Math.cos(U));bs(b,G,j),bs(b,ee,H),bs(M,oe,V),kd(w,j,H,E,E,X),d.push(X.x,X.y,X.z),kd(j,w,H,E,I,$),d.push($.x,$.y,$.z),kd(H,j,w,I,E,W),d.push(W.x,W.y,W.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),u.push(0,0),u.push(0,0),u.push(0,0);let Q=p++,te=p++,Z=p++;if(l.push(Q,te,Z),a>0){{let ie=j.clone().add(H).multiplyScalar(.5),ue=w.clone().sub(ie).normalize(),de=S.clone().sub(ie).normalize().add(ue).normalize().multiplyScalar(-1),ge=W.clone().sub($);z(ie,ge,de,A.angle())}let se,ne;{let ie=new bt;bs(O,ee,ie);let ue=W.clone().add(X).multiplyScalar(.5);ue=UP(ue,H,w);let le=W.clone().sub(X);[se,ne]=z(ue,le,ie,P,X.y)}{let ie=se,ue=ie.clone().setY(0).normalize(),le=new bt(0,-1,0),de=ue.clone().cross(le);B(ie,ue,le,de)}D.concat(ne);{let ie=A.angle(),ue=Math.PI-ie,le=w.clone();le.y-=a/Math.sin(ie-Math.PI/2);let de=new bt,ge=[];for(let He=0;He<s;He++){let Me=[],Ge=Math.PI/2-ue*He/s,Ut=Math.cos(Ge),Se=Math.sin(Ge),ut=q;for(let mt=0;mt<=He;mt++){let Qn=Math.cos(ut),rt=Math.sin(ut);V.x=Ut*rt,V.y=Se,V.z=Ut*Qn,de.copy(le).addScaledVector(V,a),d.push(de.x,de.y,de.z),c.push(V.x,V.y,V.z),u.push(0,0),Me.push(p++),ut+=Math.PI*2/He/r}ge.push(Me)}ne.reverse(),ge.push(ne);let Oe=ge.length-1;for(let He=0;He<Oe;He++){let Me=ge[He],Ge=ge[He+1],Ut=Me.length-1;l.push(Ge[1],Me[0],Ge[0]);for(let Se=1;Se<=Ut;Se++)l.push(Me[Se],Me[Se-1],Ge[Se]),l.push(Ge[Se+1],Me[Se],Ge[Se])}}}}}this.setIndex(l),this.setAttribute("position",new zd(d,3)),this.setAttribute("normal",new zd(c,3)),this.setAttribute("uv",new zd(u,2));function z(V,j,H,X,$){let W=-X/2,Y=(Math.PI-X)/2,k=j.clone().normalize().cross(H);V.addScaledVector(H,-a/Math.sin(Y));let q=new bt,U=new bt,G=1,oe=p,ee=[];for(let Q=0;Q<=s;Q++){let te=W+Q/s*X;U.set(0,0,0),U.addScaledVector(k,Math.sin(te)),U.addScaledVector(H,Math.cos(te));for(let Z=0;Z<=G;Z++){let se=Z/G-.5;if(q.copy(V),q.addScaledVector(j,se),q.addScaledVector(U,a),$!=null){let ne=Math.max(0,q.y-$);q.addScaledVector(j,-ne/j.y)}d.push(q.x,q.y,q.z),c.push(U.x,U.y,U.z),u.push(0,0),Z===0&&ee.push(p),p++}}for(let Q=0;Q<s;Q++)for(let te=0;te<G;te++){let Z=oe+te+(G+1)*Q,se=Z+(G+1),ne=se+1,ie=Z+1;l.push(Z,se,ie),l.push(se,ne,ie)}return[V.clone().addScaledVector(j,.5),ee]}function B(V,j,H,X){let $=Math.PI/2,W=v.angle()-$,Y=[],k=new bt,q=new bt;for(let G=0;G<=s;G++){let oe=[],ee=G/s;for(let Q=0;Q<=G;Q++){let Z=((G?Q/G:0)-.5)*x,se=Math.cos(Z),ne=Math.sin(Z),ie=Math.atan(Math.tan(W)*se),ue=($+ie)*ee,le=Math.cos(ue),de=Math.sin(ue);k.set(0,0,0),k.addScaledVector(j,de*se),k.addScaledVector(H,le),k.addScaledVector(X,de*ne),q.copy(V).addScaledVector(k,a),d.push(q.x,q.y,q.z),c.push(k.x,k.y,k.z),u.push(0,0),oe.push(p++)}Y.push(oe)}let U=Y.length-1;for(let G=0;G<U;G++){let oe=Y[G],ee=Y[G+1],Q=oe.length-1;l.push(oe[0],ee[1],ee[0]);for(let te=1;te<=Q;te++)l.push(oe[te-1],oe[te],ee[te]),l.push(oe[te],ee[te+1],ee[te])}}}};var Ac=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Ne?n.shape:new Ne,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,d={x:e*.5,y:r*.5},c={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,b,_){return b>e&&_>r?Math.min(w*e/b,w*r/_):b>e?w*e/b:_>r?w*r/_: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 h=c.x,m=u.x,y=u.y,g=c.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.isClosed=!0;let x=!0;for(let w=0,b=t.points.length;w<b;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=Xt.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as HP,Float32BufferAttribute as qP,MathUtils as Ug,SphereGeometry as WP}from"three";var Hg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=Ug.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:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:d}=n.parameters,c;return d===0?(c=new HP,c.setAttribute("position",new qP([],3))):c=new WP(.5*t,o,i,a,s,l,d*Ug.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as $P}from"three";var qg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new $P(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as YP,Float32BufferAttribute as jd,Vector3 as XP}from"three";var Wg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new Ud(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Ud=class extends YP{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],d=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let u=[],p=Math.PI/2,f=(q=0,U=0,G=0)=>new XP(q,U,G),h=f(),m=f(),[y,g,x]=[e/2,t/2,r/2],S=-g,w=+g,[b,_,A]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(q,U=!1)=>Math.sin(q-Math.PI/(1+ +U)),M=(q,U=!1)=>Math.cos(q-Math.PI/(1+ +U));A.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-x,T=b.z-c;o<=p?(A.z=Math.min(O,T),A.z==T&&(A.y-=(O-T)/Math.tan(p-o))):_.z=Math.min(_.z-O-x,b.z-c),h.subVectors(b,_),m.subVectors(A,_);let C=Math.min(h.length(),m.length())*i/100,P=C*Math.tan(o/2),I=C/Math.cos(o/2),E=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,v(o,!0),M(o,!0)),u.push([A,h.clone()]);let R=(Math.PI-o)/a;for(let q=0;q<=a;q++){let U=p+o+q*R;h.set(0,Math.sin(U)*P,Math.cos(U)*P),h.add(E),m.set(0,v(U),M(U)),u.push([h.clone(),m.clone()])}u.push([b,f(0,1,0)]);let D=Math.sin(R/2)*P*2,z=u.length-1,B=u[0][0].distanceTo(u[1][0]),V=u[z-1][0].distanceTo(u[z][0]),j=B+D*a+V;u[0].push(1);for(let q=0;q<=a;q++)u[q+1].push(1-(B+q*D)/j);u[z].push(0);let[H,X,$]=u[0],W,Y,k;for(let q=1;q<u.length;q++)[W,Y,k]=u[q],s.push(S,H.y,H.z,S,W.y,W.z,w,H.y,H.z,w,H.y,H.z,S,W.y,W.z,w,W.y,W.z),l.push(0,X.y,X.z,0,Y.y,Y.z,0,X.y,X.z,0,X.y,X.z,0,Y.y,Y.z,0,Y.y,Y.z),d.push(0,$,0,k,1,$,1,$,0,k,1,k),[H,X,$]=[W,Y,k];this.setAttribute("position",new jd(s,3)),this.setAttribute("normal",new jd(l,3)),this.setAttribute("uv",new jd(d,2))}};var Tc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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 Ne?n.shape:new Ne,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:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:d}=n.parameters,c=n.shape,u=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*r/100,x=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let b=m*w,_=f+Math.sin(b)*u,A=h+Math.cos(b)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*u,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(b,_)),y+=m,b=f+Math.cos(y)*g,_=h+Math.sin(y)*x,w<=o,c.addPoint(c.createPoint(b,_)),y+=m}c.isClosed=!0;for(let w=0,b=c.points.length;w<b;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=Xt.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:d}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as KP}from"three";var $g=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,height:e}=n.parameters,r=new KP(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as QP,Float32BufferAttribute as ZP,MathUtils as JP}from"three";var Yg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),r=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:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,d=e2(t,e,r,t*.5,a,i,0,0,o,s,l);return d.scale(1,e/t,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function e2(n,t,e,r,o,i,a,s,l,d,c){[t,e]=[e,t],a=t/2;let u=JP.clamp(o/360,0,1);if(u===0){let p=new QP;return p.setAttribute("position",new ZP([],3)),p}return u===1&&(d=0),new gs(!0,n,t,e,r,u,i,a,s,l,d,c)}import{TorusKnotGeometry as t2}from"three";var Xg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.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:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:a}=n.parameters,s=t*.5;s!==e&&(s-=e);let l=new t2(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var Kg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Ne?n.shape:new Ne,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:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,d=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-d,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-c))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let u=Xt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Zg,Vector3 as St,Matrix3 as r2,Matrix4 as Mn,BufferGeometry as Jg,BufferAttribute as ea,MathUtils as Cc}from"three";function Qg(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var o2=new Mn,n2=new Mn;function i2(n,t,e){let r=[new St,new St,new St],o=[new St,new St,new St];return n.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((i,a)=>{let s=o[a],l=Cc.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Mn().makeBasis(r[0],r[1],r[2])}var e0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=t?.shapeData??Ki.create({parameters:ju}).userData.shape;return{path:n.path??Mi.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...jl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Hd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Jg,{userData:{...n,type:"PathGeometry"}})}},Hd=class extends Jg{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)||!Qg(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),d=Math.min(Math.max(2,l-s+1),a+2),c=[],u=[];for(let B=0;B<d;B++){let V=this.inputs.path.isClosed?(B+s)%e.length:Math.min(B+s,e.length-1);c.push(e[V].clone()),u.push(r[V].clone())}let p=(B,V,j)=>{c[B]=c[B].clone().lerp(c[V],j),u[B]=i2(u[B],u[V],j)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,p(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,p(c.length-1,c.length-2,1-m)),o===0){let B=c.length-1;c[B].copy(c[0]),u[B].copy(u[0])}this._applyPathModifiers(u,f,m);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:_,vertices:A}=this._computeShapePoints(w),v=0,M;S==="round"&&(M=new tn(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=M.getAttribute("position").count);let O=0,T=0;_.sort((B,V)=>B.start-V.start),_.forEach(B=>{B.verticesStart=O,B.verticesCount=B.continuous.reduce((V,j,H)=>V+(H===0||!j?2:1),0),T+=B.verticesCount,O=T});let C=T*d,P,I=0;if(this._isOpenEnded()&&S==="flat"){try{P=Cr({windingRule:Pe.ODD,elementType:Xe.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{P=Md}I=P.vertexCount}let E=C+2*I+v*2,R=C+2*I,D={positions:new Float32Array(E*3),normals:new Float32Array(E*3),uvs:new Float32Array(E*2)},z=[];if(_.forEach(B=>{this._extrudeRegion(B,A,u,c,D,z,this._isGeometryClosed()&&!this._isOpenEnded())}),P&&(this._closeEnd(P,C,z,D,u[0],c[0],!1),this._closeEnd(P,C+I,z,D,u[u.length-1],c[c.length-1],!0)),M){D.positions.set(M.getAttribute("position").array,R*3),D.normals.set(M.getAttribute("normal").array,R*3),D.uvs.set(M.getAttribute("uv").array,R*2);let B=z.length;z.push(...M.getIndex().array.map(H=>H+R)),R+=v,D.positions.set(M.getAttribute("position").array,R*3),D.normals.set(M.getAttribute("normal").array,R*3),D.uvs.set(M.getAttribute("uv").array,R*2);let V=z.length;z.push(...M.getIndex().array.map(H=>H+R)),this.setAttribute("position",new ea(D.positions,3)),this.setAttribute("normal",new ea(D.normals,3)),this.setAttribute("uv",new ea(D.uvs,2)),this.setIndex(z);let j=o2;j.copy(u[u.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(j,R,E),j.copy(u[0]).setPosition(c[0]).multiply(n2.makeScale(1,1,-1)),this.applyMatrix4OnRange(j,R-v,R),this.reverseIndicesOnRange(B,V)}else this.setAttribute("position",new ea(D.positions,3)),this.setAttribute("normal",new ea(D.normals,3)),this.setAttribute("uv",new ea(D.uvs,2)),this.setIndex(z)}_extractPathPoints(){let r=nc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.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 r=[],o=e.length,i=this.inputs.path.isClosed,a=new St,s=new St,l=new St,d=new St,c=new St(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(),_=w.clone().add(b).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),v=_.clone().cross(A).normalize();c.copy(v),d.copy(A),y===0&&(a.copy(v),s.copy(_));let M=new Mn().makeBasis(A,v,_);r.push(M)}let u=i?s:l,p=i?a:new St(0,1,0),f=u.clone().cross(d).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);u.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new Mn().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:d}=this.inputs.parameters.extrusion,c=new Mn,u=new Mn;return e.forEach((p,f)=>{let h=f===0?0:f===i-1?1:(f-r)/(i-(o===0?0:1)-(r+(1-o)));c.makeRotationZ(Cc.lerp(a,a+s,h)*Cc.DEG2RAD);let m=Cc.lerp(l,d,h);u.makeScale(m,m,m),p.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,r=Pe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.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=Cr({windingRule:r,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=ys}let l;try{l=Cr({windingRule:Pe.ODD,elementType:Xe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Od}if(!s)throw new Error("error generating geometry");let d=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let c=1/0,u=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,x=s.vertices[g+0],S=s.vertices[g+1];x<c&&(c=x),x>u&&(u=x),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=d,g=m*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};h.push(b);let _=x,A=w-1,v=x+1,M=o.roundedCurves.length;do{let O=_-x,T=s.vertices[A*2+0],C=s.vertices[A*2+1],P=s.vertices[_*2+0],I=s.vertices[_*2+1],E=s.vertices[v*2+0],R=s.vertices[v*2+1],D=P-T,z=I-C,B=Math.sqrt(D*D+z*z);D/=B,z/=B;let V=P-E,j=I-R,H=Math.sqrt(V*V+j*j);V/=H,j/=H,b.normals[O*2+0]=-j,b.normals[O*2+1]=V;let X=s.vertexIndices[_];if(Array.isArray(X))b.continuous[O]=!1;else{let[$,W]=o.getCurveIndexFromVertexId(X-1,!0);if(W>0&&W<1)b.continuous[O]=!0;else{let Y=W===1?$+1:$-1;Y=(Y+M)%M;let k=W===1?0:1,q=o.roundedCurves[$].getTangent(W),U=o.roundedCurves[Y].getTangent(k);b.continuous[O]=q.dot(U)>.95}}y&&(b.normals[O*2+0]*=-1,b.normals[O*2+1]*=-1),[A,_,v]=[_,v,v+1],v>=w&&(v-=S)}while(v!==x+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,i,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,i,a,s,l){let d=new St,c=new St,u=new St,p=new St,f=new Zg;o.forEach((m,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(d.set(r[w+0],r[w+1],0),u.copy(d).applyMatrix4(m).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;c.set(r[b+0],r[b+1],0),p.copy(d).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,x,u,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;c.set(r[b+0],r[b+1],0),p.copy(c).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,x,u,p,f),x++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+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,_=y+w,A=g+w,v=g+x;e.isHole?s.push(b,A,_,b,v,A):s.push(b,_,A,b,A,v),x++}}}_closeEnd(e,r,o,i,a,s,l){let d=e.vertexCount,c=new St(0,0,l?-1:1).applyMatrix4(a),u=new St,p=new Zg;for(let h=0;h<d;h++){let m=2*h;u.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,u,c,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,x=f[m+(l?2:1)]+r;o.push(y,g,x)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new r2().getNormalMatrix(e).elements,s,l,d,c,u=this.attributes.position,p=this.attributes.normal;if(!u||!p)return;let f=u.array,h=p.array,m=u.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],d=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*d+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*d+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*d+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*d+i[14])*c,s=h[y+0],l=h[y+1],d=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*d,h[y+1]=a[1]*s+a[4]*l+a[7]*d,h[y+2]=a[2]*s+a[5]*l+a[8]*d}u.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let i=e;i<r;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as t0,BufferGeometry as qd}from"three";import{mergeBufferGeometries as a2}from"three/examples/jsm/utils/BufferGeometryUtils.js";function r0(){let n=new qd;return n.setAttribute("position",new t0(new Float32Array([]),3)),n.setIndex(new t0(new Uint16Array([]),1)),n}var s2=r0().attributes,l2=12,c2=1,ta=class extends qd{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,s2),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,r).then(()=>{this.update(e),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:d,textTransform:c}=e,u=Kl.getDisplayedValue(d),p=c===2?u.toUpperCase():c===3?u.toLowerCase():u,f=u2(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Ne().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>Xt.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Pe.NONZERO:Pe.ODD,subdivisions:this.isLowResolution&&a>0?c2:l2}})),b=w.length?a2(w):r0();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Wt(new qd,ta.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,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 u2(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
16
+ `?(r[r.length-1]+=o,o="",i===`
17
+ `&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as $d,BufferAttribute as a0,Uint32BufferAttribute as Yd,Float32BufferAttribute as Xd,Matrix4 as h2,Vector3 as ws,Sphere as m2,Box3 as y2,BoxGeometry as g2}from"three";var n0,ra=new Promise(n=>{n0=n}),o0=!1;var Pc;function i0(){if(o0)return;if(Pc)return Pc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.498/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(d=>d.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});n0(l),o0=!0}return Pc=n(),Pc}import{BufferGeometryLoader as d2}from"three";function Nn(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let d of a){let c=i;for(let u of d)c=c[u];for(o in c){let u=c[o];sy(u)&&(c[o]=t.getVariable(u,[r.uuid,"geometry",...d,o]))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let d=Ne.createFromState(i.shape,i.width,i.height);s.shape=d}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(d=>d.materialIndex=Math.max(d.materialIndex??0,0)),s.geometry=new d2().parse(i);else if(i.type==="SubdivGeometry"){let d=new at(i,e);return d.data=n,d}else if(i.type==="TextGeometry")return new ta(i,t);let l;try{l=Wd(s)}catch(d){console.error(d)}if(!l){let d=Ne.createFromState(Oi.defaultData(),100,100);s.shape=d,l=Wd(s)}return l}import{Matrix4 as p2}from"three";var f2=new p2;function Ss(n,t,e,r){let o=n.position.array,i=n.normal.array,a=f2.makeScale(t,e,r).invert().elements,s,l,d;for(var c=0,u=o.length;c<u;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],d=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*d,i[c+1]=a[1]*s+a[5]*l+a[9]*d,i[c+2]=a[2]*s+a[6]*l+a[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Oc=new y2,oa=new ws,fe;ra.then(n=>{fe=n});var s0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),l0=new Uint32Array([0,1,2,3]),c0=new Uint8Array([4]),at=class extends $d{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Fo.div(r,o);this.subdividedGeometry&&Ss(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ss(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(oa.fromArray(i));let s=oa.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,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=at.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new g2(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(at.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new m2,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Oc.setFromBufferAttribute(r),Oc.getCenter(o),e.boundingSphere.radius=o.distanceTo(Oc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Oc.getSize(oa);let i={width:oa.x,height:oa.y,depth:oa.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,d=e?.phongAngle??35;o===!1&&(d=-1),r&&(fe.free_bvh(r),fe.free_subdivision_surface(r));try{a=at.allocate(e,i)}catch(c){console.error(c,e),a=at.allocate({positionWASM:s0,indexWASM:l0,verticesPerFaceWASM:c0},i)}if(fe.set_destination_refinement_level(a,0),s=at.buildLevel(a,!0,d),e.subdivisions>0)try{fe.set_destination_refinement_level(a,e.subdivisions),l=at.buildLevel(a,!1,d)}catch{try{fe.set_destination_refinement_level(a,e.subdivisions-1),l=at.buildLevel(a,!1,d)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,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?r.geometry:Nn(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,d,c;({positions:s,triIndices:c}=Jd(i.getAttribute("position"),a));let u;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;u=[p,f]}return{indices:l,verticesPerFace:d}=ep(s,c,i,u),{positions:s,indices:l,verticesPerFace:d}}static allocate(e,r){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=s0,i=l0,a=c0);let d=o.length,c=i.length,u=a.length,p=o.length+s.length+l.length,f=i.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(h),x=new Float32Array(fe.HEAPF32.buffer,g,p),S=new Uint32Array(fe.HEAPU32.buffer,g+m,f);x.set(o,0),x.set(s,o.length),x.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new h2().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let b=w?fe.alloc_subdivision_surface2(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):fe.alloc_subdivision_surface(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return fe._free(g),b}static buildLevel(e,r,o,i,a){let s=a?fe.get_mesh_data2(e,r?fe.Level.CONTROL:fe.Level.REFINED,o,a.elements):fe.get_mesh_data(e,r?fe.Level.CONTROL:fe.Level.REFINED,o),l=8,d=fe.HEAPU32.subarray(s>>2,(s>>2)+l),c=d.subarray(4,4+4),u=0,p=fe.HEAPU32[d[u]>>2],f=fe.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let h=fe.HEAPU32[d[u]>>2],m=fe.HEAPF32.subarray(h>>2,(h>>2)+c[u]);u++;let y=fe.HEAPU32[d[u]>>2],g=fe.HEAPU32.subarray(y>>2,(y>>2)+c[u]);u++;let x=fe.HEAPU32[d[u]>>2],S=fe.HEAPU32.subarray(x>>2,(x>>2)+c[u]);if(u++,i===void 0){let w=new $d;if(w.setIndex(new Yd(S,1)),w.setAttribute("position",new Xd(f,3)),w.setAttribute("normal",new Xd(m,3)),r){w.setAttribute("faceMap",new Yd(g,1));let b=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new a0(b,4))}return fe.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),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,r,o){let i=fe.get_wireframe_data_for_base_level(e),a=4,s=fe.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),d=0,c=fe.HEAPU32[s[d]>>2],u=fe.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=fe.HEAPU32[s[d]>>2],f=fe.HEAPU32.subarray(p>>2,(p>>2)+l[d]);if(r===void 0){let h=new $d;h.setAttribute("position",new Xd(u,3));let m=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new a0(m,3)),h.setIndex(new Yd(f,1)),fe.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(u),r.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||fe.set_destination_refinement_level(e,r);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,l=fe.HEAPU32.subarray(a>>2,(a>>2)+s),d=l.subarray(3,3+3),c=0,u=fe.HEAPU32[l[c]>>2],p=new Float32Array(fe.HEAPF32.subarray(u>>2,(u>>2)+d[c]));c++;let f=fe.HEAPU32[l[c]>>2],h=new Uint32Array(fe.HEAPU32.subarray(f>>2,(f>>2)+d[c]));c++;let m=fe.HEAPU32[l[c]>>2],y=new Uint8Array(fe.HEAPU32.subarray(m>>2,(m>>2)+d[c]));return fe.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var u0=["getX","getY","getZ"];function Jd(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let d=0;d<r;d++){let c=t?t.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[u0[p]](c)*s)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)a.push(n[u0[p]](c));e[u]=o,i.push(o),o++}}let l=[];for(let d=0;d<i.length;d+=3)i[d]===i[d+1]||i[d]===i[d+2]||i[d+1]===i[d+2]||l.push(i[d],i[d+1],i[d+2]);return{positions:a,triIndices:l}}var Mc=new ws,Kd=new ws,Qd=new ws,Zd=new ws;function ep(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),d=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&d<=24&&d%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/d;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let c=0;for(let p=0;p<l.length;p+=2)c+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);n.length=0;let u=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(u++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[t[s]*3+2]===a||n[t[s]*3+2]===0)&&l++,(n[t[s+1]*3+2]===a||n[t[s+1]*3+2]===0)&&l++,(n[t[s+2]*3+2]===a||n[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Mc.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Kd.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Qd.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Zd.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Kd.sub(Mc).normalize(),Qd.sub(Mc).normalize(),Zd.sub(Mc).normalize();let l=Kd.cross(Qd).dot(Zd);Math.abs(l)>.005||r&&r.some((d,c)=>c%2===1?!1:s>=r[c]&&s<r[c+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],d=[],c=0;for(let u=0,p=0;u<n.length;u+=3,p++)n[u+2]===0&&(l.push(p),c++),n[u+2]===a&&d.push(p);if(e.userData.parameters.extrudeBevelSize===0){let u=d[0];d[0]=d[1],d[1]=u}l.reverse(),o.push(...l,...d),i.push(c,c)}return{indices:o,verticesPerFace:i}}var dr={};Qv(dr,{calcBoolean:()=>w2,calcBooleanTopological:()=>S2,freeMeshSet:()=>C2,getMeshSet:()=>_2,hasOpenEdges:()=>A2,transformMeshSet:()=>T2});var x2,d0=new Promise(n=>{x2=n});import{Float32BufferAttribute as p0,Sphere as v2}from"three";var we,na;d0.then(n=>we=n);function b2(n,t,e){let r,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=Jd(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:d}=ep(i,a,n);s=d.length,r=[];for(let c=0,u=0;c<s;c++){r.push(d[c]);for(let p=0;p<d[c];p++)r.push(l[u++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let d=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[d++],r[c++]=a[d++],r[c++]=a[d++]}return{positions:i,faceIndices:r,nFaces:s}}function f0(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=we._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(we.HEAPU32.buffer,i,t):new Float32Array(we.HEAPF32.buffer,i,t)).set(n,0),i}function h0(n){switch(n){case 0:return we.OP.UNION;case 1:return we.OP.INTERSECTION;case 2:return we.OP.A_MINUS_B;case 3:return we.OP.B_MINUS_A;case 4:return we.OP.SYMMETRIC_DIFFERENCE;case 5:return we.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function S2(n,t){na===void 0&&(na=we.init_csg());let e=f0(n),r=we.csg_calc_topological(na,e,n.length,h0(t));we._free(e);let o=6,i=we.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=we.HEAPU32[i[s]>>2],d=new Float32Array(we.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=we.HEAPU32[i[s]>>2],u=new Uint32Array(we.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=we.HEAPU32[i[s]>>2],f=new Uint8Array(we.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return we.free_mesh_data(r),{positions:d,indices:u,verticesPerFace:f}}function w2(n,t,e,r){na===void 0&&(na=we.init_csg());let o=f0(n),i=we.csg_calc(na,o,n.length,r,h0(t));we._free(o);let a=5,s=we.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),d=0,c=we.HEAPU32[s[d]>>2],u=we.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=we.HEAPU32[s[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let h=l[d];e.setAttribute("position",new p0(u,3)),e.setAttribute("normal",new p0(f,3));let m=we.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new v2),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},we.free_mesh_data(i),h}function _2(n,t,e){if(we===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,r=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:r,faceIndices:o,nFaces:i}=b2(n,t,e));let a=r.length,s=o.length,l=r.length,d=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=l*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=we._malloc(c),h=new Float32Array(we.HEAPF32.buffer,f,l),m=new Uint32Array(we.HEAPU32.buffer,f+u,d);return h.set(r,0),m.set(o,0),we.get_csg_mesh(f,a,f+u,s,i)}function A2(n){return we.has_open_edges(n)}function T2(n,t){we.transform_csg_mesh(n,t.elements)}function C2(n){we.free_csg_mesh(n)}var P2={ConeGeometry:$y,CubeGeometry:Yy,CylinderGeometry:Wy,DodecahedronGeometry:Xy,EllipseGeometry:Ki,HelixGeometry:Mg,IcosahedronGeometry:Ig,LatheGeometry:Ng,NonParametricGeometry:Fg,PolygonGeometry:_c,PyramidGeometry:jg,RectangleGeometry:Ac,SphereGeometry:Hg,PlaneGeometry:qg,BackdropGeometry:Wg,StarGeometry:Tc,TextFrameGeometry:$g,TorusGeometry:Yg,TorusKnotGeometry:Xg,TriangleGeometry:Kg,PathGeometry:e0,VectorGeometry:Xt},Wd=n=>P2[n.type].create(n);function ia(n){return n!==null&&"booleanOp"in n}var aa=class extends ji(M2){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new O2}updateVisible(e){super.updateVisible(e),this.visible=!ia(this.parent)&&this.visible,ia(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(dr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ia(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof aa&&(e.freeBooleanPointer(),ia(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&ia(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),ia(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Ic=new I2;function _s(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,d=-1/0,c=-1/0;for(let u=t;u<e;u++){let p=n.getX(u),f=n.getY(u),h=n.getZ(u);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>d&&(d=f),h>c&&(c=h)}Ic.min.set(i,a,s),Ic.max.set(l,d,c),Ic.getCenter(r),Ic.getSize(o).multiplyScalar(.5)}var D2=new N2,L2=new E2,It=class extends aa{constructor(t,e){super(D2,L2),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?_s(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as WO,Matrix4 as $O,Sphere as Z0,Vector3 as YO}from"three";import{BufferAttribute as UO,Float32BufferAttribute as Q0,MathUtils as Pp,Vector3 as Op}from"three";import{ShaderMaterial as OO}from"three";import{CubeReflectionMapping as W2,CubeRefractionMapping as $2,CubeUVReflectionMapping as Y2,LinearEncoding as w0,sRGBEncoding as X2}from"three";var As=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as B2}from"three";var wt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=B2.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,a){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof wt&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var tp=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},ft=new tp;import{Vector2 as m0}from"three";import{MathUtils as R2}from"three";var ae=class extends wt{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=R2.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let d=this.getTemp(e,o);if(d)return e.format(d,l,r);{d=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(d+" = "+c+";"),e.format(d,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var Re=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}};var Ke=class extends Re{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof m0?e:new m0(e,r)}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,r,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as y0}from"three";var Nt=class extends Re{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof y0?e:new y0(e,r,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,r,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};import{Color as V2}from"three";var ht=class extends V2{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,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,r="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,r);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,r);break}}return super.setStyle(e,r)}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 Kt=class extends Re{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ht?e:new ht(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var G2=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,g0=/[a-z_0-9]+/gi,K=class extends ae{constructor(e,r,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,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,a){let s,l=0,d=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let c=[];for(;s=g0.exec(this.src);)c.push(s);for(let u=0;u<c.length;u++){let p=c[u],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&ft.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=ft.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||ft.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&d[p.index+l-1]!=="."&&(d=d.substring(0,p.index+l)+m+d.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&ft.contains(m)&&e.include(ft.get(m))}return r==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=G2.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(g0);if(s){let l=0;for(;l<s.length;){let d=s[l++],c;d==="in"||d==="out"||d==="inout"?c=s[l++]:(c=d,d="");let u=s[l++];this.inputs.push({name:u,type:c,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var z2=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,rp=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||rp.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,a){this.src=e||"";let s,l,d="",c=z2.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],d=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=d}build(e,r){if(r==="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),r)}generate(e,r,o,i,a){return e.format(this.name,this.getType(e),r)}},Ie=rp;Ie.PI="PI",Ie.PI2="PI2",Ie.RECIPROCAL_PI="RECIPROCAL_PI",Ie.RECIPROCAL_PI2="RECIPROCAL_PI2",Ie.LOG2="LOG2",Ie.EPSILON="EPSILON";var k2=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
18
+ )*?)}`,"gim"),F2=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),sa=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=k2.exec(e);if(r){let o=r[2],i;for(;i=F2.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var la=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){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),r)}};ft.addKeyword("uv",function(){return new la});ft.addKeyword("uv2",function(){return new la(1)});import{LinearEncoding as j2,sRGBEncoding as U2}from"three";var En=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??En.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case j2:return["Linear"];case U2:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),a=En.Nodes[this.method],s=e.include(a);if(s===En.LINEAR_TO_LINEAR)return e.format(o,i,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,r)}else return e.format(s+"( "+o+" )",i,r)}fromEncoding(e){let r=En.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=En.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},kt=En;kt.Nodes={LinearToLinear:new K(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
19
+ `)),sRGBToLinear:new K(["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(`
20
+ `)),LinearTosRGB:new K(["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(`
21
+ `))},kt.LINEAR_TO_LINEAR="LinearToLinear",kt.SRGB_TO_LINEAR="sRGBToLinear",kt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends K{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};import{Texture as H2}from"three";var Ft=class extends Re{constructor(e=new H2,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new la,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),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,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let d={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(d),this.colorSpace=this.colorSpace??new kt(new Ee("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,r)}};var J=class extends Re{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var Ts=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",d=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let u=s.inputs[c],p=this.inputs[c]||this.inputs[u.name];d.push(p.build(e,e.getTypeByFormat(u.type)))}l+=d.join(", ")+" )"}return e.format(l,i,r)}};var op=class extends ae{constructor(e,r,o=op.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){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,r)}},_t=op;_t.ADD="+",_t.SUB="-",_t.MUL="*",_t.DIV="/";var Ve=class extends ae{constructor(e,r=Ve.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ve.MIX:case Ve.CLAMP:case Ve.REFRACT:case Ve.SMOOTHSTEP:case Ve.FACEFORWARD:return 3;case Ve.MIN:case Ve.MAX:case Ve.MOD:case Ve.STEP:case Ve.REFLECT:case Ve.DISTANCE:case Ve.DOT:case Ve.CROSS:case Ve.POW:return 2;default:return 1}}getInputType(e){let r=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 r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ve.LENGTH:case Ve.DISTANCE:case Ve.DOT:return"f";case Ve.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,d=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Ve.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,r);case Ve.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,r);case Ve.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ve.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case Ve.MIN:case Ve.MAX:case Ve.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case Ve.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case Ve.MIX:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,d===1?"f":c);break;default:o=this.a.build(e,c),this.b&&(i=this.b.build(e,c)),this.c&&(a=this.c.build(e,c));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(", ")+" )",u,r)}},xe=Ve;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 ca=class extends ae{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let a=new Ts(ca.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new kt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new kt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new kt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new kt(new Ee("","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 Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Ts(ca.Nodes.roughnessToMip,[i]),s=new xe(a,ca.Nodes.m0,ca.Nodes.cubeUV_maxMipLevel,xe.CLAMP),l=new xe(s,xe.FLOOR),d=new xe(s,xe.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),u=this.bilinearCubeUV(e,this.value,o,new _t(l,new J(1).setReadonly(!0),_t.ADD)),p=new xe(c,u,d,xe.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},ua=ca;ua.Nodes=function(){let e=new sa(`struct TextureCubeUVData {
8
22
  vec4 tl;
9
23
  vec4 tr;
10
24
  vec4 br;
11
25
  vec4 bl;
12
26
  vec2 f;
13
- }`),t=new Ae("float cubeUV_maxMipLevel 8.0",!0),o=new Ae("float cubeUV_minMipLevel 4.0",!0),i=new Ae("float cubeUV_maxTileSize 256.0",!0),a=new Ae("float cubeUV_minTileSize 16.0",!0),s=new H(`float getFace(vec3 direction) {
27
+ }`),r=new Ie("float cubeUV_maxMipLevel 8.0",!0),o=new Ie("float cubeUV_minMipLevel 4.0",!0),i=new Ie("float cubeUV_maxTileSize 256.0",!0),a=new Ie("float cubeUV_minTileSize 16.0",!0),s=new K(`float getFace(vec3 direction) {
14
28
  vec3 absDirection = abs(direction);
15
29
  float face = -1.0;
16
30
  if (absDirection.x > absDirection.z) {
@@ -25,7 +39,7 @@ var Tx=Object.create;var Rc=Object.defineProperty;var _x=Object.getOwnPropertyDe
25
39
  face = direction.y > 0.0 ? 1.0 : 4.0;
26
40
  }
27
41
  return face;
28
- }`);s.useKeywords=!1;let c=new H(`vec2 getUV(vec3 direction, float face) {
42
+ }`);s.useKeywords=!1;let l=new K(`vec2 getUV(vec3 direction, float face) {
29
43
  vec2 uv;
30
44
  if (face == 0.0) {
31
45
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -41,7 +55,7 @@ var Tx=Object.create;var Rc=Object.defineProperty;var _x=Object.getOwnPropertyDe
41
55
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
42
56
  }
43
57
  return 0.5 * (uv + 1.0);
44
- }`);c.useKeywords=!1;let u=new H(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
58
+ }`);l.useKeywords=!1;let d=new K(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
45
59
  float face = getFace(direction);
46
60
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
47
61
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -69,7 +83,7 @@ var Tx=Object.create;var Rc=Object.defineProperty;var _x=Object.getOwnPropertyDe
69
83
  uv.x -= texelSize;
70
84
  vec4 bl = texture2D(envMap, uv);
71
85
  return TextureCubeUVData( tl, tr, br, bl, f );
72
- }`,[e,s,c,t,o,i,a]);u.useKeywords=!1;let l=new Ae("float r0 1.0",!0),d=new Ae("float v0 0.339",!0),p=new Ae("float m0 -2.0",!0),f=new Ae("float r1 0.8",!0),m=new Ae("float v1 0.276",!0),h=new Ae("float m1 -1.0",!0),y=new Ae("float r4 0.4",!0),g=new Ae("float v4 0.046",!0),x=new Ae("float m4 2.0",!0),S=new Ae("float r5 0.305",!0),w=new Ae("float v5 0.016",!0),b=new Ae("float m5 3.0",!0),T=new Ae("float r6 0.21",!0),_=new Ae("float v6 0.0038",!0),v=new Ae("float m6 4.0",!0),C=[l,d,p,f,m,h,y,g,x,S,w,b,T,_,v],P=new H(`float roughnessToMip(float roughness) {
86
+ }`,[e,s,l,r,o,i,a]);d.useKeywords=!1;let c=new Ie("float r0 1.0",!0),u=new Ie("float v0 0.339",!0),p=new Ie("float m0 -2.0",!0),f=new Ie("float r1 0.8",!0),h=new Ie("float v1 0.276",!0),m=new Ie("float m1 -1.0",!0),y=new Ie("float r4 0.4",!0),g=new Ie("float v4 0.046",!0),x=new Ie("float m4 2.0",!0),S=new Ie("float r5 0.305",!0),w=new Ie("float v5 0.016",!0),b=new Ie("float m5 3.0",!0),_=new Ie("float r6 0.21",!0),A=new Ie("float v6 0.0038",!0),v=new Ie("float m6 4.0",!0),M=[c,u,p,f,h,m,y,g,x,S,w,b,_,A,v],O=new K(`float roughnessToMip(float roughness) {
73
87
  float mip = 0.0;
74
88
  if (roughness >= r1) {
75
89
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -83,7 +97,7 @@ var Tx=Object.create;var Rc=Object.defineProperty;var _x=Object.getOwnPropertyDe
83
97
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
98
  }
85
99
  return mip;
86
- }`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var cn=class extends ae{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)}},mt=cn;mt.LOCAL="local",mt.WORLD="world",mt.VIEW="view",mt.NORMAL="normal";nt.addKeyword("viewNormal",function(){return new mt(mt.VIEW)});nt.addKeyword("localNormal",function(){return new mt(mt.NORMAL)});nt.addKeyword("worldNormal",function(){return new mt(mt.WORLD)});var Br=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Br.LOCAL}getType(){switch(this.scope){case Br.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Br.LOCAL:case Br.WORLD:return!1}return!0}generate(e,t,o,i,a){let s;switch(this.scope){case Br.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Br.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Br.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Br.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),t)}},zt=Br;zt.LOCAL="local",zt.WORLD="world",zt.VIEW="view",zt.PROJECTION="projection";nt.addKeyword("position",function(){return new zt});nt.addKeyword("worldPosition",function(){return new zt(zt.WORLD)});nt.addKeyword("viewPosition",function(){return new zt(zt.VIEW)});var fr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??fr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case fr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case fr.VECTOR:{let a=new mt(mt.VIEW),s=e.context.roughness,c=a.build(e,"v3"),u=new zt(zt.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 fr.CUBE:{let a=new fr(fr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case fr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new fr(fr.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)}},Rr=fr;Rr.CUBE="cube",Rr.SPHERE="sphere",Rr.VECTOR="vector";var rc=class extends ae{constructor(e=new It,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new zi(this.value,t??new Rr(Rr.VECTOR),o),this.irradianceNode=new zi(this.value,new mt(mt.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))}};import{CubeTexture as wA}from"three";var oc=class extends Le{constructor(e=new wA,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Rr,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 Nt(new Ne("",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 Mg=`
100
+ }`,M);return{bilinearCubeUV:d,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:r}}();var Dn=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Dn.VIEW}getShared(){return this.scope===Dn.WORLD}build(e,r,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,a){let s;switch(this.scope){case Dn.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case Dn.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case Dn.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},At=Dn;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.NORMAL="normal";ft.addKeyword("viewNormal",function(){return new At(At.VIEW)});ft.addKeyword("localNormal",function(){return new At(At.NORMAL)});ft.addKeyword("worldNormal",function(){return new At(At.WORLD)});var Kr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Kr.LOCAL}getType(){switch(this.scope){case Kr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Kr.LOCAL:case Kr.WORLD:return!1}return!0}generate(e,r,o,i,a){let s;switch(this.scope){case Kr.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case Kr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case Kr.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Kr.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},Qt=Kr;Qt.LOCAL="local",Qt.WORLD="world",Qt.VIEW="view",Qt.PROJECTION="projection";ft.addKeyword("position",function(){return new Qt});ft.addKeyword("worldPosition",function(){return new Qt(Qt.WORLD)});ft.addKeyword("viewPosition",function(){return new Qt(Qt.VIEW)});var Pr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Pr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Pr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Pr.VECTOR:{let a=new At(At.VIEW),s=e.context.roughness,l=a.build(e,"v3"),d=new Qt(Qt.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,u=`reflect( -normalize( ${d} ), ${l} )`;c&&(u=`normalize( mix( ${u}, ${l}, ${c} * ${c} ) )`);let p=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Pr.CUBE:{let a=new Pr(Pr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case Pr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new Pr(Pr.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(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},Qr=Pr;Qr.CUBE="cube",Qr.SPHERE="sphere",Qr.VECTOR="vector";var Nc=class extends ae{constructor(e=new Ft,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ua(this.value,r??new Qr(Qr.VECTOR),o),this.irradianceNode=new ua(this.value,new At(At.WORLD),new J(1).setReadonly(!0))}generate(e,r){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,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as q2}from"three";var Ec=class extends Re{constructor(e=new q2,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new Qr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),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 l={include:e.isShader("vertex"),ignoreCache:!0},d=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new kt(new Ee("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,d),e.removeContext(),e.format(s,d,r)}};var x0=`
87
101
  uniform int frameIndex;
88
102
  uniform vec2 resolution;
89
103
  uniform mat4 previousModelViewMatrix;
@@ -91,7 +105,7 @@ uniform mat4 previousProjectionMatrix;
91
105
 
92
106
  varying vec4 vCurrentPosition;
93
107
  varying vec4 vPreviousPosition;
94
- `,Eg=`
108
+ `,v0=`
95
109
  layout(location = 1) out vec4 gVelocity;
96
110
 
97
111
  uniform int frameIndex;
@@ -133,7 +147,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
133
147
  return fract(magic.z * fract(dot(screenPos, magic.xy)));
134
148
  }
135
149
 
136
- `,Lg=`
150
+ `,b0=`
137
151
  // TODO: This could be generated CPU side and passed to the shader every frame
138
152
  const vec2 haltonSequence[16] = vec2[16](
139
153
  vec2( 0.000000,-0.333334),
@@ -170,7 +184,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
170
184
  #endif
171
185
  gl_Position = currentPositionJittered;
172
186
 
173
- `,Dg=`
187
+ `,S0=`
174
188
  vec2 oldPos = vPreviousPosition.xy;
175
189
  oldPos /= vPreviousPosition.w;
176
190
  oldPos.xy = (oldPos.xy+1.)/2.0;
@@ -185,7 +199,7 @@ vec2 velocity = (newPos - oldPos);
185
199
  if (gl_FragColor.a <= 0.0) discard;
186
200
 
187
201
  gVelocity = vec4(velocity, 0.0, 1.0);
188
- `;var Rg=["x","y","z","w"],AA=["float","vec2","vec3","vec4"],CA={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},NA={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},nc=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let a="";i=i.sort(r);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
202
+ `;var _0=["x","y","z","w"],K2=["float","vec2","vec3","vec4"],Q2={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},Z2={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},Dc=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
189
203
  `);return a}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
190
204
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
191
205
  #define SPE_BLENDING_NORMAL 0
@@ -223,20 +237,20 @@ gVelocity = vec4(velocity, 0.0, 1.0);
223
237
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
224
238
  accumAlpha += (1.0 - accumAlpha) * alpha;
225
239
  }`,""].join(`
226
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(Mg),this.addFragmentParsCode(Eg),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(Lg),this.addFragmentFinalCode(Dg)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
227
- `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
228
- `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
229
- `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
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
- `)}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
- `: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 Za({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 Za({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"?nt.get(r):r,this.context.include===!1)return r.name;r instanceof H?o=this.includes.functions:r instanceof Ae?o=this.includes.consts:r instanceof Ri&&(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 AA[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 TA:case _A:return new oc(t);case PA:return new rc(new It(t));default:return new It(t)}else{if(t.isVector2)return new He(t);if(t.isVector3)return new St(t);if(t.isVector4)return new Vt(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 CA[r]||r}getFormatByType(r){return NA[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Rg[r]}getIndexByElement(r){return Rg.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=Bg,e===Bg&&this.context.gamma&&(e=OA),e}};import{Vector2 as gr,Vector3 as zr,Vector4 as ra}from"three";var Me=class extends Le{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof it?e:new it(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 we=class extends Le{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)}};import{UniformsLib as DA,UniformsUtils as BA}from"three";var $e=class extends Le{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 mr=class extends Le{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)}};import{Vector3 as IA}from"three";var zo=class extends Le{};var ic=class extends zo{constructor(e){super("v3");this.image=e;this._value=new IA}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 dn=class extends zo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as MA}from"three";var ji=class extends Le{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new MA}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)}};import{Matrix4 as EA}from"three";var wt=class extends Le{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new EA}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)}};import{Matrix3 as LA}from"three";function Gg(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var ac=class extends ji{constructor(e,t){super(new LA);this.repeat=e;this.offset=t;Gg(this.value,e,t)}updateMatrix(){Gg(this.value,this.repeat,this.offset)}};import{Vector4 as Vg}from"three";var hr=class extends Le{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Vg?new Array(e).fill(t):new Array(e).fill(new Vg(0))}};var Fi=class extends ae{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 Pu=class extends ae{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(Pu.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)}},un=Pu;un.Nodes=function(){return{customColor:new H(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
240
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(x0),this.addFragmentParsCode(v0),this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(b0),this.addFragmentFinalCode(S0)),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.defines={},this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
241
+ `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
242
+ `}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
243
+ `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
244
+ `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let d=s.length;l={name:r||"node"+i+d+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
245
+ `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let a=t[o],s=a.type,l=a.name,d=a.size,c=this.getFormatByType(s);if(c===void 0)throw new Error("Node pars "+c+" not found.");c.includes("[]")?r+=e+" "+c.substring(0,c.length-2)+" "+l+`[${d}];
246
+ `:r+=e+" "+c+" "+l+`;
247
+ `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof wt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,d=new As({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(d),s[t].push(d),s[t][d.name]=d,this.uniforms[d.name]=d,d}else{let s=this.inputs.uniforms,l=s.list.length,d=new As({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(d),s[t].push(d),s[t][d.name]=d,this.uniforms[d.name]=d,d}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?ft.get(t):t,this.context.include===!1)return t.name;t instanceof K?o=this.includes.functions:t instanceof Ie?o=this.includes.consts:t instanceof sa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let a=i[t.name];if(a||(a=i[t.name]={node:t,deps:[]},i.push(a),a.src=t.build(this,"source")),t instanceof K&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return K2[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case W2:case $2:return new Ec(r);case Y2:return new Nc(new Ft(r));default:return new Ft(r)}else{if(r.isVector2)return new Ke(r);if(r.isVector3)return new Nt(r);if(r.isVector4)return new Kt(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return Q2[t]||t}getFormatByType(t){return Z2[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return _0[t]}getIndexByElement(t){return _0.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=w0,e===w0&&this.context.gamma&&(e=X2),e}};import{Vector2 as Nr,Vector3 as eo,Vector4 as Pa}from"three";var Le=class extends Re{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof ht?e:new ht(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),d=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return d?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var _e=class extends Re{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,a,s){return e.format(this.value.toString(),i,r)}};import{UniformsLib as oO,UniformsUtils as nO}from"three";var et=class extends Re{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};var Or=class extends Re{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector3 as J2}from"three";var on=class extends Re{};var Lc=class extends on{constructor(e){super("v3");this.image=e;this._value=new J2}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 Ln=class extends on{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as eO}from"three";var da=class extends Re{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new eO}generateReadonly(e,r,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as tO}from"three";var Et=class extends Re{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new tO}generateReadonly(e,r,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as rO}from"three";function A0(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Bc=class extends da{constructor(e,r){super(new rO);this.repeat=e;this.offset=r;A0(this.value,e,r)}updateMatrix(){A0(this.value,this.repeat,this.offset)}};import{Vector4 as T0}from"three";var Mr=class extends Re{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof T0?new Array(e).fill(r):new Array(e).fill(new T0(0))}};var pa=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){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),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var np=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(np.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),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Bn=np;Bn.Nodes=function(){return{customColor:new K(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
234
248
  float lalpha = alpha * mask;
235
249
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
236
250
  accumAlpha += (1.0 - accumAlpha) * lalpha;
237
251
 
238
252
  return color;
239
- }`)}}();var Ou=class extends ae{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(Ou.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)}},ki=Ou;ki.Nodes=function(){return{customNormal:new H(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
253
+ }`)}}();var ip=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(ip.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),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},fa=ip;fa.Nodes=function(){return{customNormal:new K(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
240
254
  vec3 normal = packNormalToRGB( norm ).rgb;
241
255
  normal *= step( vec3(0.5), cnormal );
242
256
 
@@ -245,9 +259,9 @@ gVelocity = vec4(velocity, 0.0, 1.0);
245
259
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
246
260
 
247
261
  return normal;
248
- }`)}}();var Ui=class extends ae{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(Ui.Nodes.cylindrical);break;case 2:i=e.include(Ui.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(`
262
+ }`)}}();var ha=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=d,this.mat=c,this.isMask=f,this.alpha=u,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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(ha.Nodes.cylindrical);break;case 2:i=e.include(ha.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],l=["zy","xz","xy"][this.axis.value],d=new K(`
249
263
  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
- vec2 projected = (1. + (position.${c})) / 2.;
264
+ vec2 projected = (1. + (position.${l})) / 2.;
251
265
  vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
252
266
  writeUv = uvs;
253
267
 
@@ -255,7 +269,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
255
269
 
256
270
  vec3 col = tmp.rgb;
257
271
  float lalpha = alpha * tmp.a;
258
- ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${s}));`}
272
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, ${s}));`}
259
273
 
260
274
  if ( crop > 0.5 ) {
261
275
  if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
@@ -269,7 +283,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
269
283
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
270
284
 
271
285
  return col;
272
- }`);i=e.include(u);break;case 4:i=e.include(Ui.Nodes.triplanar);break;default:i=e.include(Ui.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)}},jo=Ui;jo.Nodes=function(){let e=new H(`
286
+ }`);i=e.include(d);break;case 4:i=e.include(ha.Nodes.triplanar);break;default:i=e.include(ha.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`,l=s+"0",d=s+"1",c=s+"2",u=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec3"),a.push(l),a.push(d),a.push(c),a.push(u)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),r)}},nn=ha;nn.Nodes=function(){let e=new K(`
273
287
  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
288
  vec3 posN = normalize(position);
275
289
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -304,7 +318,7 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
304
318
 
305
319
  return col;
306
320
  }
307
- `),t=new H(`
321
+ `),r=new K(`
308
322
  vec3 sphericalTexture(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) {
309
323
  vec3 posN = normalize(vPosition);
310
324
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -337,7 +351,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
337
351
 
338
352
  return col;
339
353
  }
340
- `),o=new H(`vec3 uvTexture(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) {
354
+ `),o=new K(`vec3 uvTexture(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) {
341
355
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
342
356
  writeUv = uvs;
343
357
 
@@ -358,7 +372,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
358
372
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
359
373
 
360
374
  return col;
361
- }`),i=new H(`vec3 triplanarTexture(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 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
375
+ }`),i=new K(`vec3 triplanarTexture(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 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
362
376
  vec3 p = position;
363
377
  vec2 uv0 = (1.0 + p.xy) / 2.0;
364
378
  vec2 uv1 = (1.0 + p.zy) / 2.0;
@@ -424,7 +438,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
424
438
 
425
439
  return col;//n * 0.5 + 0.5;
426
440
  }
427
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var Hi=class extends ae{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) {
441
+ `);return{cylindrical:e,spherical:r,uv:o,triplanar:i}}();var ma=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=d,this.colors=c,this.steps=u,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new K(`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
442
  vec4 color = colors[0];
429
443
  #ifdef ${o}_IS_VECTOR
430
444
  #ifdef ${o}_LINEAR
@@ -464,21 +478,21 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
464
478
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
465
479
 
466
480
  return color.rgb;
467
- }`,[Hi.Nodes.vectorLinearWorldSpaceDepth,Hi.Nodes.vectorLinearObjectSpaceDepth,Hi.Nodes.vectorSphericalObjectSpaceDepth,Hi.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)}},Wi=Hi;Wi.Nodes=function(){let e=new H(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
481
+ }`,[ma.Nodes.vectorLinearWorldSpaceDepth,ma.Nodes.vectorLinearObjectSpaceDepth,ma.Nodes.vectorSphericalObjectSpaceDepth,ma.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),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ya=ma;ya.Nodes=function(){let e=new K(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
468
482
  vec3 n = normalize(direction);
469
483
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
470
484
  return ( dist - near ) / ( far - near );
471
- }`),t=new H(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
485
+ }`),r=new K(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
472
486
  vec3 n = normalize(direction);
473
487
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
474
488
  return ( dist - near ) / ( far - near );
475
- }`),o=new H(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
489
+ }`),o=new K(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
476
490
  float dist = length(vWPosition - origin);
477
491
  return ( dist - near ) / ( far - near );
478
- }`),i=new H(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
492
+ }`),i=new K(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
479
493
  float dist = length(position - origin);
480
494
  return ( dist - near ) / ( far - near );
481
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Ja=class extends ae{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) {
495
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Cs=class extends ae{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=a,this.isMask=d,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new K(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
482
496
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
483
497
 
484
498
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -486,7 +500,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
486
500
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
487
501
 
488
502
  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 Au=class extends ae{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(Au.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)}},qi=Au;qi.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) {
503
+ }`),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),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var ap=class extends ae{constructor(e,r,o,i,a,s,l,d,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.isMask=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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(ap.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),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ga=ap;ga.Nodes=function(){return{gradient:new K(`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
504
  vec4 color = colors[0];
491
505
  vec2 m = morph / vUv.xy;
492
506
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -528,7 +542,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
528
542
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
529
543
 
530
544
  return color.xyz;
531
- }`)}}();var Cu=class extends ae{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(Cu.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)}},$i=Cu;$i.Nodes=function(){return{matcap:new H(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
545
+ }`)}}();var sp=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(sp.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),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},xa=sp;xa.Nodes=function(){return{matcap:new K(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
532
546
  vec3 viewDir = normalize( vViewPosition );
533
547
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
534
548
  vec3 y = cross( viewDir, x );
@@ -540,7 +554,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
540
554
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
541
555
 
542
556
  return matcapColor.rgb;
543
- }`)}}();var es=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(es||{}),ht=function(){let r=new H(`vec3 random3(vec3 c) {
557
+ }`)}}();var Ps=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Ps||{}),Tt=function(){let t=new K(`vec3 random3(vec3 c) {
544
558
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
545
559
  vec3 r;
546
560
  r.z = fract(512.0*j);
@@ -549,7 +563,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
549
563
  j *= .125;
550
564
  r.y = fract(512.0*j);
551
565
  return r-0.5;
552
- }`),e=new H(`float simplex3d(vec3 p) {
566
+ }`),e=new K(`float simplex3d(vec3 p) {
553
567
  vec3 s = floor(p + dot(p, vec3(F3)));
554
568
  vec3 x = p - s + dot(s, vec3(G3));
555
569
 
@@ -580,7 +594,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
580
594
  d *= w;
581
595
 
582
596
  return dot(d, vec4(52.0));
583
- }`,[r]);e.keywords.F3=new Ae("float F3 0.3333333"),e.keywords.G3=new Ae("float G3 0.1666667");let t=new H(`float simplex3dFractal(vec3 m) {
597
+ }`,[t]);e.keywords.F3=new Ie("float F3 0.3333333"),e.keywords.G3=new Ie("float G3 0.1666667");let r=new K(`float simplex3dFractal(vec3 m) {
584
598
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
585
599
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
586
600
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -588,7 +602,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
588
602
  + 0.2666667 * simplex3d(2.0 * m * rot2)
589
603
  + 0.1333333 * simplex3d(4.0 * m * rot3)
590
604
  + 0.0666667 * simplex3d(8.0 * m);
591
- }`,[e]),o=new H("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new H("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new H(`float simplexAshima(vec3 v) {
605
+ }`,[e]),o=new K("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new K("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new K(`float simplexAshima(vec3 v) {
592
606
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
593
607
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
594
608
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -633,7 +647,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
633
647
  m = m * m;
634
648
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
635
649
  dot(p2,x2), dot(p3,x3) ) );
636
- }`,[o,i]),s=new H("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new H("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),u=new H(`float noise(vec3 p){
650
+ }`,[o,i]),s=new K("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new K("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),d=new K(`float noise(vec3 p){
637
651
  vec3 a = floor(p);
638
652
  vec3 d = p - a;
639
653
  d = d * d * (3.0 - 2.0 * d);
@@ -648,7 +662,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
648
662
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
649
663
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
650
664
  return o4.y * d.y + o4.x * (1.0 - d.y);
651
- }`,[c]),l=new H(`float fbm(vec3 x) {
665
+ }`,[l]),c=new K(`float fbm(vec3 x) {
652
666
  float v = 0.0;
653
667
  float a = 0.5;
654
668
  vec3 shift = vec3(100);
@@ -658,7 +672,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
658
672
  a *= 0.5;
659
673
  }
660
674
  return v;
661
- }`,[u]);l.keywords.NUM_OCTAVES=new Ae(`int NUM_OCTAVES ${5}`);let d=new H("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new H(`float perlin(vec3 P){
675
+ }`,[d]);c.keywords.NUM_OCTAVES=new Ie(`int NUM_OCTAVES ${5}`);let u=new K("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new K(`float perlin(vec3 P){
662
676
  vec3 Pi0 = floor(P);
663
677
  vec3 Pi1 = Pi0 + vec3(1.0);
664
678
  Pi0 = mod(Pi0, 289.0);
@@ -717,17 +731,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
717
731
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
718
732
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
719
733
  return 2.2 * n_xyz;
720
- }`,[o,i,d]),f=new H(`float hashwithoutsine13(vec3 p3)
734
+ }`,[o,i,u]),f=new K(`float hashwithoutsine13(vec3 p3)
721
735
  {
722
736
  p3 = fract(p3 * .1031);
723
737
  p3 += dot(p3, p3.yzx + 33.33);
724
738
  return fract((p3.x + p3.y) * p3.z);
725
- }`),m=new H(`vec3 hashwithoutsine33(vec3 p3)
739
+ }`),h=new K(`vec3 hashwithoutsine33(vec3 p3)
726
740
  {
727
741
  p3 = fract(p3 * vec3(.1031, .1030, .0973));
728
742
  p3 += dot(p3, p3.yxz+33.33);
729
743
  return fract((p3.xxy + p3.yxx)*p3.zyx);
730
- }`),h=new H(`float metric(in vec3 p)
744
+ }`),m=new K(`float metric(in vec3 p)
731
745
  {
732
746
  // L2
733
747
  return length(p);
@@ -735,17 +749,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
735
749
  // Chebyshev
736
750
  // vec3 a = abs(p);
737
751
  // return max(a.x, max(a.y, a.z));
738
- }`),y=new H(`float smin( float a, float b, float k )
752
+ }`),y=new K(`float smin( float a, float b, float k )
739
753
  {
740
754
  float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
741
755
  float correction = k * h * (1.0 - h);
742
756
  return mix(b, a, h) - correction;
743
- }`),g=new H(`float smax( float a, float b, float k )
757
+ }`),g=new K(`float smax( float a, float b, float k )
744
758
  {
745
759
  float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
746
760
  float correction = k * h * (1.0 - h);
747
761
  return mix(a, b, h) + correction;
748
- }`),x=new H(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
762
+ }`),x=new K(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
749
763
  // Compute width of each interval
750
764
  float input_width = input_max - input_min;
751
765
  float output_width = output_max - output_min;
@@ -755,7 +769,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
755
769
 
756
770
  // Convert the 0-1 range into a value in output range
757
771
  return output_min + (scaled * output_width);
758
- }`),S=new H(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
772
+ }`),S=new K(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
759
773
  {
760
774
  // Integer and fractional parts of this point's coordinates
761
775
  ivec3 p = ivec3(floor(x));
@@ -893,7 +907,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
893
907
  return hashwithoutsine13(vec3(p + mb) + seed);
894
908
  }
895
909
  }
896
- `,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:a,fbm:l,perlin:p,voronoi:S}}();var Yi=class extends ae{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(es)[this.noiseType.value],c=s=="voronoi"?`
910
+ `,[f,h,m,y,g,x]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:S}}();var va=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=d,this.colorC=c,this.colorD=u,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=S,this.quality=w,this.isMask=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(Ps)[this.noiseType.value],l=s=="voronoi"?`
897
911
  float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
898
912
 
899
913
  // Apply clipping to colors
@@ -915,7 +929,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
915
929
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
916
930
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
917
931
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
918
- `,u=new H(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
932
+ `,d=new K(`vec3 ${s}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
919
933
  {
920
934
  // Prevent scale of zero
921
935
  scale = max(abs(scale), 0.001);
@@ -923,14 +937,14 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
923
937
  vec3 st = position / size;
924
938
  st /= scale;
925
939
 
926
- ${c}
940
+ ${l}
927
941
 
928
942
  float lalpha = alpha * color.a * mask;
929
943
  calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
930
944
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
931
945
 
932
946
  return clamp(color, 0.0, 1.0).rgb;
933
- }`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin,ht.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)}};Yi.numOctaves=5;var Nu=class extends ae{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(`
947
+ }`,[Tt.simplex,Tt.simplexFractal,Tt.simplexAshima,Tt.fbm,Tt.perlin,Tt.voronoi]),c=e.include(d),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.voronoiStyle.build(e,"i")),u.push(this.highCut.build(e,"f")),u.push(this.lowCut.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.seed.build(e,"f")),u.push(this.quality.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(c+"("+u.join(",")+")",this.getType(e),r)}};va.numOctaves=5;var lp=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=d,this.contourDirection=c,this.positionalLines=u,this.compensation=p,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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"),l=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(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
934
948
  vID = randomColor.r;
935
949
  vec2 ${o}_offset = vec2(0.0);
936
950
  if (${s}) {
@@ -939,13 +953,13 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
939
953
  // normals face the camera directly. So we hackily fix this by offsetting the normal
940
954
  // by a tiny amount.
941
955
  vec3 ${o}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
942
- ${o}_offset = normalize(${o}_clipNormal.xy) / ${a} * (${i} / 2.0) * ${o}_clipPosition.w * 2.0 * ${c};
956
+ ${o}_offset = normalize(${o}_clipNormal.xy) / ${a} * (${i} / 2.0) * ${o}_clipPosition.w * 2.0 * ${l};
943
957
  ${o}_clipPosition.xy += ${o}_offset;
944
958
  // TODO(MAX): To handle multiple outline layers, we only want to extrude
945
959
  // if this offset is the biggest of all the potential offsets
946
960
  gl_Position = ${o}_clipPosition;
947
961
  }
948
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Nu.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."),""}},Xi=Nu;Xi.Nodes=function(){let e=new H(`
962
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(lp.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),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ba=lp;ba.Nodes=function(){let e=new K(`
949
963
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
950
964
  {
951
965
  vec2 halton = haltonSequence[frameIndex];
@@ -1051,7 +1065,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1051
1065
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
1052
1066
  return edgeNormal;
1053
1067
  }
1054
- `);return{outline:new H(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1068
+ `);return{outline:new K(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1055
1069
  vec3 result = outlineColor;
1056
1070
  float resultAlpha = 0.0;
1057
1071
 
@@ -1094,12 +1108,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1094
1108
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1095
1109
 
1096
1110
  return result;
1097
- }`,[e])}}();var Gr=class extends ae{constructor(e,t,o,i,a,s,c,u,l,d,p,f,m,h,y,g,x,S){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=a,this.colorA=s,this.colorB=c,this.frequency=u,this.size=l,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=S,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,a=new H(`float hashwithoutsine12(vec2 p)
1111
+ }`,[e])}}();var Zr=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g,x,S){super("v3");this.nodeType="Pattern";this.style=e,this.projection=r,this.axis=o,this.blending=i,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=d,this.size=c,this.variation=u,this.smoothness=p,this.zigzag=f,this.rotation=h,this.vertical=m,this.horizontal=y,this.sides=g,this.isMask=S,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,a=new K(`float hashwithoutsine12(vec2 p)
1098
1112
  {
1099
1113
  vec3 p3 = fract(vec3(p.xyx) * .1031);
1100
1114
  p3 += dot(p3, p3.yzx + 33.33);
1101
1115
  return fract((p3.x + p3.y) * p3.z);
1102
- }`),s=new H(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1116
+ }`),s=new K(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1103
1117
  {
1104
1118
  const float mid = 0.5;
1105
1119
  float radians = a * (PI / 180.0);
@@ -1108,7 +1122,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1108
1122
  cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
1109
1123
  );
1110
1124
  return repeat ? fract(rotated): rotated;
1111
- }`),c="";if(this.projection.value===4){let p=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,m=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;c=`
1125
+ }`),l="";if(this.projection.value===4){let p=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,h=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;l=`
1112
1126
  vec3 p = position;
1113
1127
  float factor = 0.0125;
1114
1128
  vec2 uv0 = fract(p.xy * factor);
@@ -1121,7 +1135,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1121
1135
 
1122
1136
  float d0 = ${p};
1123
1137
  float d1 = ${f};
1124
- float d2 = ${m};
1138
+ float d2 = ${h};
1125
1139
 
1126
1140
  // Range from 3 to 128 seems to be good
1127
1141
  float exponent = (1.0 - blending) * 125.0 + 3.0;
@@ -1142,25 +1156,25 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1142
1156
  float theta = atan(p.x, p.z);
1143
1157
  float phi = acos(p.y / radius);`:(this.axis.value,f=`float radius = length(p);
1144
1158
  float theta = atan(p.y, p.x);
1145
- float phi = acos(p.z / radius);`);let m="";switch(this.projection.value){case 0:m="custom_uv = vUv.st;";break;case 1:break;case 2:m=`
1159
+ float phi = acos(p.z / radius);`);let h="";switch(this.projection.value){case 0:h="custom_uv = vUv.st;";break;case 1:break;case 2:h=`
1146
1160
  vec3 p = position;
1147
1161
  ${f}
1148
1162
  custom_uv = vec2(theta, phi);
1149
1163
  custom_uv /= PI;
1150
- `;break;case 3:break;default:break}c=`
1164
+ `;break;case 3:break;default:break}l=`
1151
1165
  vec2 custom_uv;
1152
- ${m}
1166
+ ${h}
1153
1167
 
1154
1168
  custom_uv += offset;
1155
1169
  custom_uv = fract(custom_uv);
1156
1170
  custom_uv = rotate_uv(custom_uv, rotation, true);
1157
1171
 
1158
1172
  float draw = ${p};
1159
- `}let u=new H(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1173
+ `}let d=new K(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1160
1174
  const float TWO_PI = PI * 2.0;
1161
1175
  float smoothness_remapped = pow(smoothness, 5.0);
1162
1176
 
1163
- ${c}
1177
+ ${l}
1164
1178
 
1165
1179
  // Construct final output color
1166
1180
  vec4 color = mix(colorA, colorB, draw);
@@ -1180,11 +1194,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1180
1194
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1181
1195
 
1182
1196
  return clamp(color, 0.0, 1.0).rgb;
1183
- }`,[s,a,Gr.DrawFunctions.circle,Gr.DrawFunctions.ring,Gr.DrawFunctions.polygon,Gr.DrawFunctions.cross,Gr.DrawFunctions.diamond,Gr.DrawFunctions.checkerboard,Gr.DrawFunctions.line,Gr.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)}},Ki=Gr;Ki.DrawFunctions=function(){let e=new H(`float hashwithoutsine12(vec2 p) {
1197
+ }`,[s,a,Zr.DrawFunctions.circle,Zr.DrawFunctions.ring,Zr.DrawFunctions.polygon,Zr.DrawFunctions.cross,Zr.DrawFunctions.diamond,Zr.DrawFunctions.checkerboard,Zr.DrawFunctions.line,Zr.DrawFunctions.wave]),c=e.include(d),u=[];return u.push("normal"),u.push(this.blending.build(e,"f")),u.push(this.style.build(e,"i")),u.push(this.offset.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.frequency.build(e,"v2")),u.push(this.size.build(e,"f")),u.push(this.variation.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.zigzag.build(e,"f")),u.push(this.rotation.build(e,"f")),u.push(this.vertical.build(e,"v2")),u.push(this.horizontal.build(e,"v2")),u.push(this.sides.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(c+"("+u.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},Sa=Zr;Sa.DrawFunctions=function(){let e=new K(`float hashwithoutsine12(vec2 p) {
1184
1198
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1185
1199
  p3 += dot(p3, p3.yzx + 33.33);
1186
1200
  return fract((p3.x + p3.y) * p3.z);
1187
- }`),t=new H(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1201
+ }`),r=new K(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1188
1202
  // Create tiles in UV-space
1189
1203
  uv *= frequency;
1190
1204
 
@@ -1213,14 +1227,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1213
1227
  f *= jitter;
1214
1228
 
1215
1229
  return f;
1216
- }`,[e]),o=new H(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1230
+ }`,[e]),o=new K(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1217
1231
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1218
1232
  return smoothstep(
1219
1233
  -smoothness,
1220
1234
  smoothness,
1221
1235
  length(f) - size
1222
1236
  );
1223
- }`,[t]),i=new H(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1237
+ }`,[r]),i=new K(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1224
1238
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1225
1239
 
1226
1240
  float d = length(f);
@@ -1229,7 +1243,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1229
1243
  float outer = smoothstep(-smoothness, smoothness, d - size);
1230
1244
  float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
1231
1245
  return outer + (1.0 - inner);
1232
- }`,[t]),a=new H(`float sdf_ngon(in vec2 p, in float r, in int n) {
1246
+ }`,[r]),a=new K(`float sdf_ngon(in vec2 p, in float r, in int n) {
1233
1247
  float an = (PI * 2.0) / float(n);
1234
1248
  float he = r * tan(0.5 * an);
1235
1249
 
@@ -1246,7 +1260,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1246
1260
  float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
1247
1261
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1248
1262
  return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
1249
- }`,[t]),s=new H(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1263
+ }`,[r]),s=new K(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1250
1264
  p = abs(p);
1251
1265
  p = (p.y > p.x) ? p.yx : p.xy;
1252
1266
  vec2 q = p - b;
@@ -1259,7 +1273,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1259
1273
  float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1260
1274
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1261
1275
  return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
1262
- }`,[t]),c=new H(`float ndot(vec2 a, vec2 b) {
1276
+ }`,[r]),l=new K(`float ndot(vec2 a, vec2 b) {
1263
1277
  return a.x*b.x - a.y*b.y;
1264
1278
  }
1265
1279
 
@@ -1273,7 +1287,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1273
1287
  float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1274
1288
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1275
1289
  return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
1276
- }`,[t]),u=new H(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1290
+ }`,[r]),d=new K(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1277
1291
  uv *= frequency;
1278
1292
  vec2 i = floor(uv);
1279
1293
 
@@ -1283,7 +1297,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1283
1297
  float x = floor(uv.x);
1284
1298
 
1285
1299
  return mod(x, 2.0);
1286
- }`),l=new H(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1300
+ }`),c=new K(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1287
1301
  vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
1288
1302
 
1289
1303
  // Different approach for variation param here
@@ -1296,7 +1310,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1296
1310
  s + smoothness,
1297
1311
  abs(f.y)
1298
1312
  );
1299
- }`,[t]),d=new H(`// Uses bisection
1313
+ }`,[r]),u=new K(`// Uses bisection
1300
1314
  float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
1301
1315
  // Convert all data to a primitive cosine wave
1302
1316
  p = c * (p - vec2(d, a));
@@ -1345,7 +1359,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1345
1359
  float s = mix(size, size * rand, variation);
1346
1360
 
1347
1361
  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 Iu=class extends ae{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(Iu.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)}},Zi=Iu;Zi.Nodes=function(){let e=new H(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1362
+ }`);return{tileAndCenter:r,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:d,line:c,wave:u}}();var cp=class extends ae{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=d,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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(cp.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),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},wa=cp;wa.Nodes=function(){let e=new K(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1349
1363
  vec3 st = position / noiseScale;
1350
1364
  vec3 q = vec3(simplex3d(st),
1351
1365
  simplex3d(st + vec3(1.0)),
@@ -1358,7 +1372,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1358
1372
  float noise = simplex3d(st + r);
1359
1373
 
1360
1374
  return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
1361
- }`,[ht.simplex]);return{rainbow:new H(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1375
+ }`,[Tt.simplex]);return{rainbow:new K(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1362
1376
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1363
1377
 
1364
1378
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -1368,14 +1382,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1368
1382
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1369
1383
 
1370
1384
  return res;
1371
- }`,[e])}}();var Mu=class extends ae{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(Mu.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)}},Qi=Mu;Qi.Nodes=function(){let e=new H(`float rand(float n) {
1385
+ }`,[e])}}();var up=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=d,this.offset=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(up.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),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},_a=up;_a.Nodes=function(){let e=new K(`float rand(float n) {
1372
1386
  return fract(sin(n) * 43758.5453123);
1373
- }`),t=new H(`float hash1(float p) {
1387
+ }`),r=new K(`float hash1(float p) {
1374
1388
  p = fract(p * 0.011);
1375
1389
  p *= p + 7.5;
1376
1390
  p *= p + p;
1377
1391
  return fract(p);
1378
- }`),o=new H(`float valueNoise(vec3 x) {
1392
+ }`),o=new K(`float valueNoise(vec3 x) {
1379
1393
  const vec3 step = vec3(110, 241, 171);
1380
1394
 
1381
1395
  vec3 i = floor(x);
@@ -1390,13 +1404,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1390
1404
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1391
1405
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1392
1406
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1393
- }`,[t]),i=new H(`vec3 hash3(vec3 x) {
1407
+ }`,[r]),i=new K(`vec3 hash3(vec3 x) {
1394
1408
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1395
1409
  dot(x,vec3(269.5, 183.3, 246.1)),
1396
1410
  dot(x,vec3(113.5, 271.9, 124.6)));
1397
1411
 
1398
1412
  return fract(sin(x)*43758.5453123);
1399
- }`),a=new H(`vec3 voronoiNoise(in vec3 x)
1413
+ }`),a=new K(`vec3 voronoiNoise(in vec3 x)
1400
1414
  {
1401
1415
  vec3 p = floor(x);
1402
1416
  vec3 f = fract(x);
@@ -1427,7 +1441,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1427
1441
 
1428
1442
  return vec3(sqrt(res), abs(id));
1429
1443
  }
1430
- `,[i]);return{toon:new H(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1444
+ `,[i]);return{toon:new K(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1431
1445
  float t = 0.0;
1432
1446
  float shadow = 1.0;
1433
1447
 
@@ -1604,7 +1618,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1604
1618
 
1605
1619
  return color.xyz;
1606
1620
 
1607
- }`,[ht.simplex,e,o,a])}}();import{Vector2 as jg}from"three";var zg=function(){return{textureBicubic:new H(`float w0( float a ) {
1621
+ }`,[Tt.simplex,e,o,a])}}();import{Vector2 as P0}from"three";var C0=function(){return{textureBicubic:new K(`float w0( float a ) {
1608
1622
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1609
1623
  }
1610
1624
 
@@ -1668,7 +1682,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1668
1682
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1669
1683
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1670
1684
  return mix( fSample, cSample, fract( lod ) );
1671
- }`)}}();function Fg(n,r){return n>=r?new jg(r/n,1):new jg(1,n/r)}var Eu=class extends ae{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,ve.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(Eu.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)}},Ji=Eu;Ji.Nodes=function(){let e=new H(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1685
+ }`)}}();function O0(n,t){return n>=t?new P0(t/n,1):new P0(1,n/t)}var dp=class extends ae{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,be.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(dp.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),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Aa=dp;Aa.Nodes=function(){let e=new K(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1672
1686
  // Slightly modified version of this:
1673
1687
  // https://www.shadertoy.com/view/ltScRG
1674
1688
 
@@ -1701,7 +1715,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1701
1715
  res += textureLod(sp, uv, lod).rgb;
1702
1716
  }
1703
1717
  return res / float(NUM_SAMPLES);
1704
- }`),t=new H(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1718
+ }`),r=new K(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1705
1719
  // Direction of refracted light.
1706
1720
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
1707
1721
 
@@ -1713,11 +1727,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1713
1727
 
1714
1728
  // The thickness is specified in local space
1715
1729
  return normalize( refractionVector ) * thickness * modelScale;
1716
- }`),o=new H(`float applyIorToRoughness( float roughness, float ior ) {
1730
+ }`),o=new K(`float applyIorToRoughness( float roughness, float ior ) {
1717
1731
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
1718
1732
  // an IOR of 1.5 results in the default amount of microfacet refraction.
1719
1733
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
1720
- }`),i=new H(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1734
+ }`),i=new K(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1721
1735
  // Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
1722
1736
  // also the code in convertTransmission.ts, which runs during export
1723
1737
  #ifdef IS_THREEJS_EXPORT
@@ -1728,7 +1742,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1728
1742
  float lod = applyIorToRoughness(roughness, ior);
1729
1743
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1730
1744
  #endif
1731
- }`,[zg.textureBicubic,o,e]),a=new H(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1745
+ }`,[C0.textureBicubic,o,e]),a=new K(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1732
1746
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1733
1747
  vec3 refractedRayExit = position + transmissionRay;
1734
1748
 
@@ -1745,7 +1759,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1745
1759
 
1746
1760
  // Sample framebuffer to get pixel the refracted ray hits.
1747
1761
  return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
1748
- }`,[i,t]);return{transmission:new H(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1762
+ }`,[i,r]);return{transmission:new K(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1749
1763
  vec3 v = vec3(0.);
1750
1764
  if (isOrthographic) {
1751
1765
  v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
@@ -1759,9 +1773,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1759
1773
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1760
1774
 
1761
1775
  return transmission;
1762
- }`,[a])}}();var Lu=(e=>(e.NOISE="noise",e.MAP="map",e))(Lu||{}),Du=class extends ae{constructor(e,t,o,i,a,s,c,u,l,d,p){super("v3");this.displacementTypeIndex=new we(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Lu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ji(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(Lu)[this.displacementTypeIndex.value]){case"map":{o=e.include(Du.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(es)[this.noiseFunctionIndex.value],c=new H(`vec3 orthogonal(vec3 v) {
1776
+ }`,[a])}}();var pp=(e=>(e.NOISE="noise",e.MAP="map",e))(pp||{}),fp=class extends ae{constructor(e,r,o,i,a,s,l,d,c,u,p){super("v3");this.displacementTypeIndex=new _e(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(pp)[this.displacementTypeIndex.value]==="map"&&(this.mat=new da(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=d,this.quality=c}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(pp)[this.displacementTypeIndex.value]){case"map":{o=e.include(fp.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(Ps)[this.noiseFunctionIndex.value],l=new K(`vec3 orthogonal(vec3 v) {
1763
1777
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1764
- }`),u=s=="voronoi"?`
1778
+ }`),d=s=="voronoi"?`
1765
1779
  float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1766
1780
  v = remap(v, lowCut, highCut, 0.0, 1.0);
1767
1781
  v = smax(v, 0.0, smoothness * 0.25);
@@ -1770,9 +1784,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1770
1784
  return p + n * v * intensity;
1771
1785
  `:`
1772
1786
  return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1773
- `,l=new H(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1774
- ${u}
1775
- }`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin,ht.voronoi]),d=new H(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1787
+ `,c=new K(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1788
+ ${d}
1789
+ }`,[Tt.simplex,Tt.simplexFractal,Tt.simplexAshima,Tt.fbm,Tt.perlin,Tt.voronoi]),u=new K(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1776
1790
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1777
1791
  vec3 tangent1 = orthogonal(normal);
1778
1792
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1788,9 +1802,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1788
1802
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1789
1803
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1790
1804
  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)}},ea=Du;ea.Nodes=function(){let e=new H(`vec3 orthogonal(vec3 v) {
1805
+ }`,[c,l]);o=e.include(u),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),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ta=fp;Ta.Nodes=function(){let e=new K(`vec3 orthogonal(vec3 v) {
1792
1806
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1793
- }`),t=new H(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1807
+ }`),r=new K(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1794
1808
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
1795
1809
  vec4 tmp = texture2D(tex, uvs);
1796
1810
  vec3 col = tmp.rgb;
@@ -1800,7 +1814,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1800
1814
  }
1801
1815
  }
1802
1816
  return col.r;
1803
- }`);return{map:new H(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1817
+ }`);return{map:new K(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1804
1818
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
1805
1819
  vec3 tangent1 = normalize(orthogonal(normal));
1806
1820
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1810,7 +1824,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1810
1824
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1811
1825
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1812
1826
  return displaced_position;
1813
- }`,[e,t])}}();var ve={normalRenderTarget:new It,normalRenderTargetDepth:new It,transmissionRenderTarget:new It,aspectRatio:new He,transmissionSize:new He(2048,2048),transmissionRenderTargetDepth:new It,aoRenderTarget:new It,aoEnabled:new $e,pixelRatioNode:new J(1),resolution:new He,penumbraSize:new mr(5,.5),frameIndex:new we(0),transmissionLod:new we(2)};for(let n of Object.values(ve))n.isRenderGlobal=!0;var fn=class extends pt{constructor(){super("basic");this.nodeType="Basic";this.color=new Me(rt),this.shadingAlpha=new J(1),this.shadingBlend=new we(0),this.previousModelViewMatrix=new wt,this.previouseProjectionMatrix=new wt}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:ve.frameIndex}),e.mergeUniform({resolution:ve.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(BA.merge([DA.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1827
+ }`,[e,r])}}();var be={normalRenderTarget:new Ft,normalRenderTargetDepth:new Ft,transmissionRenderTarget:new Ft,aspectRatio:new Ke,transmissionSize:new Ke(2048,2048),transmissionRenderTargetDepth:new Ft,aoRenderTarget:new Ft,aoEnabled:new et,pixelRatioNode:new J(1),resolution:new Ke,penumbraSize:new Or(5,.5),frameIndex:new _e(0),transmissionLod:new _e(2)};for(let n of Object.values(be))n.isRenderGlobal=!0;var Vn=class extends wt{constructor(){super("basic");this.nodeType="Basic";this.color=new Le(dt),this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(nO.merge([oO.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1814
1828
  `));let i=["#include <beginnormal_vertex>",`
1815
1829
  #if !defined( USE_LAYER_DISPLACE )
1816
1830
  #include <defaultnormal_vertex>
@@ -1827,10 +1841,10 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1827
1841
  #if !defined( USE_LAYER_DISPLACE )
1828
1842
  #include <begin_vertex>
1829
1843
  #endif /* !USE_LAYER_DISPLACE */
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
- `)}else{this.color===void 0&&(this.color=new Me(rt)),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
- `));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}};import{UniformsLib as kg,UniformsUtils as RA}from"three";var ts=class extends pt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Me(rt),this.emissive=new Me(0),this.emissiveIntensity=new J(1),this.previousModelViewMatrix=new wt,this.previouseProjectionMatrix=new wt,this.shadingAlpha=new J(1),this.shadingBlend=new we(0),this.occlusion=new $e(!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:ve.frameIndex}),e.mergeUniform({resolution:ve.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(RA.merge([kg.fog,kg.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(`
1844
+ `];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;"),r=i.join(`
1845
+ `)}else{this.color===void 0&&(this.color=new Le(dt)),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(`
1846
+ `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let d="1.0";this.mask&&(this.mask.analyze(e),d=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${d} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
1847
+ `)}return r}};import{UniformsLib as M0,UniformsUtils as iO}from"three";var Os=class extends wt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Le(dt),this.emissive=new Le(0),this.emissiveIntensity=new J(1),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new et(!0)}get category(){return"lambert"}build(e){let r;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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(iO.merge([M0.fog,M0.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
1848
  `));let i=["#include <beginnormal_vertex>",`
1835
1849
  #ifndef USE_LAYER_DISPLACE
1836
1850
  #include <defaultnormal_vertex>
@@ -1922,24 +1936,24 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1922
1936
  }
1923
1937
  #pragma unroll_loop_end
1924
1938
  #endif
1925
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1926
- `)}else{e.mergeUniform({penumbraSize:ve.penumbraSize}),e.mergeUniform({frameIndex:ve.frameIndex}),e.mergeUniform({aoMap:ve.aoRenderTarget}),e.mergeUniform({aoEnabled:ve.aoEnabled}),this.color===void 0&&(this.color=new Me(rt)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1939
+ `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
1940
+ `)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new Le(dt)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1927
1941
  `));let f=["#include <normal_fragment_begin>",`
1928
1942
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1929
1943
  vec3 viewdx = dFdx(vViewPosition);
1930
1944
  vec3 viewdy = dFdy(vViewPosition);
1931
1945
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
1932
1946
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
1933
- `,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),d&&f.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&f.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1947
+ `,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&f.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1934
1948
  if (outgoingLight != diffuseColor) {
1935
1949
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1936
- accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
1937
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${u.result} );
1950
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
1951
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${h}, ${d.result} );
1938
1952
 
1939
1953
  outgoingLight *= ao;
1940
1954
  }
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}};import{UniformsLib as Ug,UniformsUtils as GA}from"three";var so=function(){let n=new H(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1955
+ `),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.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>"),r=f.join(`
1956
+ `)}return r}};import{UniformsLib as I0,UniformsUtils as aO}from"three";var To=function(){let n=new K(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1943
1957
 
1944
1958
  // Gradient of UVs w.r.t. X coordinate (in screen-space)
1945
1959
  vec2 dSTdx = dFdx(bumpMapUv);
@@ -1953,7 +1967,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1953
1967
  float dBy = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdy).rgb) - Hll;
1954
1968
 
1955
1969
  return vec2( dBx, dBy );
1956
- }`),r=new H(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1970
+ }`),t=new K(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1957
1971
  vec3 vSigmaX = dFdx( surf_pos.xyz );
1958
1972
  vec3 vSigmaY = dFdy( surf_pos.xyz );
1959
1973
  vec3 vN = surf_norm; // normalized
@@ -1970,7 +1984,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1970
1984
 
1971
1985
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
1972
1986
  return normalize( abs( fDet ) * vN - vGrad );
1973
- }`);return{dHdxy:n,perturbNormalArb:r}}();var rs=class extends pt{constructor(){super("phong");this.nodeType="Phong";this.color=new Me(rt),this.specular=new Me(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new wt,this.previouseProjectionMatrix=new wt,this.shadingAlpha=new J(1),this.shadingBlend=new we(0),this.occlusion=new $e(!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:ve.frameIndex}),e.mergeUniform({resolution:ve.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(GA.merge([Ug.fog,Ug.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(`
1987
+ }`);return{dHdxy:n,perturbNormalArb:t}}();var Ms=class extends wt{constructor(){super("phong");this.nodeType="Phong";this.color=new Le(dt),this.specular=new Le(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new et(!0)}get category(){return"phong"}build(e){let r;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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(aO.merge([I0.fog,I0.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
1988
  `));let i=["#include <beginnormal_vertex>",`
1975
1989
  #include <skinbase_vertex>
1976
1990
  #include <skinnormal_vertex>
@@ -1990,8 +2004,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1990
2004
  #ifndef USE_LAYER_DISPLACE
1991
2005
  #include <begin_vertex>
1992
2006
  #endif
1993
- `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1994
- `)}else{e.mergeUniform({penumbraSize:ve.penumbraSize}),e.mergeUniform({frameIndex:ve.frameIndex}),e.mergeUniform({aoMap:ve.aoRenderTarget}),e.mergeUniform({aoEnabled:ve.aoEnabled}),this.color===void 0&&(this.color=new Me(rt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
2007
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
2008
+ `)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new Le(dt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1995
2009
  `));let f=["#include <normal_fragment_begin>",`
1996
2010
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1997
2011
  vec3 viewdx = dFdx(vViewPosition);
@@ -2000,7 +2014,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2000
2014
  if (dot(normal, faceNormal) < 0.0) {
2001
2015
  normal *= -1.0;
2002
2016
  }
2003
- `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(so.dHdxy),e.include(so.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",x="";this.bumpMap.projection.value===4?x=`
2017
+ `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(To.dHdxy),e.include(To.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",x="";this.bumpMap.projection.value===4?x=`
2004
2018
  vec3 bumpNormal = vec3(0.0);
2005
2019
  {
2006
2020
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2008,13 +2022,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2008
2022
  vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2009
2023
  vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2010
2024
 
2011
- vec2 grad0 = dHdxy(${h.result}, uv0, ${g});
2025
+ vec2 grad0 = dHdxy(${m.result}, uv0, ${g});
2012
2026
  vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2013
2027
 
2014
- vec2 grad1 = dHdxy(${h.result}, uv1, ${g});
2028
+ vec2 grad1 = dHdxy(${m.result}, uv1, ${g});
2015
2029
  vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2016
2030
 
2017
- vec2 grad2 = dHdxy(${h.result}, uv2, ${g});
2031
+ vec2 grad2 = dHdxy(${m.result}, uv2, ${g});
2018
2032
  vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2019
2033
 
2020
2034
  bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
@@ -2024,21 +2038,21 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2024
2038
  normal = bumpNormal;
2025
2039
  `:x=`
2026
2040
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2027
- vec2 grad = dHdxy(${h.result}, bumpMapCachedUv, ${g});
2041
+ vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${g});
2028
2042
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2029
2043
  `,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2030
2044
  ${y.result};
2031
2045
  ${x}
2032
- `)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),d&&f.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
2046
+ `)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
2033
2047
  if (outgoingLight != diffuseColor) {
2034
2048
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2035
- accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
2036
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${u.result} );
2049
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
2050
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${h}, ${d.result} );
2037
2051
 
2038
2052
  outgoingLight *= ao;
2039
2053
  }
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}};import{UniformsLib as Bu,UniformsUtils as VA}from"three";var os=class extends pt{constructor(){super("standard");this.nodeType="Standard";this.color=new Me(rt),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.previousModelViewMatrix=new wt,this.previouseProjectionMatrix=new wt,this.shadingAlpha=new J(1),this.shadingBlend=new we(0),this.occlusion=new $e(!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:ve.frameIndex}),e.mergeUniform({resolution:ve.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(VA.merge([Bu.fog,Bu.lights])),Bu.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(`
2054
+ `),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.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>"),r=f.join(`
2055
+ `)}return r}};import{UniformsLib as hp,UniformsUtils as sO}from"three";var Is=class extends wt{constructor(){super("standard");this.nodeType="Standard";this.color=new Le(dt),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new et(!0)}get category(){return"physical"}build(e){let r;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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(sO.merge([hp.fog,hp.lights])),hp.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
2056
  `));let i=["#include <beginnormal_vertex>",`
2043
2057
  #if !defined( USE_LAYER_DISPLACE )
2044
2058
  #include <defaultnormal_vertex>
@@ -2055,9 +2069,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2055
2069
  #if !defined( USE_LAYER_DISPLACE )
2056
2070
  #include <begin_vertex>
2057
2071
  #endif /* !USE_LAYER_DISPLACE */
2058
- `];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>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2059
- `)}else{e.mergeUniform({penumbraSize:ve.penumbraSize}),e.mergeUniform({frameIndex:ve.frameIndex}),e.mergeUniform({aoMap:ve.aoRenderTarget}),e.mergeUniform({aoEnabled:ve.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Me(rt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),c=this.metalness.flow(e,"f"),u=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,m=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2060
- `));let h=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
2072
+ `];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>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
2073
+ `)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Le(dt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),d=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2074
+ `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
2061
2075
  // NOTE: gl_FrontFacing alternative using face normal estimation.
2062
2076
  vec3 viewdx = dFdx(vViewPosition);
2063
2077
  vec3 viewdy = dFdy(vViewPosition);
@@ -2065,7 +2079,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2065
2079
  if (dot(normal, faceNormal) < 0.0) {
2066
2080
  normal *= -1.0;
2067
2081
  }
2068
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(so.dHdxy),e.include(so.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),x=this.bumpMap.flow(e,"v3"),S=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",w="";this.bumpMap.projection.value===4?w=`
2082
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(To.dHdxy),e.include(To.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),x=this.bumpMap.flow(e,"v3"),S=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",w="";this.bumpMap.projection.value===4?w=`
2069
2083
  vec3 bumpNormal = vec3(0.0);
2070
2084
  {
2071
2085
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2091,10 +2105,10 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2091
2105
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2092
2106
  vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${S});
2093
2107
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2094
- `,h.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2108
+ `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2095
2109
  ${x.result};
2096
2110
  ${w}
2097
- `)}if(h.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",c.code," float metalnessFactor = "+c.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),x=this.roughnessMap.flow(e,"v3"),S="";this.roughnessMap.projection.value===4?S=`
2111
+ `)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),x=this.roughnessMap.flow(e,"v3"),S="";this.roughnessMap.projection.value===4?S=`
2098
2112
  float roughnessChange = 1.0;
2099
2113
  {
2100
2114
  vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2114,22 +2128,22 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2114
2128
 
2115
2129
  vec4 vals = texture(${g.result}, roughnessMapCachedUv);
2116
2130
  float roughnessFactor = luminance(vals.rgb) * ${s.result};
2117
- `,h.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2131
+ `,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2118
2132
  ${x.result};
2119
2133
 
2120
2134
  const float roughnessScale = 1.0;
2121
2135
 
2122
2136
  ${S}
2123
- `)}else h.push(s.code," float roughnessFactor = "+s.result+";");p&&h.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),h.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),m?h.push(m.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+m.result+" ) ), diffuseColor, metalnessFactor );"):h.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),h.push("#include <lights_fragment_begin>"),h.push("#include <lights_fragment_end>"),h.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),h.push(`
2137
+ `)}else m.push(s.code," float roughnessFactor = "+s.result+";");p&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),h?m.push(h.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+h.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
2124
2138
  if (outgoingLight != diffuseColor) {
2125
2139
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2126
- accumAlpha += ( 1.0 - accumAlpha ) * ${u.result} * ${y} * lightAccu;
2127
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${u.result} * ${y}, ${l.result} );
2140
+ accumAlpha += ( 1.0 - accumAlpha ) * ${d.result} * ${y} * lightAccu;
2141
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${d.result} * ${y}, ${c.result} );
2128
2142
 
2129
2143
  outgoingLight *= ao;
2130
2144
  }
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}};import{UniformsLib as Hg,UniformsUtils as zA}from"three";var ns=class extends pt{constructor(){super("toon");this.nodeType="Toon";this.color=new Me(rt),this.specular=new Me(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new wt,this.previouseProjectionMatrix=new wt,this.shadingAlpha=new J(1),this.shadingBlend=new we(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:ve.frameIndex}),e.mergeUniform({resolution:ve.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(zA.merge([Hg.fog,Hg.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(`
2145
+ `),u&&m.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
2146
+ `)}return r}};import{UniformsLib as N0,UniformsUtils as lO}from"three";var Ns=class extends wt{constructor(){super("toon");this.nodeType="Toon";this.color=new Le(dt),this.specular=new Le(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Et,this.previouseProjectionMatrix=new Et,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0)}get category(){return"toon"}build(e){let r;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:be.frameIndex}),e.mergeUniform({resolution:be.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(lO.merge([N0.fog,N0.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
2147
  `));let i=["#include <beginnormal_vertex>",`
2134
2148
  #ifndef USE_LAYER_DISPLACE
2135
2149
  #include <defaultnormal_vertex>
@@ -2146,8 +2160,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2146
2160
  #ifndef USE_LAYER_DISPLACE
2147
2161
  #include <begin_vertex>
2148
2162
  #endif
2149
- `];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>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2150
- `)}else{e.mergeUniform({penumbraSize:ve.penumbraSize}),e.mergeUniform({frameIndex:ve.frameIndex}),e.mergeUniform({aoMap:ve.aoRenderTarget}),e.mergeUniform({aoEnabled:ve.aoEnabled}),this.color===void 0&&(this.color=new Me(rt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2163
+ `];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>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
2164
+ `)}else{e.mergeUniform({penumbraSize:be.penumbraSize}),e.mergeUniform({frameIndex:be.frameIndex}),e.mergeUniform({aoMap:be.aoRenderTarget}),e.mergeUniform({aoEnabled:be.aoEnabled}),this.color===void 0&&(this.color=new Le(dt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0,u=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2151
2165
  varying vec3 vViewPosition;
2152
2166
  struct ToonMaterial {
2153
2167
  vec3 diffuseColor;
@@ -2176,7 +2190,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2176
2190
  if (dot(normal, faceNormal) < 0.0) {
2177
2191
  normal *= -1.0;
2178
2192
  }
2179
- `," ToonMaterial material;"];if(this.bumpMap){e.include(so.dHdxy),e.include(so.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),h=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
2193
+ `," ToonMaterial material;"];if(this.bumpMap){e.include(To.dHdxy),e.include(To.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
2180
2194
  vec3 bumpNormal = vec3(0.0);
2181
2195
  {
2182
2196
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2184,13 +2198,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2184
2198
  vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2185
2199
  vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2186
2200
 
2187
- vec2 grad0 = dHdxy(${m.result}, uv0, ${y});
2201
+ vec2 grad0 = dHdxy(${h.result}, uv0, ${y});
2188
2202
  vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2189
2203
 
2190
- vec2 grad1 = dHdxy(${m.result}, uv1, ${y});
2204
+ vec2 grad1 = dHdxy(${h.result}, uv1, ${y});
2191
2205
  vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2192
2206
 
2193
- vec2 grad2 = dHdxy(${m.result}, uv2, ${y});
2207
+ vec2 grad2 = dHdxy(${h.result}, uv2, ${y});
2194
2208
  vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2195
2209
 
2196
2210
  bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
@@ -2200,23 +2214,23 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2200
2214
  normal = bumpNormal;
2201
2215
  `:g=`
2202
2216
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2203
- vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${y});
2217
+ vec2 grad = dHdxy(${h.result}, bumpMapCachedUv, ${y});
2204
2218
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2205
2219
  `,p.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2206
- ${h.result};
2220
+ ${m.result};
2207
2221
  ${g}
2208
- `)}p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),l&&p.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
2222
+ `)}p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
2209
2223
  if (outgoingLight != diffuseColor) {
2210
2224
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2211
2225
  accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${f} * lightAccu;
2212
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${c.result} );
2226
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
2213
2227
  }
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}};import{VideoTexture as jA,Texture as FA}from"three";var sc=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 Gu=class extends sc{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Ru;function Wg(n){return typeof n=="string"?n:(Ru||(Ru=new Gu),Ru.load(n))}var lc=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")}},cc=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 ta=class extends lc{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=Wg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new jA(this.img,void 0,e,e):o=new FA(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 Jt=class extends ta{};import{Vector2 as lo,Vector3 as Vr,Vector4 as dc}from"three";function Tt(n,r){return r.color(n)}function qg(n,r){switch(n.type){case"fresnel":return HA(n,r);case"gradient":return WA(n,r);case"depth":return qA(n,r);case"normal":return $A(n,r);case"noise":return YA(n,r);case"rainbow":return XA(n,r);case"toon":return KA(n,r);case"outline":return ZA(n,r);case"transmission":return QA(n,r);case"color":return UA(n,r);case"pattern":return JA(n,r)}}function kA(n){return{type:n.type}}function yr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...kA(n),alpha:i,mode:t,isMask:o}}function UA(n,r){return{...yr(n,r),color:Tt(n.color,r)}}function HA(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...yr(n,r),color:Tt(a,r),bias:e,scale:t,intensity:o,factor:i}}function WA(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:c}=n;return{...yr(n,r),gradientType:e,smooth:t,colors:o.map(u=>new dc(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new lo(...s),morph:new lo(...c),angle:a}}function qA(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{...yr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new Vr(...s),direction:c?new Vr(...c):new Vr(1,0,0),colors:u.map(p=>p!==void 0?new dc(p[0],p[1],p[2],p[3]):new dc(0,0,0,0)),steps:l.slice(0,u.length),smooth:d}}function $A(n,r){let{cnormal:e}=n;return{...yr(n,r),cnormal:new Vr(e[0],e[1],e[2])}}function YA(n,r){return{...yr(n,r),scale:n.scale,move:n.move,fA:new lo(...n.fA),fB:new lo(...n.fB),size:new Vr(...n.size),distortion:new lo(...n.distortion),colorA:Tt(n.colorA,r),colorB:Tt(n.colorB,r),colorC:Tt(n.colorC,r),colorD:Tt(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 XA(n,r){return{...yr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Vr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Vr(...n.offset)}}function KA(n,r){return{...yr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new dc(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Vr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Tt(n.shadowColor,r),offset:new Vr(...n.offset)}}function ZA(n,r){return{...yr(n,r),outlineColor:Tt(n.outlineColor,r),contourColor:Tt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Vr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function QA(n,r){return{...yr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function JA(n,r){return{...yr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new lo(...n.offset),colorA:Tt(n.colorA,r),colorB:Tt(n.colorB,r),frequency:new lo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new lo(...n.vertical),horizontal:new lo(...n.horizontal),sides:n.sides}}var Fo=class extends it{};import{Vector4 as eC}from"three";var Vu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},zu={depth:["colors"]};function tC(n,r,e){if(r==="isMask")return!0;let t=Vu[n.type],o=zu[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 ju(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 Jt||c.image.deref(),c.image=s}if("video"in i){let a=i.video,s=r.video(a),c=t;c.image instanceof Jt||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 $g(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(Fu(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 zo))switch(o=o||tC(e,i,a),s.constructor){case Me:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof Fo?s.value=new it(c.r,c.g,c.b,c.a):s.setRGBA(c);break}case Vt:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof Fo?s.value=new it(c.r,c.g,c.b,c.a):s.value.setRGBA(c.r,c.g,c.b,c.a);break}case He:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]);break}case St:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]),s.value.setZ(c[2]);break}case It:{ju(a,r,e);break}case hr:{s.value=a.map(c=>new eC(...c));break}default:{s.value=a;break}}}return o}var ko=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,jr=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)Fu(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Yt.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 dn(i,t.texture.wrapping),s=new ic(i),c=new ac(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),l=new we(t.projection??0),d=new we(["x","y","z"].indexOf(t.axis)??0),p=new we(t.side??0),f=new He(t.size?new gr(t.size[0],t.size[1]):new gr(100,100)),m=new J(t.blending??0),h=new J(ko(t.alpha,o)),y=new we(t.mode??0),g=new $e(t.isMask??!1),x=new jo(a,s,u,l,d,p,f,m,c,h,y,g),S=new Ne(x.calpha,"f");return new je(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 dn(i,t.texture.wrapping),s=new J(ko(t.alpha,o)),c=new we(t.mode??0),u=new $e(t.isMask??!1),l=new $i(a,s,c,u),d=new Ne(l.calpha,"f");return new je(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 St(new zr(...t.offset)),a=new J(t.scale??10),s=new J(t.intensity??8),c=new J(t.movement??1),u=new we(t.noiseType??0),l=new we(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 we(t.quality??1),y=new ea(s,c,i,l,d,p,f,m,h,a,u);return new is(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 nC(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):$g(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?ju(o.props,t.shared,this):!0;return!1}dispose(){if(rC(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Jt||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}},je=class extends jr{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}},is=class extends jr{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},Yt=class extends jr{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(ko(o.alpha,i)),c=new we(o.mode),u=new J(o.bumpMapIntensity),l=new J(ko(o.alphaOverride,i)),d;if(!o.visible)a=new fn,d={};else if(o.category==="lambert"){a=new ts;let p=new Me(i.color(o.emissive)??0),f=new $e(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new ns;let p=new J(o.shininess??30),f=new Me(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new os;let p=new J(o.roughness??.3),f=new J(o.metalness??0),m=new J(o.reflectivity??.5),h=new $e(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 rs;let p=new J(o.shininess??30),f=new Me(o.specular!==void 0?i.color(o.specular)??1118481:1118481),m=new $e(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 Yt(e,t,o,a,d,i)}get category(){return this.node.category}};function rC(n){let r=n instanceof jr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function er(n){return{alpha:new J(n.alpha??1),mode:new we(n.mode??0),isMask:new $e(n.isMask??!1)}}function oC(n,r,e,t,o){switch(n.type){case"color":{let i=new Me(t.color??rt),a=er(t),s=new un(i,a.alpha),c=new Ne(s.calpha,"f");return new je(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}case"fresnel":{let i=new Me(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=er(t),d=new Ja(i,a,s,c,u,l.alpha,l.mode,l.isMask),p=new Ne(d.calpha,"f");return new je(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 St(t.wavelengths??new zr(0,0,0)),c=new J(t.noiseStrength??0),u=new J(t.noiseScale??1),l=new St(t.offset??new zr(0,0,0)),d=er(t),p=new Zi(i,a,s,c,u,l,d.alpha,d.isMask),f=new Ne(p.calpha,"f");return new je(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=ve.transmissionSize,u=ve.transmissionRenderTarget,l=ve.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new He(p/d,1):new He(1,d/p),m=er(t),h=new Ji(i,a,s,c,u,l,f,m.alpha),y=new Ne(h.calpha,"f");return new je(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...m},h,m.mode,y,m.isMask,o)}case"toon":{let i=new we(t.positioning??0),a;t.colors?a=new hr(t.colors.length,t.colors):(a=new hr(10,new ra(0,0,0,1)),a.value[1]=new ra(1,1,1,1));let s;t.steps?s=new mr(t.steps.length,t.steps):(s=new mr(10,1),s.value[0]=0);let c=new St(t.source??new zr(0,0,0)),u=new $e(t.isWorldSpace??!0),l=new J(t.noiseStrength??0),d=new J(t.noiseScale??1),p=new Vt(t.shadowColor),f=new St(t.offset??new zr(0,0,0)),m=er(t),h=new Qi(i,a,s,c,u,l,d,p,f,m.alpha),y=new Ne(h.calpha,"f");return new je(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 Me(t.outlineColor??16777215),a=new Me(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 St(t.contourDirection??new zr(0,1,0)),m=new $e(t.positionalLines??!1),h=new $e(t.compensation??!0),y=ve.normalRenderTarget,g=ve.normalRenderTargetDepth,x=ve.pixelRatioNode,S=ve.resolution,w=er(t),b=new Xi(i,a,s,c,u,l,d,p,f,m,h,S,y,g,x,w.alpha),T=new Ne(b.calpha,"f");return new je(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 we(t.gradientType??0),a=new $e(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 St(t.origin??new zr),p=new St(t.direction??new zr),f;t.colors?f=new hr(t.colors.length,t.colors):(f=new hr(2,new ra(0,0,0,1)),f.value[1]=new ra(1,1,1,1));let m;t.steps?m=new mr(t.steps.length,t.steps):(m=new mr(2,1),m.value[0]=0);let h=er(t),y=new Wi(i,a,s,c,u,l,d,p,f,m,h.alpha,h.isMask),g=new Ne(y.calpha,"f");return new je(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 St(t.size??new zr(100,100,100)),s=new J(t.move??1),c=new He(t.fA??new gr(1.7,9.2)),u=new He(t.fB??new gr(8.3,2.8)),l=new He(t.distortion??new gr(1,1)),d=new Vt(t.colorA),p=new Vt(t.colorB),f=new Vt(t.colorC),m=new Vt(t.colorD),h=new we(t.noiseType??0),y=new we(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 we(t.quality??1),T=er(t),_=new Yi(i,a,s,c,u,l,d,p,f,m,T.alpha,h,T.isMask,y,g,x,S,w,b),v=new Ne(_.calpha,"f");return new je(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 St(t.cnormal??new zr(1,1,1)),a=er(t),s=new ki(i,a.alpha),c=new Ne(s.calpha,"f");return new je(r,e,n,{cnormal:i,...a},s,a.mode,c,a.isMask,o)}case"gradient":{let i=new we(t.gradientType??0),a=new $e(t.smooth??!1),s;t.colors?s=new hr(t.colors.length,t.colors):(s=new hr(10,new ra(0,0,0,1)),s.value[1]=new ra(1,1,1,1));let c;t.steps?c=new mr(t.steps.length,t.steps):(c=new mr(10,1),c.value[0]=0);let u=new He(t.offset??new gr(0,0)),l=new He(t.morph??new gr(0,0)),d=new J(t.angle??0),p=er(t),f=new qi(i,a,s,c,u,l,d,p.alpha,p.isMask),m=new Ne(f.calpha,"f");return new je(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 we(t.style??0),a=new we(t.projection??0),s=new we(["x","y","z"].indexOf(t.axis)??0),c=new J(t.blending??0),u=new He(t.offset??new gr(0,0)),l=new Vt(t.colorA),d=new Vt(t.colorB),p=new He(t.frequency??new gr(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 He(t.vertical??new gr(0,1)),S=new He(t.horizontal??new gr(0,1)),w=new we(t.sides??6),b=er(t),T=new Ki(i,a,s,c,u,l,d,p,f,m,h,y,g,x,S,w,b.alpha,b.isMask),_=new Ne(T.calpha,"f");return new je(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 Me(1,0,0,1),a=er(t),s=new un(i,a.alpha),c=new Ne(s.calpha,"f");return new je(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}}}function nC(n,r,e,t){let o=qg(e,t);return oC(e,n,r,o,t)}function Fu(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=ko(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 uc(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 jt=class extends iC{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}},pc=class extends jt{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()}},mn=class extends jt{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 pc(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??gt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>jr.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=uc(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=uc(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=uc(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 Yt),this.lightLayer===void 0&&(this.lightLayer=new Yt(0,"",{...Ct.defaultData("light","phong"),visible:!1},new fn,{},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 Yt);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 je&&s.color instanceof jo&&(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=uc(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=jr.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),u;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?u={...e.props,alpha:ko(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:u={...e.props,alphaOverride:ko(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...u?{props:u}:{},path:e.path.slice(2)},c,o)){let d=jr.create(this.layerIdGen++,a,c,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,d),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 je?t.color.mask=void 0:t instanceof Yt&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof je&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Yt?i.node.mask=new ft(t.color,t.alpha,ft.MUL):i instanceof je&&(i.isMask.value||(i.color.mask=new ft(t.color,t.alpha,ft.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof je),t=this.layers.findIndex(o=>o instanceof Yt);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 je){if(a.isMask.value)continue;o=new Fi(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Yt);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof je){if(i.isMask.value)continue;e=new Fi(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 is);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new ft(t,e[o].position,ft.ADD),t=new ft(t,new J(.5).setReadonly(!0),ft.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=(Vu[t.type]??[]).map(u=>t[u]),i=(zu[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 nc;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 je){let t=e.params.texture;if(t instanceof dn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(jt.prototype,{properties:{get:function(){return this.fragment.properties}}});var hn=class extends mn{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var Zg=xa(Yg());var Xg=new Map;function Kg(n){if(typeof n=="string")return n;let r=Xg.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Xg.set(n,r)),r.url}var yn=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:Kg(r),format:"wav"},this.sound=new Zg.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()}};import{Box2 as aC,Vector2 as gn,Path as Qg,Shape as sC,ShapeUtils as lC,Color as cC}from"three";var mc=class{constructor(){this.type="ShapePath";this.color=new cC;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Qg,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,C=g.y,P=x.y,N=(T-b)*(_-C)-(P-C)*(S-b),O=(w-S)*(_-C)-(v-_)*(S-b),A=(P-C)*(w-S)-(T-b)*(v-_),M=N/A,L=O/A;if(A===0&&N!==0||M<=0||M>=1||L<0||L>1)return null;if(N===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],C=o(w,b,_,v);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),x.push(new gn(C.x,C.y)))}}return x}function s(h,y,g){let x=new gn;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 gn;h.boundingBox.getCenter(w);let b=[new gn(g,w.y),new gn(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 C=_[0].point.x,P=[],N=0;for(;N<v.length&&v[N].point.x<C;)P.length>0&&P[P.length-1]===v[N].identifier?P.pop():P.push(v[N].identifier),N++;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:lC.isClockWise(y),identifier:u++,boundingBox:new aC(new gn(w,x),new gn(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 sC;g.curves=h.curves,f.filter(S=>S?.isHole&&S.for===h.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new Qg;b.curves=w.curves,g.holes.push(b)}}),m.push(g)}}),m}};var e0,ku=new Promise(n=>{e0=n}),Jg=!1;var hc;function t0(){if(Jg)return;if(hc)return hc;async function n(){let e=await import("./opentype.js");e0(e),Jg=!0}return hc=n(),hc}var as=class{async load(r,e,t=()=>{}){let{load:o}=await ku;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await ku;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 dC(n){return await(await fetch(n)).arrayBuffer()}var uC=new as;async function Uu(n){let r,e,t=!1;if(n.url?(r=await dC(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 uC.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as pC,LineCurve as fC,QuadraticBezierCurve as mC}from"three";function hC(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var yc=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Uu(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=Uu(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(hC(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
- `,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[_],C=v.index===0?`
2217
- `:v.unicode?String.fromCharCode(v.unicode):void 0,P=T[_],N=0,O=0;_===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(O=-v.leftSideBearing*o),y&&(N=t.getKerningValue(v,y)*o),d+=O+N;let A=0;if(C===`
2218
- `)A=u;else if(C===" ")A=l;else{let M=this.createPath(v,o,d,p,e);M&&(A=M.offsetX-(N+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 mc,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=yC(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 yC(n){if(n.length){let r=n[0];if(r instanceof fC)return r.v1;if(r instanceof pC||r instanceof mC)return r.v0}}var Hu=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()}},ss=class extends Hu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=sn(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var r0={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as o0}from"three";var Wu=class extends cc{constructor(e){super();this.shared=e}create(e){return new ta(e,this.shared)}},xn=class{constructor(r,e={}){this.data=r;this.geometryCache=new ss(!0);this.geometryCache2=new ss(!1);this.imageHolderCache=new Wu(this);this.thisContext={scene:r0,shared:this};this.deletedMaterial=new hn(gt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Jt(ui.emptyImage,this);this.deletedVideo=new Jt(ri.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 hn(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 mn(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 Jt(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 Jt(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 Fo(e.r,e.g,e.b,e.a):this.colors[r]=new Fo(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 it(0,0,0,0))}else return"a"in r?new it(r.r,r.g,r.b,r.a):new it(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 yn)return e;{let t=new yn({src:e.data});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof yn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new yc(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 yn&&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=o0.DEG2RAD*t),s[a[a.length-1]]=t}if(s=o.find(a[0]),Te.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 r[1]==="rotation"&&(t*=o0.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>Xe.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(Ke.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(Ke.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)}}},n0=new xn(ar.emptyData());var Ft=class extends bt{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(_t(e.path,["material"])&&this.material instanceof jt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(Ke.drop(e,1),t.material,o);else if(_t(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(Ke.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&&xs(this.material).forEach(e=>{e instanceof jt&&(e instanceof hn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as xC,Matrix4 as qu,Vector3 as c0,Vector4 as $u}from"three";var i0=new c0,a0=new $u,s0=new $u,vC=new c0,l0=new qu,Je=class extends Ft{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 qu().fromArray(t.bindMatrix),this.bindMatrixInverse=new qu)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof xC&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof xn){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 Ia.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ia.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),_t(e.path,["geometry"])&&this.updateByPatchedOpGeometry(Ke.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=sn(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&&Ya(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=sn(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 Qe&&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 $u,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;a0.fromBufferAttribute(i.attributes.skinIndex,e),s0.fromBufferAttribute(i.attributes.skinWeight,e),i0.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=s0.getComponent(a);if(s!==0){let c=a0.getComponent(a);l0.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(vC.copy(i0).applyMatrix4(l0),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function SC(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 Xu(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(c):r.set(s,{normals:[c],result:new Xu})}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 d0(i,3))}function wC(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 Xu;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 d0(t,3))}function oa(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof jt)||n.material.getLayersOfType("outline").length===0)return;n instanceof Je&&n.is2DAndNoDepth?wC(n):SC(n)}function na(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=[Yu.seededRandom(o),Yu.seededRandom(o+1e4),Yu.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new bC(t,3))}var OC;Mi.then(n=>{OC=n});var Fr=new TC,ls=new PC;function p0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var vn=class extends Je{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new _C;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}=Qe.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,oa(this),na(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){Qe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Qe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Qe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Qe.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,bt.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 u0,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Fr.setFromBufferAttribute(t),Fr.getCenter(o),e.boundingSphere.radius=o.distanceTo(Fr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Fr.getSize(ls),this.hasNonUniformScale&&ls.divide(this.scale);let i={width:ls.x,height:ls.y,depth:ls.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Fr.min.set(e[0],e[2],e[4]),Fr.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Fr.min.applyMatrix4(this.shearScaleInv),Fr.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new u0);let o=t.boundingSphere.center;Fr.getCenter(o),t.boundingSphere.radius=o.distanceTo(Fr.max)}freeSubdivPointer(){this.subdivPointer&&(Qe.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)}};import{Triangle as AC,Vector3 as Sn}from"three";var f0=-1,CC=1,m0={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},h0={polygon_center:0,edge:1,vertex:2},cs=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,xe=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-f0)*(e-t)/(CC-f0)+t};function y0(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 NC=new Sn,gc=new Sn,IC=new Sn,MC=new Sn;function ia(n,r){let e=IC.fromArray(n),t=MC.fromArray(r);gc.copy(t).sub(e);let o=gc.length();return gc.normalize().multiplyScalar(o*.5),NC.copy(e).add(gc).toArray()}var tr=new AC,xc=new Sn,vc=new Sn,bn=new Sn;function g0(n){let r=[];for(let e=0;e<=n.index.count;e++)if(xc.fromArray(n.index.array,e*3),tr.setFromAttributeAndIndices(n.attributes.position,xc.x,xc.y,xc.z),tr.getNormal(vc),tr.getMidpoint(bn),!(isNaN(bn.x)||isNaN(bn.y)||isNaN(bn.z))){let{a:t,b:o,c:i}=tr,a=t.toArray(),s=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=ia(a,s),f=ia(s,c),m=ia(c,a),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=tr.getMidpoint(bn).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:tr.getNormal(vc).toArray()})}return r}function x0(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){tr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),tr.getNormal(vc),tr.getMidpoint(bn);let o=tr.a.toArray(),i=tr.b.toArray(),a=tr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[ia(o,i),ia(i,a),ia(a,o)],midpoint:bn.toArray(),norm:vc.toArray()})}return r}var EC=4,LC=.5,Ku=n=>.5*(1-Math.cos(n*Math.PI)),Zu=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<EC;g++){let x=o+(i<<4)+(a<<8);l=Ku(s),d=Ku(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+=Ku(u)*(h-m),p+=m*f,f*=LC,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()}},v0=Zu;import{Vector3 as DC,Matrix4 as BC,Ray as RC}from"three";var b0=new DC,S0=new BC,w0=new RC;function T0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var aa=class extends Je{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)&&(S0.copy(o).invert(),w0.copy(e.ray).applyMatrix4(S0),w0.intersectBox(this.singleBBox,b0))){let i=b0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var Mt=1e-4,kr,A0,C0,N0,P0=new Xt,O0=new Xt;Mi.then(n=>{kr=n,A0=[kr.get_face_center,kr.get_edge_midpoint,kr.get_vertex_position],C0=[kr.get_face_normal,kr.get_edge_normal,kr.get_vertex_normal],N0=[kr.face_count,kr.edge_count,kr.vertex_count]});var VC=new Tn,zC=new Tn,Uo=new Xt,wn=new Xt,ds=new Xt,Ju=new Xt,jC=new Xt,FC=new Xt;var co=new v0,la=class extends mi(GC){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 no&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof no&&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 no(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 no(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*_0.DEG2RAD,i=t.end*_0.DEG2RAD,a=o-i,s=new Qu(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Xt(0,0,1);break;case"y":c=new Xt(0,1,0);break;default:case"x":c=new Xt(1,0,0);break}let u=e.randomnessObject??Cr.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";co.noiseSeed(u.seed);let d=Ol((0,sa.default)(u.seed)),p=cs(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?co.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,xe(y,u.scale[0]))||Mt,m.scale.y=t.scale[1]+p(g,xe(y,u.scale[1]))||Mt,m.scale.z=t.scale[2]+p(g,xe(y,u.scale[2]))||Mt,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,xe(y,u.position[0])),m.position.y+=t.position[1]+p(g,xe(y,u.position[1])),m.position.z+=t.position[2]+p(g,xe(y,u.position[2]));let S=p(g,xe(y,u.rotation[0])),w=p(g,xe(y,u.rotation[1])),b=p(g,xe(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 Qu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Cr.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";co.noiseSeed(i.seed);let s=Ol((0,sa.default)(i.seed)),c=cs(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?co.noise(d):s(d,d),f=u+1,m=c(f,xe(p,i.rotation[0])),h=c(f,xe(p,i.rotation[1])),y=c(f,xe(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,xe(p,i.scale[0]))||Mt,l.scale.y=1+(t.scale[1]-1)*u+c(f,xe(p,i.scale[1]))||Mt,l.scale.z=1+(t.scale[2]-1)*u+c(f,xe(p,i.scale[2]))||Mt,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,xe(p,i.position[0])),l.position.y=t.position[1]*u+c(f,xe(p,i.position[1])),l.position.z=t.position[2]*u+c(f,xe(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Cr.defaultData([1,1,1]).randomnessObject,a=cs(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";co.noiseSeed(i.seed);let c=Xh((0,sa.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 Xt(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?co.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+a(t,xe(h,i.scale[0]))||Mt,y.scale.y=1+a(t,xe(h,i.scale[1]))||Mt,y.scale.z=1+a(t,xe(h,i.scale[2]))||Mt;let g=a(t,xe(h,i.rotation[0])),x=a(t,xe(h,i.rotation[1])),S=a(t,xe(h,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*d-l.x+a(t,xe(h,i.position[0])),y.position.y=o.size[1]*p-l.y+a(t,xe(h,i.position[1])),y.position.z=o.size[2]*f-l.z+a(t,xe(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?co.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+a(t,xe(f,i.scale[0]))||Mt,m.scale.y=1+a(t,xe(f,i.scale[1]))||Mt,m.scale.z=1+a(t,xe(f,i.scale[2]))||Mt;let h=a(t,xe(f,i.rotation[0])),y=a(t,xe(f,i.rotation[1])),g=a(t,xe(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+a(t,xe(f,i.position[0])),m.position.y=-o.size[1]*l+a(t,xe(f,i.position[1])),m.position.z=-o.size[2]*d+a(t,xe(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Qu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Cr.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";co.noiseSeed(i.seed);let s=Ol((0,sa.default)(i.seed)),c=cs(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 aa)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=y0(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 Al(this.objectForSample).build(),h=m0[t.axis],y=this.children;m.setRandomGenerator((0,sa.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?co.noise(S):s(S,S),b=g+1,T=c(b,xe(w,i.rotation[0])),_=c(b,xe(w,i.rotation[1])),v=c(b,xe(w,i.rotation[2]));t.spreadType==="random"?m.sample(ds,Ju):(f.length&&(ds.fromArray(f[g].pos),Ju.fromArray(f[g].norm)),this.objectForSample instanceof vn&&ds.applyMatrix4(VC.copy(this.objectForSample.matrixWorld).invert())),ds.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(ds),Uo.fromArray(h);let C=t.align==="normal"?Ju:this.object.getWorldDirection(FC),P=wn.fromArray(t.position);wn.x+=wn.x+c(b,xe(w,i.position[0])),wn.y+=wn.y+c(b,xe(w,i.position[1])),wn.z+=wn.z+c(b,xe(w,i.position[2]));let N=Math.acos(C.dot(Uo)),O=jC.crossVectors(Uo,C).normalize(),A=zC.makeRotationAxis(O,N),M=C.clone().cross(this.object.up).normalize(),L=M.clone().cross(C).normalize(),X=new Tn().makeBasis(M,C,L),R=new Xt(Uo.y,Uo.z,Uo.x).normalize(),Z=R.clone().cross(Uo).normalize(),z=new Tn().makeBasis(R,Uo,Z).invert(),V=new Tn().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,xe(w,i.scale[0]))||Mt,x.scale.y=x.scale.y+t.scale[1]+c(b,xe(w,i.scale[1]))||Mt,x.scale.z=x.scale.z+t.scale[2]+c(b,xe(w,i.scale[2]))||Mt,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 vn){let t=this.objectForSample,o=h0[e],i=N0[o],a=A0[o],s=C0[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);P0.fromArray(d).applyMatrix4(t.matrixWorld),O0.fromArray(p),c.push({pos:P0.toArray(),norm:O0.toArray()})}return c}else return(this.objectForSample.geometry.index?g0(this.objectForSample.geometry):x0(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=Qr(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 bt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Tn,this.hiddenMatrix=new Tn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as U2,Vector3 as H2,Matrix4 as W2,Box3 as q2,MeshBasicMaterial as $2,Skeleton as Y2}from"three";import{Camera as JC,OrthographicCamera as e2,PerspectiveCamera as t2,Vector3 as vr,Object3D as L0,Quaternion as r2,Matrix4 as o2}from"three";import{Camera as $C,LineSegments as YC,BufferGeometry as XC,LineBasicMaterial as KC,Color as tp,Vector3 as ZC,Float32BufferAttribute as M0}from"three";import{BoxGeometry as kC}from"three";var Ur=n=>{var r;return r=class extends n{},r.geometryHelper=new kC(30,30,30),r};import{Ray as UC,Sphere as HC,Matrix4 as WC,Vector3 as uo}from"three";var bc=new UC,ep=new HC,I0=new WC,Hr=(n,r,e,t,o=!1)=>{let i=r,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ep.copy(i.boundingSphere),ep.applyMatrix4(a),e.ray.intersectsSphere(ep)===!1||(I0.copy(a).invert(),bc.copy(e.ray).applyMatrix4(I0),i.boundingBox!==null&&bc.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,bc,p,c,u,l),s){s.faceIndex=Math.floor(m/3),t.push(s);return}}else{let x=i.attributes.position,S=new uo,w=new uo,b=new uo,T=new uo,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,N=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=N,M=O-1;A<M;A+=_){if(S.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),bc.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 uo,C=new uo,P=new uo,N=new uo,O=new uo;if(v.fromBufferAttribute(w,b),C.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),S.intersectTriangle(v,C,P,!1,N)===null)return null;O.copy(N),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 Sc=new ZC,rr=new $C,rp=class extends YC{constructor(e){let t=new XC,o=new KC({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},c=new tp(15711266),u=new tp(15711266),l=new tp(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 M0(i,3)),t.setAttribute("color",new M0(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;rr.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;xr("n1",t,e,rr,-i,-a,s),xr("n2",t,e,rr,i,-a,s),xr("n3",t,e,rr,-i,a,s),xr("n4",t,e,rr,i,a,s);let c=s;xr("f1",t,e,rr,-i,-a,c),xr("f2",t,e,rr,i,-a,c),xr("f3",t,e,rr,-i,a,c),xr("f4",t,e,rr,i,a,c);let u=c,l=.5;xr("u1",t,e,rr,i*.7*l,a*1.1,u),xr("u2",t,e,rr,-i*.7*l,a*1.1,u),xr("u3",t,e,rr,0,a*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function xr(n,r,e,t,o,i,a){Sc.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],Sc.x,Sc.y,Sc.z)}}var wc=class extends Ur(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){Hr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as E0,BoxGeometry as QC}from"three";var Tc;(r=>r.is=e=>"objectHelper"in e)(Tc||(Tc={}));var Wr=(n,r)=>class extends gi(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 E0&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof QC?(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 E0&&(i.visible=!1)}}};var _c=790,ca=new vr,op=new vr,np=new r2,ip=new vr,us=new vr,ap=new vr,po=class extends Wr(JC,wc){constructor(e="",t={...en.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Ao.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new o2,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new e2(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new t2(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 vr(e,t,o)),super.lookAt(e),this.getWorldPosition(ca),this.targetOffset=ca.distanceTo(e)}getTarget(e=new vr){return this.getWorldDirection(op),this.getWorldPosition(ca),op.multiplyScalar(this.targetOffset),e.copy(ca).add(op),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ca),ca.distanceTo(e)}updateUp(){this.getWorldQuaternion(np),ip.set(0,0,1).applyQuaternion(np),us.copy(L0.DEFAULT_UP),this.isUpVectorFlipped&&us.negate(),us.applyQuaternion(np),ap.copy(L0.DEFAULT_UP).projectOnPlane(ip),this.angleOffsetFromUp=ap.angleTo(us),this.angleOffsetFromUp*=ap.cross(us).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 vr),i=e.getWorldDirection(new vr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new vr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new vr,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=-_c*.5*i,this.right=_c*.5*i,this.top=_c*.5*(1/a),this.bottom=-_c*.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 Yn(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}}};import{MathUtils as RZ}from"three";import{BufferGeometry as D0,Matrix4 as sp,Float32BufferAttribute as n2,Vector3 as G0}from"three";var da=new sp,i2=new sp,Pc=new sp,B0=new G0,R0=new G0;var or=class extends Ft{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new D0;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 or&&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 bt&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(da.multiplyMatrices(a.hiddenMatrix,a.matrix),a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Qt.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;Qt.transformMeshSet(a.booleanMeshSetAddress,da),a.booleanMatrixInvOld.copy(da).invert(),a.booleanWasTransformed=!1}else a instanceof or&&a.needsTransformForDownstream===!0?(Qt.transformMeshSet(a.booleanMeshSetAddress,da),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Qt.transformMeshSet(a.booleanMeshSetAddress,i2.multiplyMatrices(da,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(da).invert(),a.booleanWasTransformed=!1);Qt.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 n2([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Qt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new D0,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Qt.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,oa(this),na(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),Pc.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Pc),B0.copy(e.max).applyMatrix4(Pc),R0.copy(e.min).applyMatrix4(Pc),this.geometry.boundingSphere.radius=B0.distanceTo(R0)/2),e}};import{Light as a2}from"three";var V0;(r=>{function n(e){return Te.is(e)&&e instanceof a2}r.is=n})(V0||(V0={}));var ua=(n,r)=>class extends Wr(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 Ho=n=>n instanceof bt,pa=n=>n!==null&&n instanceof or;var ps=n=>Tc.is(n);import{Group as l2}from"three";import{AxesHelper as s2}from"three";var qr=class extends Ur(s2){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){Hr(this.object,qr.geometryHelper,e,t)}update(){}};var _n=class extends Wr(l2,qr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{Color as w2,Fog as T2,HemisphereLight as _2}from"three";import{ShaderChunk as fs}from"three";var c2=n=>`
2228
+ `),d&&p.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u&&p.push(`gl_FragColor.a *= ${u.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
2229
+ `)}return r}};import{VideoTexture as cO,Texture as uO}from"three";var Rc=class{constructor(t=1e3*10){this.timeout=t;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(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),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 t=Date.now(),e=this.head.next;for(;e.time<t-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(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var yp=class extends Rc{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},mp;function E0(n){return typeof n=="string"?n:(mp||(mp=new yp),mp.load(n))}var Vc=class{constructor(t,e){this.data=t;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")}},Gc=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var Ca=class extends Vc{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;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 r=()=>{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=()=>{r()}}else this.img=new Image,this.img.src=E0(e),this.img.onload=r}getTexture(e){let r=this[e];if(r)return r;{let o;return this.isVideo?o=new cO(this.img,void 0,e,e):o=new uO(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 pr=class extends Ca{};import{Vector2 as Co,Vector3 as Jr,Vector4 as zc}from"three";function Dt(n,t){return t.color(n)}function D0(n,t){switch(n.type){case"fresnel":return fO(n,t);case"gradient":return hO(n,t);case"depth":return mO(n,t);case"normal":return yO(n,t);case"noise":return gO(n,t);case"rainbow":return xO(n,t);case"toon":return vO(n,t);case"outline":return bO(n,t);case"transmission":return SO(n,t);case"color":return pO(n,t);case"pattern":return wO(n,t)}}function dO(n){return{type:n.type}}function Ir(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...dO(n),alpha:i,mode:r,isMask:o}}function pO(n,t){return{...Ir(n,t),color:Dt(n.color,t)}}function fO(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Ir(n,t),color:Dt(a,t),bias:e,scale:r,intensity:o,factor:i}}function hO(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Ir(n,t),gradientType:e,smooth:r,colors:o.map(d=>new zc(d[0],d[1],d[2],d[3])),num:o.length,steps:i,offset:new Co(...s),morph:new Co(...l),angle:a}}function mO(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:d,steps:c,smooth:u}=n;return{...Ir(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new Jr(...s),direction:l?new Jr(...l):new Jr(1,0,0),colors:d.map(p=>p!==void 0?new zc(p[0],p[1],p[2],p[3]):new zc(0,0,0,0)),steps:c.slice(0,d.length),smooth:u}}function yO(n,t){let{cnormal:e}=n;return{...Ir(n,t),cnormal:new Jr(e[0],e[1],e[2])}}function gO(n,t){return{...Ir(n,t),scale:n.scale,move:n.move,fA:new Co(...n.fA),fB:new Co(...n.fB),size:new Jr(...n.size),distortion:new Co(...n.distortion),colorA:Dt(n.colorA,t),colorB:Dt(n.colorB,t),colorC:Dt(n.colorC,t),colorD:Dt(n.colorD,t),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function xO(n,t){return{...Ir(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Jr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Jr(...n.offset)}}function vO(n,t){return{...Ir(n,t),positioning:n.positioning,colors:n.colors.map(e=>new zc(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Jr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Dt(n.shadowColor,t),offset:new Jr(...n.offset)}}function bO(n,t){return{...Ir(n,t),outlineColor:Dt(n.outlineColor,t),contourColor:Dt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Jr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function SO(n,t){return{...Ir(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function wO(n,t){return{...Ir(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Co(...n.offset),colorA:Dt(n.colorA,t),colorB:Dt(n.colorB,t),frequency:new Co(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Co(...n.vertical),horizontal:new Co(...n.horizontal),sides:n.sides}}var an=class extends ht{};import{Vector4 as _O}from"three";var gp={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},xp={depth:["colors"]};function AO(n,t,e){if(t==="isMask")return!0;let r=gp[n.type],o=xp[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function vp(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=t.image(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof pr||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;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 L0(n,t,e,r){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(bp(i,e,r,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof on))switch(o=o||AO(e,i,a),s.constructor){case Le:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof an?s.value=new ht(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case Kt:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof an?s.value=new ht(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case Ke:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Nt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Ft:{vp(a,t,e);break}case Mr:{s.value=a.map(l=>new _O(...l));break}default:{s.value=a;break}}}return o}var sn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,to=class{constructor(t,e,r,o,i){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)bp(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return sr.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.image(r.texture.image):o.video(r.texture.video),a=new Ln(i,r.texture.wrapping),s=new Lc(i),l=new Bc(r.texture.repeat,r.texture.offset),d=new J(r.crop?1:0),c=new _e(r.projection??0),u=new _e(["x","y","z"].indexOf(r.axis)??0),p=new _e(r.side??0),f=new Ke(r.size?new Nr(r.size[0],r.size[1]):new Nr(100,100)),h=new J(r.blending??0),m=new J(sn(r.alpha,o)),y=new _e(r.mode??0),g=new et(r.isMask??!1),x=new nn(a,s,d,c,u,p,f,h,l,m,y,g),S=new Ee(x.calpha,"f");return new We(t,e,r,{texture:a,textureSize:s,crop:d,projection:c,axis:u,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},x,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new Ln(i,r.texture.wrapping),s=new J(sn(r.alpha,o)),l=new _e(r.mode??0),d=new et(r.isMask??!1),c=new xa(a,s,l,d),u=new Ee(c.calpha,"f");return new We(t,e,r,{texture:a,alpha:s,mode:l,isMask:d},c,l,u,d,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Nt(new eo(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),d=new _e(r.noiseType??0),c=new _e(r.voronoiStyle??0),u=new J(r.smoothness??.5),p=new J(r.seed??0),f=new J(r.highCut??1),h=new J(r.lowCut??0),m=new _e(r.quality??1),y=new Ta(s,l,i,c,u,p,f,h,m,a,d);return new Es(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:d,voronoiStyle:c,smoothness:u,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return PO(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):L0(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?vp(o.props,r.shared,this):!0;return!1}dispose(){if(TO(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof pr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},We=class extends to{constructor(e,r,o,i,a,s,l,d,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=d}},Es=class extends to{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},sr=class extends to{constructor(e,r,o,i,a,s){super(e,r,o,a,s);this.node=i}static createLigherLayer(e,r,o,i){let a,s=new J(sn(o.alpha,i)),l=new _e(o.mode),d=new J(o.bumpMapIntensity),c=new J(sn(o.alphaOverride,i)),u;if(!o.visible)a=new Vn,u={};else if(o.category==="lambert"){a=new Os;let p=new Le(i.color(o.emissive)??0),f=new et(o.occlusion??!0);u={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new Ns;let p=new J(o.shininess??30),f=new Le(i.color(o.specular)??1118481);u={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Is;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new et(o.occlusion??!0);u={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Ms;let p=new J(o.shininess??30),f=new Le(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new et(o.occlusion??!0);u={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=d,a.alphaOverride=c,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,u.bumpMapIntensity=a.bumpMapIntensity,u.alphaOverride=a.alphaOverride,new sr(e,r,o,a,u,i)}get category(){return this.node.category}};function TO(n){let t=n instanceof to?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function fr(n){return{alpha:new J(n.alpha??1),mode:new _e(n.mode??0),isMask:new et(n.isMask??!1)}}function CO(n,t,e,r,o){switch(n.type){case"color":{let i=new Le(r.color??dt),a=fr(r),s=new Bn(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new Le(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),d=new J(r.factor??1),c=fr(r),u=new Cs(i,a,s,l,d,c.alpha,c.mode,c.isMask),p=new Ee(u.calpha,"f");return new We(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:d,...c},u,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Nt(r.wavelengths??new eo(0,0,0)),l=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),c=new Nt(r.offset??new eo(0,0,0)),u=fr(r),p=new wa(i,a,s,l,d,c,u.alpha,u.isMask),f=new Ee(p.calpha,"f");return new We(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:d,offset:c,...u},p,u.mode,f,u.isMask,o)}case"transmission":{let i=new J(r.thickness??10),a=new J(r.ior??1.5),s=new J(r.roughness??.5),l=be.transmissionSize,d=be.transmissionRenderTarget,c=be.transmissionRenderTargetDepth,u=window.innerWidth,p=window.innerHeight,f=u>=p?new Ke(p/u,1):new Ke(1,u/p),h=fr(r),m=new Aa(i,a,s,l,d,c,f,h.alpha),y=new Ee(m.calpha,"f");return new We(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new _e(r.positioning??0),a;r.colors?a=new Mr(r.colors.length,r.colors):(a=new Mr(10,new Pa(0,0,0,1)),a.value[1]=new Pa(1,1,1,1));let s;r.steps?s=new Or(r.steps.length,r.steps):(s=new Or(10,1),s.value[0]=0);let l=new Nt(r.source??new eo(0,0,0)),d=new et(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),p=new Kt(r.shadowColor),f=new Nt(r.offset??new eo(0,0,0)),h=fr(r),m=new _a(i,a,s,l,d,c,u,p,f,h.alpha),y=new Ee(m.calpha,"f");return new We(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:d,noiseStrength:c,noiseScale:u,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new Le(r.outlineColor??16777215),a=new Le(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),d=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),u=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Nt(r.contourDirection??new eo(0,1,0)),h=new et(r.positionalLines??!1),m=new et(r.compensation??!0),y=be.normalRenderTarget,g=be.normalRenderTargetDepth,x=be.pixelRatioNode,S=be.resolution,w=fr(r),b=new ba(i,a,s,l,d,c,u,p,f,h,m,S,y,g,x,w.alpha),_=new Ee(b.calpha,"f");return new We(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:d,contourThreshold:c,outlineSmoothing:u,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},b,w.mode,_,w.isMask,o)}case"depth":{let i=new _e(r.gradientType??0),a=new et(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),d=new J(r.isVector??1),c=new J(r.isWorldSpace??0),u=new Nt(r.origin??new eo),p=new Nt(r.direction??new eo),f;r.colors?f=new Mr(r.colors.length,r.colors):(f=new Mr(2,new Pa(0,0,0,1)),f.value[1]=new Pa(1,1,1,1));let h;r.steps?h=new Or(r.steps.length,r.steps):(h=new Or(2,1),h.value[0]=0);let m=fr(r),y=new ya(i,a,s,l,d,c,u,p,f,h,m.alpha,m.isMask),g=new Ee(y.calpha,"f");return new We(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:d,isWorldSpace:c,origin:u,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new J(r.scale??1),a=new Nt(r.size??new eo(100,100,100)),s=new J(r.move??1),l=new Ke(r.fA??new Nr(1.7,9.2)),d=new Ke(r.fB??new Nr(8.3,2.8)),c=new Ke(r.distortion??new Nr(1,1)),u=new Kt(r.colorA),p=new Kt(r.colorB),f=new Kt(r.colorC),h=new Kt(r.colorD),m=new _e(r.noiseType??0),y=new _e(r.voronoiStyle??0),g=new J(r.highCut??1),x=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),b=new _e(r.quality??1),_=fr(r),A=new va(i,a,s,l,d,c,u,p,f,h,_.alpha,m,_.isMask,y,g,x,S,w,b),v=new Ee(A.calpha,"f");return new We(t,e,n,{scale:i,size:a,move:s,fA:l,fB:d,distortion:c,colorA:u,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},A,_.mode,v,_.isMask,o)}case"normal":{let i=new Nt(r.cnormal??new eo(1,1,1)),a=fr(r),s=new fa(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new _e(r.gradientType??0),a=new et(r.smooth??!1),s;r.colors?s=new Mr(r.colors.length,r.colors):(s=new Mr(10,new Pa(0,0,0,1)),s.value[1]=new Pa(1,1,1,1));let l;r.steps?l=new Or(r.steps.length,r.steps):(l=new Or(10,1),l.value[0]=0);let d=new Ke(r.offset??new Nr(0,0)),c=new Ke(r.morph??new Nr(0,0)),u=new J(r.angle??0),p=fr(r),f=new ga(i,a,s,l,d,c,u,p.alpha,p.isMask),h=new Ee(f.calpha,"f");return new We(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:d,morph:c,angle:u,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new _e(r.style??0),a=new _e(r.projection??0),s=new _e(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),d=new Ke(r.offset??new Nr(0,0)),c=new Kt(r.colorA),u=new Kt(r.colorB),p=new Ke(r.frequency??new Nr(10,10)),f=new J(r.size??.5),h=new J(r.variation??0),m=new J(r.smoothness??.5),y=new J(r.zigzag??0),g=new J(r.rotation??0),x=new Ke(r.vertical??new Nr(0,1)),S=new Ke(r.horizontal??new Nr(0,1)),w=new _e(r.sides??6),b=fr(r),_=new Sa(i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,w,b.alpha,b.isMask),A=new Ee(_.calpha,"f");return new We(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:d,colorA:c,colorB:u,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},_,b.mode,A,b.isMask,o)}default:{let i=new Le(1,0,0,1),a=fr(r),s=new Bn(i,a.alpha),l=new Ee(s.calpha,"f");return new We(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function PO(n,t,e,r){let o=D0(e,r);return CO(e,n,t,o,r)}function bp(n,t,e,r){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=t.uniforms[`f${t.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=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=sn(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=t.uniforms[`f${t.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function kc(n,t){let e=0,r=n.layers.find(o=>o.data.type==="light");if(r){let o=r.data,i=Number(t.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(t.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=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,d=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,d)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var Zt=class extends OO{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}},Fc=class extends Zt{constructor(e,r,o,i){super();this.flatShading=e;this.side=r;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,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o){return this.root.getFlavor(e,r,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,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Gn=class extends Zt{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,r)}get nodeMaterial(){return this}getFlavor(e,r,o){let i=o?6:(e?3:0)+r;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Fc(e,r,o,this),this.flavors[i]=a,a.flatShading=e,a.side=r,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,r){this.data!==e&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Pt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>to.create(this.layerIdGen++,i.id,i.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=kc(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=kc(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=kc(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.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(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(r=>r instanceof sr),this.lightLayer===void 0&&(this.lightLayer=new sr(0,"",{...zt.defaultData("light","phong"),visible:!1},new Vn,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof sr);if(!e)return;let r=e.data,o=r.bumpMap,i=r.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 We&&s.color instanceof nn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(r!==void 0?this.data=r:r=this.data,this.transparent=kc(r,o.shared),e.path[0]==="layers"){this.data=r;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=to.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(d=>d.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l),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(l=>l.uuid===a);if(s){let l=r.layers.data(a),d;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?d={...e.props,alpha:sn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:d={...e.props,alphaOverride:sn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...d?{props:d}:{},path:e.path.slice(2)},l,o)){let u=to.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,u),this.onUpdate(o.shared)}}}}else this.reset(r,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof We?r.color.mask=void 0:r instanceof sr&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof We&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof sr?i.node.mask=new _t(r.color,r.alpha,_t.MUL):i instanceof We&&(i.isMask.value||(i.color.mask=new _t(r.color,r.alpha,_t.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof sr);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let a=this.layers[i];if(a instanceof We){if(a.isMask.value)continue;o=new pa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ee("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof sr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof We){if(i.isMask.value)continue;e=new pa(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Es);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new _t(r,e[o].position,_t.ADD),r=new _t(r,new J(.5).setReadonly(!0),_t.MUL));this.fragment.position=r}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,r){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,r);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(gp[r.type]??[]).map(d=>r[d]),i=(xp[r.type]??[]).map(d=>r[d]?.length??0),a=[...o,...i],s="isMask"in r&&r.isMask,l=`"${r.type}-${r.visible}-${s}"`;a.length?e+=`[${l}, "${a.join('","')}"],`:e+=l}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Dc;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 r of this.flavors)r&&r.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 We){let r=e.params.texture;if(r instanceof Ln&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}}});var zn=class extends Gn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var G0=Rt(B0());var R0=new Map;function V0(n){if(typeof n=="string")return n;let t=R0.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},R0.set(n,t)),t.url}var kn=class{constructor({src:t,volume:e,delay:r,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 t=="string"?i={src:t}:i={src:V0(t),format:"wav"},this.sound=new G0.Howl(i),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}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(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as MO,Vector2 as Fn,Path as z0,Shape as IO,ShapeUtils as NO,Color as EO}from"three";var Uc=class{constructor(){this.type="ShapePath";this.color=new EO;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new z0,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,a){return this.currentPath?.bezierCurveTo(t,e,r,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,x){let S=m.x,w=y.x,b=g.x,_=x.x,A=m.y,v=y.y,M=g.y,O=x.y,T=(_-b)*(A-M)-(O-M)*(S-b),C=(w-S)*(A-M)-(v-A)*(S-b),P=(O-M)*(w-S)-(_-b)*(v-A),I=T/P,E=C/P;if(P===0&&T!==0||I<=0||I>=1||E<0||E>1)return null;if(T===0&&P===0){for(let R=0;R<2;R++)if(i(R===0?g:x,m,y),r.loc===e.ORIGIN){let D=R===0?g:x;return{x:D.x,y:D.y,t:r.t}}else if(r.loc===e.BETWEEN){let D=+(S+r.t*(w-S)).toPrecision(10),z=+(A+r.t*(v-A)).toPrecision(10);return{x:D,y:z,t:r.t}}return null}else{for(let z=0;z<2;z++)if(i(z===0?g:x,m,y),r.loc===e.ORIGIN){let B=z===0?g:x;return{x:B.x,y:B.y,t:r.t}}let R=+(S+I*(w-S)).toPrecision(10),D=+(A+I*(v-A)).toPrecision(10);return{x:R,y:D,t:I}}}function i(m,y,g){let x=g.x-y.x,S=g.y-y.y,w=m.x-y.x,b=m.y-y.y,_=x*b-w*S;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(_<-Number.EPSILON){r.loc=e.LEFT;return}if(_>Number.EPSILON){r.loc=e.RIGHT;return}if(x*w<0||S*b<0){r.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){r.loc=e.BEYOND;return}let A;x!==0?A=w/x:A=b/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],x=[];for(let S=1;S<m.length;S++){let w=m[S-1],b=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],v=y[_],M=o(w,b,A,v);M!==null&&g.find(O=>O.t<=M.t+Number.EPSILON&&O.t>=M.t-Number.EPSILON)===void 0&&(g.push(M),x.push(new Fn(M.x,M.y)))}}return x}function s(m,y,g){let x=new Fn;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function l(m,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new Fn;m.boundingBox.getCenter(w);let b=[new Fn(g,w.y),new Fn(x,w.y)],_=s(b,m.boundingBox,y);_.sort((C,P)=>C.point.x-P.point.x);let A=[],v=[];_.forEach(C=>{C.identifier===m.identifier?A.push(C):v.push(C)});let M=A[0].point.x,O=[],T=0;for(;T<v.length&&v[T].point.x<M;)O.length>0&&O[O.length-1]===v[T].identifier?O.pop():O.push(v[T].identifier),T++;if(O.push(m.identifier),S==="evenodd"){let C=O.length%2===0,P=O[O.length-2];return{identifier:m.identifier,isHole:C,for:P}}else if(S==="nonzero"){let C=!0,P=null,I=null;for(let E=0;E<O.length;E++){let R=O[E];y[R]&&(C?(I=y[R].isCW,C=!1,P=R):I!==y[R].isCW&&(I=y[R].isCW,C=!0))}return{identifier:m.identifier,isHole:C,for:P}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let d=0,c=999999999,u=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let _=y[b];_.y>g&&(g=_.y),_.y<x&&(x=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}u<=S&&(u=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:NO.isClockWise(y),identifier:d++,boundingBox:new MO(new Fn(w,x),new Fn(S,g))})});let f=p.map(m=>l(m,p,c,u,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new IO;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new z0;b.curves=w.curves,g.holes.push(b)}}),h.push(g)}}),h}};var F0,Sp=new Promise(n=>{F0=n}),k0=!1;var Hc;function j0(){if(k0)return;if(Hc)return Hc;async function n(){let e=await import("./opentype.js");F0(e),k0=!0}return Hc=n(),Hc}var Ds=class{async load(t,e,r=()=>{}){let{load:o}=await Sp;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await Sp;try{let o=e(t),i=new r,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 DO(n){return await(await fetch(n)).arrayBuffer()}var LO=new Ds;async function wp(n){let t,e,r=!1;if(n.url?(t=await DO(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),t){let o=await LO.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}}import{CubicBezierCurve as BO,LineCurve as RO,QuadraticBezierCurve as VO}from"three";function GO(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var qc=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=wp(t).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(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=wp(t).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(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=r.length===i.length;for(let d=0;d<r.length;d++){let c=r[d].index,u=String.fromCharCode(r[d].unicode),p=i[s];if(GO(c,p)||l)a.push({char:u,index:c,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===c&&(g=!0),s>e.length&&(g=!0);a.push({char:u,index:c,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e){if(!this._isLoaded)return;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(x=>this.getTextWidth(x,e)),s=e.width,l=this.getCharWidth(`
2230
+ `,e),d=e.horizontalAlign===1?l:0,c=this.computeSpaceWidthForLine(t,0,e),u=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,t[0],l),p=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),f=[],h=t.map(x=>[]),m=t.map(x=>[]),y;for(let x=0;x<t.length;x++){let S=t[x],w={features:{liga:!0}},b=[];try{b=r.stringToGlyphs(S,w)}catch(A){console.warn(A)}u=this.getLineInitialOffsetX(a[x],s,e.horizontalAlign,S,l);let _=[];try{_=this.reverseLigaturesTable(r,S,b)}catch(A){console.warn(A)}c=this.computeSpaceWidthForLine(t,x,e);for(let A=0;A<b.length;A++){let v=b[A],M=v.index===0?`
2231
+ `:v.unicode?String.fromCharCode(v.unicode):void 0,O=_[A],T=0,C=0;A===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(C=-v.leftSideBearing*o),y&&(T=r.getKerningValue(v,y)*o),u+=C+T;let P=0;if(M===`
2232
+ `)P=d;else if(M===" ")P=c;else{let I=this.createPath(v,o,u,p,e);I&&(P=I.offsetX-(T+C),f.push(I.path))}if(O.replacements.length===1)m[x].push([u,p]),h[x].push(P);else{let I=O.replacements.map(z=>(r.glyphs.get(z).advanceWidth??0)*o),E=I.reduce((z,B)=>z+=B,0),R=I.map(z=>z/E),D=u;for(let z=0;z<R.length;z++){let B=P*R[z];m[x].push([D,p]),h[x].push(B),D+=B}}u+=P,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:h,lineWidths:a,charCoords:m}}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(t,e,r,o,i){return(r===3||r===2)&&o.indexOf(`
2233
+ `)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,d=-this.ascender*o-l/2;return i===3?-(r-a-d):i===2?-(r*.5-a*.5-d):d}createPath(t,e,r,o,i){let a=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new Uc,l=(t.advanceWidth??1)*e;if(t)for(let d of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&d.type!=="Z"&&c.x===d.x&&-c.y===d.y))switch(d.type){case"M":s.moveTo(d.x,-d.y);break;case"L":s.lineTo(d.x,-d.y);break;case"Q":s.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":s.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return s.subPaths.forEach(d=>{let c=zO(d.curves);c!==void 0&&d.currentPoint.distanceTo(c)>0&&d.lineTo(c.x,c.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&a){let s=r.width,l=this.getTextWidth(i,r);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function zO(n){if(n.length){let t=n[0];if(t instanceof RO)return t.v1;if(t instanceof BO||t instanceof VO)return t.v0}}var _p=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},Ls=class extends _p{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Nn(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var U0={markNeedsUpdateRendererDirty:()=>{}};import{MathUtils as H0}from"three";var Ap=class extends Gc{constructor(e){super();this.shared=e}create(e){return new Ca(e,this.shared)}},jn=class{constructor(t,e={}){this.data=t;this.geometryCache=new Ls(!0);this.geometryCache2=new Ls(!1);this.imageHolderCache=new Ap(this);this.thisContext={scene:U0,shared:this};this.deletedMaterial=new zn(Pt.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new pr(Ri.emptyImage,this);this.deletedVideo=new pr(Pi.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[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.videos)for(let[r,o]of Object.entries(e.videos))this.addVideo(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o);this.reset(t)}setRequestRender(t){this._requestRender=t}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1){this.resetLib(t.lib);for(let{id:r,data:o}of t.variables)this.addVariableHolder(r,o),e&&this.updateVariableHolder(r,o);for(let[r,o]of Object.entries(t.images))this.addImage(r,o);for(let[r,o]of Object.entries(t.videos))this.addVideo(r,o);for(let[r,o]of Object.entries(t.colors))this.addColor(r,o);for(let[r,o]of Object.entries(t.materials))this.addMaterial(r,o);for(let[r,o]of Object.entries(t.audios))this.addAudio(r,o);for(let[r,o]of Object.entries(t.fonts))this.addFont(r,o)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new zn(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new Gn(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new pr(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new pr(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new an(e.r,e.g,e.b,e.a):this.colors[t]=new an(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ht(0,0,0,0))}else return"a"in t?new ht(t.r,t.g,t.b,t.a):new ht(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof kn)return e;{let r=new kn({src:e.data});return this.audios[t]=r,r}}deleteAudio(t){let e=this.audios[t];e&&(e instanceof kn&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new qc(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof kn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){return this.variables[t]===void 0?(this.variables[t]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0):(this.variables[t].value=e.value,!1)}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e;let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let i=this.variables[t].locations.length-1;i>=0;i--){let a=this.variables[t].locations[i];if(a[0]==="material"){let s=a[1],l=r,d={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,d)});let u=this.materials[s];u&&u.onVariableUpdate(c,l,d)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"&&(r=H0.DEG2RAD*r),s[a[a.length-1]]=r}if(s=o.find(a[0]),Ae.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0)})}}}}return!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=H0.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>ot.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;r=this.variables[r].value}while(typeof r=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r}else return t}getVariables(){return this.variables}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){this.data=e,t.path[0]==="images"?t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="colors"?t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(nt.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r}):t.path[0]==="fonts"?t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===2&&t.type===0&&"value"in t.props?this.updateVariable(t.path[1],t.props.value):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id):t.path[0]==="lib"&&this.updateLibByOp(nt.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),i={...this.data.fonts[t],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}},q0=new jn(br.emptyData());var Jt=class extends It{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Dm(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(Lt(e.path,["material"])&&this.material instanceof Zt)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(nt.drop(e,1),r.material,o);else if(Lt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in r&&i<this.material.length){let a=r.materials[i];typeof a!="string"&&this.material[i].updateByOp(nt.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,r){super.updateState(e,r),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=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),r.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>r.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.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&&$s(this.material).forEach(e=>{e instanceof Zt&&(e instanceof zn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as FO,Matrix4 as Tp,Vector3 as K0,Vector4 as Cp}from"three";var W0=new K0,$0=new Cp,Y0=new Cp,jO=new K0,X0=new Tp,st=class extends Jt{constructor(e,r,o){super(e,r);this.data=r;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=r.bindMode,this.bindMatrix=new Tp().fromArray(r.bindMatrix),this.bindMatrixInverse=new Tp)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof FO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jn){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return os.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return os.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Lt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(nt.drop(e,1),r.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let c={...this.data.geometry,...i};this.localGeometry=Nn(c,r,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let d=this.localGeometry.userData;d.sxPrev!==void 0&&Ss(this.localGeometry.attributes,a/d.sxPrev,s/d.syPrev,l/d.szPrev),d.sxPrev=a,d.syPrev=s,d.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Nn(i,r,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof at&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r),super.updateState(e,r)}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,r){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),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),r.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,r){this.skeleton=e,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new Cp,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){r.fromBufferAttribute(o,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(i,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;$0.fromBufferAttribute(i.attributes.skinIndex,e),Y0.fromBufferAttribute(i.attributes.skinWeight,e),W0.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=Y0.getComponent(a);if(s!==0){let l=$0.getComponent(a);X0.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(jO.copy(W0).applyMatrix4(X0),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function HO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let t=new Map,e=n.geometry.attributes,r=e.position.array,o=e.normal.array,i=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Op(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Op})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Q0(i,3))}function qO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Op;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),r[i]=o.x,r[i+1]=o.y,r[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new Q0(r,3))}function Oa(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Zt)||n.material.getLayersOfType("outline").length===0)return;n instanceof st&&n.is2DAndNoDepth?qO(n):HO(n)}function Ma(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Pp.seededRandom(o),Pp.seededRandom(o+1e4),Pp.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new UO(r,3))}var XO;ra.then(n=>{XO=n});var ro=new WO,Bs=new YO;function J0(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var Un=class extends st{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new $O;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,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=at.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,Oa(this),Ma(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){at.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&at.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=at.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=at.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,It.prototype.raycast.call(this,e,r),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 Z0,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;ro.setFromBufferAttribute(r),ro.getCenter(o),e.boundingSphere.radius=o.distanceTo(ro.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ro.getSize(Bs),this.hasNonUniformScale&&Bs.divide(this.scale);let i={width:Bs.x,height:Bs.y,depth:Bs.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;ro.min.set(e[0],e[2],e[4]),ro.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(ro.min.applyMatrix4(this.shearScaleInv),ro.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Z0);let o=r.boundingSphere.center;ro.getCenter(o),r.boundingSphere.radius=o.distanceTo(ro.max)}freeSubdivPointer(){this.subdivPointer&&(at.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};import{Triangle as KO,Vector3 as qn}from"three";var ex=-1,QO=1,tx={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},rx={polygon_center:0,edge:1,vertex:2},Rs=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,ve=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-ex)*(e-r)/(QO-ex)+r};function ox(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var ZO=new qn,Wc=new qn,JO=new qn,eM=new qn;function Ia(n,t){let e=JO.fromArray(n),r=eM.fromArray(t);Wc.copy(r).sub(e);let o=Wc.length();return Wc.normalize().multiplyScalar(o*.5),ZO.copy(e).add(Wc).toArray()}var hr=new KO,$c=new qn,Yc=new qn,Hn=new qn;function nx(n){let t=[];for(let e=0;e<=n.index.count;e++)if($c.fromArray(n.index.array,e*3),hr.setFromAttributeAndIndices(n.attributes.position,$c.x,$c.y,$c.z),hr.getNormal(Yc),hr.getMidpoint(Hn),!(isNaN(Hn.x)||isNaN(Hn.y)||isNaN(Hn.z))){let{a:r,b:o,c:i}=hr,a=r.toArray(),s=o.toArray(),l=i.toArray(),d=r.distanceTo(o),c=o.distanceTo(i),u=i.distanceTo(r),p=Ia(a,s),f=Ia(s,l),h=Ia(l,a),m=[d,c,u],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=hr.getMidpoint(Hn).toArray();y===d&&!g&&(x=[f,h,h],S=p),y===c&&!g&&(x=[p,h,h],S=f),y===u&&!g&&(x=[p,f,f],S=h),g&&(x=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:x,midpoint:S,norm:hr.getNormal(Yc).toArray()})}return t}function ix(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){hr.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),hr.getNormal(Yc),hr.getMidpoint(Hn);let o=hr.a.toArray(),i=hr.b.toArray(),a=hr.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Ia(o,i),Ia(i,a),Ia(a,o)],midpoint:Hn.toArray(),norm:Yc.toArray()})}return t}var tM=4,rM=.5,Mp=n=>.5*(1-Math.cos(n*Math.PI)),Ip=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),a=Math.floor(r),s=t-o,l=e-i,d=r-a,c,u,p=0,f=.5,h,m,y;for(let g=0;g<tM;g++){let x=o+(i<<4)+(a<<8);c=Mp(s),u=Mp(l),h=this.perlin[x&4095],h+=c*(this.perlin[x+1&4095]-h),m=this.perlin[x+16&4095],m+=c*(this.perlin[x+16+1&4095]-m),h+=u*(m-h),x+=256,m=this.perlin[x&4095],m+=c*(this.perlin[x+1&4095]-m),y=this.perlin[x+16&4095],y+=c*(this.perlin[x+16+1&4095]-y),m+=u*(y-m),h+=Mp(d)*(m-h),p+=h*f,f*=rM,o<<=1,s*=2,i<<=1,l*=2,a<<=1,d*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),d>=1&&(a++,d--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},ax=Ip;import{Vector3 as oM,Matrix4 as nM,Ray as iM}from"three";var sx=new oM,lx=new nM,cx=new iM;function ux(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Na=class extends st{constructor(e,r,o){super(e,r,o);this.data=r}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,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(lx.copy(o).invert(),cx.copy(e.ray).applyMatrix4(lx),cx.intersectBox(this.singleBBox,sx))){let i=sx.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var jt=1e-4,oo,hx,mx,yx,px=new lr,fx=new lr;ra.then(n=>{oo=n,hx=[oo.get_face_center,oo.get_edge_midpoint,oo.get_vertex_position],mx=[oo.get_face_normal,oo.get_edge_normal,oo.get_vertex_normal],yx=[oo.face_count,oo.edge_count,oo.vertex_count]});var sM=new $n,lM=new $n,ln=new lr,Wn=new lr,Vs=new lr,Ep=new lr,cM=new lr,uM=new lr;var Po=new ax,Da=class extends zi(aM){constructor(e,r){super();this.parameters=r;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 r of this.children)r instanceof wo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof wo&&r.object===e&&(r.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 r;if(e!==void 0?r=e:r=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&&(r=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===r)return;if(o.length<r)for(let i=0,a=r-o.length;i<a;++i){let s=new wo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-r;i<a;++i)this.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-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-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*dx.DEG2RAD,i=r.end*dx.DEG2RAD,a=o-i,s=new Np(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new lr(0,0,1);break;case"y":l=new lr(0,1,0);break;default:case"x":l=new lr(1,0,0);break}let d=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,c=d.noiseType==="perlin";Po.noiseSeed(d.seed);let u=tc((0,Ea.default)(d.seed)),p=Rs(d.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(d.freqScale/10)+d.movement,y=c?Po.noise(m):u(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,ve(y,d.scale[0]))||jt,h.scale.y=r.scale[1]+p(g,ve(y,d.scale[1]))||jt,h.scale.z=r.scale[2]+p(g,ve(y,d.scale[2]))||jt,h.position.setScalar(0);let x=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,x,0);break;case"y":h.rotation.set(0,0,x);break;case"z":h.rotation.set(x,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,ve(y,d.position[0])),h.position.y+=r.position[1]+p(g,ve(y,d.position[1])),h.position.z+=r.position[2]+p(g,ve(y,d.position[2]));let S=p(g,ve(y,d.rotation[0])),w=p(g,ve(y,d.rotation[1])),b=p(g,ve(y,d.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+b):h.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Np(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Po.noiseSeed(i.seed);let s=tc((0,Ea.default)(i.seed)),l=Rs(i.strength,this.parameters.randomness);for(let[d,c]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=a?Po.noise(u):s(u,u),f=d+1,h=l(f,ve(p,i.rotation[0])),m=l(f,ve(p,i.rotation[1])),y=l(f,ve(p,i.rotation[2]));c.scale.x=1+(r.scale[0]-1)*d+l(f,ve(p,i.scale[0]))||jt,c.scale.y=1+(r.scale[1]-1)*d+l(f,ve(p,i.scale[1]))||jt,c.scale.z=1+(r.scale[2]-1)*d+l(f,ve(p,i.scale[2]))||jt,c.rotation.x=o.x*d+h,c.rotation.y=o.y*d+m,c.rotation.z=o.z*d+y,c.position.x=r.position[0]*d+l(f,ve(p,i.position[0])),c.position.y=r.position[1]*d+l(f,ve(p,i.position[1])),c.position.z=r.position[2]*d+l(f,ve(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=Rs(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Po.noiseSeed(i.seed);let l=Ry((0,Ea.default)(i.seed));if(o.useCenter===!0){let d={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},c=new lr(o.size[0]*(o.count[0]-d.x)*.5,o.size[1]*(o.count[1]-d.y)*.5,o.size[2]*(o.count[2]-d.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let h=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Po.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,ve(m,i.scale[0]))||jt,y.scale.y=1+a(r,ve(m,i.scale[1]))||jt,y.scale.z=1+a(r,ve(m,i.scale[2]))||jt;let g=a(r,ve(m,i.rotation[0])),x=a(r,ve(m,i.rotation[1])),S=a(r,ve(m,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*u-c.x+a(r,ve(m,i.position[0])),y.position.y=o.size[1]*p-c.y+a(r,ve(m,i.position[1])),y.position.z=o.size[2]*f-c.z+a(r,ve(m,i.position[2]))}}else for(let d=0;d<o.count[0];d++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=s?Po.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,ve(f,i.scale[0]))||jt,h.scale.y=1+a(r,ve(f,i.scale[1]))||jt,h.scale.z=1+a(r,ve(f,i.scale[2]))||jt;let m=a(r,ve(f,i.rotation[0])),y=a(r,ve(f,i.rotation[1])),g=a(r,ve(f,i.rotation[2]));h.rotation.set(m,y,g),h.position.x=o.size[0]*d+a(r,ve(f,i.position[0])),h.position.y=-o.size[1]*c+a(r,ve(f,i.position[1])),h.position.z=-o.size[2]*u+a(r,ve(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Np(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??Ur.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Po.noiseSeed(i.seed);let s=tc((0,Ea.default)(i.seed)),l=Rs(i.strength,this.parameters.randomness);if(!r.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 Na)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 d=this.getSubdivData(),c=[],u=g=>{let x=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),b=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let x=d.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?c.push({pos:g.pos,norm:u(x.map(S=>S.norm))}):c.push(g)});let f=ox(c);if(f.length>0){let g=Math.round(f.length*r.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 h=new rc(this.objectForSample).build(),m=tx[r.axis],y=this.children;h.setRandomGenerator((0,Ea.default)(this.object.uuid+r.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Po.noise(S):s(S,S),b=g+1,_=l(b,ve(w,i.rotation[0])),A=l(b,ve(w,i.rotation[1])),v=l(b,ve(w,i.rotation[2]));r.spreadType==="random"?h.sample(Vs,Ep):(f.length&&(Vs.fromArray(f[g].pos),Ep.fromArray(f[g].norm)),this.objectForSample instanceof Un&&Vs.applyMatrix4(sM.copy(this.objectForSample.matrixWorld).invert())),Vs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(Vs),ln.fromArray(m);let M=r.align==="normal"?Ep:this.object.getWorldDirection(uM),O=Wn.fromArray(r.position);Wn.x+=Wn.x+l(b,ve(w,i.position[0])),Wn.y+=Wn.y+l(b,ve(w,i.position[1])),Wn.z+=Wn.z+l(b,ve(w,i.position[2]));let T=Math.acos(M.dot(ln)),C=cM.crossVectors(ln,M).normalize(),P=lM.makeRotationAxis(C,T),I=M.clone().cross(this.object.up).normalize(),E=I.clone().cross(M).normalize(),R=new $n().makeBasis(I,M,E),D=new lr(ln.y,ln.z,ln.x).normalize(),z=D.clone().cross(ln).normalize(),B=new $n().makeBasis(D,ln,z).invert(),V=new $n().multiplyMatrices(R,B);x.rotation.setFromRotationMatrix(V),O.applyMatrix4(P),x.position.add(O),x.rotation.x=x.rotation.x+o.x+_,x.rotation.y=x.rotation.y+o.y+A,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+r.scale[0]+l(b,ve(w,i.scale[0]))||jt,x.scale.y=x.scale.y+r.scale[1]+l(b,ve(w,i.scale[1]))||jt,x.scale.z=x.scale.z+r.scale[2]+l(b,ve(w,i.scale[2]))||jt,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 Un){let r=this.objectForSample,o=rx[e],i=yx[o],a=hx[o],s=mx[o],l=[],d=i(r.subdivPointerNew);for(let c=0;c<=d-1;c++){let u=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);px.fromArray(u).applyMatrix4(r.matrixWorld),fx.fromArray(p),l.push({pos:px.toArray(),norm:fx.toArray()})}return l}else return(this.objectForSample.geometry.index?nx(this.objectForSample.geometry):ix(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,r){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=r.find(this.parameters.toObject.object);o instanceof It?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new $n,this.hiddenMatrix=new $n,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as iN,Vector3 as aN,Matrix4 as sN,Box3 as lN,MeshBasicMaterial as cN,Skeleton as uN}from"three";import{Camera as wM,OrthographicCamera as _M,PerspectiveCamera as AM,Vector3 as Dr,Object3D as bx,Quaternion as TM,Matrix4 as CM}from"three";import{Camera as yM,LineSegments as gM,BufferGeometry as xM,LineBasicMaterial as vM,Color as Lp,Vector3 as bM,Float32BufferAttribute as xx}from"three";import{BoxGeometry as dM}from"three";var no=n=>{var t;return t=class extends n{},t.geometryHelper=new dM(30,30,30),t};import{Ray as pM,Sphere as fM,Matrix4 as hM,Vector3 as Oo}from"three";var Xc=new pM,Dp=new fM,gx=new hM,io=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Dp.copy(i.boundingSphere),Dp.applyMatrix4(a),e.ray.intersectsSphere(Dp)===!1||(gx.copy(a).invert(),Xc.copy(e.ray).applyMatrix4(gx),i.boundingBox!==null&&Xc.intersectsBox(i.boundingBox)===!1))return;let s,l,d,c,u=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),x=Math.min(u.count,f.start+f.count);for(h=g,m=x;h<m;h+=3)if(l=u.getX(h),d=u.getX(h+1),c=u.getX(h+2),s=y(n,e,Xc,p,l,d,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let x=i.attributes.position,S=new Oo,w=new Oo,b=new Oo,_=new Oo,A=2,M=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=M*M,T=Math.max(0,f.start),C=Math.min(x.count,f.start+f.count);for(let P=T,I=C-1;P<I;P+=A){if(S.fromBufferAttribute(x,P),w.fromBufferAttribute(x,P+1),Xc.distanceSqToSegment(S,w,_,b)>O)continue;_.applyMatrix4(n.matrixWorld);let R=e.ray.origin.distanceTo(_);R<e.near||R>e.far||r.push({distance:R,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,_,A){let v=new Oo,M=new Oo,O=new Oo,T=new Oo,C=new Oo;if(v.fromBufferAttribute(w,b),M.fromBufferAttribute(w,_),O.fromBufferAttribute(w,A),S.intersectTriangle(v,M,O,!1,T)===null)return null;C.copy(T),C.applyMatrix4(g.matrixWorld);let I=x.ray.origin.distanceTo(C);return I<x.near||I>x.far?null:{faceIndex:1,distance:I,point:C.clone(),object:g}}};var Kc=new bM,mr=new yM,Bp=class extends gM{constructor(e){let r=new xM,o=new vM({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new Lp(15711266),d=new Lp(15711266),c=new Lp(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",c),u("u2","u3",c),u("u3","u1",c);function u(f,h,m){p(f,m),p(h,m)}function p(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}r.setAttribute("position",new xx(i,3)),r.setAttribute("color",new xx(a,3));super(r,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,r=this.pointMap,o=!0;mr.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;Er("n1",r,e,mr,-i,-a,s),Er("n2",r,e,mr,i,-a,s),Er("n3",r,e,mr,-i,a,s),Er("n4",r,e,mr,i,a,s);let l=s;Er("f1",r,e,mr,-i,-a,l),Er("f2",r,e,mr,i,-a,l),Er("f3",r,e,mr,-i,a,l),Er("f4",r,e,mr,i,a,l);let d=l,c=.5;Er("u1",r,e,mr,i*.7*c,a*1.1,d),Er("u2",r,e,mr,-i*.7*c,a*1.1,d),Er("u3",r,e,mr,0,a*(1.1+.9*c),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Er(n,t,e,r,o,i,a){Kc.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let d=0,c=s.length;d<c;d++)l.setXYZ(s[d],Kc.x,Kc.y,Kc.z)}}var Qc=class extends no(Bp){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,r){io(this.object,this.geometry,e,r,!0)}};import{Box3Helper as vx,BoxGeometry as SM}from"three";var Zc;(t=>t.is=e=>"objectHelper"in e)(Zc||(Zc={}));var ao=(n,t)=>class extends ji(n){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof vx&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof SM?(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 vx&&(i.visible=!1)}}};var Jc=790,La=new Dr,Rp=new Dr,Vp=new TM,Gp=new Dr,Gs=new Dr,zp=new Dr,Mo=class extends ao(wM,Qc){constructor(e="",r={...Tn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=qo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new CM,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new _M(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new AM(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,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}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,r,o){typeof e=="number"&&(e=new Dr(e,r,o)),super.lookAt(e),this.getWorldPosition(La),this.targetOffset=La.distanceTo(e)}getTarget(e=new Dr){return this.getWorldDirection(Rp),this.getWorldPosition(La),Rp.multiplyScalar(this.targetOffset),e.copy(La).add(Rp),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(La),La.distanceTo(e)}updateUp(){this.getWorldQuaternion(Vp),Gp.set(0,0,1).applyQuaternion(Vp),Gs.copy(bx.DEFAULT_UP),this.isUpVectorFlipped&&Gs.negate(),Gs.applyQuaternion(Vp),zp.copy(bx.DEFAULT_UP).projectOnPlane(Gp),this.angleOffsetFromUp=zp.angleTo(Gs),this.angleOffsetFromUp*=zp.cross(Gs).dot(Gp)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new Dr),i=e.getWorldDirection(new Dr).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new Dr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new Dr,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let i=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-Jc*.5*i,this.right=Jc*.5*i,this.top=Jc*.5*(1/a),this.bottom=-Jc*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.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,r,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,a,s):this.orthoCamera.setViewOffset(e,r,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,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),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 r={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 vi(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),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,r,o){super.updateByPatchedOp(e,r,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}}};import{MathUtils as ZJ}from"three";import{BufferGeometry as Sx,Matrix4 as kp,Float32BufferAttribute as PM,Vector3 as Ax}from"three";var Ba=new kp,OM=new kp,eu=new kp,wx=new Ax,_x=new Ax;var yr=class extends Jt{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Sx;this.onAfterRender=(e,r,o,i,a,s)=>{super.onAfterRender(e,r,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,r,o){super.updateByPatchedOp(e,r,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,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof yr&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof It&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(Ba.multiplyMatrices(a.hiddenMatrix,a.matrix),a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=dr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;dr.transformMeshSet(a.booleanMeshSetAddress,Ba),a.booleanMatrixInvOld.copy(Ba).invert(),a.booleanWasTransformed=!1}else a instanceof yr&&a.needsTransformForDownstream===!0?(dr.transformMeshSet(a.booleanMeshSetAddress,Ba),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(dr.transformMeshSet(a.booleanMeshSetAddress,OM.multiplyMatrices(Ba,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Ba).invert(),a.booleanWasTransformed=!1);dr.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 PM([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return dr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Sx,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=dr.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,Oa(this),Ma(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),eu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(eu),wx.copy(e.max).applyMatrix4(eu),_x.copy(e.min).applyMatrix4(eu),this.geometry.boundingSphere.radius=wx.distanceTo(_x)/2),e}};import{Light as MM}from"three";var Tx;(t=>{function n(e){return Ae.is(e)&&e instanceof MM}t.is=n})(Tx||(Tx={}));var Ra=(n,t)=>class extends ao(n,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var cn=n=>n instanceof It,Va=n=>n!==null&&n instanceof yr;var zs=n=>Zc.is(n);import{Group as NM}from"three";import{AxesHelper as IM}from"three";var so=class extends no(IM){constructor(e,r=15){super(r);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,r){io(this.object,so.geometryHelper,e,r)}update(){}};var un=class extends ao(NM,so){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};import{Color as qM,Fog as WM,HemisphereLight as $M}from"three";import{ShaderChunk as ks}from"three";var EM=n=>`
2220
2234
 
2221
2235
  // PCSS implementation based on:
2222
2236
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2590,4 +2604,177 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2590
2604
  }
2591
2605
 
2592
2606
  #endif
2593
- `,d2=fs.lights_fragment_begin,u2=fs.shadowmask_pars_fragment,z0=null,p2=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},j0=(n="medium")=>{if(z0===n)return!1;z0=n;let r=p2(n);fs.shadowmap_pars_fragment=c2(r);let e=d2.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 ]"),fs.lights_fragment_begin=e;let t=u2.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),fs.shadowmask_pars_fragment=t,!0};import{DirectionalLight as g2,CameraHelper as F0}from"three";import{DirectionalLightHelper as f2}from"three";var fa=class extends Ur(f2){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Hr(this.object,fa.geometryHelper,e,t)}};import{PointLightHelper as m2}from"three";var ma=class extends Ur(m2){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Hr(this.object,ma.geometryHelper,e,t)}};import{SpotLightHelper as h2,Vector3 as y2}from"three";var Oc=class extends Ur(h2){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Hr(this.object,Oc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Oc._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)}}},ms=Oc;ms._vector=new y2;function x2(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 ha=class extends ua(g2,fa){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 F0(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 F0&&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&&x2(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()}};import{Scene as P2}from"three";import{SpotLight as v2,CameraHelper as k0,MathUtils as b2,Vector3 as q0,Quaternion as S2}from"three";var U0=new q0,H0=new q0,W0=new S2,ya=class extends ua(v2,ms){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=b2.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new k0(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 k0&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),H0.setFromMatrixPosition(this.matrixWorld),W0.setFromRotationMatrix(this.matrixWorld),U0.copy(this.up).applyQuaternion(W0).negate().multiplyScalar(this.distance),this.target.position.copy(H0).add(U0),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 Wo=class extends gi(P2){constructor(e,t){super();this.data=t;this.bgColor=new it(1,1,1,1);this.fog=null;this.backupFog=new T2(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new w2;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new po(Po,{...en.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new _2(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=Tt(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 Ft)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&&j0(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=Tt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Tt(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let a=t;_t(e.path,["fog"])?this.updateFog(a.fog,o.shared):_t(e.path,["ao"])?this.updateAo(a.ao,o.shared):_t(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):_t(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(Tt(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 ha&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ya&&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;Te.is(a)&&(a.visible||s?.object.data.visible)&&((Ho(a)||ps(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),ys(a,e,t,!0)),o(a))}};return o(this),t}};import{PointLight as O2,Vector3 as Ac,Box3 as A2,Box3Helper as $0,Color as C2}from"three";var Cc=class extends ua(O2,ma){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 Ac(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Ac(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new A2(a,s),u=new $0(c,new C2(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 $0){let t=this.shadow.camera,o=new Ac(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Ac(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 Nc=class extends Je{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Ka(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 Je{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=Xl;break;case"Ellipse":i=Pi;break;case"Polygon":i=Yl;break;case"Star":i=Kl;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?Ka(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as N2,Matrix4 as I2,Skeleton as M2}from"three";var fo=class extends Wr(N2,qr){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=ci.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Nr.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]=Tr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...xt.defaultData,...e,...nr(xt.defaultData,Nr.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 Nr.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&&Nr.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(Te.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Ic(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};X0(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Te.is(s)){let c=s.data;c.type==="Empty"&&c.animations&&s.traverseEntity(u=>{if(u instanceof Je&&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 I2().fromArray(m)),f=new M2(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Ic(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)Te.is(e)&&Ic(e)}}function Y0(n,r,e,t){return n.component===r&&kc(n.identity,t)?n.overrideData===e?2:1:0}function X0(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 fo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Te.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=ai.resolve(e,d,1);if(p!=null&&!(p instanceof Re)){if(!1)debugger;Object.setPrototypeOf(p,Re.prototype),console.error("wrong prototype")}let f=null,m;if(!s){let h=t.children[u];if(f=Te.is(h)?h:null,f!==null){let y=Y0(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=Y0(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?Tr.apply(l.data,p):l.data;ir.is(h.type)&&(h={...h,type:"Empty"}),f=lr.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,X0(n,r,e,f,l,i,a+1,s,c)}if(!s){let l=u;for(;;){let d=t.children[u];if(Te.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}import{Bone as E2}from"three";var Mc=class extends Wr(E2,qr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function L2(n,r,e){let t;return r.geometry.type==="TextGeometry"?new aa(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new vn(n,r,e):r.geometry.type==="PathGeometry"?t=new ga(n,r,e):r.geometry.type==="VectorGeometry"?t=new Nc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new or(n,r,e):t=new Je(n,r,e),t)}function Ec(n,r,e){return r.type==="Mesh"?L2(n,r,e):r.type==="Empty"?new _n(n,r):r.type==="Bone"?new Mc(n,r):r.type==="Page"?new Wo(n,r):r.type==="PointLight"?new Cc(n,r,e):r.type==="SpotLight"?new ya(n,r,e):r.type==="DirectionalLight"?new ha(n,r,e):r.type==="Component"||r.type==="Instance"?new fo(n,r,e):ir.is(r.type)?new po(n,r):(console.error(r),new _n(n,r))}lr.createEntity=Ec;function D2(n,r,e){let t=Ec(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()}lr.changeEntityProptotype=D2;lr.Cloner=la;function K0(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as G2,Ray as V2,Raycaster as z2}from"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,na(n),oa(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Ft&&n.needsAO&&n.layers.enable(5),e}function Q0(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 J0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Ft)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 ex(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Ft)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Q0(e,e.material[t])&&(r=!0);else Q0(e,e.material)&&(r=!0)}),r}var j2=new z2,F2=new G2,k2=new V2;function ys(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=F2.copy(i.matrixWorld).invert(),s=k2.copy(r.ray).applyMatrix4(a),c=n.matrixWorld;s.applyMatrix4(c);let u=j2;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 Lc=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 X2=new $2;X2.wireframe=!0;var tx=new H2,Dc=class extends U2{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 Lc;this.errorPage=new Wo("fdasfa",{...eo.defaultData,name:""});this.invisibleObjects=new _n("jflkdsafjasdifjaslk",{...xl.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=ex(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=J0(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 Wo&&(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===Po)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(),Ho(i)&&pa(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}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),pa(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ho(o)&&(o.freeBooleanPointer(),i instanceof or&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ga&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}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()),Ho(o)&&(o.invalidateUpstreamBooleanData(),pa(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof or&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}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 Wo&&(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{K0(a,t,o,{scene:this,shared:i}),a instanceof Je&&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=>{pa(i)&&i.recomputeBoolean(),i instanceof po&&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){Te.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Te.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=vo(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(s);if(f){let m=[...xs(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=Xe.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 fo&&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=vo(s.data,c=>{s.isInstanceRoot||(c.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of wl.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 fo&&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),Ic(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof fo&&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)Te.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(Te.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(Ho(s)||ps(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),ys(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;Te.is(a)&&(a.visible||s?.object.data.visible)&&((Ho(a)||ps(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),ys(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Te.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Te.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Te.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof Je&&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();pa(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)fi.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Te.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=Ec(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 Je&&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 Je&&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 W2().fromArray(h)),m=new Y2(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 q2;return o.setFromPoints(t),o.getCenter(tx),tx}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 bt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof jt&&e(t.material[o]);else t.material instanceof jt&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof po&&i.setViewplaneSize(e,t,o)})}};import{DRACOLoader as K2}from"three/examples/jsm/loaders/DRACOLoader.js";var qo;function Z2(){return qo||(qo=new K2,qo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qo.decoderPending}async function Q2(n){if(qo){let r={attributeIDs:qo.defaultAttributeIDs,attributeTypes:qo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await qo.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 rx(n,r){let[e,t]=Yc(al.deserialize(new Uint8Array(n)));Pl(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 Z2();for(let i of o){let a=await Q2(ke(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}import{Mesh as Ste}from"three";import{mergeBufferGeometries as _te}from"three/examples/jsm/utils/BufferGeometryUtils.js";function ox(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}import{Color as nx,ShaderLib as J2}from"three";function ix(n){let r=new Set;return n.traverse(e=>{if(e instanceof Ft)if(We(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(eN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new nx,specularColor:new nx});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},J2.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=Fg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else tN(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function eN(n){return n.getLayersOfType("transmission").length>0}function tN(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 ax(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function sx(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}import{mergeBufferGeometries as rN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function lx(n){let r=[];return n.traverse(e=>{e instanceof la&&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&&ox(c),c}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof bt&&a.unshift(t.geometry),a.length){let s=rN(a);t instanceof bt&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:n0})}),n}function cx(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function dx(n){Object.values(n.shared.materials).forEach(r=>{cp(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?cp(e.material):"materials"in e&&e.materials.forEach(t=>{cp(t)})})}function cp(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 hx=xa(px(),1);function fx(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var mx="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",dp=class extends nN{load(r,e,t,o=console.error){let i=new oN(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(mx+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(mx),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 rx(r,dx);e.version&&(0,hx.default)(e.version,"0.9.496")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([p0(e)&&xg(),T0(e)&&t0()].filter(Boolean));let t=new xn(e.shared);Object.values(t.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new Dc(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=lx(o),o=ix(o),o=ax(o),o=sx(o),o=cx(o),o=fx(o),o}};export{dp as default};
2607
+ `,DM=ks.lights_fragment_begin,LM=ks.shadowmask_pars_fragment,Cx=null,BM=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Px=(n="medium")=>{if(Cx===n)return!1;Cx=n;let t=BM(n);ks.shadowmap_pars_fragment=EM(t);let e=DM.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 ]"),ks.lights_fragment_begin=e;let r=LM.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ks.shadowmask_pars_fragment=r,!0};import{DirectionalLight as kM,CameraHelper as Ox}from"three";import{DirectionalLightHelper as RM}from"three";var Ga=class extends no(RM){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,Ga.geometryHelper,e,r)}};import{PointLightHelper as VM}from"three";var za=class extends no(VM){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,za.geometryHelper,e,r)}};import{SpotLightHelper as GM,Vector3 as zM}from"three";var tu=class extends no(GM){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){io(this.object,tu.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=tu._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),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)}}},Fs=tu;Fs._vector=new zM;function FM(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var ka=class extends Ra(kM,Ga){constructor(t,e,r){super(),this.super_Entity(t,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 Ox(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Ox&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&FM(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};import{Scene as YM}from"three";import{SpotLight as jM,CameraHelper as Mx,MathUtils as UM,Vector3 as Dx,Quaternion as HM}from"three";var Ix=new Dx,Nx=new Dx,Ex=new HM,Fa=class extends Ra(jM,Fs){constructor(t,e,r){super(),this.super_Entity(t,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=UM.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Mx(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Mx&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),Nx.setFromMatrixPosition(this.matrixWorld),Ex.setFromRotationMatrix(this.matrixWorld),Ix.copy(this.up).applyQuaternion(Ex).negate().multiplyScalar(this.distance),this.target.position.copy(Nx).add(Ix),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var dn=class extends ji(YM){constructor(e,r){super();this.data=r;this.bgColor=new ht(1,1,1,1);this.fog=null;this.backupFog=new WM(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new qM;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new Mo(Uo,{...Tn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new $M(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,r){e.color!==void 0&&(this.ambientLight.color=Dt(e.color,r)),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 Jt)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&Px(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){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=Dt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Dt(e.aoColor,r))}updateByOp(e,r,o,i){super.updateByOp(e,r,o,i);let a=r;Lt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Lt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Lt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Lt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Dt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,r){super.raycast(e,r)}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,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ka&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Fa&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize,r+=1)})}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ae.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||zs(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Us(a,e,r,!0)),o(a))}};return o(this),r}};import{PointLight as XM,Vector3 as ru,Box3 as KM,Box3Helper as Lx,Color as QM}from"three";var ou=class extends Ra(XM,za){constructor(t,e,r){super(),this.super_Entity(t,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 ru(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new ru(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new KM(a,s),d=new Lx(l,new QM(16755200));d.visible=!1,this.gizmos.shadowmap=d,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof Lx){let r=this.shadow.camera,o=new ru(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new ru(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var nu=class extends st{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?_s(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var ja=class extends st{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),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 r;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),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=Ac;break;case"Ellipse":i=Ki;break;case"Polygon":i=_c;break;case"Star":i=Tc;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=i.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,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,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?_s(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};import{Group as ZM,Matrix4 as JM,Skeleton as eI}from"three";var Io=class extends ao(ZM,so){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),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,r){let o=Li.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of Hr.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]=Gr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Ot.defaultData,...e,...xr(Ot.defaultData,Hr.rootOverrideProps)}}updateByOp(e,r,o,i){let a;if(this.isInstanceRoot&&!i){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of Hr.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&&Hr.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,i)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Ae.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),iu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};Rx(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Ae.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(d=>{if(d instanceof st&&d.isSkinnedMesh){let c=d.dataPatched;if(c.bones&&c.boneInverses){let u=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new JM().fromArray(h)),f=new eI(u,p);d.bind(f,d.bindMatrix)}}else d.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function iu(n){if(n.component){let t=n.component.instances.indexOf(n);t>=0&&n.component.instances.splice(t,1);for(let e of n.children)Ae.is(e)&&iu(e)}}function Bx(n,t,e,r){return n.component===t&&Su(n.identity,r)?n.overrideData===e?2:1:0}function Rx(n,t,e,r,o,i,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let c=r.component.instances.indexOf(r);c>=0&&r.component.instances.splice(c,1)}o.instances.push(r),r.component=o}o instanceof Io&&o.isInstanceRoot&&o.expandInstanceChildren(n);let d=0;for(let c of o.children)if(Ae.is(c)){let u=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Ni.resolve(e,u,1);if(p!=null&&!(p instanceof ke)){if(!1)debugger;Object.setPrototypeOf(p,ke.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[d];if(f=Ae.is(m)?m:null,f!==null){let y=Bx(f,c,p,u);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(u)??null,f!==null)){let y=Bx(f,c,p,u);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),r.children.splice(d,0,f),f.parent===r?(g<=d&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?Gr.apply(c.data,p):c.data;vr.is(m.type)&&(m={...m,type:"Empty"}),f=wr.createEntity(u,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(d,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}d+=1,Rx(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=d;for(;;){let u=r.children[d];if(Ae.is(u))n.pendingDeletes.add(u);else break;d+=1}r.children.splice(c,d-c)}return!0}import{Bone as tI}from"three";var au=class extends ao(tI,so){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};function rI(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Na(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new Un(n,t,e):t.geometry.type==="PathGeometry"?r=new ja(n,t,e):t.geometry.type==="VectorGeometry"?r=new nu(n,t,e):t.geometry.type==="BooleanGeometry"?r=new yr(n,t,e):r=new st(n,t,e),r)}function su(n,t,e){return t.type==="Mesh"?rI(n,t,e):t.type==="Empty"?new un(n,t):t.type==="Splat"?new un(n,t):t.type==="Bone"?new au(n,t):t.type==="Page"?new dn(n,t):t.type==="PointLight"?new ou(n,t,e):t.type==="SpotLight"?new Fa(n,t,e):t.type==="DirectionalLight"?new ka(n,t,e):t.type==="Component"||t.type==="Instance"?new Io(n,t,e):vr.is(t.type)?new Mo(n,t):(console.error(t),new un(n,t))}wr.createEntity=su;function oI(n,t,e){let r=su(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,d=n.overrideData,c=n.uuid,u=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(r));for(let p of Object.keys(r))n[p]=r[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=c,n.overrideData=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}wr.changeEntityProptotype=oI;wr.Cloner=Da;function Vx(n,t,e,r){n.updateByOp(t,e,r,!1)}import{Matrix4 as aI,Ray as sI,Raycaster as lI}from"three";function Gx(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Ma(n),Oa(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof Jt&&n.needsAO&&n.layers.enable(5),e}function zx(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission").filter(i=>i.data.visible),o=t.getLayersOfType("outline").filter(i=>i.data.visible);return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function kx(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Jt)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gx(e,e.material[r])&&(t=!0);else Gx(e,e.material)&&(t=!0)}),t}function Fx(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Jt)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)zx(e,e.material[r])&&(t=!0);else zx(e,e.material)&&(t=!0)}),t}var cI=new lI,uI=new aI,dI=new sI;function Us(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=uI.copy(i.matrixWorld).invert(),s=dI.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let d=cI;d.set(s.origin,s.direction),d.near=t.near,d.far=t.far;let c=d.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var lu=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let i=[o,r],a=r;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 l=t.find(i[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var Lr=Rt(Ua()),lo=Rt(Ha());var tt=Rt(Ua()),ce=Rt(Ha()),pn=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ce.sup(t),r=ce.inf(t),o=(0,tt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ce.assigns(o,0):(ce.subs(o,t,r),ce.divs(o,o,i)),new pn(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,tt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ce.muls(t,this._dataNormalized,this._maxD-this._minD),ce.adds(t,t,this._minD),t}},Fe=class{constructor(t,e){this._quantized=t,this._method=e}get quantized(){return this._quantized}static maxIntBits(t){return 2**t-1}static fromNormalized(t,e){let r=t.data,o;if(e==="norm8x"){let i=Fe.maxIntBits(8),a=(0,tt.default)(new Float32Array(r.size),r.shape);ce.muls(a,r,i),ce.roundeq(a),o=(0,tt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,tt.default)(new Float32Array(r.size),r.shape);ce.assign(i,r),ce.mulseq(i.pick(null,0),Fe.maxIntBits(5)),ce.mulseq(i.pick(null,1),Fe.maxIntBits(6)),ce.mulseq(i.pick(null,2),Fe.maxIntBits(5)),ce.roundeq(i);let a=(0,tt.default)(new Uint16Array(i.data),r.shape),s=(0,tt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,tt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ce.lshifts(s,a.pick(null,0),11),ce.lshifts(l,a.pick(null,1),5),ce.boreq(s,l),ce.boreq(s,a.pick(null,2)),o=s}else{let i=(0,tt.default)(new Float32Array(r.size),r.shape);ce.assign(i,r),ce.mulseq(i.pick(null,0),Fe.maxIntBits(11)),ce.mulseq(i.pick(null,1),Fe.maxIntBits(10)),ce.mulseq(i.pick(null,2),Fe.maxIntBits(11)),ce.roundeq(i);let a=(0,tt.default)(new Uint32Array(i.data),r.shape),s=(0,tt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,tt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ce.lshifts(s,a.pick(null,0),21),ce.lshifts(l,a.pick(null,1),11),ce.boreq(s,l),ce.boreq(s,a.pick(null,2)),o=s}return new Fe(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=Fe.maxIntBits(8);o=(0,tt.default)(new Float32Array(i.size),i.shape),ce.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,tt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ce.rrshifts(a,i,11),ce.rrshifts(s,i,5),ce.bandseq(s,Fe.maxIntBits(6)),ce.bands(l,i,Fe.maxIntBits(5)),o=(0,tt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ce.muls(o.pick(null,0),a,1/Fe.maxIntBits(5)),ce.muls(o.pick(null,1),s,1/Fe.maxIntBits(6)),ce.muls(o.pick(null,2),l,1/Fe.maxIntBits(5))}else{let a=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,tt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ce.rrshifts(a,i,21),ce.rrshifts(s,i,11),ce.bandseq(s,Fe.maxIntBits(10)),ce.bands(l,i,Fe.maxIntBits(11)),o=(0,tt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ce.muls(o.pick(null,0),a,1/Fe.maxIntBits(11)),ce.muls(o.pick(null,1),s,1/Fe.maxIntBits(10)),ce.muls(o.pick(null,2),l,1/Fe.maxIntBits(11))}return new pn(o,t,e)}};var je=class{constructor(t,e,r,o,i,a=!1){this._quantized=t,this._minMaxMatrix=e,this._chunkSize=r,this._quantizationMethod=o,this._variableChunkSize=i,this._isDynamicChunks=a}get length(){return this._quantized.shape[0]}get nchunks(){return this._minMaxMatrix.shape[0]}get quantized(){return this._quantized}get method(){return this._quantizationMethod}get minmaxMatrix(){return this._minMaxMatrix}_createPrunedMinMax(t){let e=t.length,r=this.minmaxMatrix.shape[0]-e,o=(0,Lr.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let d=0;d<t.length;d++)l=t[d],a=l-s+i,a>i&&lo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&lo.assign(o.lo(i,0),this.minmaxMatrix.lo(s,0)),o}_createPrunedQuantized(t){let e=t.length,r=this.quantized.shape[0]-e,o=this._quantizationMethod,i,a;if(o==="norm8x"){a=this._quantized.shape[1];let u=a?r*a:r;i=(0,Lr.default)(new Uint8Array(u),a?[r,a]:[r,1])}else o==="norm565"?i=(0,Lr.default)(new Uint16Array(r),[r]):i=(0,Lr.default)(new Uint32Array(r),[r]);let s=0,l=r,d=0,c=i.shape[0];for(let u=0;u<t.length;u++)c=t[u],l=c-d+s,l>s&&(a?lo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(d,0)):lo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(d))),s=l,d=c+1;return s<r&&(a?lo.assign(i.lo(s,0),this._quantized.lo(d,0)):lo.assign(i.lo(s),this._quantized.lo(d))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new je(o,i,this._chunkSize,this._quantizationMethod,r,!0)}static getRequiredNChunks(t,e){return Math.floor(t/e)}static fromArray(t,e,r){let o=t.shape[0],i=Math.floor(o/r),a=(0,Lr.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,Lr.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,Lr.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,Lr.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let d=l*r,c=l+1<i?(l+1)*r:o,u;t.shape.length>1?u=pn.createFromUnnormalized(t.hi(c,t.shape[1]).lo(d,0)):u=pn.createFromUnnormalized(t.hi(c).lo(d)),a.set(l,0,u.minD),a.set(l,1,u.maxD),s.shape.length>1?lo.assign(s.hi(c,s.shape[1]).lo(d,0),Fe.fromNormalized(u,e).quantized):lo.assign(s.hi(c).lo(d),Fe.fromNormalized(u,e).quantized)}return new je(s,a,r,e)}denormDequant(){let t=this._minMaxMatrix.shape[0],e=this._quantized,r=e.shape[0],o=this._quantizationMethod,i=this._chunkSize,a;if(this._isDynamicChunks){if(!this._variableChunkSize)throw new Error("variable chunk must exists if chunkSize isDynamic");a=this._variableChunkSize}let s;o==="norm8x"?s=(0,Lr.default)(new Float32Array(e.size),e.shape):s=(0,Lr.default)(new Float32Array(r*3),[r,3]);let l=0,d=i;for(let c=0;c<t;c++){let[u,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(d=a[c]);let f=c+1<t?l+d:r,h;e.shape.length>1?h=new Fe(e.hi(f,e.shape[1]).lo(l,0),o):h=new Fe(e.hi(f).lo(l),o),lo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(u,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var No=Rt(Ua()),Ce=Rt(Ha());var cv="http://127.0.0.1:8000";var Yn=Rt(Ua()),ze=Rt(Ha());var uv=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function dv(n){return n<1e5?n<100?n<10?0:1:n<1e4?n<1e3?2:3:4:n<1e7?n<1e6?5:6:n<1e9?n<1e8?7:8:9}function pv(n,t){if(n===t)return 0;if(~~n===n&&~~t===t){if(n===0||t===0)return n<t?-1:1;if(n<0||t<0){if(t>=0)return-1;if(n>=0)return 1;n=-n,t=-t}let o=dv(n),i=dv(t),a=0;return o<i?(n*=uv[i-o-1],t/=10,a=-1):o>i&&(t*=uv[o-i-1],n/=10,a=1),n===t?a:n<t?-1:1}let e=String(n),r=String(t);return e===r?0:e<r?-1:1}function RI(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function fv(n,t,e,r){let o=t+1;if(o===e)return 1;if(r(n[o++],n[t])<0){for(;o<e&&r(n[o],n[o-1])<0;)o++;VI(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function VI(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function hv(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let d=a+s>>>1;o(i,n[d])<0?s=d:a=d+1}let l=r-a;switch(l){case 3:n[a+3]=n[a+2];case 2:n[a+2]=n[a+1];case 1:n[a+1]=n[a];break;default:for(;l>0;)n[a+l]=n[a+l-1],l--}n[a]=i}}function Hp(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])>0){for(s=r-o;l<s&&i(n,t[e+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&i(n,t[e+o-l])<=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let d=a;a=o-l,l=o-d}for(a++;a<l;){let d=a+(l-a>>>1);i(n,t[e+d])>0?a=d+1:l=d}return l}function qp(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])<0){for(s=o+1;l<s&&i(n,t[e+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let d=a;a=o-l,l=o-d}else{for(s=r-o;l<s&&i(n,t[e+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){let d=a+(l-a>>>1);i(n,t[e+d])<0?l=d:a=d+1}return l}var Wp=class{constructor(t,e){yt(this,"array",null);yt(this,"compare",null);yt(this,"minGallop",7);yt(this,"length",0);yt(this,"tmpStorageLength",256);yt(this,"stackLength",0);yt(this,"runStart",null);yt(this,"runLength",null);yt(this,"stackSize",0);this.array=t,this.compare=e,this.length=t.length,this.length<2*256&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}pushRun(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;if(t>=1&&this.runLength[t-1]<=this.runLength[t]+this.runLength[t+1]||t>=2&&this.runLength[t-2]<=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]<this.runLength[t+1]&&t--;else if(this.runLength[t]>this.runLength[t+1])break;this.mergeAt(t)}}forceMergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;t>0&&this.runLength[t-1]<this.runLength[t+1]&&t--,this.mergeAt(t)}}mergeAt(t){let e=this.compare,r=this.array,o=this.runStart[t],i=this.runLength[t],a=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=i+s,t===this.stackSize-3&&(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;let l=qp(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=Hp(r[o+i-1],r,a,s,s-1,e),s!==0&&(i<=s?this.mergeLow(o,i,a,s):this.mergeHigh(o,i,a,s)))}mergeLow(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<e;l++)s[l]=a[t+l];let d=0,c=r,u=t;if(a[u++]=a[c++],--o===0){for(l=0;l<e;l++)a[u+l]=s[d+l];return}if(e===1){for(l=0;l<o;l++)a[u+l]=a[c+l];a[u+o]=s[d];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[d])<0){if(a[u++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[u++]=s[d++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=qp(a[c],s,d,e,0,i),f!==0){for(l=0;l<f;l++)a[u+l]=s[d+l];if(u+=f,d+=f,e-=f,e<=1){m=!0;break}}if(a[u++]=a[c++],--o===0){m=!0;break}if(h=Hp(s[d],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[u+l]=a[c+l];if(u+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[u++]=s[d++],--e===1){m=!0;break}p--}while(f>=7||h>=7);if(m)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),e===1){for(l=0;l<o;l++)a[u+l]=a[c+l];a[u+o]=s[d]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[u+l]=s[d+l]}}mergeHigh(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<o;l++)s[l]=a[r+l];let d=t+e-1,c=o-1,u=r+o-1,p=0,f=0;if(a[u--]=a[d--],--e===0){for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[d])<0){if(a[u--]=a[d--],m++,y=0,--e===0){g=!0;break}}else if(a[u--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-qp(s[c],a,t,e,e-1,i),m!==0){for(u-=m,d-=m,e-=m,f=u+1,p=d+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[u--]=s[c--],--o===1){g=!0;break}if(y=o-Hp(a[d],s,0,o,o-1,i),y!==0){for(u-=y,c-=y,o-=y,f=u+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[u--]=a[d--],--e===0){g=!0;break}h--}while(m>=7||y>=7);if(g)break;h<0&&(h=0),h+=2}if(this.minGallop=h,h<1&&(this.minGallop=1),o===1){for(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function mv(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=pv):t=pv,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=fv(n,e,r,t),hv(n,e,r,e+i,t);return}let a=new Wp(n,t),s=RI(o);do{if(i=fv(n,e,r,t),i<s){let l=o;l>s&&(l=s),hv(n,e,e+l,e+i,t),i=l}a.pushRun(e,i),a.mergeRuns(),o-=i,e+=i}while(o!==0);a.forceMergeRuns()}function $p(n){let t=(0,Yn.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,Yn.default)(new Int32Array(n.shape[0]),[n.shape[0]]);return ze.bands(t,n,1023),ze.lshifts(e,t,16),ze.bxoreq(t,e),ze.bandseq(t,4278190335),ze.lshifts(e,t,8),ze.bxoreq(t,e),ze.bandseq(t,50393103),ze.lshifts(e,t,4),ze.bxoreq(t,e),ze.bandseq(t,51130563),ze.lshifts(e,t,2),ze.bxoreq(t,e),ze.bandseq(t,153391689),t}function GI(n){let t=$p(n.pick(null,0)),e=$p(n.pick(null,1));ze.lshiftseq(e,1);let r=$p(n.pick(null,2));return ze.lshiftseq(r,2),ze.boreq(t,e),ze.boreq(t,r),t}function fn(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,Yn.default)(new Float32Array(n.size),n.shape,n.stride,n.offset);for(let r=0;r<t.shape[0];r++){let o=t.get(r);if(n.shape.length>1)for(let i=0;i<n.shape[1];i++)e.set(r,i,n.get(o,i));else e.set(r,n.get(o))}return e}function Yp(n){let t=ze.sup(n),e=ze.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,Yn.default)(new Float32Array(n.data),n.shape);ze.mulseq(o,r);let i=(0,Yn.default)(new Int32Array(o.data),n.shape),a=GI(i),l=Array.from(a.data).map((u,p)=>[u,p]);mv(l,(u,p)=>u[0]-p[0]);let d=l.map(([u,p])=>p);return(0,Yn.default)(Uint32Array.from(d))}var gr=class{constructor(t,e,r,o,i,a,s,l,d,c){this.propertyDescs=t,this.format=e,this.nsplats=r,this.xyz=o,this.colors=i,this.harmonics=a,this.opacity=s,this.scaling=l,this.rotation=d,this.maxSHDegree=c}getPlyBinary(){let t=gr._generateHeaderString(this.propertyDescs,this.format,this.nsplats),e=new TextEncoder().encode(t),r=Object.keys(this.propertyDescs).length,o=(0,No.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Ce.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Ce.assign(o.pick(null,this.propertyDescs.rot_3.index),this.rotation.pick(null,3)),this.harmonics&&this.harmonics.length>0)for(let s=0;s<this.harmonics.length;s++){let l=s*3;Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Ce.assign(o.pick(null,this.propertyDescs[`f_rest_${l+2}`].index),this.harmonics[s].pick(null,2))}let i=new Uint8Array(o.data.buffer),a=new Uint8Array(i.length+e.length);return a.set(e),a.set(i,e.length),a.buffer}save(t,e){let r=this.getPlyBinary(),o=new Blob([r],{type:"application/octet-stream"}),i=new File([o],t),a=new FormData;a.append("file",i),a.append("filename",t),a.append("basedir",e),fetch(`${cv}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=Yp(this.xyz),e=fn(this.xyz,t),r=fn(this.colors,t),o=fn(this.opacity,t),i=fn(this.scaling,t),a=fn(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(fn(this.harmonics[l],t));return new gr(this.propertyDescs,this.format,this.nsplats,e,r,s,o,i,a,this.maxSHDegree)}static _generateHeaderString(t,e,r){let o=`ply
2608
+ format ${e.format} ${e.version}
2609
+ element vertex ${r}`,i=Object.keys(t).length,a=Array(i);for(let s in t){let l=t[s];a[l.index]={name:s,dtype:l.dtype}}for(let s=0;s<a.length;s++)o=`${o}
2610
+ property ${a[s].dtype} ${a[s].name}`;return`${o}
2611
+ end_header
2612
+ `}static fromArrayBuffer(t,e=3){let{splatCount:r,vertexData:o,propertiesDesc:i,format:a}=gr.decodeHeader(t),s=o.buffer.slice(o.byteOffset),l=Object.keys(i).length,d=(0,No.default)(new Float32Array(s),[r,l]),c=0,u={},p={double:8,int:4,uint:4,float:4,short:2,ushort:2,uchar:1};for(let b in i)if(i.hasOwnProperty(b)){let _=i[b].dtype;u[b]=c,c+=p[_]}let f=(0,No.default)(new Float32Array(r*3),[r,3]);Ce.assign(f.pick(null,0),d.pick(null,u.x/4)),Ce.assign(f.pick(null,1),d.pick(null,u.y/4)),Ce.assign(f.pick(null,2),d.pick(null,u.z/4));let h=(0,No.default)(new Float32Array(r*3),[r,3]);Ce.assign(h.pick(null,0),d.pick(null,u.scale_0/4)),Ce.assign(h.pick(null,1),d.pick(null,u.scale_1/4)),Ce.assign(h.pick(null,2),d.pick(null,u.scale_2/4));let m=(0,No.default)(new Float32Array(r*3),[r,3]);Ce.assign(m.pick(null,0),d.pick(null,u.f_dc_0/4)),Ce.assign(m.pick(null,1),d.pick(null,u.f_dc_1/4)),Ce.assign(m.pick(null,2),d.pick(null,u.f_dc_2/4));let y=(0,No.default)(new Float32Array(r*4),[r,4]);Ce.assign(y.pick(null,0),d.pick(null,u.rot_1/4)),Ce.assign(y.pick(null,1),d.pick(null,u.rot_2/4)),Ce.assign(y.pick(null,2),d.pick(null,u.rot_3/4)),Ce.assign(y.pick(null,3),d.pick(null,u.rot_0/4));for(let b=0;b<r;b++){let _=y.pick(b,null),A=Math.sqrt(_.get(0)**2+_.get(1)**2+_.get(2)**2+_.get(3)**2);Ce.divseq(_,A)}let g=(0,No.default)(new Float32Array(r*1),[r,1]);Ce.assign(g.pick(null,0),d.pick(null,u.opacity/4));let S=(Math.min(Math.max(e,0),3)+1)**2-1,w=[];for(let b=0;b<S;b++){let _=(0,No.default)(new Float32Array(r*3),[r,3]),A=b*3;Ce.assign(_.pick(null,0),d.pick(null,u[`f_rest_${A}`]/4)),Ce.assign(_.pick(null,1),d.pick(null,u[`f_rest_${A+1}`]/4)),Ce.assign(_.pick(null,2),d.pick(null,u[`f_rest_${A+2}`]/4)),w.push(_)}return new gr(i,a,r,f,m,w,g,h,y,e)}static async fromPLYFile(t,e=3){let r=await gr.loadFile(t);return gr.fromArrayBuffer(r,e)}static decodeHeader(t){let e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let h=new Uint8Array(t,r,i);o+=e.decode(h),r+=i;let m=r-i*2,y=new Uint8Array(t,Math.max(0,m),m>0?i*2:i);if(e.decode(y).includes("end_header"))break}let a=o.split(`
2613
+ `),s=0,l={},d={},c=0,u;for(let h=0;h<a.length;h++){let m=a[h].trim();if(m.startsWith("element vertex")){let y=m.match(/\d+/);y&&(s=parseInt(y[0]))}else if(m.startsWith("property")){let y=m.match(/(\w+)\s+(\w+)\s+(\w+)/);if(y){let g=y[2],x=y[3];l[x]=c,d[x]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(u={format:y[2],version:y[3]})}else if(m==="end_header")break}let p=o.indexOf("end_header")+10+1,f=new DataView(t,p);return{splatCount:s,vertexData:f,headerOffset:r,propertiesDesc:d,format:u}}};var Xn=class{constructor(t,e,r,o,i,a,s,l){this.config=t,this.xyz=e,this.scaling=r,this.color=o,this.opacity=i,this.harmonics=s,this.quaternion=a,this.variableChunkSize=l}get isDynamicChunks(){return this.variableChunkSize&&this.variableChunkSize.length>0}get nchunks(){return this.xyz.nchunks}get nsplats(){return this.xyz.length}get chunkSize(){return this.config.chunkSize}static compressFromGaussianData(t,e){let r=je.fromArray(t.xyz,e.xyz,e.chunkSize),o=je.fromArray(t.scaling,e.scaling,e.chunkSize),i=je.fromArray(t.colors,e.color,e.chunkSize),a=je.fromArray(t.opacity,e.opacity,e.chunkSize),s=je.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,d=[];if(e.harmonics)for(let c=0;c<l.length;c++){let u=je.fromArray(l[c],e.harmonics,e.chunkSize);d.push(u)}return new Xn(e,r,o,i,a,s,d)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=je.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],d=Math.floor(l/this.chunkSize);d in e?e[d].push(l):e[d]=[l]}else{let s=this.variableChunkSize,l={},d=0;for(let c=0;c<r;c++)l[c]=d,d+=s[c];for(let c=0;c<t.length;c++){let u=t[c],p=Math.min(Math.floor(u/o),r-1);for(;u>l[p]+s[p];)p--;p in e?e[p].push(u):e[p]=[u]}}return e}pruneSplats(t){let e=this._countIndexesInChunks(t),r,o=[];return e.length>0&&(r=this.variableChunkSize?[...this.variableChunkSize]:Array(this.nchunks).fill(this.chunkSize),e.forEach((i,a)=>{r[a]-=i.length,r[a]<=0&&o.push(a)}),r=r.filter(i=>i>0)),new Xn(this.config,this.xyz.pruneFeature(t,o,r),this.scaling.pruneFeature(t,o,r),this.color.pruneFeature(t,o,r),this.opacity.pruneFeature(t,o,r),this.quaternion.pruneFeature(t,o,r),this.harmonics?this.harmonics.map(i=>i.pruneFeature(t,o,this.variableChunkSize)):void 0,r)}static async loadConfig(t){return await(await fetch(t,{method:"GET",mode:"cors",headers:{Accept:"application/json"}})).json()}toGaussians(){let t={format:"binary_little_endian",version:"1.0"},e={},r=0;if(e.x={dtype:"float",index:r},r++,e.y={dtype:"float",index:r},r++,e.z={dtype:"float",index:r},r++,e.f_dc_0={dtype:"float",index:r},r++,e.f_dc_1={dtype:"float",index:r},r++,e.f_dc_2={dtype:"float",index:r},r++,this.harmonics&&this.harmonics.length>0)for(let a=0;a<this.harmonics.length;a++)e[`f_rest_${a}`]={dtype:"float",index:r},r++,e[`f_rest_${a+1}`]={dtype:"float",index:r},r++,e[`f_rest_${a+2}`]={dtype:"float",index:r},r++;e.opacity={dtype:"float",index:r},r++,e.scale_0={dtype:"float",index:r},r++,e.scale_1={dtype:"float",index:r},r++,e.scale_2={dtype:"float",index:r},r++,e.rot_0={dtype:"float",index:r},r++,e.rot_1={dtype:"float",index:r},r++,e.rot_2={dtype:"float",index:r},r++,e.rot_3={dtype:"float",index:r},r++;let o=this.harmonics?.map(a=>a.denormDequant());return new gr(e,t,this.xyz.length,this.xyz.denormDequant(),this.color.denormDequant(),o||[],this.opacity.denormDequant(),this.scaling.denormDequant(),this.quaternion.denormDequant(),3)}};var Kn=Rt(Ua()),ct=Rt(Ha());import{Matrix3 as Xp,Matrix4 as zI,Quaternion as kI}from"three";var yv={xyz:3,color:3,opacity:1,scaling:3,quaternion:4,harmonics:3},hn=class{constructor(t){this._buffer=t}get buffer(){return this._buffer}get decoded(){return this._decoded||(this._decoded=this.decodeBuffer()),this._decoded}get colorsA(){let t=.28209479177387814,e=this.decoded.color.denormDequant(),r=this.decoded.opacity.denormDequant(),o=(0,Kn.default)(new Float32Array(e.shape[0]*4),[e.shape[0],4]);return ct.mulseq(e,t),ct.addseq(e,.5),ct.mulseq(e,255),ct.maxseq(e,0),ct.minseq(e,255),ct.negeq(r),ct.expeq(r),ct.addseq(r,1),ct.recipeq(r),ct.mulseq(r,255),ct.assign(o.hi(e.shape[0],3).lo(0,0),e),ct.assign(o.hi(e.shape[0],4).lo(0,3),r),(0,Kn.default)(new Uint8Array(o.data),[e.shape[0],4]).data}get nsplats(){return this.decoded.nsplats}getSplatCount(){return this.decoded.nsplats}get precomputedCovarianceBufferData(){return this._precomputedCovarianceBufferData}decodeBuffer(){let{splatCount:t,chunkCount:e,chunkSize:r,typeChunks:o,vertexData:i,propertiesDesc:a}=this.decodeHeader(),s={xyz:a.xyz.compressionMethod,color:a.color.compressionMethod,opacity:a.opacity.compressionMethod,scaling:a.scaling.compressionMethod,quaternion:a.quaternion.compressionMethod,chunkSize:r};a.harmonics_0&&(s.harmonics=a.harmonics_0.compressionMethod);let l=i.byteOffset,d=Array(Object.keys(a).length);for(let g in a)d[a[g].index]={name:g,method:a[g].compressionMethod};let c=e*2*4,u=l,p=o==="dynamic"?e*2:0,f,h=!1;if(p>0){let g=new Uint16Array(i.buffer.slice(u,u+p));u+=p,f=Array.from(g),h=!0}let m={};for(let g of d){let x=0,S=!0;if(g.method==="norm8x")x=t*1*yv[g.name];else if(g.method==="norm11")x=t*4;else if(g.method==="norm565")x=t*2;else throw S=!1,new Error(`Not Implemented format: ${g.method}`);let w;if(S){let A=i.buffer.slice(u,u+c);w=(0,Kn.default)(new Float32Array(A),[e,2]),u+=c}else throw new Error("loading chunk byt hasnot minmax!");let b=i.buffer.slice(u,u+x);u+=x;let _;if(g.method==="norm8x")_=(0,Kn.default)(new Uint8Array(b),[t,yv[g.name]]);else if(g.method==="norm11")_=(0,Kn.default)(new Uint32Array(b));else if(g.method==="norm565")_=(0,Kn.default)(new Uint16Array(b));else throw new Error(`Not Implemented format: ${g.method}`);m[g.name]=new je(_,w,r,g.method,f,h)}let y=[];for(let g=0;g<15;g++){let x=m[`harmonics_${g}`];x&&(y.push(x),delete m[`harmonics_${g}`])}return y.length>0&&(m.harmonics=y),new Xn(s,m.xyz,m.scaling,m.color,m.opacity,m.quaternion,m.harmonics,f)}buildPreComputedBuffers(){let r=this.decoded,o=r.nsplats,i=new ArrayBuffer(24*o),a=new Float32Array(i),s=r.scaling.denormDequant(),l=r.quaternion.denormDequant(),d=new kI,c=new Xp,u=new Xp,p=new Xp,f=new zI;for(let h=0;h<o;h++){f.makeScale(Math.exp(s.get(h,0)),Math.exp(s.get(h,1)),Math.exp(s.get(h,2))),u.setFromMatrix4(f),d.set(l.get(h,0),l.get(h,1),l.get(h,2),l.get(h,3)),f.makeRotationFromQuaternion(d),c.setFromMatrix4(f),p.copy(c).multiply(u);let m=p.elements;a[6*h]=m[0]*m[0]+m[3]*m[3]+m[6]*m[6],a[6*h+1]=m[0]*m[1]+m[3]*m[4]+m[6]*m[7],a[6*h+2]=m[0]*m[2]+m[3]*m[5]+m[6]*m[8],a[6*h+3]=m[1]*m[1]+m[4]*m[4]+m[7]*m[7],a[6*h+4]=m[1]*m[2]+m[4]*m[5]+m[7]*m[8],a[6*h+5]=m[2]*m[2]+m[5]*m[5]+m[8]*m[8]}this._precomputedCovarianceBufferData=i}decodeHeader(){let t=this._buffer,e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let m=new Uint8Array(t,r,i);o+=e.decode(m),r+=i;let y=r-i*2,g=new Uint8Array(t,Math.max(0,y),y>=0?i*2:i);if(e.decode(g).includes("end_header"))break}let a=o.split(`
2614
+ `),s=0,l=0,d=0,c=0,u="",p={};for(let m=0;m<a.length;m++){let y=a[m].trim();if(y.startsWith("element vertex")){let g=y.match(/\d+/);g&&(s=parseInt(g[0]))}else if(y.startsWith("property")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);if(g){let x=g[2],S=g[3];p[x]={compressionMethod:S,index:c},c++}}else if(y.startsWith("element chunks")){let g=y.match(/\d+/);g&&(l=parseInt(g[0]))}else if(y.startsWith("element chunkSize")){let g=y.match(/\d+/);g&&(d=parseInt(g[0]))}else if(y.startsWith("element typeChunks")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);g&&(u=g[3])}else if(y==="end_header")break}let f=o.indexOf("end_header")+10+1,h=new DataView(t,f);return{splatCount:s,chunkCount:l,chunkSize:d,typeChunks:u,vertexData:h,propertiesDesc:p}}pruneSplats(t){let r=this.decodeBuffer().pruneSplats(t);return hn.fromCompressedGaussianSplats(r)}static fromCompressedGaussianSplats(t){let e=t.xyz.length,r=t.xyz.nchunks,o=`gspline
2615
+ element vertex ${e}
2616
+ element chunks ${r}
2617
+ element chunkSize ${t.chunkSize}
2618
+ element typeChunks ${t.isDynamicChunks?"dynamic":"static"}
2619
+ property xyz ${t.xyz.method}
2620
+ property color ${t.color.method}
2621
+ property opacity ${t.opacity.method}
2622
+ property scaling ${t.scaling.method}
2623
+ property quaternion ${t.quaternion.method}`;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)o=`${o}
2624
+ property harmonics_${M} ${t.harmonics[M].method}`;o=`${o}
2625
+ end_header
2626
+ `;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,d=t.xyz instanceof je?s:0,c=t.color.quantized.data.buffer.byteLength,u=t.color instanceof je?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof je?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof je?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof je?s:0,x=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,S=x?x.byteLength:0,w=a.byteLength+S+l+d+c+u+p+f+h+m+y+g,b=0,_=0;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)b+=t.harmonics[M].quantized.data.buffer.byteLength,_+=t.harmonics[M]instanceof je?s:0;b=0,_=0,w+=b+_;let A=new Uint8Array(w),v=0;if(A.set(a,v),v+=a.byteLength,S>0&&(A.set(new Uint8Array(x.buffer),v),v+=S),t.xyz instanceof je&&(A.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.xyz.quantized.data.buffer),v),v+=l,t.color instanceof je&&(A.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.color.quantized.data.buffer),v),v+=c,t.opacity instanceof je&&(A.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.opacity.quantized.data.buffer),v),v+=p,t.scaling instanceof je&&(A.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.scaling.quantized.data.buffer),v),v+=h,t.quaternion instanceof je&&(A.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.quaternion.quantized.data.buffer),v),v+=y,b>0&&t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++){let O=t.harmonics[M];O instanceof je&&(A.set(new Uint8Array(O.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(O.quantized.data.buffer),v),v+=O.quantized.data.byteLength}return new hn(A.buffer)}};var gv="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAEXA2AAAGAMf39/f399fX1/f39/AGAAAX8CEgEDZW52Bm1lbW9yeQIDAICABAMEAwABAgc5AxFfX3dhc21fY2FsbF9jdG9ycwAAC3NvcnRJbmRleGVzAAETZW1zY3JpcHRlbl90bHNfaW5pdAACCrsEAwMAAQuvBAIDfwF9AkAgCUUEQCACIAtBAnRqIQEgCLNDAACAr5QhBUH4////ByENDAELIAMqAighBSADKgIYIQYgAyoCCCEHQfj///8HIQ1BiICAgHghDgNAIAIgDEECdGoCfyAHIAEgDEEMbGoiAyoCAJQgBiADKgIElJIgBSADKgIIlJJDAADIQpQiD4tDAAAAT10EQCAPqAwBC0GAgICAeAsiAzYCACADIA0gAyANSBshDSADIA4gAyAOShshDiAMQQFqIgwgCUcNAAsgAiALQQJ0aiEBIAizIA6yIA2yk5UhBSAJRQ0AQQAhAwNAIAECfyAFIAIgA0ECdGooAgAgDWuylCIGi0MAAABPXQRAIAaoDAELQYCAgIB4C0ECdGoiDCAMKAIAQQFqNgIAIANBAWoiAyAJRw0ACwsgCEECTwRAIAIgC0ECdGohDiABKAIAIQxBASEDA0AgDiADQQJ0aiIBIAEoAgAgDGoiDDYCACADQQFqIgMgCEcNAAsLIAkgCkEBayIDTARAA0AgBCADQQJ0IgFqIAAgAWooAgA2AgAgA0EBayIDIAlODQALCyAJQQBKBEAgAiALQQJ0aiEDIAlBAWsiCCEMA0AgBCAIIAMCfyAFIAIgDCIBQQJ0IglqKAIAIA1rspQiBotDAAAAT10EQCAGqAwBC0GAgICAeAtBAnRqIgooAgBBAWsiC2tBAnRqIAAgCWooAgA2AgAgCiALNgIAIAFBAWshDCABDQALCwsEAEEACw==";var co=class{};yt(co,"DepthMapRange",1<<16),yt(co,"MemoryPageSize",65536),yt(co,"BytesPerFloat",4),yt(co,"BytesPerInt",4);function FI(n){let t,e,r,o,i,a,s,l,d,c,u,p,f,h,m,y;function g(T,C){let P=performance.now();u||(u=new Uint32Array(p.DepthMapRange));let I=new Float32Array(d,a,16);for(let B=0;B<16;B++)I[B]=T[B];new Uint32Array(d,l+e*4,p.DepthMapRange).set(u),t.exports.sortIndexes(o,i,l,a,s,C[0],C[1],C[2],p.DepthMapRange,r,r,e);let R=performance.now(),D=new Uint32Array(r),z=D.buffer;D.set(new Uint32Array(d,s,r)),n.postMessage({sortDone:!0,splatSortCount:r,splatRenderCount:r,sortTime:R-P,indexesBuffer:z},[z])}function x(T,C,P){let I=new Float32Array(d,i,e*3);r=0;let E=new Uint32Array(d,o,e);for(let R=0;R<P.length-1;R++){let D=C[R],z=T[R].elements,B;D?.length>0&&(B=D.map(V=>V.type==="Box"?_(V):M(V)));for(let V=P[R];V<P[R+1];V++){let j=f[V*3],H=f[V*3+1],X=f[V*3+2];if(!B||w(j,H,X,B)){let $=1/(z[3]*j+z[7]*H+z[11]*X+z[15]);I[r*3]=(z[0]*j+z[4]*H+z[8]*X+z[12])*$,I[r*3+1]=(z[1]*j+z[5]*H+z[9]*X+z[13])*$,I[r*3+2]=(z[2]*j+z[6]*H+z[10]*X+z[14])*$,E[r]=V,r++}}}}function S(T,C){let P=[],I;C?.length>0&&(I=C.map(R=>R.type==="Box"?_(R):M(R)));let E=T.length;for(let R=0;R<E;R+=3){let D=T[R],z=T[R+1],B=T[R+2];w(D,z,B,I)===!1&&P.push(R/3)}return P}function w(T,C,P,I,E){return I[E==="Intersect"?"every":"some"](R=>{let D=b(T,C,P,R.invRotationMatrix,R.cropCenter);return Array.isArray(R)?v(D.x,D.y,D.z,R):O(D.x,D.y,D.z,R)})}function b(T,C,P,I,E){let R=T-E[0],D=C-E[1],z=P-E[2],B=1/(I[3]*R+I[7]*D+I[11]*z+I[15]);return{x:(I[0]*R+I[4]*D+I[8]*z+I[12])*B+E[0],y:(I[1]*R+I[5]*D+I[9]*z+I[13])*B+E[1],z:(I[2]*R+I[6]*D+I[10]*z+I[14])*B+E[2]}}function _(T){let C=T.cropSize[0]/2,P=T.cropSize[1]/2,I=T.cropSize[2]/2,E=[T.cropCenter[0]-C,T.cropCenter[1]-P,T.cropCenter[2]-I,T.cropCenter[0]+C,T.cropCenter[1]+P,T.cropCenter[2]+I],R=A(T.cropRotation);return Object.assign(E,{invRotationMatrix:R,cropCenter:T.cropCenter})}function A(T){let C=[],P=T[0]*Math.PI/180,I=T[1]*Math.PI/180,E=T[2]*Math.PI/180,R=Math.cos(P),D=Math.sin(P),z=Math.cos(I),B=Math.sin(I),V=Math.cos(E),j=Math.sin(E),H=R*V,X=R*j,$=D*V,W=D*j;return C[0]=z*V,C[1]=-z*j,C[2]=B,C[4]=X+$*B,C[5]=H-W*B,C[6]=-D*z,C[8]=W-H*B,C[9]=$+X*B,C[10]=R*z,C[12]=0,C[13]=0,C[14]=0,C[3]=0,C[7]=0,C[11]=0,C[15]=1,C}function v(T,C,P,I){return T>=I[0]&&T<=I[3]&&C>=I[1]&&C<=I[4]&&P>=I[2]&&P<=I[5]}function M(T){let C=2/T.cropSize[0],P=2/T.cropSize[1],I=2/T.cropSize[2],E=A(T.cropRotation);return{invRadiusX:C,invRadiusY:P,invRadiusZ:I,cropCenter:T.cropCenter,invRotationMatrix:E}}function O(T,C,P,I){let E=(T-I.cropCenter[0])*I.invRadiusX,R=(C-I.cropCenter[1])*I.invRadiusY,D=(P-I.cropCenter[2])*I.invRadiusZ;return E*E+R*R+D*D<=1}n.onmessage=T=>{if(T.data.getCroppedIndexes){let C=new Uint32Array(S(new Float32Array(T.data.positions),T.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:C},[C])}else if(T.data.positions)c=T.data.positions,f=new Float32Array(c),m=T.data.meshMatrixWorlds,y=T.data.cropsArray,h=T.data.meshIndexIntervals,x(m,y,h),n.postMessage({sortSetupComplete:!0});else if(T.data.sort||T.data.newMatrixWorlds||T.data.newCropsArray)(T.data.newMatrixWorlds||T.data.newCropsArray)&&(y=T.data.newCropsArray||y,m=T.data.newMatrixWorlds||m,x(m,y,h)),g(T.data.sort.view,T.data.sort.cameraPosition);else if(T.data.init){p=T.data.init.Constants,e=T.data.init.splatCount;let C=p.BytesPerInt,P=p.BytesPerFloat*3,I=new Uint8Array(T.data.init.sorterWasmBytes),E=C+P,R=e*E,D=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,z=p.MemoryPageSize*32,B=R+D+z,V=Math.floor(B/p.MemoryPageSize)+1,j={module:{},env:{memory:new WebAssembly.Memory({initial:V*2,maximum:V*3,shared:!0})}};WebAssembly.compile(I).then(H=>WebAssembly.instantiate(H,j)).then(H=>{t=H,o=0,i=e*C,a=i+e*P,l=a+16*p.BytesPerFloat,s=l+e*p.BytesPerInt+p.DepthMapRange*p.BytesPerInt*2,d=j.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function xv(n){let t=new Worker(URL.createObjectURL(new Blob(["(",FI.toString(),")(self)"],{type:"application/javascript"}))),e=atob(gv),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:n,Constants:{BytesPerFloat:co.BytesPerFloat,BytesPerInt:co.BytesPerInt,DepthMapRange:co.DepthMapRange,MemoryPageSize:co.MemoryPageSize}}}),t}import{Matrix4 as oN,Quaternion as wv,Vector2 as nN,Vector3 as qa}from"three";import{BufferAttribute as jI,BufferGeometry as UI,Color as HI,DataTexture as pu,DataUtils as qI,DoubleSide as WI,DynamicDrawUsage as $I,FloatType as bv,HalfFloatType as YI,InstancedBufferAttribute as XI,InstancedBufferGeometry as KI,Mesh as QI,NormalBlending as ZI,RGBAFormat as JI,RGBAIntegerFormat as eN,RGFormat as Sv,ShaderMaterial as tN,UnsignedIntType as rN,Vector2 as mn}from"three";var du=function(){let n=new Float32Array(1),t=new Int32Array(n.buffer);return function(e){return n[0]=e,t[0]}}(),vv=function(n,t,e,r){return n+(t<<8)+(e<<16)+(r<<24)};var fu=new mn,yn=class extends QI{constructor(e,r,o,i,a=!1,s=1,l,d){super(o,i);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=d,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,i=1,a,s){let l=yn.buildGeomtery(r),d=yn.buildMaterial(a);return new yn(e,r,l,d,o,i,a,s)}static buildMaterial(e){let r=`
2627
+ precision highp float;
2628
+ #include <common>
2629
+
2630
+ attribute uint splatIndex;
2631
+
2632
+ uniform highp sampler2D covariancesTexture;
2633
+ uniform highp usampler2D centersColorsTexture;
2634
+ uniform vec2 focal;
2635
+ uniform vec2 viewport;
2636
+ uniform vec2 basisViewport;
2637
+ uniform vec2 covariancesTextureSize;
2638
+ uniform vec2 centersColorsTextureSize;
2639
+ uniform highp sampler2D meshMatrixWorldsTexture;
2640
+ uniform uint meshIndexIntervals[257];
2641
+ uniform float orthoZoom;
2642
+
2643
+ varying vec4 vColor;
2644
+ varying vec2 vUv;
2645
+
2646
+ varying vec2 vPosition;
2647
+
2648
+ const vec4 encodeNorm4 = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0);
2649
+ const uvec4 mask4 = uvec4(uint(0x000000FF), uint(0x0000FF00), uint(0x00FF0000), uint(0xFF000000));
2650
+ const uvec4 shift4 = uvec4(0, 8, 16, 24);
2651
+ vec4 uintToRGBAVec (uint u) {
2652
+ uvec4 urgba = mask4 & u;
2653
+ urgba = urgba >> shift4;
2654
+ vec4 rgba = vec4(urgba) * encodeNorm4;
2655
+ return rgba;
2656
+ }
2657
+
2658
+ vec2 getDataUV(in int stride, in int offset, in vec2 dimensions) {
2659
+ vec2 samplerUV = vec2(0.0, 0.0);
2660
+ float d = float(splatIndex * uint(stride) + uint(offset)) / dimensions.x;
2661
+ samplerUV.y = float(floor(d)) / dimensions.y;
2662
+ samplerUV.x = fract(d);
2663
+ return samplerUV;
2664
+ }
2665
+
2666
+ void main () {
2667
+ uvec4 sampledCenterColor = texture(centersColorsTexture, getDataUV(1, 0, centersColorsTextureSize));
2668
+ vec3 splatCenter = uintBitsToFloat(uvec3(sampledCenterColor.gba));
2669
+ vColor = uintToRGBAVec(sampledCenterColor.r);
2670
+
2671
+ vPosition = position.xy * 2.0;
2672
+
2673
+ uint meshIndex;
2674
+ for (int i = 1; i < 257; i++) {
2675
+ if (splatIndex < meshIndexIntervals[i]) {
2676
+ meshIndex = uint(i - 1);
2677
+ break;
2678
+ }
2679
+ }
2680
+
2681
+ float strideMulmeshIndex = float(4u*meshIndex);
2682
+ float meshMatrixWorldsTextureLength = float(256*4);
2683
+
2684
+ mat4 modelMat = mat4(
2685
+ texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+0.0)/meshMatrixWorldsTextureLength, 0)),
2686
+ texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+1.0)/meshMatrixWorldsTextureLength, 0)),
2687
+ texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+2.0)/meshMatrixWorldsTextureLength, 0)),
2688
+ texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+3.0)/meshMatrixWorldsTextureLength, 0))
2689
+ );
2690
+ mat4 modelViewMat = viewMatrix * modelMat;
2691
+ vec4 viewCenter = modelViewMat * vec4(splatCenter, 1.0);
2692
+ vec4 clipCenter = projectionMatrix * viewCenter;
2693
+
2694
+ vec2 sampledCovarianceA = texture(covariancesTexture, getDataUV(3, 0, covariancesTextureSize)).rg;
2695
+ vec2 sampledCovarianceB = texture(covariancesTexture, getDataUV(3, 1, covariancesTextureSize)).rg;
2696
+ vec2 sampledCovarianceC = texture(covariancesTexture, getDataUV(3, 2, covariancesTextureSize)).rg;
2697
+
2698
+ vec3 cov3D_M11_M12_M13 = vec3(sampledCovarianceA.rg, sampledCovarianceB.r);
2699
+ vec3 cov3D_M22_M23_M33 = vec3(sampledCovarianceB.g, sampledCovarianceC.rg);
2700
+
2701
+ // Compute the 2D covariance matrix from the upper-right portion of the 3D covariance matrix
2702
+ mat3 Vrk = mat3(
2703
+ cov3D_M11_M12_M13.x, cov3D_M11_M12_M13.y, cov3D_M11_M12_M13.z,
2704
+ cov3D_M11_M12_M13.y, cov3D_M22_M23_M33.x, cov3D_M22_M23_M33.y,
2705
+ cov3D_M11_M12_M13.z, cov3D_M22_M23_M33.y, cov3D_M22_M23_M33.z
2706
+ );
2707
+ float s = 1.0 / (viewCenter.z * viewCenter.z);
2708
+
2709
+ mat3 W = transpose(mat3(modelViewMat));
2710
+ mat3 T = orthoZoom > 0.0 ? W : W * mat3(
2711
+ focal.x / viewCenter.z, 0., -(focal.x * viewCenter.x) * s,
2712
+ 0., focal.y / viewCenter.z, -(focal.y * viewCenter.y) * s,
2713
+ 0., 0., 0.
2714
+ );
2715
+ mat3 cov2Dm = transpose(T) * Vrk * T;
2716
+ cov2Dm[0][0] += 0.3;
2717
+ cov2Dm[1][1] += 0.3;
2718
+
2719
+ // We are interested in the upper-left 2x2 portion of the projected 3D covariance matrix because
2720
+ // we only care about the X and Y values. We want the X-diagonal, cov2Dm[0][0],
2721
+ // the Y-diagonal, cov2Dm[1][1], and the correlation between the two cov2Dm[0][1]. We don't
2722
+ // need cov2Dm[1][0] because it is a symetric matrix.
2723
+ vec3 cov2Dv = vec3(cov2Dm[0][0], cov2Dm[0][1], cov2Dm[1][1]);
2724
+
2725
+ vec3 ndcCenter = clipCenter.xyz / clipCenter.w;
2726
+
2727
+ // We now need to solve for the eigen-values and eigen vectors of the 2D covariance matrix
2728
+ // so that we can determine the 2D basis for the splat. This is done using the method described
2729
+ // here: https://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html
2730
+ //
2731
+ // This is a different approach than in the original work at INRIA. In that work they compute the
2732
+ // max extents of the 2D covariance matrix in screen space to form an axis aligned bounding rectangle
2733
+ // which forms the geometry that is actually rasterized. They then use the inverse 2D covariance
2734
+ // matrix (called 'conic') to determine fragment opacity.
2735
+ float a = cov2Dv.x;
2736
+ float d = cov2Dv.z;
2737
+ float b = cov2Dv.y;
2738
+ float D = a * d - b * b;
2739
+ float trace = a + d;
2740
+ float traceOver2 = 0.5 * trace;
2741
+ float term2 = sqrt(trace * trace / 4.0 - D);
2742
+ float eigenValue1 = traceOver2 + term2;
2743
+ float eigenValue2 = max(traceOver2 - term2, 0.01);
2744
+
2745
+ const float maxSplatSize = 1024.0;
2746
+ vec2 eigenVector1 = normalize(vec2(b, eigenValue1 - a));
2747
+ // since the eigen vectors are orthogonal, we derive the second one from the first
2748
+ vec2 eigenVector2 = vec2(eigenVector1.y, -eigenVector1.x);
2749
+ vec2 basisVector1 = eigenVector1 * min(sqrt(2.0 * eigenValue1), maxSplatSize);
2750
+ vec2 basisVector2 = eigenVector2 * min(sqrt(2.0 * eigenValue2), maxSplatSize);
2751
+
2752
+ vec2 ndcOffset = vec2(vPosition.x * basisVector1 + vPosition.y * basisVector2) * basisViewport;
2753
+
2754
+ if (orthoZoom > 0.0) {
2755
+ ndcOffset *= orthoZoom;
2756
+ }
2757
+
2758
+ gl_Position = vec4(ndcCenter.xy + ndcOffset, ndcCenter.z, 1.0);
2759
+ }`,o=`
2760
+ precision highp float;
2761
+ #include <common>
2762
+
2763
+ uniform vec3 debugColor;
2764
+
2765
+ varying vec4 vColor;
2766
+ varying vec2 vUv;
2767
+
2768
+ varying vec2 vPosition;
2769
+ layout(location = 1) out vec4 gVelocity;
2770
+
2771
+ void main () {
2772
+ // compute the negative squared distance from the center of the splat to the
2773
+ // current fragment in the splat's local space.
2774
+ float A = -dot(vPosition, vPosition);
2775
+ if (A < -4.0) discard;
2776
+ vec3 color = vColor.rgb;
2777
+ A = exp(A) * vColor.a;
2778
+ gl_FragColor = vec4(color.rgb, A);
2779
+ gVelocity = vec4(0.0); // so it is ignored by TAA
2780
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new mn},viewport:{type:"v2",value:new mn},basisViewport:{type:"v2",value:new mn},debugColor:{type:"v3",value:new HI},covariancesTextureSize:{type:"v2",value:new mn(1024,1024)},centersColorsTextureSize:{type:"v2",value:new mn(1024,1024)},orthoZoom:{type:"f",value:-1}};return new tN({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:ZI,depthTest:!0,depthWrite:!1,side:WI})}static buildGeomtery(e){let r=new UI;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new jI(o,3);r.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new KI().copy(r),s=new Uint32Array(e),l=new XI(s,1,!1);return l.setUsage($I),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(i.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new mn(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new mn(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=qI.toHalfFloat(this.covariances[h]);s=new pu(l,i.x,i.y,Sv,YI)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new pu(l,i.x,i.y,Sv,bv);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let d=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;d[g]=vv(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),d[g+1]=du(this.centers[y]),d[g+2]=du(this.centers[y+1]),d[g+3]=du(this.centers[y+2])}let c=new pu(d,a.x,a.y,eN,rN);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let u=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new pu(p,u,1,JI,bv);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:d,texture:c,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e,r){let o=this.geometry;o.attributes.splatIndex.set(e),o.attributes.splatIndex.needsUpdate=!0,o.instanceCount=r}updateUniforms(e,r,o,i){this.splatCount>0&&(fu.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(fu),this.material.uniforms.basisViewport.value.set(2/fu.x,2/fu.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}};var Hs=class{constructor(t={}){yt(this,"updateSplatMeshUniforms",function(){let t=new nN;return function(){if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(this.renderer.getSize(t),this.cameraFocalLengthX=this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,this.camera.isPerspectiveCamera?-1:this.camera.zoom*this.devicePixelRatio))}}());yt(this,"updateView",function(){let t=new oN,e=[],r=new qa(0,0,-1),o=new qa(0,0,-1),i=new qa,a=new qa;return function(s=!1,l=!1){let d=this.updateMatrixWorldsInWorkerIfNeeded(),c=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let p=!1,f=!1;if(o.dot(r)<=.95&&(p=!0),a.copy(this.camera.position).sub(i).length()>=1&&(f=!0),!p&&!f&&!d&&!c)return}i.copy(this.camera.position),r.copy(o),t.copy(this.camera.matrixWorld).invert(),t.premultiply(this.camera.perspCamera.projectionMatrix),e[0]=this.camera.position.x,e[1]=this.camera.position.y,e[2]=this.camera.position.z;let u={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...d?{newMatrixWorlds:this.meshMatrixWorlds}:{},...c?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=u:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(u))}}());this.scene=t.scene,this.currentPage=null,this.renderer=t.renderer,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.splatRenderingInitialized=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null}get camera(){return this.scene.activeCamera}reloadSplats(){this.splatRenderingInitialized=!1;let t=this.loadSplat();this.renderer.pipeline.opaquePass.splatViewer=t?this:null}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new qa().fromArray(t.position)),t.orientation&&(t.orientation=new wv().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseEntity(a=>{if(a.data.type==="Splat"){let s=a.visible;a.traverseAncestors(l=>{s&&(s=l.visible)}),s&&e.push(a)}}),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new hn(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of r)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[r][i]===void 0?(t=!0,this.cropsArray[r][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,d)=>l!==this.cropsArray[r][i][a][d])?(t=!0,this.cropsArray[r][i][a]=s):s!==this.cropsArray[r][i]?.[a]&&(t=!0,this.cropsArray[r][i][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new qa,o=new wv,i=!1,a=1,s,l){this.splatMesh=yn.buildMesh(t,e,i,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=10,this.updateSplatMeshUniforms(),this.splatRenderCount=e}setupSortWorker(t){this.sortWorker=xv(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer),e.data.splatRenderCount),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.updateView(!0,!0),this.splatRenderingInitialized=!0)}}update(){this.splatRenderingInitialized!==!1&&(this.updateSplatMeshUniforms(),this.updateView())}getSplatMesh(){return this.splatMesh}};var dN=new cN;dN.wireframe=!0;var _v=new aN,hu=class extends iN{constructor(e,r){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.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new lu;this.errorPage=new dn("fdasfa",{...xo.defaultData,name:""});this.invisibleObjects=new un("jflkdsafjasdifjaslk",{...$l.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Fx(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=kx(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=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 r=this.find(e);if(r===void 0)return;let o=[],i=r;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(i)}return r.sort((o,i)=>ef(o.sortKey,i.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)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===Uo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.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(r=>{this.toExpandCloner.add(r)})}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,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){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,r);i.updateVisible(),i.resetBBoxNeedsUpdate(),cn(i)&&Va(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}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),Va(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),cn(o)&&(o.freeBooleanPointer(),i instanceof yr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof ja&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}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(),Va(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof yr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}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 r of this.children)r instanceof dn&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,i){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{Vx(a,r,o,{scene:this,shared:i}),a instanceof st&&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,r){let o=Object.entries(r.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:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(i=>{Va(i)&&i.recomputeBoolean(),i instanceof Mo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ae.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Ae.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let d=i.find(e);d&&d!==i&&a.forInstancesRec(c=>{c.data=Vo(c.data,u=>{let p=u.events.data(l.id),f=c.goUp(s);if(f){let h=[...$s(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=ot.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Io&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=Vo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ql.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,r,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,r,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,r,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,r,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,r,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,r,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,r,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,r,o,i)})}),!0})}expandInstances(e,r,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof Io&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),iu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Io&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)Ae.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Ae.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let d=[];if(e.intersectObject(s,!0,d),d.length){let c=d[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let u=s.matrixWorld.clone().invert();c.point.applyMatrix4(u),o.push(c)}}else(cn(s)||zs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),Us(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Ae.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||zs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),Us(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Ae.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Ae.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Ae.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof st&&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,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Va(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)Gi.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Ae.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,i,a,s){let l={scene:this,shared:s},d=su(e,r,l);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(a,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,s)),d.updateState(r,l),d instanceof st&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&d.traverseEntity(c=>{if(c instanceof st&&c.isSkinnedMesh){let u=c.dataPatched;if(u.bones&&u.boneInverses){let p=u.bones.map(m=>this.find(m)),f=u.boneInverses.map(m=>new sN().fromArray(m)),h=new uN(p,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0}),d}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],d=this.find(s),c=l?d.recursiveBBox:d.singleBBox;r.push(...c.vertices)}let o=new lN;return o.setFromPoints(r),o.getCenter(_v),_v}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Zt&&e(r.material[o]);else r.material instanceof Zt&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof Mo&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new Hs({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};import{DRACOLoader as pN}from"three/examples/jsm/loaders/DRACOLoader.js";var gn;function fN(){return gn||(gn=new pN,gn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),gn.decoderPending}async function hN(n){if(gn){let t={attributeIDs:gn.defaultAttributeIDs,attributeTypes:gn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await gn.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Av(n,t){let[e,r]=Pu(Bl.deserialize(new Uint8Array(n)));ec(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 fN();for(let i of o){let a=await hN(Ye(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:l,array:d,itemSize:c})=>{s[l]={array:d,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{Mesh as zne}from"three";import{mergeBufferGeometries as jne}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Tv(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as Cv,ShaderLib as mN}from"three";function Pv(n){let t=new Set;return n.traverse(e=>{if(e instanceof Jt)if(Ze(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(yN(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Cv,specularColor:new Cv});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},mN.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=O0(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else gN(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function yN(n){return n.getLayersOfType("transmission").length>0}function gN(n){let t=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&&(t+=(1-t)*o.value)}}return t<1}function Ov(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Mv(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let a=r;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))}}t.push(r.name)}),n}import{mergeBufferGeometries as xN}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Iv(n){let t=[];return n.traverse(e=>{e instanceof Da&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(d){console.error(d)}return l!==void 0&&s.matrix.determinant()<0&&Tv(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=xN(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:q0})}),n}function Nv(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Ev(n){Object.values(n.shared.materials).forEach(t=>{Kp(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Kp(e.material):"materials"in e&&e.materials.forEach(r=>{Kp(r)})})}function Kp(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Vv=Rt(Lv(),1);function Bv(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var Rv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Qp=class extends bN{load(t,e,r,o=console.error){let i=new vN(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Rv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Rv),i.load(t,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)}},r,o)}async parse(t){let e=await Av(t,Ev);e.version&&(0,Vv.default)(e.version,"0.9.498")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([J0(e)&&i0(),ux(e)&&j0()].filter(Boolean));let r=new jn(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new hu(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=Iv(o),o=Pv(o),o=Ov(o),o=Mv(o),o=Nv(o),o=Bv(o),o}};export{Qp as default};