@splinetool/loader 0.9.199 → 0.9.202

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 Ky=Object.create;var wl=Object.defineProperty;var Zy=Object.getOwnPropertyDescriptor;var Qy=Object.getOwnPropertyNames;var Jy=Object.getPrototypeOf,eg=Object.prototype.hasOwnProperty;var _l=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),tg=(n,r)=>{for(var e in r)wl(n,e,{get:r[e],enumerable:!0})},rg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Qy(r))!eg.call(n,o)&&o!==e&&wl(n,o,{get:()=>r[o],enumerable:!(t=Zy(r,o))||t.enumerable});return n};var Tl=(n,r,e)=>(e=n!=null?Ky(Jy(n)):{},rg(r||!n||!n.__esModule?wl(e,"default",{value:n,enumerable:!0}):e,n));var Kf=_l((Jl,Xf)=>{(function(n,r){typeof Jl=="object"?Xf.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Jl,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 tm=_l((Aa,em)=>{(function(n,r){typeof Aa=="object"&&typeof em<"u"?r(Aa):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Aa,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 b=[],S=[],A=[],_=e==="f"?w:v,x=h=p=0;x<w;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)A[x]=new Array(v).fill(0);var P,O=new Array(v).fill(0);for(x=0;x<w;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(b[x]=p,m=0,c=x+1,s=x;s<w;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<w;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<w;l++)S[l][s]=S[l][s]+d*S[l][x]}for(O[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=d-p,s=c;s<v;s++)b[s]=S[x][s]/f;for(s=c;s<w;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*b[l]}}h<(y=Math.abs(O[x])+Math.abs(b[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)A[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*A[l][s];for(l=c;l<v;l++)A[l][s]=A[l][s]+m*A[l][x]}}for(s=c;s<v;s++)A[x][s]=0,A[s][x]=0;A[x][x]=1,p=b[x],c=x}if(e){if(e==="f")for(x=v;x<w;x++){for(s=v;s<w;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=O[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<w;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<w;l++)S[l][s]=S[l][s]+d*S[l][x]}for(s=x;s<w;s++)S[s][x]=S[s][x]/p}else for(s=x;s<w;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(P=!1,c=l;0<=c;c--){if(Math.abs(b[c])<=o){P=!0;break}if(Math.abs(O[c-1])<=o)break}if(!P){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*b[x],b[x]=a*b[x],!(Math.abs(d)<=o));x++)if(p=O[x],O[x]=Math.sqrt(d*d+p*p),a=p/(f=O[x]),m=-d/f,e)for(s=0;s<w;s++)y=S[s][u],g=S[s][x],S[s][u]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=O[l],c===l){if(g<0&&(O[l]=-g,t))for(s=0;s<v;s++)A[s][l]=-A[s][l];break}for(h=O[c],d=(((y=O[l-1])-g)*(y+g)+((p=b[l-1])-(f=b[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=b[x],y=O[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(b[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=A[s][x-1],g=A[s][x],A[s][x-1]=h*a+g*m,A[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(O[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<w;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}b[c]=0,b[l]=d,O[l]=h}for(x=0;x<v;x++)O[x]<o&&(O[x]=0);return{u:S,q:O,v:A}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Mh=_l(tl=>{(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),b=w*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,A=(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=S,y._stop=A,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=A){p._ended(y);return}var x=y._node;if(p._webAudio){var P=function(){p._playLock=!1,_(),p._refreshBuffer(y);var N=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(N,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),b!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),b)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?P():(p._playLock=!0,p.once("resume",P),p._clearTimer(y._id))}else{var O=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 N=x.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(p._playLock=!0,_(),N.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),b):(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(L){p._emit("playerror",y._id,L)}};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)O();else{p._playLock=!0,p._state="loading";var T=function(){p._state="loaded",O(),x.removeEventListener(r._canPlayEvent,T,!1)};x.addEventListener(r._canPlayEvent,T,!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),b=Math.max(4,w>0?f/w:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var A=(Date.now()-S)/f;S=Date.now(),g+=v*A,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))},b)},_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,b=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),b)),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 b=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+b*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 tl<"u"&&(tl.Howler=r,tl.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)}})()});import{FileLoader as _A,Loader as TA}from"three";var Ee=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,Ee.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,Ee.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,Ee.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function fi(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"&&fi(t)}return Object.freeze(n)}function Cd(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 Ts(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ir(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 Nd(){return typeof process<"u"}function Ed(n,r){for(let e of n)r(e.id,e.data)!==!0&&Ed(e.children,r)}function Ld(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Ld(e,r)}var Fe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Fe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)fi(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&&Ld(o,t)}}traverse(e){Ed(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,Fe.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)=>Cd(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 ir(0,o,o);{let s=i[0].fi;return ir(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 ir(c,c+o,o)}else return ir(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 ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)fi(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,ye.prototype);let t=e;return Nd()||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 ir(0,t,t);{let i=o[0].fi;return ir(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 ir(l,l+t,t)}else return ir(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?Ts(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=Ts(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Ts(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}}},Ir;(t=>{function n(o,i){return mi(o,i)??o}t.apply=n;function r(o,i){return Al(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=Ol([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Ir||(Ir={}));function Ol(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=mi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Ol(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 og(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=mi(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 mi(n,r){if(!Xo(r))return r;if(n instanceof Fe){let e=Ol(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return og(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=mi(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 Al(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=mi(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 Al(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Xo(r))return r;if(!Xo(n))return Ir.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=Al(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Md(n,r){let e={cur:[],result:[],len:0};return n=hi(n,r,e)??n,[n,e.result]}function Os(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function As(n){n&&(n.len-=1)}function ng(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Bd(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=hi(i.data,r,Os(e,s));As(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Bd(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 ig(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=hi(i.data,r,Os(e,s));return As(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 hi(n,r,e){if(n instanceof Fe){let t=Bd(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return ig(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=hi(i,r,Os(e,s));return As(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=hi(s,r,Os(e,i));As(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");ng(e)}return t}else return}}var Ps;(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})(Ps||(Ps={}));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 Fe||c instanceof ye||c instanceof Ee?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 Fe){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ee){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 Fe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}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 Pl;(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]=Md(d,{[m.id]:h});d=g;for(let w of v){let b=w[w.length-1];w.splice(w.length-1,1),p.push({type:0,path:w,props:{[b]:h}}),f.push({type:0,path:w,props:{[b]: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})(Pl||(Pl={}));var Dd=Symbol(),sg=Symbol(),Cs=Symbol(),yo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Is);){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[Cs];t&&t(),delete this._children[r]}}}},Cl=class extends yo{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)}},Nl=class extends yo{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,Ee.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Gd={get(n,r){if(r===Cs)return()=>{n._parent=null};if(r===Dd)return n._current;if(r===sg)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=Ns(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]}}},ag={...Gd,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}},lg={...Gd,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 yo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Cs]=()=>{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=Ns(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 yo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Cs]=()=>{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=Ns(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 Il(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 Is=class extends yo{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){Il(this.ts,e,r),Il(this.actual,t,r),Il(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Ns(n,r,e){return e instanceof Fe?new Ko(n,r,e):e instanceof ye?new Zo(n,r,e):e instanceof Ee?new Proxy(new Nl(n,r,e),lg):e!==null&&typeof e=="object"?$o(e)?e:new Proxy(new Cl(n,r,e),ag):e}function El(n){let r=new Is(n);return[Ns(r,"",n),r]}function Qo(n,r){let[e,t]=El(n);return r(e),t.result()}function Ye(n){return n instanceof Ko||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[Dd]: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 Fe||i instanceof Ko)&&typeof s=="string")return i.data(s);if((i instanceof ye||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 Rd(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 sr(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 Es=class{},yi=class extends Es{constructor(e){super();this.id=e}},gi=class extends Es{constructor(e){super();this.data=e}};var Ml;try{Ml=new TextDecoder}catch{}var ne,Wr,C=0;var Wd=[],Bl=Wd,Dl=0,vt={},we,Hr,Dt=0,ar=0,Ct,Cr,ut=[],Oe,Vd={useRecords:!1,mapsAsObjects:!0},xi=class{},Rl=new xi;Rl.name="MessagePack 0xC1";var Jo=!1,lr=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 Kd(()=>(Ms(),this?this.unpack(r,e):lr.prototype.unpack.call(Vd,r,e)));Wr=e>-1?e:r.length,C=0,Dl=0,ar=0,Hr=null,Bl=Wd,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 lr){if(vt=this,this.structures)return we=this.structures,Ls();(!we||we.length>0)&&(we=[])}else vt=Vd,(!we||we.length>0)&&(we=[]);return Ls()}unpackMultiple(r,e){let t,o=0;try{Jo=!0;let i=r.length,s=this?this.unpack(r,i):Gs.unpack(r,i);if(e){for(e(s);C<i;)if(o=C,e(Ls())===!1)return}else{for(t=[s];C<i;)o=C,t.push(Ls());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Jo=!1,Ms()}}_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 Ls(){try{if(!vt.trusted&&!Jo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Ge();if(C==Wr)we.restoreStructures&&jd(),we=null,ne=null,Cr&&(Cr=null);else if(C>Wr){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&&jd(),Ms(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function jd(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Ge(){let n=ne[C++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&qd()[n&63];return r?(r.read||(r.read=Vl(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[Yd()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}else if(n<192){let r=n-160;if(ar>=C)return Hr.slice(C-Dt,(C+=r)-Dt);if(ar==0&&Wr<140){let e=r<16?jl(r):$d(r);if(e!=null)return e}return Gl(r)}else{let r;switch(n){case 192:return null;case 193:return Ct?(r=Ge(),r>0?Ct[1].slice(Ct.position1,Ct.position1+=r):Ct[0].slice(Ct.position0,Ct.position0-=r)):Rl;case 194:return!1;case 195:return!0;case 196:return Ll(ne[C++]);case 197:return r=Oe.getUint16(C),C+=2,Ll(r);case 198:return r=Oe.getUint32(C),C+=4,Ll(r);case 199:return go(ne[C++]);case 200:return r=Oe.getUint16(C),C+=2,go(r);case 201:return r=Oe.getUint32(C),C+=4,go(r);case 202:if(r=Oe.getFloat32(C),vt.useFloat32>2){let e=Ds[(ne[C]&127)<<1|ne[C+1]>>7];return C+=4,(e*r+(r>0?.5:-.5)>>0)/e}return C+=4,r;case 203:return r=Oe.getFloat64(C),C+=8,r;case 204:return ne[C++];case 205:return r=Oe.getUint16(C),C+=2,r;case 206:return r=Oe.getUint32(C),C+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(C)*4294967296,r+=Oe.getUint32(C+4)):r=Oe.getBigUint64(C),C+=8,r;case 208:return Oe.getInt8(C++);case 209:return r=Oe.getInt16(C),C+=2,r;case 210:return r=Oe.getInt32(C),C+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(C)*4294967296,r+=Oe.getUint32(C+4)):r=Oe.getBigInt64(C),C+=8,r;case 212:if(r=ne[C++],r==114)return Hd(ne[C++]&63);{let e=ut[r];if(e)return e.read?(C++,e.read(Ge())):e.noBuffer?(C++,e()):e(ne.subarray(C,++C));throw new Error("Unknown extension "+r)}case 213:return r=ne[C],r==114?(C++,Hd(ne[C++]&63,ne[C++])):go(2);case 214:return go(4);case 215:return go(8);case 216:return go(16);case 217:return r=ne[C++],ar>=C?Hr.slice(C-Dt,(C+=r)-Dt):dg(r);case 218:return r=Oe.getUint16(C),C+=2,ar>=C?Hr.slice(C-Dt,(C+=r)-Dt):ug(r);case 219:return r=Oe.getUint32(C),C+=4,ar>=C?Hr.slice(C-Dt,(C+=r)-Dt):pg(r);case 220:return r=Oe.getUint16(C),C+=2,Ud(r);case 221:return r=Oe.getUint32(C),C+=4,Ud(r);case 222:return r=Oe.getUint16(C),C+=2,zd(r);case 223:return r=Oe.getUint32(C),C+=4,zd(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 cg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Vl(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>cg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ge);return n.highByte===0&&(n.read=Fd(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ge()}return t}return e.count=0,n.highByte===0?Fd(r,e):e}var Fd=(n,r)=>function(){let e=ne[C++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||qd()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Vl(o,n)),o.read()};function qd(){let n=Kd(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var Gl=Bs,dg=Bs,ug=Bs,pg=Bs;function Bs(n){let r;if(n<16&&(r=jl(n)))return r;if(n>64&&Ml)return Ml.decode(ne.subarray(C,C+=n));let e=C+n,t=[];for(r="";C<e;){let o=ne[C++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[C++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[C++]&63,s=ne[C++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[C++]&63,s=ne[C++]&63,l=ne[C++]&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 Ud(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}function zd(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Yd()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}}var Xe=String.fromCharCode;function $d(n){let r=C,e=new Array(n);for(let t=0;t<n;t++){let o=ne[C++];if((o&128)>0){C=r;return}e[t]=o}return Xe.apply(String,e)}function jl(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[C++];if((r&128)>1){C-=1;return}return Xe(r)}}else{let r=ne[C++],e=ne[C++];if((r&128)>0||(e&128)>0){C-=2;return}if(n<3)return Xe(r,e);let t=ne[C++];if((t&128)>0){C-=3;return}return Xe(r,e,t)}else{let r=ne[C++],e=ne[C++],t=ne[C++],o=ne[C++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){C-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[C++];if((i&128)>0){C-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[C++],s=ne[C++];if((i&128)>0||(s&128)>0){C-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[C++];if((l&128)>0){C-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[C++],s=ne[C++],l=ne[C++],c=ne[C++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){C-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[C++];if((u&128)>0){C-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[C++],a=ne[C++];if((u&128)>0||(a&128)>0){C-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[C++];if((d&128)>0){C-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[C++],a=ne[C++],d=ne[C++],p=ne[C++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){C-=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[C++];if((f&128)>0){C-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[C++],m=ne[C++];if((f&128)>0||(m&128)>0){C-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[C++];if((h&128)>0){C-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Ll(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,C,C+=n):ne.subarray(C,C+=n)}function go(n){let r=ne[C++];if(ut[r])return ut[r](ne.subarray(C,C+=n));throw new Error("Unknown extension type "+r)}var kd=new Array(4096);function Yd(){let n=ne[C++];if(n>=160&&n<192){if(n=n-160,ar>=C)return Hr.slice(C-Dt,(C+=n)-Dt);if(!(ar==0&&Wr<180))return Gl(n)}else return C--,Ge();let r=(n<<5^(n>1?Oe.getUint16(C):n>0?ne[C]:0))&4095,e=kd[r],t=C,o=C+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 C=t,e.string;o-=3,t=C}for(e=[],kd[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?jl(n):$d(n);return l!=null?e.string=l:e.string=Gl(n)}var Hd=(n,r)=>{var e=Ge();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=Vl(e,t),e.read()},Xd=typeof self=="object"?self:global;ut[0]=()=>{};ut[0].noBuffer=!0;ut[101]=()=>{let n=Ge();return(Xd[n[0]]||Error)(n[1])};ut[105]=n=>{let r=Oe.getUint32(C-4);Cr||(Cr=new Map);let e=ne[C],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Cr.set(r,o);let i=Ge();return o.used?Object.assign(t,i):(o.target=i,i)};ut[112]=n=>{let r=Oe.getUint32(C-4),e=Cr.get(r);return e.used=!0,e.target};ut[115]=()=>new Set(Ge());var Fl=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ut[116]=n=>{let r=n[0],e=Fl[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Xd[e](Uint8Array.prototype.slice.call(n,1).buffer)};ut[120]=()=>{let n=Ge();return new RegExp(n[0],n[1])};ut[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=C;C+=r-4,Ct=[Ge(),Ge()],Ct.position0=0,Ct.position1=0;let t=C;C=e;try{return Ge()}finally{C=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 Kd(n){let r=Wr,e=C,t=Dl,o=Dt,i=ar,s=Hr,l=Bl,c=Cr,u=Ct,a=new Uint8Array(ne.slice(0,Wr)),d=we,p=we.slice(0,we.length),f=vt,m=Jo,h=n();return Wr=r,C=e,Dl=t,Dt=o,ar=i,Hr=s,Bl=l,Cr=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 Ms(){ne=null,Cr=null,we=null}function Zd(n){n.unpack?ut[n.type]=n.unpack:ut[n.type]=n}var Ds=new Array(147);for(let n=0;n<256;n++)Ds[n]=+("1e"+Math.floor(45.15-n*.30103));var Gs=new lr({useRecords:!1}),fg=Gs.unpack,mg=Gs.unpackMultiple,hg=Gs.unpack,Rs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},yg=new Float32Array(1),IP=new Uint8Array(yg.buffer,0,4);var Vs;try{Vs=new TextEncoder}catch{}var js,zl,Fs=typeof Buffer<"u",Ul=Fs?Buffer.allocUnsafeSlow:Uint8Array,tu=Fs?Buffer:Uint8Array,Qd=Fs?4294967296:2144337920,R,Ve,E=0,cr,dr=null,gg=/[\u0080-\uFFFF]/,vi=Symbol("record-id"),xo=class extends lr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=tu.prototype.utf8Write?function(x,P,O){return R.utf8Write(x,P,O)}:Vs&&Vs.encodeInto?function(x,P){return Vs.encodeInto(x,R.subarray(P)).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,b=0;this.pack=this.encode=function(x,P){if(R||(R=new Ul(8192),Ve=new DataView(R.buffer,0,8192),E=0),cr=R.length-10,cr-E<2048?(R=new Ul(R.length),Ve=new DataView(R.buffer,0,R.length),cr=R.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(dr=["",""],R[E++]=214,R[E++]=98,dr.position=E-t,E+=4):dr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let O=o.sharedLength||0;if(O>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<O;I++){let T=o[I];if(!T)continue;let N,L=o.transitions;for(let U=0,K=T.length;U<K;U++){let J=T[U];N=L[J],N||(N=L[J]=Object.create(null)),L=N}L[vi]=I+64}c=O}d||(o.nextId=O+64)}i&&(i=!1),s=o||[];try{if(S(x),dr){Ve.setUint32(dr.position+t,E-dr.position-t);let O=dr;dr=null,S(O[0]),S(O[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>cr&&_(E),a.offset=E;let O=vg(R.subarray(t,E),l.idsToInsert);return l=null,O}return P&ou?(R.start=t,R.end=E,R):R.subarray(t,E)}finally{if(o){if(b<10&&b++,w>1e4)o.transitions=null,b=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let O=0,I=v.length;O<I;O++)v[O][vi]=0;v=[]}if(i&&a.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let I=R.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=O,I)}}P&Ag&&(E=t)}};let S=x=>{E>cr&&(R=_(E));var P=typeof x,O;if(P==="string"){let I=x.length;if(dr&&I>=8&&I<4096){let L=gg.test(x);dr[L?0:1]+=x,R[E++]=193,S(L?-I:I);return}let T;I<32?T=1:I<256?T=2:I<65536?T=3:T=5;let N=I*3;if(E+N>cr&&(R=_(E+N)),I<64||!u){let L,U,K,J=E+T;for(L=0;L<I;L++)U=x.charCodeAt(L),U<128?R[J++]=U:U<2048?(R[J++]=U>>6|192,R[J++]=U&63|128):(U&64512)===55296&&((K=x.charCodeAt(L+1))&64512)===56320?(U=65536+((U&1023)<<10)+(K&1023),L++,R[J++]=U>>18|240,R[J++]=U>>12&63|128,R[J++]=U>>6&63|128,R[J++]=U&63|128):(R[J++]=U>>12|224,R[J++]=U>>6&63|128,R[J++]=U&63|128);O=J-E-T}else O=u(x,E+T,N);O<32?R[E++]=160|O:O<256?(T<2&&R.copyWithin(E+2,E+1,E+1+O),R[E++]=217,R[E++]=O):O<65536?(T<3&&R.copyWithin(E+3,E+2,E+2+O),R[E++]=218,R[E++]=O>>8,R[E++]=O&255):(T<5&&R.copyWithin(E+5,E+3,E+3+O),R[E++]=219,Ve.setUint32(E,O),E+=4),E+=O}else if(P==="number")if(x>>>0===x)x<64?R[E++]=x:x<256?(R[E++]=204,R[E++]=x):x<65536?(R[E++]=205,R[E++]=x>>8,R[E++]=x&255):(R[E++]=206,Ve.setUint32(E,x),E+=4);else if(x>>0===x)x>=-32?R[E++]=256+x:x>=-128?(R[E++]=208,R[E++]=x+256):x>=-32768?(R[E++]=209,Ve.setInt16(E,x),E+=2):(R[E++]=210,Ve.setInt32(E,x),E+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){R[E++]=202,Ve.setFloat32(E,x);let T;if(I<4||(T=x*Ds[(R[E]&127)<<1|R[E+1]>>7])>>0===T){E+=4;return}else E--}R[E++]=203,Ve.setFloat64(E,x),E+=8}else if(P==="object")if(!x)R[E++]=192;else{if(l){let T=l.get(x);if(T){if(!T.id){let N=l.idsToInsert||(l.idsToInsert=[]);T.id=N.push(T)}R[E++]=214,R[E++]=112,Ve.setUint32(E,T.id),E+=4;return}else l.set(x,{offset:E-t})}let I=x.constructor;if(I===Object)A(x,!0);else if(I===Array){O=x.length,O<16?R[E++]=144|O:O<65536?(R[E++]=220,R[E++]=O>>8,R[E++]=O&255):(R[E++]=221,Ve.setUint32(E,O),E+=4);for(let T=0;T<O;T++)S(x[T])}else if(I===Map){O=x.size,O<16?R[E++]=128|O:O<65536?(R[E++]=222,R[E++]=O>>8,R[E++]=O&255):(R[E++]=223,Ve.setUint32(E,O),E+=4);for(let[T,N]of x)S(T),S(N)}else{for(let T=0,N=js.length;T<N;T++){let L=zl[T];if(x instanceof L){let U=js[T];if(U.write){U.type&&(R[E++]=212,R[E++]=U.type,R[E++]=0),S(U.write.call(this,x));return}let K=R,J=Ve,ie=E;R=null;let z;try{z=U.pack.call(this,x,W=>(R=K,K=null,E+=W,E>cr&&_(E),{target:R,targetView:Ve,position:E-W}),S)}finally{K&&(R=K,Ve=J,E=ie,cr=R.length-10)}z&&(z.length+E>cr&&_(z.length+E),E=xg(z,R,E,U.type));return}}A(x,!x.hasOwnProperty)}}else if(P==="boolean")R[E++]=x?195:194;else if(P==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))R[E++]=211,Ve.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)R[E++]=207,Ve.setBigUint64(E,x);else if(this.largeBigIntToFloat)R[E++]=203,Ve.setFloat64(E,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");E+=8}else if(P==="undefined")this.encodeUndefinedAsNil?R[E++]=192:(R[E++]=212,R[E++]=0,R[E++]=0);else if(P==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+P)},A=this.useRecords===!1?this.variableMapSize?x=>{let P=Object.keys(x),O=P.length;O<16?R[E++]=128|O:O<65536?(R[E++]=222,R[E++]=O>>8,R[E++]=O&255):(R[E++]=223,Ve.setUint32(E,O),E+=4);let I;for(let T=0;T<O;T++)S(I=P[T]),S(x[I])}:(x,P)=>{R[E++]=222;let O=E-t;E+=2;let I=0;for(let T in x)(P||x.hasOwnProperty(T))&&(S(T),S(x[T]),I++);R[O+++t]=I>>8,R[O+t]=I&255}:x=>{let P=Object.keys(x),O,I=s.transitions||(s.transitions=Object.create(null)),T=0;for(let L=0,U=P.length;L<U;L++){let K=P[L];O=I[K],O||(O=I[K]=Object.create(null),T++),I=O}let N=I[vi];if(N)N>=96&&h?(R[E++]=((N-=96)&31)+96,R[E++]=N>>5):R[E++]=N;else{N=s.nextId,N||(N=64),N<y&&this.shouldShareStructure&&!this.shouldShareStructure(P)?(N=s.nextOwnId,N<g||(N=y),s.nextOwnId=N+1):(N>=g&&(N=y),s.nextId=N+1);let L=P.highByte=N>=96&&h?N-96>>5:-1;I[vi]=N,s[N-64]=P,N<y?(P.isShared=!0,s.sharedLength=N-63,i=!0,L>=0?(R[E++]=(N&31)+96,R[E++]=L):R[E++]=N):(L>=0?(R[E++]=213,R[E++]=114,R[E++]=(N&31)+96,R[E++]=L):(R[E++]=212,R[E++]=114,R[E++]=N),T&&(w+=b*T),v.length>=m&&(v.shift()[vi]=0),v.push(I),S(P))}for(let L=0,U=P.length;L<U;L++)S(x[P[L]])},_=x=>{let P;if(x>16777216){if(x-t>Qd)throw new Error("Packed buffer would be larger than maximum buffer size");P=Math.min(Qd,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else P=(Math.max(x-t<<2,R.length-1)>>12)+1<<12;let O=new Ul(P);return Ve=new DataView(O.buffer,0,P),R.copy?R.copy(O,0,t,x):O.set(R.slice(t,x)),E-=t,t=0,cr=O.length-10,R=O}}useBuffer(r){R=r,Ve=new DataView(R.buffer,R.byteOffset,R.byteLength),E=0}};zl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,xi];js=[{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?Jd(n,16,r):eu(Fs?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==tu&&this.structuredClone?Jd(n,Fl.indexOf(e.name),r):eu(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Jd(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 eu(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 xg(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 vg(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 qr(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)");zl.unshift(n.Class),js.unshift(n)}Zd(n)}var ru=new xo({useRecords:!1}),bg=ru.pack,Sg=ru.pack;var{NEVER:wg,ALWAYS:_g,DECIMAL_ROUND:Tg,DECIMAL_FIT:Og}=Rs,ou=512,Ag=1024;var nu=new xo({structuredClone:!0});qr({Class:Ee.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ee.prototype),n}});qr({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});qr({Class:Fe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Fe.prototype),n}});qr({Class:yi.prototype.constructor,type:4,write(n){return n.id},read(n){return new yi(n)}});qr({Class:gi.prototype.constructor,type:5,write(n){return n.data},read(n){return new gi(n)}});qr({Class:Be.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});function Pg(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 kl(n){if($o(n))return n;if(Array.isArray(n))return n.map(kl);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=kl(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Us;(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 Pg(n(kl(o))).toString()}t.checksum=e})(Us||(Us={}));var iu;(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})(iu||(iu={}));var $r;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=i})($r||($r={}));var su;(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})(su||(su={}));var Yr;(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})(Yr||(Yr={}));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 Ht;(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})(Ht||(Ht={}));var zs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(zs||(zs={}));var au;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(au||(au={}));var lu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(lu||(lu={}));var Wt;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Wt||(Wt={}));var vo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(vo||(vo={}));var ur;(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(Ig.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;Cg.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;Ng.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;Eg.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;Lg.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;Mg.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(ur||(ur={}));var ks;(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})(ks||(ks={}));var Ig=["count"],Cg=["radius","start","end","position","scale","rotation"],Ng=["position","scale","rotation"],Eg=["count","size"],Lg=["count","position","scale","rotation"],Mg=["strength","scale","rotation","position","movement","seed","freqScale"];var Hs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Hs||(Hs={}));var Ws;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ht.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:Ht.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:Ht.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ws||(Ws={}));var Hl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Hl||(Hl={}));var Wl;(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})(Wl||(Wl={}));var qs;(r=>r.defaultData={...Wl.defaultData,...Hl.defaultData})(qs||(qs={}));var en;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(en||(en={}));var cu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],du=["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:Ht.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:Ht.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Ht.fromHexAndA(0,1),contourColor:Ht.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 ye}}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 ye;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 ye;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 ye;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 ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(tn||(tn={}));var bi;(r=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=n})(bi||(bi={}));var Xr;(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==="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})(Xr||(Xr={}));var uu;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(uu||(uu={}));var rn;(o=>{o.identity={...zs.identity,hiddenMatrix:Yr.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:$r.isEqual(i.position,s.position)?null:s.position,rotation:$r.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:$r.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Yr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(rn||(rn={}));var ql;(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]})(ql||(ql={}));var Nt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:null,...rn.identity,cloner:null})(Nt||(Nt={}));var pu;(r=>r.defaultData={type:"Empty",...Nt.defaultData})(pu||(pu={}));var fu;(r=>r.defaultData={type:"Component",...Nt.defaultData})(fu||(fu={}));var bo;(r=>r.defaultData={type:"Mesh",...Nt.defaultData,...qs.defaultData})(bo||(bo={}));var on;(r=>r.defaultData={...Nt.defaultData,...rn.identity,...vo.defaultData})(on||(on={}));var mu;(r=>{function n(e){return{...Nt.defaultData,...Ws.defaultData(e)}}r.defaultData=n})(mu||(mu={}));var nn;(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})(nn||(nn={}));var Kr;(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=rn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(Kr||(Kr={}));var hu;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Yr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:ql.defaultData,states:new ye,events:new ye,cloner:null,...vo.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,...bo.defaultData,geometry:Xr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Nt.defaultData,...bo.defaultData,geometry:Xr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Nt.defaultData,...bo.defaultData,geometry:Xr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(hu||(hu={}));var So;(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})))):Wt.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(...ks.toOps(p,["cloner"]));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(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,rn.merge(l,s)),Wt.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")s.geometry&&(l.geometry={...l.geometry},Object.assign(l.geometry,s.geometry)),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:ur.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:ur.merge(l.cloner,s.cloner)});else if(Hs.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})(So||(So={}));var sn;(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})(sn||(sn={}));var $s;(r=>r.defaultData={orbitControls:sn.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})($s||($s={}));function Zr(n,r){return Object.setPrototypeOf(n,r),n}var Qr=void 0!=="true";function Ys(n){return Array.isArray(n)?n:[n]}function yu(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 Xs;(e=>{function n(){let t={};return t["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Zr(t,Ee.prototype)}e.defaultColors=n;function r(){return{materials:new Ee,images:new Ee,videos:new Ee,colors:new Ee,audios:new Ee,fonts:new Ee,penumbraSize:[.5,.5,.5]}}e.emptyData=r})(Xs||(Xs={}));var Bg=typeof global=="object"&&global&&global.Object===Object&&global,Ks=Bg;var Dg=typeof self=="object"&&self&&self.Object===Object&&self,Gg=Ks||Dg||Function("return this")(),Ue=Gg;var Rg=Ue.Symbol,Ke=Rg;var gu=Object.prototype,Vg=gu.hasOwnProperty,jg=gu.toString,wi=Ke?Ke.toStringTag:void 0;function Fg(n){var r=Vg.call(n,wi),e=n[wi];try{n[wi]=void 0;var t=!0}catch{}var o=jg.call(n);return t&&(r?n[wi]=e:delete n[wi]),o}var xu=Fg;var Ug=Object.prototype,zg=Ug.toString;function kg(n){return zg.call(n)}var vu=kg;var Hg="[object Null]",Wg="[object Undefined]",bu=Ke?Ke.toStringTag:void 0;function qg(n){return n==null?n===void 0?Wg:Hg:bu&&bu in Object(n)?xu(n):vu(n)}var Et=qg;function $g(n){return n!=null&&typeof n=="object"}var rt=$g;var Yg="[object Symbol]";function Xg(n){return typeof n=="symbol"||rt(n)&&Et(n)==Yg}var an=Xg;function Kg(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 Zs=Kg;var Zg=Array.isArray,Re=Zg;var Qg=1/0,Su=Ke?Ke.prototype:void 0,wu=Su?Su.toString:void 0;function _u(n){if(typeof n=="string")return n;if(Re(n))return Zs(n,_u)+"";if(an(n))return wu?wu.call(n):"";var r=n+"";return r=="0"&&1/n==-Qg?"-0":r}var Tu=_u;function Jg(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Lt=Jg;function ex(n){return n}var Ou=ex;var tx="[object AsyncFunction]",rx="[object Function]",ox="[object GeneratorFunction]",nx="[object Proxy]";function ix(n){if(!Lt(n))return!1;var r=Et(n);return r==rx||r==ox||r==tx||r==nx}var Qs=ix;var sx=Ue["__core-js_shared__"],Js=sx;var Au=function(){var n=/[^.]+$/.exec(Js&&Js.keys&&Js.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function ax(n){return!!Au&&Au in n}var Pu=ax;var lx=Function.prototype,cx=lx.toString;function dx(n){if(n!=null){try{return cx.call(n)}catch{}try{return n+""}catch{}}return""}var Nr=dx;var ux=/[\\^$.*+?()[\]{}|]/g,px=/^\[object .+?Constructor\]$/,fx=Function.prototype,mx=Object.prototype,hx=fx.toString,yx=mx.hasOwnProperty,gx=RegExp("^"+hx.call(yx).replace(ux,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function xx(n){if(!Lt(n)||Pu(n))return!1;var r=Qs(n)?gx:px;return r.test(Nr(n))}var Iu=xx;function vx(n,r){return n?.[r]}var Cu=vx;function bx(n,r){var e=Cu(n,r);return Iu(e)?e:void 0}var wt=bx;var Sx=wt(Ue,"WeakMap"),ea=Sx;var Nu=Object.create,wx=function(){function n(){}return function(r){if(!Lt(r))return{};if(Nu)return Nu(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Eu=wx;function _x(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 Lu=_x;function Tx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Mu=Tx;var Ox=800,Ax=16,Px=Date.now;function Ix(n){var r=0,e=0;return function(){var t=Px(),o=Ax-(t-e);if(e=t,o>0){if(++r>=Ox)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Bu=Ix;function Cx(n){return function(){return n}}var Du=Cx;var Nx=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ln=Nx;var Ex=ln?function(n,r){return ln(n,"toString",{configurable:!0,enumerable:!1,value:Du(r),writable:!0})}:Ou,Gu=Ex;var Lx=Bu(Gu),Ru=Lx;function Mx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Vu=Mx;var Bx=9007199254740991,Dx=/^(?:0|[1-9]\d*)$/;function Gx(n,r){var e=typeof n;return r=r??Bx,!!r&&(e=="number"||e!="symbol"&&Dx.test(n))&&n>-1&&n%1==0&&n<r}var cn=Gx;function Rx(n,r,e){r=="__proto__"&&ln?ln(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ta=Rx;function Vx(n,r){return n===r||n!==n&&r!==r}var dn=Vx;var jx=Object.prototype,Fx=jx.hasOwnProperty;function Ux(n,r,e){var t=n[r];(!(Fx.call(n,r)&&dn(t,e))||e===void 0&&!(r in n))&&ta(n,r,e)}var un=Ux;function zx(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?ta(e,l,c):un(e,l,c)}return e}var pr=zx;var ju=Math.max;function kx(n,r,e){return r=ju(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=ju(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),Lu(n,this,l)}}var Fu=kx;var Hx=9007199254740991;function Wx(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Hx}var pn=Wx;function qx(n){return n!=null&&pn(n.length)&&!Qs(n)}var ra=qx;var $x=Object.prototype;function Yx(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||$x;return n===e}var fn=Yx;function Xx(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Uu=Xx;var Kx="[object Arguments]";function Zx(n){return rt(n)&&Et(n)==Kx}var $l=Zx;var zu=Object.prototype,Qx=zu.hasOwnProperty,Jx=zu.propertyIsEnumerable,e0=$l(function(){return arguments}())?$l:function(n){return rt(n)&&Qx.call(n,"callee")&&!Jx.call(n,"callee")},mn=e0;function t0(){return!1}var ku=t0;var qu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Hu=qu&&typeof module=="object"&&module&&!module.nodeType&&module,r0=Hu&&Hu.exports===qu,Wu=r0?Ue.Buffer:void 0,o0=Wu?Wu.isBuffer:void 0,n0=o0||ku,wo=n0;var i0="[object Arguments]",s0="[object Array]",a0="[object Boolean]",l0="[object Date]",c0="[object Error]",d0="[object Function]",u0="[object Map]",p0="[object Number]",f0="[object Object]",m0="[object RegExp]",h0="[object Set]",y0="[object String]",g0="[object WeakMap]",x0="[object ArrayBuffer]",v0="[object DataView]",b0="[object Float32Array]",S0="[object Float64Array]",w0="[object Int8Array]",_0="[object Int16Array]",T0="[object Int32Array]",O0="[object Uint8Array]",A0="[object Uint8ClampedArray]",P0="[object Uint16Array]",I0="[object Uint32Array]",Me={};Me[b0]=Me[S0]=Me[w0]=Me[_0]=Me[T0]=Me[O0]=Me[A0]=Me[P0]=Me[I0]=!0;Me[i0]=Me[s0]=Me[x0]=Me[a0]=Me[v0]=Me[l0]=Me[c0]=Me[d0]=Me[u0]=Me[p0]=Me[f0]=Me[m0]=Me[h0]=Me[y0]=Me[g0]=!1;function C0(n){return rt(n)&&pn(n.length)&&!!Me[Et(n)]}var $u=C0;function N0(n){return function(r){return n(r)}}var hn=N0;var Yu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_i=Yu&&typeof module=="object"&&module&&!module.nodeType&&module,E0=_i&&_i.exports===Yu,Yl=E0&&Ks.process,L0=function(){try{var n=_i&&_i.require&&_i.require("util").types;return n||Yl&&Yl.binding&&Yl.binding("util")}catch{}}(),Er=L0;var Xu=Er&&Er.isTypedArray,M0=Xu?hn(Xu):$u,oa=M0;var B0=Object.prototype,D0=B0.hasOwnProperty;function G0(n,r){var e=Re(n),t=!e&&mn(n),o=!e&&!t&&wo(n),i=!e&&!t&&!o&&oa(n),s=e||t||o||i,l=s?Uu(n.length,String):[],c=l.length;for(var u in n)(r||D0.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||cn(u,c)))&&l.push(u);return l}var na=G0;function R0(n,r){return function(e){return n(r(e))}}var ia=R0;var V0=ia(Object.keys,Object),Ku=V0;var j0=Object.prototype,F0=j0.hasOwnProperty;function U0(n){if(!fn(n))return Ku(n);var r=[];for(var e in Object(n))F0.call(n,e)&&e!="constructor"&&r.push(e);return r}var Zu=U0;function z0(n){return ra(n)?na(n):Zu(n)}var yn=z0;function k0(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Qu=k0;var H0=Object.prototype,W0=H0.hasOwnProperty;function q0(n){if(!Lt(n))return Qu(n);var r=fn(n),e=[];for(var t in n)t=="constructor"&&(r||!W0.call(n,t))||e.push(t);return e}var Ju=q0;function $0(n){return ra(n)?na(n,!0):Ju(n)}var gn=$0;var Y0=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X0=/^\w*$/;function K0(n,r){if(Re(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||an(n)?!0:X0.test(n)||!Y0.test(n)||r!=null&&n in Object(r)}var ep=K0;var Z0=wt(Object,"create"),Lr=Z0;function Q0(){this.__data__=Lr?Lr(null):{},this.size=0}var tp=Q0;function J0(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var rp=J0;var ev="__lodash_hash_undefined__",tv=Object.prototype,rv=tv.hasOwnProperty;function ov(n){var r=this.__data__;if(Lr){var e=r[n];return e===ev?void 0:e}return rv.call(r,n)?r[n]:void 0}var op=ov;var nv=Object.prototype,iv=nv.hasOwnProperty;function sv(n){var r=this.__data__;return Lr?r[n]!==void 0:iv.call(r,n)}var np=sv;var av="__lodash_hash_undefined__";function lv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Lr&&r===void 0?av:r,this}var ip=lv;function xn(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])}}xn.prototype.clear=tp;xn.prototype.delete=rp;xn.prototype.get=op;xn.prototype.has=np;xn.prototype.set=ip;var Xl=xn;function cv(){this.__data__=[],this.size=0}var sp=cv;function dv(n,r){for(var e=n.length;e--;)if(dn(n[e][0],r))return e;return-1}var Jr=dv;var uv=Array.prototype,pv=uv.splice;function fv(n){var r=this.__data__,e=Jr(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():pv.call(r,e,1),--this.size,!0}var ap=fv;function mv(n){var r=this.__data__,e=Jr(r,n);return e<0?void 0:r[e][1]}var lp=mv;function hv(n){return Jr(this.__data__,n)>-1}var cp=hv;function yv(n,r){var e=this.__data__,t=Jr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var dp=yv;function vn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}vn.prototype.clear=sp;vn.prototype.delete=ap;vn.prototype.get=lp;vn.prototype.has=cp;vn.prototype.set=dp;var eo=vn;var gv=wt(Ue,"Map"),to=gv;function xv(){this.size=0,this.__data__={hash:new Xl,map:new(to||eo),string:new Xl}}var up=xv;function vv(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var pp=vv;function bv(n,r){var e=n.__data__;return pp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ro=bv;function Sv(n){var r=ro(this,n).delete(n);return this.size-=r?1:0,r}var fp=Sv;function wv(n){return ro(this,n).get(n)}var mp=wv;function _v(n){return ro(this,n).has(n)}var hp=_v;function Tv(n,r){var e=ro(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var yp=Tv;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=up;bn.prototype.delete=fp;bn.prototype.get=mp;bn.prototype.has=hp;bn.prototype.set=yp;var _o=bn;var Ov="Expected a function";function Kl(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Ov);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(Kl.Cache||_o),e}Kl.Cache=_o;var gp=Kl;var Av=500;function Pv(n){var r=gp(n,function(t){return e.size===Av&&e.clear(),t}),e=r.cache;return r}var xp=Pv;var Iv=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Cv=/\\(\\)?/g,Nv=xp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Iv,function(e,t,o,i){r.push(o?i.replace(Cv,"$1"):t||e)}),r}),vp=Nv;function Ev(n){return n==null?"":Tu(n)}var bp=Ev;function Lv(n,r){return Re(n)?n:ep(n,r)?[n]:vp(bp(n))}var Gt=Lv;var Mv=1/0;function Bv(n){if(typeof n=="string"||an(n))return n;var r=n+"";return r=="0"&&1/n==-Mv?"-0":r}var oo=Bv;function Dv(n,r){r=Gt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[oo(r[e++])];return e&&e==t?n:void 0}var sa=Dv;function Gv(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Sn=Gv;var Sp=Ke?Ke.isConcatSpreadable:void 0;function Rv(n){return Re(n)||mn(n)||!!(Sp&&n&&n[Sp])}var wp=Rv;function _p(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=wp),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?_p(l,r-1,e,t,o):Sn(o,l):t||(o[o.length]=l)}return o}var Tp=_p;function Vv(n){var r=n==null?0:n.length;return r?Tp(n,1):[]}var Op=Vv;function jv(n){return Ru(Fu(n,void 0,Op),n+"")}var aa=jv;var Fv=ia(Object.getPrototypeOf,Object),wn=Fv;var Uv="[object Object]",zv=Function.prototype,kv=Object.prototype,Ap=zv.toString,Hv=kv.hasOwnProperty,Wv=Ap.call(Object);function qv(n){if(!rt(n)||Et(n)!=Uv)return!1;var r=wn(n);if(r===null)return!0;var e=Hv.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Ap.call(e)==Wv}var Pp=qv;function $v(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 Ip=$v;function Yv(){this.__data__=new eo,this.size=0}var Cp=Yv;function Xv(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Np=Xv;function Kv(n){return this.__data__.get(n)}var Ep=Kv;function Zv(n){return this.__data__.has(n)}var Lp=Zv;var Qv=200;function Jv(n,r){var e=this.__data__;if(e instanceof eo){var t=e.__data__;if(!to||t.length<Qv-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new _o(t)}return e.set(n,r),this.size=e.size,this}var Mp=Jv;function _n(n){var r=this.__data__=new eo(n);this.size=r.size}_n.prototype.clear=Cp;_n.prototype.delete=Np;_n.prototype.get=Ep;_n.prototype.has=Lp;_n.prototype.set=Mp;var Tn=_n;function eb(n,r){return n&&pr(r,yn(r),n)}var Bp=eb;function tb(n,r){return n&&pr(r,gn(r),n)}var Dp=tb;var jp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gp=jp&&typeof module=="object"&&module&&!module.nodeType&&module,rb=Gp&&Gp.exports===jp,Rp=rb?Ue.Buffer:void 0,Vp=Rp?Rp.allocUnsafe:void 0;function ob(n,r){if(r)return n.slice();var e=n.length,t=Vp?Vp(e):new n.constructor(e);return n.copy(t),t}var Fp=ob;function nb(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 Up=nb;function ib(){return[]}var la=ib;var sb=Object.prototype,ab=sb.propertyIsEnumerable,zp=Object.getOwnPropertySymbols,lb=zp?function(n){return n==null?[]:(n=Object(n),Up(zp(n),function(r){return ab.call(n,r)}))}:la,On=lb;function cb(n,r){return pr(n,On(n),r)}var kp=cb;var db=Object.getOwnPropertySymbols,ub=db?function(n){for(var r=[];n;)Sn(r,On(n)),n=wn(n);return r}:la,ca=ub;function pb(n,r){return pr(n,ca(n),r)}var Hp=pb;function fb(n,r,e){var t=r(n);return Re(n)?t:Sn(t,e(n))}var da=fb;function mb(n){return da(n,yn,On)}var Ti=mb;function hb(n){return da(n,gn,ca)}var ua=hb;var yb=wt(Ue,"DataView"),pa=yb;var gb=wt(Ue,"Promise"),fa=gb;var xb=wt(Ue,"Set"),ma=xb;var Wp="[object Map]",vb="[object Object]",qp="[object Promise]",$p="[object Set]",Yp="[object WeakMap]",Xp="[object DataView]",bb=Nr(pa),Sb=Nr(to),wb=Nr(fa),_b=Nr(ma),Tb=Nr(ea),To=Et;(pa&&To(new pa(new ArrayBuffer(1)))!=Xp||to&&To(new to)!=Wp||fa&&To(fa.resolve())!=qp||ma&&To(new ma)!=$p||ea&&To(new ea)!=Yp)&&(To=function(n){var r=Et(n),e=r==vb?n.constructor:void 0,t=e?Nr(e):"";if(t)switch(t){case bb:return Xp;case Sb:return Wp;case wb:return qp;case _b:return $p;case Tb:return Yp}return r});var Mr=To;var Ob=Object.prototype,Ab=Ob.hasOwnProperty;function Pb(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&Ab.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Kp=Pb;var Ib=Ue.Uint8Array,An=Ib;function Cb(n){var r=new n.constructor(n.byteLength);return new An(r).set(new An(n)),r}var Pn=Cb;function Nb(n,r){var e=r?Pn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Zp=Nb;var Eb=/\w*$/;function Lb(n){var r=new n.constructor(n.source,Eb.exec(n));return r.lastIndex=n.lastIndex,r}var Qp=Lb;var Jp=Ke?Ke.prototype:void 0,ef=Jp?Jp.valueOf:void 0;function Mb(n){return ef?Object(ef.call(n)):{}}var tf=Mb;function Bb(n,r){var e=r?Pn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var rf=Bb;var Db="[object Boolean]",Gb="[object Date]",Rb="[object Map]",Vb="[object Number]",jb="[object RegExp]",Fb="[object Set]",Ub="[object String]",zb="[object Symbol]",kb="[object ArrayBuffer]",Hb="[object DataView]",Wb="[object Float32Array]",qb="[object Float64Array]",$b="[object Int8Array]",Yb="[object Int16Array]",Xb="[object Int32Array]",Kb="[object Uint8Array]",Zb="[object Uint8ClampedArray]",Qb="[object Uint16Array]",Jb="[object Uint32Array]";function eS(n,r,e){var t=n.constructor;switch(r){case kb:return Pn(n);case Db:case Gb:return new t(+n);case Hb:return Zp(n,e);case Wb:case qb:case $b:case Yb:case Xb:case Kb:case Zb:case Qb:case Jb:return rf(n,e);case Rb:return new t;case Vb:case Ub:return new t(n);case jb:return Qp(n);case Fb:return new t;case zb:return tf(n)}}var of=eS;function tS(n){return typeof n.constructor=="function"&&!fn(n)?Eu(wn(n)):{}}var nf=tS;var rS="[object Map]";function oS(n){return rt(n)&&Mr(n)==rS}var sf=oS;var af=Er&&Er.isMap,nS=af?hn(af):sf,lf=nS;var iS="[object Set]";function sS(n){return rt(n)&&Mr(n)==iS}var cf=sS;var df=Er&&Er.isSet,aS=df?hn(df):cf,uf=aS;var lS=1,cS=2,dS=4,pf="[object Arguments]",uS="[object Array]",pS="[object Boolean]",fS="[object Date]",mS="[object Error]",ff="[object Function]",hS="[object GeneratorFunction]",yS="[object Map]",gS="[object Number]",mf="[object Object]",xS="[object RegExp]",vS="[object Set]",bS="[object String]",SS="[object Symbol]",wS="[object WeakMap]",_S="[object ArrayBuffer]",TS="[object DataView]",OS="[object Float32Array]",AS="[object Float64Array]",PS="[object Int8Array]",IS="[object Int16Array]",CS="[object Int32Array]",NS="[object Uint8Array]",ES="[object Uint8ClampedArray]",LS="[object Uint16Array]",MS="[object Uint32Array]",Le={};Le[pf]=Le[uS]=Le[_S]=Le[TS]=Le[pS]=Le[fS]=Le[OS]=Le[AS]=Le[PS]=Le[IS]=Le[CS]=Le[yS]=Le[gS]=Le[mf]=Le[xS]=Le[vS]=Le[bS]=Le[SS]=Le[NS]=Le[ES]=Le[LS]=Le[MS]=!0;Le[mS]=Le[ff]=Le[wS]=!1;function ha(n,r,e,t,o,i){var s,l=r&lS,c=r&cS,u=r&dS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Lt(n))return n;var a=Re(n);if(a){if(s=Kp(n),!l)return Mu(n,s)}else{var d=Mr(n),p=d==ff||d==hS;if(wo(n))return Fp(n,l);if(d==mf||d==pf||p&&!o){if(s=c||p?{}:nf(n),!l)return c?Hp(n,Dp(s,n)):kp(n,Bp(s,n))}else{if(!Le[d])return o?n:{};s=of(n,d,l)}}i||(i=new Tn);var f=i.get(n);if(f)return f;i.set(n,s),uf(n)?n.forEach(function(y){s.add(ha(y,r,e,y,n,i))}):lf(n)&&n.forEach(function(y,g){s.set(g,ha(y,r,e,g,n,i))});var m=u?c?ua:Ti:c?gn:yn,h=a?void 0:m(n);return Vu(h||n,function(y,g){h&&(g=y,y=n[g]),un(s,g,ha(y,r,e,g,n,i))}),s}var ya=ha;var BS=1,DS=4;function GS(n){return ya(n,BS|DS)}var Oo=GS;var RS="__lodash_hash_undefined__";function VS(n){return this.__data__.set(n,RS),this}var hf=VS;function jS(n){return this.__data__.has(n)}var yf=jS;function ga(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new _o;++r<e;)this.add(n[r])}ga.prototype.add=ga.prototype.push=hf;ga.prototype.has=yf;var gf=ga;function FS(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 xf=FS;function US(n,r){return n.has(r)}var vf=US;var zS=1,kS=2;function HS(n,r,e,t,o,i){var s=e&zS,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&kS?new gf: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(!xf(r,function(g,v){if(!vf(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 xa=HS;function WS(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var bf=WS;function qS(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Sf=qS;var $S=1,YS=2,XS="[object Boolean]",KS="[object Date]",ZS="[object Error]",QS="[object Map]",JS="[object Number]",e1="[object RegExp]",t1="[object Set]",r1="[object String]",o1="[object Symbol]",n1="[object ArrayBuffer]",i1="[object DataView]",wf=Ke?Ke.prototype:void 0,Zl=wf?wf.valueOf:void 0;function s1(n,r,e,t,o,i,s){switch(e){case i1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case n1:return!(n.byteLength!=r.byteLength||!i(new An(n),new An(r)));case XS:case KS:case JS:return dn(+n,+r);case ZS:return n.name==r.name&&n.message==r.message;case e1:case r1:return n==r+"";case QS:var l=bf;case t1:var c=t&$S;if(l||(l=Sf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=YS,s.set(n,r);var a=xa(l(n),l(r),t,o,i,s);return s.delete(n),a;case o1:if(Zl)return Zl.call(n)==Zl.call(r)}return!1}var _f=s1;var a1=1,l1=Object.prototype,c1=l1.hasOwnProperty;function d1(n,r,e,t,o,i){var s=e&a1,l=Ti(n),c=l.length,u=Ti(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:c1.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 b=n.constructor,S=r.constructor;b!=S&&"constructor"in n&&"constructor"in r&&!(typeof b=="function"&&b instanceof b&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var Tf=d1;var u1=1,Of="[object Arguments]",Af="[object Array]",va="[object Object]",p1=Object.prototype,Pf=p1.hasOwnProperty;function f1(n,r,e,t,o,i){var s=Re(n),l=Re(r),c=s?Af:Mr(n),u=l?Af:Mr(r);c=c==Of?va:c,u=u==Of?va:u;var a=c==va,d=u==va,p=c==u;if(p&&wo(n)){if(!wo(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new Tn),s||oa(n)?xa(n,r,e,t,o,i):_f(n,r,c,e,t,o,i);if(!(e&u1)){var f=a&&Pf.call(n,"__wrapped__"),m=d&&Pf.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Tn),o(h,y,e,t,i)}}return p?(i||(i=new Tn),Tf(n,r,e,t,o,i)):!1}var If=f1;function Cf(n,r,e,t,o){return n===r?!0:n==null||r==null||!rt(n)&&!rt(r)?n!==n&&r!==r:If(n,r,e,t,Cf,o)}var Nf=Cf;function m1(n,r){return n!=null&&r in Object(n)}var Ef=m1;function h1(n,r,e){r=Gt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=oo(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&&pn(o)&&cn(s,o)&&(Re(n)||mn(n)))}var Lf=h1;function y1(n,r){return n!=null&&Lf(n,r,Ef)}var Mf=y1;function g1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Bf=g1;function x1(n,r){return r.length<2?n:sa(n,Ip(r,0,-1))}var Df=x1;function v1(n,r){return Nf(n,r)}var Oi=v1;function b1(n,r){return r=Gt(r,n),n=Df(n,r),n==null||delete n[oo(Bf(r))]}var Gf=b1;function S1(n){return Pp(n)?void 0:n}var Rf=S1;var w1=1,_1=2,T1=4,O1=aa(function(n,r){var e={};if(n==null)return e;var t=!1;r=Zs(r,function(i){return i=Gt(i,n),t||(t=i.length>1),i}),pr(n,ua(n),e),t&&(e=ya(e,w1|_1|T1,Rf));for(var o=r.length;o--;)Gf(e,r[o]);return e}),In=O1;function A1(n,r,e,t){if(!Lt(n))return n;r=Gt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=oo(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=Lt(a)?a:cn(r[o+1])?[]:{})}un(l,c,u),l=l[c]}return n}var Vf=A1;function P1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=sa(n,s);e(l,s)&&Vf(i,Gt(s,n),l)}return i}var jf=P1;function I1(n,r){return jf(n,r,function(e,t){return Mf(n,t)})}var Ff=I1;var C1=aa(function(n,r){return n==null?{}:Ff(n,r)}),Cn=C1;import{MathUtils as ba}from"three";function Uf(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={...Cn(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 Sa(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function wa(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 N1(n){Object.assign(n.scene.publish,{orbitControls:{...sn.defaultData,...Ye(n.scene.publish.orbitControls)}})}function E1(n){Object.assign(n.scene.publish.settings,{video:{...$s.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function L1(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((cu.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(du.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 M1(n){n.scene.publish.withBackground=!0}function B1(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function D1(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 G1(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 R1(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 V1(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 j1(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 zf(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function Ql(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 F1(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function kf(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Ql(t)}):"material"in e&&typeof e.material!="string"&&Ql(e.material)}),Object.values(n.shared.materials).forEach(r=>Ql(r))}function U1(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 z1(n){n.shared.audios=Zr({},Ee.prototype)}function k1(n){n.shared.videos=Zr({},Ee.prototype)}function H1(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 W1(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 q1(n){n.scene.publish.settings.web.preload=!1}function Hf(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 $1(n){n.shared.fonts=Zr({},Ee.prototype)}function Y1(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 X1(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=Y1(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Nt.defaultData,...bo.defaultData,flatShading:!1,wireframe:!1,geometry:{...Xr.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 K1(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ye,move:new ye,jump:new ye}});else{let i=new ye;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:ba.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,Cn(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 ye({fi:0,id:ba.generateUUID(),data:u},{fi:1,id:ba.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Z1(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new ye,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...Cn(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={...Cn(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:ba.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Wf(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 qf(n){Sa(n,Wf),wa(n,Wf)}function Q1(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function J1(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 ew(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"))})}var $f=30;function Yf(n){let r=n.schema??0;r!==$f&&(console.warn("updating from ",r,"to ",$f),r<1&&(wa(n,Uf),Sa(n,Uf),n.schema=1),r<2&&(N1(n),n.schema=2),r<3&&(L1(n),n.schema=3),r<4&&(M1(n),n.schema=4),r<5&&(B1(n),n.schema=5),r<6&&(D1(n),n.schema=6),r<7&&(G1(n),n.schema=7),r<8&&(n.schema=8),r<9&&(kf(n),n.schema=9),r<10&&(F1(n),n.schema=10),r<11&&(U1(n),n.schema=11),r<12&&(kf(n),n.schema=12),r<13&&(z1(n),n.schema=13),r<14&&(H1(n),n.schema=14),r<15&&(W1(n),n.schema=15),r<16&&(q1(n),n.schema=16),r<17&&(wa(n,Hf),Sa(n,Hf),n.schema=17),r<18&&(wa(n,zf),Sa(n,zf),n.schema=18),r<19&&(E1(n),n.schema=19),r<20&&($1(n),X1(n),n.schema=20),r<21&&(K1(n),Z1(n),n.schema=21),r<22&&(qf(n),n.schema=22),r<23&&(Q1(n),n.schema=23),r<24&&(J1(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(k1(n),r<25&&(n.schema=25)),r<26&&(R1(n),n.schema=26),r<27&&(V1(n),n.schema=27),r<28&&(qf(n),n.schema=28),r<29&&(j1(n),n.schema=29),r<30&&(ew(n),n.schema=30))}var _a;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(_a||(_a={}));var si=Tl(Kf());import{Object3D as yO,Vector3 as Mt,Euler as vd,MathUtils as ry,Matrix4 as Ho}from"three";var tw=.5*(Math.sqrt(3)-1),Pi=(3-Math.sqrt(3))/6,rw=1/3,fr=1/6,QD=(Math.sqrt(5)-1)/4,JD=(5-Math.sqrt(5))/20,Ii=n=>Math.floor(n)|0,Zf=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]),ec=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 Ta(n=Math.random){let r=Jf(n),e=new Float64Array(r).map(o=>Zf[o%12*2]),t=new Float64Array(r).map(o=>Zf[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*tw,d=Ii(i+a),p=Ii(s+a),f=(d+p)*Pi,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 b=y-v+Pi,S=g-w+Pi,A=y-1+2*Pi,_=g-1+2*Pi,x=d&255,P=p&255,O=.5-y*y-g*g;if(O>=0){let N=x+r[P],L=e[N],U=t[N];O*=O,l=O*O*(L*y+U*g)}let I=.5-b*b-S*S;if(I>=0){let N=x+v+r[P+w],L=e[N],U=t[N];I*=I,c=I*I*(L*b+U*S)}let T=.5-A*A-_*_;if(T>=0){let N=x+1+r[P+1],L=e[N],U=t[N];T*=T,u=T*T*(L*A+U*_)}return 70*(l+c+u)}}function Qf(n=Math.random){let r=Jf(n),e=new Float64Array(r).map(i=>ec[i%12*3]),t=new Float64Array(r).map(i=>ec[i%12*3+1]),o=new Float64Array(r).map(i=>ec[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*rw,m=Ii(s+f),h=Ii(l+f),y=Ii(c+f),g=(m+h+y)*fr,v=m-g,w=h-g,b=y-g,S=s-v,A=l-w,_=c-b,x,P,O,I,T,N;S>=A?A>=_?(x=1,P=0,O=0,I=1,T=1,N=0):S>=_?(x=1,P=0,O=0,I=1,T=0,N=1):(x=0,P=0,O=1,I=1,T=0,N=1):A<_?(x=0,P=0,O=1,I=0,T=1,N=1):S<_?(x=0,P=1,O=0,I=0,T=1,N=1):(x=0,P=1,O=0,I=1,T=1,N=0);let L=S-x+fr,U=A-P+fr,K=_-O+fr,J=S-I+2*fr,ie=A-T+2*fr,z=_-N+2*fr,W=S-1+3*fr,q=A-1+3*fr,j=_-1+3*fr,M=m&255,B=h&255,D=y&255,F=.6-S*S-A*A-_*_;if(F<0)u=0;else{let G=M+r[B+r[D]];F*=F,u=F*F*(e[G]*S+t[G]*A+o[G]*_)}let Y=.6-L*L-U*U-K*K;if(Y<0)a=0;else{let G=M+x+r[B+P+r[D+O]];Y*=Y,a=Y*Y*(e[G]*L+t[G]*U+o[G]*K)}let k=.6-J*J-ie*ie-z*z;if(k<0)d=0;else{let G=M+I+r[B+T+r[D+N]];k*=k,d=k*k*(e[G]*J+t[G]*ie+o[G]*z)}let V=.6-W*W-q*q-j*j;if(V<0)p=0;else{let G=M+1+r[B+1+r[D+1]];V*=V,p=V*V*(e[G]*W+t[G]*q+o[G]*j)}return 32*(u+a+d+p)}}function Jf(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 ow}from"three";var qt=new ow,Oa=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;qt.a.fromBufferAttribute(r,o),qt.b.fromBufferAttribute(r,o+1),qt.c.fromBufferAttribute(r,o+2),i*=qt.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),qt.a.fromBufferAttribute(this.positionAttribute,r*3),qt.b.fromBufferAttribute(this.positionAttribute,r*3+1),qt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(qt.a,o).addScaledVector(qt.b,i).addScaledVector(qt.c,1-(o+i)),qt.getNormal(t),this}};import{Object3D as lw}from"three";var rm=Tl(tm());import{Object3D as nw,Matrix4 as Br}from"three";var iw=new Br,sw=new Br,aw=new Br,Ci;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ci||(Ci={}));var Nn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Br;this.matrixWorldRigid=new Br;this.shearScale=new Br;this.shearScaleInv=new Br}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof nw&&(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)Ci.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,rm.SVD)(o),c=iw.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=sw.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=aw.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 Br().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Br?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 tc=class extends Nn(lw){},cw=n=>n.type==="Mesh",Dr=class extends tc{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 Dr(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 cw(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 H_,BufferGeometry as W_,MeshBasicMaterial as q_}from"three";import{Matrix4 as z_,Mesh as k_}from"three";import{Box3 as dw,Line3 as uw,Matrix4 as rc,Vector3 as Rt}from"three";var Ao=new Rt,Po=new Rt,En=new rc,nm=[new Rt(-1,1,1),new Rt(-1,-1,1),new Rt(1,-1,1),new Rt(1,1,1),new Rt(-1,1,-1),new Rt(-1,-1,-1),new Rt(1,-1,-1),new Rt(1,1,-1)],pw=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],fw=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],om=(n,r,e)=>{n.updateEntityBoxSize(Ao,Po),En.copy(r).multiply(n.matrixWorld),Po.x===0&&Po.y===0&&Po.z===0?e.push(new Rt(Ao.x,Ao.y,Ao.z).applyMatrix4(En)):nm.forEach(t=>{e.push(t.clone().multiply(Po).add(Ao).applyMatrix4(En))})},Ni=class extends dw{constructor(){super(...arguments);this.matrix=new rc;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 rc().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&&om(s,t,i)}):om(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(En.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Po).multiplyScalar(.5),this.getCenter(Ao),En.copy(this.matrix).setPosition(Ao),this.vertices=nm.map(e=>e.clone().multiply(Po).applyMatrix4(En))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=pw.map(([e,t])=>new uw(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Rt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=fw.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var $t={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var De;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(De||(De={}));var Yt=n=>De.is(n),Pa=n=>class extends Nn(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._singleBBox=new Ni;this._recursiveBBox=new Ni;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(De.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(De.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)So.toOps(this.data,s.data).forEach(c=>{let u=Ps.replaceProps(c,this.data);this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=So.patch(this.data,s),So.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}else this.dataPatched=this.data;i&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}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=>{Yt(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(De.is(o[i]))return o[i];if(De.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&De.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)Yt(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{De.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Yt(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Yt(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=>Yt(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 In(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??Yr.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)De.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{De.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return In(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=sr(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,So.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),sr(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(Ir.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=nn.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 Kr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of Kr.rootOverrideProps)if(sr(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Ir.filterOp(d.overrideData,a);p&&d.updateByOp(p,tt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Ir.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&&!Wt.is(t.props.type)&&$t.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){$t.changeEntityProptotype(this,o,i);for(let s of this.children)De.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),sr(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()}}updateVisible(){this.visible=this.dataPatched.visible&&((this.dataPatched.cloner?.disabled??!0)||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)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof $t.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 $t.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 yw}from"three";import{BufferGeometry as mw,CylinderGeometry as hw,Float32BufferAttribute as oc,Vector2 as Xt,Vector3 as Ia}from"three";var sm=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 Ei(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new hw(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 no(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function im(n){return new Xt(n.y,-n.x)}var Ei=class extends mw{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,b=new Ia,S=new Ia;f&&r==0&&(r=u),f&&e==0&&(e=a);let A=new Xt(r,w),_=new Xt(e,-w),x=null,P=null,O=null,I=null,T=A.clone().sub(_),N=0,L=0,U=0;p>0&&(N=Math.min(r,e)*(1-p),L=r-N,U=e-N);let K=A.clone();K.x-=N;let J=Math.PI-T.angle(),ie=T.angle(),z=Math.tan(ie/2),W=Math.tan(J/2),q=z+W,j=p?q:W,M=p?q:z;if(u=Math.min(u,(r-L)/j,T.length()/q),a=Math.min(a,(e-U)/M,T.length()/q),u>0){let V=u/z;x=A.clone().sub(new Xt(V,u)),p&&(O=x.clone(),O.x-=N-q*u),A.sub(T.clone().setLength(V))}if(a>0){let V=a/W;P=_.clone().sub(new Xt(V,-a)),_.add(T.clone().setLength(V)),p&&(I=P.clone(),I.x-=N-q*a,K.sub(T.clone().setLength(V)))}T=A.clone().sub(_);let B=T.length()<.5,D=[];for(let V=0;V<=o;V++){let G=[],H=V/o,$=H*c+l,ee=new Xt(Math.sin($),Math.cos($));I&&P?(F(G,H,ee,J,a,I,-1,!0),F(G,H,ee,ie,a,P,-1,!1)):P?(Y(G,ee,P.x,0,-1),F(G,H,ee,ie,a,P,-1,!1)):s||Y(G,ee,e,U,-1);let se=im(T).normalize();if(no(se,ee,b),!B)for(let te=0;te<=i;te++){let re=te/i,oe=T.clone().multiplyScalar(re).add(_);no(oe,ee,S),h.push(S.x,S.y,S.z),y.push(b.x,b.y,b.z),g.push(H,.5+S.y/t),G.push(v++)}if(O&&x?(F(G,H,ee,J,u,x,1,!1),F(G,H,ee,ie,u,O,1,!0)):x?(F(G,H,ee,J,u,x,1,!1),Y(G,ee,x.x,0,1)):s||Y(G,ee,r,L,1),p&&!B){let te=im(T).multiplyScalar(-1).normalize();no(te,ee,b);for(let re=0;re<=i;re++){let oe=re/i,Z=T.clone().multiplyScalar(-oe).add(K);no(Z,ee,S),h.push(S.x,S.y,S.z),y.push(b.x,b.y,b.z),g.push(H,.5+S.y/t),G.push(v++)}}p&&!s&&G.push(G[0]),D.push(G)}for(let V=0;V<D.length-1;V++)for(let G=0;G<D[0].length-1;G++){if(s&&p&&G==i)continue;let H=D[V][G],$=D[V+1][G],ee=D[V+1][G+1],se=D[V][G+1],te=h[ee*3+0],re=h[ee*3+2];m.push(H,$,se),(te!=0||re!=0)&&m.push($,ee,se)}c<Math.PI*2&&(k(-1,D[0],l),k(1,D[D.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 F(V,G,H,$,ee,se,te,re){for(let oe=0;oe<d+1;oe++){let Z=oe/d,me=te<0?Z:1-Z;re&&(me-=1),me*=$;let de=new Xt(Math.sin(me),Math.cos(me)*te),he=de.clone().multiplyScalar(ee).add(se);no(he,H,S),h.push(S.x,S.y,S.z),no(de,H,b),y.push(b.x,b.y,b.z),g.push(G,.5+S.y/t),V.push(v++)}}function Y(V,G,H,$,ee){let se=new Ia,te=new Xt,re=[H,$];ee<0&&re.reverse();for(let oe of re)te.set(oe,w*ee),no(te,G,se),h.push(se.x,se.y,se.z),y.push(0,ee,0),g.push(.5,.5),V.push(v++)}function k(V,G,H){let $=new Xt(Math.sin(H),Math.cos(H)),ee=new Xt(-Math.cos(H),Math.sin(H)),se=new Ia,te=V<0?(Z,me,de)=>m.push(Z,me,de):(Z,me,de)=>m.push(Z,de,me),re=new Xt((r+e+L+U)/4,0);no(re,$,se),h.push(se.x,se.y,se.z),y.push(ee.x,0,ee.y),g.push(.5,.5);let oe=v++;for(let Z of G){let me=h.slice(Z*3,Z*3+3);h.push(...me),y.push(ee.x,0,ee.y);let de=g.slice(Z*2,Z*2+2);g.push(...de),v++}for(let Z=oe+1;Z<v-1;Z++)te(oe,Z,Z+1);te(oe,v-1,oe+1)}}};var am=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 Ei(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new yw(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as gw,BufferGeometry as xw,Float32BufferAttribute as nc,Vector3 as Li}from"three";var lm=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 gw(r,e,t,o,i,s):u=new sc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},ic=Math.PI/2,sc=class extends xw{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 nc(d,3)),this.setAttribute("normal",new nc(p,3)),this.setAttribute("uv",new nc(f,2));function y(w,b,S,A,_,x,P,O,I,T,N){let L=(x-2*l)/I,U=(P-2*l)/T,K=x/2-l,J=P/2-l,ie=O/2,z=I+1,W=T+1,q=0,j=0,M=new Li;for(let B=0;B<W;B++){let D=B*U-J;for(let F=0;F<z;F++){let Y=F*L-K;M[w]=Y*A,M[b]=D*_,M[S]=ie,d.push(M.x,M.y,M.z),M[w]=0,M[b]=0,M[S]=O>0?1:-1,p.push(M.x,M.y,M.z),f.push(F/I),f.push(1-B/T),q+=1}}for(let B=0;B<T;B++)for(let D=0;D<I;D++){let F=m+D+z*B,Y=m+D+z*(B+1),k=m+(D+1)+z*(B+1),V=m+(D+1)+z*B;a.push(F,Y,V),a.push(Y,k,V),j+=6}u.addGroup(h,j,N),h+=j,m+=q}function g(w,b,S,A,_,x,P,O,I,T,N){let L=(P-2*l)/T,U=P/2-l,K=O/2-l,J=I/2,ie=T+1,z=0,W=0,q=new Li,j=new Li;for(let M=0;M<c+1;M++){let B=M/c*ic,D=Math.sin(B)*l,F=(1-Math.cos(B))*l,Y=Math.sin(B),k=Math.cos(B);q[b]=(K+D)*_,q[S]=(J-F)*x,j[w]=0,j[b]=Y*Math.sign(q[b]),j[S]=k*Math.sign(q[S]);for(let V=0;V<ie;V++){let G=V*L-U;q[w]=G*A,d.push(q.x,q.y,q.z),p.push(j.x,j.y,j.z),f.push(V/T),f.push(0),z+=1}}for(let M=0;M<c;M++)for(let B=0;B<T;B++){let D=m+B+ie*M,F=m+B+ie*(M+1),Y=m+(B+1)+ie*(M+1),k=m+(B+1)+ie*M;a.push(D,F,k),a.push(F,Y,k),W+=6}u.addGroup(h,W,N),h+=W,m+=z}function v(w,b,S){let A=new Li,_=new Li(r/2,e/2,t/2);_.subScalar(l);let x=[],P=w*b*S>0?(I,T,N)=>a.push(I,T,N):(I,T,N)=>a.push(I,N,T);for(let I=0;I<=c;I++){let T=[],N=ic*(1-I/c),L=Math.cos(N),U=Math.sin(N),K=0;for(let J=0;J<=I;J++){let ie=Math.cos(K),z=Math.sin(K);A.x=L*ie,A.y=U,A.z=L*z;let W=_.clone().addScaledVector(A,l);d.push(w*W.x,b*W.y,S*W.z),p.push(w*A.x,b*A.y,S*A.z),f.push(0,0),T.push(m++),K+=ic/I}x.push(T)}let O=x.length-1;for(let I=0;I<O;I++){let T=x[I],N=x[I+1],L=T.length-1;P(T[0],N[1],N[0]);for(let U=1;U<=L;U++)P(T[U-1],T[U],N[U]),P(T[U],N[U+1],N[U])}}}};import{BufferGeometry as vw,Float32BufferAttribute as ac,Triangle as bw,Vector3 as Gr,Vector2 as lc}from"three";var io=class extends vw{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new ac(l,3)),this.setAttribute("normal",new ac(u,3)),this.setAttribute("uv",new ac(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 Gr,h=m.clone(),y=new bw,g=i*o,v=o-g,w=s+1,b=new Gr,S=(z,W)=>b.subVectors(z,W).normalize(),A=(z,W)=>Array(z).fill(void 0).map(W),_=A(r.length/3,(z,W)=>new Gr().fromArray(r,W*3).setLength(o)),x=[],P=1e6;for(let z=0;z<_.length;z++){let W=_[z],q=[],j,M,B,D=1e10,F=-1;for(;(F=e.indexOf(z,F+1))!=-1;){let G=F-F%3;j=e[G+(F+1)%3],M=e[G+(F+2)%3],B=W.distanceToSquared(_[j]),D=Math.min(D,B),q.push([j,M,B])}D+=1e-6;let Y=[],k=0,V=q.length;for(let G=0;G<V;G++){[j,M,B]=q[k];let H=x[j]?.includes(z)==!0;B<=D&&Y.push(j+ +H*P),k=q.findIndex($=>$[0]==M)}x.push(Y)}let O=[];{let z=0,W=0,q,j,M=f==3;for(let B=0;B<=s;B++){q=B*(B+1)/2,j=(B+1)*(B+2)/2;for(let D=0;D<s-B;D++)[z,W]=[q+D+B+2,j+D+B+3],O.push(q,j,...M?[W,q]:[z,j],W,z),[q,j]=[z,W];O.push(q,j,q+s+2)}}let I=m.clone(),T=m.clone(),N=m.clone(),L=m.clone(),U=m.clone(),K=[],J=A(_.length,()=>A(f,()=>m.clone()));for(let z=0;z<_.length;z++){m.copy(_[z]).normalize(),I.copy(m).multiplyScalar(v);let W=x[z];for(let Y=0;Y<W.length;Y++){let k=W[Y],V=W[(Y+1)%f];y.setFromPointsAndIndices(_,z,k%P,V%P),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,J[z][Y])}let q=[],j=[],M=[],B=new Gr;s==0&&[...J[z]].reduce((Y,k)=>Y.add(k),B).multiplyScalar(1/f);for(let Y=0;Y<f;Y++){let k=[],V=(Y-1+f)%f,G=J[z][V],H=J[z][Y];m.copy(G).sub(I),h.copy(H).sub(I);let $=I.angleTo(m),ee=m.angleTo(h),se=Math.cos($)*g;s==0?T.copy(B):T.copy(I).setLength(v+se),j.push(se);let te=[T,G,H];for(let re=0;re<2;re++){let oe=te[re],Z=te[re+1];L.subVectors(oe,I),U.subVectors(Z,I),N.crossVectors(L,U).normalize();for(let me=0;me<w;me++){let de=[$,ee][re]*me/w;m.copy(L).applyAxisAngle(N,de).add(I),q.push(m.clone()),re&&(S(m,I),k.push([me==0?oe:m.clone(),b.clone()]))}re&&(S(Z,I),k.push([Z,b.clone()]))}M.push(k)}K.push(M);let D=2*w,F=2;for(let Y=0;Y<f;Y++){let k=D*Y,V=D*((Y+1)%f),G=[q[k]];for(let $=1;$<w;$++){L=q[k+$],U=q[V+$],G.push(L);for(let ee=1,se=$-F+1;ee<=se;ee++)m.lerpVectors(L,U,ee/(se+1)),m.sub(I).setLength(j[Y]).add(I),G.push(m.clone());G.push(U)}for(let $=0;$<w;$++)G.push(q[$+w+k]);G.push(q[V+w]);let H=O.map($=>G[$]);l.push(...H.map($=>[$.x,$.y,$.z]).flat()),u.push(...H.map($=>(S($,I),[b.x,b.y,b.z])).flat())}}let ie=[];for(let z=0;z<x.length;z++)for(let W=0;W<f;W++){let q=x[z][W];if(q<P){let j=x[q].findIndex(D=>D%P==z),M=K[z][W],B=K[q][j];for(let D=0;D<w;D++){let F=M[D],Y=B[w-D],k=M[D+1],V=B[w-(D+1)];[F,Y,k,k,Y,V].forEach(G=>{l.push(G[0].x,G[0].y,G[0].z),u.push(G[1].x,G[1].y,G[1].z)})}ie.push(M[0][0],B[w][0],M[w][0],B[0][0])}}for(;ie.length;){let z,W,q,j;[z,W]=ie.splice(0,2);let M=[z];for(;z!=W;)M.push(W),q=ie.indexOf(W),j=q%2,W=ie.splice(q-j,2)[1-j];b.subVectors(M[0],M[1]).cross(m.subVectors(M[0],M[2])).normalize();let B=b.dot(M[0])<0;B&&b.negate();for(let D=1;D<=M.length-2;D++)[M[D+ +B],M[D+1-+B],M[0]].forEach(F=>{l.push(F.x,F.y,F.z),u.push(b.x,b.y,b.z)})}}function d(){let p=new Gr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,P=A(p)/Math.PI+.5;c.push(x,1-P)}let f=new Gr,m=new Gr,h=new Gr,y=new Gr,g=new lc,v=new lc,w=new lc,b=(_,x,P,O)=>{O<0&&_.x===1&&(c[x]=_.x-1),P.x===0&&P.z===0&&(c[x]=O/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 P=S(y);b(g,x+0,f,P),b(v,x+2,m,P),b(w,x+4,h,P)}for(let _=0;_<c.length;_+=6){let x=c[_+0],P=c[_+2],O=c[_+4],I=Math.max(x,P,O),T=Math.min(x,P,O);I>.9&&T<.1&&(x<.2&&(c[_+0]+=1),P<.2&&(c[_+2]+=1),O<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function A(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new io(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as Sw}from"three";var cm=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 Mi(r*.5,i,s):new Sw(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Mi=class extends io{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 Mi(r.radius,r.corner,r.cornerSides)}};import{Plane as Lw,Shape as Tm,Vector2 as Rr,Vector3 as Mw,MathUtils as hc,LineCurve as yc,QuadraticBezierCurve as Om,CubicBezierCurve as La}from"three";import{CubicBezierCurve as Ca,EllipseCurve as ww,LineCurve as Na,LineCurve3 as _w,MathUtils as Tw,QuadraticBezierCurve as dc,SplineCurve as Ow,Vector2 as at,Vector3 as pm}from"three";var Bi=1e-12,Ln=class{constructor(r){this.position=new at;this.startPosition=new at;this.uuid=Tw.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 Ln(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Mn=class extends Ln{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Mn(this.parent).copy(this)}},Kt=class extends Ln{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Mn(this),new Mn(this))}static create(e,t){let o=new Kt(e,new at(...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 Kt(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 at,t=new at){let[o,i]=this.computeTangents();return o&&i&&(dm(o,e),dm(i,t)),[e,t]}computeTangent(e=new at){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new at){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function dm(n,r=new at){let e=n.length();return r.set(-n.y/e,n.x/e)}var uc=n=>n,Bn=new at,Ea=new at,Aw=new at,Pw=new at,Iw=new at,Cw=new at,fm=new pm,mm=new pm;function hm(n){let r=new at;r.addVectors(n.v0,Bn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new at;return e.addVectors(n.v2,Ea.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ca(n.v0,r,e,n.v2)}function Di(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function Nw(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Ew(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function pc(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 ym(n,r,e){return um(n,r)&&um(r,e)&&cc(n.position,r.position,e.position)}function cc(n,r,e){return Bn.copy(r).sub(n).cross(Ea.copy(e).sub(n))===0}function gm(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 xm(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function vm(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 pc(r,n,e)>Math.PI&&(a*=-1),Di(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 fc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function um(n,r){return cc(n.position,n.controls[1].position,r.position)&&cc(n.position,r.controls[0].position,r.position)}function bm(n,r,e,t,o=.5){let i=Bn.subVectors(r,n).multiplyScalar(o).add(n),s=Ea.subVectors(e,r).multiplyScalar(o).add(r),l=Aw.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=Pw.subVectors(s,i).multiplyScalar(o).add(i),a=Iw.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=Cw.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 Sm(n,r,e=12,t=!0){let o=mm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=uc(r[c]),a=Bn,d=so(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof Ca||u instanceof dc||u instanceof Na){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&Ew(i,o))continue;i===void 0&&(i=fm),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 wm(n,r,e,t=12,o=!0){let i=mm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=uc(r[c]),d=Bn,p=so(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof Ca||a instanceof dc||a instanceof Na){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=fm:(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 mc(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=so(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=so(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=so(n[0].roundedCurveCorner,r)*.5),t}function so(n,r=12){return n&&n instanceof ww?r*2:n&&(n instanceof Na||n instanceof _w)?1:n&&n instanceof Ow?r*n.points.length:r}function _m(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=uc(r[s]),c=so(l,e),u=Bn;for(let a=0;a<=c;a++)if(l instanceof Ca||l instanceof dc||l instanceof Na){if(l.getPoint(a/c,u),o!==void 0&&Nw(o,u,Bi))continue;o===void 0&&(o=Ea),o.copy(u),n.push(u.x,u.y),i++}}return Di(n[0],n[n.length-2],Bi)&&Di(n[1],n[n.length-1],Bi)&&(n.pop(),n.pop()),t&&i>1&&!(Di(n[i-1],n[1],Bi)&&Di(n[i-2],n[0],Bi))&&(n.push(n[0],n[1]),i++),n}var gc=new Rr,Bw=new Rr,Dw=new Rr,Gw=new Rr,Rw=new Rr,Vw=new Rr,Se=class extends Tm{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Lw(new Mw(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=hc.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=>Kt.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=gc.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=hc.generateUUID()){let i;e instanceof Rr?i=e:i=new Rr(e,t);let s=new Kt(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 Sm(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=mc(this.points,e,!1),this.roundedCurveDivisions=mc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return wm(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),_m(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=so(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(fc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(gc.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){fc(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&&ym(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),b=1-w/h,S=w/y,A=d.getPointAt(b,gc),_=p.getPointAt(S,Bw);this._subSplitCurve(d,f,b,A,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let P=pc(A,s.position,_)/2,O=Math.tan(P)*A.distanceTo(s.position),[I,T]=gm(A,_,O,Dw,Gw),N=xm(I,T,s.position),[L,U]=vm(N,A,_,O,Rw,Vw);x=new La(A.clone(),L.clone(),U.clone(),_.clone())}else x=new Om(A.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 yc)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=bm(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 Kt(hc.generateUUID(),new Rr(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 La&&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 Om&&(i[l]=hm(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 La?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof yc&&(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 La?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof yc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Tm&&(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 vc=Math.PI*2;function xc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function jw(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 Am(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 Fw(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,b=(l-y)/i,S=(-s-h)/o,A=(-l-y)/i,_=Am(1,0,w,b),x=Am(w,b,S,A);return!u&&x>0&&(x-=vc),u&&x<0&&(x+=vc),{centerx:g,centery:v,ang1:_,ang2:x}}function Pm({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=Fw(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(vc/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(jw(f,m)),f+=m;return c.map(w=>{let{x:b,y:S}=xc(w[0],o,i,h,y),{x:A,y:_}=xc(w[1],o,i,h,y),{x,y:P}=xc(w[2],o,i,h,y);return{x1:b,y1:S,x2:A,y2:_,x,y:P}})}import{BufferAttribute as Ba,BufferGeometry as Ww}from"three";var Ce;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ce||(Ce={}));var He;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(He||(He={}));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}(),Gi=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}(),Ma=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}(),Dn=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}(),Im=function(){function n(){var r=new Dn,e=new Gi,t=new Ma(0),o=new Ma(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 Ma(0),t=new Ma(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 Dn,e=new Dn,t=new Gi,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 Dn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Gi;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 Gi;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 Dn;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 Gi;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}(),Cm=function(){function n(){this.handle=null}return n}(),Nm=function(){function n(){this.key=null,this.node=0}return n}(),Uw=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 Cm,this.handles[t]=new Nm;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 Cm;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Nm}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}(),bc=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}(),Em=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),zw=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Em,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 Em;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}(),kw=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 bc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ce.ODD:return(e&1)!==0;case Ce.NONZERO:return e!==0;case Ce.POSITIVE:return e>0;case Ce.NEGATIVE:return e<0;case Ce.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,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 Dn,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 bc;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 bc,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 zw(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 Uw(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}(),Hw=function(){function n(){this.mesh=new Im,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ce.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,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===He.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===He.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 Im),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=Ce.ODD),e===void 0&&(e=He.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_(),kw.computeInterior(this,s);var l=this.mesh;return e===He.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===He.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function Io(n){var r=n.windingRule,e=r===void 0?Ce.ODD:r,t=n.elementType,o=t===void 0?He.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 Hw;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 cR=Ce.ODD,dR=Ce.NONZERO,uR=Ce.POSITIVE,pR=Ce.NEGATIVE,fR=Ce.ABS_GEQ_TWO,mR=He.POLYGONS,hR=He.CONNECTED_POLYGONS,yR=He.BOUNDARY_CONTOURS;var Gn=class extends Ww{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ce.ODD;this.elementType=He.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ce.ODD,elementType:He.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=Io({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 Ba(new Float32Array(p*3),3),this._normalAttribute=new Ba(new Float32Array(p*3),3),this._uvAttribute=new Ba(new Float32Array(p*2),2),this._indexAttribute=new Ba(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let b=0,S=p;b<S;b++){let A=b*2,_=l.vertices[A+0],x=l.vertices[A+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,w=g-y;for(let b=0,S=p;b<S;b++){let A=b*2,_=l.vertices[A+0],x=l.vertices[A+1],P=(_-m)/v,O=(x-y)/w;this._positionAttribute.setXYZ(b,_,x,0),this._normalAttribute.setXYZ(b,0,0,1),this._uvAttribute.setXY(b,P,O)}for(let b=0,S=f;b<S;b++){let A=b*3,_=l.elements[A+0],x=l.elements[A+1],P=l.elements[A+2];this._indexAttribute.setX(A+0,_),this._indexAttribute.setX(A+1,x),this._indexAttribute.setX(A+2,P)}}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 Gn(this._shape,this._curveSegments);return e.userData=Oo(this.userData),e}};import{BufferAttribute as Ga,BufferGeometry as qw}from"three";var Da=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*Da.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*Da.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)}},Ri=Da;Ri.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Sc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Rn=class extends qw{constructor(e,t,o=0,i=12,s=3,l=Ce.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(x=>{let P=x.extractShapePointsToFlatArray([],i),O=[];for(let I=P.length-1;I>=1;I-=2){let T=P[I-1],N=P[I-0];O.push(T,N)}return O}),a=Io({windingRule:l,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),d=Io({windingRule:Ce.ODD,elementType:He.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 x=0;x<d.elements.length;x++){let P=d.elements[x],O=x%2===0?a.vertexCount:0;a.elements.push(P+O)}for(let x=0;x<d.vertexIndices.length;x++){let P=d.vertexIndices[x],O=a.vertexCount;a.vertexIndices.push(P+O)}for(let x=0;x<d.vertices.length;x++){let P=d.vertices[x];a.vertices.push(P)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let x=0,P=a.vertexCount;x<P;x++){let O=x*2,I=a.vertices[O+0],T=a.vertices[O+1];I<f&&(f=I),I>m&&(m=I),T<h&&(h=T),T>y&&(y=T)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h;let g=a.vertexCount*2*(2+this._bevelSegments);this._buffer=new Ri(g);let v=[],w=[];for(let x=a.elementCount-1;x>=0;x--){let P=x>=p,O=x*2,I=a.elements[O+0],T=a.elements[O+1],N=I+T,L={start:I,count:T,normals:[],continuous:[],concave:[]},U=I,K=N-1,J=I+1,ie=this._shape.roundedCurves.length;do{let j=U-I,M=a.vertices[K*2+0],B=a.vertices[K*2+1],D=a.vertices[U*2+0],F=a.vertices[U*2+1],Y=a.vertices[J*2+0],k=a.vertices[J*2+1],V=D-M,G=F-B,H=Math.sqrt(V*V+G*G);V/=H,G/=H;let $=D-Y,ee=F-k,se=Math.sqrt($*$+ee*ee);$/=se,ee/=se,L.normals[j*2+0]=-ee,L.normals[j*2+1]=$,L.concave[j]=V*ee-G*$>0;let te=a.vertexIndices[U];if(Array.isArray(te))L.continuous[j]=!1;else{let[re,oe]=this._shape.getCurveIndexFromVertexId(te-1,!0);if(oe>0&&oe<1)L.continuous[j]=!0;else{let Z=oe===1?re+1:re-1;Z=(Z+ie)%ie;let me=oe===1?0:1,de=this._shape.roundedCurves[re].getTangent(oe),he=this._shape.roundedCurves[Z].getTangent(me);L.continuous[j]=de.dot(he)>.95}}P&&(L.normals[j*2+0]*=-1,L.normals[j*2+1]*=-1),[K,U,J]=[U,J,J+1],J>=N&&(J-=T)}while(J!==I+1);let z=[];z.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(I*2,N*2),vertexCount:T,vertexIndices:new Array(T).fill(!0).map((j,M)=>[M,M]),elements:[0,T],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(I*2,N*2)});for(let j=1;j<=this._bevelSegments;j++){let M=j/this._bevelSegments*Math.PI/2,B=(1-Math.cos(M))*this._bevelSize,D=[],F=[],Y=[],k=[],V=0;for(let H=0;H<T;H++){let $=H*2,ee=(H-1+T)%T*2,se=a.vertices[L.start*2+$+0],te=a.vertices[L.start*2+$+1],re=-L.normals[ee+0]*B,oe=-L.normals[ee+1]*B,Z=-L.normals[$+0]*B,me=-L.normals[$+1]*B;if(L.concave[H]||!L.concave[H]&&P){let de=Math.atan2(oe,re),he=Math.atan2(me,Z);he>de&&(he-=Math.PI*2);let st=he-de;if(L.continuous[H]||P){let be=de+st/2,Pe=Math.cos(be)*B,Ie=Math.sin(be)*B;D[2*V+0]=se+Pe*(P?-1:1),D[2*V+1]=te+Ie*(P?-1:1),k[V]=H,V++}else{let be=Math.max(1,Math.floor(i/4*Math.abs(st)/Math.PI));for(let Pe=0;Pe<=be;Pe++){let Ie=de+st*(Pe/be),gt=Math.cos(Ie)*B,kr=Math.sin(Ie)*B;D[2*V+0]=se+gt,D[2*V+1]=te+kr,k[V]=H,V++}}}else D[2*V+0]=se+re,D[2*V+1]=te+oe,k[V]=H,F[H]=V,V++,D[2*V+0]=se,D[2*V+1]=te,k[V]=H,V++,D[2*V+0]=se+Z,D[2*V+1]=te+me,k[V]=H,Y[H]=V,V++}let G=Io({windingRule:Ce.POSITIVE,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:H=>{let ee=H.Org.idx,se=k[ee],te=k[(ee+1)%k.length];H.idx=[se,te],H.Sym.idx=[te,se]},vertexIdCallback:H=>{let $=H.Lprev.idx;return[$?$[1]:0,H.idx[0]]}});if(!G)throw console.log("Error"),new Error(`error generating bevel geometry for ${j}'th loop`);if(!G.vertexCount)break;for(let H=0;H<G.vertexIndices.length;H++){let[$,ee]=G.vertexIndices[H];if($===ee)continue;let se=ee;ee<$&&(se+=T);for(let te=$;te<se;te++){let re=te%T,oe=(te+1)%T;if(!L.continuous[re]||!L.continuous[oe]){G.vertexIndices[H]=[$,re],G.vertexIndices.splice(H+1,0,[oe,ee]),G.vertices.splice((H+1)*2,0,G.vertices[H*2],G.vertices[H*2+1]);break}}}z.push({bevelI:j,angle:M,size:B,boundary:G,reverseMap:k,insetPoints:D})}let W=(j,M,B)=>{let D=0,F=j.boundary.vertexIndices.length;for(;D<F&&B(j.boundary.vertexIndices[M]);)M=(M+1)%F,D++;return D},q=v.length;for(let j=1;j<z.length;j++){let M=z[j-1],B=z[j],D=M.boundary.vertexIndices.length,F=B.boundary.vertexIndices.length;if(!D||!F)break;let Y=L.concave.length,k=0,V=Sc(k,T);for(;!M.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=Sc(k,T);let G=M.boundary.vertexIndices.findIndex(V),H=B.boundary.vertexIndices.findIndex(V);do G=(G+1)%D;while(V(M.boundary.vertexIndices[G]));do H=(H+1)%F;while(V(B.boundary.vertexIndices[H]));k=(k+1)%T;let $=k,ee=this.buildBevelVert(L,M,(G-1+D)%D),se=this.buildBevelVert(L,B,(H-1+F)%F),te=ee,re=se,oe,Z,me=!1;do{V=Sc(k,T);let de=W(M,G,V),he=W(B,H,V),st=me;if(me=!1,de&&!he){for(let be=0;be<de;be++)oe=this.buildBevelVert(L,M,(G+be)%D,be/(de-1)),v.push(te.topN,oe.topP,re.topN),v.push(oe.bottomP,te.bottomN,re.bottomN),te=oe;me=!0}else if(!de&&he)for(let be=0;be<he;be++)Z=this.buildBevelVert(L,B,(H+be)%F,be/(he-1)),v.push(re.topN,te.topP,Z.topP),v.push(te.bottomP,re.bottomN,Z.bottomP),re=Z;else if(de&&he)if(oe=this.buildBevelVert(L,M,G,0),Z=this.buildBevelVert(L,B,H,0),st?(v.push(te.topN,Z.topP,re.topN),v.push(te.topN,oe.topP,Z.topP),v.push(Z.bottomP,te.bottomN,re.bottomN),v.push(Z.bottomP,oe.bottomP,te.bottomN)):(v.push(re.topN,te.topN,oe.topP),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,te.bottomN,re.bottomN),v.push(oe.bottomP,re.bottomN,Z.bottomP)),te=oe,re=Z,de===he)for(let be=1;be<de;be++)oe=this.buildBevelVert(L,M,(G+be)%D,be/(de-1)),Z=this.buildBevelVert(L,B,(H+be)%F,be/(he-1)),v.push(te.topN,oe.topP,re.topN),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,te.bottomN,re.bottomN),v.push(oe.bottomP,re.bottomN,Z.bottomP),te=oe,re=Z;else if(de>he){let be=de/he,Pe=0;for(let Ie=1;Ie<de;Ie++)oe=this.buildBevelVert(L,M,(G+Ie)%D,Ie/(de-1)),v.push(te.topN,oe.topP,re.topN),v.push(oe.bottomP,te.bottomN,re.bottomN),te=oe,Ie>(Pe+1)*be&&(Pe++,Z=this.buildBevelVert(L,B,(H+Pe)%F,Pe/(he-1)),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,re.bottomN,Z.bottomP),re=Z)}else{let be=he/de,Pe=0;for(let Ie=1;Ie<he;Ie++)Z=this.buildBevelVert(L,B,(H+Ie)%F,Ie/(he-1)),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,re.bottomN,Z.bottomP),re=Z,Ie>(Pe+1)*be&&(Pe++,oe=this.buildBevelVert(L,M,(G+Pe)%D,Pe/(de-1)),v.push(te.topN,oe.topP,re.topN),v.push(oe.bottomP,te.bottomN,re.bottomN),te=oe)}G=(G+de)%D,H=(H+he)%F,k=(k+1)%Y}while(k!==$)}{let j=z[0];for(let M=0,B=j.boundary.vertexCount;M<B;M++){let D=this.buildBevelVert(L,j,M),F=this.buildBevelVert(L,j,(M+1)%B);v.push(F.topP,D.topN,D.bottomN),v.push(F.topP,D.bottomN,F.bottomP)}}if(P){let j=[];for(let M=v.length-1;M>=q+2;M-=3){let B=v[M-2],D=v[M-1],F=v[M-0];j.push(F,D,B)}v.splice(q,v.length-q,...j)}if(P){let j=[];for(let M=z[z.length-1].boundary.vertices.length-1;M>=1;M-=2){let B=z[z.length-1].boundary.vertices[M-1],D=z[z.length-1].boundary.vertices[M-0];j.push(B,D)}w.push(j)}if(!P){let j=z[z.length-1],M=Io({windingRule:z.length>1?Ce.POSITIVE:Ce.ODD,elementType:He.POLYGONS,vertexSize:2,strict:!0,contours:[j.insetPoints,...w]});if(!M)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:v.length});for(let B=0;B<M.elementCount*3;B+=3){let D=this.buildSurfaceVert(M,M.elements[B+0]),F=this.buildSurfaceVert(M,M.elements[B+1]),Y=this.buildSurfaceVert(M,M.elements[B+2]);v.push(D.top,F.top,Y.top),v.push(Y.bottom,F.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Ga(Uint32Array.from(v),1),S=new Ga(this._buffer.positions,3),A=new Ga(this._buffer.normals,3),_=new Ga(this._buffer.uvs,2);S.needsUpdate=!0,A.needsUpdate=!0,_.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",A),this.setAttribute("uv",_),this.setIndex(b)}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],b=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,A=(w-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],P=e.normals[g+0],O=e.normals[g+1];if(p){let U=P-_,K=O-x;_=_+U*(1-i),x=x+K*(1-i);let J=Math.sqrt(_*_+x*x);_/=J,x/=J}let I=this._buffer.get(d?2:4),T=I*3,N=I*2,L={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[T+0]=v,this._buffer.positions[T+1]=w,this._buffer.positions[T+2]=this._depth-b,this._buffer.normals[T+0]=_*f,this._buffer.normals[T+1]=x*f,this._buffer.normals[T+2]=m,this._buffer.uvs[N+0]=S,this._buffer.uvs[N+1]=A,this._buffer.positions[T+3]=v,this._buffer.positions[T+4]=w,this._buffer.positions[T+5]=b,this._buffer.normals[T+3]=_*f,this._buffer.normals[T+4]=x*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[N+2]=A,this._buffer.uvs[N+3]=S,d||(I+=2,T+=6,N+=4,L.topP=I+0,L.bottomP=I+1,this._buffer.positions[T+0]=v,this._buffer.positions[T+1]=w,this._buffer.positions[T+2]=this._depth-b,this._buffer.normals[T+0]=P*f,this._buffer.normals[T+1]=O*f,this._buffer.normals[T+2]=m,this._buffer.uvs[N+0]=S,this._buffer.uvs[N+1]=A,this._buffer.positions[T+3]=v,this._buffer.positions[T+4]=w,this._buffer.positions[T+5]=b,this._buffer.normals[T+3]=P*f,this._buffer.normals[T+4]=O*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[N+2]=A,this._buffer.uvs[N+3]=S),this.vertexCache[s]=L,L}clone(){let e=new Rn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(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:Ce.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 Gn(n.shape,o,{windingRule:s}):l=new Rn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Mm,Vector2 as Bm}from"three";var Dm=Math.PI*2,Gm=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=$w(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 $w(n,r,e,t,o,i){if(t>=Dm)return o>30||o%4===0?(Xw(n,r,e,i),Math.round(o/4)):Lm(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=Pm({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?Yw(n,s.x,s.y,u,o,r,e,i):Lm(n,t,o,r,e,i)}function Yw(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(Vn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=Vn(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?Rm(n,i,s,l):n.addPoint(Vn(0,0)),c}function Lm(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(Vn(u,a))}return r<Dm?i>0?Rm(n,t,o,i):n.addPoint(Vn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Vm(n,t,o,i)),1}function Xw(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(Ra(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Ra(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Ra(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Ra(o,i-e,o+l,i-e,o-l,i-e)),t>0&&Vm(n,r,e,t)}function Vn(n,r){return new Kt(Mm.generateUUID(),new Bm(n,r))}function Ra(n,r,e,t,o,i){let s=Vn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Rm(n,r,e,t){jm(n,r,e,t).forEach(i=>n.addPoint(i))}function Vm(n,r,e,t){let o=jm(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function jm(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Bm(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=Mm.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 Kw,Float32BufferAttribute as wc,Vector3 as Fm}from"three";var Um=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 Co(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Co=class extends Kw{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 Fm,y=new Fm,g=h(),v=h(),w=h(),b,S,A,_,x,P,O,I,T=h(),N=h(),L=h(),U=h(),K=h(),J=h(),ie=h(),z=h(),W=t-2*c+.001,q=W/s,j=Math.ceil(l*s),M=j+1,B=W/j,D=-W/2,F=a+1,Y=2*Math.PI/a,k=Math.PI/2/p,V=.01,G=Math.min((1-d/100)*c,c-V),H=c-G,$=0,ee=2,se=p*ee+ee,te=F*se/ee,re=te+F*M,oe=F*(M+se),[Z,me,de]=[3,3,2].map(ke=>Array(oe*ke).fill(0)),he=[],st=i-c;function be(ke,It){let nr=Math.PI/2;P=It*B,I=2*Math.PI*(P%q)/q+nr,P+=D,O=Math.sin(I)*st,x=Math.cos(I)*st,r?ke.set(x,O,P):ke.set(x,P,O)}be(y,-1e-10),be(g,0),T.copy(y),be(y,1);let Pe=y.distanceTo(g),Ie=m?0:H+G,gt=Pe*j+2*Ie,kr=G,Bt=gt-Ie;for(let ke=0;ke<=j;ke++){be(v,ke),z.subVectors(v,T).normalize(),T.copy(v),J.copy(v).setComponent(+r+1,0).normalize(),ie.crossVectors(z,J).normalize();let It=ke===0,nr=ke===j,ky=It?3*Math.PI/2:k,Hy=It?kr:Bt,Wy=It?F:re,qy=It?0:oe-F,$y=z.clone().multiplyScalar(It?-H:H).add(v),Yy=z.clone().multiplyScalar(It?-1:1).normalize();for(let Pr=0;Pr<F;Pr++){let Id=Pr*Y;if(N.addVectors(y.copy(J).multiplyScalar(c*Math.cos(Id)),g.copy(ie).multiplyScalar(c*Math.sin(Id))),L.copy(N).normalize(),It||nr){m||($=qy+Pr,[0,1,2].forEach(xt=>{Z[$*3+xt]=$y.getComponent(xt),me[$*3+xt]=Yy.getComponent(xt)}),de[$*2]=+nr,de[$*2+1]=Pr/a),g.copy(L).multiplyScalar(G),w.addVectors(v,g);for(let xt=0;xt<p;xt++){let Sl=xt*k+ky;U.addVectors(y.copy(z).multiplyScalar(H*Math.sin(Sl)),g.copy(L).multiplyScalar(H*Math.cos(Sl))),K.copy(U).normalize(),g.addVectors(w,U),U.normalize(),$=Wy+xt*F+Pr,[0,1,2].forEach(_s=>{Z[$*3+_s]=g.getComponent(_s),me[$*3+_s]=K.getComponent(_s)});let Xy=+It+Math.sin(Sl);de[$*2]=(Hy+H*Xy)/gt,de[$*2+1]=Pr/a}}g.addVectors(v,N),$=te+ke*F+Pr,[0,1,2].forEach(xt=>{Z[$*3+xt]=g.getComponent(xt),me[$*3+xt]=L.getComponent(xt)}),de[$*2]=(Ie+ke*Pe)/gt,de[$*2+1]=Pr/a}}let Wo=M+2*p+ee,vl=1,[bl,pi]=[+m,Wo-1];f&&(pi-=1);for(let ke=bl;ke<=pi-1;ke++){let It=m&&ke===pi-1;for(let nr=0;nr<F-1;nr++)b=ke*F+nr,S=b+1,A=(It?nr:b)+F,_=(It?nr+1:S)+F,ke===0?he.push(S,_,A):ke===Wo-2?he.push(b,S,A):he.push(b,S,A,S,_,A)}this.setIndex(he),this.setAttribute("position",new wc(Z,3)),this.setAttribute("normal",new wc(me,3)),this.setAttribute("uv",new wc(de,2))}};import{IcosahedronGeometry as Zw}from"three";var zm=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 Vi(r*.5,i,s):new Zw(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Vi=class extends io{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 Vi(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as Qw,Shape as Jw}from"three";var km=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 Jw;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 Qw(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Xm,BufferGeometryLoader as c_,Vector3 as d_,BoxGeometry as Km}from"three";import{BufferGeometry as i_,Vector2 as Oc,Vector3 as Ym}from"three";import{Box3 as e_,BufferAttribute as ji,BufferGeometry as Hm,Color as qm,EventDispatcher as t_,Float32BufferAttribute as jn,Matrix3 as Wm,Matrix4 as $m,MathUtils as r_,Object3D as o_,Sphere as n_,Vector2 as Vt,Vector3 as lt}from"three";var mr=new $m,_c=new o_,Va=new lt,ao=class extends t_{constructor(){super(),this.uuid=r_.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 Wm().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 mr.makeRotationX(r),this.applyMatrix4(mr),this}rotateY(r){return mr.makeRotationY(r),this.applyMatrix4(mr),this}rotateZ(r){return mr.makeRotationZ(r),this.applyMatrix4(mr),this}translate(r,e,t){return mr.makeTranslation(r,e,t),this.applyMatrix4(mr),this}scale(r,e,t){return mr.makeScale(r,e,t),this.applyMatrix4(mr),this}lookAt(r){return _c.lookAt(r),_c.updateMatrix(),this.applyMatrix4(_c.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 lt().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new qm().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 lt().fromBufferAttribute(s,p),new lt().fromBufferAttribute(s,f),new lt().fromBufferAttribute(s,m)],v=new Fn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Vt().fromBufferAttribute(c,p),new Vt().fromBufferAttribute(c,f),new Vt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Vt().fromBufferAttribute(u,p),new Vt().fromBufferAttribute(u,f),new Vt().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(Va).negate(),this.translate(Va.x,Va.y,Va.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new $m;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 lt,e=new lt;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 lt;if(r){let t=new lt,o=new lt;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 ao;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 lt,a={a:new lt,b:new lt,c:new lt};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 e_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new n_),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 Wm().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 Fn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let b=0,S=g.length;b<S;b++)h=g[b].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),w.vertexNormals.push(h);w.color.copy(m.color);for(let b=0,S=v.length;b<S;b++)y=v[b],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,b=g.length;w<b;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 lt(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,b=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,A=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,w),_=a(_,5,b),_=a(_,6,S),_=a(_,7,A),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)),b){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&t.push(p(h.color)),A){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 ao().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,b=g.length;w<b;w++){let S=g[w];v.push(S.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 Tc().fromGeometry(this),e=new Hm,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",new ji(t,3).copyVector3sArray(r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",new ji(o,3).copyVector3sArray(r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",new ji(o,3).copyColorsArray(r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",new ji(o,2).copyVector2sArray(r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",new ji(o,2).copyVector2sArray(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 jn(u.data.length*3,3);a.name=u.name,i.push(a.copyVector3sArray(u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new jn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(r.skinIndices))}if(r.skinWeights.length>0){let o=new jn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(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 Hm,t=r.geometry;if(r.isPoints||r.isLine){let o=new jn(t.vertices.length*3,3),i=new jn(t.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(t.vertices)),e.setAttribute("color",i.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new jn(t.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(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}};ao.prototype.isGeometry=!0;var Tc=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 S=v.normal;this.normals.push(S,S,S)}let b=v.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Vt,new Vt,new Vt))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Vt,new Vt,new Vt))}for(let S=0;S<c;S++){let A=l[S].vertices;u[S].data.push(A[v.a],A[v.b],A[v.c])}for(let S=0;S<d;S++){let A=a[S].vertexNormals[g];p[S].data.push(A.a,A.b,A.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}},Fn=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 lt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new qm,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}};var s_=["a","b","c"];function a_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ac(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Pc(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 l_(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],Pc(s.a,s.b,n,t,s,e),Pc(s.b,s.c,n,t,s,e),Pc(s.c,s.a,n,t,s,e)}function ja(n,r,e,t,o){n.push(new Fn(r,e,t,void 0,void 0,o))}function Un(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Fa(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ua=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof i_?r=new ao().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 Ym,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;l_(c,u,p,f);let m=[],h,y,g,v,w,b,S;for(let k of Array.from(f.keys())){for(y=f.get(k),g=new Ym,w=3/8,b=1/8,S=y.faces.length,S!=2&&(w=.5,b=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[a_(v,s_[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(b),g.add(e),y.newEdge=m.length,m.push(g)}let A,_,x,P,O,I,T,N=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],O=p[o].edges,t=O.length,t==3?A=3/16:t>3&&(A=3/(8*t)),_=1-t*Number(A),x=A,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),T=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)P=O[s],h=P.a!==I?P.a:P.b,e.add(h);e.multiplyScalar(Number(x)),T.add(e),N.push(T)}let L=N.concat(m),U=N.length,K,J,ie,z=[],W=[],q,j,M,B,D=new Oc,F=new Oc,Y=new Oc;for(o=0,i=u.length;o<i;o++)v=u[o],K=Number(Ac(v.a,v.b,f).newEdge)+U,J=Number(Ac(v.b,v.c,f).newEdge)+U,ie=Number(Ac(v.c,v.a,f).newEdge)+U,ja(z,K,J,ie,v.materialIndex),ja(z,v.a,K,ie,v.materialIndex),ja(z,v.b,J,K,v.materialIndex),ja(z,v.c,ie,J,v.materialIndex),d&&(q=a[o],j=q[0],M=q[1],B=q[2],D.set(Un(j.x,M.x),Un(j.y,M.y)),F.set(Un(M.x,B.x),Un(M.y,B.y)),Y.set(Un(j.x,B.x),Un(j.y,B.y)),Fa(W,D,F,Y),Fa(W,j,D,Y),Fa(W,M,F,D),Fa(W,B,Y,F));r.vertices=L,r.faces=z,d&&(r.faceVertexUvs[0]=W)}};var We=new d_,Zm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Xm().copy(new Km(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 Xm().copy(new Km(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 Ua(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 c_(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 Qm=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 u_,Float32BufferAttribute as Ic,Vector2 as hr,Vector3 as Ze}from"three";var Jm=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 Nc(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Fi(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Cc(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 p_(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Nc=class extends u_{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),b=new Ze(0,f,0),S=new hr(r,-f),A=new hr(h,-f),_=new hr(0,b.y).sub(A),x=new hr(0,b.y).sub(S),P=new hr(_.y,-_.x).normalize(),O=new hr(x.y,-x.x).normalize(),T=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,T);let N;{let W=new Ze(P.x,P.y,0),q=new Ze(Math.cos(y)*W.x,W.y,Math.sin(y)*W.x);N=W.angleTo(q)}let L=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-N)/2),K=new Ze;if(!i){u.push(w.x,w.y,w.z),a.push(0,-1,0),d.push(0,0);let W=p++,q=[],j=S.clone(),M=L/Math.cos(Math.PI/t);j.x-=M;for(let B=0;B<t;B++){let D=B/t*Math.PI*2+m,F=new hr(Math.sin(D),Math.cos(D));Fi(j,F,K),u.push(K.x,K.y,K.z),a.push(0,-1,0),d.push(0,0),q.push(p++)}for(let B=0;B<q.length;B++)c.push(q[B],W,q[(B+1)%q.length])}let J=[];{let W=new Ze,q=new Ze,j=new Ze,M=new Ze,B=new Ze,D=new Ze;for(let F=0;F<t;F++){let Y=F/t*Math.PI*2+m,k=(F+.5)/t*Math.PI*2+m,V=(F+1)/t*Math.PI*2+m,G=new hr(Math.sin(Y),Math.cos(Y)),H=new hr(Math.sin(k),Math.cos(k)),$=new hr(Math.sin(V),Math.cos(V));Fi(S,G,q),Fi(S,$,j),Fi(P,H,W),Cc(b,q,j,U,U,M),u.push(M.x,M.y,M.z),Cc(q,b,j,U,L,B),u.push(B.x,B.y,B.z),Cc(j,q,b,L,U,D),u.push(D.x,D.y,D.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),d.push(0,0),d.push(0,0),d.push(0,0);let ee=p++,se=p++,te=p++;if(c.push(ee,se,te),s>0){{let Z=q.clone().add(j).multiplyScalar(.5),me=b.clone().sub(Z).normalize(),he=w.clone().sub(Z).normalize().add(me).normalize().multiplyScalar(-1),st=D.clone().sub(B);ie(Z,st,he,_.angle())}let re,oe;{let Z=new Ze;Fi(O,$,Z);let me=D.clone().add(M).multiplyScalar(.5);me=p_(me,j,b);let de=D.clone().sub(M);[re,oe]=ie(me,de,Z,N,M.y)}{let Z=re,me=Z.clone().setY(0).normalize(),de=new Ze(0,-1,0),he=me.clone().cross(de);z(Z,me,de,he)}J.concat(oe);{let Z=_.angle(),me=Math.PI-Z,de=b.clone();de.y-=s/Math.sin(Z-Math.PI/2);let he=new Ze,st=[];for(let Pe=0;Pe<l;Pe++){let Ie=[],gt=Math.PI/2-me*Pe/l,kr=Math.cos(gt),Bt=Math.sin(gt),Wo=k;for(let vl=0;vl<=Pe;vl++){let bl=Math.cos(Wo),pi=Math.sin(Wo);W.x=kr*pi,W.y=Bt,W.z=kr*bl,he.copy(de).addScaledVector(W,s),u.push(he.x,he.y,he.z),a.push(W.x,W.y,W.z),d.push(0,0),Ie.push(p++),Wo+=Math.PI*2/Pe/t}st.push(Ie)}oe.reverse(),st.push(oe);let be=st.length-1;for(let Pe=0;Pe<be;Pe++){let Ie=st[Pe],gt=st[Pe+1],kr=Ie.length-1;c.push(gt[1],Ie[0],gt[0]);for(let Bt=1;Bt<=kr;Bt++)c.push(Ie[Bt],Ie[Bt-1],gt[Bt]),c.push(gt[Bt+1],Ie[Bt],gt[Bt])}}}}}this.setIndex(c),this.setAttribute("position",new Ic(u,3)),this.setAttribute("normal",new Ic(a,3)),this.setAttribute("uv",new Ic(d,2));function ie(W,q,j,M,B){let D=-M/2,F=(Math.PI-M)/2,Y=q.clone().normalize().cross(j);W.addScaledVector(j,-s/Math.sin(F));let k=new Ze,V=new Ze,G=1,H=p,$=[];for(let ee=0;ee<=l;ee++){let se=D+ee/l*M;V.set(0,0,0),V.addScaledVector(Y,Math.sin(se)),V.addScaledVector(j,Math.cos(se));for(let te=0;te<=G;te++){let re=te/G-.5;if(k.copy(W),k.addScaledVector(q,re),k.addScaledVector(V,s),B!=null){let oe=Math.max(0,k.y-B);k.addScaledVector(q,-oe/q.y)}u.push(k.x,k.y,k.z),a.push(V.x,V.y,V.z),d.push(0,0),te===0&&$.push(p),p++}}for(let ee=0;ee<l;ee++)for(let se=0;se<G;se++){let te=H+se+(G+1)*ee,re=te+(G+1),oe=re+1,Z=te+1;c.push(te,re,Z),c.push(re,oe,Z)}return[W.clone().addScaledVector(q,.5),$]}function z(W,q,j,M){let B=Math.PI/2,D=x.angle()-B,F=[],Y=new Ze,k=new Ze;for(let G=0;G<=l;G++){let H=[],$=G/l;for(let ee=0;ee<=G;ee++){let te=((G?ee/G:0)-.5)*v,re=Math.cos(te),oe=Math.sin(te),Z=Math.atan(Math.tan(D)*re),me=(B+Z)*$,de=Math.cos(me),he=Math.sin(me);Y.set(0,0,0),Y.addScaledVector(q,he*re),Y.addScaledVector(j,de),Y.addScaledVector(M,he*oe),k.copy(W).addScaledVector(Y,s),u.push(k.x,k.y,k.z),a.push(Y.x,Y.y,Y.z),d.push(0,0),H.push(p++)}F.push(H)}let V=F.length-1;for(let G=0;G<V;G++){let H=F[G],$=F[G+1],ee=H.length-1;c.push(H[0],$[1],$[0]);for(let se=1;se<=ee;se++)c.push(H[se-1],H[se],$[se]),c.push(H[se],$[se+1],$[se])}}}};var eh=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(b,S,A){return S>e&&A>t?Math.min(b*e/S,b*t/A):S>e?b*e/S:A>t?b*t/A:b}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 b=0,S=r.points.length;b<S;b++)r.points[b].roundness=f[b],b>0&&f[b]!==f[b-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 f_}from"three";var th=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 f_(.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 m_}from"three";var rh=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 m_(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as h_,Float32BufferAttribute as Ec,Vector3 as y_}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,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 Lc(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Lc=class extends h_{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=(k=0,V=0,G=0)=>new y_(k,V,G),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],w=-g,b=+g,[S,A,_]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],x=(k,V=!1)=>Math.sin(k-Math.PI/(1+ +V)),P=(k,V=!1)=>Math.cos(k-Math.PI/(1+ +V));_.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-v,I=S.z-a;o<=p?(_.z=Math.min(O,I),_.z==I&&(_.y-=(O-I)/Math.tan(p-o))):A.z=Math.min(A.z-O-v,S.z-a),m.subVectors(S,A),h.subVectors(_,A);let T=Math.min(m.length(),h.length())*i/100,N=T*Math.tan(o/2),L=T/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(L).add(A);m.set(0,x(o,!0),P(o,!0)),d.push([_,m.clone()]);let K=(Math.PI-o)/s;for(let k=0;k<=s;k++){let V=p+o+k*K;m.set(0,Math.sin(V)*N,Math.cos(V)*N),m.add(U),h.set(0,x(V),P(V)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let J=Math.sin(K/2)*N*2,ie=d.length-1,z=d[0][0].distanceTo(d[1][0]),W=d[ie-1][0].distanceTo(d[ie][0]),q=z+J*s+W;d[0].push(1);for(let k=0;k<=s;k++)d[k+1].push(1-(z+k*J)/q);d[ie].push(0);let[j,M,B]=d[0],D,F,Y;for(let k=1;k<d.length;k++)[D,F,Y]=d[k],l.push(w,j.y,j.z,w,D.y,D.z,b,j.y,j.z,b,j.y,j.z,w,D.y,D.z,b,D.y,D.z),c.push(0,M.y,M.z,0,F.y,F.z,0,M.y,M.z,0,M.y,M.z,0,F.y,F.z,0,F.y,F.z),u.push(0,B,0,Y,1,B,1,B,0,Y,1,Y),[j,M,B]=[D,F,Y];this.setAttribute("position",new Ec(l,3)),this.setAttribute("normal",new Ec(c,3)),this.setAttribute("uv",new Ec(u,2))}};var nh=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 b=0;b<o;b++){let S=h*b,A=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(A,_))}}else for(let b=0;b<o;b++){let S=f+Math.cos(y)*d,A=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,A)),y+=h,S=f+Math.cos(y)*g,A=m+Math.sin(y)*v,b<=o,a.addPoint(a.createPoint(S,A)),y+=h}a.isClosed=!0;for(let b=0,S=a.points.length;b<S;b++)a.points[b].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 g_}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,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 g_(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var sh=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=x_(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 x_(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 Co(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as v_}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,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 v_(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var lh=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{BufferAttribute as ch,BufferGeometry as Mc}from"three";import{mergeBufferGeometries as b_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function S_(){let n=new Mc;return n.setAttribute("position",new ch(new Float32Array([]),3)),n.setIndex(new ch(new Uint16Array([]),1)),n}var w_=12,__=1,zn=class extends Mc{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=T_(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Se().fromShape(S));this.vectorShapes=v;let w=v.map(S=>_t.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Ce.NONZERO:Ce.ODD,subdivisions:this.isLowResolution&&s>0?__:w_}})),b=w.length?b_(w):S_();b.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([S,A])=>{this.setAttribute(S,A)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Zr(new Mc,zn.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 T_(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDescriptor;var ng=Object.getOwnPropertyNames;var ig=Object.getPrototypeOf,sg=Object.prototype.hasOwnProperty;var _l=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),ag=(n,r)=>{for(var e in r)wl(n,e,{get:r[e],enumerable:!0})},lg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of ng(r))!sg.call(n,o)&&o!==e&&wl(n,o,{get:()=>r[o],enumerable:!(t=og(r,o))||t.enumerable});return n};var Tl=(n,r,e)=>(e=n!=null?rg(ig(n)):{},lg(r||!n||!n.__esModule?wl(e,"default",{value:n,enumerable:!0}):e,n));var Zf=_l((Jl,Kf)=>{(function(n,r){typeof Jl=="object"?Kf.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Jl,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 rm=_l((Aa,tm)=>{(function(n,r){typeof Aa=="object"&&typeof tm<"u"?r(Aa):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Aa,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 b=[],S=[],A=[],_=e==="f"?w:v,x=h=p=0;x<w;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)A[x]=new Array(v).fill(0);var P,O=new Array(v).fill(0);for(x=0;x<w;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(b[x]=p,m=0,c=x+1,s=x;s<w;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<w;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<w;l++)S[l][s]=S[l][s]+d*S[l][x]}for(O[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=d-p,s=c;s<v;s++)b[s]=S[x][s]/f;for(s=c;s<w;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*b[l]}}h<(y=Math.abs(O[x])+Math.abs(b[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)A[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*A[l][s];for(l=c;l<v;l++)A[l][s]=A[l][s]+m*A[l][x]}}for(s=c;s<v;s++)A[x][s]=0,A[s][x]=0;A[x][x]=1,p=b[x],c=x}if(e){if(e==="f")for(x=v;x<w;x++){for(s=v;s<w;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=O[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<w;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<w;l++)S[l][s]=S[l][s]+d*S[l][x]}for(s=x;s<w;s++)S[s][x]=S[s][x]/p}else for(s=x;s<w;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(P=!1,c=l;0<=c;c--){if(Math.abs(b[c])<=o){P=!0;break}if(Math.abs(O[c-1])<=o)break}if(!P){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*b[x],b[x]=a*b[x],!(Math.abs(d)<=o));x++)if(p=O[x],O[x]=Math.sqrt(d*d+p*p),a=p/(f=O[x]),m=-d/f,e)for(s=0;s<w;s++)y=S[s][u],g=S[s][x],S[s][u]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=O[l],c===l){if(g<0&&(O[l]=-g,t))for(s=0;s<v;s++)A[s][l]=-A[s][l];break}for(h=O[c],d=(((y=O[l-1])-g)*(y+g)+((p=b[l-1])-(f=b[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=b[x],y=O[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(b[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=A[s][x-1],g=A[s][x],A[s][x-1]=h*a+g*m,A[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(O[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<w;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}b[c]=0,b[l]=d,O[l]=h}for(x=0;x<v;x++)O[x]<o&&(O[x]=0);return{u:S,q:O,v:A}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Rh=_l(tl=>{(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),b=w*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,A=(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=S,y._stop=A,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=A){p._ended(y);return}var x=y._node;if(p._webAudio){var P=function(){p._playLock=!1,_(),p._refreshBuffer(y);var N=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(N,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),b!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),b)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?P():(p._playLock=!0,p.once("resume",P),p._clearTimer(y._id))}else{var O=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 N=x.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(p._playLock=!0,_(),N.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),b):(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(L){p._emit("playerror",y._id,L)}};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)O();else{p._playLock=!0,p._state="loading";var T=function(){p._state="loaded",O(),x.removeEventListener(r._canPlayEvent,T,!1)};x.addEventListener(r._canPlayEvent,T,!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),b=Math.max(4,w>0?f/w:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var A=(Date.now()-S)/f;S=Date.now(),g+=v*A,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))},b)},_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,b=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),b)),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 b=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+b*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 tl<"u"&&(tl.Howler=r,tl.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)}})()});import{FileLoader as IA,Loader as CA}from"three";var Ee=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,Ee.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,Ee.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,Ee.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function fi(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"&&fi(t)}return Object.freeze(n)}function Nd(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 Ts(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function ir(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 Ed(){return typeof process<"u"}function Ld(n,r){for(let e of n)r(e.id,e.data)!==!0&&Ld(e.children,r)}function Md(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Md(e,r)}var Fe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Fe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)fi(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&&Md(o,t)}}traverse(e){Ld(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,Fe.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)=>Nd(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 ir(0,o,o);{let s=i[0].fi;return ir(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 ir(c,c+o,o)}else return ir(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 ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)fi(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,ye.prototype);let t=e;return Ed()||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 ir(0,t,t);{let i=o[0].fi;return ir(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 ir(l,l+t,t)}else return ir(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?Ts(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=Ts(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Ts(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}}},Nr;(t=>{function n(o,i){return mi(o,i)??o}t.apply=n;function r(o,i){return Al(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=Ol([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Nr||(Nr={}));function Ol(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=mi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Ol(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 cg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=mi(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 mi(n,r){if(!Xo(r))return r;if(n instanceof Fe){let e=Ol(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return cg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=mi(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 Al(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=mi(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 Al(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Xo(r))return r;if(!Xo(n))return Nr.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=Al(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Bd(n,r){let e={cur:[],result:[],len:0};return n=hi(n,r,e)??n,[n,e.result]}function Os(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function As(n){n&&(n.len-=1)}function dg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Dd(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=hi(i.data,r,Os(e,s));As(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Dd(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=hi(i.data,r,Os(e,s));return As(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 hi(n,r,e){if(n instanceof Fe){let t=Dd(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return ug(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=hi(i,r,Os(e,s));return As(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=hi(s,r,Os(e,i));As(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");dg(e)}return t}else return}}var Ps;(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})(Ps||(Ps={}));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 Fe||c instanceof ye||c instanceof Ee?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 Fe){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ee){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 Fe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}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 Pl;(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]=Bd(d,{[m.id]:h});d=g;for(let w of v){let b=w[w.length-1];w.splice(w.length-1,1),p.push({type:0,path:w,props:{[b]:h}}),f.push({type:0,path:w,props:{[b]: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})(Pl||(Pl={}));var Gd=Symbol(),pg=Symbol(),Cs=Symbol(),yo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Is);){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[Cs];t&&t(),delete this._children[r]}}}},Cl=class extends yo{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)}},Nl=class extends yo{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,Ee.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Rd={get(n,r){if(r===Cs)return()=>{n._parent=null};if(r===Gd)return n._current;if(r===pg)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=Ns(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]}}},fg={...Rd,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}},mg={...Rd,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 yo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Cs]=()=>{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=Ns(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 yo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Cs]=()=>{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=Ns(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 Il(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 Is=class extends yo{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){Il(this.ts,e,r),Il(this.actual,t,r),Il(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Ns(n,r,e){return e instanceof Fe?new Ko(n,r,e):e instanceof ye?new Zo(n,r,e):e instanceof Ee?new Proxy(new Nl(n,r,e),mg):e!==null&&typeof e=="object"?$o(e)?e:new Proxy(new Cl(n,r,e),fg):e}function El(n){let r=new Is(n);return[Ns(r,"",n),r]}function Qo(n,r){let[e,t]=El(n);return r(e),t.result()}function Ye(n){return n instanceof Ko||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[Gd]: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 Fe||i instanceof Ko)&&typeof s=="string")return i.data(s);if((i instanceof ye||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 Vd(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 sr(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 Es=class{},yi=class extends Es{constructor(e){super();this.id=e}},gi=class extends Es{constructor(e){super();this.data=e}};var Ml;try{Ml=new TextDecoder}catch{}var ne,qr,C=0;var qd=[],Bl=qd,Dl=0,vt={},we,Wr,Dt=0,ar=0,Ct,Er,ut=[],Oe,jd={useRecords:!1,mapsAsObjects:!0},xi=class{},Rl=new xi;Rl.name="MessagePack 0xC1";var Jo=!1,lr=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 Zd(()=>(Ms(),this?this.unpack(r,e):lr.prototype.unpack.call(jd,r,e)));qr=e>-1?e:r.length,C=0,Dl=0,ar=0,Wr=null,Bl=qd,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 lr){if(vt=this,this.structures)return we=this.structures,Ls();(!we||we.length>0)&&(we=[])}else vt=jd,(!we||we.length>0)&&(we=[]);return Ls()}unpackMultiple(r,e){let t,o=0;try{Jo=!0;let i=r.length,s=this?this.unpack(r,i):Gs.unpack(r,i);if(e){for(e(s);C<i;)if(o=C,e(Ls())===!1)return}else{for(t=[s];C<i;)o=C,t.push(Ls());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Jo=!1,Ms()}}_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 Ls(){try{if(!vt.trusted&&!Jo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Ge();if(C==qr)we.restoreStructures&&Fd(),we=null,ne=null,Er&&(Er=null);else if(C>qr){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&&Fd(),Ms(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Fd(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Ge(){let n=ne[C++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&$d()[n&63];return r?(r.read||(r.read=Vl(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[Xd()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}else if(n<192){let r=n-160;if(ar>=C)return Wr.slice(C-Dt,(C+=r)-Dt);if(ar==0&&qr<140){let e=r<16?jl(r):Yd(r);if(e!=null)return e}return Gl(r)}else{let r;switch(n){case 192:return null;case 193:return Ct?(r=Ge(),r>0?Ct[1].slice(Ct.position1,Ct.position1+=r):Ct[0].slice(Ct.position0,Ct.position0-=r)):Rl;case 194:return!1;case 195:return!0;case 196:return Ll(ne[C++]);case 197:return r=Oe.getUint16(C),C+=2,Ll(r);case 198:return r=Oe.getUint32(C),C+=4,Ll(r);case 199:return go(ne[C++]);case 200:return r=Oe.getUint16(C),C+=2,go(r);case 201:return r=Oe.getUint32(C),C+=4,go(r);case 202:if(r=Oe.getFloat32(C),vt.useFloat32>2){let e=Ds[(ne[C]&127)<<1|ne[C+1]>>7];return C+=4,(e*r+(r>0?.5:-.5)>>0)/e}return C+=4,r;case 203:return r=Oe.getFloat64(C),C+=8,r;case 204:return ne[C++];case 205:return r=Oe.getUint16(C),C+=2,r;case 206:return r=Oe.getUint32(C),C+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(C)*4294967296,r+=Oe.getUint32(C+4)):r=Oe.getBigUint64(C),C+=8,r;case 208:return Oe.getInt8(C++);case 209:return r=Oe.getInt16(C),C+=2,r;case 210:return r=Oe.getInt32(C),C+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(C)*4294967296,r+=Oe.getUint32(C+4)):r=Oe.getBigInt64(C),C+=8,r;case 212:if(r=ne[C++],r==114)return Wd(ne[C++]&63);{let e=ut[r];if(e)return e.read?(C++,e.read(Ge())):e.noBuffer?(C++,e()):e(ne.subarray(C,++C));throw new Error("Unknown extension "+r)}case 213:return r=ne[C],r==114?(C++,Wd(ne[C++]&63,ne[C++])):go(2);case 214:return go(4);case 215:return go(8);case 216:return go(16);case 217:return r=ne[C++],ar>=C?Wr.slice(C-Dt,(C+=r)-Dt):yg(r);case 218:return r=Oe.getUint16(C),C+=2,ar>=C?Wr.slice(C-Dt,(C+=r)-Dt):gg(r);case 219:return r=Oe.getUint32(C),C+=4,ar>=C?Wr.slice(C-Dt,(C+=r)-Dt):xg(r);case 220:return r=Oe.getUint16(C),C+=2,zd(r);case 221:return r=Oe.getUint32(C),C+=4,zd(r);case 222:return r=Oe.getUint16(C),C+=2,kd(r);case 223:return r=Oe.getUint32(C),C+=4,kd(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 hg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Vl(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>hg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ge);return n.highByte===0&&(n.read=Ud(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ge()}return t}return e.count=0,n.highByte===0?Ud(r,e):e}var Ud=(n,r)=>function(){let e=ne[C++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||$d()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Vl(o,n)),o.read()};function $d(){let n=Zd(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var Gl=Bs,yg=Bs,gg=Bs,xg=Bs;function Bs(n){let r;if(n<16&&(r=jl(n)))return r;if(n>64&&Ml)return Ml.decode(ne.subarray(C,C+=n));let e=C+n,t=[];for(r="";C<e;){let o=ne[C++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[C++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[C++]&63,s=ne[C++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[C++]&63,s=ne[C++]&63,l=ne[C++]&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 zd(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}function kd(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Xd()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}}var Xe=String.fromCharCode;function Yd(n){let r=C,e=new Array(n);for(let t=0;t<n;t++){let o=ne[C++];if((o&128)>0){C=r;return}e[t]=o}return Xe.apply(String,e)}function jl(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[C++];if((r&128)>1){C-=1;return}return Xe(r)}}else{let r=ne[C++],e=ne[C++];if((r&128)>0||(e&128)>0){C-=2;return}if(n<3)return Xe(r,e);let t=ne[C++];if((t&128)>0){C-=3;return}return Xe(r,e,t)}else{let r=ne[C++],e=ne[C++],t=ne[C++],o=ne[C++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){C-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[C++];if((i&128)>0){C-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[C++],s=ne[C++];if((i&128)>0||(s&128)>0){C-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[C++];if((l&128)>0){C-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[C++],s=ne[C++],l=ne[C++],c=ne[C++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){C-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[C++];if((u&128)>0){C-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[C++],a=ne[C++];if((u&128)>0||(a&128)>0){C-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[C++];if((d&128)>0){C-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[C++],a=ne[C++],d=ne[C++],p=ne[C++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){C-=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[C++];if((f&128)>0){C-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[C++],m=ne[C++];if((f&128)>0||(m&128)>0){C-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[C++];if((h&128)>0){C-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Ll(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,C,C+=n):ne.subarray(C,C+=n)}function go(n){let r=ne[C++];if(ut[r])return ut[r](ne.subarray(C,C+=n));throw new Error("Unknown extension type "+r)}var Hd=new Array(4096);function Xd(){let n=ne[C++];if(n>=160&&n<192){if(n=n-160,ar>=C)return Wr.slice(C-Dt,(C+=n)-Dt);if(!(ar==0&&qr<180))return Gl(n)}else return C--,Ge();let r=(n<<5^(n>1?Oe.getUint16(C):n>0?ne[C]:0))&4095,e=Hd[r],t=C,o=C+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 C=t,e.string;o-=3,t=C}for(e=[],Hd[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?jl(n):Yd(n);return l!=null?e.string=l:e.string=Gl(n)}var Wd=(n,r)=>{var e=Ge();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=Vl(e,t),e.read()},Kd=typeof self=="object"?self:global;ut[0]=()=>{};ut[0].noBuffer=!0;ut[101]=()=>{let n=Ge();return(Kd[n[0]]||Error)(n[1])};ut[105]=n=>{let r=Oe.getUint32(C-4);Er||(Er=new Map);let e=ne[C],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Er.set(r,o);let i=Ge();return o.used?Object.assign(t,i):(o.target=i,i)};ut[112]=n=>{let r=Oe.getUint32(C-4),e=Er.get(r);return e.used=!0,e.target};ut[115]=()=>new Set(Ge());var Fl=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ut[116]=n=>{let r=n[0],e=Fl[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Kd[e](Uint8Array.prototype.slice.call(n,1).buffer)};ut[120]=()=>{let n=Ge();return new RegExp(n[0],n[1])};ut[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=C;C+=r-4,Ct=[Ge(),Ge()],Ct.position0=0,Ct.position1=0;let t=C;C=e;try{return Ge()}finally{C=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 Zd(n){let r=qr,e=C,t=Dl,o=Dt,i=ar,s=Wr,l=Bl,c=Er,u=Ct,a=new Uint8Array(ne.slice(0,qr)),d=we,p=we.slice(0,we.length),f=vt,m=Jo,h=n();return qr=r,C=e,Dl=t,Dt=o,ar=i,Wr=s,Bl=l,Er=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 Ms(){ne=null,Er=null,we=null}function Qd(n){n.unpack?ut[n.type]=n.unpack:ut[n.type]=n}var Ds=new Array(147);for(let n=0;n<256;n++)Ds[n]=+("1e"+Math.floor(45.15-n*.30103));var Gs=new lr({useRecords:!1}),vg=Gs.unpack,bg=Gs.unpackMultiple,Sg=Gs.unpack,Rs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},wg=new Float32Array(1),MP=new Uint8Array(wg.buffer,0,4);var Vs;try{Vs=new TextEncoder}catch{}var js,zl,Fs=typeof Buffer<"u",Ul=Fs?Buffer.allocUnsafeSlow:Uint8Array,ru=Fs?Buffer:Uint8Array,Jd=Fs?4294967296:2144337920,R,Ve,E=0,cr,dr=null,_g=/[\u0080-\uFFFF]/,vi=Symbol("record-id"),xo=class extends lr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=ru.prototype.utf8Write?function(x,P,O){return R.utf8Write(x,P,O)}:Vs&&Vs.encodeInto?function(x,P){return Vs.encodeInto(x,R.subarray(P)).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,b=0;this.pack=this.encode=function(x,P){if(R||(R=new Ul(8192),Ve=new DataView(R.buffer,0,8192),E=0),cr=R.length-10,cr-E<2048?(R=new Ul(R.length),Ve=new DataView(R.buffer,0,R.length),cr=R.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(dr=["",""],R[E++]=214,R[E++]=98,dr.position=E-t,E+=4):dr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let O=o.sharedLength||0;if(O>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<O;I++){let T=o[I];if(!T)continue;let N,L=o.transitions;for(let U=0,K=T.length;U<K;U++){let J=T[U];N=L[J],N||(N=L[J]=Object.create(null)),L=N}L[vi]=I+64}c=O}d||(o.nextId=O+64)}i&&(i=!1),s=o||[];try{if(S(x),dr){Ve.setUint32(dr.position+t,E-dr.position-t);let O=dr;dr=null,S(O[0]),S(O[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>cr&&_(E),a.offset=E;let O=Og(R.subarray(t,E),l.idsToInsert);return l=null,O}return P&nu?(R.start=t,R.end=E,R):R.subarray(t,E)}finally{if(o){if(b<10&&b++,w>1e4)o.transitions=null,b=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let O=0,I=v.length;O<I;O++)v[O][vi]=0;v=[]}if(i&&a.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let I=R.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=O,I)}}P&Lg&&(E=t)}};let S=x=>{E>cr&&(R=_(E));var P=typeof x,O;if(P==="string"){let I=x.length;if(dr&&I>=8&&I<4096){let L=_g.test(x);dr[L?0:1]+=x,R[E++]=193,S(L?-I:I);return}let T;I<32?T=1:I<256?T=2:I<65536?T=3:T=5;let N=I*3;if(E+N>cr&&(R=_(E+N)),I<64||!u){let L,U,K,J=E+T;for(L=0;L<I;L++)U=x.charCodeAt(L),U<128?R[J++]=U:U<2048?(R[J++]=U>>6|192,R[J++]=U&63|128):(U&64512)===55296&&((K=x.charCodeAt(L+1))&64512)===56320?(U=65536+((U&1023)<<10)+(K&1023),L++,R[J++]=U>>18|240,R[J++]=U>>12&63|128,R[J++]=U>>6&63|128,R[J++]=U&63|128):(R[J++]=U>>12|224,R[J++]=U>>6&63|128,R[J++]=U&63|128);O=J-E-T}else O=u(x,E+T,N);O<32?R[E++]=160|O:O<256?(T<2&&R.copyWithin(E+2,E+1,E+1+O),R[E++]=217,R[E++]=O):O<65536?(T<3&&R.copyWithin(E+3,E+2,E+2+O),R[E++]=218,R[E++]=O>>8,R[E++]=O&255):(T<5&&R.copyWithin(E+5,E+3,E+3+O),R[E++]=219,Ve.setUint32(E,O),E+=4),E+=O}else if(P==="number")if(x>>>0===x)x<64?R[E++]=x:x<256?(R[E++]=204,R[E++]=x):x<65536?(R[E++]=205,R[E++]=x>>8,R[E++]=x&255):(R[E++]=206,Ve.setUint32(E,x),E+=4);else if(x>>0===x)x>=-32?R[E++]=256+x:x>=-128?(R[E++]=208,R[E++]=x+256):x>=-32768?(R[E++]=209,Ve.setInt16(E,x),E+=2):(R[E++]=210,Ve.setInt32(E,x),E+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){R[E++]=202,Ve.setFloat32(E,x);let T;if(I<4||(T=x*Ds[(R[E]&127)<<1|R[E+1]>>7])>>0===T){E+=4;return}else E--}R[E++]=203,Ve.setFloat64(E,x),E+=8}else if(P==="object")if(!x)R[E++]=192;else{if(l){let T=l.get(x);if(T){if(!T.id){let N=l.idsToInsert||(l.idsToInsert=[]);T.id=N.push(T)}R[E++]=214,R[E++]=112,Ve.setUint32(E,T.id),E+=4;return}else l.set(x,{offset:E-t})}let I=x.constructor;if(I===Object)A(x,!0);else if(I===Array){O=x.length,O<16?R[E++]=144|O:O<65536?(R[E++]=220,R[E++]=O>>8,R[E++]=O&255):(R[E++]=221,Ve.setUint32(E,O),E+=4);for(let T=0;T<O;T++)S(x[T])}else if(I===Map){O=x.size,O<16?R[E++]=128|O:O<65536?(R[E++]=222,R[E++]=O>>8,R[E++]=O&255):(R[E++]=223,Ve.setUint32(E,O),E+=4);for(let[T,N]of x)S(T),S(N)}else{for(let T=0,N=js.length;T<N;T++){let L=zl[T];if(x instanceof L){let U=js[T];if(U.write){U.type&&(R[E++]=212,R[E++]=U.type,R[E++]=0),S(U.write.call(this,x));return}let K=R,J=Ve,ie=E;R=null;let z;try{z=U.pack.call(this,x,W=>(R=K,K=null,E+=W,E>cr&&_(E),{target:R,targetView:Ve,position:E-W}),S)}finally{K&&(R=K,Ve=J,E=ie,cr=R.length-10)}z&&(z.length+E>cr&&_(z.length+E),E=Tg(z,R,E,U.type));return}}A(x,!x.hasOwnProperty)}}else if(P==="boolean")R[E++]=x?195:194;else if(P==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))R[E++]=211,Ve.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)R[E++]=207,Ve.setBigUint64(E,x);else if(this.largeBigIntToFloat)R[E++]=203,Ve.setFloat64(E,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");E+=8}else if(P==="undefined")this.encodeUndefinedAsNil?R[E++]=192:(R[E++]=212,R[E++]=0,R[E++]=0);else if(P==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+P)},A=this.useRecords===!1?this.variableMapSize?x=>{let P=Object.keys(x),O=P.length;O<16?R[E++]=128|O:O<65536?(R[E++]=222,R[E++]=O>>8,R[E++]=O&255):(R[E++]=223,Ve.setUint32(E,O),E+=4);let I;for(let T=0;T<O;T++)S(I=P[T]),S(x[I])}:(x,P)=>{R[E++]=222;let O=E-t;E+=2;let I=0;for(let T in x)(P||x.hasOwnProperty(T))&&(S(T),S(x[T]),I++);R[O+++t]=I>>8,R[O+t]=I&255}:x=>{let P=Object.keys(x),O,I=s.transitions||(s.transitions=Object.create(null)),T=0;for(let L=0,U=P.length;L<U;L++){let K=P[L];O=I[K],O||(O=I[K]=Object.create(null),T++),I=O}let N=I[vi];if(N)N>=96&&h?(R[E++]=((N-=96)&31)+96,R[E++]=N>>5):R[E++]=N;else{N=s.nextId,N||(N=64),N<y&&this.shouldShareStructure&&!this.shouldShareStructure(P)?(N=s.nextOwnId,N<g||(N=y),s.nextOwnId=N+1):(N>=g&&(N=y),s.nextId=N+1);let L=P.highByte=N>=96&&h?N-96>>5:-1;I[vi]=N,s[N-64]=P,N<y?(P.isShared=!0,s.sharedLength=N-63,i=!0,L>=0?(R[E++]=(N&31)+96,R[E++]=L):R[E++]=N):(L>=0?(R[E++]=213,R[E++]=114,R[E++]=(N&31)+96,R[E++]=L):(R[E++]=212,R[E++]=114,R[E++]=N),T&&(w+=b*T),v.length>=m&&(v.shift()[vi]=0),v.push(I),S(P))}for(let L=0,U=P.length;L<U;L++)S(x[P[L]])},_=x=>{let P;if(x>16777216){if(x-t>Jd)throw new Error("Packed buffer would be larger than maximum buffer size");P=Math.min(Jd,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else P=(Math.max(x-t<<2,R.length-1)>>12)+1<<12;let O=new Ul(P);return Ve=new DataView(O.buffer,0,P),R.copy?R.copy(O,0,t,x):O.set(R.slice(t,x)),E-=t,t=0,cr=O.length-10,R=O}}useBuffer(r){R=r,Ve=new DataView(R.buffer,R.byteOffset,R.byteLength),E=0}};zl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,xi];js=[{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?eu(n,16,r):tu(Fs?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==ru&&this.structuredClone?eu(n,Fl.indexOf(e.name),r):tu(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function eu(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 tu(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 Tg(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 Og(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 $r(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)");zl.unshift(n.Class),js.unshift(n)}Qd(n)}var ou=new xo({useRecords:!1}),Ag=ou.pack,Pg=ou.pack;var{NEVER:Ig,ALWAYS:Cg,DECIMAL_ROUND:Ng,DECIMAL_FIT:Eg}=Rs,nu=512,Lg=1024;var iu=new xo({structuredClone:!0});$r({Class:Ee.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ee.prototype),n}});$r({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});$r({Class:Fe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Fe.prototype),n}});$r({Class:yi.prototype.constructor,type:4,write(n){return n.id},read(n){return new yi(n)}});$r({Class:gi.prototype.constructor,type:5,write(n){return n.data},read(n){return new gi(n)}});$r({Class:Be.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});function Mg(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 kl(n){if($o(n))return n;if(Array.isArray(n))return n.map(kl);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=kl(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Us;(t=>{function n(o){return iu.pack(o)}t.serialize=n;function r(o){return iu.unpack(o)}t.deserialize=r;function e(o){return Mg(n(kl(o))).toString()}t.checksum=e})(Us||(Us={}));var su;(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})(su||(su={}));var Yr;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=i})(Yr||(Yr={}));var au;(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})(au||(au={}));var Xr;(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})(Xr||(Xr={}));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 Ht;(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})(Ht||(Ht={}));var zs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(zs||(zs={}));var lu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(lu||(lu={}));var cu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(cu||(cu={}));var Wt;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Wt||(Wt={}));var vo;(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})(vo||(vo={}));var ur;(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(Bg.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;Dg.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;Gg.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;Rg.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;Vg.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;jg.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(ur||(ur={}));var ks;(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})(ks||(ks={}));var Bg=["count"],Dg=["radius","start","end","position","scale","rotation"],Gg=["position","scale","rotation"],Rg=["count","size"],Vg=["count","position","scale","rotation"],jg=["strength","scale","rotation","position","movement","seed","freqScale"];var Hs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Hs||(Hs={}));var Ws;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ht.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:Ht.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:Ht.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ws||(Ws={}));var Hl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Hl||(Hl={}));var Wl;(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})(Wl||(Wl={}));var qs;(r=>r.defaultData={...Wl.defaultData,...Hl.defaultData})(qs||(qs={}));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"],uu=["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:Ht.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:Ht.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Ht.fromHexAndA(0,1),contourColor:Ht.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 ye}}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 ye;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 ye;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 ye;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 ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(tn||(tn={}));var bi;(r=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=n})(bi||(bi={}));var Kr;(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==="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})(Kr||(Kr={}));var pu;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(pu||(pu={}));var rn;(o=>{o.identity={...zs.identity,hiddenMatrix:Xr.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:Yr.isEqual(i.position,s.position)?null:s.position,rotation:Yr.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Yr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Xr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(rn||(rn={}));var ql;(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]})(ql||(ql={}));var Nt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:null,...rn.identity,cloner:null})(Nt||(Nt={}));var fu;(r=>r.defaultData={type:"Empty",...Nt.defaultData})(fu||(fu={}));var mu;(r=>r.defaultData={type:"Component",...Nt.defaultData})(mu||(mu={}));var bo;(r=>r.defaultData={type:"Mesh",...Nt.defaultData,...qs.defaultData})(bo||(bo={}));var on;(r=>r.defaultData={...Nt.defaultData,...rn.identity,...vo.defaultData})(on||(on={}));var hu;(r=>{function n(e){return{...Nt.defaultData,...Ws.defaultData(e)}}r.defaultData=n})(hu||(hu={}));var nn;(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})(nn||(nn={}));var Zr;(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=rn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(Zr||(Zr={}));var yu;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Xr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:ql.defaultData,states:new ye,events:new ye,cloner:null,...vo.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,...bo.defaultData,geometry:Kr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Nt.defaultData,...bo.defaultData,geometry:Kr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Nt.defaultData,...bo.defaultData,geometry:Kr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(yu||(yu={}));var So;(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})))):Wt.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(...ks.toOps(p,["cloner"]));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(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,rn.merge(l,s)),Wt.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")s.geometry&&(l.geometry={...l.geometry},Object.assign(l.geometry,s.geometry)),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:ur.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:ur.merge(l.cloner,s.cloner)});else if(Hs.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})(So||(So={}));var sn;(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})(sn||(sn={}));var $s;(r=>r.defaultData={orbitControls:sn.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})($s||($s={}));function Qr(n,r){return Object.setPrototypeOf(n,r),n}var pr=void 0!=="true";function Ys(n){return Array.isArray(n)?n:[n]}function gu(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 Xs;(e=>{function n(){let t={};return t["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Qr(t,Ee.prototype)}e.defaultColors=n;function r(){return{materials:new Ee,images:new Ee,videos:new Ee,colors:new Ee,audios:new Ee,fonts:new Ee,penumbraSize:[.5,.5,.5]}}e.emptyData=r})(Xs||(Xs={}));var Fg=typeof global=="object"&&global&&global.Object===Object&&global,Ks=Fg;var Ug=typeof self=="object"&&self&&self.Object===Object&&self,zg=Ks||Ug||Function("return this")(),Ue=zg;var kg=Ue.Symbol,Ke=kg;var xu=Object.prototype,Hg=xu.hasOwnProperty,Wg=xu.toString,wi=Ke?Ke.toStringTag:void 0;function qg(n){var r=Hg.call(n,wi),e=n[wi];try{n[wi]=void 0;var t=!0}catch{}var o=Wg.call(n);return t&&(r?n[wi]=e:delete n[wi]),o}var vu=qg;var $g=Object.prototype,Yg=$g.toString;function Xg(n){return Yg.call(n)}var bu=Xg;var Kg="[object Null]",Zg="[object Undefined]",Su=Ke?Ke.toStringTag:void 0;function Qg(n){return n==null?n===void 0?Zg:Kg:Su&&Su in Object(n)?vu(n):bu(n)}var Et=Qg;function Jg(n){return n!=null&&typeof n=="object"}var rt=Jg;var e0="[object Symbol]";function t0(n){return typeof n=="symbol"||rt(n)&&Et(n)==e0}var an=t0;function r0(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 Zs=r0;var o0=Array.isArray,Re=o0;var n0=1/0,wu=Ke?Ke.prototype:void 0,_u=wu?wu.toString:void 0;function Tu(n){if(typeof n=="string")return n;if(Re(n))return Zs(n,Tu)+"";if(an(n))return _u?_u.call(n):"";var r=n+"";return r=="0"&&1/n==-n0?"-0":r}var Ou=Tu;function i0(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Lt=i0;function s0(n){return n}var Au=s0;var a0="[object AsyncFunction]",l0="[object Function]",c0="[object GeneratorFunction]",d0="[object Proxy]";function u0(n){if(!Lt(n))return!1;var r=Et(n);return r==l0||r==c0||r==a0||r==d0}var Qs=u0;var p0=Ue["__core-js_shared__"],Js=p0;var Pu=function(){var n=/[^.]+$/.exec(Js&&Js.keys&&Js.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function f0(n){return!!Pu&&Pu in n}var Iu=f0;var m0=Function.prototype,h0=m0.toString;function y0(n){if(n!=null){try{return h0.call(n)}catch{}try{return n+""}catch{}}return""}var Lr=y0;var g0=/[\\^$.*+?()[\]{}|]/g,x0=/^\[object .+?Constructor\]$/,v0=Function.prototype,b0=Object.prototype,S0=v0.toString,w0=b0.hasOwnProperty,_0=RegExp("^"+S0.call(w0).replace(g0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function T0(n){if(!Lt(n)||Iu(n))return!1;var r=Qs(n)?_0:x0;return r.test(Lr(n))}var Cu=T0;function O0(n,r){return n?.[r]}var Nu=O0;function A0(n,r){var e=Nu(n,r);return Cu(e)?e:void 0}var wt=A0;var P0=wt(Ue,"WeakMap"),ea=P0;var Eu=Object.create,I0=function(){function n(){}return function(r){if(!Lt(r))return{};if(Eu)return Eu(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Lu=I0;function C0(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 Mu=C0;function N0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Bu=N0;var E0=800,L0=16,M0=Date.now;function B0(n){var r=0,e=0;return function(){var t=M0(),o=L0-(t-e);if(e=t,o>0){if(++r>=E0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Du=B0;function D0(n){return function(){return n}}var Gu=D0;var G0=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),ln=G0;var R0=ln?function(n,r){return ln(n,"toString",{configurable:!0,enumerable:!1,value:Gu(r),writable:!0})}:Au,Ru=R0;var V0=Du(Ru),Vu=V0;function j0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var ju=j0;var F0=9007199254740991,U0=/^(?:0|[1-9]\d*)$/;function z0(n,r){var e=typeof n;return r=r??F0,!!r&&(e=="number"||e!="symbol"&&U0.test(n))&&n>-1&&n%1==0&&n<r}var cn=z0;function k0(n,r,e){r=="__proto__"&&ln?ln(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ta=k0;function H0(n,r){return n===r||n!==n&&r!==r}var dn=H0;var W0=Object.prototype,q0=W0.hasOwnProperty;function $0(n,r,e){var t=n[r];(!(q0.call(n,r)&&dn(t,e))||e===void 0&&!(r in n))&&ta(n,r,e)}var un=$0;function Y0(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?ta(e,l,c):un(e,l,c)}return e}var fr=Y0;var Fu=Math.max;function X0(n,r,e){return r=Fu(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Fu(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),Mu(n,this,l)}}var Uu=X0;var K0=9007199254740991;function Z0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=K0}var pn=Z0;function Q0(n){return n!=null&&pn(n.length)&&!Qs(n)}var ra=Q0;var J0=Object.prototype;function ex(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||J0;return n===e}var fn=ex;function tx(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var zu=tx;var rx="[object Arguments]";function ox(n){return rt(n)&&Et(n)==rx}var $l=ox;var ku=Object.prototype,nx=ku.hasOwnProperty,ix=ku.propertyIsEnumerable,sx=$l(function(){return arguments}())?$l:function(n){return rt(n)&&nx.call(n,"callee")&&!ix.call(n,"callee")},mn=sx;function ax(){return!1}var Hu=ax;var $u=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wu=$u&&typeof module=="object"&&module&&!module.nodeType&&module,lx=Wu&&Wu.exports===$u,qu=lx?Ue.Buffer:void 0,cx=qu?qu.isBuffer:void 0,dx=cx||Hu,wo=dx;var ux="[object Arguments]",px="[object Array]",fx="[object Boolean]",mx="[object Date]",hx="[object Error]",yx="[object Function]",gx="[object Map]",xx="[object Number]",vx="[object Object]",bx="[object RegExp]",Sx="[object Set]",wx="[object String]",_x="[object WeakMap]",Tx="[object ArrayBuffer]",Ox="[object DataView]",Ax="[object Float32Array]",Px="[object Float64Array]",Ix="[object Int8Array]",Cx="[object Int16Array]",Nx="[object Int32Array]",Ex="[object Uint8Array]",Lx="[object Uint8ClampedArray]",Mx="[object Uint16Array]",Bx="[object Uint32Array]",Me={};Me[Ax]=Me[Px]=Me[Ix]=Me[Cx]=Me[Nx]=Me[Ex]=Me[Lx]=Me[Mx]=Me[Bx]=!0;Me[ux]=Me[px]=Me[Tx]=Me[fx]=Me[Ox]=Me[mx]=Me[hx]=Me[yx]=Me[gx]=Me[xx]=Me[vx]=Me[bx]=Me[Sx]=Me[wx]=Me[_x]=!1;function Dx(n){return rt(n)&&pn(n.length)&&!!Me[Et(n)]}var Yu=Dx;function Gx(n){return function(r){return n(r)}}var hn=Gx;var Xu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_i=Xu&&typeof module=="object"&&module&&!module.nodeType&&module,Rx=_i&&_i.exports===Xu,Yl=Rx&&Ks.process,Vx=function(){try{var n=_i&&_i.require&&_i.require("util").types;return n||Yl&&Yl.binding&&Yl.binding("util")}catch{}}(),Mr=Vx;var Ku=Mr&&Mr.isTypedArray,jx=Ku?hn(Ku):Yu,oa=jx;var Fx=Object.prototype,Ux=Fx.hasOwnProperty;function zx(n,r){var e=Re(n),t=!e&&mn(n),o=!e&&!t&&wo(n),i=!e&&!t&&!o&&oa(n),s=e||t||o||i,l=s?zu(n.length,String):[],c=l.length;for(var u in n)(r||Ux.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||cn(u,c)))&&l.push(u);return l}var na=zx;function kx(n,r){return function(e){return n(r(e))}}var ia=kx;var Hx=ia(Object.keys,Object),Zu=Hx;var Wx=Object.prototype,qx=Wx.hasOwnProperty;function $x(n){if(!fn(n))return Zu(n);var r=[];for(var e in Object(n))qx.call(n,e)&&e!="constructor"&&r.push(e);return r}var Qu=$x;function Yx(n){return ra(n)?na(n):Qu(n)}var yn=Yx;function Xx(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Ju=Xx;var Kx=Object.prototype,Zx=Kx.hasOwnProperty;function Qx(n){if(!Lt(n))return Ju(n);var r=fn(n),e=[];for(var t in n)t=="constructor"&&(r||!Zx.call(n,t))||e.push(t);return e}var ep=Qx;function Jx(n){return ra(n)?na(n,!0):ep(n)}var gn=Jx;var ev=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,tv=/^\w*$/;function rv(n,r){if(Re(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||an(n)?!0:tv.test(n)||!ev.test(n)||r!=null&&n in Object(r)}var tp=rv;var ov=wt(Object,"create"),Br=ov;function nv(){this.__data__=Br?Br(null):{},this.size=0}var rp=nv;function iv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var op=iv;var sv="__lodash_hash_undefined__",av=Object.prototype,lv=av.hasOwnProperty;function cv(n){var r=this.__data__;if(Br){var e=r[n];return e===sv?void 0:e}return lv.call(r,n)?r[n]:void 0}var np=cv;var dv=Object.prototype,uv=dv.hasOwnProperty;function pv(n){var r=this.__data__;return Br?r[n]!==void 0:uv.call(r,n)}var ip=pv;var fv="__lodash_hash_undefined__";function mv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Br&&r===void 0?fv:r,this}var sp=mv;function xn(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])}}xn.prototype.clear=rp;xn.prototype.delete=op;xn.prototype.get=np;xn.prototype.has=ip;xn.prototype.set=sp;var Xl=xn;function hv(){this.__data__=[],this.size=0}var ap=hv;function yv(n,r){for(var e=n.length;e--;)if(dn(n[e][0],r))return e;return-1}var Jr=yv;var gv=Array.prototype,xv=gv.splice;function vv(n){var r=this.__data__,e=Jr(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():xv.call(r,e,1),--this.size,!0}var lp=vv;function bv(n){var r=this.__data__,e=Jr(r,n);return e<0?void 0:r[e][1]}var cp=bv;function Sv(n){return Jr(this.__data__,n)>-1}var dp=Sv;function wv(n,r){var e=this.__data__,t=Jr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var up=wv;function vn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}vn.prototype.clear=ap;vn.prototype.delete=lp;vn.prototype.get=cp;vn.prototype.has=dp;vn.prototype.set=up;var eo=vn;var _v=wt(Ue,"Map"),to=_v;function Tv(){this.size=0,this.__data__={hash:new Xl,map:new(to||eo),string:new Xl}}var pp=Tv;function Ov(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var fp=Ov;function Av(n,r){var e=n.__data__;return fp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ro=Av;function Pv(n){var r=ro(this,n).delete(n);return this.size-=r?1:0,r}var mp=Pv;function Iv(n){return ro(this,n).get(n)}var hp=Iv;function Cv(n){return ro(this,n).has(n)}var yp=Cv;function Nv(n,r){var e=ro(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var gp=Nv;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=pp;bn.prototype.delete=mp;bn.prototype.get=hp;bn.prototype.has=yp;bn.prototype.set=gp;var _o=bn;var Ev="Expected a function";function Kl(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Ev);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(Kl.Cache||_o),e}Kl.Cache=_o;var xp=Kl;var Lv=500;function Mv(n){var r=xp(n,function(t){return e.size===Lv&&e.clear(),t}),e=r.cache;return r}var vp=Mv;var Bv=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Dv=/\\(\\)?/g,Gv=vp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Bv,function(e,t,o,i){r.push(o?i.replace(Dv,"$1"):t||e)}),r}),bp=Gv;function Rv(n){return n==null?"":Ou(n)}var Sp=Rv;function Vv(n,r){return Re(n)?n:tp(n,r)?[n]:bp(Sp(n))}var Gt=Vv;var jv=1/0;function Fv(n){if(typeof n=="string"||an(n))return n;var r=n+"";return r=="0"&&1/n==-jv?"-0":r}var oo=Fv;function Uv(n,r){r=Gt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[oo(r[e++])];return e&&e==t?n:void 0}var sa=Uv;function zv(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Sn=zv;var wp=Ke?Ke.isConcatSpreadable:void 0;function kv(n){return Re(n)||mn(n)||!!(wp&&n&&n[wp])}var _p=kv;function Tp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=_p),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?Tp(l,r-1,e,t,o):Sn(o,l):t||(o[o.length]=l)}return o}var Op=Tp;function Hv(n){var r=n==null?0:n.length;return r?Op(n,1):[]}var Ap=Hv;function Wv(n){return Vu(Uu(n,void 0,Ap),n+"")}var aa=Wv;var qv=ia(Object.getPrototypeOf,Object),wn=qv;var $v="[object Object]",Yv=Function.prototype,Xv=Object.prototype,Pp=Yv.toString,Kv=Xv.hasOwnProperty,Zv=Pp.call(Object);function Qv(n){if(!rt(n)||Et(n)!=$v)return!1;var r=wn(n);if(r===null)return!0;var e=Kv.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Pp.call(e)==Zv}var Ip=Qv;function Jv(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 Cp=Jv;function eb(){this.__data__=new eo,this.size=0}var Np=eb;function tb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Ep=tb;function rb(n){return this.__data__.get(n)}var Lp=rb;function ob(n){return this.__data__.has(n)}var Mp=ob;var nb=200;function ib(n,r){var e=this.__data__;if(e instanceof eo){var t=e.__data__;if(!to||t.length<nb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new _o(t)}return e.set(n,r),this.size=e.size,this}var Bp=ib;function _n(n){var r=this.__data__=new eo(n);this.size=r.size}_n.prototype.clear=Np;_n.prototype.delete=Ep;_n.prototype.get=Lp;_n.prototype.has=Mp;_n.prototype.set=Bp;var Tn=_n;function sb(n,r){return n&&fr(r,yn(r),n)}var Dp=sb;function ab(n,r){return n&&fr(r,gn(r),n)}var Gp=ab;var Fp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Rp=Fp&&typeof module=="object"&&module&&!module.nodeType&&module,lb=Rp&&Rp.exports===Fp,Vp=lb?Ue.Buffer:void 0,jp=Vp?Vp.allocUnsafe:void 0;function cb(n,r){if(r)return n.slice();var e=n.length,t=jp?jp(e):new n.constructor(e);return n.copy(t),t}var Up=cb;function db(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 zp=db;function ub(){return[]}var la=ub;var pb=Object.prototype,fb=pb.propertyIsEnumerable,kp=Object.getOwnPropertySymbols,mb=kp?function(n){return n==null?[]:(n=Object(n),zp(kp(n),function(r){return fb.call(n,r)}))}:la,On=mb;function hb(n,r){return fr(n,On(n),r)}var Hp=hb;var yb=Object.getOwnPropertySymbols,gb=yb?function(n){for(var r=[];n;)Sn(r,On(n)),n=wn(n);return r}:la,ca=gb;function xb(n,r){return fr(n,ca(n),r)}var Wp=xb;function vb(n,r,e){var t=r(n);return Re(n)?t:Sn(t,e(n))}var da=vb;function bb(n){return da(n,yn,On)}var Ti=bb;function Sb(n){return da(n,gn,ca)}var ua=Sb;var wb=wt(Ue,"DataView"),pa=wb;var _b=wt(Ue,"Promise"),fa=_b;var Tb=wt(Ue,"Set"),ma=Tb;var qp="[object Map]",Ob="[object Object]",$p="[object Promise]",Yp="[object Set]",Xp="[object WeakMap]",Kp="[object DataView]",Ab=Lr(pa),Pb=Lr(to),Ib=Lr(fa),Cb=Lr(ma),Nb=Lr(ea),To=Et;(pa&&To(new pa(new ArrayBuffer(1)))!=Kp||to&&To(new to)!=qp||fa&&To(fa.resolve())!=$p||ma&&To(new ma)!=Yp||ea&&To(new ea)!=Xp)&&(To=function(n){var r=Et(n),e=r==Ob?n.constructor:void 0,t=e?Lr(e):"";if(t)switch(t){case Ab:return Kp;case Pb:return qp;case Ib:return $p;case Cb:return Yp;case Nb:return Xp}return r});var Dr=To;var Eb=Object.prototype,Lb=Eb.hasOwnProperty;function Mb(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&Lb.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Zp=Mb;var Bb=Ue.Uint8Array,An=Bb;function Db(n){var r=new n.constructor(n.byteLength);return new An(r).set(new An(n)),r}var Pn=Db;function Gb(n,r){var e=r?Pn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Qp=Gb;var Rb=/\w*$/;function Vb(n){var r=new n.constructor(n.source,Rb.exec(n));return r.lastIndex=n.lastIndex,r}var Jp=Vb;var ef=Ke?Ke.prototype:void 0,tf=ef?ef.valueOf:void 0;function jb(n){return tf?Object(tf.call(n)):{}}var rf=jb;function Fb(n,r){var e=r?Pn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var of=Fb;var Ub="[object Boolean]",zb="[object Date]",kb="[object Map]",Hb="[object Number]",Wb="[object RegExp]",qb="[object Set]",$b="[object String]",Yb="[object Symbol]",Xb="[object ArrayBuffer]",Kb="[object DataView]",Zb="[object Float32Array]",Qb="[object Float64Array]",Jb="[object Int8Array]",eS="[object Int16Array]",tS="[object Int32Array]",rS="[object Uint8Array]",oS="[object Uint8ClampedArray]",nS="[object Uint16Array]",iS="[object Uint32Array]";function sS(n,r,e){var t=n.constructor;switch(r){case Xb:return Pn(n);case Ub:case zb:return new t(+n);case Kb:return Qp(n,e);case Zb:case Qb:case Jb:case eS:case tS:case rS:case oS:case nS:case iS:return of(n,e);case kb:return new t;case Hb:case $b:return new t(n);case Wb:return Jp(n);case qb:return new t;case Yb:return rf(n)}}var nf=sS;function aS(n){return typeof n.constructor=="function"&&!fn(n)?Lu(wn(n)):{}}var sf=aS;var lS="[object Map]";function cS(n){return rt(n)&&Dr(n)==lS}var af=cS;var lf=Mr&&Mr.isMap,dS=lf?hn(lf):af,cf=dS;var uS="[object Set]";function pS(n){return rt(n)&&Dr(n)==uS}var df=pS;var uf=Mr&&Mr.isSet,fS=uf?hn(uf):df,pf=fS;var mS=1,hS=2,yS=4,ff="[object Arguments]",gS="[object Array]",xS="[object Boolean]",vS="[object Date]",bS="[object Error]",mf="[object Function]",SS="[object GeneratorFunction]",wS="[object Map]",_S="[object Number]",hf="[object Object]",TS="[object RegExp]",OS="[object Set]",AS="[object String]",PS="[object Symbol]",IS="[object WeakMap]",CS="[object ArrayBuffer]",NS="[object DataView]",ES="[object Float32Array]",LS="[object Float64Array]",MS="[object Int8Array]",BS="[object Int16Array]",DS="[object Int32Array]",GS="[object Uint8Array]",RS="[object Uint8ClampedArray]",VS="[object Uint16Array]",jS="[object Uint32Array]",Le={};Le[ff]=Le[gS]=Le[CS]=Le[NS]=Le[xS]=Le[vS]=Le[ES]=Le[LS]=Le[MS]=Le[BS]=Le[DS]=Le[wS]=Le[_S]=Le[hf]=Le[TS]=Le[OS]=Le[AS]=Le[PS]=Le[GS]=Le[RS]=Le[VS]=Le[jS]=!0;Le[bS]=Le[mf]=Le[IS]=!1;function ha(n,r,e,t,o,i){var s,l=r&mS,c=r&hS,u=r&yS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Lt(n))return n;var a=Re(n);if(a){if(s=Zp(n),!l)return Bu(n,s)}else{var d=Dr(n),p=d==mf||d==SS;if(wo(n))return Up(n,l);if(d==hf||d==ff||p&&!o){if(s=c||p?{}:sf(n),!l)return c?Wp(n,Gp(s,n)):Hp(n,Dp(s,n))}else{if(!Le[d])return o?n:{};s=nf(n,d,l)}}i||(i=new Tn);var f=i.get(n);if(f)return f;i.set(n,s),pf(n)?n.forEach(function(y){s.add(ha(y,r,e,y,n,i))}):cf(n)&&n.forEach(function(y,g){s.set(g,ha(y,r,e,g,n,i))});var m=u?c?ua:Ti:c?gn:yn,h=a?void 0:m(n);return ju(h||n,function(y,g){h&&(g=y,y=n[g]),un(s,g,ha(y,r,e,g,n,i))}),s}var ya=ha;var FS=1,US=4;function zS(n){return ya(n,FS|US)}var Oo=zS;var kS="__lodash_hash_undefined__";function HS(n){return this.__data__.set(n,kS),this}var yf=HS;function WS(n){return this.__data__.has(n)}var gf=WS;function ga(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new _o;++r<e;)this.add(n[r])}ga.prototype.add=ga.prototype.push=yf;ga.prototype.has=gf;var xf=ga;function qS(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 vf=qS;function $S(n,r){return n.has(r)}var bf=$S;var YS=1,XS=2;function KS(n,r,e,t,o,i){var s=e&YS,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&XS?new xf: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(!vf(r,function(g,v){if(!bf(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 xa=KS;function ZS(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Sf=ZS;function QS(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var wf=QS;var JS=1,e1=2,t1="[object Boolean]",r1="[object Date]",o1="[object Error]",n1="[object Map]",i1="[object Number]",s1="[object RegExp]",a1="[object Set]",l1="[object String]",c1="[object Symbol]",d1="[object ArrayBuffer]",u1="[object DataView]",_f=Ke?Ke.prototype:void 0,Zl=_f?_f.valueOf:void 0;function p1(n,r,e,t,o,i,s){switch(e){case u1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case d1:return!(n.byteLength!=r.byteLength||!i(new An(n),new An(r)));case t1:case r1:case i1:return dn(+n,+r);case o1:return n.name==r.name&&n.message==r.message;case s1:case l1:return n==r+"";case n1:var l=Sf;case a1:var c=t&JS;if(l||(l=wf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=e1,s.set(n,r);var a=xa(l(n),l(r),t,o,i,s);return s.delete(n),a;case c1:if(Zl)return Zl.call(n)==Zl.call(r)}return!1}var Tf=p1;var f1=1,m1=Object.prototype,h1=m1.hasOwnProperty;function y1(n,r,e,t,o,i){var s=e&f1,l=Ti(n),c=l.length,u=Ti(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:h1.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 b=n.constructor,S=r.constructor;b!=S&&"constructor"in n&&"constructor"in r&&!(typeof b=="function"&&b instanceof b&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var Of=y1;var g1=1,Af="[object Arguments]",Pf="[object Array]",va="[object Object]",x1=Object.prototype,If=x1.hasOwnProperty;function v1(n,r,e,t,o,i){var s=Re(n),l=Re(r),c=s?Pf:Dr(n),u=l?Pf:Dr(r);c=c==Af?va:c,u=u==Af?va:u;var a=c==va,d=u==va,p=c==u;if(p&&wo(n)){if(!wo(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new Tn),s||oa(n)?xa(n,r,e,t,o,i):Tf(n,r,c,e,t,o,i);if(!(e&g1)){var f=a&&If.call(n,"__wrapped__"),m=d&&If.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Tn),o(h,y,e,t,i)}}return p?(i||(i=new Tn),Of(n,r,e,t,o,i)):!1}var Cf=v1;function Nf(n,r,e,t,o){return n===r?!0:n==null||r==null||!rt(n)&&!rt(r)?n!==n&&r!==r:Cf(n,r,e,t,Nf,o)}var Ef=Nf;function b1(n,r){return n!=null&&r in Object(n)}var Lf=b1;function S1(n,r,e){r=Gt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=oo(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&&pn(o)&&cn(s,o)&&(Re(n)||mn(n)))}var Mf=S1;function w1(n,r){return n!=null&&Mf(n,r,Lf)}var Bf=w1;function _1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Df=_1;function T1(n,r){return r.length<2?n:sa(n,Cp(r,0,-1))}var Gf=T1;function O1(n,r){return Ef(n,r)}var Oi=O1;function A1(n,r){return r=Gt(r,n),n=Gf(n,r),n==null||delete n[oo(Df(r))]}var Rf=A1;function P1(n){return Ip(n)?void 0:n}var Vf=P1;var I1=1,C1=2,N1=4,E1=aa(function(n,r){var e={};if(n==null)return e;var t=!1;r=Zs(r,function(i){return i=Gt(i,n),t||(t=i.length>1),i}),fr(n,ua(n),e),t&&(e=ya(e,I1|C1|N1,Vf));for(var o=r.length;o--;)Rf(e,r[o]);return e}),In=E1;function L1(n,r,e,t){if(!Lt(n))return n;r=Gt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=oo(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=Lt(a)?a:cn(r[o+1])?[]:{})}un(l,c,u),l=l[c]}return n}var jf=L1;function M1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=sa(n,s);e(l,s)&&jf(i,Gt(s,n),l)}return i}var Ff=M1;function B1(n,r){return Ff(n,r,function(e,t){return Bf(n,t)})}var Uf=B1;var D1=aa(function(n,r){return n==null?{}:Uf(n,r)}),Cn=D1;import{MathUtils as ba}from"three";function zf(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={...Cn(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 Sa(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function wa(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 G1(n){Object.assign(n.scene.publish,{orbitControls:{...sn.defaultData,...Ye(n.scene.publish.orbitControls)}})}function R1(n){Object.assign(n.scene.publish.settings,{video:{...$s.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function V1(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))(uu.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 j1(n){n.scene.publish.withBackground=!0}function F1(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function U1(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 z1(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 k1(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 H1(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 W1(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 kf(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function Ql(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 q1(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Hf(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Ql(t)}):"material"in e&&typeof e.material!="string"&&Ql(e.material)}),Object.values(n.shared.materials).forEach(r=>Ql(r))}function $1(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 Y1(n){n.shared.audios=Qr({},Ee.prototype)}function X1(n){n.shared.videos=Qr({},Ee.prototype)}function K1(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 Z1(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 Q1(n){n.scene.publish.settings.web.preload=!1}function Wf(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 J1(n){n.shared.fonts=Qr({},Ee.prototype)}function ew(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 tw(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=ew(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Nt.defaultData,...bo.defaultData,flatShading:!1,wireframe:!1,geometry:{...Kr.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 rw(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ye,move:new ye,jump:new ye}});else{let i=new ye;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:ba.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,Cn(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 ye({fi:0,id:ba.generateUUID(),data:u},{fi:1,id:ba.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function ow(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new ye,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...Cn(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={...Cn(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:ba.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function qf(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 $f(n){Sa(n,qf),wa(n,qf)}function nw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function iw(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 sw(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 aw(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))})}var Yf=31;function Xf(n){let r=n.schema??0;r!==Yf&&(console.warn("updating from ",r,"to ",Yf),r<1&&(wa(n,zf),Sa(n,zf),n.schema=1),r<2&&(G1(n),n.schema=2),r<3&&(V1(n),n.schema=3),r<4&&(j1(n),n.schema=4),r<5&&(F1(n),n.schema=5),r<6&&(U1(n),n.schema=6),r<7&&(z1(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Hf(n),n.schema=9),r<10&&(q1(n),n.schema=10),r<11&&($1(n),n.schema=11),r<12&&(Hf(n),n.schema=12),r<13&&(Y1(n),n.schema=13),r<14&&(K1(n),n.schema=14),r<15&&(Z1(n),n.schema=15),r<16&&(Q1(n),n.schema=16),r<17&&(wa(n,Wf),Sa(n,Wf),n.schema=17),r<18&&(wa(n,kf),Sa(n,kf),n.schema=18),r<19&&(R1(n),n.schema=19),r<20&&(J1(n),tw(n),n.schema=20),r<21&&(rw(n),ow(n),n.schema=21),r<22&&($f(n),n.schema=22),r<23&&(nw(n),n.schema=23),r<24&&(iw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(X1(n),r<25&&(n.schema=25)),r<26&&(k1(n),n.schema=26),r<27&&(H1(n),n.schema=27),r<28&&($f(n),n.schema=28),r<29&&(W1(n),n.schema=29),r<30&&(sw(n),n.schema=30),r<31&&(aw(n),n.schema=31))}var _a;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(_a||(_a={}));var si=Tl(Zf());import{Object3D as wO,Vector3 as Mt,Euler as vd,MathUtils as ay,Matrix4 as Ho}from"three";var lw=.5*(Math.sqrt(3)-1),Pi=(3-Math.sqrt(3))/6,cw=1/3,mr=1/6,oG=(Math.sqrt(5)-1)/4,nG=(5-Math.sqrt(5))/20,Ii=n=>Math.floor(n)|0,Qf=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]),ec=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 Ta(n=Math.random){let r=em(n),e=new Float64Array(r).map(o=>Qf[o%12*2]),t=new Float64Array(r).map(o=>Qf[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*lw,d=Ii(i+a),p=Ii(s+a),f=(d+p)*Pi,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 b=y-v+Pi,S=g-w+Pi,A=y-1+2*Pi,_=g-1+2*Pi,x=d&255,P=p&255,O=.5-y*y-g*g;if(O>=0){let N=x+r[P],L=e[N],U=t[N];O*=O,l=O*O*(L*y+U*g)}let I=.5-b*b-S*S;if(I>=0){let N=x+v+r[P+w],L=e[N],U=t[N];I*=I,c=I*I*(L*b+U*S)}let T=.5-A*A-_*_;if(T>=0){let N=x+1+r[P+1],L=e[N],U=t[N];T*=T,u=T*T*(L*A+U*_)}return 70*(l+c+u)}}function Jf(n=Math.random){let r=em(n),e=new Float64Array(r).map(i=>ec[i%12*3]),t=new Float64Array(r).map(i=>ec[i%12*3+1]),o=new Float64Array(r).map(i=>ec[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*cw,m=Ii(s+f),h=Ii(l+f),y=Ii(c+f),g=(m+h+y)*mr,v=m-g,w=h-g,b=y-g,S=s-v,A=l-w,_=c-b,x,P,O,I,T,N;S>=A?A>=_?(x=1,P=0,O=0,I=1,T=1,N=0):S>=_?(x=1,P=0,O=0,I=1,T=0,N=1):(x=0,P=0,O=1,I=1,T=0,N=1):A<_?(x=0,P=0,O=1,I=0,T=1,N=1):S<_?(x=0,P=1,O=0,I=0,T=1,N=1):(x=0,P=1,O=0,I=1,T=1,N=0);let L=S-x+mr,U=A-P+mr,K=_-O+mr,J=S-I+2*mr,ie=A-T+2*mr,z=_-N+2*mr,W=S-1+3*mr,q=A-1+3*mr,j=_-1+3*mr,M=m&255,B=h&255,D=y&255,F=.6-S*S-A*A-_*_;if(F<0)u=0;else{let G=M+r[B+r[D]];F*=F,u=F*F*(e[G]*S+t[G]*A+o[G]*_)}let Y=.6-L*L-U*U-K*K;if(Y<0)a=0;else{let G=M+x+r[B+P+r[D+O]];Y*=Y,a=Y*Y*(e[G]*L+t[G]*U+o[G]*K)}let k=.6-J*J-ie*ie-z*z;if(k<0)d=0;else{let G=M+I+r[B+T+r[D+N]];k*=k,d=k*k*(e[G]*J+t[G]*ie+o[G]*z)}let V=.6-W*W-q*q-j*j;if(V<0)p=0;else{let G=M+1+r[B+1+r[D+1]];V*=V,p=V*V*(e[G]*W+t[G]*q+o[G]*j)}return 32*(u+a+d+p)}}function em(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 dw}from"three";var qt=new dw,Oa=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;qt.a.fromBufferAttribute(r,o),qt.b.fromBufferAttribute(r,o+1),qt.c.fromBufferAttribute(r,o+2),i*=qt.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),qt.a.fromBufferAttribute(this.positionAttribute,r*3),qt.b.fromBufferAttribute(this.positionAttribute,r*3+1),qt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(qt.a,o).addScaledVector(qt.b,i).addScaledVector(qt.c,1-(o+i)),qt.getNormal(t),this}};import{Object3D as hw}from"three";var om=Tl(rm());import{Object3D as uw,Matrix4 as Gr}from"three";var pw=new Gr,fw=new Gr,mw=new Gr,Ci;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ci||(Ci={}));var Nn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Gr;this.matrixWorldRigid=new Gr;this.shearScale=new Gr;this.shearScaleInv=new Gr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof uw&&(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)Ci.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,om.SVD)(o),c=pw.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=fw.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=mw.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 Gr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Gr?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 tc=class extends Nn(hw){},yw=n=>n.type==="Mesh",Rr=class extends tc{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 Rr(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 yw(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 K_,BufferGeometry as Z_,MeshBasicMaterial as Q_}from"three";import{Matrix4 as Y_,Mesh as X_}from"three";import{Box3 as gw,Line3 as xw,Matrix4 as rc,Vector3 as Rt}from"three";var Ao=new Rt,Po=new Rt,En=new rc,im=[new Rt(-1,1,1),new Rt(-1,-1,1),new Rt(1,-1,1),new Rt(1,1,1),new Rt(-1,1,-1),new Rt(-1,-1,-1),new Rt(1,-1,-1),new Rt(1,1,-1)],vw=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],bw=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],nm=(n,r,e)=>{n.updateEntityBoxSize(Ao,Po),En.copy(r).multiply(n.matrixWorld),Po.x===0&&Po.y===0&&Po.z===0?e.push(new Rt(Ao.x,Ao.y,Ao.z).applyMatrix4(En)):im.forEach(t=>{e.push(t.clone().multiply(Po).add(Ao).applyMatrix4(En))})},Ni=class extends gw{constructor(){super(...arguments);this.matrix=new rc;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 rc().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&&nm(s,t,i)}):nm(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(En.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Po).multiplyScalar(.5),this.getCenter(Ao),En.copy(this.matrix).setPosition(Ao),this.vertices=im.map(e=>e.clone().multiply(Po).applyMatrix4(En))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=vw.map(([e,t])=>new xw(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Rt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=bw.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var $t={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var De;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(De||(De={}));var Yt=n=>De.is(n),Pa=n=>class extends Nn(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._singleBBox=new Ni;this._recursiveBBox=new Ni;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(De.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(De.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)So.toOps(this.data,s.data).forEach(c=>{let u=Ps.replaceProps(c,this.data);this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=So.patch(this.data,s),So.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}else this.dataPatched=this.data;i&&this.updateTransformState(this.dataPatched),this.stateSelection=t}}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=>{Yt(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(De.is(o[i]))return o[i];if(De.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&De.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)Yt(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{De.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Yt(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Yt(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=>Yt(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 In(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??Xr.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)De.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{De.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return In(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=sr(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,So.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),sr(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(Nr.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=nn.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 Zr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of Zr.rootOverrideProps)if(sr(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Nr.filterOp(d.overrideData,a);p&&d.updateByOp(p,tt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Nr.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&&!Wt.is(t.props.type)&&$t.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){$t.changeEntityProptotype(this,o,i);for(let s of this.children)De.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),sr(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()}}updateVisible(){this.visible=this.dataPatched.visible&&((this.dataPatched.cloner?.disabled??!0)||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)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof $t.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 $t.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 _w}from"three";import{BufferGeometry as Sw,CylinderGeometry as ww,Float32BufferAttribute as oc,Vector2 as Xt,Vector3 as Ia}from"three";var am=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 Ei(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new ww(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 no(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function sm(n){return new Xt(n.y,-n.x)}var Ei=class extends Sw{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,b=new Ia,S=new Ia;f&&r==0&&(r=u),f&&e==0&&(e=a);let A=new Xt(r,w),_=new Xt(e,-w),x=null,P=null,O=null,I=null,T=A.clone().sub(_),N=0,L=0,U=0;p>0&&(N=Math.min(r,e)*(1-p),L=r-N,U=e-N);let K=A.clone();K.x-=N;let J=Math.PI-T.angle(),ie=T.angle(),z=Math.tan(ie/2),W=Math.tan(J/2),q=z+W,j=p?q:W,M=p?q:z;if(u=Math.min(u,(r-L)/j,T.length()/q),a=Math.min(a,(e-U)/M,T.length()/q),u>0){let V=u/z;x=A.clone().sub(new Xt(V,u)),p&&(O=x.clone(),O.x-=N-q*u),A.sub(T.clone().setLength(V))}if(a>0){let V=a/W;P=_.clone().sub(new Xt(V,-a)),_.add(T.clone().setLength(V)),p&&(I=P.clone(),I.x-=N-q*a,K.sub(T.clone().setLength(V)))}T=A.clone().sub(_);let B=T.length()<.5,D=[];for(let V=0;V<=o;V++){let G=[],H=V/o,$=H*c+l,ee=new Xt(Math.sin($),Math.cos($));I&&P?(F(G,H,ee,J,a,I,-1,!0),F(G,H,ee,ie,a,P,-1,!1)):P?(Y(G,ee,P.x,0,-1),F(G,H,ee,ie,a,P,-1,!1)):s||Y(G,ee,e,U,-1);let se=sm(T).normalize();if(no(se,ee,b),!B)for(let te=0;te<=i;te++){let re=te/i,oe=T.clone().multiplyScalar(re).add(_);no(oe,ee,S),h.push(S.x,S.y,S.z),y.push(b.x,b.y,b.z),g.push(H,.5+S.y/t),G.push(v++)}if(O&&x?(F(G,H,ee,J,u,x,1,!1),F(G,H,ee,ie,u,O,1,!0)):x?(F(G,H,ee,J,u,x,1,!1),Y(G,ee,x.x,0,1)):s||Y(G,ee,r,L,1),p&&!B){let te=sm(T).multiplyScalar(-1).normalize();no(te,ee,b);for(let re=0;re<=i;re++){let oe=re/i,Z=T.clone().multiplyScalar(-oe).add(K);no(Z,ee,S),h.push(S.x,S.y,S.z),y.push(b.x,b.y,b.z),g.push(H,.5+S.y/t),G.push(v++)}}p&&!s&&G.push(G[0]),D.push(G)}for(let V=0;V<D.length-1;V++)for(let G=0;G<D[0].length-1;G++){if(s&&p&&G==i)continue;let H=D[V][G],$=D[V+1][G],ee=D[V+1][G+1],se=D[V][G+1],te=h[ee*3+0],re=h[ee*3+2];m.push(H,$,se),(te!=0||re!=0)&&m.push($,ee,se)}c<Math.PI*2&&(k(-1,D[0],l),k(1,D[D.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 F(V,G,H,$,ee,se,te,re){for(let oe=0;oe<d+1;oe++){let Z=oe/d,me=te<0?Z:1-Z;re&&(me-=1),me*=$;let de=new Xt(Math.sin(me),Math.cos(me)*te),he=de.clone().multiplyScalar(ee).add(se);no(he,H,S),h.push(S.x,S.y,S.z),no(de,H,b),y.push(b.x,b.y,b.z),g.push(G,.5+S.y/t),V.push(v++)}}function Y(V,G,H,$,ee){let se=new Ia,te=new Xt,re=[H,$];ee<0&&re.reverse();for(let oe of re)te.set(oe,w*ee),no(te,G,se),h.push(se.x,se.y,se.z),y.push(0,ee,0),g.push(.5,.5),V.push(v++)}function k(V,G,H){let $=new Xt(Math.sin(H),Math.cos(H)),ee=new Xt(-Math.cos(H),Math.sin(H)),se=new Ia,te=V<0?(Z,me,de)=>m.push(Z,me,de):(Z,me,de)=>m.push(Z,de,me),re=new Xt((r+e+L+U)/4,0);no(re,$,se),h.push(se.x,se.y,se.z),y.push(ee.x,0,ee.y),g.push(.5,.5);let oe=v++;for(let Z of G){let me=h.slice(Z*3,Z*3+3);h.push(...me),y.push(ee.x,0,ee.y);let de=g.slice(Z*2,Z*2+2);g.push(...de),v++}for(let Z=oe+1;Z<v-1;Z++)te(oe,Z,Z+1);te(oe,v-1,oe+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 Ei(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new _w(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as Tw,BufferGeometry as Ow,Float32BufferAttribute as nc,Vector3 as Li}from"three";var cm=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 Tw(r,e,t,o,i,s):u=new sc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},ic=Math.PI/2,sc=class extends Ow{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 nc(d,3)),this.setAttribute("normal",new nc(p,3)),this.setAttribute("uv",new nc(f,2));function y(w,b,S,A,_,x,P,O,I,T,N){let L=(x-2*l)/I,U=(P-2*l)/T,K=x/2-l,J=P/2-l,ie=O/2,z=I+1,W=T+1,q=0,j=0,M=new Li;for(let B=0;B<W;B++){let D=B*U-J;for(let F=0;F<z;F++){let Y=F*L-K;M[w]=Y*A,M[b]=D*_,M[S]=ie,d.push(M.x,M.y,M.z),M[w]=0,M[b]=0,M[S]=O>0?1:-1,p.push(M.x,M.y,M.z),f.push(F/I),f.push(1-B/T),q+=1}}for(let B=0;B<T;B++)for(let D=0;D<I;D++){let F=m+D+z*B,Y=m+D+z*(B+1),k=m+(D+1)+z*(B+1),V=m+(D+1)+z*B;a.push(F,Y,V),a.push(Y,k,V),j+=6}u.addGroup(h,j,N),h+=j,m+=q}function g(w,b,S,A,_,x,P,O,I,T,N){let L=(P-2*l)/T,U=P/2-l,K=O/2-l,J=I/2,ie=T+1,z=0,W=0,q=new Li,j=new Li;for(let M=0;M<c+1;M++){let B=M/c*ic,D=Math.sin(B)*l,F=(1-Math.cos(B))*l,Y=Math.sin(B),k=Math.cos(B);q[b]=(K+D)*_,q[S]=(J-F)*x,j[w]=0,j[b]=Y*Math.sign(q[b]),j[S]=k*Math.sign(q[S]);for(let V=0;V<ie;V++){let G=V*L-U;q[w]=G*A,d.push(q.x,q.y,q.z),p.push(j.x,j.y,j.z),f.push(V/T),f.push(0),z+=1}}for(let M=0;M<c;M++)for(let B=0;B<T;B++){let D=m+B+ie*M,F=m+B+ie*(M+1),Y=m+(B+1)+ie*(M+1),k=m+(B+1)+ie*M;a.push(D,F,k),a.push(F,Y,k),W+=6}u.addGroup(h,W,N),h+=W,m+=z}function v(w,b,S){let A=new Li,_=new Li(r/2,e/2,t/2);_.subScalar(l);let x=[],P=w*b*S>0?(I,T,N)=>a.push(I,T,N):(I,T,N)=>a.push(I,N,T);for(let I=0;I<=c;I++){let T=[],N=ic*(1-I/c),L=Math.cos(N),U=Math.sin(N),K=0;for(let J=0;J<=I;J++){let ie=Math.cos(K),z=Math.sin(K);A.x=L*ie,A.y=U,A.z=L*z;let W=_.clone().addScaledVector(A,l);d.push(w*W.x,b*W.y,S*W.z),p.push(w*A.x,b*A.y,S*A.z),f.push(0,0),T.push(m++),K+=ic/I}x.push(T)}let O=x.length-1;for(let I=0;I<O;I++){let T=x[I],N=x[I+1],L=T.length-1;P(T[0],N[1],N[0]);for(let U=1;U<=L;U++)P(T[U-1],T[U],N[U]),P(T[U],N[U+1],N[U])}}}};import{BufferGeometry as Aw,Float32BufferAttribute as ac,Triangle as Pw,Vector3 as Vr,Vector2 as lc}from"three";var io=class extends Aw{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new ac(l,3)),this.setAttribute("normal",new ac(u,3)),this.setAttribute("uv",new ac(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 Vr,h=m.clone(),y=new Pw,g=i*o,v=o-g,w=s+1,b=new Vr,S=(z,W)=>b.subVectors(z,W).normalize(),A=(z,W)=>Array(z).fill(void 0).map(W),_=A(r.length/3,(z,W)=>new Vr().fromArray(r,W*3).setLength(o)),x=[],P=1e6;for(let z=0;z<_.length;z++){let W=_[z],q=[],j,M,B,D=1e10,F=-1;for(;(F=e.indexOf(z,F+1))!=-1;){let G=F-F%3;j=e[G+(F+1)%3],M=e[G+(F+2)%3],B=W.distanceToSquared(_[j]),D=Math.min(D,B),q.push([j,M,B])}D+=1e-6;let Y=[],k=0,V=q.length;for(let G=0;G<V;G++){[j,M,B]=q[k];let H=x[j]?.includes(z)==!0;B<=D&&Y.push(j+ +H*P),k=q.findIndex($=>$[0]==M)}x.push(Y)}let O=[];{let z=0,W=0,q,j,M=f==3;for(let B=0;B<=s;B++){q=B*(B+1)/2,j=(B+1)*(B+2)/2;for(let D=0;D<s-B;D++)[z,W]=[q+D+B+2,j+D+B+3],O.push(q,j,...M?[W,q]:[z,j],W,z),[q,j]=[z,W];O.push(q,j,q+s+2)}}let I=m.clone(),T=m.clone(),N=m.clone(),L=m.clone(),U=m.clone(),K=[],J=A(_.length,()=>A(f,()=>m.clone()));for(let z=0;z<_.length;z++){m.copy(_[z]).normalize(),I.copy(m).multiplyScalar(v);let W=x[z];for(let Y=0;Y<W.length;Y++){let k=W[Y],V=W[(Y+1)%f];y.setFromPointsAndIndices(_,z,k%P,V%P),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,J[z][Y])}let q=[],j=[],M=[],B=new Vr;s==0&&[...J[z]].reduce((Y,k)=>Y.add(k),B).multiplyScalar(1/f);for(let Y=0;Y<f;Y++){let k=[],V=(Y-1+f)%f,G=J[z][V],H=J[z][Y];m.copy(G).sub(I),h.copy(H).sub(I);let $=I.angleTo(m),ee=m.angleTo(h),se=Math.cos($)*g;s==0?T.copy(B):T.copy(I).setLength(v+se),j.push(se);let te=[T,G,H];for(let re=0;re<2;re++){let oe=te[re],Z=te[re+1];L.subVectors(oe,I),U.subVectors(Z,I),N.crossVectors(L,U).normalize();for(let me=0;me<w;me++){let de=[$,ee][re]*me/w;m.copy(L).applyAxisAngle(N,de).add(I),q.push(m.clone()),re&&(S(m,I),k.push([me==0?oe:m.clone(),b.clone()]))}re&&(S(Z,I),k.push([Z,b.clone()]))}M.push(k)}K.push(M);let D=2*w,F=2;for(let Y=0;Y<f;Y++){let k=D*Y,V=D*((Y+1)%f),G=[q[k]];for(let $=1;$<w;$++){L=q[k+$],U=q[V+$],G.push(L);for(let ee=1,se=$-F+1;ee<=se;ee++)m.lerpVectors(L,U,ee/(se+1)),m.sub(I).setLength(j[Y]).add(I),G.push(m.clone());G.push(U)}for(let $=0;$<w;$++)G.push(q[$+w+k]);G.push(q[V+w]);let H=O.map($=>G[$]);l.push(...H.map($=>[$.x,$.y,$.z]).flat()),u.push(...H.map($=>(S($,I),[b.x,b.y,b.z])).flat())}}let ie=[];for(let z=0;z<x.length;z++)for(let W=0;W<f;W++){let q=x[z][W];if(q<P){let j=x[q].findIndex(D=>D%P==z),M=K[z][W],B=K[q][j];for(let D=0;D<w;D++){let F=M[D],Y=B[w-D],k=M[D+1],V=B[w-(D+1)];[F,Y,k,k,Y,V].forEach(G=>{l.push(G[0].x,G[0].y,G[0].z),u.push(G[1].x,G[1].y,G[1].z)})}ie.push(M[0][0],B[w][0],M[w][0],B[0][0])}}for(;ie.length;){let z,W,q,j;[z,W]=ie.splice(0,2);let M=[z];for(;z!=W;)M.push(W),q=ie.indexOf(W),j=q%2,W=ie.splice(q-j,2)[1-j];b.subVectors(M[0],M[1]).cross(m.subVectors(M[0],M[2])).normalize();let B=b.dot(M[0])<0;B&&b.negate();for(let D=1;D<=M.length-2;D++)[M[D+ +B],M[D+1-+B],M[0]].forEach(F=>{l.push(F.x,F.y,F.z),u.push(b.x,b.y,b.z)})}}function d(){let p=new Vr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,P=A(p)/Math.PI+.5;c.push(x,1-P)}let f=new Vr,m=new Vr,h=new Vr,y=new Vr,g=new lc,v=new lc,w=new lc,b=(_,x,P,O)=>{O<0&&_.x===1&&(c[x]=_.x-1),P.x===0&&P.z===0&&(c[x]=O/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 P=S(y);b(g,x+0,f,P),b(v,x+2,m,P),b(w,x+4,h,P)}for(let _=0;_<c.length;_+=6){let x=c[_+0],P=c[_+2],O=c[_+4],I=Math.max(x,P,O),T=Math.min(x,P,O);I>.9&&T<.1&&(x<.2&&(c[_+0]+=1),P<.2&&(c[_+2]+=1),O<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function A(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new io(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as Iw}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 Mi(r*.5,i,s):new Iw(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Mi=class extends io{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 Mi(r.radius,r.corner,r.cornerSides)}};import{Plane as jw,Shape as Om,Vector2 as jr,Vector3 as Fw,MathUtils as hc,LineCurve as yc,QuadraticBezierCurve as Am,CubicBezierCurve as La}from"three";import{CubicBezierCurve as Ca,EllipseCurve as Cw,LineCurve as Na,LineCurve3 as Nw,MathUtils as Ew,QuadraticBezierCurve as dc,SplineCurve as Lw,Vector2 as at,Vector3 as fm}from"three";var Bi=1e-12,Ln=class{constructor(r){this.position=new at;this.startPosition=new at;this.uuid=Ew.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 Ln(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Mn=class extends Ln{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Mn(this.parent).copy(this)}},Kt=class extends Ln{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Mn(this),new Mn(this))}static create(e,t){let o=new Kt(e,new at(...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 Kt(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 at,t=new at){let[o,i]=this.computeTangents();return o&&i&&(um(o,e),um(i,t)),[e,t]}computeTangent(e=new at){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new at){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function um(n,r=new at){let e=n.length();return r.set(-n.y/e,n.x/e)}var uc=n=>n,Bn=new at,Ea=new at,Mw=new at,Bw=new at,Dw=new at,Gw=new at,mm=new fm,hm=new fm;function ym(n){let r=new at;r.addVectors(n.v0,Bn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new at;return e.addVectors(n.v2,Ea.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ca(n.v0,r,e,n.v2)}function Di(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function Rw(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Vw(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function pc(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 gm(n,r,e){return pm(n,r)&&pm(r,e)&&cc(n.position,r.position,e.position)}function cc(n,r,e){return Bn.copy(r).sub(n).cross(Ea.copy(e).sub(n))===0}function xm(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 vm(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function bm(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 pc(r,n,e)>Math.PI&&(a*=-1),Di(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 fc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function pm(n,r){return cc(n.position,n.controls[1].position,r.position)&&cc(n.position,r.controls[0].position,r.position)}function Sm(n,r,e,t,o=.5){let i=Bn.subVectors(r,n).multiplyScalar(o).add(n),s=Ea.subVectors(e,r).multiplyScalar(o).add(r),l=Mw.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=Bw.subVectors(s,i).multiplyScalar(o).add(i),a=Dw.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=Gw.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 wm(n,r,e=12,t=!0){let o=hm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=uc(r[c]),a=Bn,d=so(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof Ca||u instanceof dc||u instanceof Na){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&Vw(i,o))continue;i===void 0&&(i=mm),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 _m(n,r,e,t=12,o=!0){let i=hm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=uc(r[c]),d=Bn,p=so(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof Ca||a instanceof dc||a instanceof Na){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=mm:(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 mc(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=so(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=so(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=so(n[0].roundedCurveCorner,r)*.5),t}function so(n,r=12){return n&&n instanceof Cw?r*2:n&&(n instanceof Na||n instanceof Nw)?1:n&&n instanceof Lw?r*n.points.length:r}function Tm(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=uc(r[s]),c=so(l,e),u=Bn;for(let a=0;a<=c;a++)if(l instanceof Ca||l instanceof dc||l instanceof Na){if(l.getPoint(a/c,u),o!==void 0&&Rw(o,u,Bi))continue;o===void 0&&(o=Ea),o.copy(u),n.push(u.x,u.y),i++}}return Di(n[0],n[n.length-2],Bi)&&Di(n[1],n[n.length-1],Bi)&&(n.pop(),n.pop()),t&&i>1&&!(Di(n[i-1],n[1],Bi)&&Di(n[i-2],n[0],Bi))&&(n.push(n[0],n[1]),i++),n}var gc=new jr,Uw=new jr,zw=new jr,kw=new jr,Hw=new jr,Ww=new jr,Se=class extends Om{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new jw(new Fw(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=hc.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=>Kt.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=gc.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=hc.generateUUID()){let i;e instanceof jr?i=e:i=new jr(e,t);let s=new Kt(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 wm(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=mc(this.points,e,!1),this.roundedCurveDivisions=mc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return _m(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),Tm(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=so(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(fc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(gc.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){fc(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&&gm(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),b=1-w/h,S=w/y,A=d.getPointAt(b,gc),_=p.getPointAt(S,Uw);this._subSplitCurve(d,f,b,A,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let P=pc(A,s.position,_)/2,O=Math.tan(P)*A.distanceTo(s.position),[I,T]=xm(A,_,O,zw,kw),N=vm(I,T,s.position),[L,U]=bm(N,A,_,O,Hw,Ww);x=new La(A.clone(),L.clone(),U.clone(),_.clone())}else x=new Am(A.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 yc)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=Sm(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 Kt(hc.generateUUID(),new jr(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 La&&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 Am&&(i[l]=ym(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 La?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof yc&&(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 La?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof yc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Om&&(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 vc=Math.PI*2;function xc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function qw(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 Pm(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 $w(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,b=(l-y)/i,S=(-s-h)/o,A=(-l-y)/i,_=Pm(1,0,w,b),x=Pm(w,b,S,A);return!u&&x>0&&(x-=vc),u&&x<0&&(x+=vc),{centerx:g,centery:v,ang1:_,ang2:x}}function Im({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=$w(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(vc/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(qw(f,m)),f+=m;return c.map(w=>{let{x:b,y:S}=xc(w[0],o,i,h,y),{x:A,y:_}=xc(w[1],o,i,h,y),{x,y:P}=xc(w[2],o,i,h,y);return{x1:b,y1:S,x2:A,y2:_,x,y:P}})}import{BufferAttribute as Ba,BufferGeometry as Qw}from"three";var Ce;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ce||(Ce={}));var He;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(He||(He={}));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}(),Gi=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}(),Ma=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}(),Dn=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}(),Cm=function(){function n(){var r=new Dn,e=new Gi,t=new Ma(0),o=new Ma(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 Ma(0),t=new Ma(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 Dn,e=new Dn,t=new Gi,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 Dn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Gi;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 Gi;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 Dn;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 Gi;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}(),Nm=function(){function n(){this.handle=null}return n}(),Em=function(){function n(){this.key=null,this.node=0}return n}(),Yw=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 Nm,this.handles[t]=new Em;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 Nm;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Em}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}(),bc=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}(),Lm=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Xw=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Lm,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 Lm;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}(),Kw=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 bc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ce.ODD:return(e&1)!==0;case Ce.NONZERO:return e!==0;case Ce.POSITIVE:return e>0;case Ce.NEGATIVE:return e<0;case Ce.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,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 Dn,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 bc;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 bc,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 Xw(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 Yw(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}(),Zw=function(){function n(){this.mesh=new Cm,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ce.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,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===He.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===He.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 Cm),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=Ce.ODD),e===void 0&&(e=He.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_(),Kw.computeInterior(this,s);var l=this.mesh;return e===He.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===He.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function Io(n){var r=n.windingRule,e=r===void 0?Ce.ODD:r,t=n.elementType,o=t===void 0?He.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 Zw;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 mR=Ce.ODD,hR=Ce.NONZERO,yR=Ce.POSITIVE,gR=Ce.NEGATIVE,xR=Ce.ABS_GEQ_TWO,vR=He.POLYGONS,bR=He.CONNECTED_POLYGONS,SR=He.BOUNDARY_CONTOURS;var Gn=class extends Qw{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ce.ODD;this.elementType=He.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ce.ODD,elementType:He.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=Io({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 Ba(new Float32Array(p*3),3),this._normalAttribute=new Ba(new Float32Array(p*3),3),this._uvAttribute=new Ba(new Float32Array(p*2),2),this._indexAttribute=new Ba(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let b=0,S=p;b<S;b++){let A=b*2,_=l.vertices[A+0],x=l.vertices[A+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,w=g-y;for(let b=0,S=p;b<S;b++){let A=b*2,_=l.vertices[A+0],x=l.vertices[A+1],P=(_-m)/v,O=(x-y)/w;this._positionAttribute.setXYZ(b,_,x,0),this._normalAttribute.setXYZ(b,0,0,1),this._uvAttribute.setXY(b,P,O)}for(let b=0,S=f;b<S;b++){let A=b*3,_=l.elements[A+0],x=l.elements[A+1],P=l.elements[A+2];this._indexAttribute.setX(A+0,_),this._indexAttribute.setX(A+1,x),this._indexAttribute.setX(A+2,P)}}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 Gn(this._shape,this._curveSegments);return e.userData=Oo(this.userData),e}};import{BufferAttribute as Ga,BufferGeometry as Jw}from"three";var Da=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*Da.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*Da.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)}},Ri=Da;Ri.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Sc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Rn=class extends Jw{constructor(e,t,o=0,i=12,s=3,l=Ce.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(x=>{let P=x.extractShapePointsToFlatArray([],i),O=[];for(let I=P.length-1;I>=1;I-=2){let T=P[I-1],N=P[I-0];O.push(T,N)}return O}),a=Io({windingRule:l,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),d=Io({windingRule:Ce.ODD,elementType:He.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 x=0;x<d.elements.length;x++){let P=d.elements[x],O=x%2===0?a.vertexCount:0;a.elements.push(P+O)}for(let x=0;x<d.vertexIndices.length;x++){let P=d.vertexIndices[x],O=a.vertexCount;a.vertexIndices.push(P+O)}for(let x=0;x<d.vertices.length;x++){let P=d.vertices[x];a.vertices.push(P)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let x=0,P=a.vertexCount;x<P;x++){let O=x*2,I=a.vertices[O+0],T=a.vertices[O+1];I<f&&(f=I),I>m&&(m=I),T<h&&(h=T),T>y&&(y=T)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h;let g=a.vertexCount*2*(2+this._bevelSegments);this._buffer=new Ri(g);let v=[],w=[];for(let x=a.elementCount-1;x>=0;x--){let P=x>=p,O=x*2,I=a.elements[O+0],T=a.elements[O+1],N=I+T,L={start:I,count:T,normals:[],continuous:[],concave:[]},U=I,K=N-1,J=I+1,ie=this._shape.roundedCurves.length;do{let j=U-I,M=a.vertices[K*2+0],B=a.vertices[K*2+1],D=a.vertices[U*2+0],F=a.vertices[U*2+1],Y=a.vertices[J*2+0],k=a.vertices[J*2+1],V=D-M,G=F-B,H=Math.sqrt(V*V+G*G);V/=H,G/=H;let $=D-Y,ee=F-k,se=Math.sqrt($*$+ee*ee);$/=se,ee/=se,L.normals[j*2+0]=-ee,L.normals[j*2+1]=$,L.concave[j]=V*ee-G*$>0;let te=a.vertexIndices[U];if(Array.isArray(te))L.continuous[j]=!1;else{let[re,oe]=this._shape.getCurveIndexFromVertexId(te-1,!0);if(oe>0&&oe<1)L.continuous[j]=!0;else{let Z=oe===1?re+1:re-1;Z=(Z+ie)%ie;let me=oe===1?0:1,de=this._shape.roundedCurves[re].getTangent(oe),he=this._shape.roundedCurves[Z].getTangent(me);L.continuous[j]=de.dot(he)>.95}}P&&(L.normals[j*2+0]*=-1,L.normals[j*2+1]*=-1),[K,U,J]=[U,J,J+1],J>=N&&(J-=T)}while(J!==I+1);let z=[];z.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(I*2,N*2),vertexCount:T,vertexIndices:new Array(T).fill(!0).map((j,M)=>[M,M]),elements:[0,T],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(I*2,N*2)});for(let j=1;j<=this._bevelSegments;j++){let M=j/this._bevelSegments*Math.PI/2,B=(1-Math.cos(M))*this._bevelSize,D=[],F=[],Y=[],k=[],V=0;for(let H=0;H<T;H++){let $=H*2,ee=(H-1+T)%T*2,se=a.vertices[L.start*2+$+0],te=a.vertices[L.start*2+$+1],re=-L.normals[ee+0]*B,oe=-L.normals[ee+1]*B,Z=-L.normals[$+0]*B,me=-L.normals[$+1]*B;if(L.concave[H]||!L.concave[H]&&P){let de=Math.atan2(oe,re),he=Math.atan2(me,Z);he>de&&(he-=Math.PI*2);let st=he-de;if(L.continuous[H]||P){let be=de+st/2,Pe=Math.cos(be)*B,Ie=Math.sin(be)*B;D[2*V+0]=se+Pe*(P?-1:1),D[2*V+1]=te+Ie*(P?-1:1),k[V]=H,V++}else{let be=Math.max(1,Math.floor(i/4*Math.abs(st)/Math.PI));for(let Pe=0;Pe<=be;Pe++){let Ie=de+st*(Pe/be),gt=Math.cos(Ie)*B,Hr=Math.sin(Ie)*B;D[2*V+0]=se+gt,D[2*V+1]=te+Hr,k[V]=H,V++}}}else D[2*V+0]=se+re,D[2*V+1]=te+oe,k[V]=H,F[H]=V,V++,D[2*V+0]=se,D[2*V+1]=te,k[V]=H,V++,D[2*V+0]=se+Z,D[2*V+1]=te+me,k[V]=H,Y[H]=V,V++}let G=Io({windingRule:Ce.POSITIVE,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:H=>{let ee=H.Org.idx,se=k[ee],te=k[(ee+1)%k.length];H.idx=[se,te],H.Sym.idx=[te,se]},vertexIdCallback:H=>{let $=H.Lprev.idx;return[$?$[1]:0,H.idx[0]]}});if(!G)throw console.log("Error"),new Error(`error generating bevel geometry for ${j}'th loop`);if(!G.vertexCount)break;for(let H=0;H<G.vertexIndices.length;H++){let[$,ee]=G.vertexIndices[H];if($===ee)continue;let se=ee;ee<$&&(se+=T);for(let te=$;te<se;te++){let re=te%T,oe=(te+1)%T;if(!L.continuous[re]||!L.continuous[oe]){G.vertexIndices[H]=[$,re],G.vertexIndices.splice(H+1,0,[oe,ee]),G.vertices.splice((H+1)*2,0,G.vertices[H*2],G.vertices[H*2+1]);break}}}z.push({bevelI:j,angle:M,size:B,boundary:G,reverseMap:k,insetPoints:D})}let W=(j,M,B)=>{let D=0,F=j.boundary.vertexIndices.length;for(;D<F&&B(j.boundary.vertexIndices[M]);)M=(M+1)%F,D++;return D},q=v.length;for(let j=1;j<z.length;j++){let M=z[j-1],B=z[j],D=M.boundary.vertexIndices.length,F=B.boundary.vertexIndices.length;if(!D||!F)break;let Y=L.concave.length,k=0,V=Sc(k,T);for(;!M.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=Sc(k,T);let G=M.boundary.vertexIndices.findIndex(V),H=B.boundary.vertexIndices.findIndex(V);do G=(G+1)%D;while(V(M.boundary.vertexIndices[G]));do H=(H+1)%F;while(V(B.boundary.vertexIndices[H]));k=(k+1)%T;let $=k,ee=this.buildBevelVert(L,M,(G-1+D)%D),se=this.buildBevelVert(L,B,(H-1+F)%F),te=ee,re=se,oe,Z,me=!1;do{V=Sc(k,T);let de=W(M,G,V),he=W(B,H,V),st=me;if(me=!1,de&&!he){for(let be=0;be<de;be++)oe=this.buildBevelVert(L,M,(G+be)%D,be/(de-1)),v.push(te.topN,oe.topP,re.topN),v.push(oe.bottomP,te.bottomN,re.bottomN),te=oe;me=!0}else if(!de&&he)for(let be=0;be<he;be++)Z=this.buildBevelVert(L,B,(H+be)%F,be/(he-1)),v.push(re.topN,te.topP,Z.topP),v.push(te.bottomP,re.bottomN,Z.bottomP),re=Z;else if(de&&he)if(oe=this.buildBevelVert(L,M,G,0),Z=this.buildBevelVert(L,B,H,0),st?(v.push(te.topN,Z.topP,re.topN),v.push(te.topN,oe.topP,Z.topP),v.push(Z.bottomP,te.bottomN,re.bottomN),v.push(Z.bottomP,oe.bottomP,te.bottomN)):(v.push(re.topN,te.topN,oe.topP),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,te.bottomN,re.bottomN),v.push(oe.bottomP,re.bottomN,Z.bottomP)),te=oe,re=Z,de===he)for(let be=1;be<de;be++)oe=this.buildBevelVert(L,M,(G+be)%D,be/(de-1)),Z=this.buildBevelVert(L,B,(H+be)%F,be/(he-1)),v.push(te.topN,oe.topP,re.topN),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,te.bottomN,re.bottomN),v.push(oe.bottomP,re.bottomN,Z.bottomP),te=oe,re=Z;else if(de>he){let be=de/he,Pe=0;for(let Ie=1;Ie<de;Ie++)oe=this.buildBevelVert(L,M,(G+Ie)%D,Ie/(de-1)),v.push(te.topN,oe.topP,re.topN),v.push(oe.bottomP,te.bottomN,re.bottomN),te=oe,Ie>(Pe+1)*be&&(Pe++,Z=this.buildBevelVert(L,B,(H+Pe)%F,Pe/(he-1)),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,re.bottomN,Z.bottomP),re=Z)}else{let be=he/de,Pe=0;for(let Ie=1;Ie<he;Ie++)Z=this.buildBevelVert(L,B,(H+Ie)%F,Ie/(he-1)),v.push(re.topN,oe.topP,Z.topP),v.push(oe.bottomP,re.bottomN,Z.bottomP),re=Z,Ie>(Pe+1)*be&&(Pe++,oe=this.buildBevelVert(L,M,(G+Pe)%D,Pe/(de-1)),v.push(te.topN,oe.topP,re.topN),v.push(oe.bottomP,te.bottomN,re.bottomN),te=oe)}G=(G+de)%D,H=(H+he)%F,k=(k+1)%Y}while(k!==$)}{let j=z[0];for(let M=0,B=j.boundary.vertexCount;M<B;M++){let D=this.buildBevelVert(L,j,M),F=this.buildBevelVert(L,j,(M+1)%B);v.push(F.topP,D.topN,D.bottomN),v.push(F.topP,D.bottomN,F.bottomP)}}if(P){let j=[];for(let M=v.length-1;M>=q+2;M-=3){let B=v[M-2],D=v[M-1],F=v[M-0];j.push(F,D,B)}v.splice(q,v.length-q,...j)}if(P){let j=[];for(let M=z[z.length-1].boundary.vertices.length-1;M>=1;M-=2){let B=z[z.length-1].boundary.vertices[M-1],D=z[z.length-1].boundary.vertices[M-0];j.push(B,D)}w.push(j)}if(!P){let j=z[z.length-1],M=Io({windingRule:z.length>1?Ce.POSITIVE:Ce.ODD,elementType:He.POLYGONS,vertexSize:2,strict:!0,contours:[j.insetPoints,...w]});if(!M)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:v.length});for(let B=0;B<M.elementCount*3;B+=3){let D=this.buildSurfaceVert(M,M.elements[B+0]),F=this.buildSurfaceVert(M,M.elements[B+1]),Y=this.buildSurfaceVert(M,M.elements[B+2]);v.push(D.top,F.top,Y.top),v.push(Y.bottom,F.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Ga(Uint32Array.from(v),1),S=new Ga(this._buffer.positions,3),A=new Ga(this._buffer.normals,3),_=new Ga(this._buffer.uvs,2);S.needsUpdate=!0,A.needsUpdate=!0,_.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",A),this.setAttribute("uv",_),this.setIndex(b)}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],b=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,A=(w-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],P=e.normals[g+0],O=e.normals[g+1];if(p){let U=P-_,K=O-x;_=_+U*(1-i),x=x+K*(1-i);let J=Math.sqrt(_*_+x*x);_/=J,x/=J}let I=this._buffer.get(d?2:4),T=I*3,N=I*2,L={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[T+0]=v,this._buffer.positions[T+1]=w,this._buffer.positions[T+2]=this._depth-b,this._buffer.normals[T+0]=_*f,this._buffer.normals[T+1]=x*f,this._buffer.normals[T+2]=m,this._buffer.uvs[N+0]=S,this._buffer.uvs[N+1]=A,this._buffer.positions[T+3]=v,this._buffer.positions[T+4]=w,this._buffer.positions[T+5]=b,this._buffer.normals[T+3]=_*f,this._buffer.normals[T+4]=x*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[N+2]=A,this._buffer.uvs[N+3]=S,d||(I+=2,T+=6,N+=4,L.topP=I+0,L.bottomP=I+1,this._buffer.positions[T+0]=v,this._buffer.positions[T+1]=w,this._buffer.positions[T+2]=this._depth-b,this._buffer.normals[T+0]=P*f,this._buffer.normals[T+1]=O*f,this._buffer.normals[T+2]=m,this._buffer.uvs[N+0]=S,this._buffer.uvs[N+1]=A,this._buffer.positions[T+3]=v,this._buffer.positions[T+4]=w,this._buffer.positions[T+5]=b,this._buffer.normals[T+3]=P*f,this._buffer.normals[T+4]=O*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[N+2]=A,this._buffer.uvs[N+3]=S),this.vertexCache[s]=L,L}clone(){let e=new Rn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Oo(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:Ce.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 Gn(n.shape,o,{windingRule:s}):l=new Rn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Bm,Vector2 as Dm}from"three";var Gm=Math.PI*2,Rm=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=e_(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 e_(n,r,e,t,o,i){if(t>=Gm)return o>30||o%4===0?(r_(n,r,e,i),Math.round(o/4)):Mm(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=Im({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?t_(n,s.x,s.y,u,o,r,e,i):Mm(n,t,o,r,e,i)}function t_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(Vn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=Vn(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?Vm(n,i,s,l):n.addPoint(Vn(0,0)),c}function Mm(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(Vn(u,a))}return r<Gm?i>0?Vm(n,t,o,i):n.addPoint(Vn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&jm(n,t,o,i)),1}function r_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(Ra(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Ra(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Ra(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Ra(o,i-e,o+l,i-e,o-l,i-e)),t>0&&jm(n,r,e,t)}function Vn(n,r){return new Kt(Bm.generateUUID(),new Dm(n,r))}function Ra(n,r,e,t,o,i){let s=Vn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Vm(n,r,e,t){Fm(n,r,e,t).forEach(i=>n.addPoint(i))}function jm(n,r,e,t){let o=Fm(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Fm(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Dm(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=Bm.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 o_,Float32BufferAttribute as wc,Vector3 as Um}from"three";var zm=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 Co(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Co=class extends o_{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 Um,y=new Um,g=h(),v=h(),w=h(),b,S,A,_,x,P,O,I,T=h(),N=h(),L=h(),U=h(),K=h(),J=h(),ie=h(),z=h(),W=t-2*c+.001,q=W/s,j=Math.ceil(l*s),M=j+1,B=W/j,D=-W/2,F=a+1,Y=2*Math.PI/a,k=Math.PI/2/p,V=.01,G=Math.min((1-d/100)*c,c-V),H=c-G,$=0,ee=2,se=p*ee+ee,te=F*se/ee,re=te+F*M,oe=F*(M+se),[Z,me,de]=[3,3,2].map(ke=>Array(oe*ke).fill(0)),he=[],st=i-c;function be(ke,It){let nr=Math.PI/2;P=It*B,I=2*Math.PI*(P%q)/q+nr,P+=D,O=Math.sin(I)*st,x=Math.cos(I)*st,r?ke.set(x,O,P):ke.set(x,P,O)}be(y,-1e-10),be(g,0),T.copy(y),be(y,1);let Pe=y.distanceTo(g),Ie=m?0:H+G,gt=Pe*j+2*Ie,Hr=G,Bt=gt-Ie;for(let ke=0;ke<=j;ke++){be(v,ke),z.subVectors(v,T).normalize(),T.copy(v),J.copy(v).setComponent(+r+1,0).normalize(),ie.crossVectors(z,J).normalize();let It=ke===0,nr=ke===j,Xy=It?3*Math.PI/2:k,Ky=It?Hr:Bt,Zy=It?F:re,Qy=It?0:oe-F,Jy=z.clone().multiplyScalar(It?-H:H).add(v),eg=z.clone().multiplyScalar(It?-1:1).normalize();for(let Cr=0;Cr<F;Cr++){let Cd=Cr*Y;if(N.addVectors(y.copy(J).multiplyScalar(c*Math.cos(Cd)),g.copy(ie).multiplyScalar(c*Math.sin(Cd))),L.copy(N).normalize(),It||nr){m||($=Qy+Cr,[0,1,2].forEach(xt=>{Z[$*3+xt]=Jy.getComponent(xt),me[$*3+xt]=eg.getComponent(xt)}),de[$*2]=+nr,de[$*2+1]=Cr/a),g.copy(L).multiplyScalar(G),w.addVectors(v,g);for(let xt=0;xt<p;xt++){let Sl=xt*k+Xy;U.addVectors(y.copy(z).multiplyScalar(H*Math.sin(Sl)),g.copy(L).multiplyScalar(H*Math.cos(Sl))),K.copy(U).normalize(),g.addVectors(w,U),U.normalize(),$=Zy+xt*F+Cr,[0,1,2].forEach(_s=>{Z[$*3+_s]=g.getComponent(_s),me[$*3+_s]=K.getComponent(_s)});let tg=+It+Math.sin(Sl);de[$*2]=(Ky+H*tg)/gt,de[$*2+1]=Cr/a}}g.addVectors(v,N),$=te+ke*F+Cr,[0,1,2].forEach(xt=>{Z[$*3+xt]=g.getComponent(xt),me[$*3+xt]=L.getComponent(xt)}),de[$*2]=(Ie+ke*Pe)/gt,de[$*2+1]=Cr/a}}let Wo=M+2*p+ee,vl=1,[bl,pi]=[+m,Wo-1];f&&(pi-=1);for(let ke=bl;ke<=pi-1;ke++){let It=m&&ke===pi-1;for(let nr=0;nr<F-1;nr++)b=ke*F+nr,S=b+1,A=(It?nr:b)+F,_=(It?nr+1:S)+F,ke===0?he.push(S,_,A):ke===Wo-2?he.push(b,S,A):he.push(b,S,A,S,_,A)}this.setIndex(he),this.setAttribute("position",new wc(Z,3)),this.setAttribute("normal",new wc(me,3)),this.setAttribute("uv",new wc(de,2))}};import{IcosahedronGeometry as n_}from"three";var km=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 Vi(r*.5,i,s):new n_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Vi=class extends io{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 Vi(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as i_,Shape as s_}from"three";var Hm=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 s_;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 i_(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Km,BufferGeometryLoader as y_,Vector3 as g_,BoxGeometry as Zm}from"three";import{BufferGeometry as p_,Vector2 as Oc,Vector3 as Xm}from"three";import{Box3 as a_,BufferAttribute as ji,BufferGeometry as Wm,Color as $m,EventDispatcher as l_,Float32BufferAttribute as jn,Matrix3 as qm,Matrix4 as Ym,MathUtils as c_,Object3D as d_,Sphere as u_,Vector2 as Vt,Vector3 as lt}from"three";var hr=new Ym,_c=new d_,Va=new lt,ao=class extends l_{constructor(){super(),this.uuid=c_.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 qm().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 _c.lookAt(r),_c.updateMatrix(),this.applyMatrix4(_c.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 lt().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new $m().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 lt().fromBufferAttribute(s,p),new lt().fromBufferAttribute(s,f),new lt().fromBufferAttribute(s,m)],v=new Fn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Vt().fromBufferAttribute(c,p),new Vt().fromBufferAttribute(c,f),new Vt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Vt().fromBufferAttribute(u,p),new Vt().fromBufferAttribute(u,f),new Vt().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(Va).negate(),this.translate(Va.x,Va.y,Va.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new Ym;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 lt,e=new lt;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 lt;if(r){let t=new lt,o=new lt;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 ao;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 lt,a={a:new lt,b:new lt,c:new lt};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 a_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new u_),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 qm().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 Fn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let b=0,S=g.length;b<S;b++)h=g[b].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),w.vertexNormals.push(h);w.color.copy(m.color);for(let b=0,S=v.length;b<S;b++)y=v[b],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,b=g.length;w<b;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 lt(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,b=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,A=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,w),_=a(_,5,b),_=a(_,6,S),_=a(_,7,A),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)),b){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&t.push(p(h.color)),A){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 ao().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,b=g.length;w<b;w++){let S=g[w];v.push(S.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 Tc().fromGeometry(this),e=new Wm,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",new ji(t,3).copyVector3sArray(r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",new ji(o,3).copyVector3sArray(r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",new ji(o,3).copyColorsArray(r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",new ji(o,2).copyVector2sArray(r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",new ji(o,2).copyVector2sArray(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 jn(u.data.length*3,3);a.name=u.name,i.push(a.copyVector3sArray(u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new jn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(r.skinIndices))}if(r.skinWeights.length>0){let o=new jn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(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 Wm,t=r.geometry;if(r.isPoints||r.isLine){let o=new jn(t.vertices.length*3,3),i=new jn(t.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(t.vertices)),e.setAttribute("color",i.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new jn(t.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(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}};ao.prototype.isGeometry=!0;var Tc=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 S=v.normal;this.normals.push(S,S,S)}let b=v.vertexColors;if(b.length===3)this.colors.push(b[0],b[1],b[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Vt,new Vt,new Vt))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Vt,new Vt,new Vt))}for(let S=0;S<c;S++){let A=l[S].vertices;u[S].data.push(A[v.a],A[v.b],A[v.c])}for(let S=0;S<d;S++){let A=a[S].vertexNormals[g];p[S].data.push(A.a,A.b,A.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}},Fn=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 lt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new $m,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}};var f_=["a","b","c"];function m_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ac(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Pc(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 h_(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],Pc(s.a,s.b,n,t,s,e),Pc(s.b,s.c,n,t,s,e),Pc(s.c,s.a,n,t,s,e)}function ja(n,r,e,t,o){n.push(new Fn(r,e,t,void 0,void 0,o))}function Un(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Fa(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ua=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof p_?r=new ao().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 Xm,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;h_(c,u,p,f);let m=[],h,y,g,v,w,b,S;for(let k of Array.from(f.keys())){for(y=f.get(k),g=new Xm,w=3/8,b=1/8,S=y.faces.length,S!=2&&(w=.5,b=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[m_(v,f_[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(b),g.add(e),y.newEdge=m.length,m.push(g)}let A,_,x,P,O,I,T,N=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],O=p[o].edges,t=O.length,t==3?A=3/16:t>3&&(A=3/(8*t)),_=1-t*Number(A),x=A,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),T=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)P=O[s],h=P.a!==I?P.a:P.b,e.add(h);e.multiplyScalar(Number(x)),T.add(e),N.push(T)}let L=N.concat(m),U=N.length,K,J,ie,z=[],W=[],q,j,M,B,D=new Oc,F=new Oc,Y=new Oc;for(o=0,i=u.length;o<i;o++)v=u[o],K=Number(Ac(v.a,v.b,f).newEdge)+U,J=Number(Ac(v.b,v.c,f).newEdge)+U,ie=Number(Ac(v.c,v.a,f).newEdge)+U,ja(z,K,J,ie,v.materialIndex),ja(z,v.a,K,ie,v.materialIndex),ja(z,v.b,J,K,v.materialIndex),ja(z,v.c,ie,J,v.materialIndex),d&&(q=a[o],j=q[0],M=q[1],B=q[2],D.set(Un(j.x,M.x),Un(j.y,M.y)),F.set(Un(M.x,B.x),Un(M.y,B.y)),Y.set(Un(j.x,B.x),Un(j.y,B.y)),Fa(W,D,F,Y),Fa(W,j,D,Y),Fa(W,M,F,D),Fa(W,B,Y,F));r.vertices=L,r.faces=z,d&&(r.faceVertexUvs[0]=W)}};var We=new g_,Qm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Km().copy(new Zm(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 Km().copy(new Zm(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 Ua(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 y_(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 Jm=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 x_,Float32BufferAttribute as Ic,Vector2 as yr,Vector3 as Ze}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,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 Nc(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Fi(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Cc(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 v_(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Nc=class extends x_{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),b=new Ze(0,f,0),S=new yr(r,-f),A=new yr(h,-f),_=new yr(0,b.y).sub(A),x=new yr(0,b.y).sub(S),P=new yr(_.y,-_.x).normalize(),O=new yr(x.y,-x.x).normalize(),T=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,T);let N;{let W=new Ze(P.x,P.y,0),q=new Ze(Math.cos(y)*W.x,W.y,Math.sin(y)*W.x);N=W.angleTo(q)}let L=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-N)/2),K=new Ze;if(!i){u.push(w.x,w.y,w.z),a.push(0,-1,0),d.push(0,0);let W=p++,q=[],j=S.clone(),M=L/Math.cos(Math.PI/t);j.x-=M;for(let B=0;B<t;B++){let D=B/t*Math.PI*2+m,F=new yr(Math.sin(D),Math.cos(D));Fi(j,F,K),u.push(K.x,K.y,K.z),a.push(0,-1,0),d.push(0,0),q.push(p++)}for(let B=0;B<q.length;B++)c.push(q[B],W,q[(B+1)%q.length])}let J=[];{let W=new Ze,q=new Ze,j=new Ze,M=new Ze,B=new Ze,D=new Ze;for(let F=0;F<t;F++){let Y=F/t*Math.PI*2+m,k=(F+.5)/t*Math.PI*2+m,V=(F+1)/t*Math.PI*2+m,G=new yr(Math.sin(Y),Math.cos(Y)),H=new yr(Math.sin(k),Math.cos(k)),$=new yr(Math.sin(V),Math.cos(V));Fi(S,G,q),Fi(S,$,j),Fi(P,H,W),Cc(b,q,j,U,U,M),u.push(M.x,M.y,M.z),Cc(q,b,j,U,L,B),u.push(B.x,B.y,B.z),Cc(j,q,b,L,U,D),u.push(D.x,D.y,D.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),d.push(0,0),d.push(0,0),d.push(0,0);let ee=p++,se=p++,te=p++;if(c.push(ee,se,te),s>0){{let Z=q.clone().add(j).multiplyScalar(.5),me=b.clone().sub(Z).normalize(),he=w.clone().sub(Z).normalize().add(me).normalize().multiplyScalar(-1),st=D.clone().sub(B);ie(Z,st,he,_.angle())}let re,oe;{let Z=new Ze;Fi(O,$,Z);let me=D.clone().add(M).multiplyScalar(.5);me=v_(me,j,b);let de=D.clone().sub(M);[re,oe]=ie(me,de,Z,N,M.y)}{let Z=re,me=Z.clone().setY(0).normalize(),de=new Ze(0,-1,0),he=me.clone().cross(de);z(Z,me,de,he)}J.concat(oe);{let Z=_.angle(),me=Math.PI-Z,de=b.clone();de.y-=s/Math.sin(Z-Math.PI/2);let he=new Ze,st=[];for(let Pe=0;Pe<l;Pe++){let Ie=[],gt=Math.PI/2-me*Pe/l,Hr=Math.cos(gt),Bt=Math.sin(gt),Wo=k;for(let vl=0;vl<=Pe;vl++){let bl=Math.cos(Wo),pi=Math.sin(Wo);W.x=Hr*pi,W.y=Bt,W.z=Hr*bl,he.copy(de).addScaledVector(W,s),u.push(he.x,he.y,he.z),a.push(W.x,W.y,W.z),d.push(0,0),Ie.push(p++),Wo+=Math.PI*2/Pe/t}st.push(Ie)}oe.reverse(),st.push(oe);let be=st.length-1;for(let Pe=0;Pe<be;Pe++){let Ie=st[Pe],gt=st[Pe+1],Hr=Ie.length-1;c.push(gt[1],Ie[0],gt[0]);for(let Bt=1;Bt<=Hr;Bt++)c.push(Ie[Bt],Ie[Bt-1],gt[Bt]),c.push(gt[Bt+1],Ie[Bt],gt[Bt])}}}}}this.setIndex(c),this.setAttribute("position",new Ic(u,3)),this.setAttribute("normal",new Ic(a,3)),this.setAttribute("uv",new Ic(d,2));function ie(W,q,j,M,B){let D=-M/2,F=(Math.PI-M)/2,Y=q.clone().normalize().cross(j);W.addScaledVector(j,-s/Math.sin(F));let k=new Ze,V=new Ze,G=1,H=p,$=[];for(let ee=0;ee<=l;ee++){let se=D+ee/l*M;V.set(0,0,0),V.addScaledVector(Y,Math.sin(se)),V.addScaledVector(j,Math.cos(se));for(let te=0;te<=G;te++){let re=te/G-.5;if(k.copy(W),k.addScaledVector(q,re),k.addScaledVector(V,s),B!=null){let oe=Math.max(0,k.y-B);k.addScaledVector(q,-oe/q.y)}u.push(k.x,k.y,k.z),a.push(V.x,V.y,V.z),d.push(0,0),te===0&&$.push(p),p++}}for(let ee=0;ee<l;ee++)for(let se=0;se<G;se++){let te=H+se+(G+1)*ee,re=te+(G+1),oe=re+1,Z=te+1;c.push(te,re,Z),c.push(re,oe,Z)}return[W.clone().addScaledVector(q,.5),$]}function z(W,q,j,M){let B=Math.PI/2,D=x.angle()-B,F=[],Y=new Ze,k=new Ze;for(let G=0;G<=l;G++){let H=[],$=G/l;for(let ee=0;ee<=G;ee++){let te=((G?ee/G:0)-.5)*v,re=Math.cos(te),oe=Math.sin(te),Z=Math.atan(Math.tan(D)*re),me=(B+Z)*$,de=Math.cos(me),he=Math.sin(me);Y.set(0,0,0),Y.addScaledVector(q,he*re),Y.addScaledVector(j,de),Y.addScaledVector(M,he*oe),k.copy(W).addScaledVector(Y,s),u.push(k.x,k.y,k.z),a.push(Y.x,Y.y,Y.z),d.push(0,0),H.push(p++)}F.push(H)}let V=F.length-1;for(let G=0;G<V;G++){let H=F[G],$=F[G+1],ee=H.length-1;c.push(H[0],$[1],$[0]);for(let se=1;se<=ee;se++)c.push(H[se-1],H[se],$[se]),c.push(H[se],$[se+1],$[se])}}}};var th=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(b,S,A){return S>e&&A>t?Math.min(b*e/S,b*t/A):S>e?b*e/S:A>t?b*t/A:b}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 b=0,S=r.points.length;b<S;b++)r.points[b].roundness=f[b],b>0&&f[b]!==f[b-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 b_}from"three";var rh=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 b_(.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 S_}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,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 S_(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as w_,Float32BufferAttribute as Ec,Vector3 as __}from"three";var nh=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 Lc(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Lc=class extends w_{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=(k=0,V=0,G=0)=>new __(k,V,G),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],w=-g,b=+g,[S,A,_]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],x=(k,V=!1)=>Math.sin(k-Math.PI/(1+ +V)),P=(k,V=!1)=>Math.cos(k-Math.PI/(1+ +V));_.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-v,I=S.z-a;o<=p?(_.z=Math.min(O,I),_.z==I&&(_.y-=(O-I)/Math.tan(p-o))):A.z=Math.min(A.z-O-v,S.z-a),m.subVectors(S,A),h.subVectors(_,A);let T=Math.min(m.length(),h.length())*i/100,N=T*Math.tan(o/2),L=T/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(L).add(A);m.set(0,x(o,!0),P(o,!0)),d.push([_,m.clone()]);let K=(Math.PI-o)/s;for(let k=0;k<=s;k++){let V=p+o+k*K;m.set(0,Math.sin(V)*N,Math.cos(V)*N),m.add(U),h.set(0,x(V),P(V)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let J=Math.sin(K/2)*N*2,ie=d.length-1,z=d[0][0].distanceTo(d[1][0]),W=d[ie-1][0].distanceTo(d[ie][0]),q=z+J*s+W;d[0].push(1);for(let k=0;k<=s;k++)d[k+1].push(1-(z+k*J)/q);d[ie].push(0);let[j,M,B]=d[0],D,F,Y;for(let k=1;k<d.length;k++)[D,F,Y]=d[k],l.push(w,j.y,j.z,w,D.y,D.z,b,j.y,j.z,b,j.y,j.z,w,D.y,D.z,b,D.y,D.z),c.push(0,M.y,M.z,0,F.y,F.z,0,M.y,M.z,0,M.y,M.z,0,F.y,F.z,0,F.y,F.z),u.push(0,B,0,Y,1,B,1,B,0,Y,1,Y),[j,M,B]=[D,F,Y];this.setAttribute("position",new Ec(l,3)),this.setAttribute("normal",new Ec(c,3)),this.setAttribute("uv",new Ec(u,2))}};var ih=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 b=0;b<o;b++){let S=h*b,A=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(A,_))}}else for(let b=0;b<o;b++){let S=f+Math.cos(y)*d,A=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,A)),y+=h,S=f+Math.cos(y)*g,A=m+Math.sin(y)*v,b<=o,a.addPoint(a.createPoint(S,A)),y+=h}a.isClosed=!0;for(let b=0,S=a.points.length;b<S;b++)a.points[b].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 T_}from"three";var sh=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 T_(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var ah=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=O_(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 O_(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 Co(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as A_}from"three";var lh=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 A_(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};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,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{BufferAttribute as dh,BufferGeometry as Mc}from"three";import{mergeBufferGeometries as P_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function I_(){let n=new Mc;return n.setAttribute("position",new dh(new Float32Array([]),3)),n.setIndex(new dh(new Uint16Array([]),1)),n}var C_=12,N_=1,zn=class extends Mc{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=E_(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Se().fromShape(S));this.vectorShapes=v;let w=v.map(S=>_t.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Ce.NONZERO:Ce.ODD,subdivisions:this.isLowResolution&&s>0?N_:C_}})),b=w.length?P_(w):I_();b.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([S,A])=>{this.setAttribute(S,A)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Qr(new Mc,zn.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 E_(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 Dc,BufferAttribute as dh,Uint32BufferAttribute as Gc,Float32BufferAttribute as Rc,Matrix4 as C_,Vector3 as zi,Sphere as N_,Box3 as E_,BoxGeometry as L_}from"three";var O_,kn=new Promise(n=>{O_=n});import{BufferGeometryLoader as A_}from"three";function No(n,r,e){let t={parameters:n,type:n.type};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 A_().parse(n);else{if(n.type==="SubdivGeometry")return new je(n,e);if(n.type==="TextGeometry")return new zn(n,r)}let o;try{o=Bc(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(tn.defaultData(),100,100);t.shape=i,o=Bc(t)}return o}import{Matrix4 as P_}from"three";var I_=new P_;function Ui(n,r,e,t){let o=n.position.array,i=n.normal.array,s=I_.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 za=new E_,Hn=new zi,ce;kn.then(n=>{ce=n});var uh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),ph=new Uint32Array([0,1,2,3]),fh=new Uint8Array([4]),je=class extends Dc{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=$r.div(t,o);this.subdividedGeometry&&Ui(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ui(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(Hn.fromArray(i));let l=Hn.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}=je.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new L_(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&&(je.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new N_,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;za.setFromBufferAttribute(t),za.getCenter(o),e.boundingSphere.radius=o.distanceTo(za.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),za.getSize(Hn);let i={width:Hn.x,height:Hn.y,depth:Hn.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&&(ce.free_bvh(t),ce.free_subdivision_surface(t));try{s=je.allocate(e,i)}catch(a){console.error(a,e),s=je.allocate({positionWASM:uh,indexWASM:ph,verticesPerFaceWASM:fh},i)}if(ce.set_destination_refinement_level(s,0),l=je.buildLevel(s,!0,u),e.subdivisions>0)try{ce.set_destination_refinement_level(s,e.subdivisions),c=je.buildLevel(s,!1,u)}catch{try{ce.set_destination_refinement_level(s,e.subdivisions-1),c=je.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 Co(!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:No(e,o,!1);let s,l,c,u;({positions:s,triIndices:u}=Uc(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}=zc(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=uh,i=ph,s=fh);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=ce._malloc(m),v=new Float32Array(ce.HEAPF32.buffer,g,p),w=new Uint32Array(ce.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 b;e?.scaleBaked?.some(A=>A!==1)&&(b=new C_().makeScale(...e.scaleBaked)),t&&(b?b.premultiply(t):b=t);let S=b?ce.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,b.elements):ce.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return ce._free(g),S}static buildLevel(e,t,o,i,s){let l=s?ce.get_mesh_data2(e,t?ce.Level.CONTROL:ce.Level.REFINED,o,s.elements):ce.get_mesh_data(e,t?ce.Level.CONTROL:ce.Level.REFINED,o),c=8,u=ce.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=ce.HEAPU32[u[d]>>2],f=ce.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=ce.HEAPU32[u[d]>>2],h=ce.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=ce.HEAPU32[u[d]>>2],g=ce.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=ce.HEAPU32[u[d]>>2],w=ce.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let b=new Dc;if(b.setIndex(new Gc(w,1)),b.setAttribute("position",new Rc(f,3)),b.setAttribute("normal",new Rc(h,3)),t){b.setAttribute("faceMap",new Gc(g,1));let S=new Float32Array(h.length/3*4).fill(0);b.setAttribute("color",new dh(S,4))}return ce.free_mesh_data(l),b.userData.type="SubdivGeometry",b}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,ce.free_mesh_data(l)}static freeSubdivPointer(e){ce.free_bvh(e),ce.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=ce.get_wireframe_data_for_base_level(e),s=4,l=ce.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=ce.HEAPU32[l[u]>>2],d=ce.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ce.HEAPU32[l[u]>>2],f=ce.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new Dc;m.setAttribute("position",new Rc(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 dh(h,3)),m.setIndex(new Gc(f,1)),ce.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,ce.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||ce.set_destination_refinement_level(e,t);let s=o?ce.get_topological_data2(e,i?ce.Level.CONTROL:ce.Level.REFINED,o.elements):ce.get_topological_data(e,i?ce.Level.CONTROL:ce.Level.REFINED),l=6,c=ce.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=ce.HEAPU32[c[a]>>2],p=new Float32Array(ce.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=ce.HEAPU32[c[a]>>2],m=new Uint32Array(ce.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=ce.HEAPU32[c[a]>>2],y=new Uint8Array(ce.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return ce.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var mh=["getX","getY","getZ"];function Uc(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[mh[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[mh[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 ka=new zi,Vc=new zi,jc=new zi,Fc=new zi;function zc(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]){ka.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Vc.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),jc.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Fc.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Vc.sub(ka).normalize(),jc.sub(ka).normalize(),Fc.sub(ka).normalize();let c=Vc.cross(jc).dot(Fc);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 Zt={};tg(Zt,{calcBoolean:()=>R_,calcBooleanTopological:()=>G_,freeMeshSet:()=>F_,getMeshSet:()=>V_,transformMeshSet:()=>j_});var M_,hh=new Promise(n=>{M_=n});import{Float32BufferAttribute as yh,Sphere as B_}from"three";var ge,Wn;hh.then(n=>ge=n);function D_(n,r,e){let t,{positions:o,triIndices:i}=Uc(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=zc(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 gh(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=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,r):new Float32Array(ge.HEAPF32.buffer,i,r)).set(n,0),i}function xh(n){switch(n){case 0:return ge.OP.UNION;case 1:return ge.OP.INTERSECTION;case 2:return ge.OP.A_MINUS_B;case 3:return ge.OP.B_MINUS_A;case 4:return ge.OP.SYMMETRIC_DIFFERENCE;case 5:return ge.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function G_(n,r){Wn===void 0&&(Wn=ge.init_csg());let e=gh(n),t=ge.csg_calc_topological(Wn,e,n.length,xh(r));ge._free(e);let o=6,i=ge.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],u=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],d=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ge.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function R_(n,r,e,t){Wn===void 0&&(Wn=ge.init_csg());let o=gh(n),i=ge.csg_calc(Wn,o,n.length,t,xh(r));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ge.HEAPU32[l[u]>>2],d=ge.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ge.HEAPU32[l[u]>>2],f=ge.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=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new B_),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},ge.free_mesh_data(i),m}function V_(n,r,e){if(ge===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 b=0;b<y.verticesPerFace[g];b++)o[w++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=D_(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=ge._malloc(a),m=new Float32Array(ge.HEAPF32.buffer,f,c),h=new Uint32Array(ge.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ge.get_csg_mesh(f,s,f+d,l,i)}function j_(n,r){ge.transform_csg_mesh(n,r.elements)}function F_(n){ge.free_csg_mesh(n)}var U_={ConeGeometry:am,CubeGeometry:lm,CylinderGeometry:sm,DodecahedronGeometry:cm,EllipseGeometry:Gm,HelixGeometry:Um,IcosahedronGeometry:zm,LatheGeometry:km,NonParametricGeometry:Zm,PolygonGeometry:Qm,PyramidGeometry:Jm,RectangleGeometry:eh,SphereGeometry:th,PlaneGeometry:rh,BackdropGeometry:oh,StarGeometry:nh,TextFrameGeometry:ih,TorusGeometry:sh,TorusKnotGeometry:ah,TriangleGeometry:lh,VectorGeometry:_t},Bc=n=>U_[n.type].create(n);function ki(n){return n!==null&&"booleanOp"in n}var qn=class extends Pa(k_){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new z_}updateVisible(){super.updateVisible(),this.visible=!ki(this.parent)&&this.visible,ki(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Zt.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 qn&&(e.freeBooleanPointer(),ki(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&ki(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var Ha=new H_;function kc(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)}Ha.min.set(i,s,l),Ha.max.set(c,u,a),Ha.getCenter(t),Ha.getSize(o).multiplyScalar(.5)}var $_=new W_,Y_=new q_,ot=class extends qn{constructor(r,e){super($_,Y_),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?kc(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 rO,Matrix4 as oO,Sphere as Hh,Vector3 as nO}from"three";import{BufferAttribute as JT,Float32BufferAttribute as kh,MathUtils as hd,Vector3 as yd}from"three";import{ShaderMaterial as FT}from"three";import{CubeReflectionMapping as sT,CubeRefractionMapping as aT,CubeUVReflectionMapping as lT,LinearEncoding as wh,sRGBEncoding as cT}from"three";var Hi=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 X_}from"three";var Qe=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=X_.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 Hc=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 Hc;import{Vector2 as vh}from"three";import{MathUtils as K_}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=K_.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 vh?e:new vh(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 bh}from"three";var nt=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof bh?e:new bh(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 Z_}from"three";var $e=class extends Z_{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 Q_=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Sh=/[a-z_0-9]+/gi,X=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=Sh.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=Q_.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Sh);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 J_=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Wc=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Wc.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=J_.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)}},ve=Wc;ve.PI="PI",ve.PI2="PI2",ve.RECIPROCAL_PI="RECIPROCAL_PI",ve.RECIPROCAL_PI2="RECIPROCAL_PI2",ve.LOG2="LOG2",ve.EPSILON="EPSILON";var eT=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),tT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),$n=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=eT.exec(e);if(t){let o=t[2],i;for(;i=tT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Yn=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 Yn});qe.addKeyword("uv2",function(){return new Yn(1)});import{LinearEncoding as rT,sRGBEncoding as oT}from"three";var Eo=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Eo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case rT:return["Linear"];case oT:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Eo.Nodes[this.method],l=e.include(s);if(l===Eo.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=Eo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Eo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},ft=Eo;ft.Nodes={LinearToLinear:new X(["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 Dc,BufferAttribute as mh,Uint32BufferAttribute as Gc,Float32BufferAttribute as Rc,Matrix4 as D_,Vector3 as zi,Sphere as G_,Box3 as R_,BoxGeometry as V_}from"three";var ph,kn=new Promise(n=>{ph=n}),uh=!1;async function fh(){if(uh)return;let r=pr?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.202/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});ph(i),uh=!0}import{BufferGeometryLoader as L_}from"three";function No(n,r,e){let t={parameters:n,type:n.type};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 L_().parse(n);else{if(n.type==="SubdivGeometry")return new je(n,e);if(n.type==="TextGeometry")return new zn(n,r)}let o;try{o=Bc(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(tn.defaultData(),100,100);t.shape=i,o=Bc(t)}return o}import{Matrix4 as M_}from"three";var B_=new M_;function Ui(n,r,e,t){let o=n.position.array,i=n.normal.array,s=B_.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 za=new R_,Hn=new zi,ce;kn.then(n=>{ce=n});var hh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),yh=new Uint32Array([0,1,2,3]),gh=new Uint8Array([4]),je=class extends Dc{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=Yr.div(t,o);this.subdividedGeometry&&Ui(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ui(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(Hn.fromArray(i));let l=Hn.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}=je.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new V_(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&&(je.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new G_,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;za.setFromBufferAttribute(t),za.getCenter(o),e.boundingSphere.radius=o.distanceTo(za.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),za.getSize(Hn);let i={width:Hn.x,height:Hn.y,depth:Hn.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&&(ce.free_bvh(t),ce.free_subdivision_surface(t));try{s=je.allocate(e,i)}catch(a){console.error(a,e),s=je.allocate({positionWASM:hh,indexWASM:yh,verticesPerFaceWASM:gh},i)}if(ce.set_destination_refinement_level(s,0),l=je.buildLevel(s,!0,u),e.subdivisions>0)try{ce.set_destination_refinement_level(s,e.subdivisions),c=je.buildLevel(s,!1,u)}catch{try{ce.set_destination_refinement_level(s,e.subdivisions-1),c=je.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 Co(!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:No(e,o,!1);let s,l,c,u;({positions:s,triIndices:u}=Uc(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}=zc(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=hh,i=yh,s=gh);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=ce._malloc(m),v=new Float32Array(ce.HEAPF32.buffer,g,p),w=new Uint32Array(ce.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 b;e?.scaleBaked?.some(A=>A!==1)&&(b=new D_().makeScale(...e.scaleBaked)),t&&(b?b.premultiply(t):b=t);let S=b?ce.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,b.elements):ce.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return ce._free(g),S}static buildLevel(e,t,o,i,s){let l=s?ce.get_mesh_data2(e,t?ce.Level.CONTROL:ce.Level.REFINED,o,s.elements):ce.get_mesh_data(e,t?ce.Level.CONTROL:ce.Level.REFINED,o),c=8,u=ce.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=ce.HEAPU32[u[d]>>2],f=ce.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=ce.HEAPU32[u[d]>>2],h=ce.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=ce.HEAPU32[u[d]>>2],g=ce.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=ce.HEAPU32[u[d]>>2],w=ce.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let b=new Dc;if(b.setIndex(new Gc(w,1)),b.setAttribute("position",new Rc(f,3)),b.setAttribute("normal",new Rc(h,3)),t){b.setAttribute("faceMap",new Gc(g,1));let S=new Float32Array(h.length/3*4).fill(0);b.setAttribute("color",new mh(S,4))}return ce.free_mesh_data(l),b.userData.type="SubdivGeometry",b}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,ce.free_mesh_data(l)}static freeSubdivPointer(e){ce.free_bvh(e),ce.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=ce.get_wireframe_data_for_base_level(e),s=4,l=ce.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=ce.HEAPU32[l[u]>>2],d=ce.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ce.HEAPU32[l[u]>>2],f=ce.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new Dc;m.setAttribute("position",new Rc(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 mh(h,3)),m.setIndex(new Gc(f,1)),ce.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,ce.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||ce.set_destination_refinement_level(e,t);let s=o?ce.get_topological_data2(e,i?ce.Level.CONTROL:ce.Level.REFINED,o.elements):ce.get_topological_data(e,i?ce.Level.CONTROL:ce.Level.REFINED),l=6,c=ce.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=ce.HEAPU32[c[a]>>2],p=new Float32Array(ce.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=ce.HEAPU32[c[a]>>2],m=new Uint32Array(ce.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=ce.HEAPU32[c[a]>>2],y=new Uint8Array(ce.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return ce.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var xh=["getX","getY","getZ"];function Uc(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[xh[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[xh[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 ka=new zi,Vc=new zi,jc=new zi,Fc=new zi;function zc(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]){ka.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Vc.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),jc.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Fc.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Vc.sub(ka).normalize(),jc.sub(ka).normalize(),Fc.sub(ka).normalize();let c=Vc.cross(jc).dot(Fc);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 Zt={};ag(Zt,{calcBoolean:()=>k_,calcBooleanTopological:()=>z_,freeMeshSet:()=>q_,getMeshSet:()=>H_,transformMeshSet:()=>W_});var j_,vh=new Promise(n=>{j_=n});import{Float32BufferAttribute as bh,Sphere as F_}from"three";var ge,Wn;vh.then(n=>ge=n);function U_(n,r,e){let t,{positions:o,triIndices:i}=Uc(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=zc(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 Sh(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=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,r):new Float32Array(ge.HEAPF32.buffer,i,r)).set(n,0),i}function wh(n){switch(n){case 0:return ge.OP.UNION;case 1:return ge.OP.INTERSECTION;case 2:return ge.OP.A_MINUS_B;case 3:return ge.OP.B_MINUS_A;case 4:return ge.OP.SYMMETRIC_DIFFERENCE;case 5:return ge.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function z_(n,r){Wn===void 0&&(Wn=ge.init_csg());let e=Sh(n),t=ge.csg_calc_topological(Wn,e,n.length,wh(r));ge._free(e);let o=6,i=ge.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],u=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],d=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ge.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function k_(n,r,e,t){Wn===void 0&&(Wn=ge.init_csg());let o=Sh(n),i=ge.csg_calc(Wn,o,n.length,t,wh(r));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ge.HEAPU32[l[u]>>2],d=ge.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ge.HEAPU32[l[u]>>2],f=ge.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new bh(d,3)),e.setAttribute("normal",new bh(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new F_),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},ge.free_mesh_data(i),m}function H_(n,r,e){if(ge===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 b=0;b<y.verticesPerFace[g];b++)o[w++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=U_(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=ge._malloc(a),m=new Float32Array(ge.HEAPF32.buffer,f,c),h=new Uint32Array(ge.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ge.get_csg_mesh(f,s,f+d,l,i)}function W_(n,r){ge.transform_csg_mesh(n,r.elements)}function q_(n){ge.free_csg_mesh(n)}var $_={ConeGeometry:lm,CubeGeometry:cm,CylinderGeometry:am,DodecahedronGeometry:dm,EllipseGeometry:Rm,HelixGeometry:zm,IcosahedronGeometry:km,LatheGeometry:Hm,NonParametricGeometry:Qm,PolygonGeometry:Jm,PyramidGeometry:eh,RectangleGeometry:th,SphereGeometry:rh,PlaneGeometry:oh,BackdropGeometry:nh,StarGeometry:ih,TextFrameGeometry:sh,TorusGeometry:ah,TorusKnotGeometry:lh,TriangleGeometry:ch,VectorGeometry:_t},Bc=n=>$_[n.type].create(n);function ki(n){return n!==null&&"booleanOp"in n}var qn=class extends Pa(X_){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Y_}updateVisible(){super.updateVisible(),this.visible=!ki(this.parent)&&this.visible,ki(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Zt.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 qn&&(e.freeBooleanPointer(),ki(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&ki(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var Ha=new K_;function kc(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)}Ha.min.set(i,s,l),Ha.max.set(c,u,a),Ha.getCenter(t),Ha.getSize(o).multiplyScalar(.5)}var J_=new Z_,eT=new Q_,ot=class extends qn{constructor(r,e){super(J_,eT),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?kc(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 lO,Matrix4 as cO,Sphere as Yh,Vector3 as dO}from"three";import{BufferAttribute as iO,Float32BufferAttribute as $h,MathUtils as hd,Vector3 as yd}from"three";import{ShaderMaterial as qT}from"three";import{CubeReflectionMapping as pT,CubeRefractionMapping as fT,CubeUVReflectionMapping as mT,LinearEncoding as Ah,sRGBEncoding as hT}from"three";var Hi=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 tT}from"three";var Qe=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=tT.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 Hc=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 Hc;import{Vector2 as _h}from"three";import{MathUtils as rT}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=rT.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 _h?e:new _h(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 Th}from"three";var nt=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Th?e:new Th(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 oT}from"three";var $e=class extends oT{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 nT=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Oh=/[a-z_0-9]+/gi,X=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=Oh.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=nT.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Oh);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 iT=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Wc=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Wc.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=iT.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)}},ve=Wc;ve.PI="PI",ve.PI2="PI2",ve.RECIPROCAL_PI="RECIPROCAL_PI",ve.RECIPROCAL_PI2="RECIPROCAL_PI2",ve.LOG2="LOG2",ve.EPSILON="EPSILON";var sT=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),aT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),$n=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=sT.exec(e);if(t){let o=t[2],i;for(;i=aT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Yn=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 Yn});qe.addKeyword("uv2",function(){return new Yn(1)});import{LinearEncoding as lT,sRGBEncoding as cT}from"three";var Eo=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Eo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case lT:return["Linear"];case cT:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Eo.Nodes[this.method],l=e.include(s);if(l===Eo.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=Eo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Eo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},ft=Eo;ft.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
5
  `)),sRGBToLinear:new X(["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 X(["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 X{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as nT}from"three";var Tt=class extends Ne{constructor(e=new nT,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Yn,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 Q=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 Wi=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 qc=class extends le{constructor(e,t,o=qc.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)}},Ot=qc;Ot.ADD="+",Ot.SUB="-",Ot.MUL="*",Ot.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)}},pe=Ae;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var Xn=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 Wi(Xn.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 Wi(Xn.Nodes.roughnessToMip,[i]),l=new pe(s,Xn.Nodes.m0,Xn.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(l,pe.FLOOR),u=new pe(l,pe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Ot(c,new Q(1).setReadonly(!0),Ot.ADD)),p=new pe(a,d,u,pe.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)}},Kn=Xn;Kn.Nodes=function(){let e=new $n(`struct TextureCubeUVData {
7
+ `))},ft.LINEAR_TO_LINEAR="LinearToLinear",ft.SRGB_TO_LINEAR="sRGBToLinear",ft.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends X{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as dT}from"three";var Tt=class extends Ne{constructor(e=new dT,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Yn,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 Q=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 Wi=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 qc=class extends le{constructor(e,t,o=qc.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)}},Ot=qc;Ot.ADD="+",Ot.SUB="-",Ot.MUL="*",Ot.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)}},pe=Ae;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var Xn=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 Wi(Xn.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 Wi(Xn.Nodes.roughnessToMip,[i]),l=new pe(s,Xn.Nodes.m0,Xn.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(l,pe.FLOOR),u=new pe(l,pe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Ot(c,new Q(1).setReadonly(!0),Ot.ADD)),p=new pe(a,d,u,pe.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)}},Kn=Xn;Kn.Nodes=function(){let e=new $n(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
@@ -83,7 +83,7 @@ var Ky=Object.create;var wl=Object.defineProperty;var Zy=Object.getOwnPropertyDe
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,P);return{bilinearCubeUV:u,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:t}}();var Lo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Lo.VIEW}getShared(){return this.scope===Lo.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 Lo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Lo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Lo.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=Lo;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 yr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??yr.LOCAL}getType(){switch(this.scope){case yr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case yr.LOCAL:case yr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case yr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case yr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case yr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case yr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},At=yr;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.PROJECTION="projection";qe.addKeyword("position",function(){return new At});qe.addKeyword("worldPosition",function(){return new At(At.WORLD)});qe.addKeyword("viewPosition",function(){return new At(At.VIEW)});var Qt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Qt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Qt.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Qt.VECTOR:{let s=new et(et.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new At(At.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 Qt.CUBE:{let s=new Qt(Qt.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Qt.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new Qt(Qt.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)}},gr=Qt;gr.CUBE="cube",gr.SPHERE="sphere",gr.VECTOR="vector";var Wa=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Kn(this.value,t??new gr(gr.VECTOR),o),this.irradianceNode=new Kn(this.value,new et(et.WORLD),new Q(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 iT}from"three";var qa=class extends Ne{constructor(e=new iT,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new gr,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 _h=["x","y","z","w"],dT=["float","vec2","vec3","vec4"],uT={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},pT={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[]"},$a=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
+ }`,P);return{bilinearCubeUV:u,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:t}}();var Lo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Lo.VIEW}getShared(){return this.scope===Lo.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 Lo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Lo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Lo.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=Lo;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 gr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??gr.LOCAL}getType(){switch(this.scope){case gr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case gr.LOCAL:case gr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case gr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case gr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case gr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case gr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},At=gr;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.PROJECTION="projection";qe.addKeyword("position",function(){return new At});qe.addKeyword("worldPosition",function(){return new At(At.WORLD)});qe.addKeyword("viewPosition",function(){return new At(At.VIEW)});var Qt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Qt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Qt.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Qt.VECTOR:{let s=new et(et.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new At(At.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 Qt.CUBE:{let s=new Qt(Qt.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Qt.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new Qt(Qt.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)}},xr=Qt;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var Wa=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Kn(this.value,t??new xr(xr.VECTOR),o),this.irradianceNode=new Kn(this.value,new et(et.WORLD),new Q(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 uT}from"three";var qa=class extends Ne{constructor(e=new uT,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new xr,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 Ph=["x","y","z","w"],yT=["float","vec2","vec3","vec4"],gT={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},xT={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[]"},$a=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 Ky=Object.create;var wl=Object.defineProperty;var Zy=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 Hi({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 Hi({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 X?o=this.includes.functions:r instanceof ve?o=this.includes.consts:r instanceof $n&&(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 X&&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 dT[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 sT:case aT:return new qa(t);case lT:return new Wa(new Tt(t));default:return new Tt(t)}else{if(t.isVector2)return new Je(t);if(t.isVector3)return new nt(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 uT[r]||r}getFormatByType(r){return pT[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return _h[r]}getIndexByElement(r){return _h.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=wh,e===wh&&this.context.gamma&&(e=cT),e}};import{Vector2 as Do,Vector3 as br,Vector4 as ei}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 fT,UniformsUtils as mT}from"three";var Mo=class extends Qe{constructor(){super("basic");this.nodeType="Basic";this.color=new Te(5855577),this.shadingAlpha=new Q(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(mT.merge([fT.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 Hi({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 Hi({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 X?o=this.includes.functions:r instanceof ve?o=this.includes.consts:r instanceof $n&&(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 X&&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 yT[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 pT:case fT:return new qa(t);case mT:return new Wa(new Tt(t));default:return new Tt(t)}else{if(t.isVector2)return new Je(t);if(t.isVector3)return new nt(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 gT[r]||r}getFormatByType(r){return xT[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Ph[r]}getIndexByElement(r){return Ph.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=Ah,e===Ah&&this.context.gamma&&(e=hT),e}};import{Vector2 as Do,Vector3 as wr,Vector4 as ei}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 vT,UniformsUtils as bT}from"three";var Mo=class extends Qe{constructor(){super("basic");this.nodeType="Basic";this.color=new Te(5855577),this.shadingAlpha=new Q(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(bT.merge([vT.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 Ky=Object.create;var wl=Object.defineProperty;var Zy=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 Th,UniformsUtils as hT}from"three";var Jt=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 it={normalRenderTarget:new Tt,normalRenderTargetDepth:new Tt,transmissionRenderTarget:new Tt,transmissionSize:new Je(2048,2048),transmissionRenderTargetDepth:new Tt,pixelRatioNode:new Q(1),resolution:new Je,penumbraSize:new Jt(5,.5)};for(let n of Object.values(it))n.isRenderGlobal=!0;var qi=class extends Qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Te(5855577),this.emissive=new Te(0),this.emissiveIntensity=new Q(1),this.shadingAlpha=new Q(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(hT.merge([Th.fog,Th.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 Ih,UniformsUtils as ST}from"three";var Jt=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 it={normalRenderTarget:new Tt,normalRenderTargetDepth:new Tt,transmissionRenderTarget:new Tt,transmissionSize:new Je(2048,2048),transmissionRenderTargetDepth:new Tt,pixelRatioNode:new Q(1),resolution:new Je,penumbraSize:new Jt(5,.5)};for(let n of Object.values(it))n.isRenderGlobal=!0;var qi=class extends Qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Te(5855577),this.emissive=new Te(0),this.emissiveIntensity=new Q(1),this.shadingAlpha=new Q(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(ST.merge([Ih.fog,Ih.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 Ky=Object.create;var wl=Object.defineProperty;var Zy=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 Oh,UniformsUtils as yT}from"three";var Ya=class extends Qe{constructor(){super("phong");this.nodeType="Phong";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new Q(30),this.shadingAlpha=new Q(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(yT.merge([Oh.fog,Oh.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 Ch,UniformsUtils as wT}from"three";var Ya=class extends Qe{constructor(){super("phong");this.nodeType="Phong";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new Q(30),this.shadingAlpha=new Q(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(wT.merge([Ch.fog,Ch.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 Ky=Object.create;var wl=Object.defineProperty;var Zy=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 $c,UniformsUtils as gT}from"three";var $i=class extends Qe{constructor(){super("standard");this.nodeType="Standard";this.color=new Te(5855577),this.roughness=new Q(.3),this.metalness=new Q(0),this.reflectivity=new Q(.5),this.shadingAlpha=new Q(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(gT.merge([$c.fog,$c.lights])),$c.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 $c,UniformsUtils as _T}from"three";var $i=class extends Qe{constructor(){super("standard");this.nodeType="Standard";this.color=new Te(5855577),this.roughness=new Q(.3),this.metalness=new Q(0),this.reflectivity=new Q(.5),this.shadingAlpha=new Q(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(_T.merge([$c.fog,$c.lights])),$c.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 Ky=Object.create;var wl=Object.defineProperty;var Zy=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 Ah,UniformsUtils as xT}from"three";var Yi=class extends Qe{constructor(){super("toon");this.nodeType="Toon";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new Q(30),this.shadingAlpha=new Q(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(xT.merge([Ah.fog,Ah.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 Nh,UniformsUtils as TT}from"three";var Yi=class extends Qe{constructor(){super("toon");this.nodeType="Toon";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new Q(30),this.shadingAlpha=new Q(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(TT.merge([Nh.fog,Nh.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 Ky=Object.create;var wl=Object.defineProperty;var Zy=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 lo=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 vT}from"three";var Zn=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new vT}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 Ph}from"three";var er=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Ph?new Array(e).fill(t):new Array(e).fill(new Ph(0))}};var Xi=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Xi||{}),ct=function(){let r=new X(`vec3 random3(vec3 c) {
380
+ `)}return t}};var lo=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 OT}from"three";var Zn=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new OT}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 Eh}from"three";var er=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Eh?new Array(e).fill(t):new Array(e).fill(new Eh(0))}};var Xi=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Xi||{}),ct=function(){let r=new X(`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 ls,Vector3 as Vr,Vector4 as Xa}from"three";function mt(n,r){return r.color(n)}function Ih(n,r){switch(n.type){case"fresnel":return wT(n,r);case"gradient":return _T(n);case"depth":return TT(n);case"normal":return OT(n);case"noise":return AT(n,r);case"rainbow":return PT(n);case"toon":return IT(n,r);case"outline":return CT(n,r);case"transmission":return NT(n,r);case"color":return ST(n,r)}}function bT(n){return{type:n.type}}function vr(n){let{alpha:r,mode:e}=n;return{...bT(n),alpha:r,mode:e}}function ST(n,r){return{...vr(n),color:mt(n.color,r)}}function wT(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...vr(n),color:mt(s,r),bias:e,scale:t,intensity:o,factor:i}}function _T(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...vr(n),gradientType:r,smooth:e,colors:t.map(c=>new Xa(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new ls(...s),morph:new ls(...l),angle:i}}function TT(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...vr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Vr(...s),direction:l?new Vr(...l):new Vr(1,0,0),colors:c.map(d=>d!==void 0?new Xa(d[0],d[1],d[2],d[3]):new Xa(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function OT(n){let{cnormal:r}=n;return{...vr(n),cnormal:new Vr(r[0],r[1],r[2])}}function AT(n,r){return{...vr(n),scale:n.scale,move:n.move,fA:new ls(...n.fA),fB:new ls(...n.fB),size:new Vr(...n.size),distortion:new ls(...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 PT(n){return{...vr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Vr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Vr(...n.offset)}}function IT(n,r){return{...vr(n),positioning:n.positioning,colors:n.colors.map(e=>new Xa(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Vr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:mt(n.shadowColor,r),offset:new Vr(...n.offset)}}function CT(n,r){return{...vr(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:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation}}function NT(n,r){return{...vr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var co=class extends $e{};import{Vector4 as MT}from"three";import{VideoTexture as ET,Texture as LT}from"three";var Ka=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 od=class extends Ka{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},rd;function Ch(n){return typeof n=="string"?n:(rd||(rd=new od),rd.load(n))}var Za=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&Qr)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&Qr)throw new Error("ref count is not 0")}},Qa=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&Qr)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 Jn=class extends Za{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=Ch(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new ET(this.img,void 0,e,e):o=new LT(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 Jn{};var uo=class extends Ne{};var nd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},id={depth:["colors"]};function BT(n,r,e){let t=nd[n.type],o=id[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 sd(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 Nh(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(ad(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 uo))switch(o=o||BT(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 co?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 co?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 nt:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Tt:{sd(s,r,e);break}case er:{l.value=s.map(c=>new MT(...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)}},cs=ld;cs.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1086
+ }`)}}();import{Vector2 as ls,Vector3 as br,Vector4 as Xa}from"three";function mt(n,r){return r.color(n)}function Lh(n,r){switch(n.type){case"fresnel":return IT(n,r);case"gradient":return CT(n);case"depth":return NT(n);case"normal":return ET(n);case"noise":return LT(n,r);case"rainbow":return MT(n);case"toon":return BT(n,r);case"outline":return DT(n,r);case"transmission":return GT(n,r);case"color":return PT(n,r)}}function AT(n){return{type:n.type}}function Sr(n){let{alpha:r,mode:e}=n;return{...AT(n),alpha:r,mode:e}}function PT(n,r){return{...Sr(n),color:mt(n.color,r)}}function IT(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...Sr(n),color:mt(s,r),bias:e,scale:t,intensity:o,factor:i}}function CT(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...Sr(n),gradientType:r,smooth:e,colors:t.map(c=>new Xa(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new ls(...s),morph:new ls(...l),angle:i}}function NT(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...Sr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new br(...s),direction:l?new br(...l):new br(1,0,0),colors:c.map(d=>d!==void 0?new Xa(d[0],d[1],d[2],d[3]):new Xa(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function ET(n){let{cnormal:r}=n;return{...Sr(n),cnormal:new br(r[0],r[1],r[2])}}function LT(n,r){return{...Sr(n),scale:n.scale,move:n.move,fA:new ls(...n.fA),fB:new ls(...n.fB),size:new br(...n.size),distortion:new ls(...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 MT(n){return{...Sr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new br(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new br(...n.offset)}}function BT(n,r){return{...Sr(n),positioning:n.positioning,colors:n.colors.map(e=>new Xa(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new br(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:mt(n.shadowColor,r),offset:new br(...n.offset)}}function DT(n,r){return{...Sr(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 br(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function GT(n,r){return{...Sr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var co=class extends $e{};import{Vector4 as jT}from"three";import{VideoTexture as RT,Texture as VT}from"three";var Ka=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 od=class extends Ka{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},rd;function Mh(n){return typeof n=="string"?n:(rd||(rd=new od),rd.load(n))}var Za=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&pr)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&pr)throw new Error("ref count is not 0")}},Qa=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&pr)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 Jn=class extends Za{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=Mh(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new RT(this.img,void 0,e,e):o=new VT(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 Jn{};var uo=class extends Ne{};var nd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},id={depth:["colors"]};function FT(n,r,e){let t=nd[n.type],o=id[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 sd(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 Bh(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(ad(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 uo))switch(o=o||FT(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 co?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 co?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 nt:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Tt:{sd(s,r,e);break}case er:{l.value=s.map(c=>new jT(...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)}},cs=ld;cs.Nodes=function(){return{matcap:new X(`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 Bo=class extends uo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as DT}from"three";var Ja=class extends uo{constructor(e){super("v3");this.image=e;this._value=new DT}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 cd=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(cd.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)}},ds=cd;ds.Nodes=function(){let e=new X(`float rand(float n) {
1098
+ `)}}();var Bo=class extends uo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as UT}from"three";var Ja=class extends uo{constructor(e){super("v3");this.image=e;this._value=new UT}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 cd=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(cd.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)}},ds=cd;ds.Nodes=function(){let e=new X(`float rand(float n) {
1099
1099
  return fract(sin(n) * 43758.5453123);
1100
1100
  }`),t=new X(`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 GT}from"three";function Eh(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var el=class extends Zn{constructor(e,t){super(new GT);this.repeat=e;this.offset=t;Eh(this.value,e,t)}updateMatrix(){Eh(this.value,this.repeat,this.offset)}};var Sr=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)ad(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return wr.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 Bo(i,t.texture.wrapping),l=new Ja(i),c=new el(t.texture.repeat,t.texture.offset),u=new Q(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 Do(t.size[0],t.size[1]):new Do(100,100)),m=new Q(t.alpha??1),h=new xe(t.mode??0),y=new is(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new ze(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 Bo(i,t.texture.wrapping),l=new Q(t.alpha??1),c=new xe(t.mode??0),u=new cs(s,l,c),a=new _e(u.calpha,"f");return new ze(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new nt(new br(...t.offset)),s=new Q(t.scale??10),l=new Q(t.intensity??8),c=new Q(t.movement??1),u=new xe(t.noiseType??0),a=new os(l,c,i,s,u);return new us(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return jT(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):Nh(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?sd(o.props,t.shared,this):!0;return!1}dispose(){if(RT(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}},ze=class extends Sr{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}},us=class extends Sr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},wr=class extends Sr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new Q(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Mo,u={};else if(o.category==="lambert"){s=new qi;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Yi;let a=new Q(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 $i;let a=new Q(o.roughness??.3),d=new Q(o.metalness??0),p=new Q(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new Ya;let a=new Q(o.shininess??30),d=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new Q(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new wr(e,t,o,s,u)}get category(){return this.node.category}};function RT(n){let r=n instanceof Sr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function VT(n,r,e,t){switch(n.type){case"color":{let o=new Te(t.color??5855577),i=new Q(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 ze(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(t.color??16777215),i=new Q(t.bias??.1),s=new Q(t.scale??1),l=new Q(t.intensity??2),c=new Q(t.factor??1),u=new Q(t.alpha??1),a=new xe(t.mode??0),d=new Zi(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new ze(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 Q(t.filmThickness??30),i=new Q(t.movement??0),s=new nt(t.wavelengths??new br(0,0,0)),l=new Q(t.noiseStrength??0),c=new Q(t.noiseScale??1),u=new nt(t.offset??new br(0,0,0)),a=new Q(t.alpha??1),d=new Qi(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new ze(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 Q(t.thickness??10),i=new Q(t.ior??1.5),s=new Q(t.roughness??.5),l=it.transmissionSize,c=it.transmissionRenderTarget,u=it.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new Je(d/a,1):new Je(1,a/d),f=new Q(t.alpha??1),m=new es(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ze(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 er(t.colors.length,t.colors):(i=new er(10,new ei(0,0,0,1)),i.value[1]=new ei(1,1,1,1));let s;t.steps?s=new Jt(t.steps.length,t.steps):(s=new Jt(10,1),s.value[0]=0);let l=new nt(t.source??new br(0,0,0)),c=new lo(t.isWorldSpace??!0),u=new Q(t.noiseStrength??0),a=new Q(t.noiseScale??1),d=new jt(t.shadowColor),p=new nt(t.offset??new br(0,0,0)),f=new Q(t.alpha??1),m=new ds(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ze(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 Q(t.outlineWidth??.1),l=new Q(t.contourWidth??.1),c=new Q(t.outlineThreshold??.1),u=new Q(t.contourThreshold??.1),a=new Q(t.outlineSmoothing??.1),d=new Q(t.contourFrequency??.1),p=new nt(t.contourDirections??new br(0,1,0)),f=new lo(t.positionalLines??!1),m=new lo(t.compensation??!0),h=it.normalRenderTarget,y=it.normalRenderTargetDepth,g=it.pixelRatioNode,v=it.resolution,w=new Q(t.alpha??1),b=new Ji(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,w),S=new _e(b.calpha,"f"),A=new xe(t.mode??0);return new ze(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:A},b,A,S)}case"depth":{let o=new xe(t.gradientType??0),i=new lo(t.smooth??!1),s=new Q(t.near??50),l=new Q(t.far??200),c=new Q(t.isVector??1),u=new Q(t.isWorldSpace??0),a=new nt(t.origin??new br),d=new nt(t.direction??new br),p;t.colors?p=new er(t.colors.length,t.colors):(p=new er(2,new ei(0,0,0,1)),p.value[1]=new ei(1,1,1,1));let f;t.steps?f=new Jt(t.steps.length,t.steps):(f=new Jt(2,1),f.value[0]=0);let m=new Q(t.alpha??1),h=new xe(t.mode??0),y=new ts(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new ze(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 Q(t.scale??1),i=new nt(t.size??new br(100,100,100)),s=new Q(t.move??1),l=new Je(t.fA??new Do(1.7,9.2)),c=new Je(t.fB??new Do(8.3,2.8)),u=new Je(t.distortion??new Do(1,1)),a=new jt(t.colorA),d=new jt(t.colorB),p=new jt(t.colorC),f=new jt(t.colorD),m=new Q(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new Ki(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new ze(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 nt(t.cnormal??new br(1,1,1)),i=new Q(t.alpha??1),s=new xe(t.mode??0),l=new as(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ze(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new lo(t.smooth??!1),s;t.colors?s=new er(t.colors.length,t.colors):(s=new er(10,new ei(0,0,0,1)),s.value[1]=new ei(1,1,1,1));let l;t.steps?l=new Jt(t.steps.length,t.steps):(l=new Jt(10,1),l.value[0]=0);let c=new Je(t.offset??new Do(0,0)),u=new Je(t.morph??new Do(0,0)),a=new Q(t.angle??0),d=new Q(t.alpha??1),p=new xe(t.mode??0),f=new ns(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new ze(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 Q(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 ze(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function jT(n,r,e,t){let o=Ih(e,t);return VT(e,n,r,o)}function ad(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 Lh(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 Pt=class extends FT{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 Pt{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()}},ti=class extends Pt{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=>Sr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=Lh(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 wr),this.lightLayer===void 0&&(this.lightLayer=new wr(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=Lh(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=Sr.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=Sr.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 ze),t=this.layers.findIndex(o=>o instanceof wr);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 ze&&(o=new rs(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 wr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ze&&(e=new rs(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 us);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Ot(t,e[o].position,Ot.ADD),t=new Ot(t,new Q(.5).setReadonly(!0),Ot.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,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=(nd[t.type]??[]).map(l=>t[l]),i=(id[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 $a;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 ze){let t=e.params.texture;if(t instanceof Bo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Pt.prototype,{properties:{get:function(){return this.fragment.properties}}});var Go=class extends ti{};var Gh=Tl(Mh());var Bh=new Map;function Dh(n){if(typeof n=="string")return n;let r=Bh.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Bh.set(n,r)),r.url}var Ro=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:Dh(r),format:"wav"},this.sound=new Gh.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 UT,Vector2 as Vo,Path as Rh,Shape as zT,ShapeUtils as kT,Color as HT}from"three";var rl=class{constructor(){this.type="ShapePath";this.color=new HT;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Rh,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,b=y.x,S=g.x,A=v.x,_=h.y,x=y.y,P=g.y,O=v.y,I=(A-S)*(_-P)-(O-P)*(w-S),T=(b-w)*(_-P)-(x-_)*(w-S),N=(O-P)*(b-w)-(A-S)*(x-_),L=I/N,U=T/N;if(N===0&&I!==0||L<=0||L>=1||U<0||U>1)return null;if(I===0&&N===0){for(let K=0;K<2;K++)if(i(K===0?g:v,h,y),t.loc===e.ORIGIN){let J=K===0?g:v;return{x:J.x,y:J.y,t:t.t}}else if(t.loc===e.BETWEEN){let J=+(w+t.t*(b-w)).toPrecision(10),ie=+(_+t.t*(x-_)).toPrecision(10);return{x:J,y:ie,t:t.t}}return null}else{for(let ie=0;ie<2;ie++)if(i(ie===0?g:v,h,y),t.loc===e.ORIGIN){let z=ie===0?g:v;return{x:z.x,y:z.y,t:t.t}}let K=+(w+L*(b-w)).toPrecision(10),J=+(_+L*(x-_)).toPrecision(10);return{x:K,y:J,t:L}}}function i(h,y,g){let v=g.x-y.x,w=g.y-y.y,b=h.x-y.x,S=h.y-y.y,A=v*S-b*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(A<-Number.EPSILON){t.loc=e.LEFT;return}if(A>Number.EPSILON){t.loc=e.RIGHT;return}if(v*b<0||w*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(b*b+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=b/v:_=S/w,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let w=1;w<h.length;w++){let b=h[w-1],S=h[w];for(let A=1;A<y.length;A++){let _=y[A-1],x=y[A],P=o(b,S,_,x);P!==null&&g.find(O=>O.t<=P.t+Number.EPSILON&&O.t>=P.t-Number.EPSILON)===void 0&&(g.push(P),v.push(new Vo(P.x,P.y)))}}return v}function l(h,y,g){let v=new Vo;y.getCenter(v);let w=[];return g.forEach(b=>{b.boundingBox.containsPoint(v)&&s(h,b.points).forEach(A=>{w.push({identifier:b.identifier,isCW:b.isCW,point:A})})}),w.sort((b,S)=>b.point.x-S.point.x),w}function c(h,y,g,v,w){(w==null||w==="")&&(w="nonzero");let b=new Vo;h.boundingBox.getCenter(b);let S=[new Vo(g,b.y),new Vo(v,b.y)],A=l(S,h.boundingBox,y);A.sort((T,N)=>T.point.x-N.point.x);let _=[],x=[];A.forEach(T=>{T.identifier===h.identifier?_.push(T):x.push(T)});let P=_[0].point.x,O=[],I=0;for(;I<x.length&&x[I].point.x<P;)O.length>0&&O[O.length-1]===x[I].identifier?O.pop():O.push(x[I].identifier),I++;if(O.push(h.identifier),w==="evenodd"){let T=O.length%2===0,N=O[O.length-2];return{identifier:h.identifier,isHole:T,for:N}}else if(w==="nonzero"){let T=!0,N=null,L=null;for(let U=0;U<O.length;U++){let K=O[U];y[K]&&(T?(L=y[K].isCW,T=!1,N=K):L!==y[K].isCW&&(L=y[K].isCW,T=!0))}return{identifier:h.identifier,isHole:T,for:N}}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,b=999999999;for(let S=0;S<y.length;S++){let A=y[S];A.y>g&&(g=A.y),A.y<v&&(v=A.y),A.x>w&&(w=A.x),A.x<b&&(b=A.x)}d<=w&&(d=w+1),a>=b&&(a=b-1),y.length&&p.push({curves:h.curves,points:y,isCW:kT.isClockWise(y),identifier:u++,boundingBox:new UT(new Vo(b,v),new Vo(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 zT;g.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let b=p[w.identifier],S=new Rh;S.curves=b.curves,g.holes.push(S)}}),m.push(g)}}),m}};var jh,ud=new Promise(n=>{jh=n}),Vh=!1;async function Fh(){if(Vh)return;let n=await import("./opentype.js");jh(n),Vh=!0}var ps=class{async load(r,e,t=()=>{}){let{load:o}=await ud;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await ud;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 WT(n){return await(await fetch(n)).arrayBuffer()}var qT=new ps;async function pd(n){let r,e,t=!1;if(n.url?(r=await WT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await qT.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as $T,LineCurve as YT,QuadraticBezierCurve as XT}from"three";function KT(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var ol=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=pd(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=pd(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(KT(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 zT}from"three";function Dh(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var el=class extends Zn{constructor(e,t){super(new zT);this.repeat=e;this.offset=t;Dh(this.value,e,t)}updateMatrix(){Dh(this.value,this.repeat,this.offset)}};var _r=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)ad(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Tr.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 Bo(i,t.texture.wrapping),l=new Ja(i),c=new el(t.texture.repeat,t.texture.offset),u=new Q(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 Do(t.size[0],t.size[1]):new Do(100,100)),m=new Q(t.alpha??1),h=new xe(t.mode??0),y=new is(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new ze(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 Bo(i,t.texture.wrapping),l=new Q(t.alpha??1),c=new xe(t.mode??0),u=new cs(s,l,c),a=new _e(u.calpha,"f");return new ze(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new nt(new wr(...t.offset)),s=new Q(t.scale??10),l=new Q(t.intensity??8),c=new Q(t.movement??1),u=new xe(t.noiseType??0),a=new os(l,c,i,s,u);return new us(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return WT(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):Bh(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?sd(o.props,t.shared,this):!0;return!1}dispose(){if(kT(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}},ze=class extends _r{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}},us=class extends _r{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Tr=class extends _r{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new Q(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Mo,u={};else if(o.category==="lambert"){s=new qi;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Yi;let a=new Q(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 $i;let a=new Q(o.roughness??.3),d=new Q(o.metalness??0),p=new Q(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new Ya;let a=new Q(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 Q(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Tr(e,t,o,s,u)}get category(){return this.node.category}};function kT(n){let r=n instanceof _r?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function HT(n,r,e,t){switch(n.type){case"color":{let o=new Te(t.color??5855577),i=new Q(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 ze(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(t.color??16777215),i=new Q(t.bias??.1),s=new Q(t.scale??1),l=new Q(t.intensity??2),c=new Q(t.factor??1),u=new Q(t.alpha??1),a=new xe(t.mode??0),d=new Zi(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new ze(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 Q(t.filmThickness??30),i=new Q(t.movement??0),s=new nt(t.wavelengths??new wr(0,0,0)),l=new Q(t.noiseStrength??0),c=new Q(t.noiseScale??1),u=new nt(t.offset??new wr(0,0,0)),a=new Q(t.alpha??1),d=new Qi(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new ze(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 Q(t.thickness??10),i=new Q(t.ior??1.5),s=new Q(t.roughness??.5),l=it.transmissionSize,c=it.transmissionRenderTarget,u=it.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new Je(d/a,1):new Je(1,a/d),f=new Q(t.alpha??1),m=new es(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ze(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 er(t.colors.length,t.colors):(i=new er(10,new ei(0,0,0,1)),i.value[1]=new ei(1,1,1,1));let s;t.steps?s=new Jt(t.steps.length,t.steps):(s=new Jt(10,1),s.value[0]=0);let l=new nt(t.source??new wr(0,0,0)),c=new lo(t.isWorldSpace??!0),u=new Q(t.noiseStrength??0),a=new Q(t.noiseScale??1),d=new jt(t.shadowColor),p=new nt(t.offset??new wr(0,0,0)),f=new Q(t.alpha??1),m=new ds(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ze(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 Q(t.outlineWidth??.1),l=new Q(t.contourWidth??.1),c=new Q(t.outlineThreshold??.1),u=new Q(t.contourThreshold??.1),a=new Q(t.outlineSmoothing??.1),d=new Q(t.contourFrequency??.1),p=new nt(t.contourDirection??new wr(0,1,0)),f=new lo(t.positionalLines??!1),m=new lo(t.compensation??!0),h=it.normalRenderTarget,y=it.normalRenderTargetDepth,g=it.pixelRatioNode,v=it.resolution,w=new Q(t.alpha??1),b=new Ji(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,w),S=new _e(b.calpha,"f"),A=new xe(t.mode??0);return new ze(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:A},b,A,S)}case"depth":{let o=new xe(t.gradientType??0),i=new lo(t.smooth??!1),s=new Q(t.near??50),l=new Q(t.far??200),c=new Q(t.isVector??1),u=new Q(t.isWorldSpace??0),a=new nt(t.origin??new wr),d=new nt(t.direction??new wr),p;t.colors?p=new er(t.colors.length,t.colors):(p=new er(2,new ei(0,0,0,1)),p.value[1]=new ei(1,1,1,1));let f;t.steps?f=new Jt(t.steps.length,t.steps):(f=new Jt(2,1),f.value[0]=0);let m=new Q(t.alpha??1),h=new xe(t.mode??0),y=new ts(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new ze(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 Q(t.scale??1),i=new nt(t.size??new wr(100,100,100)),s=new Q(t.move??1),l=new Je(t.fA??new Do(1.7,9.2)),c=new Je(t.fB??new Do(8.3,2.8)),u=new Je(t.distortion??new Do(1,1)),a=new jt(t.colorA),d=new jt(t.colorB),p=new jt(t.colorC),f=new jt(t.colorD),m=new Q(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new Ki(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new ze(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 nt(t.cnormal??new wr(1,1,1)),i=new Q(t.alpha??1),s=new xe(t.mode??0),l=new as(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ze(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new lo(t.smooth??!1),s;t.colors?s=new er(t.colors.length,t.colors):(s=new er(10,new ei(0,0,0,1)),s.value[1]=new ei(1,1,1,1));let l;t.steps?l=new Jt(t.steps.length,t.steps):(l=new Jt(10,1),l.value[0]=0);let c=new Je(t.offset??new Do(0,0)),u=new Je(t.morph??new Do(0,0)),a=new Q(t.angle??0),d=new Q(t.alpha??1),p=new xe(t.mode??0),f=new ns(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new ze(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 Q(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 ze(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function WT(n,r,e,t){let o=Lh(e,t);return HT(e,n,r,o)}function ad(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 Gh(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 Pt=class extends qT{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 Pt{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()}},ti=class extends Pt{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=>_r.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=Gh(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 Tr),this.lightLayer===void 0&&(this.lightLayer=new Tr(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=Gh(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=_r.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=_r.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 ze),t=this.layers.findIndex(o=>o instanceof Tr);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 ze&&(o=new rs(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 Tr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ze&&(e=new rs(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 us);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Ot(t,e[o].position,Ot.ADD),t=new Ot(t,new Q(.5).setReadonly(!0),Ot.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,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=(nd[t.type]??[]).map(l=>t[l]),i=(id[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 $a;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 ze){let t=e.params.texture;if(t instanceof Bo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Pt.prototype,{properties:{get:function(){return this.fragment.properties}}});var Go=class extends ti{};var Fh=Tl(Rh());var Vh=new Map;function jh(n){if(typeof n=="string")return n;let r=Vh.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Vh.set(n,r)),r.url}var Ro=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:jh(r),format:"wav"},this.sound=new Fh.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 $T,Vector2 as Vo,Path as Uh,Shape as YT,ShapeUtils as XT,Color as KT}from"three";var rl=class{constructor(){this.type="ShapePath";this.color=new KT;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Uh,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,b=y.x,S=g.x,A=v.x,_=h.y,x=y.y,P=g.y,O=v.y,I=(A-S)*(_-P)-(O-P)*(w-S),T=(b-w)*(_-P)-(x-_)*(w-S),N=(O-P)*(b-w)-(A-S)*(x-_),L=I/N,U=T/N;if(N===0&&I!==0||L<=0||L>=1||U<0||U>1)return null;if(I===0&&N===0){for(let K=0;K<2;K++)if(i(K===0?g:v,h,y),t.loc===e.ORIGIN){let J=K===0?g:v;return{x:J.x,y:J.y,t:t.t}}else if(t.loc===e.BETWEEN){let J=+(w+t.t*(b-w)).toPrecision(10),ie=+(_+t.t*(x-_)).toPrecision(10);return{x:J,y:ie,t:t.t}}return null}else{for(let ie=0;ie<2;ie++)if(i(ie===0?g:v,h,y),t.loc===e.ORIGIN){let z=ie===0?g:v;return{x:z.x,y:z.y,t:t.t}}let K=+(w+L*(b-w)).toPrecision(10),J=+(_+L*(x-_)).toPrecision(10);return{x:K,y:J,t:L}}}function i(h,y,g){let v=g.x-y.x,w=g.y-y.y,b=h.x-y.x,S=h.y-y.y,A=v*S-b*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(A<-Number.EPSILON){t.loc=e.LEFT;return}if(A>Number.EPSILON){t.loc=e.RIGHT;return}if(v*b<0||w*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(b*b+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=b/v:_=S/w,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let w=1;w<h.length;w++){let b=h[w-1],S=h[w];for(let A=1;A<y.length;A++){let _=y[A-1],x=y[A],P=o(b,S,_,x);P!==null&&g.find(O=>O.t<=P.t+Number.EPSILON&&O.t>=P.t-Number.EPSILON)===void 0&&(g.push(P),v.push(new Vo(P.x,P.y)))}}return v}function l(h,y,g){let v=new Vo;y.getCenter(v);let w=[];return g.forEach(b=>{b.boundingBox.containsPoint(v)&&s(h,b.points).forEach(A=>{w.push({identifier:b.identifier,isCW:b.isCW,point:A})})}),w.sort((b,S)=>b.point.x-S.point.x),w}function c(h,y,g,v,w){(w==null||w==="")&&(w="nonzero");let b=new Vo;h.boundingBox.getCenter(b);let S=[new Vo(g,b.y),new Vo(v,b.y)],A=l(S,h.boundingBox,y);A.sort((T,N)=>T.point.x-N.point.x);let _=[],x=[];A.forEach(T=>{T.identifier===h.identifier?_.push(T):x.push(T)});let P=_[0].point.x,O=[],I=0;for(;I<x.length&&x[I].point.x<P;)O.length>0&&O[O.length-1]===x[I].identifier?O.pop():O.push(x[I].identifier),I++;if(O.push(h.identifier),w==="evenodd"){let T=O.length%2===0,N=O[O.length-2];return{identifier:h.identifier,isHole:T,for:N}}else if(w==="nonzero"){let T=!0,N=null,L=null;for(let U=0;U<O.length;U++){let K=O[U];y[K]&&(T?(L=y[K].isCW,T=!1,N=K):L!==y[K].isCW&&(L=y[K].isCW,T=!0))}return{identifier:h.identifier,isHole:T,for:N}}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,b=999999999;for(let S=0;S<y.length;S++){let A=y[S];A.y>g&&(g=A.y),A.y<v&&(v=A.y),A.x>w&&(w=A.x),A.x<b&&(b=A.x)}d<=w&&(d=w+1),a>=b&&(a=b-1),y.length&&p.push({curves:h.curves,points:y,isCW:XT.isClockWise(y),identifier:u++,boundingBox:new $T(new Vo(b,v),new Vo(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 YT;g.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let b=p[w.identifier],S=new Uh;S.curves=b.curves,g.holes.push(S)}}),m.push(g)}}),m}};var kh,ud=new Promise(n=>{kh=n}),zh=!1;async function Hh(){if(zh)return;let n=await import("./opentype.js");kh(n),zh=!0}var ps=class{async load(r,e,t=()=>{}){let{load:o}=await ud;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await ud;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 ZT(n){return await(await fetch(n)).arrayBuffer()}var QT=new ps;async function pd(n){let r,e,t=!1;if(n.url?(r=await ZT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await QT.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as JT,LineCurve as eO,QuadraticBezierCurve as tO}from"three";function rO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var ol=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=pd(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=pd(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(rO(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],b={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(w,b)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,w,c);let A=[];try{A=this.reverseLigaturesTable(t,w,S)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<S.length;_++){let x=S[_],P=x.index===0?`
1336
1336
  `:x.unicode?String.fromCharCode(x.unicode):void 0,O=A[_],I=0,T=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(T=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),d+=T+I;let N=0;if(P===`
1337
1337
  `)N=u;else if(P===" ")N=a;else{let L=this.createPath(x,o,d,p,e);L&&(N=L.offsetX-(I+T),f.push(L.path))}if(O.replacements.length===1)h[v].push([d,p]),m[v].push(N);else{let L=O.replacements.map(ie=>(t.glyphs.get(ie).advanceWidth??0)*o),U=L.reduce((ie,z)=>ie+=z,0),K=L.map(ie=>ie/U),J=d;for(let ie=0;ie<K.length;ie++){let z=N*K[ie];h[v].push([J,p]),m[v].push(z),J+=z}}d+=N,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 rl,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=ZT(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 ZT(n){if(n.length){let r=n[0];if(r instanceof YT)return r.v1;if(r instanceof $T||r instanceof XT)return r.v0}}var fd=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):Qr&&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()}},fs=class extends fd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=No(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Uh={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){}};var md=class extends Qa{constructor(e){super();this.shared=e}create(e){return new Jn(e,this.shared)}},jo=class{constructor(r,e={}){this.geometryCache=new fs(!0);this.geometryCache2=new fs(!1);this.imageHolderCache=new md(this);this.thisContext={scene:Uh,shared:this};this.deletedMaterial=new Go(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Ft(_a.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 Go(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 ti(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 co(e.r,e.g,e.b,e.a):this.colors[r]=new co(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 Ro)return e;{let t=new Ro({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Ro&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new ol(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 Ro&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},zh=new jo(Xs.emptyData());var tr=class extends ot{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Rd(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(sr(e.path,["material"])&&this.material instanceof Pt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(tt.drop(e,1),t.material,o);else if(sr(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&&Ys(this.material).forEach(e=>{e instanceof Pt&&(e instanceof Go||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as QT}from"three";var ht=class extends tr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof QT&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jo){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 bi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return bi.is2DParametricMesh(this.geometry.userData.type)}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),sr(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=No(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&&Ui(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=No(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Oi(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof je&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(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):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function eO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes.position.array,t=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=new yd(t[i],t[i+1],t[i+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new yd})}r.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=r.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new kh(o,3))}function tO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let r=n.geometry.attributes.position.array,e=new Float32Array(r.length),t=new yd;for(let o=0;o<r.length;o+=3)t.set(r[o],r[o+1],r[o+2]).normalize(),e[o]=t.x,e[o+1]=t.y,e[o+2]=t.z;n.geometry.setAttribute("extrudeNormal",new kh(e,3))}function ri(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Pt)||n.material.getLayersOfType("outline").length===0)return;n instanceof ht&&n.is2DAndNoDepth?tO(n):eO(n)}function oi(n){if(!n.geometry.attributes.position)return;let r=n.geometry.attributes.position.array,e=new Float32Array(r.length),t=parseInt(n.uuid.replace(/\D/g,"")),o=[hd.seededRandom(t),hd.seededRandom(t+1e4),hd.seededRandom(t+2e4)];for(let i=0;i<r.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new JT(e,3))}var iO;kn.then(n=>{iO=n});var _r=new rO,ms=new nO;var Fo=class extends ht{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new oO;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}=je.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,ri(this),oi(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){je.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&je.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=je.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=je.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,ot.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 Hh,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;_r.setFromBufferAttribute(t),_r.getCenter(o),e.boundingSphere.radius=o.distanceTo(_r.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),_r.getSize(ms),this.hasNonUniformScale&&ms.divide(this.scale);let i={width:ms.x,height:ms.y,depth:ms.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;_r.min.set(e[0],e[2],e[4]),_r.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(_r.min.applyMatrix4(this.shearScaleInv),_r.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Hh);let o=t.boundingSphere.center;_r.getCenter(o),t.boundingSphere.radius=o.distanceTo(_r.max)}freeSubdivPointer(){this.subdivPointer&&(je.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 sO,Vector3 as zo}from"three";var Wh=-1,aO=1,qh={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},$h={polygon_center:0,edge:1,vertex:2},hs=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,fe=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Wh)*(e-t)/(aO-Wh)+t};function Yh(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 lO=new zo,nl=new zo,cO=new zo,dO=new zo;function ni(n,r){let e=cO.fromArray(n),t=dO.fromArray(r);nl.copy(t).sub(e);let o=nl.length();return nl.normalize().multiplyScalar(o*.5),lO.copy(e).add(nl).toArray()}var Ut=new sO,il=new zo,sl=new zo,Uo=new zo;function Xh(n){let r=[];for(let e=0;e<=n.index.count;e++)if(il.fromArray(n.index.array,e*3),Ut.setFromAttributeAndIndices(n.attributes.position,il.x,il.y,il.z),Ut.getNormal(sl),Ut.getMidpoint(Uo),!(isNaN(Uo.x)||isNaN(Uo.y)||isNaN(Uo.z))){let{a:t,b:o,c:i}=Ut,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ni(s,l),f=ni(l,c),m=ni(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(b=>Math.round(b)===Math.round(y)).length>1,v=[],w=Ut.getMidpoint(Uo).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:Ut.getNormal(sl).toArray()})}return r}function Kh(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Ut.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Ut.getNormal(sl),Ut.getMidpoint(Uo);let o=Ut.a.toArray(),i=Ut.b.toArray(),s=Ut.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ni(o,i),ni(i,s),ni(s,o)],midpoint:Uo.toArray(),norm:sl.toArray()})}return r}var uO=4,pO=.5,gd=n=>.5*(1-Math.cos(n*Math.PI)),xd=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<uO;g++){let v=o+(i<<4)+(s<<8);a=gd(l),d=gd(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+=gd(u)*(h-m),p+=m*f,f*=pO,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()}},Zh=xd;import{Vector3 as fO,Matrix4 as mO,Ray as hO}from"three";var Qh=new fO,Jh=new mO,ey=new hO;function ty(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var ii=class extends ht{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)&&(Jh.copy(o).invert(),ey.copy(e.ray).applyMatrix4(Jh),ey.intersectBox(this.singleBBox,Qh))){let i=Qh.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var yt=1e-4,Tr,iy,sy,ay,oy=new Mt,ny=new Mt;kn.then(n=>{Tr=n,iy=[Tr.get_face_center,Tr.get_edge_midpoint,Tr.get_vertex_position],sy=[Tr.get_face_normal,Tr.get_edge_normal,Tr.get_vertex_normal],ay=[Tr.face_count,Tr.edge_count,Tr.vertex_count]});var gO=new Ho,xO=new Ho,po=new Mt,ko=new Mt,ys=new Mt,bd=new Mt,vO=new Mt,bO=new Mt;var jr=new Zh,ai=class extends Nn(yO){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 Dr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Dr&&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 Dr(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 Dr(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*ry.DEG2RAD,i=t.end*ry.DEG2RAD,s=o-i,l=new vd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Mt(0,0,1);break;case"y":c=new Mt(0,1,0);break;default:case"x":c=new Mt(1,0,0);break}let u=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";jr.noiseSeed(u.seed);let d=Ta((0,si.default)(u.seed)),p=hs(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?jr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,fe(y,u.scale[0]))||yt,m.scale.y=t.scale[1]+p(f,fe(y,u.scale[1]))||yt,m.scale.z=t.scale[2]+p(f,fe(y,u.scale[2]))||yt,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,fe(y,u.position[0])),m.position.y+=t.position[1]+p(f,fe(y,u.position[1])),m.position.z+=t.position[2]+p(f,fe(y,u.position[2]));let v=p(f,fe(y,u.rotation[0])),w=p(f,fe(y,u.rotation[1])),b=p(f,fe(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+w,m.rotation.z+=l.z+b):m.rotation.set(l.x+v,l.y+w,l.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new vd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";jr.noiseSeed(i.seed);let l=Ta((0,si.default)(i.seed)),c=hs(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?jr.noise(d):l(d,d),f=c(u,fe(p,i.rotation[0])),m=c(u,fe(p,i.rotation[1])),h=c(u,fe(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,fe(p,i.scale[0]))||yt,a.scale.y=1+(t.scale[1]-1)*u+c(u,fe(p,i.scale[1]))||yt,a.scale.z=1+(t.scale[2]-1)*u+c(u,fe(p,i.scale[2]))||yt,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,fe(p,i.position[0])),a.position.y=t.position[1]*u+c(u,fe(p,i.position[1])),a.position.z=t.position[2]*u+c(u,fe(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,s=hs(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";jr.noiseSeed(i.seed);let c=Qf((0,si.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 Mt(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?jr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,fe(h,i.scale[0]))||yt,y.scale.y=1+s(t,fe(h,i.scale[1]))||yt,y.scale.z=1+s(t,fe(h,i.scale[2]))||yt;let g=s(t,fe(h,i.rotation[0])),v=s(t,fe(h,i.rotation[1])),w=s(t,fe(h,i.rotation[2]));y.rotation.set(g,v,w),y.position.x=o.size[0]*d-a.x+s(t,fe(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,fe(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,fe(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?jr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,fe(f,i.scale[0]))||yt,m.scale.y=1+s(t,fe(f,i.scale[1]))||yt,m.scale.z=1+s(t,fe(f,i.scale[2]))||yt;let h=s(t,fe(f,i.rotation[0])),y=s(t,fe(f,i.rotation[1])),g=s(t,fe(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,fe(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,fe(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,fe(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new vd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";jr.noiseSeed(i.seed);let l=Ta((0,si.default)(i.seed)),c=hs(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 ii)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,w=g.map(A=>A[0]).reduce((A,_)=>A+_,0),b=g.map(A=>A[1]).reduce((A,_)=>A+_,0),S=g.map(A=>A[2]).reduce((A,_)=>A+_,0);return[w/v,b/v,S/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=Yh(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Oa(this.objectForSample).build(),h=qh[t.axis],y=this.children;m.setRandomGenerator((0,si.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let w=g*(i.freqScale/10)+i.movement,b=s?jr.noise(w):l(w,w),S=c(g,fe(b,i.rotation[0])),A=c(g,fe(b,i.rotation[1])),_=c(g,fe(b,i.rotation[2]));t.spreadType==="random"?m.sample(ys,bd):(f.length&&(ys.fromArray(f[g].pos),bd.fromArray(f[g].norm)),this.objectForSample instanceof Fo&&ys.applyMatrix4(gO.copy(this.objectForSample.matrixWorld).invert())),ys.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(ys),po.fromArray(h);let x=t.align==="normal"?bd:this.object.getWorldDirection(bO),P=ko.fromArray(t.position);ko.x+=ko.x+c(g,fe(b,i.position[0])),ko.y+=ko.y+c(g,fe(b,i.position[1])),ko.z+=ko.z+c(g,fe(b,i.position[2]));let O=Math.acos(x.dot(po)),I=vO.crossVectors(po,x).normalize(),T=xO.makeRotationAxis(I,O),N=x.clone().cross(this.object.up).normalize(),L=N.clone().cross(x).normalize(),U=new Ho().makeBasis(N,x,L),K=new Mt(po.y,po.z,po.x).normalize(),J=K.clone().cross(po).normalize(),ie=new Ho().makeBasis(K,po,J).invert(),z=new Ho().multiplyMatrices(U,ie);v.rotation.setFromRotationMatrix(z),P.applyMatrix4(T),v.position.add(P),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+A,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,fe(b,i.scale[0]))||yt,v.scale.y=v.scale.y+t.scale[1]+c(g,fe(b,i.scale[1]))||yt,v.scale.z=v.scale.z+t.scale[2]+c(g,fe(b,i.scale[2]))||yt,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 Fo){let t=this.objectForSample,o=$h[e],i=ay[o],s=iy[o],l=sy[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);oy.fromArray(d).applyMatrix4(t.matrixWorld),ny.fromArray(p),c.push({pos:oy.toArray(),norm:ny.toArray()})}return c}else return(this.objectForSample.geometry.index?Xh(this.objectForSample.geometry):Kh(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=Oo(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 ot?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ho,this.hiddenMatrix=new Ho,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as cA,Scene as dA,Vector3 as uA,Fog as pA,Box3 as fA,MeshBasicMaterial as mA}from"three";import{Camera as LO,OrthographicCamera as MO,PerspectiveCamera as BO,Vector3 as or,Object3D as uy,Quaternion as DO}from"three";import{Camera as AO,LineSegments as PO,BufferGeometry as IO,LineBasicMaterial as CO,Color as wd,Vector3 as NO,Float32BufferAttribute as cy}from"three";import{BoxGeometry as SO}from"three";var Or=n=>{var r;return r=class extends n{},r.geometryHelper=new SO(30,30,30),r};import{Ray as wO,Sphere as _O,Matrix4 as TO,Vector3 as Fr}from"three";var al=new wO,Sd=new _O,ly=new TO,Ar=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Sd.copy(i.boundingSphere),Sd.applyMatrix4(s),e.ray.intersectsSphere(Sd)===!1||(ly.copy(s).invert(),al.copy(e.ray).applyMatrix4(ly),i.boundingBox!==null&&al.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,al,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,w=new Fr,b=new Fr,S=new Fr,A=new Fr,_=2,P=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=P*P,I=Math.max(0,f.start),T=Math.min(v.count,f.start+f.count);for(let N=I,L=T-1;N<L;N+=_){if(w.fromBufferAttribute(v,N),b.fromBufferAttribute(v,N+1),al.distanceSqToSegment(w,b,A,S)>O)continue;A.applyMatrix4(n.matrixWorld);let K=e.ray.origin.distanceTo(A);K<e.near||K>e.far||t.push({distance:K,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,w,b,S,A,_){let x=new Fr,P=new Fr,O=new Fr,I=new Fr,T=new Fr;if(x.fromBufferAttribute(b,S),P.fromBufferAttribute(b,A),O.fromBufferAttribute(b,_),w.intersectTriangle(x,P,O,!1,I)===null)return null;T.copy(I),T.applyMatrix4(g.matrixWorld);let L=v.ray.origin.distanceTo(T);return L<v.near||L>v.far?null:{faceIndex:1,distance:L,point:T.clone(),object:g}}};var ll=new NO,zt=new AO,_d=class extends PO{constructor(e){let t=new IO,o=new CO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new wd(15711266),u=new wd(15711266),a=new wd(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 cy(i,3)),t.setAttribute("color",new cy(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;zt.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;rr("n1",t,e,zt,-i,-s,l),rr("n2",t,e,zt,i,-s,l),rr("n3",t,e,zt,-i,s,l),rr("n4",t,e,zt,i,s,l);let c=l;rr("f1",t,e,zt,-i,-s,c),rr("f2",t,e,zt,i,-s,c),rr("f3",t,e,zt,-i,s,c),rr("f4",t,e,zt,i,s,c);let u=c,a=.5;rr("u1",t,e,zt,i*.7*a,s*1.1,u),rr("u2",t,e,zt,-i*.7*a,s*1.1,u),rr("u3",t,e,zt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function rr(n,r,e,t,o,i,s){ll.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],ll.x,ll.y,ll.z)}}var cl=class extends Or(_d){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){Ar(this.object,this.geometry,e,t,!0)}};import{Box3Helper as dy,BoxGeometry as EO}from"three";var dl;(r=>r.is=e=>"objectHelper"in e)(dl||(dl={}));var fo=(n,r)=>class extends Pa(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 dy&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof EO?(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 dy&&(i.visible=!1)}}};var li=new or,Td=new or,Ur=class extends fo(LO,cl){constructor(e="",t={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=vo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new MO(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new BO(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){super.lookAt(e),this.getWorldPosition(li),this.targetOffset=li.distanceTo(e)}getTarget(e=new or){return this.getWorldDirection(Td),this.getWorldPosition(li),Td.multiplyScalar(this.targetOffset),e.copy(li).add(Td),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(li),li.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new DO),t=new or(0,0,1).applyQuaternion(e),o=new or().copy(uy.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new or().copy(uy.DefaultUp).projectOnPlane(t),s=new or().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 or),i=e.getWorldDirection(new or).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new or),i=this.getWorldDirection(new or).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5,this.aspect=e/t,this.updateProjectionMatrix()}toOrthographic(){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},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return In(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){this.updateCameraState(e)}updateCameraState(e){this.updateState_Entity(e,{}),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 py,Float16BufferAttribute as GO,Matrix4 as RO}from"three";var fy=new RO;var kt=class extends tr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new py;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 kt&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof ot&&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=Zt.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof kt&&s.needsTransformForDownstream===!0?(Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(fy.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Zt.transformMeshSet(s.booleanMeshSetAddress,fy),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new GO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Zt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new py,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Zt.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,ri(this),oi(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as VO}from"three";var my;(r=>{function n(e){return De.is(e)&&e instanceof VO}r.is=n})(my||(my={}));var ci=(n,r)=>class extends fo(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 gs=n=>n instanceof ot,xs=n=>n!==null&&n instanceof kt,hy=n=>n instanceof Ur;var yy=n=>dl.is(n);import{Group as FO}from"three";import{AxesHelper as jO}from"three";var mo=class extends Or(jO){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){Ar(this.object,mo.geometryHelper,e,t)}update(){}};var vs=class extends fo(FO,mo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as WO,CameraHelper as gy}from"three";import{DirectionalLightHelper as UO}from"three";var di=class extends Or(UO){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Ar(this.object,di.geometryHelper,e,t)}};import{PointLightHelper as zO}from"three";var ui=class extends Or(zO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Ar(this.object,ui.geometryHelper,e,t)}};import{SpotLightHelper as kO,Vector3 as HO}from"three";var ul=class extends Or(kO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Ar(this.object,ul.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=ul._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)}}},bs=ul;bs._vector=new HO;function qO(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 pl=class extends ci(WO,di){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 gy(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 gy&&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&&qO(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 $O,Vector3 as fl,Box3 as YO,Box3Helper as xy,Color as XO}from"three";var ml=class extends ci($O,ui){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 fl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new fl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new YO(s,l),u=new xy(c,new XO(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 xy){let t=this.shadow.camera,o=new fl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new fl(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 KO,CameraHelper as vy,MathUtils as ZO,Vector3 as _y,Quaternion as QO}from"three";var by=new _y,Sy=new _y,wy=new QO,hl=class extends ci(KO,bs){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 vy(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 vy&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Sy.setFromMatrixPosition(this.matrixWorld),wy.setFromRotationMatrix(this.matrixWorld),by.copy(this.up).applyQuaternion(wy).negate().multiplyScalar(this.distance),this.target.position.copy(Sy).add(by),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 yl=class extends ht{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}constructor(r,e,t){super(r,e,t)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?kc(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Group as JO}from"three";var zr=class extends fo(JO,mo){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 Kr.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 Kr.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(De.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),gl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&Oy(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)De.is(e)&&gl(e)}}function Ty(n,r,e,t){return n.component===r&&Oi(n.identity,t)?n.overrideData===e?2:1:0}function Oy(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 zr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(De.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=nn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=De.is(m)?m:null,p!==null){let h=Ty(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=Ty(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?Ir.apply(u.data,d):u.data;Wt.is(m.type)&&(m={...m,type:"Empty"}),p=$t.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,Oy(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(De.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function eA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new ii(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Fo(n,r,e):r.geometry.type==="VectorGeometry"?t=new yl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new kt(n,r,e):t=new ht(n,r,e),t)}function xl(n,r,e){return r.type==="Mesh"?eA(n,r,e):r.type==="Empty"?new vs(n,r):r.type==="PointLight"?new ml(n,r,e):r.type==="SpotLight"?new hl(n,r,e):r.type==="DirectionalLight"?new pl(n,r,e):r.type==="Component"||r.type==="Instance"?new zr(n,r,e):Wt.is(r.type)?new Ur(n,r):(console.error(r),new vs(n,r))}$t.createEntity=xl;function tA(n,r,e){let t=xl(n.identity,r,e),o=n.children,i=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,a=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.parent=i,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),a&&n.changeSelectedState(a,e),n.resetBBoxNeedsUpdate()}$t.changeEntityProptotype=tA;$t.Cloner=ai;function Ay(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as oA,Ray as nA,Raycaster as iA}from"three";function Py(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,oi(n),ri(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function Iy(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 Cy(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof tr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Py(e,e.material[t])&&(r=!0);else Py(e,e.material)&&(r=!0)}),r}function Ny(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof tr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Iy(e,e.material[t])&&(r=!0);else Iy(e,e.material)&&(r=!0)}),r}var sA=new iA,aA=new oA,lA=new nA;function Ey(n,r,e){let t=n.cloner;if(t)for(let o of t.children){let i=aA.copy(o.matrixWorld).invert(),s=lA.copy(r.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=sA;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 hA=new mA;hA.wireframe=!0;var Ly=new uA,Od=class extends dA{constructor(e,t){super();this.data=e;this.backupFog=new pA(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.needsRecomputeInstances=!1;this.ambientLight=new cA(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=Ny(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Cy(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)=>yu(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()}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(),gs(i)&&xs(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),xs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),gs(o)&&(o.freeBooleanPointer(),i instanceof kt&&i.invalidateDownstreamBooleanData().recomputeBoolean()),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()),gs(o)&&(o.invalidateUpstreamBooleanData(),xs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof kt&&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{Ay(s,t,o,{scene:this,shared:i}),s instanceof ht&&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 Ur&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{xs(o)&&o.recomputeBoolean()}),this.doPendingExpandCloner()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){De.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{De.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=[...Ys(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;dt.zoom(p,t)[o]=y}else{if(Qr)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof zr&&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 zr&&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 zr&&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)Yt(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Ur(Od.PERSONAL_CAMERA_ID,{...on.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)Yt(s)&&!s.raycastLock&&s.visible&&((gs(s)||yy(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Ey(s,e,t)),o(s))};return o(this),t}forEachEntity(e){for(let t of this.children)Yt(t)&&e(t)}traverseEntity(e){for(let t of this.children)Yt(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Ci.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Yt(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=xl(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 ht&&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 fA;return o.setFromPoints(t),o.getCenter(Ly),Ly}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 ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Pt&&e(t.material[o]);else t.material instanceof Pt&&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})})}},ws=Od;ws.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as yA}from"three/examples/jsm/loaders/DRACOLoader.js";var ho;function gA(){return ho||(ho=new yA,ho.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ho.decoderPending}async function xA(n){if(ho){let r={attributeIDs:ho.defaultAttributeIDs,attributeTypes:ho.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ho.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 My(n,r){let[e,t]=El(Us.deserialize(new Uint8Array(n)));Yf(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 gA();for(let i of o){let s=await xA(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 M9}from"three";import{mergeBufferGeometries as G9}from"three/examples/jsm/utils/BufferGeometryUtils.js";function By(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 Dy,ShaderLib as vA}from"three";function Gy(n){let r=new Set;return n.traverse(e=>{if(e instanceof tr)if(Re(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(bA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Dy,specularColor:new Dy});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},vA.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 SA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function bA(n){return n.getLayersOfType("transmission").length>0}function SA(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 Ry(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Vy(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 wA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function jy(n){let r=[];return n.traverse(e=>{e instanceof ai&&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&&By(c),c}),s=wA(e.parameters.hideBase?i:[t instanceof ot?t.geometry:[],...i]);t instanceof ot&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:zh})}),n}function Fy(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Uy(n){Object.values(n.shared.materials).forEach(r=>{Ad(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Ad(e.material):"materials"in e&&e.materials.forEach(t=>{Ad(t)})})}function Ad(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 zy="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Pd=class extends TA{load(r,e,t,o=console.error){let i=new _A(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(zy+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(zy),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 My(r,Uy);ty(e)&&await Fh();let t=new jo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new ws(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&&hy(s)&&Object.assign(s,{makeDefault:!0})}return o=jy(o),o=Gy(o),o=Ry(o),o=Vy(o),o=Fy(o),o}};export{Pd 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 rl,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=oO(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 oO(n){if(n.length){let r=n[0];if(r instanceof eO)return r.v1;if(r instanceof JT||r instanceof tO)return r.v0}}var fd=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):pr&&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()}},fs=class extends fd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=No(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Wh={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){}};var md=class extends Qa{constructor(e){super();this.shared=e}create(e){return new Jn(e,this.shared)}},jo=class{constructor(r,e={}){this.geometryCache=new fs(!0);this.geometryCache2=new fs(!1);this.imageHolderCache=new md(this);this.thisContext={scene:Wh,shared:this};this.deletedMaterial=new Go(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Ft(_a.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 Go(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 ti(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 co(e.r,e.g,e.b,e.a):this.colors[r]=new co(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 Ro)return e;{let t=new Ro({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Ro&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new ol(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 Ro&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},qh=new jo(Xs.emptyData());var tr=class extends ot{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Vd(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(sr(e.path,["material"])&&this.material instanceof Pt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(tt.drop(e,1),t.material,o);else if(sr(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&&Ys(this.material).forEach(e=>{e instanceof Pt&&(e instanceof Go||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as nO}from"three";var ht=class extends tr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof nO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jo){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 bi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return bi.is2DParametricMesh(this.geometry.userData.type)}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),sr(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=No(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&&Ui(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=No(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Oi(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof je&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(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):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function sO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes.position.array,t=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=new yd(t[i],t[i+1],t[i+2]);r.has(s)?r.get(s)?.normals.push(l):r.set(s,{normals:[l],result:new yd})}r.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=r.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new $h(o,3))}function aO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let r=n.geometry.attributes.position.array,e=new Float32Array(r.length),t=new yd;for(let o=0;o<r.length;o+=3)t.set(r[o],r[o+1],r[o+2]).normalize(),e[o]=t.x,e[o+1]=t.y,e[o+2]=t.z;n.geometry.setAttribute("extrudeNormal",new $h(e,3))}function ri(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Pt)||n.material.getLayersOfType("outline").length===0)return;n instanceof ht&&n.is2DAndNoDepth?aO(n):sO(n)}function oi(n){if(!n.geometry.attributes.position)return;let r=n.geometry.attributes.position.array,e=new Float32Array(r.length),t=parseInt(n.uuid.replace(/\D/g,"")),o=[hd.seededRandom(t),hd.seededRandom(t+1e4),hd.seededRandom(t+2e4)];for(let i=0;i<r.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new iO(e,3))}var uO;kn.then(n=>{uO=n});var Or=new lO,ms=new dO;function Xh(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Fo=class extends ht{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new cO;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}=je.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,ri(this),oi(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){je.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&je.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=je.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=je.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,ot.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 Yh,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(ms),this.hasNonUniformScale&&ms.divide(this.scale);let i={width:ms.x,height:ms.y,depth:ms.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;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 Yh);let o=t.boundingSphere.center;Or.getCenter(o),t.boundingSphere.radius=o.distanceTo(Or.max)}freeSubdivPointer(){this.subdivPointer&&(je.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 pO,Vector3 as zo}from"three";var Kh=-1,fO=1,Zh={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Qh={polygon_center:0,edge:1,vertex:2},hs=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,fe=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Kh)*(e-t)/(fO-Kh)+t};function Jh(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 mO=new zo,nl=new zo,hO=new zo,yO=new zo;function ni(n,r){let e=hO.fromArray(n),t=yO.fromArray(r);nl.copy(t).sub(e);let o=nl.length();return nl.normalize().multiplyScalar(o*.5),mO.copy(e).add(nl).toArray()}var Ut=new pO,il=new zo,sl=new zo,Uo=new zo;function ey(n){let r=[];for(let e=0;e<=n.index.count;e++)if(il.fromArray(n.index.array,e*3),Ut.setFromAttributeAndIndices(n.attributes.position,il.x,il.y,il.z),Ut.getNormal(sl),Ut.getMidpoint(Uo),!(isNaN(Uo.x)||isNaN(Uo.y)||isNaN(Uo.z))){let{a:t,b:o,c:i}=Ut,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ni(s,l),f=ni(l,c),m=ni(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(b=>Math.round(b)===Math.round(y)).length>1,v=[],w=Ut.getMidpoint(Uo).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:Ut.getNormal(sl).toArray()})}return r}function ty(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Ut.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Ut.getNormal(sl),Ut.getMidpoint(Uo);let o=Ut.a.toArray(),i=Ut.b.toArray(),s=Ut.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ni(o,i),ni(i,s),ni(s,o)],midpoint:Uo.toArray(),norm:sl.toArray()})}return r}var gO=4,xO=.5,gd=n=>.5*(1-Math.cos(n*Math.PI)),xd=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<gO;g++){let v=o+(i<<4)+(s<<8);a=gd(l),d=gd(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+=gd(u)*(h-m),p+=m*f,f*=xO,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()}},ry=xd;import{Vector3 as vO,Matrix4 as bO,Ray as SO}from"three";var oy=new vO,ny=new bO,iy=new SO;function sy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var ii=class extends ht{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)&&(ny.copy(o).invert(),iy.copy(e.ray).applyMatrix4(ny),iy.intersectBox(this.singleBBox,oy))){let i=oy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var yt=1e-4,Ar,dy,uy,py,ly=new Mt,cy=new Mt;kn.then(n=>{Ar=n,dy=[Ar.get_face_center,Ar.get_edge_midpoint,Ar.get_vertex_position],uy=[Ar.get_face_normal,Ar.get_edge_normal,Ar.get_vertex_normal],py=[Ar.face_count,Ar.edge_count,Ar.vertex_count]});var _O=new Ho,TO=new Ho,po=new Mt,ko=new Mt,ys=new Mt,bd=new Mt,OO=new Mt,AO=new Mt;var Fr=new ry,ai=class extends Nn(wO){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 Rr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Rr&&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 Rr(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 Rr(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*ay.DEG2RAD,i=t.end*ay.DEG2RAD,s=o-i,l=new vd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Mt(0,0,1);break;case"y":c=new Mt(0,1,0);break;default:case"x":c=new Mt(1,0,0);break}let u=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";Fr.noiseSeed(u.seed);let d=Ta((0,si.default)(u.seed)),p=hs(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?Fr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,fe(y,u.scale[0]))||yt,m.scale.y=t.scale[1]+p(f,fe(y,u.scale[1]))||yt,m.scale.z=t.scale[2]+p(f,fe(y,u.scale[2]))||yt,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,fe(y,u.position[0])),m.position.y+=t.position[1]+p(f,fe(y,u.position[1])),m.position.z+=t.position[2]+p(f,fe(y,u.position[2]));let v=p(f,fe(y,u.rotation[0])),w=p(f,fe(y,u.rotation[1])),b=p(f,fe(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+w,m.rotation.z+=l.z+b):m.rotation.set(l.x+v,l.y+w,l.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new vd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Fr.noiseSeed(i.seed);let l=Ta((0,si.default)(i.seed)),c=hs(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?Fr.noise(d):l(d,d),f=c(u,fe(p,i.rotation[0])),m=c(u,fe(p,i.rotation[1])),h=c(u,fe(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,fe(p,i.scale[0]))||yt,a.scale.y=1+(t.scale[1]-1)*u+c(u,fe(p,i.scale[1]))||yt,a.scale.z=1+(t.scale[2]-1)*u+c(u,fe(p,i.scale[2]))||yt,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,fe(p,i.position[0])),a.position.y=t.position[1]*u+c(u,fe(p,i.position[1])),a.position.z=t.position[2]*u+c(u,fe(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,s=hs(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Fr.noiseSeed(i.seed);let c=Jf((0,si.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 Mt(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?Fr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,fe(h,i.scale[0]))||yt,y.scale.y=1+s(t,fe(h,i.scale[1]))||yt,y.scale.z=1+s(t,fe(h,i.scale[2]))||yt;let g=s(t,fe(h,i.rotation[0])),v=s(t,fe(h,i.rotation[1])),w=s(t,fe(h,i.rotation[2]));y.rotation.set(g,v,w),y.position.x=o.size[0]*d-a.x+s(t,fe(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,fe(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,fe(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?Fr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,fe(f,i.scale[0]))||yt,m.scale.y=1+s(t,fe(f,i.scale[1]))||yt,m.scale.z=1+s(t,fe(f,i.scale[2]))||yt;let h=s(t,fe(f,i.rotation[0])),y=s(t,fe(f,i.rotation[1])),g=s(t,fe(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,fe(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,fe(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,fe(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new vd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??ur.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Fr.noiseSeed(i.seed);let l=Ta((0,si.default)(i.seed)),c=hs(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 ii)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(A=>A[0]).reduce((A,_)=>A+_,0),b=g.map(A=>A[1]).reduce((A,_)=>A+_,0),S=g.map(A=>A[2]).reduce((A,_)=>A+_,0);return[w/v,b/v,S/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=Jh(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Oa(this.objectForSample).build(),h=Zh[t.axis],y=this.children;m.setRandomGenerator((0,si.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let w=g*(i.freqScale/10)+i.movement,b=s?Fr.noise(w):l(w,w),S=c(g,fe(b,i.rotation[0])),A=c(g,fe(b,i.rotation[1])),_=c(g,fe(b,i.rotation[2]));t.spreadType==="random"?m.sample(ys,bd):(f.length&&(ys.fromArray(f[g].pos),bd.fromArray(f[g].norm)),this.objectForSample instanceof Fo&&ys.applyMatrix4(_O.copy(this.objectForSample.matrixWorld).invert())),ys.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(ys),po.fromArray(h);let x=t.align==="normal"?bd:this.object.getWorldDirection(AO),P=ko.fromArray(t.position);ko.x+=ko.x+c(g,fe(b,i.position[0])),ko.y+=ko.y+c(g,fe(b,i.position[1])),ko.z+=ko.z+c(g,fe(b,i.position[2]));let O=Math.acos(x.dot(po)),I=OO.crossVectors(po,x).normalize(),T=TO.makeRotationAxis(I,O),N=x.clone().cross(this.object.up).normalize(),L=N.clone().cross(x).normalize(),U=new Ho().makeBasis(N,x,L),K=new Mt(po.y,po.z,po.x).normalize(),J=K.clone().cross(po).normalize(),ie=new Ho().makeBasis(K,po,J).invert(),z=new Ho().multiplyMatrices(U,ie);v.rotation.setFromRotationMatrix(z),P.applyMatrix4(T),v.position.add(P),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+A,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,fe(b,i.scale[0]))||yt,v.scale.y=v.scale.y+t.scale[1]+c(g,fe(b,i.scale[1]))||yt,v.scale.z=v.scale.z+t.scale[2]+c(g,fe(b,i.scale[2]))||yt,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 Fo){let t=this.objectForSample,o=Qh[e],i=py[o],s=dy[o],l=uy[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);ly.fromArray(d).applyMatrix4(t.matrixWorld),cy.fromArray(p),c.push({pos:ly.toArray(),norm:cy.toArray()})}return c}else return(this.objectForSample.geometry.index?ey(this.objectForSample.geometry):ty(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=Oo(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 ot?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ho,this.hiddenMatrix=new Ho,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as mA,Scene as hA,Vector3 as yA,Fog as gA,Box3 as xA,MeshBasicMaterial as vA}from"three";import{Camera as VO,OrthographicCamera as yy,PerspectiveCamera as jO,Vector3 as or,Object3D as gy,Quaternion as FO}from"three";import{Camera as LO,LineSegments as MO,BufferGeometry as BO,LineBasicMaterial as DO,Color as wd,Vector3 as GO,Float32BufferAttribute as my}from"three";import{BoxGeometry as PO}from"three";var Pr=n=>{var r;return r=class extends n{},r.geometryHelper=new PO(30,30,30),r};import{Ray as IO,Sphere as CO,Matrix4 as NO,Vector3 as Ur}from"three";var al=new IO,Sd=new CO,fy=new NO,Ir=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Sd.copy(i.boundingSphere),Sd.applyMatrix4(s),e.ray.intersectsSphere(Sd)===!1||(fy.copy(s).invert(),al.copy(e.ray).applyMatrix4(fy),i.boundingBox!==null&&al.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,al,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,w=new Ur,b=new Ur,S=new Ur,A=new Ur,_=2,P=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=P*P,I=Math.max(0,f.start),T=Math.min(v.count,f.start+f.count);for(let N=I,L=T-1;N<L;N+=_){if(w.fromBufferAttribute(v,N),b.fromBufferAttribute(v,N+1),al.distanceSqToSegment(w,b,A,S)>O)continue;A.applyMatrix4(n.matrixWorld);let K=e.ray.origin.distanceTo(A);K<e.near||K>e.far||t.push({distance:K,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,w,b,S,A,_){let x=new Ur,P=new Ur,O=new Ur,I=new Ur,T=new Ur;if(x.fromBufferAttribute(b,S),P.fromBufferAttribute(b,A),O.fromBufferAttribute(b,_),w.intersectTriangle(x,P,O,!1,I)===null)return null;T.copy(I),T.applyMatrix4(g.matrixWorld);let L=v.ray.origin.distanceTo(T);return L<v.near||L>v.far?null:{faceIndex:1,distance:L,point:T.clone(),object:g}}};var ll=new GO,zt=new LO,_d=class extends MO{constructor(e){let t=new BO,o=new DO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new wd(15711266),u=new wd(15711266),a=new wd(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 my(i,3)),t.setAttribute("color",new my(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;zt.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;rr("n1",t,e,zt,-i,-s,l),rr("n2",t,e,zt,i,-s,l),rr("n3",t,e,zt,-i,s,l),rr("n4",t,e,zt,i,s,l);let c=l;rr("f1",t,e,zt,-i,-s,c),rr("f2",t,e,zt,i,-s,c),rr("f3",t,e,zt,-i,s,c),rr("f4",t,e,zt,i,s,c);let u=c,a=.5;rr("u1",t,e,zt,i*.7*a,s*1.1,u),rr("u2",t,e,zt,-i*.7*a,s*1.1,u),rr("u3",t,e,zt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function rr(n,r,e,t,o,i,s){ll.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],ll.x,ll.y,ll.z)}}var cl=class extends Pr(_d){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){Ir(this.object,this.geometry,e,t,!0)}};import{Box3Helper as hy,BoxGeometry as RO}from"three";var dl;(r=>r.is=e=>"objectHelper"in e)(dl||(dl={}));var fo=(n,r)=>class extends Pa(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 hy&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof RO?(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 hy&&(i.visible=!1)}}};var Td=790,li=new or,Od=new or,zr=class extends fo(VO,cl){constructor(e="",t={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=vo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;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??Td,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new yy(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new yy(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new jO(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){super.lookAt(e),this.getWorldPosition(li),this.targetOffset=li.distanceTo(e)}getTarget(e=new or){return this.getWorldDirection(Od),this.getWorldPosition(li),Od.multiplyScalar(this.targetOffset),e.copy(li).add(Od),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(li),li.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new FO),t=new or(0,0,1).applyQuaternion(e),o=new or().copy(gy.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new or().copy(gy.DefaultUp).projectOnPlane(t),s=new or().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 or),i=e.getWorldDirection(new or).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new or),i=this.getWorldDirection(new or).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??Td,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:Td},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return In(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){this.updateCameraState(e)}updateCameraState(e){this.updateState_Entity(e,{}),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 xy,Float16BufferAttribute as UO,Matrix4 as zO}from"three";var vy=new zO;var kt=class extends tr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new xy;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 kt&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof ot&&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=Zt.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof kt&&s.needsTransformForDownstream===!0?(Zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(vy.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Zt.transformMeshSet(s.booleanMeshSetAddress,vy),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new UO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Zt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new xy,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Zt.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,ri(this),oi(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as kO}from"three";var by;(r=>{function n(e){return De.is(e)&&e instanceof kO}r.is=n})(by||(by={}));var ci=(n,r)=>class extends fo(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 gs=n=>n instanceof ot,xs=n=>n!==null&&n instanceof kt,Sy=n=>n instanceof zr;var wy=n=>dl.is(n);import{Group as WO}from"three";import{AxesHelper as HO}from"three";var mo=class extends Pr(HO){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){Ir(this.object,mo.geometryHelper,e,t)}update(){}};var vs=class extends fo(WO,mo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as KO,CameraHelper as _y}from"three";import{DirectionalLightHelper as qO}from"three";var di=class extends Pr(qO){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Ir(this.object,di.geometryHelper,e,t)}};import{PointLightHelper as $O}from"three";var ui=class extends Pr($O){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Ir(this.object,ui.geometryHelper,e,t)}};import{SpotLightHelper as YO,Vector3 as XO}from"three";var ul=class extends Pr(YO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Ir(this.object,ul.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=ul._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)}}},bs=ul;bs._vector=new XO;function ZO(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 pl=class extends ci(KO,di){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 _y(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 _y&&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&&ZO(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 QO,Vector3 as fl,Box3 as JO,Box3Helper as Ty,Color as eA}from"three";var ml=class extends ci(QO,ui){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 fl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new fl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new JO(s,l),u=new Ty(c,new eA(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 Ty){let t=this.shadow.camera,o=new fl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new fl(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 tA,CameraHelper as Oy,MathUtils as rA,Vector3 as Cy,Quaternion as oA}from"three";var Ay=new Cy,Py=new Cy,Iy=new oA,hl=class extends ci(tA,bs){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=rA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new Oy(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 Oy&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Py.setFromMatrixPosition(this.matrixWorld),Iy.setFromRotationMatrix(this.matrixWorld),Ay.copy(this.up).applyQuaternion(Iy).negate().multiplyScalar(this.distance),this.target.position.copy(Py).add(Ay),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 yl=class extends ht{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}constructor(r,e,t){super(r,e,t)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?kc(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Group as nA}from"three";var kr=class extends fo(nA,mo){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 Zr.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 Zr.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(De.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),gl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&Ey(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)De.is(e)&&gl(e)}}function Ny(n,r,e,t){return n.component===r&&Oi(n.identity,t)?n.overrideData===e?2:1:0}function Ey(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 kr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(De.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=nn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=De.is(m)?m:null,p!==null){let h=Ny(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=Ny(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?Nr.apply(u.data,d):u.data;Wt.is(m.type)&&(m={...m,type:"Empty"}),p=$t.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,Ey(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(De.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function iA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new ii(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Fo(n,r,e):r.geometry.type==="VectorGeometry"?t=new yl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new kt(n,r,e):t=new ht(n,r,e),t)}function xl(n,r,e){return r.type==="Mesh"?iA(n,r,e):r.type==="Empty"?new vs(n,r):r.type==="PointLight"?new ml(n,r,e):r.type==="SpotLight"?new hl(n,r,e):r.type==="DirectionalLight"?new pl(n,r,e):r.type==="Component"||r.type==="Instance"?new kr(n,r,e):Wt.is(r.type)?new zr(n,r):(console.error(r),new vs(n,r))}$t.createEntity=xl;function sA(n,r,e){let t=xl(n.identity,r,e),o=n.children,i=n.parent,s=n.component,l=n.instances,c=n.overrideData,u=n.uuid,a=n.stateSelection;n.dispose();for(let d of Object.keys(n))delete n[d];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let d of Object.keys(t))n[d]=t[d];n.children=[...n.children,...o],n.parent=i,n.component=s,n.instances=l,n.uuid=u,n.overrideData=c,n.updateState(n.data,e),a&&n.changeSelectedState(a,e),n.resetBBoxNeedsUpdate()}$t.changeEntityProptotype=sA;$t.Cloner=ai;function Ly(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as lA,Ray as cA,Raycaster as dA}from"three";function My(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,oi(n),ri(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function By(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 Dy(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof tr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)My(e,e.material[t])&&(r=!0);else My(e,e.material)&&(r=!0)}),r}function Gy(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof tr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)By(e,e.material[t])&&(r=!0);else By(e,e.material)&&(r=!0)}),r}var uA=new dA,pA=new lA,fA=new cA;function Ry(n,r,e){let t=n.cloner;if(t)for(let o of t.children){let i=pA.copy(o.matrixWorld).invert(),s=fA.copy(r.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=uA;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 bA=new vA;bA.wireframe=!0;var Vy=new yA,Ad=class extends hA{constructor(e,t){super();this.data=e;this.backupFog=new gA(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.needsRecomputeInstances=!1;this.ambientLight=new mA(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=Gy(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Dy(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)=>gu(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()}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(),gs(i)&&xs(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),xs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),gs(o)&&(o.freeBooleanPointer(),i instanceof kt&&i.invalidateDownstreamBooleanData().recomputeBoolean()),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()),gs(o)&&(o.invalidateUpstreamBooleanData(),xs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof kt&&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{Ly(s,t,o,{scene:this,shared:i}),s instanceof ht&&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 zr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{xs(o)&&o.recomputeBoolean()}),this.doPendingExpandCloner()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){De.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{De.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=[...Ys(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;dt.zoom(p,t)[o]=y}else{if(pr)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof kr&&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 kr&&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 kr&&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)Yt(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new zr(Ad.PERSONAL_CAMERA_ID,{...on.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)Yt(s)&&!s.raycastLock&&s.visible&&((gs(s)||wy(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Ry(s,e,t)),o(s))};return o(this),t}forEachEntity(e){for(let t of this.children)Yt(t)&&e(t)}traverseEntity(e){for(let t of this.children)Yt(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Ci.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Yt(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=xl(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 ht&&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 xA;return o.setFromPoints(t),o.getCenter(Vy),Vy}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 ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Pt&&e(t.material[o]);else t.material instanceof Pt&&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})})}},ws=Ad;ws.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as SA}from"three/examples/jsm/loaders/DRACOLoader.js";var ho;function wA(){return ho||(ho=new SA,ho.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ho.decoderPending}async function _A(n){if(ho){let r={attributeIDs:ho.defaultAttributeIDs,attributeTypes:ho.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ho.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 jy(n,r){let[e,t]=El(Us.deserialize(new Uint8Array(n)));Xf(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 wA();for(let i of o){let s=await _A(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 V9}from"three";import{mergeBufferGeometries as U9}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Fy(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 Uy,ShaderLib as TA}from"three";function zy(n){let r=new Set;return n.traverse(e=>{if(e instanceof tr)if(Re(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(OA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Uy,specularColor:new Uy});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},TA.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 AA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function OA(n){return n.getLayersOfType("transmission").length>0}function AA(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 ky(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Hy(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 Wy(n){let r=[];return n.traverse(e=>{e instanceof ai&&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&&Fy(c),c}),s=PA(e.parameters.hideBase?i:[t instanceof ot?t.geometry:[],...i]);t instanceof ot&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:qh})}),n}function qy(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function $y(n){Object.values(n.shared.materials).forEach(r=>{Pd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Pd(e.material):"materials"in e&&e.materials.forEach(t=>{Pd(t)})})}function Pd(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 Yy="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Id=class extends CA{load(r,e,t,o=console.error){let i=new IA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Yy+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Yy),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 jy(r,$y);await Promise.all([Xh(e)&&fh(),sy(e)&&Hh()].filter(Boolean));let t=new jo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new ws(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&&Sy(s)&&Object.assign(s,{makeDefault:!0})}return o=Wy(o),o=zy(o),o=ky(o),o=Hy(o),o=qy(o),o}};export{Id as default};