@splinetool/loader 0.9.253 → 0.9.255

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,10 +1,10 @@
1
- var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDescriptor;var Dg=Object.getOwnPropertyNames;var Gg=Object.getPrototypeOf,Rg=Object.prototype.hasOwnProperty;var Ms=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Vg=(n,r)=>{for(var e in r)zl(n,e,{get:r[e],enumerable:!0})},jg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Dg(r))!Rg.call(n,o)&&o!==e&&zl(n,o,{get:()=>r[o],enumerable:!(t=Bg(r,o))||t.enumerable});return n};var Ls=(n,r,e)=>(e=n!=null?Lg(Gg(n)):{},jg(r||!n||!n.__esModule?zl(e,"default",{value:n,enumerable:!0}):e,n));var wm=Ms((gc,Sm)=>{(function(n,r){typeof gc=="object"?Sm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(gc,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,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var u=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|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,s]},u.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[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 s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Am=Ms((Va,Om)=>{(function(n,r){typeof Va=="object"&&typeof Om<"u"?r(Va):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Va,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 s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,w=r.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],T=[],_=e==="f"?w:v,x=h=p=0;x<w;x++)b[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var C,P=new Array(v).fill(0);for(x=0;x<w;x++)for(s=0;s<v;s++)b[x][s]=r[x][s];for(x=0;x<v;x++){for(S[x]=p,m=0,c=x+1,s=x;s<w;s++)m+=Math.pow(b[s][x],2);if(m<i)p=0;else for(f=(d=b[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<w;l++)m+=b[l][x]*b[l][s];for(d=m/f,l=x;l<w;l++)b[l][s]=b[l][s]+d*b[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(b[x][s],2);if(m<i)p=0;else{for(f=(d=b[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[x][x+1]=d-p,s=c;s<v;s++)S[s]=b[x][s]/f;for(s=c;s<w;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[x][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(y=Math.abs(P[x])+Math.abs(S[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=b[x][x+1]*p,s=c;s<v;s++)T[s][x]=b[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=S[x],c=x}if(e){if(e==="f")for(x=v;x<w;x++){for(s=v;s<w;s++)b[x][s]=0;b[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)b[x][s]=0;if(p!==0){for(f=b[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<w;l++)m+=b[l][x]*b[l][s];for(d=m/f,l=x;l<w;l++)b[l][s]=b[l][s]+d*b[l][x]}for(s=x;s<w;s++)b[s][x]=b[s][x]/p}else for(s=x;s<w;s++)b[s][x]=0;b[x][x]=b[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*S[x],S[x]=a*S[x],!(Math.abs(d)<=o));x++)if(p=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[x]),m=-d/f,e)for(s=0;s<w;s++)y=b[s][u],g=b[s][x],b[s][u]=y*a+g*m,b[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[l-1])-g)*(y+g)+((p=S[l-1])-(f=S[l]))*(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,x=c+(m=a=1);x<l+1;x++){if(p=S[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(S[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<w;s++)y=b[s][x-1],g=b[s][x],b[s][x-1]=y*a+g*m,b[s][x]=-y*m+g*a}S[c]=0,S[l]=d,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:b,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var uy=Ms(bl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,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*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?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=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._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\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._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:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&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$/,"")},a},_unlockAudio:function(){var a=this||r;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var w=0;w<a._howls.length;w++)a._howls[w]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._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(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!r.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.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 a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],typeof m!="string"){a._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=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__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?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,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 v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),w=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),S=w*1e3/Math.abs(y._rate),b=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=b,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var O=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(O,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,w):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,w),S!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),S)),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(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var O=x.play();if(O&&typeof Promise<"u"&&(O instanceof Promise||typeof O.then=="function")?(p._playLock=!0,_(),O.then(function(){p._playLock=!1,x._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)),x.playbackRate=y._rate,x.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}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),S):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(V){p._emit("playerror",y._id,V)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)P();else{p._playLock=!0,p._state="loading";var A=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,A,!1)};x.addEventListener(r._canPlayEvent,A,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),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(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),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(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;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=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._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(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,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 v=r.ctx.currentTime,w=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,w)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,w=Math.abs(v/.01),S=Math.max(4,w>0?f/w:f),b=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-b)/f;b=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},S)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._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,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._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(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),w=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,S=w*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),S)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._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"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var w=function(){a._playLock?setTimeout(w,0):v()};setTimeout(w,0)}else v()}else if(a._webAudio){var S=a.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+S*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);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(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._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,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],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(a)f["_on"+a]=[];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(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,d=a._parent;d._duration=Math.ceil(a._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()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);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);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,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(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._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 a=/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(a&&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 bl<"u"&&(bl.Howler=r,bl.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,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._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,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return l},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),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._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 s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);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 s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);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 s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),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 _g=Ms((_X,wg)=>{wg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});import{FileLoader as pA,Loader as fA}from"three";var Ie=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,Ie.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:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,Ie.prototype),{data:l,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,Ie.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function vi(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"&&vi(t)}return Object.freeze(n)}function tu(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 qo=class extends Error{};function Bs(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ar(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 s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function $o(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 ru(){return typeof process<"u"}function ou(n,r){for(let e of n)r(e.id,e.data)!==!0&&ou(e.children,r)}function nu(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)nu(e,r)}var ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(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}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&&nu(o,t)}}traverse(e){ou(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),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,ze.prototype);let s=i;return s.fillCaches(),s}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:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{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),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,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 qo("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:l,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(s=>s.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(s=>s.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)=>tu(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),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,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 ar(0,o,o);{let s=i[0].fi;return ar(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return ar(c,c+o,o)}else return ar(s.fi,l.fi,o)}}};var Yo;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Yo||(Yo={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(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,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return ru()||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,s=this,l={fi:t,id:o,data:i};return s=[...s,l],s.sort((u,a)=>u.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),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 s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((a,d)=>a.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,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 ar(0,t,t);{let i=o[0].fi;return ar(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return ar(l,l+t,t)}else return ar(i.fi,s.fi,t)}}};function Xo(n){return n&&typeof n=="object"&&n instanceof Be}var Be=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&&!Xo(t))return null;o+=1}t=t?Bs(t):new Be;for(let[c,u]of Object.entries(r.props)){let a=t[c];i[c]=a,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=Bs(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Bs(c);u[r.path[o-1]]=t,t=u}else{let u=new Be;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Be.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Er;(t=>{function n(o,i){return bi(o,i)??o}t.apply=n;function r(o,i){return kl(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=dt.zoomOnce(c,l[s]),c===void 0)return i;if(!Xo(c))return;s+=1}if(c===void 0)return i;if(!!Xo(c))if(i.type===0){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Ul([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Er||(Er={}));function Ul(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Ul(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function Fg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function bi(n,r){if(!Xo(r))return r;if(n instanceof ze){let e=Ul(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Fg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=bi(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Be)return kl(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=bi(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function kl(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Xo(r))return r;if(!Xo(n))return Er.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 Be;for(let o of e){let i=kl(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function iu(n,r){let e={cur:[],result:[],len:0};return n=Si(n,r,e)??n,[n,e.result]}function Ds(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Gs(n){n&&(n.len-=1)}function zg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function su(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,Ds(e,s));Gs(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=su(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function Ug(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,Ds(e,s));return Gs(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Si(n,r,e){if(n instanceof ze){let t=su(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return Ug(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Si(i,r,Ds(e,s));return Gs(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!$o(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Si(s,r,Ds(e,i));Gs(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");zg(e)}return t}else return}}var Rs;(r=>{function n(e,t){let o=dt.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Rs||(Rs={}));var tt;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function r(c,u){return e(c,u)?.data??c}l.applySimple=r;function e(c,u){let a=u.path;for(var d=[];;){let p;if(c instanceof Be&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),d.length===a.length&&(c instanceof ze||c instanceof he||c instanceof Ie?p=c.runOp(u):p=Yo.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ie){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Be){let w={...v,[g]:h};h=Object.setPrototypeOf(w,Be.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let w=h;h=[...v],h[g]=w}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof ze){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}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return t(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(tt||(tt={}));var Hl;(c=>{function n(){return[]}c.empty=n;function r(u,a){let d=[];for(let p of u){let[f,...m]=p.path;f===a&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,a){return u.map(d=>({...d,path:[a,...d.path]}))}c.addPrefix=e;function t(u,a){return[...u,...a]}c.concat=t;function o(u,a){return[...u.filter(p=>!a.some(f=>tt.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>tt.commutative(d,p)))}c.commutative=i;function s(u,a){for(let d of a){let p=l(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function l(u,a){var d=u;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=dt.zoom(d,[...m.path,m.id]),y=tt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=iu(d,{[m.id]:h});d=g;for(let w of v){let S=w[w.length-1];w.splice(w.length-1,1),p.push({type:0,path:w,props:{[S]:h}}),f.push({type:0,path:w,props:{[S]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=tt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof qo)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(Hl||(Hl={}));var au=Symbol(),kg=Symbol(),js=Symbol(),go=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Vs);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[js];t&&t(),delete this._children[r]}}}},ql=class extends go{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,Yo.runOp(this._current,r),r.path)}},$l=class extends go{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,Ie.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},lu={get(n,r){if(r===js)return()=>{n._parent=null};if(r===au)return n._current;if(r===kg)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],s=Fs(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):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]}}},Hg={...lu,set(n,r,e){let t={type:0,props:{[r]:Ye(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}},Wg={...lu,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}},Ko=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[js]=()=>{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,s=Fs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}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)}},Zo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[js]=()=>{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,s=Fs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 Wl(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&dt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Vs=class extends go{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){Wl(this.ts,e,r),Wl(this.actual,t,r),Wl(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Fs(n,r,e){return e instanceof ze?new Ko(n,r,e):e instanceof he?new Zo(n,r,e):e instanceof Ie?new Proxy(new $l(n,r,e),Wg):e!==null&&typeof e=="object"?$o(e)?e:new Proxy(new ql(n,r,e),Hg):e}function Yl(n){let r=new Vs(n);return[Fs(r,"",n),r]}function Qo(n,r){let[e,t]=Yl(n);return r(e),t.result()}function Ye(n){return n instanceof Ko||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[au]:n}var dt;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof ze||i instanceof Ko)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Zo)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(dt||(dt={}));function cu(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 Wt(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 zs=class{},wi=class extends zs{constructor(e){super();this.id=e}},_i=class extends zs{constructor(e){super();this.data=e}};var Kl;try{Kl=new TextDecoder}catch{}var ne,Yr,N=0;var gu=[],Zl=gu,Ql=0,vt={},we,$r,Gt=0,lr=0,Ct,Mr,ut=[],Oe,du={useRecords:!1,mapsAsObjects:!0},Ti=class{},ec=new Ti;ec.name="MessagePack 0xC1";var Jo=!1,cr=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(ne)return wu(()=>(ks(),this?this.unpack(r,e):cr.prototype.unpack.call(du,r,e)));Yr=e>-1?e:r.length,N=0,Ql=0,lr=0,$r=null,Zl=gu,Ct=null,ne=r;try{Oe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=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 cr){if(vt=this,this.structures)return we=this.structures,Us();(!we||we.length>0)&&(we=[])}else vt=du,(!we||we.length>0)&&(we=[]);return Us()}unpackMultiple(r,e){let t,o=0;try{Jo=!0;let i=r.length,s=this?this.unpack(r,i):qs.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(Us())===!1)return}else{for(t=[s];N<i;)o=N,t.push(Us());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Jo=!1,ks()}}_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 Us(){try{if(!vt.trusted&&!Jo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Re();if(N==Yr)we.restoreStructures&&uu(),we=null,ne=null,Mr&&(Mr=null);else if(N>Yr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Jo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&uu(),ks(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function uu(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Re(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&xu()[n&63];return r?(r.read||(r.read=tc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[bu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}else if(n<192){let r=n-160;if(lr>=N)return $r.slice(N-Gt,(N+=r)-Gt);if(lr==0&&Yr<140){let e=r<16?rc(r):vu(r);if(e!=null)return e}return Jl(r)}else{let r;switch(n){case 192:return null;case 193:return Ct?(r=Re(),r>0?Ct[1].slice(Ct.position1,Ct.position1+=r):Ct[0].slice(Ct.position0,Ct.position0-=r)):ec;case 194:return!1;case 195:return!0;case 196:return Xl(ne[N++]);case 197:return r=Oe.getUint16(N),N+=2,Xl(r);case 198:return r=Oe.getUint32(N),N+=4,Xl(r);case 199:return xo(ne[N++]);case 200:return r=Oe.getUint16(N),N+=2,xo(r);case 201:return r=Oe.getUint32(N),N+=4,xo(r);case 202:if(r=Oe.getFloat32(N),vt.useFloat32>2){let e=Ws[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Oe.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Oe.getUint16(N),N+=2,r;case 206:return r=Oe.getUint32(N),N+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigUint64(N),N+=8,r;case 208:return Oe.getInt8(N++);case 209:return r=Oe.getInt16(N),N+=2,r;case 210:return r=Oe.getInt32(N),N+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return yu(ne[N++]&63);{let e=ut[r];if(e)return e.read?(N++,e.read(Re())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,yu(ne[N++]&63,ne[N++])):xo(2);case 214:return xo(4);case 215:return xo(8);case 216:return xo(16);case 217:return r=ne[N++],lr>=N?$r.slice(N-Gt,(N+=r)-Gt):$g(r);case 218:return r=Oe.getUint16(N),N+=2,lr>=N?$r.slice(N-Gt,(N+=r)-Gt):Yg(r);case 219:return r=Oe.getUint32(N),N+=4,lr>=N?$r.slice(N-Gt,(N+=r)-Gt):Xg(r);case 220:return r=Oe.getUint16(N),N+=2,fu(r);case 221:return r=Oe.getUint32(N),N+=4,fu(r);case 222:return r=Oe.getUint16(N),N+=2,mu(r);case 223:return r=Oe.getUint32(N),N+=4,mu(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 qg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function tc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>qg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Re);return n.highByte===0&&(n.read=pu(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Re()}return t}return e.count=0,n.highByte===0?pu(r,e):e}var pu=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||xu()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=tc(o,n)),o.read()};function xu(){let n=wu(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var Jl=Hs,$g=Hs,Yg=Hs,Xg=Hs;function Hs(n){let r;if(n<16&&(r=rc(n)))return r;if(n>64&&Kl)return Kl.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&63,c=(o&7)<<18|i<<12|s<<6|l;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+=Xe.apply(String,t),t.length=0)}return t.length>0&&(r+=Xe.apply(String,t)),r}function fu(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}function mu(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[bu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}}var Xe=String.fromCharCode;function vu(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return Xe.apply(String,e)}function rc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return Xe(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return Xe(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return Xe(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Xe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Xl(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function xo(n){let r=ne[N++];if(ut[r])return ut[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var hu=new Array(4096);function bu(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,lr>=N)return $r.slice(N-Gt,(N+=n)-Gt);if(!(lr==0&&Yr<180))return Jl(n)}else return N--,Re();let r=(n<<5^(n>1?Oe.getUint16(N):n>0?ne[N]:0))&4095,e=hu[r],t=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return N=t,e.string;o-=3,t=N}for(e=[],hu[r]=e,e.bytes=n;t<o;)i=Oe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?rc(n):vu(n);return l!=null?e.string=l:e.string=Jl(n)}var yu=(n,r)=>{var e=Re();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=tc(e,t),e.read()},Su=typeof self=="object"?self:global;ut[0]=()=>{};ut[0].noBuffer=!0;ut[101]=()=>{let n=Re();return(Su[n[0]]||Error)(n[1])};ut[105]=n=>{let r=Oe.getUint32(N-4);Mr||(Mr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Mr.set(r,o);let i=Re();return o.used?Object.assign(t,i):(o.target=i,i)};ut[112]=n=>{let r=Oe.getUint32(N-4),e=Mr.get(r);return e.used=!0,e.target};ut[115]=()=>new Set(Re());var oc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ut[116]=n=>{let r=n[0],e=oc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Su[e](Uint8Array.prototype.slice.call(n,1).buffer)};ut[120]=()=>{let n=Re();return new RegExp(n[0],n[1])};ut[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Ct=[Re(),Re()],Ct.position0=0,Ct.position1=0;let t=N;N=e;try{return Re()}finally{N=t}};ut[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 wu(n){let r=Yr,e=N,t=Ql,o=Gt,i=lr,s=$r,l=Zl,c=Mr,u=Ct,a=new Uint8Array(ne.slice(0,Yr)),d=we,p=we.slice(0,we.length),f=vt,m=Jo,h=n();return Yr=r,N=e,Ql=t,Gt=o,lr=i,$r=s,Zl=l,Mr=c,Ct=u,ne=a,Jo=m,we=d,we.splice(0,we.length,...p),vt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function ks(){ne=null,Mr=null,we=null}function _u(n){n.unpack?ut[n.type]=n.unpack:ut[n.type]=n}var Ws=new Array(147);for(let n=0;n<256;n++)Ws[n]=+("1e"+Math.floor(45.15-n*.30103));var qs=new cr({useRecords:!1}),Kg=qs.unpack,Zg=qs.unpackMultiple,Qg=qs.unpack,$s={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Jg=new Float32Array(1),gI=new Uint8Array(Jg.buffer,0,4);var Ys;try{Ys=new TextEncoder}catch{}var Xs,ic,Ks=typeof Buffer<"u",nc=Ks?Buffer.allocUnsafeSlow:Uint8Array,Au=Ks?Buffer:Uint8Array,Tu=Ks?4294967296:2144337920,R,je,M=0,dr,ur=null,ex=/[\u0080-\uFFFF]/,Pi=Symbol("record-id"),vo=class extends cr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Au.prototype.utf8Write?function(x,C,P){return R.utf8Write(x,C,P)}:Ys&&Ys.encodeInto?function(x,C){return Ys.encodeInto(x,R.subarray(C)).written}:!1,a=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 v=[],w=0,S=0;this.pack=this.encode=function(x,C){if(R||(R=new nc(8192),je=new DataView(R.buffer,0,8192),M=0),dr=R.length-10,dr-M<2048?(R=new nc(R.length),je=new DataView(R.buffer,0,R.length),dr=R.length-10,M=0):M=M+7&2147483640,t=M,l=a.structuredClone?new Map:null,a.bundleStrings?(ur=["",""],R[M++]=214,R[M++]=98,ur.position=M-t,M+=4):ur=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.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 I=0;I<P;I++){let A=o[I];if(!A)continue;let O,V=o.transitions;for(let z=0,$=A.length;z<$;z++){let te=A[z];O=V[te],O||(O=V[te]=Object.create(null)),V=O}V[Pi]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(b(x),ur){je.setUint32(ur.position+t,M-ur.position-t);let P=ur;ur=null,b(P[0]),b(P[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>dr&&_(M),a.offset=M;let P=rx(R.subarray(t,M),l.idsToInsert);return l=null,P}return C&Cu?(R.start=t,R.end=M,R):R.subarray(t,M)}finally{if(o){if(S<10&&S++,w>1e4)o.transitions=null,S=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let P=0,I=v.length;P<I;P++)v[P][Pi]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=R.subarray(t,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&cx&&(M=t)}};let b=x=>{M>dr&&(R=_(M));var C=typeof x,P;if(C==="string"){let I=x.length;if(ur&&I>=8&&I<4096){let V=ex.test(x);ur[V?0:1]+=x,R[M++]=193,b(V?-I:I);return}let A;I<32?A=1:I<256?A=2:I<65536?A=3:A=5;let O=I*3;if(M+O>dr&&(R=_(M+O)),I<64||!u){let V,z,$,te=M+A;for(V=0;V<I;V++)z=x.charCodeAt(V),z<128?R[te++]=z:z<2048?(R[te++]=z>>6|192,R[te++]=z&63|128):(z&64512)===55296&&(($=x.charCodeAt(V+1))&64512)===56320?(z=65536+((z&1023)<<10)+($&1023),V++,R[te++]=z>>18|240,R[te++]=z>>12&63|128,R[te++]=z>>6&63|128,R[te++]=z&63|128):(R[te++]=z>>12|224,R[te++]=z>>6&63|128,R[te++]=z&63|128);P=te-M-A}else P=u(x,M+A,O);P<32?R[M++]=160|P:P<256?(A<2&&R.copyWithin(M+2,M+1,M+1+P),R[M++]=217,R[M++]=P):P<65536?(A<3&&R.copyWithin(M+3,M+2,M+2+P),R[M++]=218,R[M++]=P>>8,R[M++]=P&255):(A<5&&R.copyWithin(M+5,M+3,M+3+P),R[M++]=219,je.setUint32(M,P),M+=4),M+=P}else if(C==="number")if(x>>>0===x)x<64?R[M++]=x:x<256?(R[M++]=204,R[M++]=x):x<65536?(R[M++]=205,R[M++]=x>>8,R[M++]=x&255):(R[M++]=206,je.setUint32(M,x),M+=4);else if(x>>0===x)x>=-32?R[M++]=256+x:x>=-128?(R[M++]=208,R[M++]=x+256):x>=-32768?(R[M++]=209,je.setInt16(M,x),M+=2):(R[M++]=210,je.setInt32(M,x),M+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){R[M++]=202,je.setFloat32(M,x);let A;if(I<4||(A=x*Ws[(R[M]&127)<<1|R[M+1]>>7])>>0===A){M+=4;return}else M--}R[M++]=203,je.setFloat64(M,x),M+=8}else if(C==="object")if(!x)R[M++]=192;else{if(l){let A=l.get(x);if(A){if(!A.id){let O=l.idsToInsert||(l.idsToInsert=[]);A.id=O.push(A)}R[M++]=214,R[M++]=112,je.setUint32(M,A.id),M+=4;return}else l.set(x,{offset:M-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?R[M++]=144|P:P<65536?(R[M++]=220,R[M++]=P>>8,R[M++]=P&255):(R[M++]=221,je.setUint32(M,P),M+=4);for(let A=0;A<P;A++)b(x[A])}else if(I===Map){P=x.size,P<16?R[M++]=128|P:P<65536?(R[M++]=222,R[M++]=P>>8,R[M++]=P&255):(R[M++]=223,je.setUint32(M,P),M+=4);for(let[A,O]of x)b(A),b(O)}else{for(let A=0,O=Xs.length;A<O;A++){let V=ic[A];if(x instanceof V){let z=Xs[A];if(z.write){z.type&&(R[M++]=212,R[M++]=z.type,R[M++]=0),b(z.write.call(this,x));return}let $=R,te=je,K=M;R=null;let q;try{q=z.pack.call(this,x,k=>(R=$,$=null,M+=k,M>dr&&_(M),{target:R,targetView:je,position:M-k}),b)}finally{$&&(R=$,je=te,M=K,dr=R.length-10)}q&&(q.length+M>dr&&_(q.length+M),M=tx(q,R,M,z.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")R[M++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))R[M++]=211,je.setBigInt64(M,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)R[M++]=207,je.setBigUint64(M,x);else if(this.largeBigIntToFloat)R[M++]=203,je.setFloat64(M,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(C==="undefined")this.encodeUndefinedAsNil?R[M++]=192:(R[M++]=212,R[M++]=0,R[M++]=0);else if(C==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?R[M++]=128|P:P<65536?(R[M++]=222,R[M++]=P>>8,R[M++]=P&255):(R[M++]=223,je.setUint32(M,P),M+=4);let I;for(let A=0;A<P;A++)b(I=C[A]),b(x[I])}:(x,C)=>{R[M++]=222;let P=M-t;M+=2;let I=0;for(let A in x)(C||x.hasOwnProperty(A))&&(b(A),b(x[A]),I++);R[P+++t]=I>>8,R[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),A=0;for(let V=0,z=C.length;V<z;V++){let $=C[V];P=I[$],P||(P=I[$]=Object.create(null),A++),I=P}let O=I[Pi];if(O)O>=96&&h?(R[M++]=((O-=96)&31)+96,R[M++]=O>>5):R[M++]=O;else{O=s.nextId,O||(O=64),O<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(O=s.nextOwnId,O<g||(O=y),s.nextOwnId=O+1):(O>=g&&(O=y),s.nextId=O+1);let V=C.highByte=O>=96&&h?O-96>>5:-1;I[Pi]=O,s[O-64]=C,O<y?(C.isShared=!0,s.sharedLength=O-63,i=!0,V>=0?(R[M++]=(O&31)+96,R[M++]=V):R[M++]=O):(V>=0?(R[M++]=213,R[M++]=114,R[M++]=(O&31)+96,R[M++]=V):(R[M++]=212,R[M++]=114,R[M++]=O),A&&(w+=S*A),v.length>=m&&(v.shift()[Pi]=0),v.push(I),b(C))}for(let V=0,z=C.length;V<z;V++)b(x[C[V]])},_=x=>{let C;if(x>16777216){if(x-t>Tu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(Tu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,R.length-1)>>12)+1<<12;let P=new nc(C);return je=new DataView(P.buffer,0,C),R.copy?R.copy(P,0,t,x):P.set(R.slice(t,x)),M-=t,t=0,dr=P.length-10,R=P}}useBuffer(r){R=r,je=new DataView(R.buffer,R.byteOffset,R.byteLength),M=0}};ic=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ti];Xs=[{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:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+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?Pu(n,16,r):Ou(Ks?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Au&&this.structuredClone?Pu(n,oc.indexOf(e.name),r):Ou(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Pu(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Ou(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 tx(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 rx(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function Xr(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)");ic.unshift(n.Class),Xs.unshift(n)}_u(n)}var Iu=new vo({useRecords:!1}),ox=Iu.pack,nx=Iu.pack;var{NEVER:ix,ALWAYS:sx,DECIMAL_ROUND:ax,DECIMAL_FIT:lx}=$s,Cu=512,cx=1024;var Nu=new vo({structuredClone:!0});Xr({Class:Ie.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ie.prototype),n}});Xr({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Xr({Class:ze.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});Xr({Class:wi.prototype.constructor,type:4,write(n){return n.id},read(n){return new wi(n)}});Xr({Class:_i.prototype.constructor,type:5,write(n){return n.data},read(n){return new _i(n)}});Xr({Class:Be.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});function dx(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 sc(n){if($o(n))return n;if(Array.isArray(n))return n.map(sc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=sc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Zs;(t=>{function n(o){return Nu.pack(o)}t.serialize=n;function r(o){return Nu.unpack(o)}t.deserialize=r;function e(o){return dx(n(sc(o))).toString()}t.checksum=e})(Zs||(Zs={}));var Eu;(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})(Eu||(Eu={}));var Kr;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(Kr||(Kr={}));var Mu;(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})(Mu||(Mu={}));var Zr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=t})(Zr||(Zr={}));var bt;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(bt||(bt={}));var qt;(l=>{l.white={...bt.white,a:1},l.transparent={...bt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...bt.fromHex(c),a:u}}l.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}}l.toRgb255a1=o;function i(c,u){return bt.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(qt||(qt={}));var Qs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Qs||(Qs={}));var Lu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Lu||(Lu={}));var Bu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Bu||(Bu={}));var $t;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})($t||($t={}));var bo;(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,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(bo||(bo={}));var pr;(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(ux.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;px.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;fx.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;mx.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;hx.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;yx.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(pr||(pr={}));var Js;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(Js||(Js={}));var ux=["count"],px=["radius","start","end","position","scale","rotation"],fx=["position","scale","rotation"],mx=["count","size"],hx=["count","position","scale","rotation"],yx=["strength","scale","rotation","position","movement","seed","freqScale"];var ea;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(ea||(ea={}));var ta;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:qt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ta||(ta={}));var ac;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(ac||(ac={}));var lc;(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})(lc||(lc={}));var ra;(r=>r.defaultData={...lc.defaultData,...ac.defaultData})(ra||(ra={}));var en;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(en||(en={}));var Du=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Gu=["wrapping","image","video"],pt;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let u=i.texture;u&&Object.assign(u,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){switch(i){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:en.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:bt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,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{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,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{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...bt.fromHex(6710886),a:1},colorB:{...bt.fromHex(6710886),a:1},colorC:{...bt.fromHex(16777215),a:1},colorD:{...bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:qt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,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:qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:qt.fromHexAndA(0,1),contourColor:qt.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{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(pt||(pt={}));var St;(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 a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:pt.defaultData("light",u),id:a}),p.push({fi:1,data:pt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=pt.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:pt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=pt.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:pt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(St||(St={}));var tn;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(tn||(tn={}));var rn;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(rn||(rn={}));var cc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var oa;(r=>{function n(e,t){let o={...e};return gx.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(oa||(oa={}));var na={shape:cc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},gx=["depth","offset","angle","twist","startScale","endScale"];var Oi;(r=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=n})(Oi||(Oi={}));var ia;(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,oa.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ia||(ia={}));var Qr;(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:rn.defaultData(),extrusion:na};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:tn.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:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}r.defaultData=n})(Qr||(Qr={}));var Ru;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Ru||(Ru={}));var on;(o=>{o.identity={...Qs.identity,hiddenMatrix:Zr.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return{position:Kr.isEqual(i.position,s.position)?null:s.position,rotation:Kr.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Kr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Zr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(on||(on={}));var dc;(r=>r.defaultData={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]})(dc||(dc={}));var Nt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...on.identity,cloner:null})(Nt||(Nt={}));var Vu;(r=>r.defaultData={type:"Empty",...Nt.defaultData})(Vu||(Vu={}));var ju;(r=>r.defaultData={type:"Component",...Nt.defaultData})(ju||(ju={}));var So;(r=>r.defaultData={type:"Mesh",...Nt.defaultData,...ra.defaultData})(So||(So={}));var nn;(r=>r.defaultData={...Nt.defaultData,...on.identity,...bo.defaultData})(nn||(nn={}));var Fu;(r=>{function n(e){return{...Nt.defaultData,...ta.defaultData(e)}}r.defaultData=n})(Fu||(Fu={}));var sn;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(sn||(sn={}));var Jr;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Nt.defaultData,...l,component:s,overrides:new Be,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=on.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(Jr||(Jr={}));var zu;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Zr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:dc.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...bo.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",...Nt.defaultData,...So.defaultData,geometry:Qr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Nt.defaultData,...So.defaultData,geometry:Qr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Nt.defaultData,...So.defaultData,geometry:Qr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(zu||(zu={}));var wo;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Be}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Be})))):$t.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=Qo(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&pt.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=Qo(l.materials,c=>{for(let u=0;u<l.materials.length;u++){let a=s.materials[u];if(typeof a!="string")for(let[d,p]of Object.entries(a.layers)){let f=c[u]?.layers?.data(d);f&&pt.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],u={orthographic:0,perspective:0,geometry:0};function a(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(s))if(d!=="name")if(d==="cloner")c.push(...Js.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["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 l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,on.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),$t.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:ia.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:pr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:pr.merge(l.cloner,s.cloner)});else if(ea.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=bt.clone(c.color))}return l}o.patch=t})(wo||(wo={}));var an;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(an||(an={}));var sa;(r=>r.defaultData={orbitControls:an.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,hideCursor:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:typeof window<"u"?Math.floor(window.devicePixelRatio):1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,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"]}),gameControlObject:null})(sa||(sa={}));function Lr(n,r){return Object.setPrototypeOf(n,r),n}function aa(n){return Array.isArray(n)?n:[n]}function Uu(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 ln;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(ln||(ln={}));var la;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Lr(o,Ie.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ln.emptyImage,name:"AI generated image"}),Lr(i,Ie.prototype)}t.defaultImages=r;function e(){return{materials:new Ie,images:new Ie,videos:new Ie,colors:new Ie,audios:new Ie,fonts:new Ie,penumbraSize:[.5,.5,.5]}}t.emptyData=e})(la||(la={}));var xx=typeof global=="object"&&global&&global.Object===Object&&global,ca=xx;var vx=typeof self=="object"&&self&&self.Object===Object&&self,bx=ca||vx||Function("return this")(),Ue=bx;var Sx=Ue.Symbol,Ke=Sx;var ku=Object.prototype,wx=ku.hasOwnProperty,_x=ku.toString,Ii=Ke?Ke.toStringTag:void 0;function Tx(n){var r=wx.call(n,Ii),e=n[Ii];try{n[Ii]=void 0;var t=!0}catch{}var o=_x.call(n);return t&&(r?n[Ii]=e:delete n[Ii]),o}var Hu=Tx;var Px=Object.prototype,Ox=Px.toString;function Ax(n){return Ox.call(n)}var Wu=Ax;var Ix="[object Null]",Cx="[object Undefined]",qu=Ke?Ke.toStringTag:void 0;function Nx(n){return n==null?n===void 0?Cx:Ix:qu&&qu in Object(n)?Hu(n):Wu(n)}var Et=Nx;function Ex(n){return n!=null&&typeof n=="object"}var rt=Ex;var Mx="[object Symbol]";function Lx(n){return typeof n=="symbol"||rt(n)&&Et(n)==Mx}var cn=Lx;function Bx(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 da=Bx;var Dx=Array.isArray,Ve=Dx;var Gx=1/0,$u=Ke?Ke.prototype:void 0,Yu=$u?$u.toString:void 0;function Xu(n){if(typeof n=="string")return n;if(Ve(n))return da(n,Xu)+"";if(cn(n))return Yu?Yu.call(n):"";var r=n+"";return r=="0"&&1/n==-Gx?"-0":r}var Ku=Xu;function Rx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=Rx;function Vx(n){return n}var Zu=Vx;var jx="[object AsyncFunction]",Fx="[object Function]",zx="[object GeneratorFunction]",Ux="[object Proxy]";function kx(n){if(!Mt(n))return!1;var r=Et(n);return r==Fx||r==zx||r==jx||r==Ux}var ua=kx;var Hx=Ue["__core-js_shared__"],pa=Hx;var Qu=function(){var n=/[^.]+$/.exec(pa&&pa.keys&&pa.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wx(n){return!!Qu&&Qu in n}var Ju=Wx;var qx=Function.prototype,$x=qx.toString;function Yx(n){if(n!=null){try{return $x.call(n)}catch{}try{return n+""}catch{}}return""}var Br=Yx;var Xx=/[\\^$.*+?()[\]{}|]/g,Kx=/^\[object .+?Constructor\]$/,Zx=Function.prototype,Qx=Object.prototype,Jx=Zx.toString,e0=Qx.hasOwnProperty,t0=RegExp("^"+Jx.call(e0).replace(Xx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function r0(n){if(!Mt(n)||Ju(n))return!1;var r=ua(n)?t0:Kx;return r.test(Br(n))}var ep=r0;function o0(n,r){return n?.[r]}var tp=o0;function n0(n,r){var e=tp(n,r);return ep(e)?e:void 0}var wt=n0;var i0=wt(Ue,"WeakMap"),fa=i0;var rp=Object.create,s0=function(){function n(){}return function(r){if(!Mt(r))return{};if(rp)return rp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),op=s0;function a0(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=a0;function l0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var ip=l0;var c0=800,d0=16,u0=Date.now;function p0(n){var r=0,e=0;return function(){var t=u0(),o=d0-(t-e);if(e=t,o>0){if(++r>=c0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var sp=p0;function f0(n){return function(){return n}}var ap=f0;var m0=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),dn=m0;var h0=dn?function(n,r){return dn(n,"toString",{configurable:!0,enumerable:!1,value:ap(r),writable:!0})}:Zu,lp=h0;var y0=sp(lp),cp=y0;function g0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var dp=g0;var x0=9007199254740991,v0=/^(?:0|[1-9]\d*)$/;function b0(n,r){var e=typeof n;return r=r??x0,!!r&&(e=="number"||e!="symbol"&&v0.test(n))&&n>-1&&n%1==0&&n<r}var un=b0;function S0(n,r,e){r=="__proto__"&&dn?dn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ma=S0;function w0(n,r){return n===r||n!==n&&r!==r}var pn=w0;var _0=Object.prototype,T0=_0.hasOwnProperty;function P0(n,r,e){var t=n[r];(!(T0.call(n,r)&&pn(t,e))||e===void 0&&!(r in n))&&ma(n,r,e)}var fn=P0;function O0(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?ma(e,l,c):fn(e,l,c)}return e}var fr=O0;var up=Math.max;function A0(n,r,e){return r=up(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=up(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),np(n,this,l)}}var pp=A0;var I0=9007199254740991;function C0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=I0}var mn=C0;function N0(n){return n!=null&&mn(n.length)&&!ua(n)}var ha=N0;var E0=Object.prototype;function M0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||E0;return n===e}var hn=M0;function L0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var fp=L0;var B0="[object Arguments]";function D0(n){return rt(n)&&Et(n)==B0}var uc=D0;var mp=Object.prototype,G0=mp.hasOwnProperty,R0=mp.propertyIsEnumerable,V0=uc(function(){return arguments}())?uc:function(n){return rt(n)&&G0.call(n,"callee")&&!R0.call(n,"callee")},yn=V0;function j0(){return!1}var hp=j0;var xp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yp=xp&&typeof module=="object"&&module&&!module.nodeType&&module,F0=yp&&yp.exports===xp,gp=F0?Ue.Buffer:void 0,z0=gp?gp.isBuffer:void 0,U0=z0||hp,_o=U0;var k0="[object Arguments]",H0="[object Array]",W0="[object Boolean]",q0="[object Date]",$0="[object Error]",Y0="[object Function]",X0="[object Map]",K0="[object Number]",Z0="[object Object]",Q0="[object RegExp]",J0="[object Set]",ev="[object String]",tv="[object WeakMap]",rv="[object ArrayBuffer]",ov="[object DataView]",nv="[object Float32Array]",iv="[object Float64Array]",sv="[object Int8Array]",av="[object Int16Array]",lv="[object Int32Array]",cv="[object Uint8Array]",dv="[object Uint8ClampedArray]",uv="[object Uint16Array]",pv="[object Uint32Array]",Me={};Me[nv]=Me[iv]=Me[sv]=Me[av]=Me[lv]=Me[cv]=Me[dv]=Me[uv]=Me[pv]=!0;Me[k0]=Me[H0]=Me[rv]=Me[W0]=Me[ov]=Me[q0]=Me[$0]=Me[Y0]=Me[X0]=Me[K0]=Me[Z0]=Me[Q0]=Me[J0]=Me[ev]=Me[tv]=!1;function fv(n){return rt(n)&&mn(n.length)&&!!Me[Et(n)]}var vp=fv;function mv(n){return function(r){return n(r)}}var gn=mv;var bp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ci=bp&&typeof module=="object"&&module&&!module.nodeType&&module,hv=Ci&&Ci.exports===bp,pc=hv&&ca.process,yv=function(){try{var n=Ci&&Ci.require&&Ci.require("util").types;return n||pc&&pc.binding&&pc.binding("util")}catch{}}(),Dr=yv;var Sp=Dr&&Dr.isTypedArray,gv=Sp?gn(Sp):vp,ya=gv;var xv=Object.prototype,vv=xv.hasOwnProperty;function bv(n,r){var e=Ve(n),t=!e&&yn(n),o=!e&&!t&&_o(n),i=!e&&!t&&!o&&ya(n),s=e||t||o||i,l=s?fp(n.length,String):[],c=l.length;for(var u in n)(r||vv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||un(u,c)))&&l.push(u);return l}var ga=bv;function Sv(n,r){return function(e){return n(r(e))}}var xa=Sv;var wv=xa(Object.keys,Object),wp=wv;var _v=Object.prototype,Tv=_v.hasOwnProperty;function Pv(n){if(!hn(n))return wp(n);var r=[];for(var e in Object(n))Tv.call(n,e)&&e!="constructor"&&r.push(e);return r}var _p=Pv;function Ov(n){return ha(n)?ga(n):_p(n)}var xn=Ov;function Av(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Tp=Av;var Iv=Object.prototype,Cv=Iv.hasOwnProperty;function Nv(n){if(!Mt(n))return Tp(n);var r=hn(n),e=[];for(var t in n)t=="constructor"&&(r||!Cv.call(n,t))||e.push(t);return e}var Pp=Nv;function Ev(n){return ha(n)?ga(n,!0):Pp(n)}var vn=Ev;var Mv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lv=/^\w*$/;function Bv(n,r){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||cn(n)?!0:Lv.test(n)||!Mv.test(n)||r!=null&&n in Object(r)}var Op=Bv;var Dv=wt(Object,"create"),Gr=Dv;function Gv(){this.__data__=Gr?Gr(null):{},this.size=0}var Ap=Gv;function Rv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Ip=Rv;var Vv="__lodash_hash_undefined__",jv=Object.prototype,Fv=jv.hasOwnProperty;function zv(n){var r=this.__data__;if(Gr){var e=r[n];return e===Vv?void 0:e}return Fv.call(r,n)?r[n]:void 0}var Cp=zv;var Uv=Object.prototype,kv=Uv.hasOwnProperty;function Hv(n){var r=this.__data__;return Gr?r[n]!==void 0:kv.call(r,n)}var Np=Hv;var Wv="__lodash_hash_undefined__";function qv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Gr&&r===void 0?Wv:r,this}var Ep=qv;function bn(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])}}bn.prototype.clear=Ap;bn.prototype.delete=Ip;bn.prototype.get=Cp;bn.prototype.has=Np;bn.prototype.set=Ep;var fc=bn;function $v(){this.__data__=[],this.size=0}var Mp=$v;function Yv(n,r){for(var e=n.length;e--;)if(pn(n[e][0],r))return e;return-1}var eo=Yv;var Xv=Array.prototype,Kv=Xv.splice;function Zv(n){var r=this.__data__,e=eo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Kv.call(r,e,1),--this.size,!0}var Lp=Zv;function Qv(n){var r=this.__data__,e=eo(r,n);return e<0?void 0:r[e][1]}var Bp=Qv;function Jv(n){return eo(this.__data__,n)>-1}var Dp=Jv;function eb(n,r){var e=this.__data__,t=eo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Gp=eb;function Sn(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])}}Sn.prototype.clear=Mp;Sn.prototype.delete=Lp;Sn.prototype.get=Bp;Sn.prototype.has=Dp;Sn.prototype.set=Gp;var to=Sn;var tb=wt(Ue,"Map"),ro=tb;function rb(){this.size=0,this.__data__={hash:new fc,map:new(ro||to),string:new fc}}var Rp=rb;function ob(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Vp=ob;function nb(n,r){var e=n.__data__;return Vp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var oo=nb;function ib(n){var r=oo(this,n).delete(n);return this.size-=r?1:0,r}var jp=ib;function sb(n){return oo(this,n).get(n)}var Fp=sb;function ab(n){return oo(this,n).has(n)}var zp=ab;function lb(n,r){var e=oo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Up=lb;function wn(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])}}wn.prototype.clear=Rp;wn.prototype.delete=jp;wn.prototype.get=Fp;wn.prototype.has=zp;wn.prototype.set=Up;var To=wn;var cb="Expected a function";function mc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(cb);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 s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(mc.Cache||To),e}mc.Cache=To;var kp=mc;var db=500;function ub(n){var r=kp(n,function(t){return e.size===db&&e.clear(),t}),e=r.cache;return r}var Hp=ub;var pb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fb=/\\(\\)?/g,mb=Hp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(pb,function(e,t,o,i){r.push(o?i.replace(fb,"$1"):t||e)}),r}),Wp=mb;function hb(n){return n==null?"":Ku(n)}var qp=hb;function yb(n,r){return Ve(n)?n:Op(n,r)?[n]:Wp(qp(n))}var Rt=yb;var gb=1/0;function xb(n){if(typeof n=="string"||cn(n))return n;var r=n+"";return r=="0"&&1/n==-gb?"-0":r}var no=xb;function vb(n,r){r=Rt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[no(r[e++])];return e&&e==t?n:void 0}var va=vb;function bb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var _n=bb;var $p=Ke?Ke.isConcatSpreadable:void 0;function Sb(n){return Ve(n)||yn(n)||!!($p&&n&&n[$p])}var Yp=Sb;function Xp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Yp),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?Xp(l,r-1,e,t,o):_n(o,l):t||(o[o.length]=l)}return o}var Kp=Xp;function wb(n){var r=n==null?0:n.length;return r?Kp(n,1):[]}var Zp=wb;function _b(n){return cp(pp(n,void 0,Zp),n+"")}var ba=_b;var Tb=xa(Object.getPrototypeOf,Object),Tn=Tb;var Pb="[object Object]",Ob=Function.prototype,Ab=Object.prototype,Qp=Ob.toString,Ib=Ab.hasOwnProperty,Cb=Qp.call(Object);function Nb(n){if(!rt(n)||Et(n)!=Pb)return!1;var r=Tn(n);if(r===null)return!0;var e=Ib.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Qp.call(e)==Cb}var Jp=Nb;function Eb(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 ef=Eb;function Mb(){this.__data__=new to,this.size=0}var tf=Mb;function Lb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var rf=Lb;function Bb(n){return this.__data__.get(n)}var of=Bb;function Db(n){return this.__data__.has(n)}var nf=Db;var Gb=200;function Rb(n,r){var e=this.__data__;if(e instanceof to){var t=e.__data__;if(!ro||t.length<Gb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new To(t)}return e.set(n,r),this.size=e.size,this}var sf=Rb;function Pn(n){var r=this.__data__=new to(n);this.size=r.size}Pn.prototype.clear=tf;Pn.prototype.delete=rf;Pn.prototype.get=of;Pn.prototype.has=nf;Pn.prototype.set=sf;var On=Pn;function Vb(n,r){return n&&fr(r,xn(r),n)}var af=Vb;function jb(n,r){return n&&fr(r,vn(r),n)}var lf=jb;var pf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,cf=pf&&typeof module=="object"&&module&&!module.nodeType&&module,Fb=cf&&cf.exports===pf,df=Fb?Ue.Buffer:void 0,uf=df?df.allocUnsafe:void 0;function zb(n,r){if(r)return n.slice();var e=n.length,t=uf?uf(e):new n.constructor(e);return n.copy(t),t}var ff=zb;function Ub(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var mf=Ub;function kb(){return[]}var Sa=kb;var Hb=Object.prototype,Wb=Hb.propertyIsEnumerable,hf=Object.getOwnPropertySymbols,qb=hf?function(n){return n==null?[]:(n=Object(n),mf(hf(n),function(r){return Wb.call(n,r)}))}:Sa,An=qb;function $b(n,r){return fr(n,An(n),r)}var yf=$b;var Yb=Object.getOwnPropertySymbols,Xb=Yb?function(n){for(var r=[];n;)_n(r,An(n)),n=Tn(n);return r}:Sa,wa=Xb;function Kb(n,r){return fr(n,wa(n),r)}var gf=Kb;function Zb(n,r,e){var t=r(n);return Ve(n)?t:_n(t,e(n))}var _a=Zb;function Qb(n){return _a(n,xn,An)}var Ni=Qb;function Jb(n){return _a(n,vn,wa)}var Ta=Jb;var eS=wt(Ue,"DataView"),Pa=eS;var tS=wt(Ue,"Promise"),Oa=tS;var rS=wt(Ue,"Set"),Aa=rS;var xf="[object Map]",oS="[object Object]",vf="[object Promise]",bf="[object Set]",Sf="[object WeakMap]",wf="[object DataView]",nS=Br(Pa),iS=Br(ro),sS=Br(Oa),aS=Br(Aa),lS=Br(fa),Po=Et;(Pa&&Po(new Pa(new ArrayBuffer(1)))!=wf||ro&&Po(new ro)!=xf||Oa&&Po(Oa.resolve())!=vf||Aa&&Po(new Aa)!=bf||fa&&Po(new fa)!=Sf)&&(Po=function(n){var r=Et(n),e=r==oS?n.constructor:void 0,t=e?Br(e):"";if(t)switch(t){case nS:return wf;case iS:return xf;case sS:return vf;case aS:return bf;case lS:return Sf}return r});var Rr=Po;var cS=Object.prototype,dS=cS.hasOwnProperty;function uS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&dS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var _f=uS;var pS=Ue.Uint8Array,In=pS;function fS(n){var r=new n.constructor(n.byteLength);return new In(r).set(new In(n)),r}var Cn=fS;function mS(n,r){var e=r?Cn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Tf=mS;var hS=/\w*$/;function yS(n){var r=new n.constructor(n.source,hS.exec(n));return r.lastIndex=n.lastIndex,r}var Pf=yS;var Of=Ke?Ke.prototype:void 0,Af=Of?Of.valueOf:void 0;function gS(n){return Af?Object(Af.call(n)):{}}var If=gS;function xS(n,r){var e=r?Cn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Cf=xS;var vS="[object Boolean]",bS="[object Date]",SS="[object Map]",wS="[object Number]",_S="[object RegExp]",TS="[object Set]",PS="[object String]",OS="[object Symbol]",AS="[object ArrayBuffer]",IS="[object DataView]",CS="[object Float32Array]",NS="[object Float64Array]",ES="[object Int8Array]",MS="[object Int16Array]",LS="[object Int32Array]",BS="[object Uint8Array]",DS="[object Uint8ClampedArray]",GS="[object Uint16Array]",RS="[object Uint32Array]";function VS(n,r,e){var t=n.constructor;switch(r){case AS:return Cn(n);case vS:case bS:return new t(+n);case IS:return Tf(n,e);case CS:case NS:case ES:case MS:case LS:case BS:case DS:case GS:case RS:return Cf(n,e);case SS:return new t;case wS:case PS:return new t(n);case _S:return Pf(n);case TS:return new t;case OS:return If(n)}}var Nf=VS;function jS(n){return typeof n.constructor=="function"&&!hn(n)?op(Tn(n)):{}}var Ef=jS;var FS="[object Map]";function zS(n){return rt(n)&&Rr(n)==FS}var Mf=zS;var Lf=Dr&&Dr.isMap,US=Lf?gn(Lf):Mf,Bf=US;var kS="[object Set]";function HS(n){return rt(n)&&Rr(n)==kS}var Df=HS;var Gf=Dr&&Dr.isSet,WS=Gf?gn(Gf):Df,Rf=WS;var qS=1,$S=2,YS=4,Vf="[object Arguments]",XS="[object Array]",KS="[object Boolean]",ZS="[object Date]",QS="[object Error]",jf="[object Function]",JS="[object GeneratorFunction]",e1="[object Map]",t1="[object Number]",Ff="[object Object]",r1="[object RegExp]",o1="[object Set]",n1="[object String]",i1="[object Symbol]",s1="[object WeakMap]",a1="[object ArrayBuffer]",l1="[object DataView]",c1="[object Float32Array]",d1="[object Float64Array]",u1="[object Int8Array]",p1="[object Int16Array]",f1="[object Int32Array]",m1="[object Uint8Array]",h1="[object Uint8ClampedArray]",y1="[object Uint16Array]",g1="[object Uint32Array]",Ee={};Ee[Vf]=Ee[XS]=Ee[a1]=Ee[l1]=Ee[KS]=Ee[ZS]=Ee[c1]=Ee[d1]=Ee[u1]=Ee[p1]=Ee[f1]=Ee[e1]=Ee[t1]=Ee[Ff]=Ee[r1]=Ee[o1]=Ee[n1]=Ee[i1]=Ee[m1]=Ee[h1]=Ee[y1]=Ee[g1]=!0;Ee[QS]=Ee[jf]=Ee[s1]=!1;function Ia(n,r,e,t,o,i){var s,l=r&qS,c=r&$S,u=r&YS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Mt(n))return n;var a=Ve(n);if(a){if(s=_f(n),!l)return ip(n,s)}else{var d=Rr(n),p=d==jf||d==JS;if(_o(n))return ff(n,l);if(d==Ff||d==Vf||p&&!o){if(s=c||p?{}:Ef(n),!l)return c?gf(n,lf(s,n)):yf(n,af(s,n))}else{if(!Ee[d])return o?n:{};s=Nf(n,d,l)}}i||(i=new On);var f=i.get(n);if(f)return f;i.set(n,s),Rf(n)?n.forEach(function(y){s.add(Ia(y,r,e,y,n,i))}):Bf(n)&&n.forEach(function(y,g){s.set(g,Ia(y,r,e,g,n,i))});var m=u?c?Ta:Ni:c?vn:xn,h=a?void 0:m(n);return dp(h||n,function(y,g){h&&(g=y,y=n[g]),fn(s,g,Ia(y,r,e,g,n,i))}),s}var Ca=Ia;var x1=1,v1=4;function b1(n){return Ca(n,x1|v1)}var Vr=b1;var S1="__lodash_hash_undefined__";function w1(n){return this.__data__.set(n,S1),this}var zf=w1;function _1(n){return this.__data__.has(n)}var Uf=_1;function Na(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new To;++r<e;)this.add(n[r])}Na.prototype.add=Na.prototype.push=zf;Na.prototype.has=Uf;var kf=Na;function T1(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 Hf=T1;function P1(n,r){return n.has(r)}var Wf=P1;var O1=1,A1=2;function I1(n,r,e,t,o,i){var s=e&O1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var u=i.get(n),a=i.get(r);if(u&&a)return u==r&&a==n;var d=-1,p=!0,f=e&A1?new kf:void 0;for(i.set(n,r),i.set(r,n);++d<l;){var m=n[d],h=r[d];if(t)var y=s?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(!Hf(r,function(g,v){if(!Wf(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){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 Ea=I1;function C1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var qf=C1;function N1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var $f=N1;var E1=1,M1=2,L1="[object Boolean]",B1="[object Date]",D1="[object Error]",G1="[object Map]",R1="[object Number]",V1="[object RegExp]",j1="[object Set]",F1="[object String]",z1="[object Symbol]",U1="[object ArrayBuffer]",k1="[object DataView]",Yf=Ke?Ke.prototype:void 0,hc=Yf?Yf.valueOf:void 0;function H1(n,r,e,t,o,i,s){switch(e){case k1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case U1:return!(n.byteLength!=r.byteLength||!i(new In(n),new In(r)));case L1:case B1:case R1:return pn(+n,+r);case D1:return n.name==r.name&&n.message==r.message;case V1:case F1:return n==r+"";case G1:var l=qf;case j1:var c=t&E1;if(l||(l=$f),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=M1,s.set(n,r);var a=Ea(l(n),l(r),t,o,i,s);return s.delete(n),a;case z1:if(hc)return hc.call(n)==hc.call(r)}return!1}var Xf=H1;var W1=1,q1=Object.prototype,$1=q1.hasOwnProperty;function Y1(n,r,e,t,o,i){var s=e&W1,l=Ni(n),c=l.length,u=Ni(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:$1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var w=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(w===void 0?g===v||o(g,v,e,t,i):w)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var S=n.constructor,b=r.constructor;S!=b&&"constructor"in n&&"constructor"in r&&!(typeof S=="function"&&S instanceof S&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var Kf=Y1;var X1=1,Zf="[object Arguments]",Qf="[object Array]",Ma="[object Object]",K1=Object.prototype,Jf=K1.hasOwnProperty;function Z1(n,r,e,t,o,i){var s=Ve(n),l=Ve(r),c=s?Qf:Rr(n),u=l?Qf:Rr(r);c=c==Zf?Ma:c,u=u==Zf?Ma:u;var a=c==Ma,d=u==Ma,p=c==u;if(p&&_o(n)){if(!_o(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new On),s||ya(n)?Ea(n,r,e,t,o,i):Xf(n,r,c,e,t,o,i);if(!(e&X1)){var f=a&&Jf.call(n,"__wrapped__"),m=d&&Jf.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new On),o(h,y,e,t,i)}}return p?(i||(i=new On),Kf(n,r,e,t,o,i)):!1}var em=Z1;function tm(n,r,e,t,o){return n===r?!0:n==null||r==null||!rt(n)&&!rt(r)?n!==n&&r!==r:em(n,r,e,t,tm,o)}var rm=tm;function Q1(n,r){return n!=null&&r in Object(n)}var om=Q1;function J1(n,r,e){r=Rt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=no(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&mn(o)&&un(s,o)&&(Ve(n)||yn(n)))}var nm=J1;function ew(n,r){return n!=null&&nm(n,r,om)}var im=ew;function tw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var sm=tw;function rw(n,r){return r.length<2?n:va(n,ef(r,0,-1))}var am=rw;function ow(n,r){return rm(n,r)}var Ei=ow;function nw(n,r){return r=Rt(r,n),n=am(n,r),n==null||delete n[no(sm(r))]}var lm=nw;function iw(n){return Jp(n)?void 0:n}var cm=iw;var sw=1,aw=2,lw=4,cw=ba(function(n,r){var e={};if(n==null)return e;var t=!1;r=da(r,function(i){return i=Rt(i,n),t||(t=i.length>1),i}),fr(n,Ta(n),e),t&&(e=Ca(e,sw|aw|lw,cm));for(var o=r.length;o--;)lm(e,r[o]);return e}),Nn=cw;function dw(n,r,e,t){if(!Mt(n))return n;r=Rt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=no(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Mt(a)?a:un(r[o+1])?[]:{})}fn(l,c,u),l=l[c]}return n}var dm=dw;function uw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=va(n,s);e(l,s)&&dm(i,Rt(s,n),l)}return i}var um=uw;function pw(n,r){return um(n,r,function(e,t){return im(n,t)})}var pm=pw;var fw=ba(function(n,r){return n==null?{}:pm(n,r)}),En=fw;import{MathUtils as La}from"three";function fm(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 l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...En(Ye(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,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ye(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ba(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Da(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function mw(n){Object.assign(n.scene.publish,{orbitControls:{...an.defaultData,...Ye(n.scene.publish.orbitControls)}})}function hw(n){Object.assign(n.scene.publish.settings,{video:{...sa.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function yw(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((Du.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Gu.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function gw(n){n.scene.publish.withBackground=!0}function xw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function vw(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 bw(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 Sw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ye(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function ww(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 _w(n){function r(t){Object.setPrototypeOf(t,Be.prototype),t.texture&&Object.setPrototypeOf(t.texture,Be.prototype)}function e(t){Object.setPrototypeOf(t,Be.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=Ye(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],u=Ye(c).layers;e(u),c.layers=u}})})}function mm(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function yc(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={...Ye(r),colors:e,steps:t};Object.assign(r,o)}})}function Tw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function hm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&yc(t)}):"material"in e&&typeof e.material!="string"&&yc(e.material)}),Object.values(n.shared.materials).forEach(r=>yc(r))}function Pw(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 Ow(n){n.shared.audios=Lr({},Ie.prototype)}function Aw(n){n.shared.videos=Lr({},Ie.prototype)}function Iw(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 Cw(n){Object.entries(Ye(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ye(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Nw(n){n.scene.publish.settings.web.preload=!1}function ym(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 Ew(n){n.shared.fonts=Lr({},Ie.prototype)}function Mw(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 Lw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=St.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=Mw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Nt.defaultData,...So.defaultData,flatShading:!1,wireframe:!1,geometry:{...Qr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,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},u=Ye(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 Bw(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:La.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,En(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:La.generateUUID(),data:u},{fi:1,id:La.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Dw(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...En(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={...En(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:La.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function gm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=pt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function xm(n){Ba(n,gm),Da(n,gm)}function Gw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function Rw(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 Vw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=St.defaultTwoLayerData("phong"))})}function jw(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 Fw(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)})}var vm=33;function bm(n){let r=n.schema??0;r!==vm&&(console.warn("updating from ",r,"to ",vm),r<1&&(Da(n,fm),Ba(n,fm),n.schema=1),r<2&&(mw(n),n.schema=2),r<3&&(yw(n),n.schema=3),r<4&&(gw(n),n.schema=4),r<5&&(xw(n),n.schema=5),r<6&&(vw(n),n.schema=6),r<7&&(bw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(hm(n),n.schema=9),r<10&&(Tw(n),n.schema=10),r<11&&(Pw(n),n.schema=11),r<12&&(hm(n),n.schema=12),r<13&&(Ow(n),n.schema=13),r<14&&(Iw(n),n.schema=14),r<15&&(Cw(n),n.schema=15),r<16&&(Nw(n),n.schema=16),r<17&&(Da(n,ym),Ba(n,ym),n.schema=17),r<18&&(Da(n,mm),Ba(n,mm),n.schema=18),r<19&&(hw(n),n.schema=19),r<20&&(Ew(n),Lw(n),n.schema=20),r<21&&(Bw(n),Dw(n),n.schema=21),r<22&&(xm(n),n.schema=22),r<23&&(Gw(n),n.schema=23),r<24&&(Rw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Aw(n),r<25&&(n.schema=25)),r<26&&(Sw(n),n.schema=26),r<27&&(ww(n),n.schema=27),r<28&&(xm(n),n.schema=28),r<29&&(_w(n),n.schema=29),r<30&&(Vw(n),n.schema=30),r<31&&(jw(n),n.schema=31),r<33&&(Fw(n),n.schema=33))}var ui=Ls(wm());import{Object3D as sO,Vector3 as Bt,Euler as Hd,MathUtils as Dy,Matrix4 as ko}from"three";var zw=.5*(Math.sqrt(3)-1),Li=(3-Math.sqrt(3))/6,Uw=1/3,mr=1/6,kG=(Math.sqrt(5)-1)/4,HG=(5-Math.sqrt(5))/20,Bi=n=>Math.floor(n)|0,_m=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]),xc=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 Ga(n=Math.random){let r=Pm(n),e=new Float64Array(r).map(o=>_m[o%12*2]),t=new Float64Array(r).map(o=>_m[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*zw,d=Bi(i+a),p=Bi(s+a),f=(d+p)*Li,m=d-f,h=p-f,y=i-m,g=s-h,v,w;y>g?(v=1,w=0):(v=0,w=1);let S=y-v+Li,b=g-w+Li,T=y-1+2*Li,_=g-1+2*Li,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let O=x+r[C],V=e[O],z=t[O];P*=P,l=P*P*(V*y+z*g)}let I=.5-S*S-b*b;if(I>=0){let O=x+v+r[C+w],V=e[O],z=t[O];I*=I,c=I*I*(V*S+z*b)}let A=.5-T*T-_*_;if(A>=0){let O=x+1+r[C+1],V=e[O],z=t[O];A*=A,u=A*A*(V*T+z*_)}return 70*(l+c+u)}}function Tm(n=Math.random){let r=Pm(n),e=new Float64Array(r).map(i=>xc[i%12*3]),t=new Float64Array(r).map(i=>xc[i%12*3+1]),o=new Float64Array(r).map(i=>xc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*Uw,m=Bi(s+f),h=Bi(l+f),y=Bi(c+f),g=(m+h+y)*mr,v=m-g,w=h-g,S=y-g,b=s-v,T=l-w,_=c-S,x,C,P,I,A,O;b>=T?T>=_?(x=1,C=0,P=0,I=1,A=1,O=0):b>=_?(x=1,C=0,P=0,I=1,A=0,O=1):(x=0,C=0,P=1,I=1,A=0,O=1):T<_?(x=0,C=0,P=1,I=0,A=1,O=1):b<_?(x=0,C=1,P=0,I=0,A=1,O=1):(x=0,C=1,P=0,I=1,A=1,O=0);let V=b-x+mr,z=T-C+mr,$=_-P+mr,te=b-I+2*mr,K=T-A+2*mr,q=_-O+2*mr,k=b-1+3*mr,G=T-1+3*mr,D=_-1+3*mr,B=m&255,L=h&255,F=y&255,W=.6-b*b-T*T-_*_;if(W<0)u=0;else{let E=B+r[L+r[F]];W*=W,u=W*W*(e[E]*b+t[E]*T+o[E]*_)}let H=.6-V*V-z*z-$*$;if(H<0)a=0;else{let E=B+x+r[L+C+r[F+P]];H*=H,a=H*H*(e[E]*V+t[E]*z+o[E]*$)}let j=.6-te*te-K*K-q*q;if(j<0)d=0;else{let E=B+I+r[L+A+r[F+O]];j*=j,d=j*j*(e[E]*te+t[E]*K+o[E]*q)}let U=.6-k*k-G*G-D*D;if(U<0)p=0;else{let E=B+1+r[L+1+r[F+1]];U*=U,p=U*U*(e[E]*k+t[E]*G+o[E]*D)}return 32*(u+a+d+p)}}function Pm(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 kw}from"three";var Yt=new kw,Ra=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;Yt.a.fromBufferAttribute(r,o),Yt.b.fromBufferAttribute(r,o+1),Yt.c.fromBufferAttribute(r,o+2),i*=Yt.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 s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Yt.a.fromBufferAttribute(this.positionAttribute,r*3),Yt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Yt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Yt.a,o).addScaledVector(Yt.b,i).addScaledVector(Yt.c,1-(o+i)),Yt.getNormal(t),this}};import{Object3D as Yw}from"three";var Im=Ls(Am());import{Object3D as Hw,Matrix4 as jr}from"three";var Ww=new jr,qw=new jr,$w=new jr,Di;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Di||(Di={}));var Mn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new jr;this.matrixWorldRigid=new jr;this.shearScale=new jr;this.shearScaleInv=new jr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Hw&&(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 s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Di.is(s)&&s.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:s,q:l}=(0,Im.SVD)(o),c=Ww.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=qw.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=$w.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new jr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof jr?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}};var vc=class extends Mn(Yw){},Xw=n=>n.type==="Mesh",Fr=class extends vc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1}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 Fr(t),this.add(o),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.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 Xw(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 BT,BufferGeometry as DT,MeshBasicMaterial as GT}from"three";import{Matrix4 as MT,Mesh as LT}from"three";import{Matrix4 as Fa,Vector3 as t_,Euler as r_}from"three";import{Box3 as Kw,Line3 as Zw,Matrix4 as bc,Vector3 as Vt}from"three";var Oo=new Vt,Ao=new Vt,Ln=new bc,Nm=[new Vt(-1,1,1),new Vt(-1,-1,1),new Vt(1,-1,1),new Vt(1,1,1),new Vt(-1,1,-1),new Vt(-1,-1,-1),new Vt(1,-1,-1),new Vt(1,1,-1)],Qw=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],Jw=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Cm=(n,r,e)=>{n.updateEntityBoxSize(Oo,Ao),Ln.copy(r).multiply(n.matrixWorld),Ao.x===0&&Ao.y===0&&Ao.z===0?e.push(new Vt(Oo.x,Oo.y,Oo.z).applyMatrix4(Ln)):Nm.forEach(t=>{e.push(t.clone().multiply(Ao).add(Oo).applyMatrix4(Ln))})},Gi=class extends Kw{constructor(){super(...arguments);this.matrix=new bc;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 bc().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{(s.visible||s.cloner&&s.data.visible)&&Cm(s,t,i)}):Cm(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(Ln.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Ao).multiplyScalar(.5),this.getCenter(Oo),Ln.copy(this.matrix).setPosition(Oo),this.vertices=Nm.map(e=>e.clone().multiply(Ao).applyMatrix4(Ln))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Qw.map(([e,t])=>new Zw(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Vt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=Jw.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Xt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as e_,CubicBezierCurve3 as Sc,Vector3 as Kt}from"three";var _c=class extends e_{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),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 Tc=.001;function Pc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Tc}function wc(n,r){let e=new Kt(...n.position),t=new Kt(...n.controlNext.position),o=new Kt(...r.controlPrevious.position),i=new Kt(...r.position);return Pc(e,t,i)&&Pc(e,o,i)}function ja(n){let r=n.points.map(a=>new Kt(...a.data.position)),e=[n.points[0]],t=new Kt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Pc(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new Kt(...d.position),f=new Kt(...d.controlPrevious.position),m=new Kt(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,w=e[g].data,S=new Kt(...v.position),b=new Kt(...w.position),T=S.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=wc(v,d),C=wc(d,w);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[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 a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!wc(e[d].data,e[p].data))f.position.distanceTo(m.position)>Tc&&(h=new Sc(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)>Tc&&(h=new Sc(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=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),v=f.distanceTo(m)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),S=y.clone().multiplyScalar(-h).add(w),b=p.distanceTo(S)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=T.clone().lerp(S,2),x=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new Sc(f,x,C,m)}let u=new _c;return c.forEach(a=>{a&&u.add(a)}),u}var Ce;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ce||(Ce={}));var Ri=n=>Ce.is(n),za=n=>class extends Mn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Gi;this._recursiveBBox=new Gi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Ce.is(o))return o}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(Ce.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 s of this.data.states)wo.toOps(this.data,s.data).forEach(c=>{let u=Rs.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=wo.patch(this.data,s),wo.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(o.scene)}}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=>{Ri(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(Ce.is(o[i]))return o[i];if(Ce.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ce.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)Ri(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ce.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ri(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ri(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!0){return super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ri(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,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Nn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Zr.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ce.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ce.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Nn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Wt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=dt.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 a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=dt.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,wo.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Wt(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(Er.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=dt.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=sn.resolve(o.overrides,a),p.updateByOp(t,tt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of Jr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of Jr.rootOverrideProps)if(Wt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Er.filterOp(d.overrideData,a);p&&d.updateByOp(p,tt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Er.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=tt.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&&!$t.is(t.props.type)&&Xt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Xt.changeEntityProptotype(this,o,i);for(let s of this.children)Ce.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Wt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(i.scene),Wt(t.path,["cloner"])!==null){let s=tt.drop(t,1);s.path.length===0&&s.type===0&&s.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,o=this.dataPatched.pathSnapping){if(o?.pathId){let i=t.find(o.pathId);this._pathSnappingObject=i,i?this.updatePathSnappingSlide(o):t.addPendingCommand(()=>{this.updatePathSnapping(t)})}}updatePathSnappingSlide(t=this.dataPatched.pathSnapping){let o=this._pathSnappingObject;if(!o)return;o.snappedEntities.add(this);let i=o.data,s=ja(i.geometry.path),l=(t.slide+t.offset)%1,c=s.getPointAt(l),u=this.parent?this.parent?.matrixWorld:new Fa,a=new Fa().multiplyMatrices(u.clone().invert(),o.matrixWorld);c.applyMatrix4(a);let d={position:c.toArray(),rotation:i.rotation};if(t.orientation==="tangential"){let p=new Fa().extractRotation(o.matrixWorld),m=s.getTangentAt(l).applyMatrix4(p).add(c),h=new Fa().lookAt(c,m,new t_(0,1,0)),y=new r_().setFromRotationMatrix(h);d={...d,rotation:[y.x,y.y,y.z]}}this.updateTransformState(d)}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()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t),o?.scene&&this.updatePathSnapping(o.scene,t.pathSnapping)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Xt.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 Xt.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{ConeGeometry as i_}from"three";import{BufferGeometry as o_,CylinderGeometry as n_,Float32BufferAttribute as Oc,Vector2 as Zt,Vector3 as Ua}from"three";var Mm=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:0,cornerSegments:8,hollow:0},n.parameters),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:s,thetaStart:l,thetaLength:c,radiusTop:u,radiusBottom:a,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new Vi(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new n_(u,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function io(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Em(n){return new Zt(n.y,-n.x)}var Vi=class extends o_{constructor(r,e,t,o,i,s,l,c,u,a,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,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],y=[],g=[],v=0,w=t/2,S=new Ua,b=new Ua;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new Zt(r,w),_=new Zt(e,-w),x=null,C=null,P=null,I=null,A=T.clone().sub(_),O=0,V=0,z=0;p>0&&(O=Math.min(r,e)*(1-p),V=r-O,z=e-O);let $=T.clone();$.x-=O;let te=Math.PI-A.angle(),K=A.angle(),q=Math.tan(K/2),k=Math.tan(te/2),G=q+k,D=p?G:k,B=p?G:q;if(u=Math.min(u,(r-V)/D,A.length()/G),a=Math.min(a,(e-z)/B,A.length()/G),u>0){let U=u/q;x=T.clone().sub(new Zt(U,u)),p&&(P=x.clone(),P.x-=O-G*u),T.sub(A.clone().setLength(U))}if(a>0){let U=a/k;C=_.clone().sub(new Zt(U,-a)),_.add(A.clone().setLength(U)),p&&(I=C.clone(),I.x-=O-G*a,$.sub(A.clone().setLength(U)))}A=T.clone().sub(_);let L=A.length()<.5,F=[];for(let U=0;U<=o;U++){let E=[],oe=U/o,Y=oe*c+l,re=new Zt(Math.sin(Y),Math.cos(Y));I&&C?(W(E,oe,re,te,a,I,-1,!0),W(E,oe,re,K,a,C,-1,!1)):C?(H(E,re,C.x,0,-1),W(E,oe,re,K,a,C,-1,!1)):s||H(E,re,e,z,-1);let X=Em(A).normalize();if(io(X,re,S),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,ie=A.clone().multiplyScalar(Z).add(_);io(ie,re,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),g.push(oe,.5+b.y/t),E.push(v++)}if(P&&x?(W(E,oe,re,te,u,x,1,!1),W(E,oe,re,K,u,P,1,!0)):x?(W(E,oe,re,te,u,x,1,!1),H(E,re,x.x,0,1)):s||H(E,re,r,V,1),p&&!L){let ee=Em(A).multiplyScalar(-1).normalize();io(ee,re,S);for(let Z=0;Z<=i;Z++){let ie=Z/i,ce=A.clone().multiplyScalar(-ie).add($);io(ce,re,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),g.push(oe,.5+b.y/t),E.push(v++)}}p&&!s&&E.push(E[0]),F.push(E)}for(let U=0;U<F.length-1;U++)for(let E=0;E<F[0].length-1;E++){if(s&&p&&E==i)continue;let oe=F[U][E],Y=F[U+1][E],re=F[U+1][E+1],X=F[U][E+1],ee=h[re*3+0],Z=h[re*3+2];m.push(oe,Y,X),(ee!=0||Z!=0)&&m.push(Y,re,X)}c<Math.PI*2&&(j(-1,F[0],l),j(1,F[F.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Oc(h,3)),this.setAttribute("normal",new Oc(y,3)),this.setAttribute("uv",new Oc(g,2));function W(U,E,oe,Y,re,X,ee,Z){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;Z&&(se-=1),se*=Y;let pe=new Zt(Math.sin(se),Math.cos(se)*ee),Le=pe.clone().multiplyScalar(re).add(X);io(Le,oe,b),h.push(b.x,b.y,b.z),io(pe,oe,S),y.push(S.x,S.y,S.z),g.push(E,.5+b.y/t),U.push(v++)}}function H(U,E,oe,Y,re){let X=new Ua,ee=new Zt,Z=[oe,Y];re<0&&Z.reverse();for(let ie of Z)ee.set(ie,w*re),io(ee,E,X),h.push(X.x,X.y,X.z),y.push(0,re,0),g.push(.5,.5),U.push(v++)}function j(U,E,oe){let Y=new Zt(Math.sin(oe),Math.cos(oe)),re=new Zt(-Math.cos(oe),Math.sin(oe)),X=new Ua,ee=U<0?(ce,se,pe)=>m.push(ce,se,pe):(ce,se,pe)=>m.push(ce,pe,se),Z=new Zt((r+e+V+z)/4,0);io(Z,Y,X),h.push(X.x,X.y,X.z),y.push(re.x,0,re.y),g.push(.5,.5);let ie=v++;for(let ce of E){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(re.x,0,re.y);let pe=g.slice(ce*2,ce*2+2);g.push(...pe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var Lm=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:0,cornerRadiusBottom:0,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,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:a,cornerSegments:d}=n.parameters,p;return u>0||a>0||c<360?p=new Vi(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new i_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as s_,BufferGeometry as a_,Float32BufferAttribute as Ac,Vector3 as ji}from"three";var Bm=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:0,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:s,cornerRadius:l,cornerSegments:c}=n.parameters,u;return l==0?u=new s_(r,e,t,o,i,s):u=new Cc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Ic=Math.PI/2,Cc=class extends a_{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,r/2,e/2,t/2);let a=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,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),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,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),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new Ac(d,3)),this.setAttribute("normal",new Ac(p,3)),this.setAttribute("uv",new Ac(f,2));function y(w,S,b,T,_,x,C,P,I,A,O){let V=(x-2*l)/I,z=(C-2*l)/A,$=x/2-l,te=C/2-l,K=P/2,q=I+1,k=A+1,G=0,D=0,B=new ji;for(let L=0;L<k;L++){let F=L*z-te;for(let W=0;W<q;W++){let H=W*V-$;B[w]=H*T,B[S]=F*_,B[b]=K,d.push(B.x,B.y,B.z),B[w]=0,B[S]=0,B[b]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(W/I),f.push(1-L/A),G+=1}}for(let L=0;L<A;L++)for(let F=0;F<I;F++){let W=m+F+q*L,H=m+F+q*(L+1),j=m+(F+1)+q*(L+1),U=m+(F+1)+q*L;a.push(W,H,U),a.push(H,j,U),D+=6}u.addGroup(h,D,O),h+=D,m+=G}function g(w,S,b,T,_,x,C,P,I,A,O){let V=(C-2*l)/A,z=C/2-l,$=P/2-l,te=I/2,K=A+1,q=0,k=0,G=new ji,D=new ji;for(let B=0;B<c+1;B++){let L=B/c*Ic,F=Math.sin(L)*l,W=(1-Math.cos(L))*l,H=Math.sin(L),j=Math.cos(L);G[S]=($+F)*_,G[b]=(te-W)*x,D[w]=0,D[S]=H*Math.sign(G[S]),D[b]=j*Math.sign(G[b]);for(let U=0;U<K;U++){let E=U*V-z;G[w]=E*T,d.push(G.x,G.y,G.z),p.push(D.x,D.y,D.z),f.push(U/A),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<A;L++){let F=m+L+K*B,W=m+L+K*(B+1),H=m+(L+1)+K*(B+1),j=m+(L+1)+K*B;a.push(F,W,j),a.push(W,H,j),k+=6}u.addGroup(h,k,O),h+=k,m+=q}function v(w,S,b){let T=new ji,_=new ji(r/2,e/2,t/2);_.subScalar(l);let x=[],C=w*S*b>0?(I,A,O)=>a.push(I,A,O):(I,A,O)=>a.push(I,O,A);for(let I=0;I<=c;I++){let A=[],O=Ic*(1-I/c),V=Math.cos(O),z=Math.sin(O),$=0;for(let te=0;te<=I;te++){let K=Math.cos($),q=Math.sin($);T.x=V*K,T.y=z,T.z=V*q;let k=_.clone().addScaledVector(T,l);d.push(w*k.x,S*k.y,b*k.z),p.push(w*T.x,S*T.y,b*T.z),f.push(0,0),A.push(m++),$+=Ic/I}x.push(A)}let P=x.length-1;for(let I=0;I<P;I++){let A=x[I],O=x[I+1],V=A.length-1;C(A[0],O[1],O[0]);for(let z=1;z<=V;z++)C(A[z-1],A[z],O[z]),C(A[z],O[z+1],O[z])}}}};import{BufferGeometry as l_,Float32BufferAttribute as Nc,Triangle as c_,Vector3 as zr,Vector2 as Ec}from"three";var so=class extends l_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Nc(l,3)),this.setAttribute("normal",new Nc(u,3)),this.setAttribute("uv",new Nc(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new zr,h=m.clone(),y=new c_,g=i*o,v=o-g,w=s+1,S=new zr,b=(q,k)=>S.subVectors(q,k).normalize(),T=(q,k)=>Array(q).fill(void 0).map(k),_=T(r.length/3,(q,k)=>new zr().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let q=0;q<_.length;q++){let k=_[q],G=[],D,B,L,F=1e10,W=-1;for(;(W=e.indexOf(q,W+1))!=-1;){let E=W-W%3;D=e[E+(W+1)%3],B=e[E+(W+2)%3],L=k.distanceToSquared(_[D]),F=Math.min(F,L),G.push([D,B,L])}F+=1e-6;let H=[],j=0,U=G.length;for(let E=0;E<U;E++){[D,B,L]=G[j];let oe=x[D]?.includes(q)==!0;L<=F&&H.push(D+ +oe*C),j=G.findIndex(Y=>Y[0]==B)}x.push(H)}let P=[];{let q=0,k=0,G,D,B=f==3;for(let L=0;L<=s;L++){G=L*(L+1)/2,D=(L+1)*(L+2)/2;for(let F=0;F<s-L;F++)[q,k]=[G+F+L+2,D+F+L+3],P.push(G,D,...B?[k,G]:[q,D],k,q),[G,D]=[q,k];P.push(G,D,G+s+2)}}let I=m.clone(),A=m.clone(),O=m.clone(),V=m.clone(),z=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),I.copy(m).multiplyScalar(v);let k=x[q];for(let H=0;H<k.length;H++){let j=k[H],U=k[(H+1)%f];y.setFromPointsAndIndices(_,q,j%C,U%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[q][H])}let G=[],D=[],B=[],L=new zr;s==0&&[...te[q]].reduce((H,j)=>H.add(j),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let j=[],U=(H-1+f)%f,E=te[q][U],oe=te[q][H];m.copy(E).sub(I),h.copy(oe).sub(I);let Y=I.angleTo(m),re=m.angleTo(h),X=Math.cos(Y)*g;s==0?A.copy(L):A.copy(I).setLength(v+X),D.push(X);let ee=[A,E,oe];for(let Z=0;Z<2;Z++){let ie=ee[Z],ce=ee[Z+1];V.subVectors(ie,I),z.subVectors(ce,I),O.crossVectors(V,z).normalize();for(let se=0;se<w;se++){let pe=[Y,re][Z]*se/w;m.copy(V).applyAxisAngle(O,pe).add(I),G.push(m.clone()),Z&&(b(m,I),j.push([se==0?ie:m.clone(),S.clone()]))}Z&&(b(ce,I),j.push([ce,S.clone()]))}B.push(j)}$.push(B);let F=2*w,W=2;for(let H=0;H<f;H++){let j=F*H,U=F*((H+1)%f),E=[G[j]];for(let Y=1;Y<w;Y++){V=G[j+Y],z=G[U+Y],E.push(V);for(let re=1,X=Y-W+1;re<=X;re++)m.lerpVectors(V,z,re/(X+1)),m.sub(I).setLength(D[H]).add(I),E.push(m.clone());E.push(z)}for(let Y=0;Y<w;Y++)E.push(G[Y+w+j]);E.push(G[U+w]);let oe=P.map(Y=>E[Y]);l.push(...oe.map(Y=>[Y.x,Y.y,Y.z]).flat()),u.push(...oe.map(Y=>(b(Y,I),[S.x,S.y,S.z])).flat())}}let K=[];for(let q=0;q<x.length;q++)for(let k=0;k<f;k++){let G=x[q][k];if(G<C){let D=x[G].findIndex(F=>F%C==q),B=$[q][k],L=$[G][D];for(let F=0;F<w;F++){let W=B[F],H=L[w-F],j=B[F+1],U=L[w-(F+1)];[W,H,j,j,H,U].forEach(E=>{l.push(E[0].x,E[0].y,E[0].z),u.push(E[1].x,E[1].y,E[1].z)})}K.push(B[0][0],L[w][0],B[w][0],L[0][0])}}for(;K.length;){let q,k,G,D;[q,k]=K.splice(0,2);let B=[q];for(;q!=k;)B.push(k),G=K.indexOf(k),D=G%2,k=K.splice(G-D,2)[1-D];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=S.dot(B[0])<0;L&&S.negate();for(let F=1;F<=B.length-2;F++)[B[F+ +L],B[F+1-+L],B[0]].forEach(W=>{l.push(W.x,W.y,W.z),u.push(S.x,S.y,S.z)})}}function d(){let p=new zr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=b(p)/2/Math.PI+.5,C=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new zr,m=new zr,h=new zr,y=new zr,g=new Ec,v=new Ec,w=new Ec,S=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),w.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=b(y);S(g,x+0,f,C),S(v,x+2,m,C),S(w,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],P=c[_+4],I=Math.max(x,C,P),A=Math.min(x,C,P);I>.9&&A<.1&&(x<.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 so(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as d_}from"three";var Dm=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:s}=n.parameters,l=o===0&&i!==0?new Fi(r*.5,i,s):new d_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Fi=class extends so{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-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],l=[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(s,l,c,r,e,t),this.type=c}static fromJSON(r){return new Fi(r.radius,r.corner,r.cornerSides)}};import{Plane as S_,Shape as Km,Vector2 as Ur,Vector3 as w_,MathUtils as Vc,LineCurve as jc,QuadraticBezierCurve as Zm,CubicBezierCurve as qa}from"three";import{CubicBezierCurve as ka,EllipseCurve as u_,LineCurve as Ha,LineCurve3 as p_,MathUtils as f_,QuadraticBezierCurve as Lc,SplineCurve as m_,Vector2 as lt,Vector3 as Vm}from"three";var zi=1e-12,Bn=class{constructor(r){this.position=new lt;this.startPosition=new lt;this.uuid=f_.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 Bn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Dn=class extends Bn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Dn(this.parent).copy(this)}},Qt=class extends Bn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Dn(this),new Dn(this))}static create(e,t){let o=new Qt(e,new lt(...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 s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Qt(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 lt,t=new lt){let[o,i]=this.computeTangents();return o&&i&&(Gm(o,e),Gm(i,t)),[e,t]}computeTangent(e=new lt){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new lt){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Gm(n,r=new lt){let e=n.length();return r.set(-n.y/e,n.x/e)}var Bc=n=>n,Gn=new lt,Wa=new lt,h_=new lt,y_=new lt,g_=new lt,x_=new lt,jm=new Vm,Fm=new Vm;function zm(n){let r=new lt;r.addVectors(n.v0,Gn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new lt;return e.addVectors(n.v2,Wa.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ka(n.v0,r,e,n.v2)}function Ui(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function v_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function b_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Dc(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 Um(n,r,e){return Rm(n,r)&&Rm(r,e)&&Mc(n.position,r.position,e.position)}function Mc(n,r,e){return Gn.copy(r).sub(n).cross(Wa.copy(e).sub(n))===0}function km(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(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(l+c,s+u),o.set(l-c,s-u),[t,o]}function Hm(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Wm(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),d;return Dc(r,n,e)>Math.PI&&(a*=-1),Ui(u,l)?d=(l+u)*(t/a-.5)*8/3/(s-c):d=(s+c)*(t/a-.5)*8/3/(u-l),o.set(r.x-d*l,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Gc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Rm(n,r){return Mc(n.position,n.controls[1].position,r.position)&&Mc(n.position,r.controls[0].position,r.position)}function qm(n,r,e,t,o=.5){let i=Gn.subVectors(r,n).multiplyScalar(o).add(n),s=Wa.subVectors(e,r).multiplyScalar(o).add(r),l=h_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=y_.subVectors(s,i).multiplyScalar(o).add(i),a=g_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=x_.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,a.x,a.y,d.x,d.y,t.x,t.y]}function $m(n,r,e=12,t=!0){let o=Fm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=Bc(r[c]),a=Gn,d=ao(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof ka||u instanceof Lc||u instanceof Ha){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&b_(i,o))continue;i===void 0&&(i=jm),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Ym(n,r,e,t=12,o=!0){let i=Fm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=Bc(r[c]),d=Gn,p=ao(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof ka||a instanceof Lc||a instanceof Ha){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=jm:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function Rc(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=ao(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=ao(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=ao(n[0].roundedCurveCorner,r)*.5),t}function ao(n,r=12){return n&&n instanceof u_?r*2:n&&(n instanceof Ha||n instanceof p_)?1:n&&n instanceof m_?r*n.points.length:r}function Xm(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Bc(r[s]),c=ao(l,e),u=Gn;for(let a=0;a<=c;a++)if(l instanceof ka||l instanceof Lc||l instanceof Ha){if(l.getPoint(a/c,u),o!==void 0&&v_(o,u,zi))continue;o===void 0&&(o=Wa),o.copy(u),n.push(u.x,u.y),i++}}return Ui(n[0],n[n.length-2],zi)&&Ui(n[1],n[n.length-1],zi)&&(n.pop(),n.pop()),t&&i>1&&!(Ui(n[i-1],n[1],zi)&&Ui(n[i-2],n[0],zi))&&(n.push(n[0],n[1]),i++),n}var Fc=new Ur,__=new Ur,T_=new Ur,P_=new Ur,O_=new Ur,A_=new Ur,Se=class extends Km{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new S_(new w_(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Vc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Qt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),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 s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],u=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=u;else return a+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 s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.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 s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Fc.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Vc.generateUUID()){let i;e instanceof Ur?i=e:i=new Ur(e,t);let s=new Qt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,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 s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}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 $m(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Rc(this.points,e,!1),this.roundedCurveDivisions=Rc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Ym(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Xm(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,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=ao(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(Gc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(Fc.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=l[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Gc(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 s=this.points[t-1];this._applyCurveForPoint(i,s)}}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 s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,a=l&&c&&Um(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),w=Math.min(g,v),S=1-w/h,b=w/y,T=d.getPointAt(S,Fc),_=p.getPointAt(b,__);this._subSplitCurve(d,f,S,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Dc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,A]=km(T,_,P,T_,P_),O=Hm(I,A,s.position),[V,z]=Wm(O,T,_,P,O_,A_);x=new qa(T.clone(),V.clone(),z.clone(),_.clone())}else x=new Zm(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof jc)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,u=l.getUtoTmapping(o,0),a=qm(l.v0,l.v1,l.v2,l.v3,u);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return t}clone(){let e=new Se(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,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],u=e.points[i+3],a=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Qt(Vc.generateUUID(),new Ur(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof qa&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof Zm&&(i[l]=zm(i[l]));for(l=0,c=i.length;l<c;l++){let d=i[l],p=l>0?i[l-1]:null,f;d instanceof qa?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof jc&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof qa?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof jc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Km&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),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 Uc=Math.PI*2;function zc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function I_(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),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Qm(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 C_(n,r,e,t,o,i,s,l,c,u){let a=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*d-a*f-d*p;m<0&&(m=0),m/=a*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,w=(s-h)/o,S=(l-y)/i,b=(-s-h)/o,T=(-l-y)/i,_=Qm(1,0,w,S),x=Qm(w,S,b,T);return!u&&x>0&&(x-=Uc),u&&x<0&&(x+=Uc),{centerx:g,centery:v,ang1:_,ang2:x}}function Jm({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,a=(r-t)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=C_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Uc/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let w=0;w<v;w++)c.push(I_(f,m)),f+=m;return c.map(w=>{let{x:S,y:b}=zc(w[0],o,i,h,y),{x:T,y:_}=zc(w[1],o,i,h,y),{x,y:C}=zc(w[2],o,i,h,y);return{x1:S,y1:b,x2:T,y2:_,x,y:C}})}import{BufferAttribute as Ya,BufferGeometry as B_}from"three";var ve;(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"})(ve||(ve={}));var De;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(De||(De={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var ae=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){ue(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){ue(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){ue(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){ue(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 s,l,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)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,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)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),ki=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}(),$a=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}(),Rn=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}(),eh=function(){function n(){var r=new Rn,e=new ki,t=new $a(0),o=new $a(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 $a(0),t=new $a(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;ue(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 s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;ue(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 s=e;do s.Lface=o,s=s.Lnext;while(s!==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,s=r.next;s.prev=i,i.next=s},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,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new Rn,e=new Rn,t=new ki,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 Rn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ki;this.makeFace_(s,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 ki;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 Rn;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 s=new ki;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;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);s=r.prev,l=r.next,l.prev=s,s.next=l},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,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&ae.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)ue(c.Sym.next===u.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(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}(),th=function(){function n(){this.handle=null}return n}(),rh=function(){function n(){this.key=null,this.node=0}return n}(),N_=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 th,this.handles[t]=new rh;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,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>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=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===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=s}},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 th;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new rh}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;ue(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}(),kc=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}(),oh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),E_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new oh,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 oh;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}(),M_=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,s=t.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var l=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){ue(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 kc;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 ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.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,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do ue(ae.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,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,ue(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),i=ae.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.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(ae.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,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new Rn,f,m;if(ue(!ae.vertEq(u,c)),ue(ae.edgeSign(c,r.event,s)<=0),ue(ae.edgeSign(u,r.event,l)>=0),ue(s!==r.event&&l!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ae.intersect(c,s,u,l,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(l.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(l.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ae.vertEq(p,s)||ae.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)>=0||!ae.vertEq(u,r.event)&&ae.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):(ae.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),ae.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,s,c,l,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,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ae.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ae.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,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,s,l,c;if(o=e.eUp,ae.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.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}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new kc;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ae.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.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);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new kc,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,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 E_(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,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++t===1)),ue(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,ae.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 N_(i,ae.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,ue(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||!ae.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}(),L_=function(){function n(){this.mesh=new eh,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=ve.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,s,l,c=[0,0,0],u=[0,0,0],a=[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 v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[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]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.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 s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.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(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.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&&(ae.edgeGoesRight(t.Lprev)||ae.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,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===De.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;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,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===De.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.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,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.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,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new eh),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,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=De.POLYGONS),s===void 0&&(s=!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_(),M_.computeInterior(this,s);var l=this.mesh;return e===De.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===De.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function Jt(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?De.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=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 L_;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var aV=ve.ODD,lV=ve.NONZERO,cV=ve.POSITIVE,dV=ve.NEGATIVE,uV=ve.ABS_GEQ_TWO,pV=De.POLYGONS,fV=De.CONNECTED_POLYGONS,mV=De.BOUNDARY_CONTOURS;var Vn=class extends B_{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=De.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}!c&&!u&&(l=Jt({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Ya(new Float32Array(p*3),3),this._normalAttribute=new Ya(new Float32Array(p*3),3),this._uvAttribute=new Ya(new Float32Array(p*2),2),this._indexAttribute=new Ya(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let S=0,b=p;S<b;S++){let T=S*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,w=g-y;for(let S=0,b=p;S<b;S++){let T=S*2,_=l.vertices[T+0],x=l.vertices[T+1],C=(_-m)/v,P=(x-y)/w;this._positionAttribute.setXYZ(S,_,x,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,C,P)}for(let S=0,b=f;S<b;S++){let T=S*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),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,(l?.elementCount??1)*3)}clone(){let e=new Vn(this._shape,this._curveSegments);return e.userData=Vr(this.userData),e}};import{BufferAttribute as Ka,BufferGeometry as D_}from"three";var Xa=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*Xa.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*Xa.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,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)}},Hi=Xa;Hi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Hc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),jn=class extends D_{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),C=[];for(let P=x.length-1;P>=1;P-=2){let I=x[P-1],A=x[P-0];C.push(I,A)}return C}),a=Jt({windingRule:l,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),d=Jt({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]});if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let C=_*2,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Hi(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],A=P+I,O={start:P,count:I,normals:[],continuous:[],concave:[]},V=P,z=A-1,$=P+1,te=this._shape.roundedCurves.length;do{let G=V-P,D=a.vertices[z*2+0],B=a.vertices[z*2+1],L=a.vertices[V*2+0],F=a.vertices[V*2+1],W=a.vertices[$*2+0],H=a.vertices[$*2+1],j=L-D,U=F-B,E=Math.sqrt(j*j+U*U);j/=E,U/=E;let oe=L-W,Y=F-H,re=Math.sqrt(oe*oe+Y*Y);oe/=re,Y/=re,O.normals[G*2+0]=-Y,O.normals[G*2+1]=oe,O.concave[G]=j*Y-U*oe>0;let X=a.vertexIndices[V];if(Array.isArray(X))O.continuous[G]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)O.continuous[G]=!0;else{let ie=Z===1?ee+1:ee-1;ie=(ie+te)%te;let ce=Z===1?0:1,se=this._shape.roundedCurves[ee].getTangent(Z),pe=this._shape.roundedCurves[ie].getTangent(ce);O.continuous[G]=se.dot(pe)>.95}}x&&(O.normals[G*2+0]*=-1,O.normals[G*2+1]*=-1),[z,V,$]=[V,$,$+1],$>=A&&($-=I)}while($!==P+1);let K=[];K.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,A*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((G,D)=>[D,D]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,A*2)});for(let G=1;G<=this._bevelSegments;G++){let D=G/this._bevelSegments*Math.PI/2,B=(1-Math.cos(D))*this._bevelSize,L=[],F=[],W=[],H=[],j=0;for(let E=0;E<I;E++){let oe=E*2,Y=(E-1+I)%I*2,re=a.vertices[O.start*2+oe+0],X=a.vertices[O.start*2+oe+1],ee=-O.normals[Y+0]*B,Z=-O.normals[Y+1]*B,ie=-O.normals[oe+0]*B,ce=-O.normals[oe+1]*B;if(O.concave[E]||!O.concave[E]&&x){let se=Math.atan2(Z,ee),pe=Math.atan2(ce,ie);pe>se&&(pe-=Math.PI*2);let Le=pe-se;if(O.continuous[E]||x){let ge=se+Le/2,Ge=Math.cos(ge)*B,Pe=Math.sin(ge)*B;L[2*j+0]=re+Ge*(x?-1:1),L[2*j+1]=X+Pe*(x?-1:1),H[j]=E,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Le)/Math.PI));for(let Ge=0;Ge<=ge;Ge++){let Pe=se+Le*(Ge/ge),yt=Math.cos(Pe)*B,gt=Math.sin(Pe)*B;L[2*j+0]=re+yt,L[2*j+1]=X+gt,H[j]=E,j++}}}else L[2*j+0]=re+ee,L[2*j+1]=X+Z,H[j]=E,F[E]=j,j++,L[2*j+0]=re,L[2*j+1]=X,H[j]=E,j++,L[2*j+0]=re+ie,L[2*j+1]=X+ce,H[j]=E,W[E]=j,j++}let U=Jt({windingRule:ve.POSITIVE,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:E=>{let Y=E.Org.idx,re=H[Y],X=H[(Y+1)%H.length];E.idx=[re,X],E.Sym.idx=[X,re]},vertexIdCallback:E=>{let oe=E.Lprev.idx;return[oe?oe[1]:0,E.idx?E.idx[0]:0]}});if(!U)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!U.vertexCount)break;for(let E=0;E<U.vertexIndices.length;E++){let[oe,Y]=U.vertexIndices[E];if(oe===Y)continue;let re=Y;Y<oe&&(re+=I);for(let X=oe;X<re;X++){let ee=X%I,Z=(X+1)%I;if(!O.continuous[ee]||!O.continuous[Z]){U.vertexIndices[E]=[oe,ee],U.vertexIndices.splice(E+1,0,[Z,Y]),U.vertices.splice((E+1)*2,0,U.vertices[E*2],U.vertices[E*2+1]);break}}}K.push({bevelI:G,angle:D,size:B,boundary:U,reverseMap:H,insetPoints:L})}let q=(G,D,B)=>{let L=0,F=G.boundary.vertexIndices.length;for(;L<F&&B(G.boundary.vertexIndices[D]);)D=(D+1)%F,L++;return L},k=g.length;for(let G=1;G<K.length;G++){let D=K[G-1],B=K[G],L=D.boundary.vertexIndices.length,F=B.boundary.vertexIndices.length;if(!L||!F)break;let W=O.concave.length,H=0,j=Hc(H,I);for(;!D.boundary.vertexIndices.filter(j).length||!B.boundary.vertexIndices.filter(j).length;)H++,j=Hc(H,I);let U=D.boundary.vertexIndices.findIndex(j),E=B.boundary.vertexIndices.findIndex(j);do U=(U+1)%L;while(j(D.boundary.vertexIndices[U]));do E=(E+1)%F;while(j(B.boundary.vertexIndices[E]));H=(H+1)%I;let oe=H,Y=this._buildBevelVert(O,D,(U-1+L)%L),re=this._buildBevelVert(O,B,(E-1+F)%F),X=Y,ee=re,Z,ie,ce=!1;do{j=Hc(H,I);let se=q(D,U,j),pe=q(B,E,j),Le=ce;if(ce=!1,se&&!pe){for(let ge=0;ge<se;ge++)Z=this._buildBevelVert(O,D,(U+ge)%L,ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;ce=!0}else if(!se&&pe)for(let ge=0;ge<pe;ge++)ie=this._buildBevelVert(O,B,(E+ge)%F,ge/(pe-1)),g.push(ee.topN,X.topP,ie.topP),g.push(X.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&pe)if(Z=this._buildBevelVert(O,D,U,0),ie=this._buildBevelVert(O,B,E,0),Le?(g.push(X.topN,ie.topP,ee.topN),g.push(X.topN,Z.topP,ie.topP),g.push(ie.bottomP,X.bottomN,ee.bottomN),g.push(ie.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP)),X=Z,ee=ie,se===pe)for(let ge=1;ge<se;ge++)Z=this._buildBevelVert(O,D,(U+ge)%L,ge/(se-1)),ie=this._buildBevelVert(O,B,(E+ge)%F,ge/(pe-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP),X=Z,ee=ie;else if(se>pe){let ge=se/pe,Ge=0;for(let Pe=1;Pe<se;Pe++)Z=this._buildBevelVert(O,D,(U+Pe)%L,Pe/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Pe>(Ge+1)*ge&&(Ge++,ie=this._buildBevelVert(O,B,(E+Ge)%F,Ge/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ge=pe/se,Ge=0;for(let Pe=1;Pe<pe;Pe++)ie=this._buildBevelVert(O,B,(E+Pe)%F,Pe/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie,Pe>(Ge+1)*ge&&(Ge++,Z=this._buildBevelVert(O,D,(U+Ge)%L,Ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}U=(U+se)%L,E=(E+pe)%F,H=(H+1)%W}while(H!==oe)}if(this._buildWall(K,O,g),x){let G=[];for(let D=g.length-1;D>=k+2;D-=3){let B=g[D-2],L=g[D-1],F=g[D-0];G.push(F,L,B)}g.splice(k,g.length-k,...G)}if(x){let G=[];for(let D=K[K.length-1].boundary.vertices.length-1;D>=1;D-=2){let B=K[K.length-1].boundary.vertices[D-1],L=K[K.length-1].boundary.vertices[D-0];G.push(B,L)}v.push(G)}if(!x){let G=K[K.length-1],D=Jt({windingRule:K.length>1?ve.POSITIVE:ve.ODD,elementType:De.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...v]});if(!D)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<D.elementCount*3;B+=3){let L=this._buildSurfaceVert(D,D.elements[B+0]),F=this._buildSurfaceVert(D,D.elements[B+1]),W=this._buildSurfaceVert(D,D.elements[B+2]);g.push(L.top,F.top,W.top),g.push(W.bottom,F.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new Ka(Uint32Array.from(g),1),S=new Ka(this._buffer.positions,3),b=new Ka(this._buffer.normals,3),T=new Ka(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,T.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",T),this.setIndex(w)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],w=t.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,T=(w-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],P=e.normals[g+1];if(p){let z=C-_,$=P-x;_=_+z*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),A=I*3,O=I*2,V={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[A+0]=v,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=this._depth-S,this._buffer.normals[A+0]=_*f,this._buffer.normals[A+1]=x*f,this._buffer.normals[A+2]=m,this._buffer.uvs[O+0]=b,this._buffer.uvs[O+1]=T,this._buffer.positions[A+3]=v,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=S,this._buffer.normals[A+3]=_*f,this._buffer.normals[A+4]=x*f,this._buffer.normals[A+5]=-m,this._buffer.uvs[O+2]=T,this._buffer.uvs[O+3]=b,d||(I+=2,A+=6,O+=4,V.topP=I+0,V.bottomP=I+1,this._buffer.positions[A+0]=v,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=this._depth-S,this._buffer.normals[A+0]=C*f,this._buffer.normals[A+1]=P*f,this._buffer.normals[A+2]=m,this._buffer.uvs[O+0]=b,this._buffer.uvs[O+1]=T,this._buffer.positions[A+3]=v,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=S,this._buffer.normals[A+3]=C*f,this._buffer.normals[A+4]=P*f,this._buffer.normals[A+5]=-m,this._buffer.uvs[O+2]=T,this._buffer.uvs[O+3]=b),this.vertexCache[s]=V,V}clone(){let e=new jn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Vr(this.userData),e}};var Fn=class extends jn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Vr(this.userData),e}};var _t=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:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new Vn(n.shape,o,{windingRule:s}):l=new Fn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as ih,Vector2 as sh}from"three";var ah=Math.PI*2,Un=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{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,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:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=G_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=_t.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function G_(n,r,e,t,o,i){if(t>=ah)return o>30||o%4===0?(V_(n,r,e,i),Math.round(o/4)):nh(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},u=Jm({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?R_(n,s.x,s.y,u,o,r,e,i):nh(n,t,o,r,e,i)}function R_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(zn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=zn(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 l>0?lh(n,i,s,l):n.addPoint(zn(0,0)),c}function nh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(zn(u,a))}return r<ah?i>0?lh(n,t,o,i):n.addPoint(zn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&ch(n,t,o,i)),1}function V_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(Za(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Za(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Za(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Za(o,i-e,o+l,i-e,o-l,i-e)),t>0&&ch(n,r,e,t)}function zn(n,r){return new Qt(ih.generateUUID(),new sh(n,r))}function Za(n,r,e,t,o,i){let s=zn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function lh(n,r,e,t){dh(n,r,e,t).forEach(i=>n.addPoint(i))}function ch(n,r,e,t){let o=dh(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function dh(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new sh(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=ih.generateUUID(),u}).reverse();return l.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(u)}),l}import{BufferGeometry as j_,Float32BufferAttribute as Wc,Vector3 as uh}from"three";var ph=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),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,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:s,pathRadius:l,pathType:c,pathSegments:u,cornerRadius:a,cornerSegments:d}=n.parameters,p=new Io(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Io=class extends j_{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,d=1,p=1,f=!1){super();let m=r&&s===1;m&&(p=0),d>100&&(d=100);let h=()=>new uh,y=new uh,g=h(),v=h(),w=h(),S,b,T,_,x,C,P,I,A=h(),O=h(),V=h(),z=h(),$=h(),te=h(),K=h(),q=h(),k=t-2*c+.001,G=k/s,D=Math.ceil(l*s),B=D+1,L=k/D,F=-k/2,W=a+1,H=2*Math.PI/a,j=Math.PI/2/p,U=.01,E=Math.min((1-d/100)*c,c-U),oe=c-E,Y=0,re=2,X=p*re+re,ee=W*X/re,Z=ee+W*B,ie=W*(B+X),[ce,se,pe]=[3,3,2].map(He=>Array(ie*He).fill(0)),Le=[],ge=i-c;function Ge(He,It){let sr=Math.PI/2;C=It*L,I=2*Math.PI*(C%G)/G+sr,C+=F,P=Math.sin(I)*ge,x=Math.cos(I)*ge,r?He.set(x,P,C):He.set(x,C,P)}Ge(y,-1e-10),Ge(g,0),A.copy(y),Ge(y,1);let Pe=y.distanceTo(g),yt=m?0:oe+E,gt=Pe*D+2*yt,Ho=E,Dt=gt-yt;for(let He=0;He<=D;He++){Ge(v,He),q.subVectors(v,A).normalize(),A.copy(v),te.copy(v).setComponent(+r+1,0).normalize(),K.crossVectors(q,te).normalize();let It=He===0,sr=He===D,Og=It?3*Math.PI/2:j,Ag=It?Ho:Dt,Ig=It?W:Z,Cg=It?0:ie-W,Ng=q.clone().multiplyScalar(It?-oe:oe).add(v),Eg=q.clone().multiplyScalar(It?-1:1).normalize();for(let Nr=0;Nr<W;Nr++){let eu=Nr*H;if(O.addVectors(y.copy(te).multiplyScalar(c*Math.cos(eu)),g.copy(K).multiplyScalar(c*Math.sin(eu))),V.copy(O).normalize(),It||sr){m||(Y=Cg+Nr,[0,1,2].forEach(xt=>{ce[Y*3+xt]=Ng.getComponent(xt),se[Y*3+xt]=Eg.getComponent(xt)}),pe[Y*2]=+sr,pe[Y*2+1]=Nr/a),g.copy(V).multiplyScalar(E),w.addVectors(v,g);for(let xt=0;xt<p;xt++){let Fl=xt*j+Og;z.addVectors(y.copy(q).multiplyScalar(oe*Math.sin(Fl)),g.copy(V).multiplyScalar(oe*Math.cos(Fl))),$.copy(z).normalize(),g.addVectors(w,z),z.normalize(),Y=Ig+xt*W+Nr,[0,1,2].forEach(Es=>{ce[Y*3+Es]=g.getComponent(Es),se[Y*3+Es]=$.getComponent(Es)});let Mg=+It+Math.sin(Fl);pe[Y*2]=(Ag+oe*Mg)/gt,pe[Y*2+1]=Nr/a}}g.addVectors(v,O),Y=ee+He*W+Nr,[0,1,2].forEach(xt=>{ce[Y*3+xt]=g.getComponent(xt),se[Y*3+xt]=V.getComponent(xt)}),pe[Y*2]=(yt+He*Pe)/gt,pe[Y*2+1]=Nr/a}}let Wo=B+2*p+re,Vl=1,[jl,xi]=[+m,Wo-1];f&&(xi-=1);for(let He=jl;He<=xi-1;He++){let It=m&&He===xi-1;for(let sr=0;sr<W-1;sr++)S=He*W+sr,b=S+1,T=(It?sr:S)+W,_=(It?sr+1:b)+W,He===0?Le.push(b,_,T):He===Wo-2?Le.push(S,b,T):Le.push(S,b,T,b,_,T)}this.setIndex(Le),this.setAttribute("position",new Wc(ce,3)),this.setAttribute("normal",new Wc(se,3)),this.setAttribute("uv",new Wc(pe,2))}};import{IcosahedronGeometry as F_}from"three";var fh=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:s}=n.parameters,l=o===0&&i!==0?new Wi(r*.5,i,s):new F_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Wi=class extends so{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],s=[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],l="IcosahedronGeometry";super(i,s,l,r,e,t),this.type=l}static fromJSON(r){return new Wi(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as z_,Shape as U_}from"three";var mh=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 U_;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 z_(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as wh,BufferGeometryLoader as eT,Vector3 as tT,BoxGeometry as _h}from"three";import{BufferGeometry as K_,Vector2 as Xc,Vector3 as Sh}from"three";import{Box3 as k_,BufferAttribute as qi,BufferGeometry as hh,Color as Yc,EventDispatcher as H_,Float32BufferAttribute as kn,Matrix3 as yh,Matrix4 as bh,MathUtils as W_,Object3D as q_,Sphere as $_,Vector2 as Lt,Vector3 as ot,Vector4 as Y_}from"three";var hr=new bh,qc=new q_,Qa=new ot,lo=class extends H_{constructor(){super(),this.uuid=W_.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 yh().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 s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return hr.makeRotationX(r),this.applyMatrix4(hr),this}rotateY(r){return hr.makeRotationY(r),this.applyMatrix4(hr),this}rotateZ(r){return hr.makeRotationZ(r),this.applyMatrix4(hr),this}translate(r,e,t){return hr.makeTranslation(r,e,t),this.applyMatrix4(hr),this}scale(r,e,t){return hr.makeScale(r,e,t),this.applyMatrix4(hr),this}lookAt(r){return qc.lookAt(r),qc.updateMatrix(),this.applyMatrix4(qc.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,s=o.normal,l=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 ot().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new Yc().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ot().fromBufferAttribute(s,p),new ot().fromBufferAttribute(s,f),new ot().fromBufferAttribute(s,m)],v=new Hn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Lt().fromBufferAttribute(c,p),new Lt().fromBufferAttribute(c,f),new Lt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Lt().fromBufferAttribute(u,p),new Lt().fromBufferAttribute(u,f),new Lt().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?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(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(Qa).negate(),this.translate(Qa.x,Qa.y,Qa.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new bh;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 ot,e=new ot;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),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 ot;if(r){let t=new ot,o=new ot;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],u=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,u),o.subVectors(c,u),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.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],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[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,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new lo;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,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let u=new ot,a={a:new ot,b:new ot,c:new ot};i.push(u),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(l.normal),u.a.copy(l.vertexNormals[0]),u.b.copy(l.vertexNormals[1]),u.c.copy(l.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 k_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new $_),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,s=this.vertices,l=r.vertices,c=this.faces,u=r.faces,a=this.colors,d=r.colors;e!==void 0&&(o=new yh().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,w=new Hn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let S=0,b=g.length;S<b;S++)h=g[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),w.vertexNormals.push(h);w.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)y=v[S],w.vertexColors.push(y.clone());w.materialIndex=m.materialIndex+t,c.push(w)}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],v=[];for(let w=0,S=g.length;w<S;w++)v.push(g[w].clone());this.faceVertexUvs[p].push(v)}}}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 a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.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 s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ot(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],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}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={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,w=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,w),_=a(_,5,S),_=a(_,6,b),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(w&&t.push(d(h.normal)),S){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(b&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(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 l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[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,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new lo().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],v=[];for(let w=0,S=g.length;w<S;w++){let b=g[w];v.push(b.clone())}this.faceVertexUvs[p].push(v)}}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 s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[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 a=r.boundingBox;a!==null&&(this.boundingBox=a.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 $c().fromGeometry(this),e=new hh,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Ja.call(new qi(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Ja.call(new qi(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",gh.call(new qi(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",xh.call(new qi(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",xh.call(new qi(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let u=s[l],a=new kn(u.data.length*3,3);a.name=u.name,i.push(Ja.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new kn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",vh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new kn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",vh.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 hh,t=r.geometry;if(r.isPoints||r.isLine){let o=new kn(t.vertices.length*3,3),i=new kn(t.colors.length*3,3);if(e.setAttribute("position",Ja.call(o,t.vertices)),e.setAttribute("color",gh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new kn(t.lineDistances.length,1);e.setAttribute("lineDistance",X_.call(s,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}};lo.prototype.isGeometry=!0;var $c=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,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.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,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[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 v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.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 Lt,new Lt,new Lt))}if(s===!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 Lt,new Lt,new Lt))}for(let b=0;b<c;b++){let T=l[b].vertices;u[b].data.push(T[v.a],T[v.b],T[v.c])}for(let b=0;b<d;b++){let T=a[b].vertexNormals[g];p[b].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.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}},Hn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new ot,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Yc,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}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 X_(n){return this.array.set(n),this}function gh(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 Yc),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function xh(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 Lt),r[e++]=i.x,r[e++]=i.y}return this}function Ja(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 ot),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function vh(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 Y_),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var Z_=["a","b","c"];function Q_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Kc(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Zc(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,u;if(t.has(c))u=t.get(c);else{let a=e[s],d=e[l];u={a,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function J_(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],Zc(s.a,s.b,n,t,s,e),Zc(s.b,s.c,n,t,s,e),Zc(s.c,s.a,n,t,s,e)}function el(n,r,e,t,o){n.push(new Hn(r,e,t,void 0,void 0,o))}function Wn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function tl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var rl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof K_?r=new lo().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 Sh,t,o,i,s,l,c=r.vertices,u=r.faces,a=r.faceVertexUvs[0],d=a!==void 0&&a.length>0,p=[],f=new Map;J_(c,u,p,f);let m=[],h,y,g,v,w,S,b;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new Sh,w=3/8,S=1/8,b=y.faces.length,b!=2&&(w=.5,S=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),s=0;s<b;s++){for(v=y.faces[s],l=0;l<3&&(h=c[Q_(v,Z_[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(S),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,C,P,I,A,O=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),A=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),A.add(e),O.push(A)}let V=O.concat(m),z=O.length,$,te,K,q=[],k=[],G,D,B,L,F=new Xc,W=new Xc,H=new Xc;for(o=0,i=u.length;o<i;o++)v=u[o],$=Number(Kc(v.a,v.b,f).newEdge)+z,te=Number(Kc(v.b,v.c,f).newEdge)+z,K=Number(Kc(v.c,v.a,f).newEdge)+z,el(q,$,te,K,v.materialIndex),el(q,v.a,$,K,v.materialIndex),el(q,v.b,te,$,v.materialIndex),el(q,v.c,K,te,v.materialIndex),d&&(G=a[o],D=G[0],B=G[1],L=G[2],F.set(Wn(D.x,B.x),Wn(D.y,B.y)),W.set(Wn(B.x,L.x),Wn(B.y,L.y)),H.set(Wn(D.x,L.x),Wn(D.y,L.y)),tl(k,F,W,H),tl(k,D,F,H),tl(k,B,W,F),tl(k,L,H,W));r.vertices=V,r.faces=q,d&&(r.faceVertexUvs[0]=k)}};var We=new tT,Th=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new wh().copy(new _h(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(We),t={width:We.x,height:We.y,depth:We.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 wh().copy(new _h(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(We)):We.set(s.width,s.height,s.depth),(r!==We.x||e!==We.y||t!==We.z)&&i.scale(We.x===0?1:r/We.x,We.y===0?1:e/We.y,We.z===0?1:t/We.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new rl(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new eT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(We);let s=100/We.x;Object.assign(i.parameters,{width:100,height:We.y*s,depth:We.z*s}),r(this.build(i))})}};var ol=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 Se?n.shape:new Se,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:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,a=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,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}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=_t.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as rT,Float32BufferAttribute as Qc,Vector2 as yr,Vector3 as Ze}from"three";var Ph=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:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=new ed(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function $i(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Jc(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let u=s.add(l).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,t/Math.sin(u))}}function oT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var ed=class extends rT{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],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,v=Math.PI-g,w=new Ze(0,-f,0),S=new Ze(0,f,0),b=new yr(r,-f),T=new yr(h,-f),_=new yr(0,S.y).sub(T),x=new yr(0,S.y).sub(b),C=new yr(_.y,-_.x).normalize(),P=new yr(x.y,-x.x).normalize(),A=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,A);let O;{let k=new Ze(C.x,C.y,0),G=new Ze(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);O=k.angleTo(G)}let V=s/Math.tan((Math.PI-_.angle())/2),z=s/Math.tan((Math.PI-O)/2),$=new Ze;if(!i){u.push(w.x,w.y,w.z),a.push(0,-1,0),d.push(0,0);let k=p++,G=[],D=b.clone(),B=V/Math.cos(Math.PI/t);D.x-=B;for(let L=0;L<t;L++){let F=L/t*Math.PI*2+m,W=new yr(Math.sin(F),Math.cos(F));$i(D,W,$),u.push($.x,$.y,$.z),a.push(0,-1,0),d.push(0,0),G.push(p++)}for(let L=0;L<G.length;L++)c.push(G[L],k,G[(L+1)%G.length])}let te=[];{let k=new Ze,G=new Ze,D=new Ze,B=new Ze,L=new Ze,F=new Ze;for(let W=0;W<t;W++){let H=W/t*Math.PI*2+m,j=(W+.5)/t*Math.PI*2+m,U=(W+1)/t*Math.PI*2+m,E=new yr(Math.sin(H),Math.cos(H)),oe=new yr(Math.sin(j),Math.cos(j)),Y=new yr(Math.sin(U),Math.cos(U));$i(b,E,G),$i(b,Y,D),$i(C,oe,k),Jc(S,G,D,z,z,B),u.push(B.x,B.y,B.z),Jc(G,S,D,z,V,L),u.push(L.x,L.y,L.z),Jc(D,G,S,V,z,F),u.push(F.x,F.y,F.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let re=p++,X=p++,ee=p++;if(c.push(re,X,ee),s>0){{let ce=G.clone().add(D).multiplyScalar(.5),se=S.clone().sub(ce).normalize(),Le=w.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ge=F.clone().sub(L);K(ce,ge,Le,_.angle())}let Z,ie;{let ce=new Ze;$i(P,Y,ce);let se=F.clone().add(B).multiplyScalar(.5);se=oT(se,D,S);let pe=F.clone().sub(B);[Z,ie]=K(se,pe,ce,O,B.y)}{let ce=Z,se=ce.clone().setY(0).normalize(),pe=new Ze(0,-1,0),Le=se.clone().cross(pe);q(ce,se,pe,Le)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,pe=S.clone();pe.y-=s/Math.sin(ce-Math.PI/2);let Le=new Ze,ge=[];for(let Pe=0;Pe<l;Pe++){let yt=[],gt=Math.PI/2-se*Pe/l,Ho=Math.cos(gt),Dt=Math.sin(gt),Wo=j;for(let Vl=0;Vl<=Pe;Vl++){let jl=Math.cos(Wo),xi=Math.sin(Wo);k.x=Ho*xi,k.y=Dt,k.z=Ho*jl,Le.copy(pe).addScaledVector(k,s),u.push(Le.x,Le.y,Le.z),a.push(k.x,k.y,k.z),d.push(0,0),yt.push(p++),Wo+=Math.PI*2/Pe/t}ge.push(yt)}ie.reverse(),ge.push(ie);let Ge=ge.length-1;for(let Pe=0;Pe<Ge;Pe++){let yt=ge[Pe],gt=ge[Pe+1],Ho=yt.length-1;c.push(gt[1],yt[0],gt[0]);for(let Dt=1;Dt<=Ho;Dt++)c.push(yt[Dt],yt[Dt-1],gt[Dt]),c.push(gt[Dt+1],yt[Dt],gt[Dt])}}}}}this.setIndex(c),this.setAttribute("position",new Qc(u,3)),this.setAttribute("normal",new Qc(a,3)),this.setAttribute("uv",new Qc(d,2));function K(k,G,D,B,L){let F=-B/2,W=(Math.PI-B)/2,H=G.clone().normalize().cross(D);k.addScaledVector(D,-s/Math.sin(W));let j=new Ze,U=new Ze,E=1,oe=p,Y=[];for(let re=0;re<=l;re++){let X=F+re/l*B;U.set(0,0,0),U.addScaledVector(H,Math.sin(X)),U.addScaledVector(D,Math.cos(X));for(let ee=0;ee<=E;ee++){let Z=ee/E-.5;if(j.copy(k),j.addScaledVector(G,Z),j.addScaledVector(U,s),L!=null){let ie=Math.max(0,j.y-L);j.addScaledVector(G,-ie/G.y)}u.push(j.x,j.y,j.z),a.push(U.x,U.y,U.z),d.push(0,0),ee===0&&Y.push(p),p++}}for(let re=0;re<l;re++)for(let X=0;X<E;X++){let ee=oe+X+(E+1)*re,Z=ee+(E+1),ie=Z+1,ce=ee+1;c.push(ee,Z,ce),c.push(Z,ie,ce)}return[k.clone().addScaledVector(G,.5),Y]}function q(k,G,D,B){let L=Math.PI/2,F=x.angle()-L,W=[],H=new Ze,j=new Ze;for(let E=0;E<=l;E++){let oe=[],Y=E/l;for(let re=0;re<=E;re++){let ee=((E?re/E:0)-.5)*v,Z=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(F)*Z),se=(L+ce)*Y,pe=Math.cos(se),Le=Math.sin(se);H.set(0,0,0),H.addScaledVector(G,Le*Z),H.addScaledVector(D,pe),H.addScaledVector(B,Le*ie),j.copy(k).addScaledVector(H,s),u.push(j.x,j.y,j.z),a.push(H.x,H.y,H.z),d.push(0,0),oe.push(p++)}W.push(oe)}let U=W.length-1;for(let E=0;E<U;E++){let oe=W[E],Y=W[E+1],re=oe.length-1;c.push(oe[0],Y[1],Y[0]);for(let X=1;X<=re;X++)c.push(oe[X-1],oe[X],Y[X]),c.push(oe[X],Y[X+1],Y[X])}}}};var nl=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 Se?n.shape:new Se,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:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(S,b,T){return b>e&&T>t?Math.min(S*e/b,S*t/T):b>e?S*e/b:T>t?S*t/T:S}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=a.x,h=d.x,y=d.y,g=a.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 v=!0;for(let S=0,b=r.points.length;S<b;S++)r.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let w=_t.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as nT}from"three";var Oh=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:Math.PI},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=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:u}=n.parameters,a=new nT(.5*r,o,i,s,l,c,u);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as iT}from"three";var Ah=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 iT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as sT,Float32BufferAttribute as td,Vector3 as aT}from"three";var Ih=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:s}=n.parameters,l=new rd(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},rd=class extends sT{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,U=0,E=0)=>new aT(j,U,E),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],w=-g,S=+g,[b,T,_]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],x=(j,U=!1)=>Math.sin(j-Math.PI/(1+ +U)),C=(j,U=!1)=>Math.cos(j-Math.PI/(1+ +U));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=b.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,b.z-a),m.subVectors(b,T),h.subVectors(_,T);let A=Math.min(m.length(),h.length())*i/100,O=A*Math.tan(o/2),V=A/Math.cos(o/2),z=m.clone().normalize().add(h.normalize()).setLength(V).add(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let U=p+o+j*$;m.set(0,Math.sin(U)*O,Math.cos(U)*O),m.add(z),h.set(0,x(U),C(U)),d.push([m.clone(),h.clone()])}d.push([b,f(0,1,0)]);let te=Math.sin($/2)*O*2,K=d.length-1,q=d[0][0].distanceTo(d[1][0]),k=d[K-1][0].distanceTo(d[K][0]),G=q+te*s+k;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*te)/G);d[K].push(0);let[D,B,L]=d[0],F,W,H;for(let j=1;j<d.length;j++)[F,W,H]=d[j],l.push(w,D.y,D.z,w,F.y,F.z,S,D.y,D.z,S,D.y,D.z,w,F.y,F.z,S,F.y,F.z),c.push(0,B.y,B.z,0,W.y,W.z,0,B.y,B.z,0,B.y,B.z,0,W.y,W.z,0,W.y,W.z),u.push(0,L,0,H,1,L,1,L,0,H,1,H),[D,B,L]=[F,W,H];this.setAttribute("position",new td(l,3)),this.setAttribute("normal",new td(c,3)),this.setAttribute("uv",new td(u,2))}};var il=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 Se?n.shape:new Se,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:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,T=f+Math.sin(b)*d,_=m+Math.cos(b)*p;a.addPoint(a.createPoint(T,_))}}else for(let S=0;S<o;S++){let b=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(b,T)),y+=h,b=f+Math.cos(y)*g,T=m+Math.sin(y)*v,S<=o,a.addPoint(a.createPoint(b,T)),y+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let w=_t.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as lT}from"three";var Ch=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 lT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Nh=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:Math.PI*2,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:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=cT(r,e,t,r*.5,s,i,0,0,o,l,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function cT(n,r,e,t,o,i,s,l,c,u,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new Io(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as dT}from"three";var Eh=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:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new dT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Mh=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 Se?n.shape:new Se,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:s,isRect:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),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=_t.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Bh,Vector3 as gr,Matrix4 as sl,BufferGeometry as Gh,BufferAttribute as od,MathUtils as Dh}from"three";function Lh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var Rh=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),s=r?.shapeData??Un.create({parameters:cc}).userData.shape;return{path:n.path??rn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...na,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new nd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Gh,{userData:{...n,type:"PathGeometry"}})}},nd=class extends Gh{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)||!Lh(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,s=Math.max(2,Math.ceil(this.inputs.path.isClosed?o*e.length:(Math.min(i+o,1)-i)*e.length)),l=[],c=[],u=Math.floor(i*e.length);for(let b=0;b<s;b++){let T=this.inputs.path.isClosed?(b+u)%e.length:Math.min(e.length-1,b+u);l.push(e[T]),c.push(t[T])}this._isOpenEnded()&&this._isGeometryClosed()&&(s++,l.push(l[0].clone()),c.push(c[0].clone())),this._applyPathModifiers(c);let{regions:a,infos:d,vertices:p}=this._computeShapePoints(5),f=0,m=0;d.sort((b,T)=>b.start-T.start),d.forEach(b=>{b.verticesStart=f,b.verticesCount=b.count+b.continuous.reduce((T,_)=>T+(_?0:1),0),m+=b.verticesCount,f=m});let h=m*s,y,g=0;this._isOpenEnded()&&(y=Jt({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:a}),g=y.vertexCount);let v=h+2*g,w={positions:new Float32Array(v*3),normals:new Float32Array(v*3),uvs:new Float32Array(v*2)},S=[];d.forEach(b=>{this._extrudeRegion(b,p,c,l,w,S,this._isGeometryClosed()&&!this._isOpenEnded())}),y&&(this._closeEnd(y,h,S,w,c[0],l[0],!1),this._closeEnd(y,h+g,S,w,c[c.length-1],l[l.length-1],!0)),this.setAttribute("position",new od(w.positions,3)),this.setAttribute("normal",new od(w.normals,3)),this.setAttribute("uv",new od(w.uvs,2)),this.setIndex(S),this.computeVertexNormals()}_extractPathPoints(){let e=this.inputs.path.isClosed,o=ja(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(o.length<2)return[];let i=[o[0]];return o.forEach(s=>{i[i.length-1].distanceToSquared(s)>.001&&i.push(s)}),e&&i[i.length-1].distanceTo(i[0])<.001&&i.pop(),i}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new gr,l=new gr,c=new gr,u=new gr,a=new gr(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-1]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=i?e[0]:g.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let S=g.clone().sub(v).normalize(),b=w.clone().sub(g).normalize(),T=S.clone().add(b).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let C=new sl().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new gr(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 sl().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e){let t=e.length,{angle:o,twist:i,startScale:s,endScale:l}=this.inputs.parameters.extrusion,c=new sl,u=new sl;return e.forEach((a,d)=>{let p=this._isGeometryClosed()?d/t:d/(t-1);c.makeRotationZ(Dh.lerp(o,o+i,p));let f=Dh.lerp(s,l,p);u.makeScale(f,f,f),a.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],S=y[v-0];g.push(w,S)}return g}),l=Jt({windingRule:t,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]}),c=Jt({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],w=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),w<p&&(p=w),w>f&&(f=w)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],w=l.elements[g+1],S=v+w,b={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let T=v,_=S-1,x=v+1,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],A=l.vertices[_*2+1],O=l.vertices[T*2+0],V=l.vertices[T*2+1],z=l.vertices[x*2+0],$=l.vertices[x*2+1],te=O-I,K=V-A,q=Math.sqrt(te*te+K*K);te/=q,K/=q;let k=O-z,G=V-$,D=Math.sqrt(k*k+G*G);k/=D,G/=D,b.normals[P*2+0]=-G,b.normals[P*2+1]=k;let B=l.vertexIndices[T];if(Array.isArray(B))b.continuous[P]=!1;else{let[L,F]=o.getCurveIndexFromVertexId(B-1,!0);if(F>0&&F<1)b.continuous[P]=!0;else{let W=F===1?L+1:L-1;W=(W+C)%C;let H=F===1?0:1,j=o.roundedCurves[L].getTangent(F),U=o.roundedCurves[W].getTangent(H);b.continuous[P]=j.dot(U)>.95}}y&&(b.normals[P*2+0]*=-1,b.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=S&&(x-=w)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=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[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new gr,a=new gr,d=new Bh;o.forEach((f,m)=>{let h=i[m],y=e.verticesStart*o.length+e.verticesCount*m;for(let g=0;g<e.count;g++){let v=(e.start+g)*2;u.set(t[v+0],t[v+1],0).applyMatrix4(f).add(h),a.set(e.normals[g*2+0],e.normals[g*2+1],0).applyMatrix4(f).normalize(),d.set(g/(e.count-1),m/(o.length-1)),this._insertVertex(s,y,u,a,d),y++,e.continuous[g]||(this._insertVertex(s,y,u,a,d),y++)}});let p=c?o.length:o.length-1;for(let f=0;f<p;f++){let m=e.verticesStart*o.length+e.verticesCount*f,h=c&&f===p-1?e.verticesStart*o.length:e.verticesStart*o.length+e.verticesCount*(f+1),y=0;for(let g=0;g<e.count;g++){e.continuous[g]||y++;let v=(g+1)%e.count===0?0:y+1,w=m+y,S=m+v,b=h+v,T=h+y;e.isHole?l.push(w,b,S,w,T,b):l.push(w,S,b,w,b,T),y++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new gr(0,0,c?-1:1).applyMatrix4(s),d=new gr,p=new Bh;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,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,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as Vh,BufferGeometry as id}from"three";import{mergeBufferGeometries as uT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function pT(){let n=new id;return n.setAttribute("position",new Vh(new Float32Array([]),3)),n.setIndex(new Vh(new Uint16Array([]),1)),n}var fT=12,mT=1,qn=class extends id{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];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:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:a}=e,d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,p=hT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(b=>new Se().fromShape(b));this.vectorShapes=v;let w=v.map(b=>_t.create({shape:b,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?mT:fT}})),S=w.length?uT(w):pT();S.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([b,T])=>{this.setAttribute(b,T)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Lr(new id,qn.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 hT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDescriptor;var Dg=Object.getOwnPropertyNames;var Gg=Object.getPrototypeOf,Rg=Object.prototype.hasOwnProperty;var Ms=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Vg=(n,r)=>{for(var e in r)zl(n,e,{get:r[e],enumerable:!0})},jg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Dg(r))!Rg.call(n,o)&&o!==e&&zl(n,o,{get:()=>r[o],enumerable:!(t=Bg(r,o))||t.enumerable});return n};var Ls=(n,r,e)=>(e=n!=null?Lg(Gg(n)):{},jg(r||!n||!n.__esModule?zl(e,"default",{value:n,enumerable:!0}):e,n));var wm=Ms((gc,Sm)=>{(function(n,r){typeof gc=="object"?Sm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(gc,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,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var u=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|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,s]},u.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[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 s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Am=Ms((Va,Om)=>{(function(n,r){typeof Va=="object"&&typeof Om<"u"?r(Va):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Va,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 s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,w=r.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],T=[],_=e==="f"?w:v,x=h=p=0;x<w;x++)b[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var C,P=new Array(v).fill(0);for(x=0;x<w;x++)for(s=0;s<v;s++)b[x][s]=r[x][s];for(x=0;x<v;x++){for(S[x]=p,m=0,c=x+1,s=x;s<w;s++)m+=Math.pow(b[s][x],2);if(m<i)p=0;else for(f=(d=b[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<w;l++)m+=b[l][x]*b[l][s];for(d=m/f,l=x;l<w;l++)b[l][s]=b[l][s]+d*b[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(b[x][s],2);if(m<i)p=0;else{for(f=(d=b[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[x][x+1]=d-p,s=c;s<v;s++)S[s]=b[x][s]/f;for(s=c;s<w;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[x][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(y=Math.abs(P[x])+Math.abs(S[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=b[x][x+1]*p,s=c;s<v;s++)T[s][x]=b[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=S[x],c=x}if(e){if(e==="f")for(x=v;x<w;x++){for(s=v;s<w;s++)b[x][s]=0;b[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)b[x][s]=0;if(p!==0){for(f=b[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<w;l++)m+=b[l][x]*b[l][s];for(d=m/f,l=x;l<w;l++)b[l][s]=b[l][s]+d*b[l][x]}for(s=x;s<w;s++)b[s][x]=b[s][x]/p}else for(s=x;s<w;s++)b[s][x]=0;b[x][x]=b[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*S[x],S[x]=a*S[x],!(Math.abs(d)<=o));x++)if(p=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[x]),m=-d/f,e)for(s=0;s<w;s++)y=b[s][u],g=b[s][x],b[s][u]=y*a+g*m,b[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[l-1])-g)*(y+g)+((p=S[l-1])-(f=S[l]))*(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,x=c+(m=a=1);x<l+1;x++){if(p=S[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(S[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<w;s++)y=b[s][x-1],g=b[s][x],b[s][x-1]=y*a+g*m,b[s][x]=-y*m+g*a}S[c]=0,S[l]=d,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:b,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var uy=Ms(bl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,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*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?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=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._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\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._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:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&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$/,"")},a},_unlockAudio:function(){var a=this||r;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var w=0;w<a._howls.length;w++)a._howls[w]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._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(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!r.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.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 a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],typeof m!="string"){a._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=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__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?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,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 v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),w=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),S=w*1e3/Math.abs(y._rate),b=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=b,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var O=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(O,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,w):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,w),S!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),S)),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(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var O=x.play();if(O&&typeof Promise<"u"&&(O instanceof Promise||typeof O.then=="function")?(p._playLock=!0,_(),O.then(function(){p._playLock=!1,x._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)),x.playbackRate=y._rate,x.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}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),S):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(V){p._emit("playerror",y._id,V)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)P();else{p._playLock=!0,p._state="loading";var A=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,A,!1)};x.addEventListener(r._canPlayEvent,A,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),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(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),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(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;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=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._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(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,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 v=r.ctx.currentTime,w=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,w)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,w=Math.abs(v/.01),S=Math.max(4,w>0?f/w:f),b=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-b)/f;b=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},S)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._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,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._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(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),w=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,S=w*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),S)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._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"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var w=function(){a._playLock?setTimeout(w,0):v()};setTimeout(w,0)}else v()}else if(a._webAudio){var S=a.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+S*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);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(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._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,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],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(a)f["_on"+a]=[];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(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,d=a._parent;d._duration=Math.ceil(a._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()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);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);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,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(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._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 a=/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(a&&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 bl<"u"&&(bl.Howler=r,bl.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,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._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,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return l},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),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._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 s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);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 s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);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 s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),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 _g=Ms((TX,wg)=>{wg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});import{FileLoader as fA,Loader as mA}from"three";var Ie=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,Ie.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:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,Ie.prototype),{data:l,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,Ie.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function vi(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"&&vi(t)}return Object.freeze(n)}function tu(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 qo=class extends Error{};function Bs(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ar(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 s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function $o(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 ru(){return typeof process<"u"}function ou(n,r){for(let e of n)r(e.id,e.data)!==!0&&ou(e.children,r)}function nu(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)nu(e,r)}var ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(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}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&&nu(o,t)}}traverse(e){ou(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),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,ze.prototype);let s=i;return s.fillCaches(),s}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:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{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),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,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 qo("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:l,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(s=>s.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(s=>s.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)=>tu(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),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,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 ar(0,o,o);{let s=i[0].fi;return ar(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return ar(c,c+o,o)}else return ar(s.fi,l.fi,o)}}};var Yo;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Yo||(Yo={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(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,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return ru()||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,s=this,l={fi:t,id:o,data:i};return s=[...s,l],s.sort((u,a)=>u.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),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 s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((a,d)=>a.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,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 ar(0,t,t);{let i=o[0].fi;return ar(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return ar(l,l+t,t)}else return ar(i.fi,s.fi,t)}}};function Xo(n){return n&&typeof n=="object"&&n instanceof Be}var Be=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&&!Xo(t))return null;o+=1}t=t?Bs(t):new Be;for(let[c,u]of Object.entries(r.props)){let a=t[c];i[c]=a,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=Bs(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Bs(c);u[r.path[o-1]]=t,t=u}else{let u=new Be;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Be.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Er;(t=>{function n(o,i){return bi(o,i)??o}t.apply=n;function r(o,i){return kl(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=dt.zoomOnce(c,l[s]),c===void 0)return i;if(!Xo(c))return;s+=1}if(c===void 0)return i;if(!!Xo(c))if(i.type===0){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Ul([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Er||(Er={}));function Ul(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Ul(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function Fg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function bi(n,r){if(!Xo(r))return r;if(n instanceof ze){let e=Ul(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Fg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=bi(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Be)return kl(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=bi(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function kl(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Xo(r))return r;if(!Xo(n))return Er.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 Be;for(let o of e){let i=kl(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function iu(n,r){let e={cur:[],result:[],len:0};return n=Si(n,r,e)??n,[n,e.result]}function Ds(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Gs(n){n&&(n.len-=1)}function zg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function su(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,Ds(e,s));Gs(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=su(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function Ug(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,Ds(e,s));return Gs(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Si(n,r,e){if(n instanceof ze){let t=su(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return Ug(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Si(i,r,Ds(e,s));return Gs(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!$o(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Si(s,r,Ds(e,i));Gs(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");zg(e)}return t}else return}}var Rs;(r=>{function n(e,t){let o=dt.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Rs||(Rs={}));var tt;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function r(c,u){return e(c,u)?.data??c}l.applySimple=r;function e(c,u){let a=u.path;for(var d=[];;){let p;if(c instanceof Be&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),d.length===a.length&&(c instanceof ze||c instanceof he||c instanceof Ie?p=c.runOp(u):p=Yo.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ie){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Be){let w={...v,[g]:h};h=Object.setPrototypeOf(w,Be.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let w=h;h=[...v],h[g]=w}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof ze){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}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return t(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(tt||(tt={}));var Hl;(c=>{function n(){return[]}c.empty=n;function r(u,a){let d=[];for(let p of u){let[f,...m]=p.path;f===a&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,a){return u.map(d=>({...d,path:[a,...d.path]}))}c.addPrefix=e;function t(u,a){return[...u,...a]}c.concat=t;function o(u,a){return[...u.filter(p=>!a.some(f=>tt.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>tt.commutative(d,p)))}c.commutative=i;function s(u,a){for(let d of a){let p=l(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function l(u,a){var d=u;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=dt.zoom(d,[...m.path,m.id]),y=tt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=iu(d,{[m.id]:h});d=g;for(let w of v){let S=w[w.length-1];w.splice(w.length-1,1),p.push({type:0,path:w,props:{[S]:h}}),f.push({type:0,path:w,props:{[S]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=tt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof qo)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(Hl||(Hl={}));var au=Symbol(),kg=Symbol(),js=Symbol(),go=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Vs);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[js];t&&t(),delete this._children[r]}}}},ql=class extends go{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,Yo.runOp(this._current,r),r.path)}},$l=class extends go{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,Ie.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},lu={get(n,r){if(r===js)return()=>{n._parent=null};if(r===au)return n._current;if(r===kg)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],s=Fs(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):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]}}},Hg={...lu,set(n,r,e){let t={type:0,props:{[r]:Ye(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}},Wg={...lu,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}},Ko=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[js]=()=>{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,s=Fs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}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)}},Zo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[js]=()=>{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,s=Fs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 Wl(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&dt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Vs=class extends go{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){Wl(this.ts,e,r),Wl(this.actual,t,r),Wl(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Fs(n,r,e){return e instanceof ze?new Ko(n,r,e):e instanceof he?new Zo(n,r,e):e instanceof Ie?new Proxy(new $l(n,r,e),Wg):e!==null&&typeof e=="object"?$o(e)?e:new Proxy(new ql(n,r,e),Hg):e}function Yl(n){let r=new Vs(n);return[Fs(r,"",n),r]}function Qo(n,r){let[e,t]=Yl(n);return r(e),t.result()}function Ye(n){return n instanceof Ko||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[au]:n}var dt;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof ze||i instanceof Ko)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Zo)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(dt||(dt={}));function cu(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 Wt(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 zs=class{},wi=class extends zs{constructor(e){super();this.id=e}},_i=class extends zs{constructor(e){super();this.data=e}};var Kl;try{Kl=new TextDecoder}catch{}var ne,Yr,N=0;var gu=[],Zl=gu,Ql=0,vt={},we,$r,Gt=0,lr=0,Ct,Mr,ut=[],Oe,du={useRecords:!1,mapsAsObjects:!0},Ti=class{},ec=new Ti;ec.name="MessagePack 0xC1";var Jo=!1,cr=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(ne)return wu(()=>(ks(),this?this.unpack(r,e):cr.prototype.unpack.call(du,r,e)));Yr=e>-1?e:r.length,N=0,Ql=0,lr=0,$r=null,Zl=gu,Ct=null,ne=r;try{Oe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=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 cr){if(vt=this,this.structures)return we=this.structures,Us();(!we||we.length>0)&&(we=[])}else vt=du,(!we||we.length>0)&&(we=[]);return Us()}unpackMultiple(r,e){let t,o=0;try{Jo=!0;let i=r.length,s=this?this.unpack(r,i):qs.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(Us())===!1)return}else{for(t=[s];N<i;)o=N,t.push(Us());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Jo=!1,ks()}}_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 Us(){try{if(!vt.trusted&&!Jo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Re();if(N==Yr)we.restoreStructures&&uu(),we=null,ne=null,Mr&&(Mr=null);else if(N>Yr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Jo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&uu(),ks(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function uu(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Re(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&xu()[n&63];return r?(r.read||(r.read=tc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[bu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}else if(n<192){let r=n-160;if(lr>=N)return $r.slice(N-Gt,(N+=r)-Gt);if(lr==0&&Yr<140){let e=r<16?rc(r):vu(r);if(e!=null)return e}return Jl(r)}else{let r;switch(n){case 192:return null;case 193:return Ct?(r=Re(),r>0?Ct[1].slice(Ct.position1,Ct.position1+=r):Ct[0].slice(Ct.position0,Ct.position0-=r)):ec;case 194:return!1;case 195:return!0;case 196:return Xl(ne[N++]);case 197:return r=Oe.getUint16(N),N+=2,Xl(r);case 198:return r=Oe.getUint32(N),N+=4,Xl(r);case 199:return xo(ne[N++]);case 200:return r=Oe.getUint16(N),N+=2,xo(r);case 201:return r=Oe.getUint32(N),N+=4,xo(r);case 202:if(r=Oe.getFloat32(N),vt.useFloat32>2){let e=Ws[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Oe.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Oe.getUint16(N),N+=2,r;case 206:return r=Oe.getUint32(N),N+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigUint64(N),N+=8,r;case 208:return Oe.getInt8(N++);case 209:return r=Oe.getInt16(N),N+=2,r;case 210:return r=Oe.getInt32(N),N+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return yu(ne[N++]&63);{let e=ut[r];if(e)return e.read?(N++,e.read(Re())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,yu(ne[N++]&63,ne[N++])):xo(2);case 214:return xo(4);case 215:return xo(8);case 216:return xo(16);case 217:return r=ne[N++],lr>=N?$r.slice(N-Gt,(N+=r)-Gt):$g(r);case 218:return r=Oe.getUint16(N),N+=2,lr>=N?$r.slice(N-Gt,(N+=r)-Gt):Yg(r);case 219:return r=Oe.getUint32(N),N+=4,lr>=N?$r.slice(N-Gt,(N+=r)-Gt):Xg(r);case 220:return r=Oe.getUint16(N),N+=2,fu(r);case 221:return r=Oe.getUint32(N),N+=4,fu(r);case 222:return r=Oe.getUint16(N),N+=2,mu(r);case 223:return r=Oe.getUint32(N),N+=4,mu(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 qg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function tc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>qg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Re);return n.highByte===0&&(n.read=pu(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Re()}return t}return e.count=0,n.highByte===0?pu(r,e):e}var pu=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||xu()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=tc(o,n)),o.read()};function xu(){let n=wu(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var Jl=Hs,$g=Hs,Yg=Hs,Xg=Hs;function Hs(n){let r;if(n<16&&(r=rc(n)))return r;if(n>64&&Kl)return Kl.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&63,c=(o&7)<<18|i<<12|s<<6|l;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+=Xe.apply(String,t),t.length=0)}return t.length>0&&(r+=Xe.apply(String,t)),r}function fu(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}function mu(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[bu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}}var Xe=String.fromCharCode;function vu(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return Xe.apply(String,e)}function rc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return Xe(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return Xe(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return Xe(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Xe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Xl(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function xo(n){let r=ne[N++];if(ut[r])return ut[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var hu=new Array(4096);function bu(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,lr>=N)return $r.slice(N-Gt,(N+=n)-Gt);if(!(lr==0&&Yr<180))return Jl(n)}else return N--,Re();let r=(n<<5^(n>1?Oe.getUint16(N):n>0?ne[N]:0))&4095,e=hu[r],t=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return N=t,e.string;o-=3,t=N}for(e=[],hu[r]=e,e.bytes=n;t<o;)i=Oe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?rc(n):vu(n);return l!=null?e.string=l:e.string=Jl(n)}var yu=(n,r)=>{var e=Re();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=tc(e,t),e.read()},Su=typeof self=="object"?self:global;ut[0]=()=>{};ut[0].noBuffer=!0;ut[101]=()=>{let n=Re();return(Su[n[0]]||Error)(n[1])};ut[105]=n=>{let r=Oe.getUint32(N-4);Mr||(Mr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Mr.set(r,o);let i=Re();return o.used?Object.assign(t,i):(o.target=i,i)};ut[112]=n=>{let r=Oe.getUint32(N-4),e=Mr.get(r);return e.used=!0,e.target};ut[115]=()=>new Set(Re());var oc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ut[116]=n=>{let r=n[0],e=oc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Su[e](Uint8Array.prototype.slice.call(n,1).buffer)};ut[120]=()=>{let n=Re();return new RegExp(n[0],n[1])};ut[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Ct=[Re(),Re()],Ct.position0=0,Ct.position1=0;let t=N;N=e;try{return Re()}finally{N=t}};ut[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 wu(n){let r=Yr,e=N,t=Ql,o=Gt,i=lr,s=$r,l=Zl,c=Mr,u=Ct,a=new Uint8Array(ne.slice(0,Yr)),d=we,p=we.slice(0,we.length),f=vt,m=Jo,h=n();return Yr=r,N=e,Ql=t,Gt=o,lr=i,$r=s,Zl=l,Mr=c,Ct=u,ne=a,Jo=m,we=d,we.splice(0,we.length,...p),vt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function ks(){ne=null,Mr=null,we=null}function _u(n){n.unpack?ut[n.type]=n.unpack:ut[n.type]=n}var Ws=new Array(147);for(let n=0;n<256;n++)Ws[n]=+("1e"+Math.floor(45.15-n*.30103));var qs=new cr({useRecords:!1}),Kg=qs.unpack,Zg=qs.unpackMultiple,Qg=qs.unpack,$s={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Jg=new Float32Array(1),xI=new Uint8Array(Jg.buffer,0,4);var Ys;try{Ys=new TextEncoder}catch{}var Xs,ic,Ks=typeof Buffer<"u",nc=Ks?Buffer.allocUnsafeSlow:Uint8Array,Au=Ks?Buffer:Uint8Array,Tu=Ks?4294967296:2144337920,R,je,M=0,dr,ur=null,ex=/[\u0080-\uFFFF]/,Pi=Symbol("record-id"),vo=class extends cr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Au.prototype.utf8Write?function(x,C,P){return R.utf8Write(x,C,P)}:Ys&&Ys.encodeInto?function(x,C){return Ys.encodeInto(x,R.subarray(C)).written}:!1,a=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 v=[],w=0,S=0;this.pack=this.encode=function(x,C){if(R||(R=new nc(8192),je=new DataView(R.buffer,0,8192),M=0),dr=R.length-10,dr-M<2048?(R=new nc(R.length),je=new DataView(R.buffer,0,R.length),dr=R.length-10,M=0):M=M+7&2147483640,t=M,l=a.structuredClone?new Map:null,a.bundleStrings?(ur=["",""],R[M++]=214,R[M++]=98,ur.position=M-t,M+=4):ur=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.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 I=0;I<P;I++){let A=o[I];if(!A)continue;let O,V=o.transitions;for(let z=0,$=A.length;z<$;z++){let te=A[z];O=V[te],O||(O=V[te]=Object.create(null)),V=O}V[Pi]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(b(x),ur){je.setUint32(ur.position+t,M-ur.position-t);let P=ur;ur=null,b(P[0]),b(P[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>dr&&_(M),a.offset=M;let P=rx(R.subarray(t,M),l.idsToInsert);return l=null,P}return C&Cu?(R.start=t,R.end=M,R):R.subarray(t,M)}finally{if(o){if(S<10&&S++,w>1e4)o.transitions=null,S=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let P=0,I=v.length;P<I;P++)v[P][Pi]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=R.subarray(t,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&cx&&(M=t)}};let b=x=>{M>dr&&(R=_(M));var C=typeof x,P;if(C==="string"){let I=x.length;if(ur&&I>=8&&I<4096){let V=ex.test(x);ur[V?0:1]+=x,R[M++]=193,b(V?-I:I);return}let A;I<32?A=1:I<256?A=2:I<65536?A=3:A=5;let O=I*3;if(M+O>dr&&(R=_(M+O)),I<64||!u){let V,z,$,te=M+A;for(V=0;V<I;V++)z=x.charCodeAt(V),z<128?R[te++]=z:z<2048?(R[te++]=z>>6|192,R[te++]=z&63|128):(z&64512)===55296&&(($=x.charCodeAt(V+1))&64512)===56320?(z=65536+((z&1023)<<10)+($&1023),V++,R[te++]=z>>18|240,R[te++]=z>>12&63|128,R[te++]=z>>6&63|128,R[te++]=z&63|128):(R[te++]=z>>12|224,R[te++]=z>>6&63|128,R[te++]=z&63|128);P=te-M-A}else P=u(x,M+A,O);P<32?R[M++]=160|P:P<256?(A<2&&R.copyWithin(M+2,M+1,M+1+P),R[M++]=217,R[M++]=P):P<65536?(A<3&&R.copyWithin(M+3,M+2,M+2+P),R[M++]=218,R[M++]=P>>8,R[M++]=P&255):(A<5&&R.copyWithin(M+5,M+3,M+3+P),R[M++]=219,je.setUint32(M,P),M+=4),M+=P}else if(C==="number")if(x>>>0===x)x<64?R[M++]=x:x<256?(R[M++]=204,R[M++]=x):x<65536?(R[M++]=205,R[M++]=x>>8,R[M++]=x&255):(R[M++]=206,je.setUint32(M,x),M+=4);else if(x>>0===x)x>=-32?R[M++]=256+x:x>=-128?(R[M++]=208,R[M++]=x+256):x>=-32768?(R[M++]=209,je.setInt16(M,x),M+=2):(R[M++]=210,je.setInt32(M,x),M+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){R[M++]=202,je.setFloat32(M,x);let A;if(I<4||(A=x*Ws[(R[M]&127)<<1|R[M+1]>>7])>>0===A){M+=4;return}else M--}R[M++]=203,je.setFloat64(M,x),M+=8}else if(C==="object")if(!x)R[M++]=192;else{if(l){let A=l.get(x);if(A){if(!A.id){let O=l.idsToInsert||(l.idsToInsert=[]);A.id=O.push(A)}R[M++]=214,R[M++]=112,je.setUint32(M,A.id),M+=4;return}else l.set(x,{offset:M-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?R[M++]=144|P:P<65536?(R[M++]=220,R[M++]=P>>8,R[M++]=P&255):(R[M++]=221,je.setUint32(M,P),M+=4);for(let A=0;A<P;A++)b(x[A])}else if(I===Map){P=x.size,P<16?R[M++]=128|P:P<65536?(R[M++]=222,R[M++]=P>>8,R[M++]=P&255):(R[M++]=223,je.setUint32(M,P),M+=4);for(let[A,O]of x)b(A),b(O)}else{for(let A=0,O=Xs.length;A<O;A++){let V=ic[A];if(x instanceof V){let z=Xs[A];if(z.write){z.type&&(R[M++]=212,R[M++]=z.type,R[M++]=0),b(z.write.call(this,x));return}let $=R,te=je,K=M;R=null;let q;try{q=z.pack.call(this,x,k=>(R=$,$=null,M+=k,M>dr&&_(M),{target:R,targetView:je,position:M-k}),b)}finally{$&&(R=$,je=te,M=K,dr=R.length-10)}q&&(q.length+M>dr&&_(q.length+M),M=tx(q,R,M,z.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")R[M++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))R[M++]=211,je.setBigInt64(M,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)R[M++]=207,je.setBigUint64(M,x);else if(this.largeBigIntToFloat)R[M++]=203,je.setFloat64(M,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(C==="undefined")this.encodeUndefinedAsNil?R[M++]=192:(R[M++]=212,R[M++]=0,R[M++]=0);else if(C==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?R[M++]=128|P:P<65536?(R[M++]=222,R[M++]=P>>8,R[M++]=P&255):(R[M++]=223,je.setUint32(M,P),M+=4);let I;for(let A=0;A<P;A++)b(I=C[A]),b(x[I])}:(x,C)=>{R[M++]=222;let P=M-t;M+=2;let I=0;for(let A in x)(C||x.hasOwnProperty(A))&&(b(A),b(x[A]),I++);R[P+++t]=I>>8,R[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),A=0;for(let V=0,z=C.length;V<z;V++){let $=C[V];P=I[$],P||(P=I[$]=Object.create(null),A++),I=P}let O=I[Pi];if(O)O>=96&&h?(R[M++]=((O-=96)&31)+96,R[M++]=O>>5):R[M++]=O;else{O=s.nextId,O||(O=64),O<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(O=s.nextOwnId,O<g||(O=y),s.nextOwnId=O+1):(O>=g&&(O=y),s.nextId=O+1);let V=C.highByte=O>=96&&h?O-96>>5:-1;I[Pi]=O,s[O-64]=C,O<y?(C.isShared=!0,s.sharedLength=O-63,i=!0,V>=0?(R[M++]=(O&31)+96,R[M++]=V):R[M++]=O):(V>=0?(R[M++]=213,R[M++]=114,R[M++]=(O&31)+96,R[M++]=V):(R[M++]=212,R[M++]=114,R[M++]=O),A&&(w+=S*A),v.length>=m&&(v.shift()[Pi]=0),v.push(I),b(C))}for(let V=0,z=C.length;V<z;V++)b(x[C[V]])},_=x=>{let C;if(x>16777216){if(x-t>Tu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(Tu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,R.length-1)>>12)+1<<12;let P=new nc(C);return je=new DataView(P.buffer,0,C),R.copy?R.copy(P,0,t,x):P.set(R.slice(t,x)),M-=t,t=0,dr=P.length-10,R=P}}useBuffer(r){R=r,je=new DataView(R.buffer,R.byteOffset,R.byteLength),M=0}};ic=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ti];Xs=[{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:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+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?Pu(n,16,r):Ou(Ks?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Au&&this.structuredClone?Pu(n,oc.indexOf(e.name),r):Ou(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Pu(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Ou(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 tx(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 rx(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function Xr(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)");ic.unshift(n.Class),Xs.unshift(n)}_u(n)}var Iu=new vo({useRecords:!1}),ox=Iu.pack,nx=Iu.pack;var{NEVER:ix,ALWAYS:sx,DECIMAL_ROUND:ax,DECIMAL_FIT:lx}=$s,Cu=512,cx=1024;var Nu=new vo({structuredClone:!0});Xr({Class:Ie.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ie.prototype),n}});Xr({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Xr({Class:ze.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});Xr({Class:wi.prototype.constructor,type:4,write(n){return n.id},read(n){return new wi(n)}});Xr({Class:_i.prototype.constructor,type:5,write(n){return n.data},read(n){return new _i(n)}});Xr({Class:Be.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});function dx(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 sc(n){if($o(n))return n;if(Array.isArray(n))return n.map(sc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=sc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Zs;(t=>{function n(o){return Nu.pack(o)}t.serialize=n;function r(o){return Nu.unpack(o)}t.deserialize=r;function e(o){return dx(n(sc(o))).toString()}t.checksum=e})(Zs||(Zs={}));var Eu;(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})(Eu||(Eu={}));var Kr;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(Kr||(Kr={}));var Mu;(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})(Mu||(Mu={}));var Zr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=t})(Zr||(Zr={}));var bt;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(bt||(bt={}));var qt;(l=>{l.white={...bt.white,a:1},l.transparent={...bt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...bt.fromHex(c),a:u}}l.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}}l.toRgb255a1=o;function i(c,u){return bt.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(qt||(qt={}));var Qs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Qs||(Qs={}));var Lu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Lu||(Lu={}));var Bu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Bu||(Bu={}));var $t;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})($t||($t={}));var bo;(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,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(bo||(bo={}));var pr;(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(ux.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;px.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;fx.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;mx.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;hx.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;yx.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(pr||(pr={}));var Js;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(Js||(Js={}));var ux=["count"],px=["radius","start","end","position","scale","rotation"],fx=["position","scale","rotation"],mx=["count","size"],hx=["count","position","scale","rotation"],yx=["strength","scale","rotation","position","movement","seed","freqScale"];var ea;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(ea||(ea={}));var ta;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:qt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ta||(ta={}));var ac;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(ac||(ac={}));var lc;(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})(lc||(lc={}));var ra;(r=>r.defaultData={...lc.defaultData,...ac.defaultData})(ra||(ra={}));var en;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(en||(en={}));var Du=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Gu=["wrapping","image","video"],pt;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let u=i.texture;u&&Object.assign(u,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){switch(i){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:en.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:bt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,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{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,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{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...bt.fromHex(6710886),a:1},colorB:{...bt.fromHex(6710886),a:1},colorC:{...bt.fromHex(16777215),a:1},colorD:{...bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:qt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,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:qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:qt.fromHexAndA(0,1),contourColor:qt.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{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(pt||(pt={}));var St;(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 a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:pt.defaultData("light",u),id:a}),p.push({fi:1,data:pt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=pt.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:pt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=pt.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:pt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(St||(St={}));var tn;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(tn||(tn={}));var rn;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(rn||(rn={}));var cc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var oa;(r=>{function n(e,t){let o={...e};return gx.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(oa||(oa={}));var na={shape:cc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},gx=["depth","offset","angle","twist","startScale","endScale"];var Oi;(r=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=n})(Oi||(Oi={}));var ia;(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,oa.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ia||(ia={}));var Qr;(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:rn.defaultData(),extrusion:na};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:tn.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:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}r.defaultData=n})(Qr||(Qr={}));var Ru;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Ru||(Ru={}));var on;(o=>{o.identity={...Qs.identity,hiddenMatrix:Zr.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return{position:Kr.isEqual(i.position,s.position)?null:s.position,rotation:Kr.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Kr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Zr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(on||(on={}));var dc;(r=>r.defaultData={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]})(dc||(dc={}));var Nt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...on.identity,cloner:null})(Nt||(Nt={}));var Vu;(r=>r.defaultData={type:"Empty",...Nt.defaultData})(Vu||(Vu={}));var ju;(r=>r.defaultData={type:"Component",...Nt.defaultData})(ju||(ju={}));var So;(r=>r.defaultData={type:"Mesh",...Nt.defaultData,...ra.defaultData})(So||(So={}));var nn;(r=>r.defaultData={...Nt.defaultData,...on.identity,...bo.defaultData})(nn||(nn={}));var Fu;(r=>{function n(e){return{...Nt.defaultData,...ta.defaultData(e)}}r.defaultData=n})(Fu||(Fu={}));var sn;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(sn||(sn={}));var Jr;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Nt.defaultData,...l,component:s,overrides:new Be,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=on.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(Jr||(Jr={}));var zu;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Zr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:dc.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...bo.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",...Nt.defaultData,...So.defaultData,geometry:Qr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Nt.defaultData,...So.defaultData,geometry:Qr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Nt.defaultData,...So.defaultData,geometry:Qr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(zu||(zu={}));var wo;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Be}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Be})))):$t.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=Qo(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&pt.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=Qo(l.materials,c=>{for(let u=0;u<l.materials.length;u++){let a=s.materials[u];if(typeof a!="string")for(let[d,p]of Object.entries(a.layers)){let f=c[u]?.layers?.data(d);f&&pt.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],u={orthographic:0,perspective:0,geometry:0};function a(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(s))if(d!=="name")if(d==="cloner")c.push(...Js.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["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 l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,on.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),$t.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:ia.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:pr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:pr.merge(l.cloner,s.cloner)});else if(ea.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=bt.clone(c.color))}return l}o.patch=t})(wo||(wo={}));var an;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0,autoZoom:!1})(an||(an={}));var sa;(r=>r.defaultData={orbitControls:an.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio: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,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"]}),gameControlObject:null})(sa||(sa={}));function Lr(n,r){return Object.setPrototypeOf(n,r),n}function aa(n){return Array.isArray(n)?n:[n]}function Uu(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 ln;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(ln||(ln={}));var la;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Lr(o,Ie.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ln.emptyImage,name:"AI generated image"}),Lr(i,Ie.prototype)}t.defaultImages=r;function e(){return{materials:new Ie,images:new Ie,videos:new Ie,colors:new Ie,audios:new Ie,fonts:new Ie,penumbraSize:[.5,.5,.5]}}t.emptyData=e})(la||(la={}));var xx=typeof global=="object"&&global&&global.Object===Object&&global,ca=xx;var vx=typeof self=="object"&&self&&self.Object===Object&&self,bx=ca||vx||Function("return this")(),Ue=bx;var Sx=Ue.Symbol,Ke=Sx;var ku=Object.prototype,wx=ku.hasOwnProperty,_x=ku.toString,Ii=Ke?Ke.toStringTag:void 0;function Tx(n){var r=wx.call(n,Ii),e=n[Ii];try{n[Ii]=void 0;var t=!0}catch{}var o=_x.call(n);return t&&(r?n[Ii]=e:delete n[Ii]),o}var Hu=Tx;var Px=Object.prototype,Ox=Px.toString;function Ax(n){return Ox.call(n)}var Wu=Ax;var Ix="[object Null]",Cx="[object Undefined]",qu=Ke?Ke.toStringTag:void 0;function Nx(n){return n==null?n===void 0?Cx:Ix:qu&&qu in Object(n)?Hu(n):Wu(n)}var Et=Nx;function Ex(n){return n!=null&&typeof n=="object"}var rt=Ex;var Mx="[object Symbol]";function Lx(n){return typeof n=="symbol"||rt(n)&&Et(n)==Mx}var cn=Lx;function Bx(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 da=Bx;var Dx=Array.isArray,Ve=Dx;var Gx=1/0,$u=Ke?Ke.prototype:void 0,Yu=$u?$u.toString:void 0;function Xu(n){if(typeof n=="string")return n;if(Ve(n))return da(n,Xu)+"";if(cn(n))return Yu?Yu.call(n):"";var r=n+"";return r=="0"&&1/n==-Gx?"-0":r}var Ku=Xu;function Rx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=Rx;function Vx(n){return n}var Zu=Vx;var jx="[object AsyncFunction]",Fx="[object Function]",zx="[object GeneratorFunction]",Ux="[object Proxy]";function kx(n){if(!Mt(n))return!1;var r=Et(n);return r==Fx||r==zx||r==jx||r==Ux}var ua=kx;var Hx=Ue["__core-js_shared__"],pa=Hx;var Qu=function(){var n=/[^.]+$/.exec(pa&&pa.keys&&pa.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wx(n){return!!Qu&&Qu in n}var Ju=Wx;var qx=Function.prototype,$x=qx.toString;function Yx(n){if(n!=null){try{return $x.call(n)}catch{}try{return n+""}catch{}}return""}var Br=Yx;var Xx=/[\\^$.*+?()[\]{}|]/g,Kx=/^\[object .+?Constructor\]$/,Zx=Function.prototype,Qx=Object.prototype,Jx=Zx.toString,e0=Qx.hasOwnProperty,t0=RegExp("^"+Jx.call(e0).replace(Xx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function r0(n){if(!Mt(n)||Ju(n))return!1;var r=ua(n)?t0:Kx;return r.test(Br(n))}var ep=r0;function o0(n,r){return n?.[r]}var tp=o0;function n0(n,r){var e=tp(n,r);return ep(e)?e:void 0}var wt=n0;var i0=wt(Ue,"WeakMap"),fa=i0;var rp=Object.create,s0=function(){function n(){}return function(r){if(!Mt(r))return{};if(rp)return rp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),op=s0;function a0(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=a0;function l0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var ip=l0;var c0=800,d0=16,u0=Date.now;function p0(n){var r=0,e=0;return function(){var t=u0(),o=d0-(t-e);if(e=t,o>0){if(++r>=c0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var sp=p0;function f0(n){return function(){return n}}var ap=f0;var m0=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),dn=m0;var h0=dn?function(n,r){return dn(n,"toString",{configurable:!0,enumerable:!1,value:ap(r),writable:!0})}:Zu,lp=h0;var y0=sp(lp),cp=y0;function g0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var dp=g0;var x0=9007199254740991,v0=/^(?:0|[1-9]\d*)$/;function b0(n,r){var e=typeof n;return r=r??x0,!!r&&(e=="number"||e!="symbol"&&v0.test(n))&&n>-1&&n%1==0&&n<r}var un=b0;function S0(n,r,e){r=="__proto__"&&dn?dn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ma=S0;function w0(n,r){return n===r||n!==n&&r!==r}var pn=w0;var _0=Object.prototype,T0=_0.hasOwnProperty;function P0(n,r,e){var t=n[r];(!(T0.call(n,r)&&pn(t,e))||e===void 0&&!(r in n))&&ma(n,r,e)}var fn=P0;function O0(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?ma(e,l,c):fn(e,l,c)}return e}var fr=O0;var up=Math.max;function A0(n,r,e){return r=up(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=up(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),np(n,this,l)}}var pp=A0;var I0=9007199254740991;function C0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=I0}var mn=C0;function N0(n){return n!=null&&mn(n.length)&&!ua(n)}var ha=N0;var E0=Object.prototype;function M0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||E0;return n===e}var hn=M0;function L0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var fp=L0;var B0="[object Arguments]";function D0(n){return rt(n)&&Et(n)==B0}var uc=D0;var mp=Object.prototype,G0=mp.hasOwnProperty,R0=mp.propertyIsEnumerable,V0=uc(function(){return arguments}())?uc:function(n){return rt(n)&&G0.call(n,"callee")&&!R0.call(n,"callee")},yn=V0;function j0(){return!1}var hp=j0;var xp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yp=xp&&typeof module=="object"&&module&&!module.nodeType&&module,F0=yp&&yp.exports===xp,gp=F0?Ue.Buffer:void 0,z0=gp?gp.isBuffer:void 0,U0=z0||hp,_o=U0;var k0="[object Arguments]",H0="[object Array]",W0="[object Boolean]",q0="[object Date]",$0="[object Error]",Y0="[object Function]",X0="[object Map]",K0="[object Number]",Z0="[object Object]",Q0="[object RegExp]",J0="[object Set]",ev="[object String]",tv="[object WeakMap]",rv="[object ArrayBuffer]",ov="[object DataView]",nv="[object Float32Array]",iv="[object Float64Array]",sv="[object Int8Array]",av="[object Int16Array]",lv="[object Int32Array]",cv="[object Uint8Array]",dv="[object Uint8ClampedArray]",uv="[object Uint16Array]",pv="[object Uint32Array]",Me={};Me[nv]=Me[iv]=Me[sv]=Me[av]=Me[lv]=Me[cv]=Me[dv]=Me[uv]=Me[pv]=!0;Me[k0]=Me[H0]=Me[rv]=Me[W0]=Me[ov]=Me[q0]=Me[$0]=Me[Y0]=Me[X0]=Me[K0]=Me[Z0]=Me[Q0]=Me[J0]=Me[ev]=Me[tv]=!1;function fv(n){return rt(n)&&mn(n.length)&&!!Me[Et(n)]}var vp=fv;function mv(n){return function(r){return n(r)}}var gn=mv;var bp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ci=bp&&typeof module=="object"&&module&&!module.nodeType&&module,hv=Ci&&Ci.exports===bp,pc=hv&&ca.process,yv=function(){try{var n=Ci&&Ci.require&&Ci.require("util").types;return n||pc&&pc.binding&&pc.binding("util")}catch{}}(),Dr=yv;var Sp=Dr&&Dr.isTypedArray,gv=Sp?gn(Sp):vp,ya=gv;var xv=Object.prototype,vv=xv.hasOwnProperty;function bv(n,r){var e=Ve(n),t=!e&&yn(n),o=!e&&!t&&_o(n),i=!e&&!t&&!o&&ya(n),s=e||t||o||i,l=s?fp(n.length,String):[],c=l.length;for(var u in n)(r||vv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||un(u,c)))&&l.push(u);return l}var ga=bv;function Sv(n,r){return function(e){return n(r(e))}}var xa=Sv;var wv=xa(Object.keys,Object),wp=wv;var _v=Object.prototype,Tv=_v.hasOwnProperty;function Pv(n){if(!hn(n))return wp(n);var r=[];for(var e in Object(n))Tv.call(n,e)&&e!="constructor"&&r.push(e);return r}var _p=Pv;function Ov(n){return ha(n)?ga(n):_p(n)}var xn=Ov;function Av(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Tp=Av;var Iv=Object.prototype,Cv=Iv.hasOwnProperty;function Nv(n){if(!Mt(n))return Tp(n);var r=hn(n),e=[];for(var t in n)t=="constructor"&&(r||!Cv.call(n,t))||e.push(t);return e}var Pp=Nv;function Ev(n){return ha(n)?ga(n,!0):Pp(n)}var vn=Ev;var Mv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lv=/^\w*$/;function Bv(n,r){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||cn(n)?!0:Lv.test(n)||!Mv.test(n)||r!=null&&n in Object(r)}var Op=Bv;var Dv=wt(Object,"create"),Gr=Dv;function Gv(){this.__data__=Gr?Gr(null):{},this.size=0}var Ap=Gv;function Rv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Ip=Rv;var Vv="__lodash_hash_undefined__",jv=Object.prototype,Fv=jv.hasOwnProperty;function zv(n){var r=this.__data__;if(Gr){var e=r[n];return e===Vv?void 0:e}return Fv.call(r,n)?r[n]:void 0}var Cp=zv;var Uv=Object.prototype,kv=Uv.hasOwnProperty;function Hv(n){var r=this.__data__;return Gr?r[n]!==void 0:kv.call(r,n)}var Np=Hv;var Wv="__lodash_hash_undefined__";function qv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Gr&&r===void 0?Wv:r,this}var Ep=qv;function bn(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])}}bn.prototype.clear=Ap;bn.prototype.delete=Ip;bn.prototype.get=Cp;bn.prototype.has=Np;bn.prototype.set=Ep;var fc=bn;function $v(){this.__data__=[],this.size=0}var Mp=$v;function Yv(n,r){for(var e=n.length;e--;)if(pn(n[e][0],r))return e;return-1}var eo=Yv;var Xv=Array.prototype,Kv=Xv.splice;function Zv(n){var r=this.__data__,e=eo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Kv.call(r,e,1),--this.size,!0}var Lp=Zv;function Qv(n){var r=this.__data__,e=eo(r,n);return e<0?void 0:r[e][1]}var Bp=Qv;function Jv(n){return eo(this.__data__,n)>-1}var Dp=Jv;function eb(n,r){var e=this.__data__,t=eo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Gp=eb;function Sn(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])}}Sn.prototype.clear=Mp;Sn.prototype.delete=Lp;Sn.prototype.get=Bp;Sn.prototype.has=Dp;Sn.prototype.set=Gp;var to=Sn;var tb=wt(Ue,"Map"),ro=tb;function rb(){this.size=0,this.__data__={hash:new fc,map:new(ro||to),string:new fc}}var Rp=rb;function ob(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Vp=ob;function nb(n,r){var e=n.__data__;return Vp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var oo=nb;function ib(n){var r=oo(this,n).delete(n);return this.size-=r?1:0,r}var jp=ib;function sb(n){return oo(this,n).get(n)}var Fp=sb;function ab(n){return oo(this,n).has(n)}var zp=ab;function lb(n,r){var e=oo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Up=lb;function wn(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])}}wn.prototype.clear=Rp;wn.prototype.delete=jp;wn.prototype.get=Fp;wn.prototype.has=zp;wn.prototype.set=Up;var To=wn;var cb="Expected a function";function mc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(cb);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 s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(mc.Cache||To),e}mc.Cache=To;var kp=mc;var db=500;function ub(n){var r=kp(n,function(t){return e.size===db&&e.clear(),t}),e=r.cache;return r}var Hp=ub;var pb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fb=/\\(\\)?/g,mb=Hp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(pb,function(e,t,o,i){r.push(o?i.replace(fb,"$1"):t||e)}),r}),Wp=mb;function hb(n){return n==null?"":Ku(n)}var qp=hb;function yb(n,r){return Ve(n)?n:Op(n,r)?[n]:Wp(qp(n))}var Rt=yb;var gb=1/0;function xb(n){if(typeof n=="string"||cn(n))return n;var r=n+"";return r=="0"&&1/n==-gb?"-0":r}var no=xb;function vb(n,r){r=Rt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[no(r[e++])];return e&&e==t?n:void 0}var va=vb;function bb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var _n=bb;var $p=Ke?Ke.isConcatSpreadable:void 0;function Sb(n){return Ve(n)||yn(n)||!!($p&&n&&n[$p])}var Yp=Sb;function Xp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Yp),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?Xp(l,r-1,e,t,o):_n(o,l):t||(o[o.length]=l)}return o}var Kp=Xp;function wb(n){var r=n==null?0:n.length;return r?Kp(n,1):[]}var Zp=wb;function _b(n){return cp(pp(n,void 0,Zp),n+"")}var ba=_b;var Tb=xa(Object.getPrototypeOf,Object),Tn=Tb;var Pb="[object Object]",Ob=Function.prototype,Ab=Object.prototype,Qp=Ob.toString,Ib=Ab.hasOwnProperty,Cb=Qp.call(Object);function Nb(n){if(!rt(n)||Et(n)!=Pb)return!1;var r=Tn(n);if(r===null)return!0;var e=Ib.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Qp.call(e)==Cb}var Jp=Nb;function Eb(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 ef=Eb;function Mb(){this.__data__=new to,this.size=0}var tf=Mb;function Lb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var rf=Lb;function Bb(n){return this.__data__.get(n)}var of=Bb;function Db(n){return this.__data__.has(n)}var nf=Db;var Gb=200;function Rb(n,r){var e=this.__data__;if(e instanceof to){var t=e.__data__;if(!ro||t.length<Gb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new To(t)}return e.set(n,r),this.size=e.size,this}var sf=Rb;function Pn(n){var r=this.__data__=new to(n);this.size=r.size}Pn.prototype.clear=tf;Pn.prototype.delete=rf;Pn.prototype.get=of;Pn.prototype.has=nf;Pn.prototype.set=sf;var On=Pn;function Vb(n,r){return n&&fr(r,xn(r),n)}var af=Vb;function jb(n,r){return n&&fr(r,vn(r),n)}var lf=jb;var pf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,cf=pf&&typeof module=="object"&&module&&!module.nodeType&&module,Fb=cf&&cf.exports===pf,df=Fb?Ue.Buffer:void 0,uf=df?df.allocUnsafe:void 0;function zb(n,r){if(r)return n.slice();var e=n.length,t=uf?uf(e):new n.constructor(e);return n.copy(t),t}var ff=zb;function Ub(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var mf=Ub;function kb(){return[]}var Sa=kb;var Hb=Object.prototype,Wb=Hb.propertyIsEnumerable,hf=Object.getOwnPropertySymbols,qb=hf?function(n){return n==null?[]:(n=Object(n),mf(hf(n),function(r){return Wb.call(n,r)}))}:Sa,An=qb;function $b(n,r){return fr(n,An(n),r)}var yf=$b;var Yb=Object.getOwnPropertySymbols,Xb=Yb?function(n){for(var r=[];n;)_n(r,An(n)),n=Tn(n);return r}:Sa,wa=Xb;function Kb(n,r){return fr(n,wa(n),r)}var gf=Kb;function Zb(n,r,e){var t=r(n);return Ve(n)?t:_n(t,e(n))}var _a=Zb;function Qb(n){return _a(n,xn,An)}var Ni=Qb;function Jb(n){return _a(n,vn,wa)}var Ta=Jb;var eS=wt(Ue,"DataView"),Pa=eS;var tS=wt(Ue,"Promise"),Oa=tS;var rS=wt(Ue,"Set"),Aa=rS;var xf="[object Map]",oS="[object Object]",vf="[object Promise]",bf="[object Set]",Sf="[object WeakMap]",wf="[object DataView]",nS=Br(Pa),iS=Br(ro),sS=Br(Oa),aS=Br(Aa),lS=Br(fa),Po=Et;(Pa&&Po(new Pa(new ArrayBuffer(1)))!=wf||ro&&Po(new ro)!=xf||Oa&&Po(Oa.resolve())!=vf||Aa&&Po(new Aa)!=bf||fa&&Po(new fa)!=Sf)&&(Po=function(n){var r=Et(n),e=r==oS?n.constructor:void 0,t=e?Br(e):"";if(t)switch(t){case nS:return wf;case iS:return xf;case sS:return vf;case aS:return bf;case lS:return Sf}return r});var Rr=Po;var cS=Object.prototype,dS=cS.hasOwnProperty;function uS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&dS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var _f=uS;var pS=Ue.Uint8Array,In=pS;function fS(n){var r=new n.constructor(n.byteLength);return new In(r).set(new In(n)),r}var Cn=fS;function mS(n,r){var e=r?Cn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Tf=mS;var hS=/\w*$/;function yS(n){var r=new n.constructor(n.source,hS.exec(n));return r.lastIndex=n.lastIndex,r}var Pf=yS;var Of=Ke?Ke.prototype:void 0,Af=Of?Of.valueOf:void 0;function gS(n){return Af?Object(Af.call(n)):{}}var If=gS;function xS(n,r){var e=r?Cn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Cf=xS;var vS="[object Boolean]",bS="[object Date]",SS="[object Map]",wS="[object Number]",_S="[object RegExp]",TS="[object Set]",PS="[object String]",OS="[object Symbol]",AS="[object ArrayBuffer]",IS="[object DataView]",CS="[object Float32Array]",NS="[object Float64Array]",ES="[object Int8Array]",MS="[object Int16Array]",LS="[object Int32Array]",BS="[object Uint8Array]",DS="[object Uint8ClampedArray]",GS="[object Uint16Array]",RS="[object Uint32Array]";function VS(n,r,e){var t=n.constructor;switch(r){case AS:return Cn(n);case vS:case bS:return new t(+n);case IS:return Tf(n,e);case CS:case NS:case ES:case MS:case LS:case BS:case DS:case GS:case RS:return Cf(n,e);case SS:return new t;case wS:case PS:return new t(n);case _S:return Pf(n);case TS:return new t;case OS:return If(n)}}var Nf=VS;function jS(n){return typeof n.constructor=="function"&&!hn(n)?op(Tn(n)):{}}var Ef=jS;var FS="[object Map]";function zS(n){return rt(n)&&Rr(n)==FS}var Mf=zS;var Lf=Dr&&Dr.isMap,US=Lf?gn(Lf):Mf,Bf=US;var kS="[object Set]";function HS(n){return rt(n)&&Rr(n)==kS}var Df=HS;var Gf=Dr&&Dr.isSet,WS=Gf?gn(Gf):Df,Rf=WS;var qS=1,$S=2,YS=4,Vf="[object Arguments]",XS="[object Array]",KS="[object Boolean]",ZS="[object Date]",QS="[object Error]",jf="[object Function]",JS="[object GeneratorFunction]",e1="[object Map]",t1="[object Number]",Ff="[object Object]",r1="[object RegExp]",o1="[object Set]",n1="[object String]",i1="[object Symbol]",s1="[object WeakMap]",a1="[object ArrayBuffer]",l1="[object DataView]",c1="[object Float32Array]",d1="[object Float64Array]",u1="[object Int8Array]",p1="[object Int16Array]",f1="[object Int32Array]",m1="[object Uint8Array]",h1="[object Uint8ClampedArray]",y1="[object Uint16Array]",g1="[object Uint32Array]",Ee={};Ee[Vf]=Ee[XS]=Ee[a1]=Ee[l1]=Ee[KS]=Ee[ZS]=Ee[c1]=Ee[d1]=Ee[u1]=Ee[p1]=Ee[f1]=Ee[e1]=Ee[t1]=Ee[Ff]=Ee[r1]=Ee[o1]=Ee[n1]=Ee[i1]=Ee[m1]=Ee[h1]=Ee[y1]=Ee[g1]=!0;Ee[QS]=Ee[jf]=Ee[s1]=!1;function Ia(n,r,e,t,o,i){var s,l=r&qS,c=r&$S,u=r&YS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Mt(n))return n;var a=Ve(n);if(a){if(s=_f(n),!l)return ip(n,s)}else{var d=Rr(n),p=d==jf||d==JS;if(_o(n))return ff(n,l);if(d==Ff||d==Vf||p&&!o){if(s=c||p?{}:Ef(n),!l)return c?gf(n,lf(s,n)):yf(n,af(s,n))}else{if(!Ee[d])return o?n:{};s=Nf(n,d,l)}}i||(i=new On);var f=i.get(n);if(f)return f;i.set(n,s),Rf(n)?n.forEach(function(y){s.add(Ia(y,r,e,y,n,i))}):Bf(n)&&n.forEach(function(y,g){s.set(g,Ia(y,r,e,g,n,i))});var m=u?c?Ta:Ni:c?vn:xn,h=a?void 0:m(n);return dp(h||n,function(y,g){h&&(g=y,y=n[g]),fn(s,g,Ia(y,r,e,g,n,i))}),s}var Ca=Ia;var x1=1,v1=4;function b1(n){return Ca(n,x1|v1)}var Vr=b1;var S1="__lodash_hash_undefined__";function w1(n){return this.__data__.set(n,S1),this}var zf=w1;function _1(n){return this.__data__.has(n)}var Uf=_1;function Na(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new To;++r<e;)this.add(n[r])}Na.prototype.add=Na.prototype.push=zf;Na.prototype.has=Uf;var kf=Na;function T1(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 Hf=T1;function P1(n,r){return n.has(r)}var Wf=P1;var O1=1,A1=2;function I1(n,r,e,t,o,i){var s=e&O1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var u=i.get(n),a=i.get(r);if(u&&a)return u==r&&a==n;var d=-1,p=!0,f=e&A1?new kf:void 0;for(i.set(n,r),i.set(r,n);++d<l;){var m=n[d],h=r[d];if(t)var y=s?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(!Hf(r,function(g,v){if(!Wf(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){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 Ea=I1;function C1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var qf=C1;function N1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var $f=N1;var E1=1,M1=2,L1="[object Boolean]",B1="[object Date]",D1="[object Error]",G1="[object Map]",R1="[object Number]",V1="[object RegExp]",j1="[object Set]",F1="[object String]",z1="[object Symbol]",U1="[object ArrayBuffer]",k1="[object DataView]",Yf=Ke?Ke.prototype:void 0,hc=Yf?Yf.valueOf:void 0;function H1(n,r,e,t,o,i,s){switch(e){case k1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case U1:return!(n.byteLength!=r.byteLength||!i(new In(n),new In(r)));case L1:case B1:case R1:return pn(+n,+r);case D1:return n.name==r.name&&n.message==r.message;case V1:case F1:return n==r+"";case G1:var l=qf;case j1:var c=t&E1;if(l||(l=$f),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=M1,s.set(n,r);var a=Ea(l(n),l(r),t,o,i,s);return s.delete(n),a;case z1:if(hc)return hc.call(n)==hc.call(r)}return!1}var Xf=H1;var W1=1,q1=Object.prototype,$1=q1.hasOwnProperty;function Y1(n,r,e,t,o,i){var s=e&W1,l=Ni(n),c=l.length,u=Ni(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:$1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var w=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(w===void 0?g===v||o(g,v,e,t,i):w)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var S=n.constructor,b=r.constructor;S!=b&&"constructor"in n&&"constructor"in r&&!(typeof S=="function"&&S instanceof S&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var Kf=Y1;var X1=1,Zf="[object Arguments]",Qf="[object Array]",Ma="[object Object]",K1=Object.prototype,Jf=K1.hasOwnProperty;function Z1(n,r,e,t,o,i){var s=Ve(n),l=Ve(r),c=s?Qf:Rr(n),u=l?Qf:Rr(r);c=c==Zf?Ma:c,u=u==Zf?Ma:u;var a=c==Ma,d=u==Ma,p=c==u;if(p&&_o(n)){if(!_o(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new On),s||ya(n)?Ea(n,r,e,t,o,i):Xf(n,r,c,e,t,o,i);if(!(e&X1)){var f=a&&Jf.call(n,"__wrapped__"),m=d&&Jf.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new On),o(h,y,e,t,i)}}return p?(i||(i=new On),Kf(n,r,e,t,o,i)):!1}var em=Z1;function tm(n,r,e,t,o){return n===r?!0:n==null||r==null||!rt(n)&&!rt(r)?n!==n&&r!==r:em(n,r,e,t,tm,o)}var rm=tm;function Q1(n,r){return n!=null&&r in Object(n)}var om=Q1;function J1(n,r,e){r=Rt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=no(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&mn(o)&&un(s,o)&&(Ve(n)||yn(n)))}var nm=J1;function ew(n,r){return n!=null&&nm(n,r,om)}var im=ew;function tw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var sm=tw;function rw(n,r){return r.length<2?n:va(n,ef(r,0,-1))}var am=rw;function ow(n,r){return rm(n,r)}var Ei=ow;function nw(n,r){return r=Rt(r,n),n=am(n,r),n==null||delete n[no(sm(r))]}var lm=nw;function iw(n){return Jp(n)?void 0:n}var cm=iw;var sw=1,aw=2,lw=4,cw=ba(function(n,r){var e={};if(n==null)return e;var t=!1;r=da(r,function(i){return i=Rt(i,n),t||(t=i.length>1),i}),fr(n,Ta(n),e),t&&(e=Ca(e,sw|aw|lw,cm));for(var o=r.length;o--;)lm(e,r[o]);return e}),Nn=cw;function dw(n,r,e,t){if(!Mt(n))return n;r=Rt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=no(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Mt(a)?a:un(r[o+1])?[]:{})}fn(l,c,u),l=l[c]}return n}var dm=dw;function uw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=va(n,s);e(l,s)&&dm(i,Rt(s,n),l)}return i}var um=uw;function pw(n,r){return um(n,r,function(e,t){return im(n,t)})}var pm=pw;var fw=ba(function(n,r){return n==null?{}:pm(n,r)}),En=fw;import{MathUtils as La}from"three";function fm(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 l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...En(Ye(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,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ye(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ba(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Da(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function mw(n){Object.assign(n.scene.publish,{orbitControls:{...an.defaultData,...Ye(n.scene.publish.orbitControls)}})}function hw(n){Object.assign(n.scene.publish.settings,{video:{...sa.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function yw(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((Du.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Gu.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function gw(n){n.scene.publish.withBackground=!0}function xw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function vw(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 bw(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 Sw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ye(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function ww(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 _w(n){function r(t){Object.setPrototypeOf(t,Be.prototype),t.texture&&Object.setPrototypeOf(t.texture,Be.prototype)}function e(t){Object.setPrototypeOf(t,Be.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=Ye(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],u=Ye(c).layers;e(u),c.layers=u}})})}function mm(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function yc(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={...Ye(r),colors:e,steps:t};Object.assign(r,o)}})}function Tw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function hm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&yc(t)}):"material"in e&&typeof e.material!="string"&&yc(e.material)}),Object.values(n.shared.materials).forEach(r=>yc(r))}function Pw(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 Ow(n){n.shared.audios=Lr({},Ie.prototype)}function Aw(n){n.shared.videos=Lr({},Ie.prototype)}function Iw(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 Cw(n){Object.entries(Ye(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ye(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Nw(n){n.scene.publish.settings.web.preload=!1}function ym(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 Ew(n){n.shared.fonts=Lr({},Ie.prototype)}function Mw(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 Lw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=St.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=Mw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Nt.defaultData,...So.defaultData,flatShading:!1,wireframe:!1,geometry:{...Qr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,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},u=Ye(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 Bw(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:La.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,En(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:La.generateUUID(),data:u},{fi:1,id:La.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Dw(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...En(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={...En(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:La.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function gm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=pt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function xm(n){Ba(n,gm),Da(n,gm)}function Gw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function Rw(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 Vw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=St.defaultTwoLayerData("phong"))})}function jw(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 Fw(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 zw(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)}var vm=34;function bm(n){let r=n.schema??0;r!==vm&&(console.warn("updating from ",r,"to ",vm),r<1&&(Da(n,fm),Ba(n,fm),n.schema=1),r<2&&(mw(n),n.schema=2),r<3&&(yw(n),n.schema=3),r<4&&(gw(n),n.schema=4),r<5&&(xw(n),n.schema=5),r<6&&(vw(n),n.schema=6),r<7&&(bw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(hm(n),n.schema=9),r<10&&(Tw(n),n.schema=10),r<11&&(Pw(n),n.schema=11),r<12&&(hm(n),n.schema=12),r<13&&(Ow(n),n.schema=13),r<14&&(Iw(n),n.schema=14),r<15&&(Cw(n),n.schema=15),r<16&&(Nw(n),n.schema=16),r<17&&(Da(n,ym),Ba(n,ym),n.schema=17),r<18&&(Da(n,mm),Ba(n,mm),n.schema=18),r<19&&(hw(n),n.schema=19),r<20&&(Ew(n),Lw(n),n.schema=20),r<21&&(Bw(n),Dw(n),n.schema=21),r<22&&(xm(n),n.schema=22),r<23&&(Gw(n),n.schema=23),r<24&&(Rw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Aw(n),r<25&&(n.schema=25)),r<26&&(Sw(n),n.schema=26),r<27&&(ww(n),n.schema=27),r<28&&(xm(n),n.schema=28),r<29&&(_w(n),n.schema=29),r<30&&(Vw(n),n.schema=30),r<31&&(jw(n),n.schema=31),r<33&&(Fw(n),n.schema=33),r<34&&(zw(n),n.schema=34))}var ui=Ls(wm());import{Object3D as aO,Vector3 as Bt,Euler as Hd,MathUtils as Dy,Matrix4 as ko}from"three";var Uw=.5*(Math.sqrt(3)-1),Li=(3-Math.sqrt(3))/6,kw=1/3,mr=1/6,HG=(Math.sqrt(5)-1)/4,WG=(5-Math.sqrt(5))/20,Bi=n=>Math.floor(n)|0,_m=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]),xc=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 Ga(n=Math.random){let r=Pm(n),e=new Float64Array(r).map(o=>_m[o%12*2]),t=new Float64Array(r).map(o=>_m[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*Uw,d=Bi(i+a),p=Bi(s+a),f=(d+p)*Li,m=d-f,h=p-f,y=i-m,g=s-h,v,w;y>g?(v=1,w=0):(v=0,w=1);let S=y-v+Li,b=g-w+Li,T=y-1+2*Li,_=g-1+2*Li,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let O=x+r[C],V=e[O],z=t[O];P*=P,l=P*P*(V*y+z*g)}let I=.5-S*S-b*b;if(I>=0){let O=x+v+r[C+w],V=e[O],z=t[O];I*=I,c=I*I*(V*S+z*b)}let A=.5-T*T-_*_;if(A>=0){let O=x+1+r[C+1],V=e[O],z=t[O];A*=A,u=A*A*(V*T+z*_)}return 70*(l+c+u)}}function Tm(n=Math.random){let r=Pm(n),e=new Float64Array(r).map(i=>xc[i%12*3]),t=new Float64Array(r).map(i=>xc[i%12*3+1]),o=new Float64Array(r).map(i=>xc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*kw,m=Bi(s+f),h=Bi(l+f),y=Bi(c+f),g=(m+h+y)*mr,v=m-g,w=h-g,S=y-g,b=s-v,T=l-w,_=c-S,x,C,P,I,A,O;b>=T?T>=_?(x=1,C=0,P=0,I=1,A=1,O=0):b>=_?(x=1,C=0,P=0,I=1,A=0,O=1):(x=0,C=0,P=1,I=1,A=0,O=1):T<_?(x=0,C=0,P=1,I=0,A=1,O=1):b<_?(x=0,C=1,P=0,I=0,A=1,O=1):(x=0,C=1,P=0,I=1,A=1,O=0);let V=b-x+mr,z=T-C+mr,$=_-P+mr,te=b-I+2*mr,K=T-A+2*mr,q=_-O+2*mr,k=b-1+3*mr,G=T-1+3*mr,D=_-1+3*mr,B=m&255,L=h&255,F=y&255,W=.6-b*b-T*T-_*_;if(W<0)u=0;else{let E=B+r[L+r[F]];W*=W,u=W*W*(e[E]*b+t[E]*T+o[E]*_)}let H=.6-V*V-z*z-$*$;if(H<0)a=0;else{let E=B+x+r[L+C+r[F+P]];H*=H,a=H*H*(e[E]*V+t[E]*z+o[E]*$)}let j=.6-te*te-K*K-q*q;if(j<0)d=0;else{let E=B+I+r[L+A+r[F+O]];j*=j,d=j*j*(e[E]*te+t[E]*K+o[E]*q)}let U=.6-k*k-G*G-D*D;if(U<0)p=0;else{let E=B+1+r[L+1+r[F+1]];U*=U,p=U*U*(e[E]*k+t[E]*G+o[E]*D)}return 32*(u+a+d+p)}}function Pm(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 Hw}from"three";var Yt=new Hw,Ra=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;Yt.a.fromBufferAttribute(r,o),Yt.b.fromBufferAttribute(r,o+1),Yt.c.fromBufferAttribute(r,o+2),i*=Yt.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 s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Yt.a.fromBufferAttribute(this.positionAttribute,r*3),Yt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Yt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Yt.a,o).addScaledVector(Yt.b,i).addScaledVector(Yt.c,1-(o+i)),Yt.getNormal(t),this}};import{Object3D as Xw}from"three";var Im=Ls(Am());import{Object3D as Ww,Matrix4 as jr}from"three";var qw=new jr,$w=new jr,Yw=new jr,Di;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Di||(Di={}));var Mn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new jr;this.matrixWorldRigid=new jr;this.shearScale=new jr;this.shearScaleInv=new jr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Ww&&(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 s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Di.is(s)&&s.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:s,q:l}=(0,Im.SVD)(o),c=qw.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=$w.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=Yw.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new jr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof jr?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}};var vc=class extends Mn(Xw){},Kw=n=>n.type==="Mesh",Fr=class extends vc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1}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 Fr(t),this.add(o),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.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 Kw(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 DT,BufferGeometry as GT,MeshBasicMaterial as RT}from"three";import{Matrix4 as LT,Mesh as BT}from"three";import{Matrix4 as Fa,Vector3 as r_,Euler as o_}from"three";import{Box3 as Zw,Line3 as Qw,Matrix4 as bc,Vector3 as Vt}from"three";var Oo=new Vt,Ao=new Vt,Ln=new bc,Nm=[new Vt(-1,1,1),new Vt(-1,-1,1),new Vt(1,-1,1),new Vt(1,1,1),new Vt(-1,1,-1),new Vt(-1,-1,-1),new Vt(1,-1,-1),new Vt(1,1,-1)],Jw=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],e_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Cm=(n,r,e)=>{n.updateEntityBoxSize(Oo,Ao),Ln.copy(r).multiply(n.matrixWorld),Ao.x===0&&Ao.y===0&&Ao.z===0?e.push(new Vt(Oo.x,Oo.y,Oo.z).applyMatrix4(Ln)):Nm.forEach(t=>{e.push(t.clone().multiply(Ao).add(Oo).applyMatrix4(Ln))})},Gi=class extends Zw{constructor(){super(...arguments);this.matrix=new bc;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 bc().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{(s.visible||s.cloner&&s.data.visible)&&Cm(s,t,i)}):Cm(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(Ln.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Ao).multiplyScalar(.5),this.getCenter(Oo),Ln.copy(this.matrix).setPosition(Oo),this.vertices=Nm.map(e=>e.clone().multiply(Ao).applyMatrix4(Ln))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Jw.map(([e,t])=>new Qw(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Vt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=e_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Xt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as t_,CubicBezierCurve3 as Sc,Vector3 as Kt}from"three";var _c=class extends t_{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),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 Tc=.001;function Pc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Tc}function wc(n,r){let e=new Kt(...n.position),t=new Kt(...n.controlNext.position),o=new Kt(...r.controlPrevious.position),i=new Kt(...r.position);return Pc(e,t,i)&&Pc(e,o,i)}function ja(n){let r=n.points.map(a=>new Kt(...a.data.position)),e=[n.points[0]],t=new Kt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Pc(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new Kt(...d.position),f=new Kt(...d.controlPrevious.position),m=new Kt(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,w=e[g].data,S=new Kt(...v.position),b=new Kt(...w.position),T=S.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=wc(v,d),C=wc(d,w);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[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 a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!wc(e[d].data,e[p].data))f.position.distanceTo(m.position)>Tc&&(h=new Sc(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)>Tc&&(h=new Sc(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=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),v=f.distanceTo(m)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),S=y.clone().multiplyScalar(-h).add(w),b=p.distanceTo(S)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=T.clone().lerp(S,2),x=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new Sc(f,x,C,m)}let u=new _c;return c.forEach(a=>{a&&u.add(a)}),u}var Ce;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ce||(Ce={}));var Ri=n=>Ce.is(n),za=n=>class extends Mn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Gi;this._recursiveBBox=new Gi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Ce.is(o))return o}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(Ce.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 s of this.data.states)wo.toOps(this.data,s.data).forEach(c=>{let u=Rs.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=wo.patch(this.data,s),wo.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(o.scene)}}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=>{Ri(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(Ce.is(o[i]))return o[i];if(Ce.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ce.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)Ri(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ce.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ri(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ri(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!0){return super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Ri(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,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Nn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Zr.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ce.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ce.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Nn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Wt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=dt.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 a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=dt.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,wo.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Wt(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(Er.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=dt.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=sn.resolve(o.overrides,a),p.updateByOp(t,tt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of Jr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of Jr.rootOverrideProps)if(Wt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Er.filterOp(d.overrideData,a);p&&d.updateByOp(p,tt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Er.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=tt.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&&!$t.is(t.props.type)&&Xt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Xt.changeEntityProptotype(this,o,i);for(let s of this.children)Ce.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Wt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(i.scene),Wt(t.path,["cloner"])!==null){let s=tt.drop(t,1);s.path.length===0&&s.type===0&&s.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,o=this.dataPatched.pathSnapping){if(o?.pathId){let i=t.find(o.pathId);this._pathSnappingObject=i,i?this.updatePathSnappingSlide(o):t.addPendingCommand(()=>{this.updatePathSnapping(t)})}}updatePathSnappingSlide(t=this.dataPatched.pathSnapping){let o=this._pathSnappingObject;if(!o)return;o.snappedEntities.add(this);let i=o.data,s=ja(i.geometry.path),l=(t.slide+t.offset)%1,c=s.getPointAt(l),u=this.parent?this.parent?.matrixWorld:new Fa,a=new Fa().multiplyMatrices(u.clone().invert(),o.matrixWorld);c.applyMatrix4(a);let d={position:c.toArray(),rotation:i.rotation};if(t.orientation==="tangential"){let p=new Fa().extractRotation(o.matrixWorld),m=s.getTangentAt(l).applyMatrix4(p).add(c),h=new Fa().lookAt(c,m,new r_(0,1,0)),y=new o_().setFromRotationMatrix(h);d={...d,rotation:[y.x,y.y,y.z]}}this.updateTransformState(d)}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()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t),o?.scene&&this.updatePathSnapping(o.scene,t.pathSnapping)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Xt.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 Xt.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{ConeGeometry as s_}from"three";import{BufferGeometry as n_,CylinderGeometry as i_,Float32BufferAttribute as Oc,Vector2 as Zt,Vector3 as Ua}from"three";var Mm=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:0,cornerSegments:8,hollow:0},n.parameters),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:s,thetaStart:l,thetaLength:c,radiusTop:u,radiusBottom:a,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new Vi(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new i_(u,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function io(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Em(n){return new Zt(n.y,-n.x)}var Vi=class extends n_{constructor(r,e,t,o,i,s,l,c,u,a,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,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],y=[],g=[],v=0,w=t/2,S=new Ua,b=new Ua;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new Zt(r,w),_=new Zt(e,-w),x=null,C=null,P=null,I=null,A=T.clone().sub(_),O=0,V=0,z=0;p>0&&(O=Math.min(r,e)*(1-p),V=r-O,z=e-O);let $=T.clone();$.x-=O;let te=Math.PI-A.angle(),K=A.angle(),q=Math.tan(K/2),k=Math.tan(te/2),G=q+k,D=p?G:k,B=p?G:q;if(u=Math.min(u,(r-V)/D,A.length()/G),a=Math.min(a,(e-z)/B,A.length()/G),u>0){let U=u/q;x=T.clone().sub(new Zt(U,u)),p&&(P=x.clone(),P.x-=O-G*u),T.sub(A.clone().setLength(U))}if(a>0){let U=a/k;C=_.clone().sub(new Zt(U,-a)),_.add(A.clone().setLength(U)),p&&(I=C.clone(),I.x-=O-G*a,$.sub(A.clone().setLength(U)))}A=T.clone().sub(_);let L=A.length()<.5,F=[];for(let U=0;U<=o;U++){let E=[],oe=U/o,Y=oe*c+l,re=new Zt(Math.sin(Y),Math.cos(Y));I&&C?(W(E,oe,re,te,a,I,-1,!0),W(E,oe,re,K,a,C,-1,!1)):C?(H(E,re,C.x,0,-1),W(E,oe,re,K,a,C,-1,!1)):s||H(E,re,e,z,-1);let X=Em(A).normalize();if(io(X,re,S),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,ie=A.clone().multiplyScalar(Z).add(_);io(ie,re,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),g.push(oe,.5+b.y/t),E.push(v++)}if(P&&x?(W(E,oe,re,te,u,x,1,!1),W(E,oe,re,K,u,P,1,!0)):x?(W(E,oe,re,te,u,x,1,!1),H(E,re,x.x,0,1)):s||H(E,re,r,V,1),p&&!L){let ee=Em(A).multiplyScalar(-1).normalize();io(ee,re,S);for(let Z=0;Z<=i;Z++){let ie=Z/i,ce=A.clone().multiplyScalar(-ie).add($);io(ce,re,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),g.push(oe,.5+b.y/t),E.push(v++)}}p&&!s&&E.push(E[0]),F.push(E)}for(let U=0;U<F.length-1;U++)for(let E=0;E<F[0].length-1;E++){if(s&&p&&E==i)continue;let oe=F[U][E],Y=F[U+1][E],re=F[U+1][E+1],X=F[U][E+1],ee=h[re*3+0],Z=h[re*3+2];m.push(oe,Y,X),(ee!=0||Z!=0)&&m.push(Y,re,X)}c<Math.PI*2&&(j(-1,F[0],l),j(1,F[F.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Oc(h,3)),this.setAttribute("normal",new Oc(y,3)),this.setAttribute("uv",new Oc(g,2));function W(U,E,oe,Y,re,X,ee,Z){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;Z&&(se-=1),se*=Y;let pe=new Zt(Math.sin(se),Math.cos(se)*ee),Le=pe.clone().multiplyScalar(re).add(X);io(Le,oe,b),h.push(b.x,b.y,b.z),io(pe,oe,S),y.push(S.x,S.y,S.z),g.push(E,.5+b.y/t),U.push(v++)}}function H(U,E,oe,Y,re){let X=new Ua,ee=new Zt,Z=[oe,Y];re<0&&Z.reverse();for(let ie of Z)ee.set(ie,w*re),io(ee,E,X),h.push(X.x,X.y,X.z),y.push(0,re,0),g.push(.5,.5),U.push(v++)}function j(U,E,oe){let Y=new Zt(Math.sin(oe),Math.cos(oe)),re=new Zt(-Math.cos(oe),Math.sin(oe)),X=new Ua,ee=U<0?(ce,se,pe)=>m.push(ce,se,pe):(ce,se,pe)=>m.push(ce,pe,se),Z=new Zt((r+e+V+z)/4,0);io(Z,Y,X),h.push(X.x,X.y,X.z),y.push(re.x,0,re.y),g.push(.5,.5);let ie=v++;for(let ce of E){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(re.x,0,re.y);let pe=g.slice(ce*2,ce*2+2);g.push(...pe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var Lm=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:0,cornerRadiusBottom:0,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,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:a,cornerSegments:d}=n.parameters,p;return u>0||a>0||c<360?p=new Vi(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new s_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as a_,BufferGeometry as l_,Float32BufferAttribute as Ac,Vector3 as ji}from"three";var Bm=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:0,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:s,cornerRadius:l,cornerSegments:c}=n.parameters,u;return l==0?u=new a_(r,e,t,o,i,s):u=new Cc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Ic=Math.PI/2,Cc=class extends l_{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,r/2,e/2,t/2);let a=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,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),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,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),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new Ac(d,3)),this.setAttribute("normal",new Ac(p,3)),this.setAttribute("uv",new Ac(f,2));function y(w,S,b,T,_,x,C,P,I,A,O){let V=(x-2*l)/I,z=(C-2*l)/A,$=x/2-l,te=C/2-l,K=P/2,q=I+1,k=A+1,G=0,D=0,B=new ji;for(let L=0;L<k;L++){let F=L*z-te;for(let W=0;W<q;W++){let H=W*V-$;B[w]=H*T,B[S]=F*_,B[b]=K,d.push(B.x,B.y,B.z),B[w]=0,B[S]=0,B[b]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(W/I),f.push(1-L/A),G+=1}}for(let L=0;L<A;L++)for(let F=0;F<I;F++){let W=m+F+q*L,H=m+F+q*(L+1),j=m+(F+1)+q*(L+1),U=m+(F+1)+q*L;a.push(W,H,U),a.push(H,j,U),D+=6}u.addGroup(h,D,O),h+=D,m+=G}function g(w,S,b,T,_,x,C,P,I,A,O){let V=(C-2*l)/A,z=C/2-l,$=P/2-l,te=I/2,K=A+1,q=0,k=0,G=new ji,D=new ji;for(let B=0;B<c+1;B++){let L=B/c*Ic,F=Math.sin(L)*l,W=(1-Math.cos(L))*l,H=Math.sin(L),j=Math.cos(L);G[S]=($+F)*_,G[b]=(te-W)*x,D[w]=0,D[S]=H*Math.sign(G[S]),D[b]=j*Math.sign(G[b]);for(let U=0;U<K;U++){let E=U*V-z;G[w]=E*T,d.push(G.x,G.y,G.z),p.push(D.x,D.y,D.z),f.push(U/A),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<A;L++){let F=m+L+K*B,W=m+L+K*(B+1),H=m+(L+1)+K*(B+1),j=m+(L+1)+K*B;a.push(F,W,j),a.push(W,H,j),k+=6}u.addGroup(h,k,O),h+=k,m+=q}function v(w,S,b){let T=new ji,_=new ji(r/2,e/2,t/2);_.subScalar(l);let x=[],C=w*S*b>0?(I,A,O)=>a.push(I,A,O):(I,A,O)=>a.push(I,O,A);for(let I=0;I<=c;I++){let A=[],O=Ic*(1-I/c),V=Math.cos(O),z=Math.sin(O),$=0;for(let te=0;te<=I;te++){let K=Math.cos($),q=Math.sin($);T.x=V*K,T.y=z,T.z=V*q;let k=_.clone().addScaledVector(T,l);d.push(w*k.x,S*k.y,b*k.z),p.push(w*T.x,S*T.y,b*T.z),f.push(0,0),A.push(m++),$+=Ic/I}x.push(A)}let P=x.length-1;for(let I=0;I<P;I++){let A=x[I],O=x[I+1],V=A.length-1;C(A[0],O[1],O[0]);for(let z=1;z<=V;z++)C(A[z-1],A[z],O[z]),C(A[z],O[z+1],O[z])}}}};import{BufferGeometry as c_,Float32BufferAttribute as Nc,Triangle as d_,Vector3 as zr,Vector2 as Ec}from"three";var so=class extends c_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Nc(l,3)),this.setAttribute("normal",new Nc(u,3)),this.setAttribute("uv",new Nc(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new zr,h=m.clone(),y=new d_,g=i*o,v=o-g,w=s+1,S=new zr,b=(q,k)=>S.subVectors(q,k).normalize(),T=(q,k)=>Array(q).fill(void 0).map(k),_=T(r.length/3,(q,k)=>new zr().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let q=0;q<_.length;q++){let k=_[q],G=[],D,B,L,F=1e10,W=-1;for(;(W=e.indexOf(q,W+1))!=-1;){let E=W-W%3;D=e[E+(W+1)%3],B=e[E+(W+2)%3],L=k.distanceToSquared(_[D]),F=Math.min(F,L),G.push([D,B,L])}F+=1e-6;let H=[],j=0,U=G.length;for(let E=0;E<U;E++){[D,B,L]=G[j];let oe=x[D]?.includes(q)==!0;L<=F&&H.push(D+ +oe*C),j=G.findIndex(Y=>Y[0]==B)}x.push(H)}let P=[];{let q=0,k=0,G,D,B=f==3;for(let L=0;L<=s;L++){G=L*(L+1)/2,D=(L+1)*(L+2)/2;for(let F=0;F<s-L;F++)[q,k]=[G+F+L+2,D+F+L+3],P.push(G,D,...B?[k,G]:[q,D],k,q),[G,D]=[q,k];P.push(G,D,G+s+2)}}let I=m.clone(),A=m.clone(),O=m.clone(),V=m.clone(),z=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),I.copy(m).multiplyScalar(v);let k=x[q];for(let H=0;H<k.length;H++){let j=k[H],U=k[(H+1)%f];y.setFromPointsAndIndices(_,q,j%C,U%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[q][H])}let G=[],D=[],B=[],L=new zr;s==0&&[...te[q]].reduce((H,j)=>H.add(j),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let j=[],U=(H-1+f)%f,E=te[q][U],oe=te[q][H];m.copy(E).sub(I),h.copy(oe).sub(I);let Y=I.angleTo(m),re=m.angleTo(h),X=Math.cos(Y)*g;s==0?A.copy(L):A.copy(I).setLength(v+X),D.push(X);let ee=[A,E,oe];for(let Z=0;Z<2;Z++){let ie=ee[Z],ce=ee[Z+1];V.subVectors(ie,I),z.subVectors(ce,I),O.crossVectors(V,z).normalize();for(let se=0;se<w;se++){let pe=[Y,re][Z]*se/w;m.copy(V).applyAxisAngle(O,pe).add(I),G.push(m.clone()),Z&&(b(m,I),j.push([se==0?ie:m.clone(),S.clone()]))}Z&&(b(ce,I),j.push([ce,S.clone()]))}B.push(j)}$.push(B);let F=2*w,W=2;for(let H=0;H<f;H++){let j=F*H,U=F*((H+1)%f),E=[G[j]];for(let Y=1;Y<w;Y++){V=G[j+Y],z=G[U+Y],E.push(V);for(let re=1,X=Y-W+1;re<=X;re++)m.lerpVectors(V,z,re/(X+1)),m.sub(I).setLength(D[H]).add(I),E.push(m.clone());E.push(z)}for(let Y=0;Y<w;Y++)E.push(G[Y+w+j]);E.push(G[U+w]);let oe=P.map(Y=>E[Y]);l.push(...oe.map(Y=>[Y.x,Y.y,Y.z]).flat()),u.push(...oe.map(Y=>(b(Y,I),[S.x,S.y,S.z])).flat())}}let K=[];for(let q=0;q<x.length;q++)for(let k=0;k<f;k++){let G=x[q][k];if(G<C){let D=x[G].findIndex(F=>F%C==q),B=$[q][k],L=$[G][D];for(let F=0;F<w;F++){let W=B[F],H=L[w-F],j=B[F+1],U=L[w-(F+1)];[W,H,j,j,H,U].forEach(E=>{l.push(E[0].x,E[0].y,E[0].z),u.push(E[1].x,E[1].y,E[1].z)})}K.push(B[0][0],L[w][0],B[w][0],L[0][0])}}for(;K.length;){let q,k,G,D;[q,k]=K.splice(0,2);let B=[q];for(;q!=k;)B.push(k),G=K.indexOf(k),D=G%2,k=K.splice(G-D,2)[1-D];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=S.dot(B[0])<0;L&&S.negate();for(let F=1;F<=B.length-2;F++)[B[F+ +L],B[F+1-+L],B[0]].forEach(W=>{l.push(W.x,W.y,W.z),u.push(S.x,S.y,S.z)})}}function d(){let p=new zr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=b(p)/2/Math.PI+.5,C=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new zr,m=new zr,h=new zr,y=new zr,g=new Ec,v=new Ec,w=new Ec,S=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),w.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=b(y);S(g,x+0,f,C),S(v,x+2,m,C),S(w,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],P=c[_+4],I=Math.max(x,C,P),A=Math.min(x,C,P);I>.9&&A<.1&&(x<.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 so(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as u_}from"three";var Dm=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:s}=n.parameters,l=o===0&&i!==0?new Fi(r*.5,i,s):new u_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Fi=class extends so{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-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],l=[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(s,l,c,r,e,t),this.type=c}static fromJSON(r){return new Fi(r.radius,r.corner,r.cornerSides)}};import{Plane as w_,Shape as Km,Vector2 as Ur,Vector3 as __,MathUtils as Vc,LineCurve as jc,QuadraticBezierCurve as Zm,CubicBezierCurve as qa}from"three";import{CubicBezierCurve as ka,EllipseCurve as p_,LineCurve as Ha,LineCurve3 as f_,MathUtils as m_,QuadraticBezierCurve as Lc,SplineCurve as h_,Vector2 as lt,Vector3 as Vm}from"three";var zi=1e-12,Bn=class{constructor(r){this.position=new lt;this.startPosition=new lt;this.uuid=m_.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 Bn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Dn=class extends Bn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Dn(this.parent).copy(this)}},Qt=class extends Bn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Dn(this),new Dn(this))}static create(e,t){let o=new Qt(e,new lt(...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 s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Qt(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 lt,t=new lt){let[o,i]=this.computeTangents();return o&&i&&(Gm(o,e),Gm(i,t)),[e,t]}computeTangent(e=new lt){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new lt){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Gm(n,r=new lt){let e=n.length();return r.set(-n.y/e,n.x/e)}var Bc=n=>n,Gn=new lt,Wa=new lt,y_=new lt,g_=new lt,x_=new lt,v_=new lt,jm=new Vm,Fm=new Vm;function zm(n){let r=new lt;r.addVectors(n.v0,Gn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new lt;return e.addVectors(n.v2,Wa.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ka(n.v0,r,e,n.v2)}function Ui(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function b_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function S_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Dc(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 Um(n,r,e){return Rm(n,r)&&Rm(r,e)&&Mc(n.position,r.position,e.position)}function Mc(n,r,e){return Gn.copy(r).sub(n).cross(Wa.copy(e).sub(n))===0}function km(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(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(l+c,s+u),o.set(l-c,s-u),[t,o]}function Hm(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Wm(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),d;return Dc(r,n,e)>Math.PI&&(a*=-1),Ui(u,l)?d=(l+u)*(t/a-.5)*8/3/(s-c):d=(s+c)*(t/a-.5)*8/3/(u-l),o.set(r.x-d*l,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Gc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Rm(n,r){return Mc(n.position,n.controls[1].position,r.position)&&Mc(n.position,r.controls[0].position,r.position)}function qm(n,r,e,t,o=.5){let i=Gn.subVectors(r,n).multiplyScalar(o).add(n),s=Wa.subVectors(e,r).multiplyScalar(o).add(r),l=y_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=g_.subVectors(s,i).multiplyScalar(o).add(i),a=x_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=v_.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,a.x,a.y,d.x,d.y,t.x,t.y]}function $m(n,r,e=12,t=!0){let o=Fm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=Bc(r[c]),a=Gn,d=ao(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof ka||u instanceof Lc||u instanceof Ha){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&S_(i,o))continue;i===void 0&&(i=jm),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Ym(n,r,e,t=12,o=!0){let i=Fm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=Bc(r[c]),d=Gn,p=ao(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof ka||a instanceof Lc||a instanceof Ha){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=jm:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function Rc(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=ao(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=ao(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=ao(n[0].roundedCurveCorner,r)*.5),t}function ao(n,r=12){return n&&n instanceof p_?r*2:n&&(n instanceof Ha||n instanceof f_)?1:n&&n instanceof h_?r*n.points.length:r}function Xm(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Bc(r[s]),c=ao(l,e),u=Gn;for(let a=0;a<=c;a++)if(l instanceof ka||l instanceof Lc||l instanceof Ha){if(l.getPoint(a/c,u),o!==void 0&&b_(o,u,zi))continue;o===void 0&&(o=Wa),o.copy(u),n.push(u.x,u.y),i++}}return Ui(n[0],n[n.length-2],zi)&&Ui(n[1],n[n.length-1],zi)&&(n.pop(),n.pop()),t&&i>1&&!(Ui(n[i-1],n[1],zi)&&Ui(n[i-2],n[0],zi))&&(n.push(n[0],n[1]),i++),n}var Fc=new Ur,T_=new Ur,P_=new Ur,O_=new Ur,A_=new Ur,I_=new Ur,Se=class extends Km{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new w_(new __(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Vc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Qt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),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 s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],u=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=u;else return a+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 s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.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 s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Fc.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Vc.generateUUID()){let i;e instanceof Ur?i=e:i=new Ur(e,t);let s=new Qt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,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 s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}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 $m(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Rc(this.points,e,!1),this.roundedCurveDivisions=Rc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Ym(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Xm(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,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=ao(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(Gc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(Fc.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=l[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Gc(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 s=this.points[t-1];this._applyCurveForPoint(i,s)}}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 s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,a=l&&c&&Um(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),w=Math.min(g,v),S=1-w/h,b=w/y,T=d.getPointAt(S,Fc),_=p.getPointAt(b,T_);this._subSplitCurve(d,f,S,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Dc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,A]=km(T,_,P,P_,O_),O=Hm(I,A,s.position),[V,z]=Wm(O,T,_,P,A_,I_);x=new qa(T.clone(),V.clone(),z.clone(),_.clone())}else x=new Zm(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof jc)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,u=l.getUtoTmapping(o,0),a=qm(l.v0,l.v1,l.v2,l.v3,u);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return t}clone(){let e=new Se(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,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],u=e.points[i+3],a=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Qt(Vc.generateUUID(),new Ur(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof qa&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof Zm&&(i[l]=zm(i[l]));for(l=0,c=i.length;l<c;l++){let d=i[l],p=l>0?i[l-1]:null,f;d instanceof qa?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof jc&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof qa?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof jc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Km&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),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 Uc=Math.PI*2;function zc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function C_(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),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Qm(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 N_(n,r,e,t,o,i,s,l,c,u){let a=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*d-a*f-d*p;m<0&&(m=0),m/=a*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,w=(s-h)/o,S=(l-y)/i,b=(-s-h)/o,T=(-l-y)/i,_=Qm(1,0,w,S),x=Qm(w,S,b,T);return!u&&x>0&&(x-=Uc),u&&x<0&&(x+=Uc),{centerx:g,centery:v,ang1:_,ang2:x}}function Jm({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,a=(r-t)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=N_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Uc/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let w=0;w<v;w++)c.push(C_(f,m)),f+=m;return c.map(w=>{let{x:S,y:b}=zc(w[0],o,i,h,y),{x:T,y:_}=zc(w[1],o,i,h,y),{x,y:C}=zc(w[2],o,i,h,y);return{x1:S,y1:b,x2:T,y2:_,x,y:C}})}import{BufferAttribute as Ya,BufferGeometry as D_}from"three";var ve;(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"})(ve||(ve={}));var De;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(De||(De={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var ae=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){ue(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){ue(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){ue(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){ue(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 s,l,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)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,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)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),ki=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}(),$a=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}(),Rn=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}(),eh=function(){function n(){var r=new Rn,e=new ki,t=new $a(0),o=new $a(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 $a(0),t=new $a(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;ue(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 s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;ue(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 s=e;do s.Lface=o,s=s.Lnext;while(s!==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,s=r.next;s.prev=i,i.next=s},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,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new Rn,e=new Rn,t=new ki,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 Rn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ki;this.makeFace_(s,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 ki;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 Rn;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 s=new ki;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;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);s=r.prev,l=r.next,l.prev=s,s.next=l},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,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&ae.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)ue(c.Sym.next===u.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(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}(),th=function(){function n(){this.handle=null}return n}(),rh=function(){function n(){this.key=null,this.node=0}return n}(),E_=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 th,this.handles[t]=new rh;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,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>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=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===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=s}},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 th;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new rh}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;ue(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}(),kc=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}(),oh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),M_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new oh,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 oh;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}(),L_=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,s=t.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var l=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){ue(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 kc;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 ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.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,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do ue(ae.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,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,ue(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),i=ae.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.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(ae.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,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new Rn,f,m;if(ue(!ae.vertEq(u,c)),ue(ae.edgeSign(c,r.event,s)<=0),ue(ae.edgeSign(u,r.event,l)>=0),ue(s!==r.event&&l!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ae.intersect(c,s,u,l,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(l.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(l.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ae.vertEq(p,s)||ae.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)>=0||!ae.vertEq(u,r.event)&&ae.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):(ae.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),ae.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,s,c,l,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,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ae.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ae.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,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,s,l,c;if(o=e.eUp,ae.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.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}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new kc;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ae.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.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);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new kc,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,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 M_(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,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++t===1)),ue(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,ae.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 E_(i,ae.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,ue(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||!ae.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}(),B_=function(){function n(){this.mesh=new eh,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=ve.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,s,l,c=[0,0,0],u=[0,0,0],a=[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 v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[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]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.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 s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.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(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.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&&(ae.edgeGoesRight(t.Lprev)||ae.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,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===De.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;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,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===De.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.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,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.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,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new eh),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,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=De.POLYGONS),s===void 0&&(s=!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_(),L_.computeInterior(this,s);var l=this.mesh;return e===De.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===De.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function Jt(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?De.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=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 B_;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var lV=ve.ODD,cV=ve.NONZERO,dV=ve.POSITIVE,uV=ve.NEGATIVE,pV=ve.ABS_GEQ_TWO,fV=De.POLYGONS,mV=De.CONNECTED_POLYGONS,hV=De.BOUNDARY_CONTOURS;var Vn=class extends D_{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=De.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}!c&&!u&&(l=Jt({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Ya(new Float32Array(p*3),3),this._normalAttribute=new Ya(new Float32Array(p*3),3),this._uvAttribute=new Ya(new Float32Array(p*2),2),this._indexAttribute=new Ya(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let S=0,b=p;S<b;S++){let T=S*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,w=g-y;for(let S=0,b=p;S<b;S++){let T=S*2,_=l.vertices[T+0],x=l.vertices[T+1],C=(_-m)/v,P=(x-y)/w;this._positionAttribute.setXYZ(S,_,x,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,C,P)}for(let S=0,b=f;S<b;S++){let T=S*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),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,(l?.elementCount??1)*3)}clone(){let e=new Vn(this._shape,this._curveSegments);return e.userData=Vr(this.userData),e}};import{BufferAttribute as Ka,BufferGeometry as G_}from"three";var Xa=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*Xa.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*Xa.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,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)}},Hi=Xa;Hi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Hc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),jn=class extends G_{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),C=[];for(let P=x.length-1;P>=1;P-=2){let I=x[P-1],A=x[P-0];C.push(I,A)}return C}),a=Jt({windingRule:l,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),d=Jt({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]});if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let C=_*2,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Hi(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],A=P+I,O={start:P,count:I,normals:[],continuous:[],concave:[]},V=P,z=A-1,$=P+1,te=this._shape.roundedCurves.length;do{let G=V-P,D=a.vertices[z*2+0],B=a.vertices[z*2+1],L=a.vertices[V*2+0],F=a.vertices[V*2+1],W=a.vertices[$*2+0],H=a.vertices[$*2+1],j=L-D,U=F-B,E=Math.sqrt(j*j+U*U);j/=E,U/=E;let oe=L-W,Y=F-H,re=Math.sqrt(oe*oe+Y*Y);oe/=re,Y/=re,O.normals[G*2+0]=-Y,O.normals[G*2+1]=oe,O.concave[G]=j*Y-U*oe>0;let X=a.vertexIndices[V];if(Array.isArray(X))O.continuous[G]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)O.continuous[G]=!0;else{let ie=Z===1?ee+1:ee-1;ie=(ie+te)%te;let ce=Z===1?0:1,se=this._shape.roundedCurves[ee].getTangent(Z),pe=this._shape.roundedCurves[ie].getTangent(ce);O.continuous[G]=se.dot(pe)>.95}}x&&(O.normals[G*2+0]*=-1,O.normals[G*2+1]*=-1),[z,V,$]=[V,$,$+1],$>=A&&($-=I)}while($!==P+1);let K=[];K.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,A*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((G,D)=>[D,D]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,A*2)});for(let G=1;G<=this._bevelSegments;G++){let D=G/this._bevelSegments*Math.PI/2,B=(1-Math.cos(D))*this._bevelSize,L=[],F=[],W=[],H=[],j=0;for(let E=0;E<I;E++){let oe=E*2,Y=(E-1+I)%I*2,re=a.vertices[O.start*2+oe+0],X=a.vertices[O.start*2+oe+1],ee=-O.normals[Y+0]*B,Z=-O.normals[Y+1]*B,ie=-O.normals[oe+0]*B,ce=-O.normals[oe+1]*B;if(O.concave[E]||!O.concave[E]&&x){let se=Math.atan2(Z,ee),pe=Math.atan2(ce,ie);pe>se&&(pe-=Math.PI*2);let Le=pe-se;if(O.continuous[E]||x){let ge=se+Le/2,Ge=Math.cos(ge)*B,Pe=Math.sin(ge)*B;L[2*j+0]=re+Ge*(x?-1:1),L[2*j+1]=X+Pe*(x?-1:1),H[j]=E,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Le)/Math.PI));for(let Ge=0;Ge<=ge;Ge++){let Pe=se+Le*(Ge/ge),yt=Math.cos(Pe)*B,gt=Math.sin(Pe)*B;L[2*j+0]=re+yt,L[2*j+1]=X+gt,H[j]=E,j++}}}else L[2*j+0]=re+ee,L[2*j+1]=X+Z,H[j]=E,F[E]=j,j++,L[2*j+0]=re,L[2*j+1]=X,H[j]=E,j++,L[2*j+0]=re+ie,L[2*j+1]=X+ce,H[j]=E,W[E]=j,j++}let U=Jt({windingRule:ve.POSITIVE,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:E=>{let Y=E.Org.idx,re=H[Y],X=H[(Y+1)%H.length];E.idx=[re,X],E.Sym.idx=[X,re]},vertexIdCallback:E=>{let oe=E.Lprev.idx;return[oe?oe[1]:0,E.idx?E.idx[0]:0]}});if(!U)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!U.vertexCount)break;for(let E=0;E<U.vertexIndices.length;E++){let[oe,Y]=U.vertexIndices[E];if(oe===Y)continue;let re=Y;Y<oe&&(re+=I);for(let X=oe;X<re;X++){let ee=X%I,Z=(X+1)%I;if(!O.continuous[ee]||!O.continuous[Z]){U.vertexIndices[E]=[oe,ee],U.vertexIndices.splice(E+1,0,[Z,Y]),U.vertices.splice((E+1)*2,0,U.vertices[E*2],U.vertices[E*2+1]);break}}}K.push({bevelI:G,angle:D,size:B,boundary:U,reverseMap:H,insetPoints:L})}let q=(G,D,B)=>{let L=0,F=G.boundary.vertexIndices.length;for(;L<F&&B(G.boundary.vertexIndices[D]);)D=(D+1)%F,L++;return L},k=g.length;for(let G=1;G<K.length;G++){let D=K[G-1],B=K[G],L=D.boundary.vertexIndices.length,F=B.boundary.vertexIndices.length;if(!L||!F)break;let W=O.concave.length,H=0,j=Hc(H,I);for(;!D.boundary.vertexIndices.filter(j).length||!B.boundary.vertexIndices.filter(j).length;)H++,j=Hc(H,I);let U=D.boundary.vertexIndices.findIndex(j),E=B.boundary.vertexIndices.findIndex(j);do U=(U+1)%L;while(j(D.boundary.vertexIndices[U]));do E=(E+1)%F;while(j(B.boundary.vertexIndices[E]));H=(H+1)%I;let oe=H,Y=this._buildBevelVert(O,D,(U-1+L)%L),re=this._buildBevelVert(O,B,(E-1+F)%F),X=Y,ee=re,Z,ie,ce=!1;do{j=Hc(H,I);let se=q(D,U,j),pe=q(B,E,j),Le=ce;if(ce=!1,se&&!pe){for(let ge=0;ge<se;ge++)Z=this._buildBevelVert(O,D,(U+ge)%L,ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;ce=!0}else if(!se&&pe)for(let ge=0;ge<pe;ge++)ie=this._buildBevelVert(O,B,(E+ge)%F,ge/(pe-1)),g.push(ee.topN,X.topP,ie.topP),g.push(X.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&pe)if(Z=this._buildBevelVert(O,D,U,0),ie=this._buildBevelVert(O,B,E,0),Le?(g.push(X.topN,ie.topP,ee.topN),g.push(X.topN,Z.topP,ie.topP),g.push(ie.bottomP,X.bottomN,ee.bottomN),g.push(ie.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP)),X=Z,ee=ie,se===pe)for(let ge=1;ge<se;ge++)Z=this._buildBevelVert(O,D,(U+ge)%L,ge/(se-1)),ie=this._buildBevelVert(O,B,(E+ge)%F,ge/(pe-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP),X=Z,ee=ie;else if(se>pe){let ge=se/pe,Ge=0;for(let Pe=1;Pe<se;Pe++)Z=this._buildBevelVert(O,D,(U+Pe)%L,Pe/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Pe>(Ge+1)*ge&&(Ge++,ie=this._buildBevelVert(O,B,(E+Ge)%F,Ge/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ge=pe/se,Ge=0;for(let Pe=1;Pe<pe;Pe++)ie=this._buildBevelVert(O,B,(E+Pe)%F,Pe/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie,Pe>(Ge+1)*ge&&(Ge++,Z=this._buildBevelVert(O,D,(U+Ge)%L,Ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}U=(U+se)%L,E=(E+pe)%F,H=(H+1)%W}while(H!==oe)}if(this._buildWall(K,O,g),x){let G=[];for(let D=g.length-1;D>=k+2;D-=3){let B=g[D-2],L=g[D-1],F=g[D-0];G.push(F,L,B)}g.splice(k,g.length-k,...G)}if(x){let G=[];for(let D=K[K.length-1].boundary.vertices.length-1;D>=1;D-=2){let B=K[K.length-1].boundary.vertices[D-1],L=K[K.length-1].boundary.vertices[D-0];G.push(B,L)}v.push(G)}if(!x){let G=K[K.length-1],D=Jt({windingRule:K.length>1?ve.POSITIVE:ve.ODD,elementType:De.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...v]});if(!D)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<D.elementCount*3;B+=3){let L=this._buildSurfaceVert(D,D.elements[B+0]),F=this._buildSurfaceVert(D,D.elements[B+1]),W=this._buildSurfaceVert(D,D.elements[B+2]);g.push(L.top,F.top,W.top),g.push(W.bottom,F.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new Ka(Uint32Array.from(g),1),S=new Ka(this._buffer.positions,3),b=new Ka(this._buffer.normals,3),T=new Ka(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,T.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",T),this.setIndex(w)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],w=t.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,T=(w-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],P=e.normals[g+1];if(p){let z=C-_,$=P-x;_=_+z*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),A=I*3,O=I*2,V={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[A+0]=v,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=this._depth-S,this._buffer.normals[A+0]=_*f,this._buffer.normals[A+1]=x*f,this._buffer.normals[A+2]=m,this._buffer.uvs[O+0]=b,this._buffer.uvs[O+1]=T,this._buffer.positions[A+3]=v,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=S,this._buffer.normals[A+3]=_*f,this._buffer.normals[A+4]=x*f,this._buffer.normals[A+5]=-m,this._buffer.uvs[O+2]=T,this._buffer.uvs[O+3]=b,d||(I+=2,A+=6,O+=4,V.topP=I+0,V.bottomP=I+1,this._buffer.positions[A+0]=v,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=this._depth-S,this._buffer.normals[A+0]=C*f,this._buffer.normals[A+1]=P*f,this._buffer.normals[A+2]=m,this._buffer.uvs[O+0]=b,this._buffer.uvs[O+1]=T,this._buffer.positions[A+3]=v,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=S,this._buffer.normals[A+3]=C*f,this._buffer.normals[A+4]=P*f,this._buffer.normals[A+5]=-m,this._buffer.uvs[O+2]=T,this._buffer.uvs[O+3]=b),this.vertexCache[s]=V,V}clone(){let e=new jn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Vr(this.userData),e}};var Fn=class extends jn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Vr(this.userData),e}};var _t=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:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new Vn(n.shape,o,{windingRule:s}):l=new Fn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as ih,Vector2 as sh}from"three";var ah=Math.PI*2,Un=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{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,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:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=R_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=_t.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function R_(n,r,e,t,o,i){if(t>=ah)return o>30||o%4===0?(j_(n,r,e,i),Math.round(o/4)):nh(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},u=Jm({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?V_(n,s.x,s.y,u,o,r,e,i):nh(n,t,o,r,e,i)}function V_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(zn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=zn(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 l>0?lh(n,i,s,l):n.addPoint(zn(0,0)),c}function nh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(zn(u,a))}return r<ah?i>0?lh(n,t,o,i):n.addPoint(zn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&ch(n,t,o,i)),1}function j_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(Za(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Za(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Za(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Za(o,i-e,o+l,i-e,o-l,i-e)),t>0&&ch(n,r,e,t)}function zn(n,r){return new Qt(ih.generateUUID(),new sh(n,r))}function Za(n,r,e,t,o,i){let s=zn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function lh(n,r,e,t){dh(n,r,e,t).forEach(i=>n.addPoint(i))}function ch(n,r,e,t){let o=dh(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function dh(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new sh(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=ih.generateUUID(),u}).reverse();return l.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(u)}),l}import{BufferGeometry as F_,Float32BufferAttribute as Wc,Vector3 as uh}from"three";var ph=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),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,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:s,pathRadius:l,pathType:c,pathSegments:u,cornerRadius:a,cornerSegments:d}=n.parameters,p=new Io(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Io=class extends F_{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,d=1,p=1,f=!1){super();let m=r&&s===1;m&&(p=0),d>100&&(d=100);let h=()=>new uh,y=new uh,g=h(),v=h(),w=h(),S,b,T,_,x,C,P,I,A=h(),O=h(),V=h(),z=h(),$=h(),te=h(),K=h(),q=h(),k=t-2*c+.001,G=k/s,D=Math.ceil(l*s),B=D+1,L=k/D,F=-k/2,W=a+1,H=2*Math.PI/a,j=Math.PI/2/p,U=.01,E=Math.min((1-d/100)*c,c-U),oe=c-E,Y=0,re=2,X=p*re+re,ee=W*X/re,Z=ee+W*B,ie=W*(B+X),[ce,se,pe]=[3,3,2].map(He=>Array(ie*He).fill(0)),Le=[],ge=i-c;function Ge(He,It){let sr=Math.PI/2;C=It*L,I=2*Math.PI*(C%G)/G+sr,C+=F,P=Math.sin(I)*ge,x=Math.cos(I)*ge,r?He.set(x,P,C):He.set(x,C,P)}Ge(y,-1e-10),Ge(g,0),A.copy(y),Ge(y,1);let Pe=y.distanceTo(g),yt=m?0:oe+E,gt=Pe*D+2*yt,Ho=E,Dt=gt-yt;for(let He=0;He<=D;He++){Ge(v,He),q.subVectors(v,A).normalize(),A.copy(v),te.copy(v).setComponent(+r+1,0).normalize(),K.crossVectors(q,te).normalize();let It=He===0,sr=He===D,Og=It?3*Math.PI/2:j,Ag=It?Ho:Dt,Ig=It?W:Z,Cg=It?0:ie-W,Ng=q.clone().multiplyScalar(It?-oe:oe).add(v),Eg=q.clone().multiplyScalar(It?-1:1).normalize();for(let Nr=0;Nr<W;Nr++){let eu=Nr*H;if(O.addVectors(y.copy(te).multiplyScalar(c*Math.cos(eu)),g.copy(K).multiplyScalar(c*Math.sin(eu))),V.copy(O).normalize(),It||sr){m||(Y=Cg+Nr,[0,1,2].forEach(xt=>{ce[Y*3+xt]=Ng.getComponent(xt),se[Y*3+xt]=Eg.getComponent(xt)}),pe[Y*2]=+sr,pe[Y*2+1]=Nr/a),g.copy(V).multiplyScalar(E),w.addVectors(v,g);for(let xt=0;xt<p;xt++){let Fl=xt*j+Og;z.addVectors(y.copy(q).multiplyScalar(oe*Math.sin(Fl)),g.copy(V).multiplyScalar(oe*Math.cos(Fl))),$.copy(z).normalize(),g.addVectors(w,z),z.normalize(),Y=Ig+xt*W+Nr,[0,1,2].forEach(Es=>{ce[Y*3+Es]=g.getComponent(Es),se[Y*3+Es]=$.getComponent(Es)});let Mg=+It+Math.sin(Fl);pe[Y*2]=(Ag+oe*Mg)/gt,pe[Y*2+1]=Nr/a}}g.addVectors(v,O),Y=ee+He*W+Nr,[0,1,2].forEach(xt=>{ce[Y*3+xt]=g.getComponent(xt),se[Y*3+xt]=V.getComponent(xt)}),pe[Y*2]=(yt+He*Pe)/gt,pe[Y*2+1]=Nr/a}}let Wo=B+2*p+re,Vl=1,[jl,xi]=[+m,Wo-1];f&&(xi-=1);for(let He=jl;He<=xi-1;He++){let It=m&&He===xi-1;for(let sr=0;sr<W-1;sr++)S=He*W+sr,b=S+1,T=(It?sr:S)+W,_=(It?sr+1:b)+W,He===0?Le.push(b,_,T):He===Wo-2?Le.push(S,b,T):Le.push(S,b,T,b,_,T)}this.setIndex(Le),this.setAttribute("position",new Wc(ce,3)),this.setAttribute("normal",new Wc(se,3)),this.setAttribute("uv",new Wc(pe,2))}};import{IcosahedronGeometry as z_}from"three";var fh=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:s}=n.parameters,l=o===0&&i!==0?new Wi(r*.5,i,s):new z_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Wi=class extends so{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],s=[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],l="IcosahedronGeometry";super(i,s,l,r,e,t),this.type=l}static fromJSON(r){return new Wi(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as U_,Shape as k_}from"three";var mh=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 k_;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 U_(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as wh,BufferGeometryLoader as tT,Vector3 as rT,BoxGeometry as _h}from"three";import{BufferGeometry as Z_,Vector2 as Xc,Vector3 as Sh}from"three";import{Box3 as H_,BufferAttribute as qi,BufferGeometry as hh,Color as Yc,EventDispatcher as W_,Float32BufferAttribute as kn,Matrix3 as yh,Matrix4 as bh,MathUtils as q_,Object3D as $_,Sphere as Y_,Vector2 as Lt,Vector3 as ot,Vector4 as X_}from"three";var hr=new bh,qc=new $_,Qa=new ot,lo=class extends W_{constructor(){super(),this.uuid=q_.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 yh().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 s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return hr.makeRotationX(r),this.applyMatrix4(hr),this}rotateY(r){return hr.makeRotationY(r),this.applyMatrix4(hr),this}rotateZ(r){return hr.makeRotationZ(r),this.applyMatrix4(hr),this}translate(r,e,t){return hr.makeTranslation(r,e,t),this.applyMatrix4(hr),this}scale(r,e,t){return hr.makeScale(r,e,t),this.applyMatrix4(hr),this}lookAt(r){return qc.lookAt(r),qc.updateMatrix(),this.applyMatrix4(qc.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,s=o.normal,l=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 ot().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new Yc().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ot().fromBufferAttribute(s,p),new ot().fromBufferAttribute(s,f),new ot().fromBufferAttribute(s,m)],v=new Hn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Lt().fromBufferAttribute(c,p),new Lt().fromBufferAttribute(c,f),new Lt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Lt().fromBufferAttribute(u,p),new Lt().fromBufferAttribute(u,f),new Lt().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?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(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(Qa).negate(),this.translate(Qa.x,Qa.y,Qa.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new bh;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 ot,e=new ot;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),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 ot;if(r){let t=new ot,o=new ot;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],u=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,u),o.subVectors(c,u),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.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],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[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,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new lo;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,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let u=new ot,a={a:new ot,b:new ot,c:new ot};i.push(u),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(l.normal),u.a.copy(l.vertexNormals[0]),u.b.copy(l.vertexNormals[1]),u.c.copy(l.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 H_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Y_),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,s=this.vertices,l=r.vertices,c=this.faces,u=r.faces,a=this.colors,d=r.colors;e!==void 0&&(o=new yh().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,w=new Hn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let S=0,b=g.length;S<b;S++)h=g[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),w.vertexNormals.push(h);w.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)y=v[S],w.vertexColors.push(y.clone());w.materialIndex=m.materialIndex+t,c.push(w)}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],v=[];for(let w=0,S=g.length;w<S;w++)v.push(g[w].clone());this.faceVertexUvs[p].push(v)}}}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 a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.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 s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ot(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],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}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={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,w=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,w),_=a(_,5,S),_=a(_,6,b),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(w&&t.push(d(h.normal)),S){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(b&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(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 l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[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,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new lo().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],v=[];for(let w=0,S=g.length;w<S;w++){let b=g[w];v.push(b.clone())}this.faceVertexUvs[p].push(v)}}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 s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[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 a=r.boundingBox;a!==null&&(this.boundingBox=a.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 $c().fromGeometry(this),e=new hh,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Ja.call(new qi(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Ja.call(new qi(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",gh.call(new qi(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",xh.call(new qi(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",xh.call(new qi(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let u=s[l],a=new kn(u.data.length*3,3);a.name=u.name,i.push(Ja.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new kn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",vh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new kn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",vh.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 hh,t=r.geometry;if(r.isPoints||r.isLine){let o=new kn(t.vertices.length*3,3),i=new kn(t.colors.length*3,3);if(e.setAttribute("position",Ja.call(o,t.vertices)),e.setAttribute("color",gh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new kn(t.lineDistances.length,1);e.setAttribute("lineDistance",K_.call(s,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}};lo.prototype.isGeometry=!0;var $c=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,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.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,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[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 v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.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 Lt,new Lt,new Lt))}if(s===!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 Lt,new Lt,new Lt))}for(let b=0;b<c;b++){let T=l[b].vertices;u[b].data.push(T[v.a],T[v.b],T[v.c])}for(let b=0;b<d;b++){let T=a[b].vertexNormals[g];p[b].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.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}},Hn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new ot,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Yc,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}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 K_(n){return this.array.set(n),this}function gh(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 Yc),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function xh(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 Lt),r[e++]=i.x,r[e++]=i.y}return this}function Ja(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 ot),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function vh(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 X_),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var Q_=["a","b","c"];function J_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Kc(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Zc(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,u;if(t.has(c))u=t.get(c);else{let a=e[s],d=e[l];u={a,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function eT(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],Zc(s.a,s.b,n,t,s,e),Zc(s.b,s.c,n,t,s,e),Zc(s.c,s.a,n,t,s,e)}function el(n,r,e,t,o){n.push(new Hn(r,e,t,void 0,void 0,o))}function Wn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function tl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var rl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof Z_?r=new lo().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 Sh,t,o,i,s,l,c=r.vertices,u=r.faces,a=r.faceVertexUvs[0],d=a!==void 0&&a.length>0,p=[],f=new Map;eT(c,u,p,f);let m=[],h,y,g,v,w,S,b;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new Sh,w=3/8,S=1/8,b=y.faces.length,b!=2&&(w=.5,S=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),s=0;s<b;s++){for(v=y.faces[s],l=0;l<3&&(h=c[J_(v,Q_[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(S),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,C,P,I,A,O=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),A=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),A.add(e),O.push(A)}let V=O.concat(m),z=O.length,$,te,K,q=[],k=[],G,D,B,L,F=new Xc,W=new Xc,H=new Xc;for(o=0,i=u.length;o<i;o++)v=u[o],$=Number(Kc(v.a,v.b,f).newEdge)+z,te=Number(Kc(v.b,v.c,f).newEdge)+z,K=Number(Kc(v.c,v.a,f).newEdge)+z,el(q,$,te,K,v.materialIndex),el(q,v.a,$,K,v.materialIndex),el(q,v.b,te,$,v.materialIndex),el(q,v.c,K,te,v.materialIndex),d&&(G=a[o],D=G[0],B=G[1],L=G[2],F.set(Wn(D.x,B.x),Wn(D.y,B.y)),W.set(Wn(B.x,L.x),Wn(B.y,L.y)),H.set(Wn(D.x,L.x),Wn(D.y,L.y)),tl(k,F,W,H),tl(k,D,F,H),tl(k,B,W,F),tl(k,L,H,W));r.vertices=V,r.faces=q,d&&(r.faceVertexUvs[0]=k)}};var We=new rT,Th=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new wh().copy(new _h(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(We),t={width:We.x,height:We.y,depth:We.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 wh().copy(new _h(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(We)):We.set(s.width,s.height,s.depth),(r!==We.x||e!==We.y||t!==We.z)&&i.scale(We.x===0?1:r/We.x,We.y===0?1:e/We.y,We.z===0?1:t/We.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new rl(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new tT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(We);let s=100/We.x;Object.assign(i.parameters,{width:100,height:We.y*s,depth:We.z*s}),r(this.build(i))})}};var ol=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 Se?n.shape:new Se,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:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,a=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,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}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=_t.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as oT,Float32BufferAttribute as Qc,Vector2 as yr,Vector3 as Ze}from"three";var Ph=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:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=new ed(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function $i(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Jc(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let u=s.add(l).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,t/Math.sin(u))}}function nT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var ed=class extends oT{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],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,v=Math.PI-g,w=new Ze(0,-f,0),S=new Ze(0,f,0),b=new yr(r,-f),T=new yr(h,-f),_=new yr(0,S.y).sub(T),x=new yr(0,S.y).sub(b),C=new yr(_.y,-_.x).normalize(),P=new yr(x.y,-x.x).normalize(),A=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,A);let O;{let k=new Ze(C.x,C.y,0),G=new Ze(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);O=k.angleTo(G)}let V=s/Math.tan((Math.PI-_.angle())/2),z=s/Math.tan((Math.PI-O)/2),$=new Ze;if(!i){u.push(w.x,w.y,w.z),a.push(0,-1,0),d.push(0,0);let k=p++,G=[],D=b.clone(),B=V/Math.cos(Math.PI/t);D.x-=B;for(let L=0;L<t;L++){let F=L/t*Math.PI*2+m,W=new yr(Math.sin(F),Math.cos(F));$i(D,W,$),u.push($.x,$.y,$.z),a.push(0,-1,0),d.push(0,0),G.push(p++)}for(let L=0;L<G.length;L++)c.push(G[L],k,G[(L+1)%G.length])}let te=[];{let k=new Ze,G=new Ze,D=new Ze,B=new Ze,L=new Ze,F=new Ze;for(let W=0;W<t;W++){let H=W/t*Math.PI*2+m,j=(W+.5)/t*Math.PI*2+m,U=(W+1)/t*Math.PI*2+m,E=new yr(Math.sin(H),Math.cos(H)),oe=new yr(Math.sin(j),Math.cos(j)),Y=new yr(Math.sin(U),Math.cos(U));$i(b,E,G),$i(b,Y,D),$i(C,oe,k),Jc(S,G,D,z,z,B),u.push(B.x,B.y,B.z),Jc(G,S,D,z,V,L),u.push(L.x,L.y,L.z),Jc(D,G,S,V,z,F),u.push(F.x,F.y,F.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let re=p++,X=p++,ee=p++;if(c.push(re,X,ee),s>0){{let ce=G.clone().add(D).multiplyScalar(.5),se=S.clone().sub(ce).normalize(),Le=w.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ge=F.clone().sub(L);K(ce,ge,Le,_.angle())}let Z,ie;{let ce=new Ze;$i(P,Y,ce);let se=F.clone().add(B).multiplyScalar(.5);se=nT(se,D,S);let pe=F.clone().sub(B);[Z,ie]=K(se,pe,ce,O,B.y)}{let ce=Z,se=ce.clone().setY(0).normalize(),pe=new Ze(0,-1,0),Le=se.clone().cross(pe);q(ce,se,pe,Le)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,pe=S.clone();pe.y-=s/Math.sin(ce-Math.PI/2);let Le=new Ze,ge=[];for(let Pe=0;Pe<l;Pe++){let yt=[],gt=Math.PI/2-se*Pe/l,Ho=Math.cos(gt),Dt=Math.sin(gt),Wo=j;for(let Vl=0;Vl<=Pe;Vl++){let jl=Math.cos(Wo),xi=Math.sin(Wo);k.x=Ho*xi,k.y=Dt,k.z=Ho*jl,Le.copy(pe).addScaledVector(k,s),u.push(Le.x,Le.y,Le.z),a.push(k.x,k.y,k.z),d.push(0,0),yt.push(p++),Wo+=Math.PI*2/Pe/t}ge.push(yt)}ie.reverse(),ge.push(ie);let Ge=ge.length-1;for(let Pe=0;Pe<Ge;Pe++){let yt=ge[Pe],gt=ge[Pe+1],Ho=yt.length-1;c.push(gt[1],yt[0],gt[0]);for(let Dt=1;Dt<=Ho;Dt++)c.push(yt[Dt],yt[Dt-1],gt[Dt]),c.push(gt[Dt+1],yt[Dt],gt[Dt])}}}}}this.setIndex(c),this.setAttribute("position",new Qc(u,3)),this.setAttribute("normal",new Qc(a,3)),this.setAttribute("uv",new Qc(d,2));function K(k,G,D,B,L){let F=-B/2,W=(Math.PI-B)/2,H=G.clone().normalize().cross(D);k.addScaledVector(D,-s/Math.sin(W));let j=new Ze,U=new Ze,E=1,oe=p,Y=[];for(let re=0;re<=l;re++){let X=F+re/l*B;U.set(0,0,0),U.addScaledVector(H,Math.sin(X)),U.addScaledVector(D,Math.cos(X));for(let ee=0;ee<=E;ee++){let Z=ee/E-.5;if(j.copy(k),j.addScaledVector(G,Z),j.addScaledVector(U,s),L!=null){let ie=Math.max(0,j.y-L);j.addScaledVector(G,-ie/G.y)}u.push(j.x,j.y,j.z),a.push(U.x,U.y,U.z),d.push(0,0),ee===0&&Y.push(p),p++}}for(let re=0;re<l;re++)for(let X=0;X<E;X++){let ee=oe+X+(E+1)*re,Z=ee+(E+1),ie=Z+1,ce=ee+1;c.push(ee,Z,ce),c.push(Z,ie,ce)}return[k.clone().addScaledVector(G,.5),Y]}function q(k,G,D,B){let L=Math.PI/2,F=x.angle()-L,W=[],H=new Ze,j=new Ze;for(let E=0;E<=l;E++){let oe=[],Y=E/l;for(let re=0;re<=E;re++){let ee=((E?re/E:0)-.5)*v,Z=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(F)*Z),se=(L+ce)*Y,pe=Math.cos(se),Le=Math.sin(se);H.set(0,0,0),H.addScaledVector(G,Le*Z),H.addScaledVector(D,pe),H.addScaledVector(B,Le*ie),j.copy(k).addScaledVector(H,s),u.push(j.x,j.y,j.z),a.push(H.x,H.y,H.z),d.push(0,0),oe.push(p++)}W.push(oe)}let U=W.length-1;for(let E=0;E<U;E++){let oe=W[E],Y=W[E+1],re=oe.length-1;c.push(oe[0],Y[1],Y[0]);for(let X=1;X<=re;X++)c.push(oe[X-1],oe[X],Y[X]),c.push(oe[X],Y[X+1],Y[X])}}}};var nl=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 Se?n.shape:new Se,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:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(S,b,T){return b>e&&T>t?Math.min(S*e/b,S*t/T):b>e?S*e/b:T>t?S*t/T:S}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=a.x,h=d.x,y=d.y,g=a.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 v=!0;for(let S=0,b=r.points.length;S<b;S++)r.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let w=_t.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as iT}from"three";var Oh=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:Math.PI},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=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:u}=n.parameters,a=new iT(.5*r,o,i,s,l,c,u);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as sT}from"three";var Ah=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 sT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as aT,Float32BufferAttribute as td,Vector3 as lT}from"three";var Ih=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:s}=n.parameters,l=new rd(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},rd=class extends aT{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,U=0,E=0)=>new lT(j,U,E),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],w=-g,S=+g,[b,T,_]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],x=(j,U=!1)=>Math.sin(j-Math.PI/(1+ +U)),C=(j,U=!1)=>Math.cos(j-Math.PI/(1+ +U));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=b.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,b.z-a),m.subVectors(b,T),h.subVectors(_,T);let A=Math.min(m.length(),h.length())*i/100,O=A*Math.tan(o/2),V=A/Math.cos(o/2),z=m.clone().normalize().add(h.normalize()).setLength(V).add(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let U=p+o+j*$;m.set(0,Math.sin(U)*O,Math.cos(U)*O),m.add(z),h.set(0,x(U),C(U)),d.push([m.clone(),h.clone()])}d.push([b,f(0,1,0)]);let te=Math.sin($/2)*O*2,K=d.length-1,q=d[0][0].distanceTo(d[1][0]),k=d[K-1][0].distanceTo(d[K][0]),G=q+te*s+k;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*te)/G);d[K].push(0);let[D,B,L]=d[0],F,W,H;for(let j=1;j<d.length;j++)[F,W,H]=d[j],l.push(w,D.y,D.z,w,F.y,F.z,S,D.y,D.z,S,D.y,D.z,w,F.y,F.z,S,F.y,F.z),c.push(0,B.y,B.z,0,W.y,W.z,0,B.y,B.z,0,B.y,B.z,0,W.y,W.z,0,W.y,W.z),u.push(0,L,0,H,1,L,1,L,0,H,1,H),[D,B,L]=[F,W,H];this.setAttribute("position",new td(l,3)),this.setAttribute("normal",new td(c,3)),this.setAttribute("uv",new td(u,2))}};var il=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 Se?n.shape:new Se,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:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,T=f+Math.sin(b)*d,_=m+Math.cos(b)*p;a.addPoint(a.createPoint(T,_))}}else for(let S=0;S<o;S++){let b=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(b,T)),y+=h,b=f+Math.cos(y)*g,T=m+Math.sin(y)*v,S<=o,a.addPoint(a.createPoint(b,T)),y+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let w=_t.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as cT}from"three";var Ch=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 cT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Nh=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:Math.PI*2,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:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=dT(r,e,t,r*.5,s,i,0,0,o,l,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function dT(n,r,e,t,o,i,s,l,c,u,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new Io(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as uT}from"three";var Eh=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:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new uT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Mh=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 Se?n.shape:new Se,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:s,isRect:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),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=_t.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Bh,Vector3 as gr,Matrix4 as sl,BufferGeometry as Gh,BufferAttribute as od,MathUtils as Dh}from"three";function Lh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var Rh=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),s=r?.shapeData??Un.create({parameters:cc}).userData.shape;return{path:n.path??rn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...na,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new nd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Gh,{userData:{...n,type:"PathGeometry"}})}},nd=class extends Gh{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)||!Lh(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,s=Math.max(2,Math.ceil(this.inputs.path.isClosed?o*e.length:(Math.min(i+o,1)-i)*e.length)),l=[],c=[],u=Math.floor(i*e.length);for(let b=0;b<s;b++){let T=this.inputs.path.isClosed?(b+u)%e.length:Math.min(e.length-1,b+u);l.push(e[T]),c.push(t[T])}this._isOpenEnded()&&this._isGeometryClosed()&&(s++,l.push(l[0].clone()),c.push(c[0].clone())),this._applyPathModifiers(c);let{regions:a,infos:d,vertices:p}=this._computeShapePoints(5),f=0,m=0;d.sort((b,T)=>b.start-T.start),d.forEach(b=>{b.verticesStart=f,b.verticesCount=b.count+b.continuous.reduce((T,_)=>T+(_?0:1),0),m+=b.verticesCount,f=m});let h=m*s,y,g=0;this._isOpenEnded()&&(y=Jt({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:a}),g=y.vertexCount);let v=h+2*g,w={positions:new Float32Array(v*3),normals:new Float32Array(v*3),uvs:new Float32Array(v*2)},S=[];d.forEach(b=>{this._extrudeRegion(b,p,c,l,w,S,this._isGeometryClosed()&&!this._isOpenEnded())}),y&&(this._closeEnd(y,h,S,w,c[0],l[0],!1),this._closeEnd(y,h+g,S,w,c[c.length-1],l[l.length-1],!0)),this.setAttribute("position",new od(w.positions,3)),this.setAttribute("normal",new od(w.normals,3)),this.setAttribute("uv",new od(w.uvs,2)),this.setIndex(S),this.computeVertexNormals()}_extractPathPoints(){let e=this.inputs.path.isClosed,o=ja(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(o.length<2)return[];let i=[o[0]];return o.forEach(s=>{i[i.length-1].distanceToSquared(s)>.001&&i.push(s)}),e&&i[i.length-1].distanceTo(i[0])<.001&&i.pop(),i}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new gr,l=new gr,c=new gr,u=new gr,a=new gr(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-1]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=i?e[0]:g.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let S=g.clone().sub(v).normalize(),b=w.clone().sub(g).normalize(),T=S.clone().add(b).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let C=new sl().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new gr(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 sl().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e){let t=e.length,{angle:o,twist:i,startScale:s,endScale:l}=this.inputs.parameters.extrusion,c=new sl,u=new sl;return e.forEach((a,d)=>{let p=this._isGeometryClosed()?d/t:d/(t-1);c.makeRotationZ(Dh.lerp(o,o+i,p));let f=Dh.lerp(s,l,p);u.makeScale(f,f,f),a.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],S=y[v-0];g.push(w,S)}return g}),l=Jt({windingRule:t,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]}),c=Jt({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],w=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),w<p&&(p=w),w>f&&(f=w)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],w=l.elements[g+1],S=v+w,b={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let T=v,_=S-1,x=v+1,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],A=l.vertices[_*2+1],O=l.vertices[T*2+0],V=l.vertices[T*2+1],z=l.vertices[x*2+0],$=l.vertices[x*2+1],te=O-I,K=V-A,q=Math.sqrt(te*te+K*K);te/=q,K/=q;let k=O-z,G=V-$,D=Math.sqrt(k*k+G*G);k/=D,G/=D,b.normals[P*2+0]=-G,b.normals[P*2+1]=k;let B=l.vertexIndices[T];if(Array.isArray(B))b.continuous[P]=!1;else{let[L,F]=o.getCurveIndexFromVertexId(B-1,!0);if(F>0&&F<1)b.continuous[P]=!0;else{let W=F===1?L+1:L-1;W=(W+C)%C;let H=F===1?0:1,j=o.roundedCurves[L].getTangent(F),U=o.roundedCurves[W].getTangent(H);b.continuous[P]=j.dot(U)>.95}}y&&(b.normals[P*2+0]*=-1,b.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=S&&(x-=w)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=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[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new gr,a=new gr,d=new Bh;o.forEach((f,m)=>{let h=i[m],y=e.verticesStart*o.length+e.verticesCount*m;for(let g=0;g<e.count;g++){let v=(e.start+g)*2;u.set(t[v+0],t[v+1],0).applyMatrix4(f).add(h),a.set(e.normals[g*2+0],e.normals[g*2+1],0).applyMatrix4(f).normalize(),d.set(g/(e.count-1),m/(o.length-1)),this._insertVertex(s,y,u,a,d),y++,e.continuous[g]||(this._insertVertex(s,y,u,a,d),y++)}});let p=c?o.length:o.length-1;for(let f=0;f<p;f++){let m=e.verticesStart*o.length+e.verticesCount*f,h=c&&f===p-1?e.verticesStart*o.length:e.verticesStart*o.length+e.verticesCount*(f+1),y=0;for(let g=0;g<e.count;g++){e.continuous[g]||y++;let v=(g+1)%e.count===0?0:y+1,w=m+y,S=m+v,b=h+v,T=h+y;e.isHole?l.push(w,b,S,w,T,b):l.push(w,S,b,w,b,T),y++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new gr(0,0,c?-1:1).applyMatrix4(s),d=new gr,p=new Bh;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,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,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as Vh,BufferGeometry as id}from"three";import{mergeBufferGeometries as pT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function fT(){let n=new id;return n.setAttribute("position",new Vh(new Float32Array([]),3)),n.setIndex(new Vh(new Uint16Array([]),1)),n}var mT=12,hT=1,qn=class extends id{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];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:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:a}=e,d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,p=yT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(b=>new Se().fromShape(b));this.vectorShapes=v;let w=v.map(b=>_t.create({shape:b,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?hT:mT}})),S=w.length?pT(w):fT();S.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([b,T])=>{this.setAttribute(b,T)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Lr(new id,qn.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 yT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
2
  `?(t[t.length-1]+=o,o="",i===`
3
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as ad,BufferAttribute as Uh,Uint32BufferAttribute as ld,Float32BufferAttribute as cd,Matrix4 as vT,Vector3 as Xi,Sphere as bT,Box3 as ST,BoxGeometry as wT}from"three";var Fh,Yn=new Promise(n=>{Fh=n}),jh=!1;async function zh(){if(jh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.253/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});Fh(i),jh=!0}import{BufferGeometryLoader as yT}from"three";function Co(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new yT().parse(n);else{if(n.type==="SubdivGeometry")return new Fe(n,e);if(n.type==="TextGeometry")return new qn(n,r)}let o;try{o=sd(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(tn.defaultData(),100,100);t.shape=i,o=sd(t)}return o}import{Matrix4 as gT}from"three";var xT=new gT;function Yi(n,r,e,t){let o=n.position.array,i=n.normal.array,s=xT.makeScale(r,e,t).invert().elements,l,c,u;for(var a=0,d=o.length;a<d;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],u=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*u,i[a+1]=s[1]*l+s[5]*c+s[9]*u,i[a+2]=s[2]*l+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var al=new ST,Xn=new Xi,de;Yn.then(n=>{de=n});var kh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Hh=new Uint32Array([0,1,2,3]),Wh=new Uint8Array([4]),Fe=class extends ad{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=Kr.div(t,o);this.subdividedGeometry&&Yi(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Yi(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Xn.fromArray(i));let l=Xn.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Fe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new wT(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&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new bT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;al.setFromBufferAttribute(t),al.getCenter(o),e.boundingSphere.radius=o.distanceTo(al.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),al.getSize(Xn);let i={width:Xn.x,height:Xn.y,depth:Xn.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=Fe.allocate(e,i)}catch(a){console.error(a,e),s=Fe.allocate({positionWASM:kh,indexWASM:Hh,verticesPerFaceWASM:Wh},i)}if(de.set_destination_refinement_level(s,0),l=Fe.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=Fe.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=Fe.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,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;if(e.type==="TorusGeometry"&&e.arc===Math.PI*2){let{width:d,height:p,depth:f,arc:m,tubularSegments:h,radialSegments:y}=e;i=new Io(!0,d,f,p,d*.5,m/(2*Math.PI),h,f/2,0,y,0,0,!0)}else i=e.shape!==void 0?t.geometry:Co(e,o,!1);let s,l,c,u;({positions:s,triIndices:u}=fd(i.getAttribute("position"),i.getIndex()));let a;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,p=d+e.radialSegments*3;a=[d,p]}return{indices:l,verticesPerFace:c}=md(s,u,i,a),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=kh,i=Hh,s=Wh);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.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=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),w=new Uint32Array(de.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),w.set(i,0),w.set(s,i.length);let S;e?.scaleBaked?.some(T=>T!==1)&&(S=new vT().makeScale(...e.scaleBaked)),t&&(S?S.premultiply(t):S=t);let b=S?de.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,S.elements):de.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),b}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,u=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=de.HEAPU32[u[d]>>2],w=de.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let S=new ad;if(S.setIndex(new ld(w,1)),S.setAttribute("position",new cd(f,3)),S.setAttribute("normal",new cd(h,3)),t){S.setAttribute("faceMap",new ld(g,1));let b=new Float32Array(h.length/3*4).fill(0);S.setAttribute("color",new Uh(b,4))}return de.free_mesh_data(l),S.userData.type="SubdivGeometry",S}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=de.HEAPU32[l[u]>>2],d=de.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=de.HEAPU32[l[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new ad;m.setAttribute("position",new cd(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 Uh(h,3)),m.setIndex(new ld(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var qh=["getX","getY","getZ"];function fd(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<t;u++){let a=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[qh[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[qh[p]](a));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:s,triIndices:c}}var ll=new Xi,dd=new Xi,ud=new Xi,pd=new Xi;function md(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 s=e.userData.shape.extractShapePointsToFlatArray([]),l=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((d,p)=>Math.floor(p/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let u=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(u++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??r.length;s<l;)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]){ll.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),dd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),ud.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),pd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),dd.sub(ll).normalize(),ud.sub(ll).normalize(),pd.sub(ll).normalize();let c=dd.cross(ud).dot(pd);Math.abs(c)>.005||t&&t.some((u,a)=>a%2===1?!1:s>=t[a]&&s<t[a+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.capStartIndex!==void 0){let s=[],l=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,d=0;a<n.length;a+=3,d++)n[a+2]===0&&(s.push(d),c++),n[a+2]===u&&l.push(d);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var er={};Vg(er,{calcBoolean:()=>AT,calcBooleanTopological:()=>OT,freeMeshSet:()=>NT,getMeshSet:()=>IT,transformMeshSet:()=>CT});var _T,$h=new Promise(n=>{_T=n});import{Float32BufferAttribute as Yh,Sphere as TT}from"three";var ye,Kn;$h.then(n=>ye=n);function PT(n,r,e){let t,{positions:o,triIndices:i}=fd(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=md(o,i,n);s=c.length,t=[];for(let u=0,a=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[a++])}}else{let l=i.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=i[c++],t[u++]=i[c++],t[u++]=i[c++]}return{positions:o,faceIndices:t,nFaces:s}}function Xh(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=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,r):new Float32Array(ye.HEAPF32.buffer,i,r)).set(n,0),i}function Kh(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function OT(n,r){Kn===void 0&&(Kn=ye.init_csg());let e=Xh(n),t=ye.csg_calc_topological(Kn,e,n.length,Kh(r));ye._free(e);let o=6,i=ye.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ye.HEAPU32[i[l]>>2],u=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ye.HEAPU32[i[l]>>2],d=new Uint32Array(ye.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ye.HEAPU32[i[l]>>2],f=new Uint8Array(ye.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ye.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function AT(n,r,e,t){Kn===void 0&&(Kn=ye.init_csg());let o=Xh(n),i=ye.csg_calc(Kn,o,n.length,t,Kh(r));ye._free(o);let s=5,l=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ye.HEAPU32[l[u]>>2],d=ye.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ye.HEAPU32[l[u]>>2],f=ye.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Yh(d,3)),e.setAttribute("normal",new Yh(f,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new TT),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},ye.free_mesh_data(i),m}function IT(n,r,e){if(ye===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,v)=>g+v,0)+i);for(let g=0,v=0,w=0;g<y.verticesPerFace.length;g++){o[w++]=y.verticesPerFace[g];for(let S=0;S<y.verticesPerFace[g];S++)o[w++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=PT(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=ye._malloc(a),m=new Float32Array(ye.HEAPF32.buffer,f,c),h=new Uint32Array(ye.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ye.get_csg_mesh(f,s,f+d,l,i)}function CT(n,r){ye.transform_csg_mesh(n,r.elements)}function NT(n){ye.free_csg_mesh(n)}var ET={ConeGeometry:Lm,CubeGeometry:Bm,CylinderGeometry:Mm,DodecahedronGeometry:Dm,EllipseGeometry:Un,HelixGeometry:ph,IcosahedronGeometry:fh,LatheGeometry:mh,NonParametricGeometry:Th,PolygonGeometry:ol,PyramidGeometry:Ph,RectangleGeometry:nl,SphereGeometry:Oh,PlaneGeometry:Ah,BackdropGeometry:Ih,StarGeometry:il,TextFrameGeometry:Ch,TorusGeometry:Nh,TorusKnotGeometry:Eh,TriangleGeometry:Mh,PathGeometry:Rh,VectorGeometry:_t},sd=n=>ET[n.type].create(n);function Ki(n){return n!==null&&"booleanOp"in n}var Zn=class extends za(LT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new MT}updateVisible(){super.updateVisible(),this.visible=!Ki(this.parent)&&this.visible,Ki(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(er.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ki(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Zn&&(e.freeBooleanPointer(),Ki(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Ki(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var cl=new BT;function Zi(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,u=-1/0,a=-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<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>u&&(u=f),m>a&&(a=m)}cl.min.set(i,s,l),cl.max.set(c,u,a),cl.getCenter(t),cl.getSize(o).multiplyScalar(.5)}var RT=new DT,VT=new GT,nt=class extends Zn{constructor(r,e){super(RT,VT),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?Zi(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 qP,Matrix4 as $P,Sphere as wy,Vector3 as YP}from"three";import{BufferAttribute as kP,Float32BufferAttribute as Sy,MathUtils as Fd,Vector3 as zd}from"three";import{ShaderMaterial as NP}from"three";import{CubeReflectionMapping as KT,CubeRefractionMapping as ZT,CubeUVReflectionMapping as QT,LinearEncoding as ey,sRGBEncoding as JT}from"three";var Qi=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 jT}from"three";var Qe=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=jT.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,s){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 Qe&&(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 hd=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}},qe=new hd;import{Vector2 as Zh}from"three";import{MathUtils as FT}from"three";var le=class extends Qe{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 s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=FT.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.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,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),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,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ne=class extends le{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,s,l){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,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var Je=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Zh?e:new Zh(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,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as Qh}from"three";var it=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Qh?e:new Qh(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,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as zT}from"three";var $e=class extends zT{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)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var jt=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof $e?e:new $e(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var UT=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Jh=/[a-z_0-9]+/gi,Q=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===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,s){let l,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 a=[];for(;l=Jh.exec(this.src);)a.push(l);for(let d=0;d<a.length;d++){let p=a[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&qe.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=qe.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||qe.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&&qe.contains(h)&&e.include(qe.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 s=UT.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Jh);if(l){let c=0;for(;c<l.length;){let u=l[c++],a;u==="in"||u==="out"||u==="inout"?a=l[c++]:(a=u,u="");let d=l[c++];this.inputs.push({name:d,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var kT=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,yd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||yd.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,u="",a=kT.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,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,s){return e.format(this.name,this.getType(e),t)}},be=yd;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var HT=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),WT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qn=class extends le{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,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=HT.exec(e);if(t){let o=t[2],i;for(;i=WT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Jn=class extends le{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)}};qe.addKeyword("uv",function(){return new Jn});qe.addKeyword("uv2",function(){return new Jn(1)});import{LinearEncoding as qT,sRGBEncoding as $T}from"three";var No=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??No.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case qT:return["Linear"];case $T:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=No.Nodes[this.method],l=e.include(s);if(l===No.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,t)}else return e.format(l+"( "+o+" )",i,t)}fromEncoding(e){let t=No.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=No.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},ft=No;ft.Nodes={LinearToLinear:new Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
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 ad,BufferAttribute as Uh,Uint32BufferAttribute as ld,Float32BufferAttribute as cd,Matrix4 as bT,Vector3 as Xi,Sphere as ST,Box3 as wT,BoxGeometry as _T}from"three";var Fh,Yn=new Promise(n=>{Fh=n}),jh=!1;async function zh(){if(jh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.255/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});Fh(i),jh=!0}import{BufferGeometryLoader as gT}from"three";function Co(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new gT().parse(n);else{if(n.type==="SubdivGeometry")return new Fe(n,e);if(n.type==="TextGeometry")return new qn(n,r)}let o;try{o=sd(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(tn.defaultData(),100,100);t.shape=i,o=sd(t)}return o}import{Matrix4 as xT}from"three";var vT=new xT;function Yi(n,r,e,t){let o=n.position.array,i=n.normal.array,s=vT.makeScale(r,e,t).invert().elements,l,c,u;for(var a=0,d=o.length;a<d;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],u=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*u,i[a+1]=s[1]*l+s[5]*c+s[9]*u,i[a+2]=s[2]*l+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var al=new wT,Xn=new Xi,de;Yn.then(n=>{de=n});var kh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Hh=new Uint32Array([0,1,2,3]),Wh=new Uint8Array([4]),Fe=class extends ad{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=Kr.div(t,o);this.subdividedGeometry&&Yi(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Yi(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Xn.fromArray(i));let l=Xn.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Fe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new _T(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&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new ST,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;al.setFromBufferAttribute(t),al.getCenter(o),e.boundingSphere.radius=o.distanceTo(al.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),al.getSize(Xn);let i={width:Xn.x,height:Xn.y,depth:Xn.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=Fe.allocate(e,i)}catch(a){console.error(a,e),s=Fe.allocate({positionWASM:kh,indexWASM:Hh,verticesPerFaceWASM:Wh},i)}if(de.set_destination_refinement_level(s,0),l=Fe.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=Fe.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=Fe.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,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;if(e.type==="TorusGeometry"&&e.arc===Math.PI*2){let{width:d,height:p,depth:f,arc:m,tubularSegments:h,radialSegments:y}=e;i=new Io(!0,d,f,p,d*.5,m/(2*Math.PI),h,f/2,0,y,0,0,!0)}else i=e.shape!==void 0?t.geometry:Co(e,o,!1);let s,l,c,u;({positions:s,triIndices:u}=fd(i.getAttribute("position"),i.getIndex()));let a;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,p=d+e.radialSegments*3;a=[d,p]}return{indices:l,verticesPerFace:c}=md(s,u,i,a),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=kh,i=Hh,s=Wh);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.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=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),w=new Uint32Array(de.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),w.set(i,0),w.set(s,i.length);let S;e?.scaleBaked?.some(T=>T!==1)&&(S=new bT().makeScale(...e.scaleBaked)),t&&(S?S.premultiply(t):S=t);let b=S?de.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,S.elements):de.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),b}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,u=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=de.HEAPU32[u[d]>>2],w=de.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let S=new ad;if(S.setIndex(new ld(w,1)),S.setAttribute("position",new cd(f,3)),S.setAttribute("normal",new cd(h,3)),t){S.setAttribute("faceMap",new ld(g,1));let b=new Float32Array(h.length/3*4).fill(0);S.setAttribute("color",new Uh(b,4))}return de.free_mesh_data(l),S.userData.type="SubdivGeometry",S}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=de.HEAPU32[l[u]>>2],d=de.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=de.HEAPU32[l[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new ad;m.setAttribute("position",new cd(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 Uh(h,3)),m.setIndex(new ld(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var qh=["getX","getY","getZ"];function fd(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<t;u++){let a=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[qh[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[qh[p]](a));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:s,triIndices:c}}var ll=new Xi,dd=new Xi,ud=new Xi,pd=new Xi;function md(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 s=e.userData.shape.extractShapePointsToFlatArray([]),l=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((d,p)=>Math.floor(p/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let u=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(u++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??r.length;s<l;)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]){ll.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),dd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),ud.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),pd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),dd.sub(ll).normalize(),ud.sub(ll).normalize(),pd.sub(ll).normalize();let c=dd.cross(ud).dot(pd);Math.abs(c)>.005||t&&t.some((u,a)=>a%2===1?!1:s>=t[a]&&s<t[a+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.capStartIndex!==void 0){let s=[],l=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,d=0;a<n.length;a+=3,d++)n[a+2]===0&&(s.push(d),c++),n[a+2]===u&&l.push(d);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var er={};Vg(er,{calcBoolean:()=>IT,calcBooleanTopological:()=>AT,freeMeshSet:()=>ET,getMeshSet:()=>CT,transformMeshSet:()=>NT});var TT,$h=new Promise(n=>{TT=n});import{Float32BufferAttribute as Yh,Sphere as PT}from"three";var ye,Kn;$h.then(n=>ye=n);function OT(n,r,e){let t,{positions:o,triIndices:i}=fd(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=md(o,i,n);s=c.length,t=[];for(let u=0,a=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[a++])}}else{let l=i.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=i[c++],t[u++]=i[c++],t[u++]=i[c++]}return{positions:o,faceIndices:t,nFaces:s}}function Xh(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=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,r):new Float32Array(ye.HEAPF32.buffer,i,r)).set(n,0),i}function Kh(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function AT(n,r){Kn===void 0&&(Kn=ye.init_csg());let e=Xh(n),t=ye.csg_calc_topological(Kn,e,n.length,Kh(r));ye._free(e);let o=6,i=ye.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ye.HEAPU32[i[l]>>2],u=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ye.HEAPU32[i[l]>>2],d=new Uint32Array(ye.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ye.HEAPU32[i[l]>>2],f=new Uint8Array(ye.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ye.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function IT(n,r,e,t){Kn===void 0&&(Kn=ye.init_csg());let o=Xh(n),i=ye.csg_calc(Kn,o,n.length,t,Kh(r));ye._free(o);let s=5,l=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ye.HEAPU32[l[u]>>2],d=ye.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ye.HEAPU32[l[u]>>2],f=ye.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Yh(d,3)),e.setAttribute("normal",new Yh(f,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new PT),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},ye.free_mesh_data(i),m}function CT(n,r,e){if(ye===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,v)=>g+v,0)+i);for(let g=0,v=0,w=0;g<y.verticesPerFace.length;g++){o[w++]=y.verticesPerFace[g];for(let S=0;S<y.verticesPerFace[g];S++)o[w++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=OT(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=ye._malloc(a),m=new Float32Array(ye.HEAPF32.buffer,f,c),h=new Uint32Array(ye.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ye.get_csg_mesh(f,s,f+d,l,i)}function NT(n,r){ye.transform_csg_mesh(n,r.elements)}function ET(n){ye.free_csg_mesh(n)}var MT={ConeGeometry:Lm,CubeGeometry:Bm,CylinderGeometry:Mm,DodecahedronGeometry:Dm,EllipseGeometry:Un,HelixGeometry:ph,IcosahedronGeometry:fh,LatheGeometry:mh,NonParametricGeometry:Th,PolygonGeometry:ol,PyramidGeometry:Ph,RectangleGeometry:nl,SphereGeometry:Oh,PlaneGeometry:Ah,BackdropGeometry:Ih,StarGeometry:il,TextFrameGeometry:Ch,TorusGeometry:Nh,TorusKnotGeometry:Eh,TriangleGeometry:Mh,PathGeometry:Rh,VectorGeometry:_t},sd=n=>MT[n.type].create(n);function Ki(n){return n!==null&&"booleanOp"in n}var Zn=class extends za(BT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new LT}updateVisible(){super.updateVisible(),this.visible=!Ki(this.parent)&&this.visible,Ki(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(er.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ki(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Zn&&(e.freeBooleanPointer(),Ki(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Ki(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var cl=new DT;function Zi(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,u=-1/0,a=-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<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>u&&(u=f),m>a&&(a=m)}cl.min.set(i,s,l),cl.max.set(c,u,a),cl.getCenter(t),cl.getSize(o).multiplyScalar(.5)}var VT=new GT,jT=new RT,nt=class extends Zn{constructor(r,e){super(VT,jT),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?Zi(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 $P,Matrix4 as YP,Sphere as wy,Vector3 as XP}from"three";import{BufferAttribute as HP,Float32BufferAttribute as Sy,MathUtils as Fd,Vector3 as zd}from"three";import{ShaderMaterial as EP}from"three";import{CubeReflectionMapping as ZT,CubeRefractionMapping as QT,CubeUVReflectionMapping as JT,LinearEncoding as ey,sRGBEncoding as eP}from"three";var Qi=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 FT}from"three";var Qe=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=FT.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,s){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 Qe&&(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 hd=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}},qe=new hd;import{Vector2 as Zh}from"three";import{MathUtils as zT}from"three";var le=class extends Qe{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 s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=zT.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.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,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),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,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ne=class extends le{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,s,l){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,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var Je=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Zh?e:new Zh(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,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as Qh}from"three";var it=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Qh?e:new Qh(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,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as UT}from"three";var $e=class extends UT{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,s=o[1],l=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="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(l))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var jt=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof $e?e:new $e(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var kT=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Jh=/[a-z_0-9]+/gi,Q=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===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,s){let l,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 a=[];for(;l=Jh.exec(this.src);)a.push(l);for(let d=0;d<a.length;d++){let p=a[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&qe.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=qe.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||qe.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&&qe.contains(h)&&e.include(qe.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 s=kT.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Jh);if(l){let c=0;for(;c<l.length;){let u=l[c++],a;u==="in"||u==="out"||u==="inout"?a=l[c++]:(a=u,u="");let d=l[c++];this.inputs.push({name:d,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var HT=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,yd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||yd.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,u="",a=HT.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,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,s){return e.format(this.name,this.getType(e),t)}},be=yd;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var WT=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),qT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qn=class extends le{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,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=WT.exec(e);if(t){let o=t[2],i;for(;i=qT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Jn=class extends le{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)}};qe.addKeyword("uv",function(){return new Jn});qe.addKeyword("uv2",function(){return new Jn(1)});import{LinearEncoding as $T,sRGBEncoding as YT}from"three";var No=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??No.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case $T:return["Linear"];case YT:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=No.Nodes[this.method],l=e.include(s);if(l===No.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,t)}else return e.format(l+"( "+o+" )",i,t)}fromEncoding(e){let t=No.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=No.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},ft=No;ft.Nodes={LinearToLinear:new Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
5
  `)),sRGBToLinear:new Q(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
6
6
  `)),LinearTosRGB:new Q(["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
- `))},ft.LINEAR_TO_LINEAR="LinearToLinear",ft.SRGB_TO_LINEAR="sRGBToLinear",ft.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends Q{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as YT}from"three";var Tt=class extends Ne{constructor(e=new YT,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Jn,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new ft(new _e("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,t)}};var J=class extends Ne{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Ji=class extends le{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,s){i=this.getType(e);let l=this.value,c=l.build(e,t)+"( ",u=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let d=l.inputs[a],p=this.inputs[a]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var gd=class extends le{constructor(e,t,o=gd.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),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},Pt=gd;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Ae=class extends le{constructor(e,t=Ae.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 Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.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 Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,l=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,a=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ae.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,u===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);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)}},fe=Ae;fe.RAD="radians",fe.DEG="degrees",fe.EXP="exp",fe.EXP2="exp2",fe.LOG="log",fe.LOG2="log2",fe.SQRT="sqrt",fe.INV_SQRT="inversesqrt",fe.FLOOR="floor",fe.CEIL="ceil",fe.NORMALIZE="normalize",fe.FRACT="fract",fe.SATURATE="saturate",fe.SIN="sin",fe.COS="cos",fe.TAN="tan",fe.ASIN="asin",fe.ACOS="acos",fe.ARCTAN="atan",fe.ABS="abs",fe.SIGN="sign",fe.LENGTH="length",fe.NEGATE="negate",fe.INVERT="invert",fe.MIN="min",fe.MAX="max",fe.MOD="mod",fe.STEP="step",fe.REFLECT="reflect",fe.DISTANCE="distance",fe.DOT="dot",fe.CROSS="cross",fe.POW="pow",fe.MIX="mix",fe.CLAMP="clamp",fe.REFRACT="refract",fe.SMOOTHSTEP="smoothstep",fe.FACEFORWARD="faceforward";var ei=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new Ji(ei.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new ft(new _e("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new ft(new _e("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new ft(new _e("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new ft(new _e("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new _e(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new _e(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new _e(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new _e(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new _e("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=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new Ji(ei.Nodes.roughnessToMip,[i]),l=new fe(s,ei.Nodes.m0,ei.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(l,fe.FLOOR),u=new fe(l,fe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Pt(c,new J(1).setReadonly(!0),Pt.ADD)),p=new fe(a,d,u,fe.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)}},ti=ei;ti.Nodes=function(){let e=new Qn(`struct TextureCubeUVData {
7
+ `))},ft.LINEAR_TO_LINEAR="LinearToLinear",ft.SRGB_TO_LINEAR="sRGBToLinear",ft.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends Q{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as XT}from"three";var Tt=class extends Ne{constructor(e=new XT,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Jn,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new ft(new _e("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,t)}};var J=class extends Ne{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Ji=class extends le{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,s){i=this.getType(e);let l=this.value,c=l.build(e,t)+"( ",u=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let d=l.inputs[a],p=this.inputs[a]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var gd=class extends le{constructor(e,t,o=gd.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),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},Pt=gd;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Ae=class extends le{constructor(e,t=Ae.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 Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.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 Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,l=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,a=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ae.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,u===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);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)}},fe=Ae;fe.RAD="radians",fe.DEG="degrees",fe.EXP="exp",fe.EXP2="exp2",fe.LOG="log",fe.LOG2="log2",fe.SQRT="sqrt",fe.INV_SQRT="inversesqrt",fe.FLOOR="floor",fe.CEIL="ceil",fe.NORMALIZE="normalize",fe.FRACT="fract",fe.SATURATE="saturate",fe.SIN="sin",fe.COS="cos",fe.TAN="tan",fe.ASIN="asin",fe.ACOS="acos",fe.ARCTAN="atan",fe.ABS="abs",fe.SIGN="sign",fe.LENGTH="length",fe.NEGATE="negate",fe.INVERT="invert",fe.MIN="min",fe.MAX="max",fe.MOD="mod",fe.STEP="step",fe.REFLECT="reflect",fe.DISTANCE="distance",fe.DOT="dot",fe.CROSS="cross",fe.POW="pow",fe.MIX="mix",fe.CLAMP="clamp",fe.REFRACT="refract",fe.SMOOTHSTEP="smoothstep",fe.FACEFORWARD="faceforward";var ei=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new Ji(ei.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new ft(new _e("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new ft(new _e("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new ft(new _e("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new ft(new _e("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new _e(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new _e(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new _e(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new _e(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new _e("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=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new Ji(ei.Nodes.roughnessToMip,[i]),l=new fe(s,ei.Nodes.m0,ei.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(l,fe.FLOOR),u=new fe(l,fe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Pt(c,new J(1).setReadonly(!0),Pt.ADD)),p=new fe(a,d,u,fe.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)}},ti=ei;ti.Nodes=function(){let e=new Qn(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
@@ -83,7 +83,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Eo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Eo.VIEW}getShared(){return this.scope===Eo.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let l;switch(this.scope){case Eo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Eo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Eo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},et=Eo;et.LOCAL="local",et.WORLD="world",et.VIEW="view",et.NORMAL="normal";qe.addKeyword("viewNormal",function(){return new et(et.VIEW)});qe.addKeyword("localNormal",function(){return new et(et.NORMAL)});qe.addKeyword("worldNormal",function(){return new et(et.WORLD)});var xr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??xr.LOCAL}getType(){switch(this.scope){case xr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case xr.LOCAL:case xr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case xr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case xr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case xr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case xr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},Ot=xr;Ot.LOCAL="local",Ot.WORLD="world",Ot.VIEW="view",Ot.PROJECTION="projection";qe.addKeyword("position",function(){return new Ot});qe.addKeyword("worldPosition",function(){return new Ot(Ot.WORLD)});qe.addKeyword("viewPosition",function(){return new Ot(Ot.VIEW)});var tr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??tr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case tr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case tr.VECTOR:{let s=new et(et.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new Ot(Ot.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;a&&(d=`normalize( mix( ${d}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case tr.CUBE:{let s=new tr(tr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case tr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new tr(tr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${l};`),i="reflectSphereVec"):i=l;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)}},vr=tr;vr.CUBE="cube",vr.SPHERE="sphere",vr.VECTOR="vector";var dl=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ti(this.value,t??new vr(vr.VECTOR),o),this.irradianceNode=new ti(this.value,new et(et.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 XT}from"three";var ul=class extends Ne{constructor(e=new XT,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new vr,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new ft(new _e("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var ty=["x","y","z","w"],eP=["float","vec2","vec3","vec4"],tP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},rP={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[]"},pl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};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 s="";i=i.sort(r);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
86
+ }`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Eo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Eo.VIEW}getShared(){return this.scope===Eo.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let l;switch(this.scope){case Eo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Eo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Eo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},et=Eo;et.LOCAL="local",et.WORLD="world",et.VIEW="view",et.NORMAL="normal";qe.addKeyword("viewNormal",function(){return new et(et.VIEW)});qe.addKeyword("localNormal",function(){return new et(et.NORMAL)});qe.addKeyword("worldNormal",function(){return new et(et.WORLD)});var xr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??xr.LOCAL}getType(){switch(this.scope){case xr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case xr.LOCAL:case xr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case xr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case xr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case xr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case xr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},Ot=xr;Ot.LOCAL="local",Ot.WORLD="world",Ot.VIEW="view",Ot.PROJECTION="projection";qe.addKeyword("position",function(){return new Ot});qe.addKeyword("worldPosition",function(){return new Ot(Ot.WORLD)});qe.addKeyword("viewPosition",function(){return new Ot(Ot.VIEW)});var tr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??tr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case tr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case tr.VECTOR:{let s=new et(et.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new Ot(Ot.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;a&&(d=`normalize( mix( ${d}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case tr.CUBE:{let s=new tr(tr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case tr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new tr(tr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${l};`),i="reflectSphereVec"):i=l;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)}},vr=tr;vr.CUBE="cube",vr.SPHERE="sphere",vr.VECTOR="vector";var dl=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ti(this.value,t??new vr(vr.VECTOR),o),this.irradianceNode=new ti(this.value,new et(et.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 KT}from"three";var ul=class extends Ne{constructor(e=new KT,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new vr,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new ft(new _e("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var ty=["x","y","z","w"],tP=["float","vec2","vec3","vec4"],rP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},oP={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[]"},pl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};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 s="";i=i.sort(r);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
87
87
  `);return s}}();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",`
88
88
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
89
89
  #define SPE_BLENDING_NORMAL 0
@@ -128,7 +128,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
128
128
  `}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",s=""){let l=this.getVars(o),c=l[r];if(!c){let u=l.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},l.push(c),l[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(`
129
129
  `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],l=s.type,c=s.name,u=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?t+=e+" "+a.substring(0,a.length-2)+" "+c+`[${u}];
130
130
  `:t+=e+" "+a+" "+c+`;
131
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Qe?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,u=new Qi({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}else{let l=this.inputs.uniforms,c=l.list.length,u=new Qi({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[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"?qe.get(r):r,this.context.include===!1)return r.name;r instanceof Q?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof Qn&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof Q&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.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 eP[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 KT:case ZT:return new ul(t);case QT:return new dl(new Tt(t));default:return new Tt(t)}else{if(t.isVector2)return new Je(t);if(t.isVector3)return new it(t);if(t.isVector4)return new jt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return tP[r]||r}getFormatByType(r){return rP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return ty[r]}getIndexByElement(r){return ty.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=ey,e===ey&&this.context.gamma&&(e=JT),e}};import{Vector2 as Bo,Vector3 as _r,Vector4 as ii}from"three";var Te=class extends Ne{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof $e?e:new $e(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,l){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 a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return u?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var xe=class extends Ne{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,l){return e.format(this.value.toString(),i,t)}};import{UniformsLib as oP,UniformsUtils as nP}from"three";var Mo=class extends Qe{constructor(){super("basic");this.nodeType="Basic";this.color=new Te(5855577),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}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(nP.merge([oP.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
131
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Qe?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,u=new Qi({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}else{let l=this.inputs.uniforms,c=l.list.length,u=new Qi({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[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"?qe.get(r):r,this.context.include===!1)return r.name;r instanceof Q?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof Qn&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof Q&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.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 tP[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 ZT:case QT:return new ul(t);case JT:return new dl(new Tt(t));default:return new Tt(t)}else{if(t.isVector2)return new Je(t);if(t.isVector3)return new it(t);if(t.isVector4)return new jt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return rP[r]||r}getFormatByType(r){return oP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return ty[r]}getIndexByElement(r){return ty.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=ey,e===ey&&this.context.gamma&&(e=eP),e}};import{Vector2 as Bo,Vector3 as _r,Vector4 as ii}from"three";var Te=class extends Ne{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof $e?e:new $e(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,l){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 a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return u?this.generateReadonly(e,t,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var xe=class extends Ne{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,l){return e.format(this.value.toString(),i,t)}};import{UniformsLib as nP,UniformsUtils as iP}from"three";var Mo=class extends Qe{constructor(){super("basic");this.nodeType="Basic";this.color=new Te(5855577),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}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(iP.merge([nP.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
132
132
  `));let i=["#include <beginnormal_vertex>",`
133
133
  #if !defined( USE_LAYER_DISPLACE )
134
134
  #include <defaultnormal_vertex>
@@ -148,7 +148,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
148
148
  `];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(`
149
149
  `)}else{this.color===void 0&&(this.color=new Te(5855577)),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,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(`
150
150
  `));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};`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
151
- `)}return t}};import{UniformsLib as ry,UniformsUtils as iP}from"three";var rr=class extends Ne{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var st={normalRenderTarget:new Tt,normalRenderTargetDepth:new Tt,transmissionRenderTarget:new Tt,transmissionSize:new Je(2048,2048),transmissionRenderTargetDepth:new Tt,pixelRatioNode:new J(1),resolution:new Je,penumbraSize:new rr(5,.5)};for(let n of Object.values(st))n.isRenderGlobal=!0;var es=class extends Qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Te(5855577),this.emissive=new Te(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(iP.merge([ry.fog,ry.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(`
151
+ `)}return t}};import{UniformsLib as ry,UniformsUtils as sP}from"three";var rr=class extends Ne{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var st={normalRenderTarget:new Tt,normalRenderTargetDepth:new Tt,transmissionRenderTarget:new Tt,transmissionSize:new Je(2048,2048),transmissionRenderTargetDepth:new Tt,pixelRatioNode:new J(1),resolution:new Je,penumbraSize:new rr(5,.5)};for(let n of Object.values(st))n.isRenderGlobal=!0;var es=class extends Qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Te(5855577),this.emissive=new Te(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(sP.merge([ry.fog,ry.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(`
152
152
  `));let i=["#include <beginnormal_vertex>",`
153
153
  #ifndef USE_LAYER_DISPLACE
154
154
  #include <defaultnormal_vertex>
@@ -254,7 +254,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
254
254
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
255
255
  }
256
256
  `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
257
- `)}return t}};import{UniformsLib as oy,UniformsUtils as sP}from"three";var fl=class extends Qe{constructor(){super("phong");this.nodeType="Phong";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(sP.merge([oy.fog,oy.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(`
257
+ `)}return t}};import{UniformsLib as oy,UniformsUtils as aP}from"three";var fl=class extends Qe{constructor(){super("phong");this.nodeType="Phong";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(aP.merge([oy.fog,oy.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(`
258
258
  `));let i=["#include <beginnormal_vertex>",`
259
259
  #ifndef USE_LAYER_DISPLACE
260
260
  #include <defaultnormal_vertex>
@@ -289,7 +289,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
289
289
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
290
290
  }
291
291
  `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
292
- `)}return t}};import{UniformsLib as xd,UniformsUtils as aP}from"three";var ts=class extends Qe{constructor(){super("standard");this.nodeType="Standard";this.color=new Te(5855577),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(aP.merge([xd.fog,xd.lights])),xd.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(`
292
+ `)}return t}};import{UniformsLib as xd,UniformsUtils as lP}from"three";var ts=class extends Qe{constructor(){super("standard");this.nodeType="Standard";this.color=new Te(5855577),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(lP.merge([xd.fog,xd.lights])),xd.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(`
293
293
  `));let i=["#include <beginnormal_vertex>",`
294
294
  #if !defined( USE_LAYER_DISPLACE )
295
295
  #include <defaultnormal_vertex>
@@ -323,7 +323,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
323
323
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${u.result} );
324
324
  }
325
325
  `),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
326
- `)}return t}};import{UniformsLib as ny,UniformsUtils as lP}from"three";var rs=class extends Qe{constructor(){super("toon");this.nodeType="Toon";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(lP.merge([ny.fog,ny.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(`
326
+ `)}return t}};import{UniformsLib as ny,UniformsUtils as cP}from"three";var rs=class extends Qe{constructor(){super("toon");this.nodeType="Toon";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(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(cP.merge([ny.fog,ny.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(`
327
327
  `));let i=["#include <beginnormal_vertex>",`
328
328
  #ifndef USE_LAYER_DISPLACE
329
329
  #include <defaultnormal_vertex>
@@ -377,7 +377,7 @@ var Lg=Object.create;var zl=Object.defineProperty;var Bg=Object.getOwnPropertyDe
377
377
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
378
378
  }
379
379
  `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
380
- `)}return t}};var co=class extends Ne{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)}};import{Matrix3 as cP}from"three";var ri=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new cP}generateReadonly(e,t,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Vector4 as iy}from"three";var or=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof iy?new Array(e).fill(t):new Array(e).fill(new iy(0))}};var os=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(os||{}),ct=function(){let r=new Q(`vec3 random3(vec3 c) {
380
+ `)}return t}};var co=class extends Ne{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)}};import{Matrix3 as dP}from"three";var ri=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new dP}generateReadonly(e,t,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Vector4 as iy}from"three";var or=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof iy?new Array(e).fill(t):new Array(e).fill(new iy(0))}};var os=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(os||{}),ct=function(){let r=new Q(`vec3 random3(vec3 c) {
381
381
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
382
382
  vec3 r;
383
383
  r.z = fract(512.0*j);
@@ -1083,7 +1083,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1083
1083
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1084
1084
 
1085
1085
  return normal;
1086
- }`)}}();import{Vector2 as ys,Vector3 as Sr,Vector4 as ml}from"three";function mt(n,r){return r.color(n)}function sy(n,r){switch(n.type){case"fresnel":return pP(n,r);case"gradient":return fP(n);case"depth":return mP(n);case"normal":return hP(n);case"noise":return yP(n,r);case"rainbow":return gP(n);case"toon":return xP(n,r);case"outline":return vP(n,r);case"transmission":return bP(n,r);case"color":return uP(n,r)}}function dP(n){return{type:n.type}}function wr(n){let{alpha:r,mode:e}=n;return{...dP(n),alpha:r,mode:e}}function uP(n,r){return{...wr(n),color:mt(n.color,r)}}function pP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...wr(n),color:mt(s,r),bias:e,scale:t,intensity:o,factor:i}}function fP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...wr(n),gradientType:r,smooth:e,colors:t.map(c=>new ml(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new ys(...s),morph:new ys(...l),angle:i}}function mP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...wr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Sr(...s),direction:l?new Sr(...l):new Sr(1,0,0),colors:c.map(d=>d!==void 0?new ml(d[0],d[1],d[2],d[3]):new ml(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function hP(n){let{cnormal:r}=n;return{...wr(n),cnormal:new Sr(r[0],r[1],r[2])}}function yP(n,r){return{...wr(n),scale:n.scale,move:n.move,fA:new ys(...n.fA),fB:new ys(...n.fB),size:new Sr(...n.size),distortion:new ys(...n.distortion),colorA:mt(n.colorA,r),colorB:mt(n.colorB,r),colorC:mt(n.colorC,r),colorD:mt(n.colorD,r),noiseType:n.noiseType}}function gP(n){return{...wr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Sr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Sr(...n.offset)}}function xP(n,r){return{...wr(n),positioning:n.positioning,colors:n.colors.map(e=>new ml(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Sr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:mt(n.shadowColor,r),offset:new Sr(...n.offset)}}function vP(n,r){return{...wr(n),outlineColor:mt(n.outlineColor,r),contourColor:mt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Sr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function bP(n,r){return{...wr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var uo=class extends $e{};import{Vector4 as _P}from"three";import{VideoTexture as SP,Texture as wP}from"three";var hl=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 Id=class extends hl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Ad;function ay(n){return typeof n=="string"?n:(Ad||(Ad=new Id),Ad.load(n))}var yl=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")}},gl=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 ni=class extends yl{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 s of i){let l=this[s];l&&(l.image=this.img,l.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(s=>{o.onloadend=l=>{i=l.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=ay(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new SP(this.img,void 0,e,e):o=new wP(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 Ft=class extends ni{};var po=class extends Ne{};var Cd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Nd={depth:["colors"]};function TP(n,r,e){let t=Cd[n.type],o=Nd[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Ed(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 s=i.image,l=r.image(s),c=t;c.image instanceof Ft||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof Ft||c.image.deref(),c.image=l}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",l=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(l.repeat=i.repeat),"offset"in i&&(l.offset=i.offset),l.updateMatrix()}return o}function ly(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Md(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof po))switch(o=o||TP(e,i,s),l.constructor){case Te:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case jt:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Je:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case it:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Tt:{Ed(s,r,e);break}case or:{l.value=s.map(c=>new _P(...c));break}default:{l.value=s;break}}}return o}var Ld=class extends le{constructor(e,t,o){super("v3");this.nodeType="Matcap";this.texture=e,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(Ld.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.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)}},gs=Ld;gs.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1086
+ }`)}}();import{Vector2 as ys,Vector3 as Sr,Vector4 as ml}from"three";function mt(n,r){return r.color(n)}function sy(n,r){switch(n.type){case"fresnel":return fP(n,r);case"gradient":return mP(n);case"depth":return hP(n);case"normal":return yP(n);case"noise":return gP(n,r);case"rainbow":return xP(n);case"toon":return vP(n,r);case"outline":return bP(n,r);case"transmission":return SP(n,r);case"color":return pP(n,r)}}function uP(n){return{type:n.type}}function wr(n){let{alpha:r,mode:e}=n;return{...uP(n),alpha:r,mode:e}}function pP(n,r){return{...wr(n),color:mt(n.color,r)}}function fP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...wr(n),color:mt(s,r),bias:e,scale:t,intensity:o,factor:i}}function mP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...wr(n),gradientType:r,smooth:e,colors:t.map(c=>new ml(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new ys(...s),morph:new ys(...l),angle:i}}function hP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...wr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Sr(...s),direction:l?new Sr(...l):new Sr(1,0,0),colors:c.map(d=>d!==void 0?new ml(d[0],d[1],d[2],d[3]):new ml(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function yP(n){let{cnormal:r}=n;return{...wr(n),cnormal:new Sr(r[0],r[1],r[2])}}function gP(n,r){return{...wr(n),scale:n.scale,move:n.move,fA:new ys(...n.fA),fB:new ys(...n.fB),size:new Sr(...n.size),distortion:new ys(...n.distortion),colorA:mt(n.colorA,r),colorB:mt(n.colorB,r),colorC:mt(n.colorC,r),colorD:mt(n.colorD,r),noiseType:n.noiseType}}function xP(n){return{...wr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Sr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Sr(...n.offset)}}function vP(n,r){return{...wr(n),positioning:n.positioning,colors:n.colors.map(e=>new ml(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Sr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:mt(n.shadowColor,r),offset:new Sr(...n.offset)}}function bP(n,r){return{...wr(n),outlineColor:mt(n.outlineColor,r),contourColor:mt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Sr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function SP(n,r){return{...wr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var uo=class extends $e{};import{Vector4 as TP}from"three";import{VideoTexture as wP,Texture as _P}from"three";var hl=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 Id=class extends hl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Ad;function ay(n){return typeof n=="string"?n:(Ad||(Ad=new Id),Ad.load(n))}var yl=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")}},gl=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 ni=class extends yl{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 s of i){let l=this[s];l&&(l.image=this.img,l.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(s=>{o.onloadend=l=>{i=l.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=ay(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new wP(this.img,void 0,e,e):o=new _P(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 Ft=class extends ni{};var po=class extends Ne{};var Cd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Nd={depth:["colors"]};function PP(n,r,e){let t=Cd[n.type],o=Nd[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Ed(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 s=i.image,l=r.image(s),c=t;c.image instanceof Ft||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof Ft||c.image.deref(),c.image=l}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",l=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(l.repeat=i.repeat),"offset"in i&&(l.offset=i.offset),l.updateMatrix()}return o}function ly(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Md(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof po))switch(o=o||PP(e,i,s),l.constructor){case Te:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case jt:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Je:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case it:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Tt:{Ed(s,r,e);break}case or:{l.value=s.map(c=>new TP(...c));break}default:{l.value=s;break}}}return o}var Ld=class extends le{constructor(e,t,o){super("v3");this.nodeType="Matcap";this.texture=e,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(Ld.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.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)}},gs=Ld;gs.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1087
1087
  vec3 viewDir = normalize( vViewPosition );
1088
1088
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
1089
1089
  vec3 y = cross( viewDir, x );
@@ -1095,7 +1095,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1095
1095
 
1096
1096
  return matcapColor.rgb;
1097
1097
  }
1098
- `)}}();var Lo=class extends po{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as PP}from"three";var xl=class extends po{constructor(e){super("v3");this.image=e;this._value=new PP}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 Bd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=u,this.offset=a,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(Bd.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.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)}},xs=Bd;xs.Nodes=function(){let e=new Q(`float rand(float n) {
1098
+ `)}}();var Lo=class extends po{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as OP}from"three";var xl=class extends po{constructor(e){super("v3");this.image=e;this._value=new OP}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 Bd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=u,this.offset=a,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(Bd.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.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)}},xs=Bd;xs.Nodes=function(){let e=new Q(`float rand(float n) {
1099
1099
  return fract(sin(n) * 43758.5453123);
1100
1100
  }`),t=new Q(`float hash1(float p) {
1101
1101
  p = fract(p * 0.011);
@@ -1331,8 +1331,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1331
1331
 
1332
1332
  return color.xyz;
1333
1333
 
1334
- }`,[ct.simplex,e,o,s])}}();import{Matrix3 as OP}from"three";function cy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var vl=class extends ri{constructor(e,t){super(new OP);this.repeat=e;this.offset=t;cy(this.value,e,t)}updateMatrix(){cy(this.value,this.repeat,this.offset)}};var Tr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Md(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Pr.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),s=new Lo(i,t.texture.wrapping),l=new xl(i),c=new vl(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),a=new xe(t.projection??0),d=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new Je(t.size?new Bo(t.size[0],t.size[1]):new Bo(100,100)),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new fs(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new ke(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Lo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new xe(t.mode??0),u=new gs(s,l,c),a=new _e(u.calpha,"f");return new ke(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new it(new _r(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new xe(t.noiseType??0),a=new us(l,c,i,s,u);return new vs(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return CP(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?(t.scene?.markNeedsUpdateRendererDirty(),!0):ly(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Ed(o.props,t.shared,this):!0;return!1}dispose(){if(AP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Ft||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ke=class extends Tr{constructor(e,t,o,i,s,l,c){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c}},vs=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Pr=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Mo,u={};else if(o.category==="lambert"){s=new es;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new rs;let a=new J(o.shininess??30),d=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new ts;let a=new J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new fl;let a=new J(o.shininess??30),d=new Te(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Pr(e,t,o,s,u)}get category(){return this.node.category}};function AP(n){let r=n instanceof Tr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function IP(n,r,e,t){switch(n.type){case"color":{let o=new Te(t.color??5855577),i=new J(t.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(t.mode??0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new xe(t.mode??0),d=new is(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new ke(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new it(t.wavelengths??new _r(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new it(t.offset??new _r(0,0,0)),a=new J(t.alpha??1),d=new ss(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new ke(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=st.transmissionSize,c=st.transmissionRenderTarget,u=st.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new Je(d/a,1):new Je(1,a/d),f=new J(t.alpha??1),m=new ls(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new or(t.colors.length,t.colors):(i=new or(10,new ii(0,0,0,1)),i.value[1]=new ii(1,1,1,1));let s;t.steps?s=new rr(t.steps.length,t.steps):(s=new rr(10,1),s.value[0]=0);let l=new it(t.source??new _r(0,0,0)),c=new co(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new jt(t.shadowColor),p=new it(t.offset??new _r(0,0,0)),f=new J(t.alpha??1),m=new xs(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Te(t.outlineColor??16777215),i=new Te(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new it(t.contourDirection??new _r(0,1,0)),f=new co(t.positionalLines??!1),m=new co(t.compensation??!0),h=st.normalRenderTarget,y=st.normalRenderTargetDepth,g=st.pixelRatioNode,v=st.resolution,w=new J(t.alpha??1),S=new as(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,w),b=new _e(S.calpha,"f"),T=new xe(t.mode??0);return new ke(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,alpha:w,mode:T},S,T,b)}case"depth":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new it(t.origin??new _r),d=new it(t.direction??new _r),p;t.colors?p=new or(t.colors.length,t.colors):(p=new or(2,new ii(0,0,0,1)),p.value[1]=new ii(1,1,1,1));let f;t.steps?f=new rr(t.steps.length,t.steps):(f=new rr(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new xe(t.mode??0),y=new cs(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new it(t.size??new _r(100,100,100)),s=new J(t.move??1),l=new Je(t.fA??new Bo(1.7,9.2)),c=new Je(t.fB??new Bo(8.3,2.8)),u=new Je(t.distortion??new Bo(1,1)),a=new jt(t.colorA),d=new jt(t.colorB),p=new jt(t.colorC),f=new jt(t.colorD),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new ns(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new ke(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new it(t.cnormal??new _r(1,1,1)),i=new J(t.alpha??1),s=new xe(t.mode??0),l=new hs(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ke(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s;t.colors?s=new or(t.colors.length,t.colors):(s=new or(10,new ii(0,0,0,1)),s.value[1]=new ii(1,1,1,1));let l;t.steps?l=new rr(t.steps.length,t.steps):(l=new rr(10,1),l.value[0]=0);let c=new Je(t.offset??new Bo(0,0)),u=new Je(t.morph??new Bo(0,0)),a=new J(t.angle??0),d=new J(t.alpha??1),p=new xe(t.mode??0),f=new ps(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Te(1,0,0,1),i=new J(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function CP(n,r,e,t){let o=sy(e,t);return IP(e,n,r,o)}function Md(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function dy(n,r){let e=0;for(let t of n.layers)if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}return e<1}var At=class extends NP{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Dd=class extends At{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}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()}},si=class extends At{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];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 s=this.flavors[i];return s===void 0&&(s=new Dd(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??St.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Tr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=dy(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof Pr),this.lightLayer===void 0&&(this.lightLayer=new Pr(0,"",{...pt.defaultData("light","phong"),visible:!1},new Mo,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(this.data=t,this.transparent=dy(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=Tr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),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 l=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=Tr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}blendColors(){let e=this.layers.findIndex(o=>o instanceof ke),t=this.layers.findIndex(o=>o instanceof Pr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof ke&&(o=new ds(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Pr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ke&&(e=new ds(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 vs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Pt(t,e[o].position,Pt.ADD),t=new Pt(t,new J(.5).setReadonly(!0),Pt.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,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}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=(Cd[t.type]??[]).map(l=>t[l]),i=(Nd[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}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 pl;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ke){let t=e.params.texture;if(t instanceof Lo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(At.prototype,{properties:{get:function(){return this.fragment.properties}}});var Do=class extends si{};var my=Ls(uy());var py=new Map;function fy(n){if(typeof n=="string")return n;let r=py.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},py.set(n,r)),r.url}var Go=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:fy(r),format:"wav"},this.sound=new my.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 EP,Vector2 as Ro,Path as hy,Shape as MP,ShapeUtils as LP,Color as BP}from"three";var Sl=class{constructor(){this.type="ShapePath";this.color=new BP;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new hy,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,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),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,v){let w=h.x,S=y.x,b=g.x,T=v.x,_=h.y,x=y.y,C=g.y,P=v.y,I=(T-b)*(_-C)-(P-C)*(w-b),A=(S-w)*(_-C)-(x-_)*(w-b),O=(P-C)*(S-w)-(T-b)*(x-_),V=I/O,z=A/O;if(O===0&&I!==0||V<=0||V>=1||z<0||z>1)return null;if(I===0&&O===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(w+t.t*(S-w)).toPrecision(10),K=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:K,t:t.t}}return null}else{for(let K=0;K<2;K++)if(i(K===0?g:v,h,y),t.loc===e.ORIGIN){let q=K===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(w+V*(S-w)).toPrecision(10),te=+(_+V*(x-_)).toPrecision(10);return{x:$,y:te,t:V}}}function i(h,y,g){let v=g.x-y.x,w=g.y-y.y,S=h.x-y.x,b=h.y-y.y,T=v*b-S*w;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(v*S<0||w*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(S*S+b*b)){t.loc=e.BEYOND;return}let _;v!==0?_=S/v:_=b/w,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let w=1;w<h.length;w++){let S=h[w-1],b=h[w];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],C=o(S,b,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new Ro(C.x,C.y)))}}return v}function l(h,y,g){let v=new Ro;y.getCenter(v);let w=[];return g.forEach(S=>{S.boundingBox.containsPoint(v)&&s(h,S.points).forEach(T=>{w.push({identifier:S.identifier,isCW:S.isCW,point:T})})}),w.sort((S,b)=>S.point.x-b.point.x),w}function c(h,y,g,v,w){(w==null||w==="")&&(w="nonzero");let S=new Ro;h.boundingBox.getCenter(S);let b=[new Ro(g,S.y),new Ro(v,S.y)],T=l(b,h.boundingBox,y);T.sort((A,O)=>A.point.x-O.point.x);let _=[],x=[];T.forEach(A=>{A.identifier===h.identifier?_.push(A):x.push(A)});let C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;if(P.push(h.identifier),w==="evenodd"){let A=P.length%2===0,O=P[P.length-2];return{identifier:h.identifier,isHole:A,for:O}}else if(w==="nonzero"){let A=!0,O=null,V=null;for(let z=0;z<P.length;z++){let $=P[z];y[$]&&(A?(V=y[$].isCW,A=!1,O=$):V!==y[$].isCW&&(V=y[$].isCW,A=!0))}return{identifier:h.identifier,isHole:A,for:O}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,w=-999999999,S=999999999;for(let b=0;b<y.length;b++){let T=y[b];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<S&&(S=T.x)}d<=w&&(d=w+1),a>=S&&(a=S-1),y.length&&p.push({curves:h.curves,points:y,isCW:LP.isClockWise(y),identifier:u++,boundingBox:new EP(new Ro(S,v),new Ro(w,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new MP;g.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let S=p[w.identifier],b=new hy;b.curves=S.curves,g.holes.push(b)}}),m.push(g)}}),m}};var gy,Gd=new Promise(n=>{gy=n}),yy=!1;async function xy(){if(yy)return;let n=await import("./opentype.js");gy(n),yy=!0}var bs=class{async load(r,e,t=()=>{}){let{load:o}=await Gd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Gd;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function DP(n){return await(await fetch(n)).arrayBuffer()}var GP=new bs;async function Rd(n){let r,e,t=!1;if(n.url?(r=await DP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await GP.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as RP,LineCurve as VP,QuadraticBezierCurve as jP}from"three";function FP(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var wl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Rd(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=Rd(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,s=[],l=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let a=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[l];if(FP(a,p)||c)s.push({char:d,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:d,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
1334
+ }`,[ct.simplex,e,o,s])}}();import{Matrix3 as AP}from"three";function cy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var vl=class extends ri{constructor(e,t){super(new AP);this.repeat=e;this.offset=t;cy(this.value,e,t)}updateMatrix(){cy(this.value,this.repeat,this.offset)}};var Tr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Md(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Pr.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),s=new Lo(i,t.texture.wrapping),l=new xl(i),c=new vl(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),a=new xe(t.projection??0),d=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new Je(t.size?new Bo(t.size[0],t.size[1]):new Bo(100,100)),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new fs(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new ke(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Lo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new xe(t.mode??0),u=new gs(s,l,c),a=new _e(u.calpha,"f");return new ke(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new it(new _r(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new xe(t.noiseType??0),a=new us(l,c,i,s,u);return new vs(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return NP(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?(t.scene?.markNeedsUpdateRendererDirty(),!0):ly(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Ed(o.props,t.shared,this):!0;return!1}dispose(){if(IP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Ft||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ke=class extends Tr{constructor(e,t,o,i,s,l,c){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c}},vs=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Pr=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Mo,u={};else if(o.category==="lambert"){s=new es;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new rs;let a=new J(o.shininess??30),d=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new ts;let a=new J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new fl;let a=new J(o.shininess??30),d=new Te(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Pr(e,t,o,s,u)}get category(){return this.node.category}};function IP(n){let r=n instanceof Tr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function CP(n,r,e,t){switch(n.type){case"color":{let o=new Te(t.color??5855577),i=new J(t.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(t.mode??0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new xe(t.mode??0),d=new is(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new ke(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new it(t.wavelengths??new _r(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new it(t.offset??new _r(0,0,0)),a=new J(t.alpha??1),d=new ss(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new ke(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=st.transmissionSize,c=st.transmissionRenderTarget,u=st.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new Je(d/a,1):new Je(1,a/d),f=new J(t.alpha??1),m=new ls(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new or(t.colors.length,t.colors):(i=new or(10,new ii(0,0,0,1)),i.value[1]=new ii(1,1,1,1));let s;t.steps?s=new rr(t.steps.length,t.steps):(s=new rr(10,1),s.value[0]=0);let l=new it(t.source??new _r(0,0,0)),c=new co(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new jt(t.shadowColor),p=new it(t.offset??new _r(0,0,0)),f=new J(t.alpha??1),m=new xs(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Te(t.outlineColor??16777215),i=new Te(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new it(t.contourDirection??new _r(0,1,0)),f=new co(t.positionalLines??!1),m=new co(t.compensation??!0),h=st.normalRenderTarget,y=st.normalRenderTargetDepth,g=st.pixelRatioNode,v=st.resolution,w=new J(t.alpha??1),S=new as(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,w),b=new _e(S.calpha,"f"),T=new xe(t.mode??0);return new ke(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,alpha:w,mode:T},S,T,b)}case"depth":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new it(t.origin??new _r),d=new it(t.direction??new _r),p;t.colors?p=new or(t.colors.length,t.colors):(p=new or(2,new ii(0,0,0,1)),p.value[1]=new ii(1,1,1,1));let f;t.steps?f=new rr(t.steps.length,t.steps):(f=new rr(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new xe(t.mode??0),y=new cs(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new it(t.size??new _r(100,100,100)),s=new J(t.move??1),l=new Je(t.fA??new Bo(1.7,9.2)),c=new Je(t.fB??new Bo(8.3,2.8)),u=new Je(t.distortion??new Bo(1,1)),a=new jt(t.colorA),d=new jt(t.colorB),p=new jt(t.colorC),f=new jt(t.colorD),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new ns(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new ke(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new it(t.cnormal??new _r(1,1,1)),i=new J(t.alpha??1),s=new xe(t.mode??0),l=new hs(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ke(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s;t.colors?s=new or(t.colors.length,t.colors):(s=new or(10,new ii(0,0,0,1)),s.value[1]=new ii(1,1,1,1));let l;t.steps?l=new rr(t.steps.length,t.steps):(l=new rr(10,1),l.value[0]=0);let c=new Je(t.offset??new Bo(0,0)),u=new Je(t.morph??new Bo(0,0)),a=new J(t.angle??0),d=new J(t.alpha??1),p=new xe(t.mode??0),f=new ps(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Te(1,0,0,1),i=new J(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function NP(n,r,e,t){let o=sy(e,t);return CP(e,n,r,o)}function Md(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function dy(n,r){let e=0;for(let t of n.layers)if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}return e<1}var At=class extends EP{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Dd=class extends At{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}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()}},si=class extends At{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];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 s=this.flavors[i];return s===void 0&&(s=new Dd(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??St.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Tr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=dy(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof Pr),this.lightLayer===void 0&&(this.lightLayer=new Pr(0,"",{...pt.defaultData("light","phong"),visible:!1},new Mo,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(this.data=t,this.transparent=dy(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=Tr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),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 l=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=Tr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}blendColors(){let e=this.layers.findIndex(o=>o instanceof ke),t=this.layers.findIndex(o=>o instanceof Pr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof ke&&(o=new ds(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Pr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ke&&(e=new ds(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 vs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Pt(t,e[o].position,Pt.ADD),t=new Pt(t,new J(.5).setReadonly(!0),Pt.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,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}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=(Cd[t.type]??[]).map(l=>t[l]),i=(Nd[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}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 pl;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ke){let t=e.params.texture;if(t instanceof Lo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(At.prototype,{properties:{get:function(){return this.fragment.properties}}});var Do=class extends si{};var my=Ls(uy());var py=new Map;function fy(n){if(typeof n=="string")return n;let r=py.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},py.set(n,r)),r.url}var Go=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:fy(r),format:"wav"},this.sound=new my.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 MP,Vector2 as Ro,Path as hy,Shape as LP,ShapeUtils as BP,Color as DP}from"three";var Sl=class{constructor(){this.type="ShapePath";this.color=new DP;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new hy,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,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),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,v){let w=h.x,S=y.x,b=g.x,T=v.x,_=h.y,x=y.y,C=g.y,P=v.y,I=(T-b)*(_-C)-(P-C)*(w-b),A=(S-w)*(_-C)-(x-_)*(w-b),O=(P-C)*(S-w)-(T-b)*(x-_),V=I/O,z=A/O;if(O===0&&I!==0||V<=0||V>=1||z<0||z>1)return null;if(I===0&&O===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(w+t.t*(S-w)).toPrecision(10),K=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:K,t:t.t}}return null}else{for(let K=0;K<2;K++)if(i(K===0?g:v,h,y),t.loc===e.ORIGIN){let q=K===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(w+V*(S-w)).toPrecision(10),te=+(_+V*(x-_)).toPrecision(10);return{x:$,y:te,t:V}}}function i(h,y,g){let v=g.x-y.x,w=g.y-y.y,S=h.x-y.x,b=h.y-y.y,T=v*b-S*w;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(v*S<0||w*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(S*S+b*b)){t.loc=e.BEYOND;return}let _;v!==0?_=S/v:_=b/w,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let w=1;w<h.length;w++){let S=h[w-1],b=h[w];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],C=o(S,b,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new Ro(C.x,C.y)))}}return v}function l(h,y,g){let v=new Ro;y.getCenter(v);let w=[];return g.forEach(S=>{S.boundingBox.containsPoint(v)&&s(h,S.points).forEach(T=>{w.push({identifier:S.identifier,isCW:S.isCW,point:T})})}),w.sort((S,b)=>S.point.x-b.point.x),w}function c(h,y,g,v,w){(w==null||w==="")&&(w="nonzero");let S=new Ro;h.boundingBox.getCenter(S);let b=[new Ro(g,S.y),new Ro(v,S.y)],T=l(b,h.boundingBox,y);T.sort((A,O)=>A.point.x-O.point.x);let _=[],x=[];T.forEach(A=>{A.identifier===h.identifier?_.push(A):x.push(A)});let C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;if(P.push(h.identifier),w==="evenodd"){let A=P.length%2===0,O=P[P.length-2];return{identifier:h.identifier,isHole:A,for:O}}else if(w==="nonzero"){let A=!0,O=null,V=null;for(let z=0;z<P.length;z++){let $=P[z];y[$]&&(A?(V=y[$].isCW,A=!1,O=$):V!==y[$].isCW&&(V=y[$].isCW,A=!0))}return{identifier:h.identifier,isHole:A,for:O}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,w=-999999999,S=999999999;for(let b=0;b<y.length;b++){let T=y[b];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<S&&(S=T.x)}d<=w&&(d=w+1),a>=S&&(a=S-1),y.length&&p.push({curves:h.curves,points:y,isCW:BP.isClockWise(y),identifier:u++,boundingBox:new MP(new Ro(S,v),new Ro(w,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new LP;g.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let S=p[w.identifier],b=new hy;b.curves=S.curves,g.holes.push(b)}}),m.push(g)}}),m}};var gy,Gd=new Promise(n=>{gy=n}),yy=!1;async function xy(){if(yy)return;let n=await import("./opentype.js");gy(n),yy=!0}var bs=class{async load(r,e,t=()=>{}){let{load:o}=await Gd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Gd;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function GP(n){return await(await fetch(n)).arrayBuffer()}var RP=new bs;async function Rd(n){let r,e,t=!1;if(n.url?(r=await GP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await RP.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as VP,LineCurve as jP,QuadraticBezierCurve as FP}from"three";function zP(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var wl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Rd(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=Rd(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,s=[],l=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let a=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[l];if(zP(a,p)||c)s.push({char:d,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:d,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
1335
1335
  `,e),u=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(v=>[]),h=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let w=r[v],S={features:{liga:!0}},b=[];try{b=t.stringToGlyphs(w,S)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,w,c);let T=[];try{T=this.reverseLigaturesTable(t,w,b)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<b.length;_++){let x=b[_],C=x.index===0?`
1336
1336
  `:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],I=0,A=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(A=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),d+=A+I;let O=0;if(C===`
1337
1337
  `)O=u;else if(C===" ")O=a;else{let V=this.createPath(x,o,d,p,e);V&&(O=V.offsetX-(I+A),f.push(V.path))}if(P.replacements.length===1)h[v].push([d,p]),m[v].push(O);else{let V=P.replacements.map(K=>(t.glyphs.get(K).advanceWidth??0)*o),z=V.reduce((K,q)=>K+=q,0),$=V.map(K=>K/z),te=d;for(let K=0;K<$.length;K++){let q=O*$[K];h[v].push([te,p]),m[v].push(q),te+=q}}d+=O,y=x}p-=i}let g=[];for(let v=0,w=f.length;v<w;v++)g.push(...f[v].toShapes());return{shapes:g,charWidths:m,lineWidths:s,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(`
1338
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new Sl,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&u.type!=="Z"&&a.x===u.x&&-a.y===u.y))switch(u.type){case"M":l.moveTo(u.x,-u.y);break;case"L":l.lineTo(u.x,-u.y);break;case"Q":l.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":l.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return l.subPaths.forEach(u=>{let a=zP(u.curves);a!==void 0&&u.currentPoint.distanceTo(a)>0&&u.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}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 s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function zP(n){if(n.length){let r=n[0];if(r instanceof VP)return r.v1;if(r instanceof RP||r instanceof jP)return r.v0}}var Vd=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){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}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 Vd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Co(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var vy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var jd=class extends gl{constructor(e){super();this.shared=e}create(e){return new ni(e,this.shared)}},Vo=class{constructor(r,e={}){this.geometryCache=new Ss(!0);this.geometryCache2=new Ss(!1);this.imageHolderCache=new jd(this);this.thisContext={scene:vy,shared:this};this.deletedMaterial=new Do(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Ft(ln.emptyImage,this);this.deletedVideo=new Ft(en.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];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.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Do(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]=e}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):new si(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 Ft(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 Ft(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 uo(e.r,e.g,e.b,e.a):this.colors[r]=new uo(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 $e(0,0,0,0))}else return"a"in r?new $e(r.r,r.g,r.b,r.a):new $e(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 Go)return e;{let t=new Go({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Go&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new wl(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 Go&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},by=new Vo(la.emptyData());var nr=class extends nt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),cu(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(Wt(e.path,["material"])&&this.material instanceof At)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(tt.drop(e,1),t.material,o);else if(Wt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(tt.drop(e,2),s,o)}}}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&&aa(this.material).forEach(e=>{e instanceof At&&(e instanceof Do||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as UP}from"three";var at=class extends nr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof UP&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Vo){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Oi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Oi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Wt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(tt.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 a={...this.data.geometry,...i};this.localGeometry=Co(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Yi(this.localGeometry.attributes,s/u.sxPrev,l/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=l,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Co(i,t,this.data.flatShading)}}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&&Ei(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Fe&&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)}};function HP(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 s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new zd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new zd})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new Sy(i,3))}function WP(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 zd;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 Sy(t,3))}function ai(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof At)||n.material.getLayersOfType("outline").length===0)return;n instanceof at&&n.is2DAndNoDepth?WP(n):HP(n)}function li(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=[Fd.seededRandom(o),Fd.seededRandom(o+1e4),Fd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new kP(t,3))}var XP;Yn.then(n=>{XP=n});var Or=new qP,ws=new YP;function _y(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var jo=class extends at{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new $P;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:s}=Fe.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,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,ai(this),li(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){Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Fe.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,nt.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 wy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(t),Or.getCenter(o),e.boundingSphere.radius=o.distanceTo(Or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(ws),this.hasNonUniformScale&&ws.divide(this.scale);let i={width:ws.x,height:ws.y,depth:ws.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new wy);let o=t.boundingSphere.center;Or.getCenter(o),t.boundingSphere.radius=o.distanceTo(Or.max)}freeSubdivPointer(){this.subdivPointer&&(Fe.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 KP,Vector3 as zo}from"three";var Ty=-1,ZP=1,Py={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Oy={polygon_center:0,edge:1,vertex:2},_s=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Ty)*(e-t)/(ZP-Ty)+t};function Ay(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var QP=new zo,_l=new zo,JP=new zo,eO=new zo;function ci(n,r){let e=JP.fromArray(n),t=eO.fromArray(r);_l.copy(t).sub(e);let o=_l.length();return _l.normalize().multiplyScalar(o*.5),QP.copy(e).add(_l).toArray()}var zt=new KP,Tl=new zo,Pl=new zo,Fo=new zo;function Iy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Tl.fromArray(n.index.array,e*3),zt.setFromAttributeAndIndices(n.attributes.position,Tl.x,Tl.y,Tl.z),zt.getNormal(Pl),zt.getMidpoint(Fo),!(isNaN(Fo.x)||isNaN(Fo.y)||isNaN(Fo.z))){let{a:t,b:o,c:i}=zt,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ci(s,l),f=ci(l,c),m=ci(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(S=>Math.round(S)===Math.round(y)).length>1,v=[],w=zt.getMidpoint(Fo).toArray();y===u&&!g&&(v=[f,m,m],w=p),y===a&&!g&&(v=[p,m,m],w=f),y===d&&!g&&(v=[p,f,f],w=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:w,norm:zt.getNormal(Pl).toArray()})}return r}function Cy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){zt.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),zt.getNormal(Pl),zt.getMidpoint(Fo);let o=zt.a.toArray(),i=zt.b.toArray(),s=zt.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ci(o,i),ci(i,s),ci(s,o)],midpoint:Fo.toArray(),norm:Pl.toArray()})}return r}var tO=4,rO=.5,Ud=n=>.5*(1-Math.cos(n*Math.PI)),kd=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),s=Math.floor(t),l=r-o,c=e-i,u=t-s,a,d,p=0,f=.5,m,h,y;for(let g=0;g<tO;g++){let v=o+(i<<4)+(s<<8);a=Ud(l),d=Ud(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=d*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=d*(y-h),m+=Ud(u)*(h-m),p+=m*f,f*=rO,o<<=1,l*=2,i<<=1,c*=2,s<<=1,u*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,l;return{setSeed(c){l=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return l=(1664525*l+1013904223)%4294967296,l/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Ny=kd;import{Vector3 as oO,Matrix4 as nO,Ray as iO}from"three";var Ey=new oO,My=new nO,Ly=new iO;function By(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var di=class extends at{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)&&(My.copy(o).invert(),Ly.copy(e.ray).applyMatrix4(My),Ly.intersectBox(this.singleBBox,Ey))){let i=Ey.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var ht=1e-4,Ar,Vy,jy,Fy,Gy=new Bt,Ry=new Bt;Yn.then(n=>{Ar=n,Vy=[Ar.get_face_center,Ar.get_edge_midpoint,Ar.get_vertex_position],jy=[Ar.get_face_normal,Ar.get_edge_normal,Ar.get_vertex_normal],Fy=[Ar.face_count,Ar.edge_count,Ar.vertex_count]});var aO=new ko,lO=new ko,fo=new Bt,Uo=new Bt,Ts=new Bt,Wd=new Bt,cO=new Bt,dO=new Bt;var kr=new Ny,pi=class extends Mn(sO){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 Fr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Fr&&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"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*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,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new Fr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++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 s=new Fr(this.object);s.expand(),this.add(s)}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*Dy.DEG2RAD,i=t.end*Dy.DEG2RAD,s=o-i,l=new Hd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Bt(0,0,1);break;case"y":c=new Bt(0,1,0);break;default:case"x":c=new Bt(1,0,0);break}let u=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";kr.noiseSeed(u.seed);let d=Ga((0,ui.default)(u.seed)),p=_s(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?kr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||ht,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||ht,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||ht,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,u.position[0])),m.position.y+=t.position[1]+p(f,me(y,u.position[1])),m.position.z+=t.position[2]+p(f,me(y,u.position[2]));let v=p(f,me(y,u.rotation[0])),w=p(f,me(y,u.rotation[1])),S=p(f,me(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+w,m.rotation.z+=l.z+S):m.rotation.set(l.x+v,l.y+w,l.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Hd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";kr.noiseSeed(i.seed);let l=Ga((0,ui.default)(i.seed)),c=_s(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?kr.noise(d):l(d,d),f=c(u,me(p,i.rotation[0])),m=c(u,me(p,i.rotation[1])),h=c(u,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,me(p,i.scale[0]))||ht,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||ht,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||ht,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,me(p,i.position[0])),a.position.y=t.position[1]*u+c(u,me(p,i.position[1])),a.position.z=t.position[2]*u+c(u,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,s=_s(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";kr.noiseSeed(i.seed);let c=Tm((0,ui.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},a=new Bt(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=l?kr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||ht,y.scale.y=1+s(t,me(h,i.scale[1]))||ht,y.scale.z=1+s(t,me(h,i.scale[2]))||ht;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),w=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,w),y.position.x=o.size[0]*d-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,me(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?kr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||ht,m.scale.y=1+s(t,me(f,i.scale[1]))||ht,m.scale.z=1+s(t,me(f,i.scale[2]))||ht;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Hd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";kr.noiseSeed(i.seed);let l=Ga((0,ui.default)(i.seed)),c=_s(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 di)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.object.parent===this.objectForSample){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,w=g.map(T=>T[0]).reduce((T,_)=>T+_,0),S=g.map(T=>T[1]).reduce((T,_)=>T+_,0),b=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[w/v,S/v,b/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(w=>p(g.pos[0])===p(w.pos[0])&&p(g.pos[1])===p(w.pos[1])&&p(g.pos[2])===p(w.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(w=>w.norm))}):a.push(g)});let f=Ay(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Ra(this.objectForSample).build(),h=Py[t.axis],y=this.children;m.setRandomGenerator((0,ui.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let w=g*(i.freqScale/10)+i.movement,S=s?kr.noise(w):l(w,w),b=c(g,me(S,i.rotation[0])),T=c(g,me(S,i.rotation[1])),_=c(g,me(S,i.rotation[2]));t.spreadType==="random"?m.sample(Ts,Wd):(f.length&&(Ts.fromArray(f[g].pos),Wd.fromArray(f[g].norm)),this.objectForSample instanceof jo&&Ts.applyMatrix4(aO.copy(this.objectForSample.matrixWorld).invert())),Ts.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Ts),fo.fromArray(h);let x=t.align==="normal"?Wd:this.object.getWorldDirection(dO),C=Uo.fromArray(t.position);Uo.x+=Uo.x+c(g,me(S,i.position[0])),Uo.y+=Uo.y+c(g,me(S,i.position[1])),Uo.z+=Uo.z+c(g,me(S,i.position[2]));let P=Math.acos(x.dot(fo)),I=cO.crossVectors(fo,x).normalize(),A=lO.makeRotationAxis(I,P),O=x.clone().cross(this.object.up).normalize(),V=O.clone().cross(x).normalize(),z=new ko().makeBasis(O,x,V),$=new Bt(fo.y,fo.z,fo.x).normalize(),te=$.clone().cross(fo).normalize(),K=new ko().makeBasis($,fo,te).invert(),q=new ko().multiplyMatrices(z,K);v.rotation.setFromRotationMatrix(q),C.applyMatrix4(A),v.position.add(C),v.rotation.x=v.rotation.x+o.x+b,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(S,i.scale[0]))||ht,v.scale.y=v.scale.y+t.scale[1]+c(g,me(S,i.scale[1]))||ht,v.scale.z=v.scale.z+t.scale[2]+c(g,me(S,i.scale[2]))||ht,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof jo){let t=this.objectForSample,o=Oy[e],i=Fy[o],s=Vy[o],l=jy[o],c=[],u=i(t.subdivPointerNew);for(let a=0;a<=u-1;a++){let d=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);Gy.fromArray(d).applyMatrix4(t.matrixWorld),Ry.fromArray(p),c.push({pos:Gy.toArray(),norm:Ry.toArray()})}return c}else return(this.objectForSample.geometry.index?Iy(this.objectForSample.geometry):Cy(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=Vr(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 nt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new ko,this.hiddenMatrix=new ko,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as QO,Scene as JO,Vector3 as eA,Fog as tA,Box3 as rA,MeshBasicMaterial as oA}from"three";import{Camera as wO,OrthographicCamera as Hy,PerspectiveCamera as _O,Vector3 as kt,Object3D as Wy,Quaternion as TO}from"three";import{Camera as yO,LineSegments as gO,BufferGeometry as xO,LineBasicMaterial as vO,Color as $d,Vector3 as bO,Float32BufferAttribute as Uy}from"three";import{BoxGeometry as uO}from"three";var Ir=n=>{var r;return r=class extends n{},r.geometryHelper=new uO(30,30,30),r};import{Ray as pO,Sphere as fO,Matrix4 as mO,Vector3 as Hr}from"three";var Ol=new pO,qd=new fO,zy=new mO,Cr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),qd.copy(i.boundingSphere),qd.applyMatrix4(s),e.ray.intersectsSphere(qd)===!1||(zy.copy(s).invert(),Ol.copy(e.ray).applyMatrix4(zy),i.boundingBox!==null&&Ol.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(d.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),a=d.getX(m+2),l=y(n,e,Ol,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,w=new Hr,S=new Hr,b=new Hr,T=new Hr,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),A=Math.min(v.count,f.start+f.count);for(let O=I,V=A-1;O<V;O+=_){if(w.fromBufferAttribute(v,O),S.fromBufferAttribute(v,O+1),Ol.distanceSqToSegment(w,S,T,b)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,w,S,b,T,_){let x=new Hr,C=new Hr,P=new Hr,I=new Hr,A=new Hr;if(x.fromBufferAttribute(S,b),C.fromBufferAttribute(S,T),P.fromBufferAttribute(S,_),w.intersectTriangle(x,C,P,!1,I)===null)return null;A.copy(I),A.applyMatrix4(g.matrixWorld);let V=v.ray.origin.distanceTo(A);return V<v.near||V>v.far?null:{faceIndex:1,distance:V,point:A.clone(),object:g}}};var Al=new bO,Ut=new yO,Yd=class extends gO{constructor(e){let t=new xO,o=new vO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new $d(15711266),u=new $d(15711266),a=new $d(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",a),d("u2","u3",a),d("u3","u1",a);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}t.setAttribute("position",new Uy(i,3)),t.setAttribute("color",new Uy(s,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=l,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;Ut.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;ir("n1",t,e,Ut,-i,-s,l),ir("n2",t,e,Ut,i,-s,l),ir("n3",t,e,Ut,-i,s,l),ir("n4",t,e,Ut,i,s,l);let c=l;ir("f1",t,e,Ut,-i,-s,c),ir("f2",t,e,Ut,i,-s,c),ir("f3",t,e,Ut,-i,s,c),ir("f4",t,e,Ut,i,s,c);let u=c,a=.5;ir("u1",t,e,Ut,i*.7*a,s*1.1,u),ir("u2",t,e,Ut,-i*.7*a,s*1.1,u),ir("u3",t,e,Ut,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ir(n,r,e,t,o,i,s){Al.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],Al.x,Al.y,Al.z)}}var Il=class extends Ir(Yd){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){Cr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as ky,BoxGeometry as SO}from"three";var Cl;(r=>r.is=e=>"objectHelper"in e)(Cl||(Cl={}));var mo=(n,r)=>class extends za(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 ky&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof SO?(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 ky&&(i.visible=!1)}}};var Xd=790,fi=new kt,Kd=new kt,Wr=class extends mo(wO,Il){constructor(e="",t={...nn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=bo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??Xd,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new Hy(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new Hy(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new _O(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 kt(e,t,o)),super.lookAt(e),this.getWorldPosition(fi),this.targetOffset=fi.distanceTo(e)}getTarget(e=new kt){return this.getWorldDirection(Kd),this.getWorldPosition(fi),Kd.multiplyScalar(this.targetOffset),e.copy(fi).add(Kd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(fi),fi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new TO),t=new kt(0,0,1).applyQuaternion(e),o=new kt().copy(Wy.DEFAULT_UP);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new kt().copy(Wy.DEFAULT_UP).projectOnPlane(t),s=new kt().crossVectors(i,o).dot(t)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new kt),i=e.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new kt),i=this.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??Xd,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;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,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,o,i,s,l)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}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.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,autoZoom:!0,autoZoomFrustumSize:Xd},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Nn(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{BufferGeometry as qy,Float16BufferAttribute as PO,Matrix4 as OO}from"three";var $y=new OO;var Ht=class extends nr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new qy;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 s=this.children[i];s instanceof Ht&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof nt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=er.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;er.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof Ht&&s.needsTransformForDownstream===!0?(er.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&($y.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),er.transformMeshSet(s.booleanMeshSetAddress,$y),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new PO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return er.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new qy,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=er.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,ai(this),li(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as AO}from"three";var Yy;(r=>{function n(e){return Ce.is(e)&&e instanceof AO}r.is=n})(Yy||(Yy={}));var mi=(n,r)=>class extends mo(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 Ps=n=>n instanceof nt,Os=n=>n!==null&&n instanceof Ht,Xy=n=>n instanceof Wr;var Ky=n=>Cl.is(n);import{Group as CO}from"three";import{AxesHelper as IO}from"three";var ho=class extends Ir(IO){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Cr(this.object,ho.geometryHelper,e,t)}update(){}};var As=class extends mo(CO,ho){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as BO,CameraHelper as Zy}from"three";import{DirectionalLightHelper as NO}from"three";var hi=class extends Ir(NO){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,hi.geometryHelper,e,t)}};import{PointLightHelper as EO}from"three";var yi=class extends Ir(EO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,yi.geometryHelper,e,t)}};import{SpotLightHelper as MO,Vector3 as LO}from"three";var Nl=class extends Ir(MO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,Nl.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Nl._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 s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Is=Nl;Is._vector=new LO;function DO(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 El=class extends mi(BO,hi){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 s=new Zy(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Zy&&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&&DO(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)),t&&this.update()}};import{PointLight as GO,Vector3 as Ml,Box3 as RO,Box3Helper as Qy,Color as VO}from"three";var Ll=class extends mi(GO,yi){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 s=new Ml(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Ml(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new RO(s,l),u=new Qy(c,new VO(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 Qy){let t=this.shadow.camera,o=new Ml(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Ml(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))}};import{SpotLight as jO,CameraHelper as Jy,MathUtils as FO,Vector3 as og,Quaternion as zO}from"three";var eg=new og,tg=new og,rg=new zO,Bl=class extends mi(jO,Is){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=FO.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new Jy(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Jy&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),tg.setFromMatrixPosition(this.matrixWorld),rg.setFromRotationMatrix(this.matrixWorld),eg.copy(this.up).applyQuaternion(rg).negate().multiplyScalar(this.distance),this.target.position.copy(tg).add(eg),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.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Dl=class extends at{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Zi(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var gi=class extends at{constructor(e,t,o){super(e,t,o);this._shapeId=null;this.snappedEntities=new Set;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape(),this.updateSnappedEntities(t)}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=nl;break;case"Ellipse":i=Un;break;case"Polygon":i=ol;break;case"Star":i=il;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()))}updateSnappedEntities(e){this.snappedEntities.forEach(t=>{t.updatePathSnapping(e.scene)})}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e),this.updateSnappedEntities(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Zi(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 UO}from"three";var qr=class extends mo(UO,ho){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=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of Jr.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of Jr.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Gl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&ig(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Gl(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)Ce.is(e)&&Gl(e)}}function ng(n,r,e,t){return n.component===r&&Ei(n.identity,t)?n.overrideData===e?2:1:0}function ig(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof qr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Ce.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=sn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ce.is(m)?m:null,p!==null){let h=ng(p,u,d,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=ng(p,u,d,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=d?Er.apply(u.data,d):u.data;$t.is(m.type)&&(m={...m,type:"Empty"}),p=Xt.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,ig(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Ce.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function kO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new di(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new jo(n,r,e):r.geometry.type==="PathGeometry"?t=new gi(n,r,e):r.geometry.type==="VectorGeometry"?t=new Dl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Ht(n,r,e):t=new at(n,r,e),t)}function Rl(n,r,e){return r.type==="Mesh"?kO(n,r,e):r.type==="Empty"?new As(n,r):r.type==="PointLight"?new Ll(n,r,e):r.type==="SpotLight"?new Bl(n,r,e):r.type==="DirectionalLight"?new El(n,r,e):r.type==="Component"||r.type==="Instance"?new qr(n,r,e):$t.is(r.type)?new Wr(n,r):(console.error(r),new As(n,r))}Xt.createEntity=Rl;function HO(n,r,e){let t=Rl(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=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=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Xt.changeEntityProptotype=HO;Xt.Cloner=pi;function sg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as qO,Ray as $O,Raycaster as YO}from"three";function ag(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,li(n),ai(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function lg(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");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),e}function cg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ag(e,e.material[t])&&(r=!0);else ag(e,e.material)&&(r=!0)}),r}function dg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)lg(e,e.material[t])&&(r=!0);else lg(e,e.material)&&(r=!0)}),r}var XO=new YO,KO=new qO,ZO=new $O;function ug(n,r,e){let t=n.cloner;if(t)for(let o of t.children){let i=KO.copy(o.matrixWorld).invert(),s=ZO.copy(r.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=XO;c.set(s.origin,s.direction),c.near=r.near,c.far=r.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var nA=new oA;nA.wireframe=!0;var pg=new eA,Zd=class extends JO{constructor(e,t){super();this.data=e;this.backupFog=new tA(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.bgColor=new $e(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.needsRecomputeInstances=!1;this.ambientLight=new QO(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=dg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=cg(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}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}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)=>Uu(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(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}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(),Ps(i)&&Os(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}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),o.parent.remove(o),Os(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ps(o)&&(o.freeBooleanPointer(),i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof gi&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o)}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 s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),Ps(o)&&(o.invalidateUpstreamBooleanData(),Os(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0&&(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props)){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}let s=this.find(e);if(s)try{sg(s,t,o,{scene:this,shared:i}),s instanceof at&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(mt(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Wr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Os(o)&&o.recomputeBoolean()}),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){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ce.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=Qo(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...aa(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;dt.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof qr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Qo(s.data,l=>{l.events.delete(i.id)}).data)}):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)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof qr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Gl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof qr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}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)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Wr(Zd.PERSONAL_CAMERA_ID,{...nn.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ps(s)||Ky(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ug(s,e,t)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ce.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ce.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Di.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ce.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=mt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=mt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=mt(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.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,s,l){let c={scene:this,shared:l},u=Rl(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,l)),u.updateState(t,c),u instanceof at&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u)),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],u=this.find(l),a=c?u.recursiveBBox:u.singleBBox;t.push(...a.vertices)}let o=new rA;return o.setFromPoints(t),o.getCenter(pg),pg}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 nt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof At&&e(t.material[o]);else t.material instanceof At&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ns=Zd;Ns.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as iA}from"three/examples/jsm/loaders/DRACOLoader.js";var yo;function sA(){return yo||(yo=new iA,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function aA(n){if(yo){let r={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await yo.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 fg(n,r){let[e,t]=Yl(Zs.deserialize(new Uint8Array(n)));bm(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await sA();for(let i of o){let s=await aA(Ye(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:u,itemSize:a})=>{l[c]={array:u,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as rX}from"three";import{mergeBufferGeometries as iX}from"three/examples/jsm/utils/BufferGeometryUtils.js";function mg(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 hg,ShaderLib as lA}from"three";function yg(n){let r=new Set;return n.traverse(e=>{if(e instanceof nr)if(Ve(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(cA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new hg,specularColor:new hg});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},lA.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else dA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function cA(n){return n.getLayersOfType("transmission").length>0}function dA(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function gg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function xg(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 s=t;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as uA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function vg(n){let r=[];return n.traverse(e=>{e instanceof pi&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&mg(c),c}),s=uA(e.parameters.hideBase?i:[t instanceof nt?t.geometry:[],...i]);t instanceof nt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:by})}),n}function bg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Sg(n){Object.values(n.shared.materials).forEach(r=>{Qd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Qd(e.material):"materials"in e&&e.materials.forEach(t=>{Qd(t)})})}function Qd(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 Pg=Ls(_g(),1),Tg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Jd=class extends fA{load(r,e,t,o=console.error){let i=new pA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Tg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Tg),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},t,o)}async parse(r){let e=await fg(r,Sg);e.version&&(0,Pg.default)(e.version,"0.9.253")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([_y(e)&&zh(),By(e)&&xy()].filter(Boolean));let t=new Vo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ns(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Xy(s)&&Object.assign(s,{makeDefault:!0})}return o=vg(o),o=yg(o),o=gg(o),o=xg(o),o=bg(o),o}};export{Jd as default};
1338
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new Sl,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&u.type!=="Z"&&a.x===u.x&&-a.y===u.y))switch(u.type){case"M":l.moveTo(u.x,-u.y);break;case"L":l.lineTo(u.x,-u.y);break;case"Q":l.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":l.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return l.subPaths.forEach(u=>{let a=UP(u.curves);a!==void 0&&u.currentPoint.distanceTo(a)>0&&u.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}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 s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function UP(n){if(n.length){let r=n[0];if(r instanceof jP)return r.v1;if(r instanceof VP||r instanceof FP)return r.v0}}var Vd=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){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}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 Vd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Co(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var vy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var jd=class extends gl{constructor(e){super();this.shared=e}create(e){return new ni(e,this.shared)}},Vo=class{constructor(r,e={}){this.geometryCache=new Ss(!0);this.geometryCache2=new Ss(!1);this.imageHolderCache=new jd(this);this.thisContext={scene:vy,shared:this};this.deletedMaterial=new Do(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Ft(ln.emptyImage,this);this.deletedVideo=new Ft(en.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];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.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Do(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]=e}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):new si(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 Ft(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 Ft(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 uo(e.r,e.g,e.b,e.a):this.colors[r]=new uo(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 $e(0,0,0,0))}else return"a"in r?new $e(r.r,r.g,r.b,r.a):new $e(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 Go)return e;{let t=new Go({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Go&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new wl(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 Go&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},by=new Vo(la.emptyData());var nr=class extends nt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),cu(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(Wt(e.path,["material"])&&this.material instanceof At)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(tt.drop(e,1),t.material,o);else if(Wt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(tt.drop(e,2),s,o)}}}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&&aa(this.material).forEach(e=>{e instanceof At&&(e instanceof Do||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as kP}from"three";var at=class extends nr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof kP&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Vo){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Oi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Oi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Wt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(tt.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 a={...this.data.geometry,...i};this.localGeometry=Co(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Yi(this.localGeometry.attributes,s/u.sxPrev,l/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=l,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Co(i,t,this.data.flatShading)}}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&&Ei(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Fe&&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)}};function WP(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 s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new zd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new zd})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new Sy(i,3))}function qP(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 zd;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 Sy(t,3))}function ai(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof At)||n.material.getLayersOfType("outline").length===0)return;n instanceof at&&n.is2DAndNoDepth?qP(n):WP(n)}function li(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=[Fd.seededRandom(o),Fd.seededRandom(o+1e4),Fd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new HP(t,3))}var KP;Yn.then(n=>{KP=n});var Or=new $P,ws=new XP;function _y(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var jo=class extends at{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new YP;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:s}=Fe.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,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,ai(this),li(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){Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Fe.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,nt.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 wy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(t),Or.getCenter(o),e.boundingSphere.radius=o.distanceTo(Or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(ws),this.hasNonUniformScale&&ws.divide(this.scale);let i={width:ws.x,height:ws.y,depth:ws.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new wy);let o=t.boundingSphere.center;Or.getCenter(o),t.boundingSphere.radius=o.distanceTo(Or.max)}freeSubdivPointer(){this.subdivPointer&&(Fe.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 ZP,Vector3 as zo}from"three";var Ty=-1,QP=1,Py={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Oy={polygon_center:0,edge:1,vertex:2},_s=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Ty)*(e-t)/(QP-Ty)+t};function Ay(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var JP=new zo,_l=new zo,eO=new zo,tO=new zo;function ci(n,r){let e=eO.fromArray(n),t=tO.fromArray(r);_l.copy(t).sub(e);let o=_l.length();return _l.normalize().multiplyScalar(o*.5),JP.copy(e).add(_l).toArray()}var zt=new ZP,Tl=new zo,Pl=new zo,Fo=new zo;function Iy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Tl.fromArray(n.index.array,e*3),zt.setFromAttributeAndIndices(n.attributes.position,Tl.x,Tl.y,Tl.z),zt.getNormal(Pl),zt.getMidpoint(Fo),!(isNaN(Fo.x)||isNaN(Fo.y)||isNaN(Fo.z))){let{a:t,b:o,c:i}=zt,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ci(s,l),f=ci(l,c),m=ci(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(S=>Math.round(S)===Math.round(y)).length>1,v=[],w=zt.getMidpoint(Fo).toArray();y===u&&!g&&(v=[f,m,m],w=p),y===a&&!g&&(v=[p,m,m],w=f),y===d&&!g&&(v=[p,f,f],w=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:w,norm:zt.getNormal(Pl).toArray()})}return r}function Cy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){zt.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),zt.getNormal(Pl),zt.getMidpoint(Fo);let o=zt.a.toArray(),i=zt.b.toArray(),s=zt.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ci(o,i),ci(i,s),ci(s,o)],midpoint:Fo.toArray(),norm:Pl.toArray()})}return r}var rO=4,oO=.5,Ud=n=>.5*(1-Math.cos(n*Math.PI)),kd=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),s=Math.floor(t),l=r-o,c=e-i,u=t-s,a,d,p=0,f=.5,m,h,y;for(let g=0;g<rO;g++){let v=o+(i<<4)+(s<<8);a=Ud(l),d=Ud(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=d*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=d*(y-h),m+=Ud(u)*(h-m),p+=m*f,f*=oO,o<<=1,l*=2,i<<=1,c*=2,s<<=1,u*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,l;return{setSeed(c){l=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return l=(1664525*l+1013904223)%4294967296,l/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Ny=kd;import{Vector3 as nO,Matrix4 as iO,Ray as sO}from"three";var Ey=new nO,My=new iO,Ly=new sO;function By(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var di=class extends at{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)&&(My.copy(o).invert(),Ly.copy(e.ray).applyMatrix4(My),Ly.intersectBox(this.singleBBox,Ey))){let i=Ey.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var ht=1e-4,Ar,Vy,jy,Fy,Gy=new Bt,Ry=new Bt;Yn.then(n=>{Ar=n,Vy=[Ar.get_face_center,Ar.get_edge_midpoint,Ar.get_vertex_position],jy=[Ar.get_face_normal,Ar.get_edge_normal,Ar.get_vertex_normal],Fy=[Ar.face_count,Ar.edge_count,Ar.vertex_count]});var lO=new ko,cO=new ko,fo=new Bt,Uo=new Bt,Ts=new Bt,Wd=new Bt,dO=new Bt,uO=new Bt;var kr=new Ny,pi=class extends Mn(aO){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 Fr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Fr&&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"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*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,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new Fr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++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 s=new Fr(this.object);s.expand(),this.add(s)}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*Dy.DEG2RAD,i=t.end*Dy.DEG2RAD,s=o-i,l=new Hd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Bt(0,0,1);break;case"y":c=new Bt(0,1,0);break;default:case"x":c=new Bt(1,0,0);break}let u=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";kr.noiseSeed(u.seed);let d=Ga((0,ui.default)(u.seed)),p=_s(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?kr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||ht,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||ht,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||ht,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,u.position[0])),m.position.y+=t.position[1]+p(f,me(y,u.position[1])),m.position.z+=t.position[2]+p(f,me(y,u.position[2]));let v=p(f,me(y,u.rotation[0])),w=p(f,me(y,u.rotation[1])),S=p(f,me(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+w,m.rotation.z+=l.z+S):m.rotation.set(l.x+v,l.y+w,l.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Hd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";kr.noiseSeed(i.seed);let l=Ga((0,ui.default)(i.seed)),c=_s(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?kr.noise(d):l(d,d),f=c(u,me(p,i.rotation[0])),m=c(u,me(p,i.rotation[1])),h=c(u,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,me(p,i.scale[0]))||ht,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||ht,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||ht,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,me(p,i.position[0])),a.position.y=t.position[1]*u+c(u,me(p,i.position[1])),a.position.z=t.position[2]*u+c(u,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,s=_s(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";kr.noiseSeed(i.seed);let c=Tm((0,ui.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},a=new Bt(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=l?kr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||ht,y.scale.y=1+s(t,me(h,i.scale[1]))||ht,y.scale.z=1+s(t,me(h,i.scale[2]))||ht;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),w=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,w),y.position.x=o.size[0]*d-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,me(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?kr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||ht,m.scale.y=1+s(t,me(f,i.scale[1]))||ht,m.scale.z=1+s(t,me(f,i.scale[2]))||ht;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Hd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??pr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";kr.noiseSeed(i.seed);let l=Ga((0,ui.default)(i.seed)),c=_s(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 di)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.object.parent===this.objectForSample){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,w=g.map(T=>T[0]).reduce((T,_)=>T+_,0),S=g.map(T=>T[1]).reduce((T,_)=>T+_,0),b=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[w/v,S/v,b/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(w=>p(g.pos[0])===p(w.pos[0])&&p(g.pos[1])===p(w.pos[1])&&p(g.pos[2])===p(w.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(w=>w.norm))}):a.push(g)});let f=Ay(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Ra(this.objectForSample).build(),h=Py[t.axis],y=this.children;m.setRandomGenerator((0,ui.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let w=g*(i.freqScale/10)+i.movement,S=s?kr.noise(w):l(w,w),b=c(g,me(S,i.rotation[0])),T=c(g,me(S,i.rotation[1])),_=c(g,me(S,i.rotation[2]));t.spreadType==="random"?m.sample(Ts,Wd):(f.length&&(Ts.fromArray(f[g].pos),Wd.fromArray(f[g].norm)),this.objectForSample instanceof jo&&Ts.applyMatrix4(lO.copy(this.objectForSample.matrixWorld).invert())),Ts.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Ts),fo.fromArray(h);let x=t.align==="normal"?Wd:this.object.getWorldDirection(uO),C=Uo.fromArray(t.position);Uo.x+=Uo.x+c(g,me(S,i.position[0])),Uo.y+=Uo.y+c(g,me(S,i.position[1])),Uo.z+=Uo.z+c(g,me(S,i.position[2]));let P=Math.acos(x.dot(fo)),I=dO.crossVectors(fo,x).normalize(),A=cO.makeRotationAxis(I,P),O=x.clone().cross(this.object.up).normalize(),V=O.clone().cross(x).normalize(),z=new ko().makeBasis(O,x,V),$=new Bt(fo.y,fo.z,fo.x).normalize(),te=$.clone().cross(fo).normalize(),K=new ko().makeBasis($,fo,te).invert(),q=new ko().multiplyMatrices(z,K);v.rotation.setFromRotationMatrix(q),C.applyMatrix4(A),v.position.add(C),v.rotation.x=v.rotation.x+o.x+b,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(S,i.scale[0]))||ht,v.scale.y=v.scale.y+t.scale[1]+c(g,me(S,i.scale[1]))||ht,v.scale.z=v.scale.z+t.scale[2]+c(g,me(S,i.scale[2]))||ht,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof jo){let t=this.objectForSample,o=Oy[e],i=Fy[o],s=Vy[o],l=jy[o],c=[],u=i(t.subdivPointerNew);for(let a=0;a<=u-1;a++){let d=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);Gy.fromArray(d).applyMatrix4(t.matrixWorld),Ry.fromArray(p),c.push({pos:Gy.toArray(),norm:Ry.toArray()})}return c}else return(this.objectForSample.geometry.index?Iy(this.objectForSample.geometry):Cy(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=Vr(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 nt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new ko,this.hiddenMatrix=new ko,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as JO,Scene as eA,Vector3 as tA,Fog as rA,Box3 as oA,MeshBasicMaterial as nA}from"three";import{Camera as _O,OrthographicCamera as Hy,PerspectiveCamera as TO,Vector3 as kt,Object3D as Wy,Quaternion as PO}from"three";import{Camera as gO,LineSegments as xO,BufferGeometry as vO,LineBasicMaterial as bO,Color as $d,Vector3 as SO,Float32BufferAttribute as Uy}from"three";import{BoxGeometry as pO}from"three";var Ir=n=>{var r;return r=class extends n{},r.geometryHelper=new pO(30,30,30),r};import{Ray as fO,Sphere as mO,Matrix4 as hO,Vector3 as Hr}from"three";var Ol=new fO,qd=new mO,zy=new hO,Cr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),qd.copy(i.boundingSphere),qd.applyMatrix4(s),e.ray.intersectsSphere(qd)===!1||(zy.copy(s).invert(),Ol.copy(e.ray).applyMatrix4(zy),i.boundingBox!==null&&Ol.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(d.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),a=d.getX(m+2),l=y(n,e,Ol,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,w=new Hr,S=new Hr,b=new Hr,T=new Hr,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),A=Math.min(v.count,f.start+f.count);for(let O=I,V=A-1;O<V;O+=_){if(w.fromBufferAttribute(v,O),S.fromBufferAttribute(v,O+1),Ol.distanceSqToSegment(w,S,T,b)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,w,S,b,T,_){let x=new Hr,C=new Hr,P=new Hr,I=new Hr,A=new Hr;if(x.fromBufferAttribute(S,b),C.fromBufferAttribute(S,T),P.fromBufferAttribute(S,_),w.intersectTriangle(x,C,P,!1,I)===null)return null;A.copy(I),A.applyMatrix4(g.matrixWorld);let V=v.ray.origin.distanceTo(A);return V<v.near||V>v.far?null:{faceIndex:1,distance:V,point:A.clone(),object:g}}};var Al=new SO,Ut=new gO,Yd=class extends xO{constructor(e){let t=new vO,o=new bO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new $d(15711266),u=new $d(15711266),a=new $d(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",a),d("u2","u3",a),d("u3","u1",a);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}t.setAttribute("position",new Uy(i,3)),t.setAttribute("color",new Uy(s,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=l,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;Ut.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;ir("n1",t,e,Ut,-i,-s,l),ir("n2",t,e,Ut,i,-s,l),ir("n3",t,e,Ut,-i,s,l),ir("n4",t,e,Ut,i,s,l);let c=l;ir("f1",t,e,Ut,-i,-s,c),ir("f2",t,e,Ut,i,-s,c),ir("f3",t,e,Ut,-i,s,c),ir("f4",t,e,Ut,i,s,c);let u=c,a=.5;ir("u1",t,e,Ut,i*.7*a,s*1.1,u),ir("u2",t,e,Ut,-i*.7*a,s*1.1,u),ir("u3",t,e,Ut,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ir(n,r,e,t,o,i,s){Al.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],Al.x,Al.y,Al.z)}}var Il=class extends Ir(Yd){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){Cr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as ky,BoxGeometry as wO}from"three";var Cl;(r=>r.is=e=>"objectHelper"in e)(Cl||(Cl={}));var mo=(n,r)=>class extends za(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 ky&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof wO?(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 ky&&(i.visible=!1)}}};var Xd=790,fi=new kt,Kd=new kt,Wr=class extends mo(_O,Il){constructor(e="",t={...nn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=bo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??Xd,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new Hy(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new Hy(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new TO(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 kt(e,t,o)),super.lookAt(e),this.getWorldPosition(fi),this.targetOffset=fi.distanceTo(e)}getTarget(e=new kt){return this.getWorldDirection(Kd),this.getWorldPosition(fi),Kd.multiplyScalar(this.targetOffset),e.copy(fi).add(Kd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(fi),fi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new PO),t=new kt(0,0,1).applyQuaternion(e),o=new kt().copy(Wy.DEFAULT_UP);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new kt().copy(Wy.DEFAULT_UP).projectOnPlane(t),s=new kt().crossVectors(i,o).dot(t)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new kt),i=e.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new kt),i=this.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??Xd,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;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,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,o,i,s,l)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}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.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,autoZoom:!0,autoZoomFrustumSize:Xd},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Nn(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{BufferGeometry as qy,Float16BufferAttribute as OO,Matrix4 as AO}from"three";var $y=new AO;var Ht=class extends nr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new qy;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 s=this.children[i];s instanceof Ht&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof nt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=er.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;er.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof Ht&&s.needsTransformForDownstream===!0?(er.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&($y.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),er.transformMeshSet(s.booleanMeshSetAddress,$y),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new OO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return er.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new qy,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=er.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,ai(this),li(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as IO}from"three";var Yy;(r=>{function n(e){return Ce.is(e)&&e instanceof IO}r.is=n})(Yy||(Yy={}));var mi=(n,r)=>class extends mo(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 Ps=n=>n instanceof nt,Os=n=>n!==null&&n instanceof Ht,Xy=n=>n instanceof Wr;var Ky=n=>Cl.is(n);import{Group as NO}from"three";import{AxesHelper as CO}from"three";var ho=class extends Ir(CO){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Cr(this.object,ho.geometryHelper,e,t)}update(){}};var As=class extends mo(NO,ho){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as DO,CameraHelper as Zy}from"three";import{DirectionalLightHelper as EO}from"three";var hi=class extends Ir(EO){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,hi.geometryHelper,e,t)}};import{PointLightHelper as MO}from"three";var yi=class extends Ir(MO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,yi.geometryHelper,e,t)}};import{SpotLightHelper as LO,Vector3 as BO}from"three";var Nl=class extends Ir(LO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,Nl.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Nl._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 s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Is=Nl;Is._vector=new BO;function GO(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 El=class extends mi(DO,hi){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 s=new Zy(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Zy&&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&&GO(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)),t&&this.update()}};import{PointLight as RO,Vector3 as Ml,Box3 as VO,Box3Helper as Qy,Color as jO}from"three";var Ll=class extends mi(RO,yi){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 s=new Ml(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Ml(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new VO(s,l),u=new Qy(c,new jO(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 Qy){let t=this.shadow.camera,o=new Ml(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Ml(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))}};import{SpotLight as FO,CameraHelper as Jy,MathUtils as zO,Vector3 as og,Quaternion as UO}from"three";var eg=new og,tg=new og,rg=new UO,Bl=class extends mi(FO,Is){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=zO.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new Jy(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Jy&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),tg.setFromMatrixPosition(this.matrixWorld),rg.setFromRotationMatrix(this.matrixWorld),eg.copy(this.up).applyQuaternion(rg).negate().multiplyScalar(this.distance),this.target.position.copy(tg).add(eg),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.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Dl=class extends at{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Zi(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var gi=class extends at{constructor(e,t,o){super(e,t,o);this._shapeId=null;this.snappedEntities=new Set;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape(),this.updateSnappedEntities(t)}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=nl;break;case"Ellipse":i=Un;break;case"Polygon":i=ol;break;case"Star":i=il;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()))}updateSnappedEntities(e){this.snappedEntities.forEach(t=>{t.updatePathSnapping(e.scene)})}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e),this.updateSnappedEntities(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Zi(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 kO}from"three";var qr=class extends mo(kO,ho){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=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of Jr.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of Jr.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Gl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&ig(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Gl(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)Ce.is(e)&&Gl(e)}}function ng(n,r,e,t){return n.component===r&&Ei(n.identity,t)?n.overrideData===e?2:1:0}function ig(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof qr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Ce.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=sn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ce.is(m)?m:null,p!==null){let h=ng(p,u,d,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=ng(p,u,d,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=d?Er.apply(u.data,d):u.data;$t.is(m.type)&&(m={...m,type:"Empty"}),p=Xt.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,ig(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Ce.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function HO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new di(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new jo(n,r,e):r.geometry.type==="PathGeometry"?t=new gi(n,r,e):r.geometry.type==="VectorGeometry"?t=new Dl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Ht(n,r,e):t=new at(n,r,e),t)}function Rl(n,r,e){return r.type==="Mesh"?HO(n,r,e):r.type==="Empty"?new As(n,r):r.type==="PointLight"?new Ll(n,r,e):r.type==="SpotLight"?new Bl(n,r,e):r.type==="DirectionalLight"?new El(n,r,e):r.type==="Component"||r.type==="Instance"?new qr(n,r,e):$t.is(r.type)?new Wr(n,r):(console.error(r),new As(n,r))}Xt.createEntity=Rl;function WO(n,r,e){let t=Rl(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=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=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Xt.changeEntityProptotype=WO;Xt.Cloner=pi;function sg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as $O,Ray as YO,Raycaster as XO}from"three";function ag(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,li(n),ai(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function lg(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");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),e}function cg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ag(e,e.material[t])&&(r=!0);else ag(e,e.material)&&(r=!0)}),r}function dg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof nr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)lg(e,e.material[t])&&(r=!0);else lg(e,e.material)&&(r=!0)}),r}var KO=new XO,ZO=new $O,QO=new YO;function ug(n,r,e){let t=n.cloner;if(t)for(let o of t.children){let i=ZO.copy(o.matrixWorld).invert(),s=QO.copy(r.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=KO;c.set(s.origin,s.direction),c.near=r.near,c.far=r.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var iA=new nA;iA.wireframe=!0;var pg=new tA,Zd=class extends eA{constructor(e,t){super();this.data=e;this.backupFog=new rA(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.bgColor=new $e(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.needsRecomputeInstances=!1;this.ambientLight=new JO(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=dg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=cg(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}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}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)=>Uu(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(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}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(),Ps(i)&&Os(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}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),o.parent.remove(o),Os(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ps(o)&&(o.freeBooleanPointer(),i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof gi&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o)}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 s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),Ps(o)&&(o.invalidateUpstreamBooleanData(),Os(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0&&(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props)){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}let s=this.find(e);if(s)try{sg(s,t,o,{scene:this,shared:i}),s instanceof at&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(mt(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Wr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Os(o)&&o.recomputeBoolean()}),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){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ce.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=Qo(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...aa(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;dt.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof qr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Qo(s.data,l=>{l.events.delete(i.id)}).data)}):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)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof qr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Gl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof qr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}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)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Wr(Zd.PERSONAL_CAMERA_ID,{...nn.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ps(s)||Ky(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ug(s,e,t)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ce.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ce.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Di.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ce.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=mt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=mt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=mt(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.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,s,l){let c={scene:this,shared:l},u=Rl(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,l)),u.updateState(t,c),u instanceof at&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u)),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],u=this.find(l),a=c?u.recursiveBBox:u.singleBBox;t.push(...a.vertices)}let o=new oA;return o.setFromPoints(t),o.getCenter(pg),pg}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 nt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof At&&e(t.material[o]);else t.material instanceof At&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ns=Zd;Ns.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as sA}from"three/examples/jsm/loaders/DRACOLoader.js";var yo;function aA(){return yo||(yo=new sA,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function lA(n){if(yo){let r={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await yo.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 fg(n,r){let[e,t]=Yl(Zs.deserialize(new Uint8Array(n)));bm(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await aA();for(let i of o){let s=await lA(Ye(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:u,itemSize:a})=>{l[c]={array:u,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as oX}from"three";import{mergeBufferGeometries as sX}from"three/examples/jsm/utils/BufferGeometryUtils.js";function mg(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 hg,ShaderLib as cA}from"three";function yg(n){let r=new Set;return n.traverse(e=>{if(e instanceof nr)if(Ve(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(dA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new hg,specularColor:new hg});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},cA.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else uA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function dA(n){return n.getLayersOfType("transmission").length>0}function uA(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function gg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function xg(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 s=t;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as pA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function vg(n){let r=[];return n.traverse(e=>{e instanceof pi&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&mg(c),c}),s=pA(e.parameters.hideBase?i:[t instanceof nt?t.geometry:[],...i]);t instanceof nt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:by})}),n}function bg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Sg(n){Object.values(n.shared.materials).forEach(r=>{Qd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Qd(e.material):"materials"in e&&e.materials.forEach(t=>{Qd(t)})})}function Qd(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 Pg=Ls(_g(),1),Tg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Jd=class extends mA{load(r,e,t,o=console.error){let i=new fA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Tg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Tg),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},t,o)}async parse(r){let e=await fg(r,Sg);e.version&&(0,Pg.default)(e.version,"0.9.255")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([_y(e)&&zh(),By(e)&&xy()].filter(Boolean));let t=new Vo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ns(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Xy(s)&&Object.assign(s,{makeDefault:!0})}return o=vg(o),o=yg(o),o=gg(o),o=xg(o),o=bg(o),o}};export{Jd as default};