@splinetool/loader 0.9.225 → 0.9.226
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +70 -70
- package/build/SplineLoader.js +66 -66
- package/package.json +2 -2
package/build/SplineLoader.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
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 Wo=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 qo(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 Wo("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 $o;(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})($o||($o={}));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 Yo(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&&!Yo(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}}},Cr;(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(!Yo(c))return;s+=1}if(c===void 0)return i;if(!!Yo(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})(Cr||(Cr={}));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(!Yo(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(!Yo(r))return r;if(!Yo(n))return Cr.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"&&!qo(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=$o.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 Wo)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(Pl||(Pl={}));var Gd=Symbol(),pg=Symbol(),Cs=Symbol(),ho=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 ho{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,$o.runOp(this._current,r),r.path)}},Nl=class extends ho{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}},Xo=class extends ho{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)}},Ko=class extends ho{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 ho{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 Xo(n,r,e):e instanceof ye?new Ko(n,r,e):e instanceof Ee?new Proxy(new Nl(n,r,e),mg):e!==null&&typeof e=="object"?qo(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 Zo(n,r){let[e,t]=El(n);return r(e),t.result()}function Ye(n){return n instanceof Xo||n instanceof Ko?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 Xo)&&typeof s=="string")return i.data(s);if((i instanceof ye||i instanceof Ko)&&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,Wr,C=0;var qd=[],Bl=qd,Dl=0,vt={},we,Hr,Dt=0,ar=0,Ct,Nr,ut=[],Oe,jd={useRecords:!1,mapsAsObjects:!0},xi=class{},Rl=new xi;Rl.name="MessagePack 0xC1";var Qo=!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)));Wr=e>-1?e:r.length,C=0,Dl=0,ar=0,Hr=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{Qo=!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{Qo=!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&&!Qo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Ge();if(C==Wr)we.restoreStructures&&Fd(),we=null,ne=null,Nr&&(Nr=null);else if(C>Wr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Qo)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 Hr.slice(C-Dt,(C+=r)-Dt);if(ar==0&&Wr<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 yo(ne[C++]);case 200:return r=Oe.getUint16(C),C+=2,yo(r);case 201:return r=Oe.getUint32(C),C+=4,yo(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++])):yo(2);case 214:return yo(4);case 215:return yo(8);case 216:return yo(16);case 217:return r=ne[C++],ar>=C?Hr.slice(C-Dt,(C+=r)-Dt):yg(r);case 218:return r=Oe.getUint16(C),C+=2,ar>=C?Hr.slice(C-Dt,(C+=r)-Dt):gg(r);case 219:return r=Oe.getUint32(C),C+=4,ar>=C?Hr.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 yo(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 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=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);Nr||(Nr=new Map);let e=ne[C],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Nr.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=Nr.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=Wr,e=C,t=Dl,o=Dt,i=ar,s=Hr,l=Bl,c=Nr,u=Ct,a=new Uint8Array(ne.slice(0,Wr)),d=we,p=we.slice(0,we.length),f=vt,m=Qo,h=n();return Wr=r,C=e,Dl=t,Dt=o,ar=i,Hr=s,Bl=l,Nr=c,Ct=u,ne=a,Qo=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,Nr=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"),go=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 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)}Qd(n)}var ou=new go({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 go({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 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(qo(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 $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 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 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 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 xo;(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})(xo||(xo={}));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 Jo;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Jo||(Jo={}));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:Jo.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 en;(r=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(en||(en={}));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:en.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 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 tn;(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})(tn||(tn={}));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,...tn.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 vo;(r=>r.defaultData={type:"Mesh",...Nt.defaultData,...qs.defaultData})(vo||(vo={}));var rn;(r=>r.defaultData={...Nt.defaultData,...tn.identity,...xo.defaultData})(rn||(rn={}));var hu;(r=>{function n(e){return{...Nt.defaultData,...Ws.defaultData(e)}}r.defaultData=n})(hu||(hu={}));var on;(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})(on||(on={}));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=tn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(Kr||(Kr={}));var yu;(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,...xo.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,...vo.defaultData,geometry:Xr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Nt.defaultData,...vo.defaultData,geometry:Xr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Nt.defaultData,...vo.defaultData,geometry:Xr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(yu||(yu={}));var bo;(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=Zo(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=Zo(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,tn.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})(bo||(bo={}));var nn;(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})(nn||(nn={}));var $s;(r=>r.defaultData={orbitControls:nn.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}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"},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 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 sn=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(sn(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 Er=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(Er(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{}}(),an=G0;var R0=an?function(n,r){return an(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 ln=z0;function k0(n,r,e){r=="__proto__"&&an?an(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 cn=H0;var W0=Object.prototype,q0=W0.hasOwnProperty;function $0(n,r,e){var t=n[r];(!(q0.call(n,r)&&cn(t,e))||e===void 0&&!(r in n))&&ta(n,r,e)}var dn=$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):dn(e,l,c)}return e}var pr=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 un=Z0;function Q0(n){return n!=null&&un(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 pn=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")},fn=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,So=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)&&un(n.length)&&!!Me[Et(n)]}var Yu=Dx;function Gx(n){return function(r){return n(r)}}var mn=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{}}(),Lr=Vx;var Ku=Lr&&Lr.isTypedArray,jx=Ku?mn(Ku):Yu,oa=jx;var Fx=Object.prototype,Ux=Fx.hasOwnProperty;function zx(n,r){var e=Re(n),t=!e&&fn(n),o=!e&&!t&&So(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")||ln(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(!pn(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 hn=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=pn(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 yn=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||sn(n)?!0:tv.test(n)||!ev.test(n)||r!=null&&n in Object(r)}var tp=rv;var ov=wt(Object,"create"),Mr=ov;function nv(){this.__data__=Mr?Mr(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(Mr){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 Mr?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]=Mr&&r===void 0?fv:r,this}var sp=mv;function gn(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])}}gn.prototype.clear=rp;gn.prototype.delete=op;gn.prototype.get=np;gn.prototype.has=ip;gn.prototype.set=sp;var Xl=gn;function hv(){this.__data__=[],this.size=0}var ap=hv;function yv(n,r){for(var e=n.length;e--;)if(cn(n[e][0],r))return e;return-1}var Qr=yv;var gv=Array.prototype,xv=gv.splice;function vv(n){var r=this.__data__,e=Qr(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=Qr(r,n);return e<0?void 0:r[e][1]}var cp=bv;function Sv(n){return Qr(this.__data__,n)>-1}var dp=Sv;function wv(n,r){var e=this.__data__,t=Qr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var up=wv;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=ap;xn.prototype.delete=lp;xn.prototype.get=cp;xn.prototype.has=dp;xn.prototype.set=up;var Jr=xn;var _v=wt(Ue,"Map"),eo=_v;function Tv(){this.size=0,this.__data__={hash:new Xl,map:new(eo||Jr),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 to=Av;function Pv(n){var r=to(this,n).delete(n);return this.size-=r?1:0,r}var mp=Pv;function Iv(n){return to(this,n).get(n)}var hp=Iv;function Cv(n){return to(this,n).has(n)}var yp=Cv;function Nv(n,r){var e=to(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var gp=Nv;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=pp;vn.prototype.delete=mp;vn.prototype.get=hp;vn.prototype.has=yp;vn.prototype.set=gp;var wo=vn;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||wo),e}Kl.Cache=wo;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"||sn(n))return n;var r=n+"";return r=="0"&&1/n==-jv?"-0":r}var ro=Fv;function Uv(n,r){r=Gt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[ro(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 bn=zv;var wp=Ke?Ke.isConcatSpreadable:void 0;function kv(n){return Re(n)||fn(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):bn(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),Sn=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=Sn(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 Jr,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 Jr){var t=e.__data__;if(!eo||t.length<nb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new wo(t)}return e.set(n,r),this.size=e.size,this}var Bp=ib;function wn(n){var r=this.__data__=new Jr(n);this.size=r.size}wn.prototype.clear=Np;wn.prototype.delete=Ep;wn.prototype.get=Lp;wn.prototype.has=Mp;wn.prototype.set=Bp;var _n=wn;function sb(n,r){return n&&pr(r,hn(r),n)}var Dp=sb;function ab(n,r){return n&&pr(r,yn(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,Tn=mb;function hb(n,r){return pr(n,Tn(n),r)}var Hp=hb;var yb=Object.getOwnPropertySymbols,gb=yb?function(n){for(var r=[];n;)bn(r,Tn(n)),n=Sn(n);return r}:la,ca=gb;function xb(n,r){return pr(n,ca(n),r)}var Wp=xb;function vb(n,r,e){var t=r(n);return Re(n)?t:bn(t,e(n))}var da=vb;function bb(n){return da(n,hn,Tn)}var Ti=bb;function Sb(n){return da(n,yn,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=Er(pa),Pb=Er(eo),Ib=Er(fa),Cb=Er(ma),Nb=Er(ea),_o=Et;(pa&&_o(new pa(new ArrayBuffer(1)))!=Kp||eo&&_o(new eo)!=qp||fa&&_o(fa.resolve())!=$p||ma&&_o(new ma)!=Yp||ea&&_o(new ea)!=Xp)&&(_o=function(n){var r=Et(n),e=r==Ob?n.constructor:void 0,t=e?Er(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 Br=_o;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,On=Bb;function Db(n){var r=new n.constructor(n.byteLength);return new On(r).set(new On(n)),r}var An=Db;function Gb(n,r){var e=r?An(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?An(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 An(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"&&!pn(n)?Lu(Sn(n)):{}}var sf=aS;var lS="[object Map]";function cS(n){return rt(n)&&Br(n)==lS}var af=cS;var lf=Lr&&Lr.isMap,dS=lf?mn(lf):af,cf=dS;var uS="[object Set]";function pS(n){return rt(n)&&Br(n)==uS}var df=pS;var uf=Lr&&Lr.isSet,fS=uf?mn(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=Br(n),p=d==mf||d==SS;if(So(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 _n);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?yn:hn,h=a?void 0:m(n);return ju(h||n,function(y,g){h&&(g=y,y=n[g]),dn(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 To=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 wo;++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 On(n),new On(r)));case t1:case r1:case i1:return cn(+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:Br(n),u=l?Pf:Br(r);c=c==Af?va:c,u=u==Af?va:u;var a=c==va,d=u==va,p=c==u;if(p&&So(n)){if(!So(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new _n),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 _n),o(h,y,e,t,i)}}return p?(i||(i=new _n),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=ro(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&&un(o)&&ln(s,o)&&(Re(n)||fn(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[ro(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}),pr(n,ua(n),e),t&&(e=ya(e,I1|C1|N1,Vf));for(var o=r.length;o--;)Rf(e,r[o]);return e}),Pn=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=ro(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:ln(r[o+1])?[]:{})}dn(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)}),In=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={...In(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:{...nn.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=Zr({},Ee.prototype)}function X1(n){n.shared.videos=Zr({},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=Zr({},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,...vo.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 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,In(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={...In(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={...In(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 ko}from"three";var lw=.5*(Math.sqrt(3)-1),Pi=(3-Math.sqrt(3))/6,cw=1/3,fr=1/6,rG=(Math.sqrt(5)-1)/4,oG=(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)*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 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 Dr}from"three";var pw=new Dr,fw=new Dr,mw=new Dr,Ci;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ci||(Ci={}));var Cn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Dr;this.matrixWorldRigid=new Dr;this.shearScale=new Dr;this.shearScaleInv=new Dr}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 Dr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Dr?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 Cn(hw){},yw=n=>n.type==="Mesh",Gr=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 Gr(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 Oo=new Rt,Ao=new Rt,Nn=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(Oo,Ao),Nn.copy(r).multiply(n.matrixWorld),Ao.x===0&&Ao.y===0&&Ao.z===0?e.push(new Rt(Oo.x,Oo.y,Oo.z).applyMatrix4(Nn)):im.forEach(t=>{e.push(t.clone().multiply(Ao).add(Oo).applyMatrix4(Nn))})},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(Nn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Ao).multiplyScalar(.5),this.getCenter(Oo),Nn.copy(this.matrix).setPosition(Oo),this.vertices=im.map(e=>e.clone().multiply(Ao).applyMatrix4(Nn))}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 Cn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new 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)bo.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=bo.patch(this.data,s),bo.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 Pn(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 Pn(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,bo.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(Cr.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=on.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=Cr.filterOp(d.overrideData,a);p&&d.updateByOp(p,tt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Cr.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||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}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 oo(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(oo(se,ee,b),!B)for(let te=0;te<=i;te++){let re=te/i,oe=T.clone().multiplyScalar(re).add(_);oo(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();oo(te,ee,b);for(let re=0;re<=i;re++){let oe=re/i,Z=T.clone().multiplyScalar(-oe).add(K);oo(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);oo(he,H,S),h.push(S.x,S.y,S.z),oo(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),oo(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);oo(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 Rr,Vector2 as lc}from"three";var no=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 Rr,h=m.clone(),y=new Pw,g=i*o,v=o-g,w=s+1,b=new Rr,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 Rr().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 Rr;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 Rr;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 Rr,m=new Rr,h=new Rr,y=new Rr,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 no(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 no{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 Vr,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,En=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 En(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ln=class extends En{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ln(this.parent).copy(this)}},Kt=class extends En{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ln(this),new Ln(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,Mn=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,Mn.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 Mn.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=Mn.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=Mn,d=io(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=Mn,p=io(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=io(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=io(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=io(n[0].roundedCurveCorner,r)*.5),t}function io(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=io(l,e),u=Mn;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 Vr,Uw=new Vr,zw=new Vr,kw=new Vr,Hw=new Vr,Ww=new Vr,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 Vr?i=e:i=new Vr(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=io(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 Vr(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}(),Bn=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 Bn,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 Bn,e=new Bn,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 Bn;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 Bn;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 Bn,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 Po(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 fR=Ce.ODD,mR=Ce.NONZERO,hR=Ce.POSITIVE,yR=Ce.NEGATIVE,gR=Ce.ABS_GEQ_TWO,xR=He.POLYGONS,vR=He.CONNECTED_POLYGONS,bR=He.BOUNDARY_CONTOURS;var Dn=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=Po({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 Dn(this._shape,this._curveSegments);return e.userData=To(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),Gn=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=Po({windingRule:l,elementType:He.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),d=Po({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=Po({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=Po({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 Gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=To(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 Dn(n.shape,o,{windingRule:s}):l=new Gn(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(Rn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=Rn(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(Rn(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(Rn(u,a))}return r<Gm?i>0?Vm(n,t,o,i):n.addPoint(Rn(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 Rn(n,r){return new Kt(Bm.generateUUID(),new Dm(n,r))}function Ra(n,r,e,t,o,i){let s=Rn(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 Io(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Io=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,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,Xy=It?3*Math.PI/2:k,Ky=It?kr: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 Ir=0;Ir<F;Ir++){let Cd=Ir*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+Ir,[0,1,2].forEach(xt=>{Z[$*3+xt]=Jy.getComponent(xt),me[$*3+xt]=eg.getComponent(xt)}),de[$*2]=+nr,de[$*2+1]=Ir/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+Ir,[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]=Ir/a}}g.addVectors(v,N),$=te+ke*F+Ir,[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]=Ir/a}}let Ho=M+2*p+ee,vl=1,[bl,pi]=[+m,Ho-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===Ho-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 no{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 Vn,Matrix3 as qm,Matrix4 as Ym,MathUtils as c_,Object3D as d_,Sphere as u_,Vector2 as Vt,Vector3 as lt}from"three";var mr=new Ym,_c=new d_,Va=new lt,so=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 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 $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 jn(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 so;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 jn(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 so().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 Vn(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 Vn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(r.skinIndices))}if(r.skinWeights.length>0){let o=new Vn(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 Vn(t.vertices.length*3,3),i=new Vn(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 Vn(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}};so.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}},jn=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 jn(r,e,t,void 0,void 0,o))}function Fn(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 so().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(Fn(j.x,M.x),Fn(j.y,M.y)),F.set(Fn(M.x,B.x),Fn(M.y,B.y)),Y.set(Fn(j.x,B.x),Fn(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 hr,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 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=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,kr=Math.cos(gt),Bt=Math.sin(gt),Ho=k;for(let vl=0;vl<=Pe;vl++){let bl=Math.cos(Ho),pi=Math.sin(Ho);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++),Ho+=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 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 Io(!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,Un=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=Zr(new Mc,Un.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===`
|
|
1
|
+
var Og=Object.create;var Vl=Object.defineProperty;var Ag=Object.getOwnPropertyDescriptor;var Ig=Object.getOwnPropertyNames;var Cg=Object.getPrototypeOf,Ng=Object.prototype.hasOwnProperty;var jl=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Eg=(n,r)=>{for(var e in r)Vl(n,e,{get:r[e],enumerable:!0})},Mg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Ig(r))!Ng.call(n,o)&&o!==e&&Vl(n,o,{get:()=>r[o],enumerable:!(t=Ag(r,o))||t.enumerable});return n};var Fl=(n,r,e)=>(e=n!=null?Og(Cg(n)):{},Mg(r||!n||!n.__esModule?Vl(e,"default",{value:n,enumerable:!0}):e,n));var bm=jl((yc,vm)=>{(function(n,r){typeof yc=="object"?vm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(yc,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 Pm=jl((Ga,Tm)=>{(function(n,r){typeof Ga=="object"&&typeof Tm<"u"?r(Ga):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ga,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,w=r.length;if(w<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],T=[],_=e==="f"?w:v,x=h=p=0;x<w;x++)b[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var C,P=new Array(v).fill(0);for(x=0;x<w;x++)for(s=0;s<v;s++)b[x][s]=r[x][s];for(x=0;x<v;x++){for(S[x]=p,m=0,c=x+1,s=x;s<w;s++)m+=Math.pow(b[s][x],2);if(m<i)p=0;else for(f=(d=b[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<w;l++)m+=b[l][x]*b[l][s];for(d=m/f,l=x;l<w;l++)b[l][s]=b[l][s]+d*b[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(b[x][s],2);if(m<i)p=0;else{for(f=(d=b[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[x][x+1]=d-p,s=c;s<v;s++)S[s]=b[x][s]/f;for(s=c;s<w;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[x][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(y=Math.abs(P[x])+Math.abs(S[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=b[x][x+1]*p,s=c;s<v;s++)T[s][x]=b[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=S[x],c=x}if(e){if(e==="f")for(x=v;x<w;x++){for(s=v;s<w;s++)b[x][s]=0;b[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)b[x][s]=0;if(p!==0){for(f=b[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<w;l++)m+=b[l][x]*b[l][s];for(d=m/f,l=x;l<w;l++)b[l][s]=b[l][s]+d*b[l][x]}for(s=x;s<w;s++)b[s][x]=b[s][x]/p}else for(s=x;s<w;s++)b[s][x]=0;b[x][x]=b[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*S[x],S[x]=a*S[x],!(Math.abs(d)<=o));x++)if(p=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[x]),m=-d/f,e)for(s=0;s<w;s++)y=b[s][u],g=b[s][x],b[s][u]=y*a+g*m,b[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[l-1])-g)*(y+g)+((p=S[l-1])-(f=S[l]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=S[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(S[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<w;s++)y=b[s][x-1],g=b[s][x],b[s][x-1]=y*a+g*m,b[s][x]=-y*m+g*a}S[c]=0,S[l]=d,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:b,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var ay=jl(gl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||r;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var w=0;w<a._howls.length;w++)a._howls[w]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!r.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),w=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),S=w*1e3/Math.abs(y._rate),b=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=b,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var O=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(O,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,w):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,w),S!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),S)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?C():(p._playLock=!0,p.once("resume",C),p._clearTimer(y._id))}else{var P=function(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var O=x.play();if(O&&typeof Promise<"u"&&(O instanceof Promise||typeof O.then=="function")?(p._playLock=!0,_(),O.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),S):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(V){p._emit("playerror",y._id,V)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)P();else{p._playLock=!0,p._state="loading";var A=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,A,!1)};x.addEventListener(r._canPlayEvent,A,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var v=r.ctx.currentTime,w=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,w)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,w=Math.abs(v/.01),S=Math.max(4,w>0?f/w:f),b=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-b)/f;b=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},S)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),w=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,S=w*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),S)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var w=function(){a._playLock?setTimeout(w,0):v()};setTimeout(w,0)}else v()}else if(a._webAudio){var S=a.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+S*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,d=a._parent;d._duration=Math.ceil(a._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(a&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof gl<"u"&&(gl.Howler=r,gl.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 oA,Loader as nA}from"three";var Ce=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,Ce.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,Ce.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,Ce.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function vi(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&vi(t)}return Object.freeze(n)}function Jd(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 $o=class extends Error{};function Es(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function lr(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 Yo(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 eu(){return typeof process<"u"}function tu(n,r){for(let e of n)r(e.id,e.data)!==!0&&tu(e.children,r)}function ru(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)ru(e,r)}var ze=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ze.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&ru(o,t)}}traverse(e){tu(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,ze.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new $o("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)=>Jd(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 lr(0,o,o);{let s=i[0].fi;return lr(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 lr(c,c+o,o)}else return lr(s.fi,l.fi,o)}}};var Xo;(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})(Xo||(Xo={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return eu()||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 lr(0,t,t);{let i=o[0].fi;return lr(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 lr(l,l+t,t)}else return lr(i.fi,s.fi,t)}}};function Ko(n){return n&&typeof n=="object"&&n instanceof Le}var Le=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&&!Ko(t))return null;o+=1}t=t?Es(t):new Le;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=Es(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Es(c);u[r.path[o-1]]=t,t=u}else{let u=new Le;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Le.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Mr;(t=>{function n(o,i){return bi(o,i)??o}t.apply=n;function r(o,i){return Ul(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(!Ko(c))return;s+=1}if(c===void 0)return i;if(!!Ko(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=zl([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Mr||(Mr={}));function zl(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=zl(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 Lg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function bi(n,r){if(!Ko(r))return r;if(n instanceof ze){let e=zl(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Lg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=bi(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Le)return Ul(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=bi(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Ul(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Ko(r))return r;if(!Ko(n))return Mr.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 Le;for(let o of e){let i=Ul(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function ou(n,r){let e={cur:[],result:[],len:0};return n=Si(n,r,e)??n,[n,e.result]}function Ms(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Ls(n){n&&(n.len-=1)}function Bg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function nu(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,Ms(e,s));Ls(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=nu(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 Dg(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Si(i.data,r,Ms(e,s));return Ls(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Si(n,r,e){if(n instanceof ze){let t=nu(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return Dg(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Si(i,r,Ms(e,s));return Ls(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"&&!Yo(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Si(s,r,Ms(e,i));Ls(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");Bg(e)}return t}else return}}var Bs;(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})(Bs||(Bs={}));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 Le&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),d.length===a.length&&(c instanceof ze||c instanceof he||c instanceof Ce?p=c.runOp(u):p=Xo.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ce){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Le){let w={...v,[g]:h};h=Object.setPrototypeOf(w,Le.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let w=h;h=[...v],h[g]=w}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof ze){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return t(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(tt||(tt={}));var kl;(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]=ou(d,{[m.id]:h});d=g;for(let w of v){let S=w[w.length-1];w.splice(w.length-1,1),p.push({type:0,path:w,props:{[S]:h}}),f.push({type:0,path:w,props:{[S]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=tt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof $o)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(kl||(kl={}));var iu=Symbol(),Gg=Symbol(),Gs=Symbol(),xo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Ds);){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[Gs];t&&t(),delete this._children[r]}}}},Wl=class extends xo{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,Xo.runOp(this._current,r),r.path)}},ql=class extends xo{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,Ce.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},su={get(n,r){if(r===Gs)return()=>{n._parent=null};if(r===iu)return n._current;if(r===Gg)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=Rs(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]}}},Rg={...su,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}},Vg={...su,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}},Zo=class extends xo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Gs]=()=>{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=Rs(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)}},Qo=class extends xo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Gs]=()=>{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=Rs(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 Hl(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 Ds=class extends xo{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){Hl(this.ts,e,r),Hl(this.actual,t,r),Hl(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Rs(n,r,e){return e instanceof ze?new Zo(n,r,e):e instanceof he?new Qo(n,r,e):e instanceof Ce?new Proxy(new ql(n,r,e),Vg):e!==null&&typeof e=="object"?Yo(e)?e:new Proxy(new Wl(n,r,e),Rg):e}function $l(n){let r=new Ds(n);return[Rs(r,"",n),r]}function Jo(n,r){let[e,t]=$l(n);return r(e),t.result()}function Ye(n){return n instanceof Zo||n instanceof Qo?n._current:n!==null&&typeof n=="object"?n[iu]:n}var dt;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof ze||i instanceof Zo)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Qo)&&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 au(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Wt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Vs=class{},wi=class extends Vs{constructor(e){super();this.id=e}},_i=class extends Vs{constructor(e){super();this.data=e}};var Xl;try{Xl=new TextDecoder}catch{}var ne,Yr,N=0;var hu=[],Kl=hu,Zl=0,vt={},we,$r,Dt=0,cr=0,Ct,Lr,ut=[],Oe,lu={useRecords:!1,mapsAsObjects:!0},Ti=class{},Jl=new Ti;Jl.name="MessagePack 0xC1";var en=!1,dr=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 bu(()=>(Fs(),this?this.unpack(r,e):dr.prototype.unpack.call(lu,r,e)));Yr=e>-1?e:r.length,N=0,Zl=0,cr=0,$r=null,Kl=hu,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 dr){if(vt=this,this.structures)return we=this.structures,js();(!we||we.length>0)&&(we=[])}else vt=lu,(!we||we.length>0)&&(we=[]);return js()}unpackMultiple(r,e){let t,o=0;try{en=!0;let i=r.length,s=this?this.unpack(r,i):ks.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(js())===!1)return}else{for(t=[s];N<i;)o=N,t.push(js());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{en=!1,Fs()}}_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 js(){try{if(!vt.trusted&&!en){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Re();if(N==Yr)we.restoreStructures&&cu(),we=null,ne=null,Lr&&(Lr=null);else if(N>Yr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!en)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&cu(),Fs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function cu(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Re(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&yu()[n&63];return r?(r.read||(r.read=ec(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[xu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}else if(n<192){let r=n-160;if(cr>=N)return $r.slice(N-Dt,(N+=r)-Dt);if(cr==0&&Yr<140){let e=r<16?tc(r):gu(r);if(e!=null)return e}return Ql(r)}else{let r;switch(n){case 192:return null;case 193:return Ct?(r=Re(),r>0?Ct[1].slice(Ct.position1,Ct.position1+=r):Ct[0].slice(Ct.position0,Ct.position0-=r)):Jl;case 194:return!1;case 195:return!0;case 196:return Yl(ne[N++]);case 197:return r=Oe.getUint16(N),N+=2,Yl(r);case 198:return r=Oe.getUint32(N),N+=4,Yl(r);case 199:return vo(ne[N++]);case 200:return r=Oe.getUint16(N),N+=2,vo(r);case 201:return r=Oe.getUint32(N),N+=4,vo(r);case 202:if(r=Oe.getFloat32(N),vt.useFloat32>2){let e=Us[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Oe.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Oe.getUint16(N),N+=2,r;case 206:return r=Oe.getUint32(N),N+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigUint64(N),N+=8,r;case 208:return Oe.getInt8(N++);case 209:return r=Oe.getInt16(N),N+=2,r;case 210:return r=Oe.getInt32(N),N+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return mu(ne[N++]&63);{let e=ut[r];if(e)return e.read?(N++,e.read(Re())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,mu(ne[N++]&63,ne[N++])):vo(2);case 214:return vo(4);case 215:return vo(8);case 216:return vo(16);case 217:return r=ne[N++],cr>=N?$r.slice(N-Dt,(N+=r)-Dt):Fg(r);case 218:return r=Oe.getUint16(N),N+=2,cr>=N?$r.slice(N-Dt,(N+=r)-Dt):zg(r);case 219:return r=Oe.getUint32(N),N+=4,cr>=N?$r.slice(N-Dt,(N+=r)-Dt):Ug(r);case 220:return r=Oe.getUint16(N),N+=2,uu(r);case 221:return r=Oe.getUint32(N),N+=4,uu(r);case 222:return r=Oe.getUint16(N),N+=2,pu(r);case 223:return r=Oe.getUint32(N),N+=4,pu(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 jg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ec(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>jg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Re);return n.highByte===0&&(n.read=du(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Re()}return t}return e.count=0,n.highByte===0?du(r,e):e}var du=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||yu()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=ec(o,n)),o.read()};function yu(){let n=bu(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var Ql=zs,Fg=zs,zg=zs,Ug=zs;function zs(n){let r;if(n<16&&(r=tc(n)))return r;if(n>64&&Xl)return Xl.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=Xe.apply(String,t),t.length=0)}return t.length>0&&(r+=Xe.apply(String,t)),r}function uu(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}function pu(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[xu()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}}var Xe=String.fromCharCode;function gu(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return Xe.apply(String,e)}function tc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return Xe(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return Xe(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return Xe(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Xe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Yl(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function vo(n){let r=ne[N++];if(ut[r])return ut[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var fu=new Array(4096);function xu(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,cr>=N)return $r.slice(N-Dt,(N+=n)-Dt);if(!(cr==0&&Yr<180))return Ql(n)}else return N--,Re();let r=(n<<5^(n>1?Oe.getUint16(N):n>0?ne[N]:0))&4095,e=fu[r],t=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return N=t,e.string;o-=3,t=N}for(e=[],fu[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?tc(n):gu(n);return l!=null?e.string=l:e.string=Ql(n)}var mu=(n,r)=>{var e=Re();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=ec(e,t),e.read()},vu=typeof self=="object"?self:global;ut[0]=()=>{};ut[0].noBuffer=!0;ut[101]=()=>{let n=Re();return(vu[n[0]]||Error)(n[1])};ut[105]=n=>{let r=Oe.getUint32(N-4);Lr||(Lr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Lr.set(r,o);let i=Re();return o.used?Object.assign(t,i):(o.target=i,i)};ut[112]=n=>{let r=Oe.getUint32(N-4),e=Lr.get(r);return e.used=!0,e.target};ut[115]=()=>new Set(Re());var rc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ut[116]=n=>{let r=n[0],e=rc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new vu[e](Uint8Array.prototype.slice.call(n,1).buffer)};ut[120]=()=>{let n=Re();return new RegExp(n[0],n[1])};ut[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Ct=[Re(),Re()],Ct.position0=0,Ct.position1=0;let t=N;N=e;try{return Re()}finally{N=t}};ut[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function bu(n){let r=Yr,e=N,t=Zl,o=Dt,i=cr,s=$r,l=Kl,c=Lr,u=Ct,a=new Uint8Array(ne.slice(0,Yr)),d=we,p=we.slice(0,we.length),f=vt,m=en,h=n();return Yr=r,N=e,Zl=t,Dt=o,cr=i,$r=s,Kl=l,Lr=c,Ct=u,ne=a,en=m,we=d,we.splice(0,we.length,...p),vt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function Fs(){ne=null,Lr=null,we=null}function Su(n){n.unpack?ut[n.type]=n.unpack:ut[n.type]=n}var Us=new Array(147);for(let n=0;n<256;n++)Us[n]=+("1e"+Math.floor(45.15-n*.30103));var ks=new dr({useRecords:!1}),kg=ks.unpack,Hg=ks.unpackMultiple,Wg=ks.unpack,Hs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},qg=new Float32Array(1),lI=new Uint8Array(qg.buffer,0,4);var Ws;try{Ws=new TextEncoder}catch{}var qs,nc,$s=typeof Buffer<"u",oc=$s?Buffer.allocUnsafeSlow:Uint8Array,Pu=$s?Buffer:Uint8Array,wu=$s?4294967296:2144337920,R,je,E=0,ur,pr=null,$g=/[\u0080-\uFFFF]/,Pi=Symbol("record-id"),bo=class extends dr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Pu.prototype.utf8Write?function(x,C,P){return R.utf8Write(x,C,P)}:Ws&&Ws.encodeInto?function(x,C){return Ws.encodeInto(x,R.subarray(C)).written}:!1,a=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],w=0,S=0;this.pack=this.encode=function(x,C){if(R||(R=new oc(8192),je=new DataView(R.buffer,0,8192),E=0),ur=R.length-10,ur-E<2048?(R=new oc(R.length),je=new DataView(R.buffer,0,R.length),ur=R.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(pr=["",""],R[E++]=214,R[E++]=98,pr.position=E-t,E+=4):pr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<P;I++){let A=o[I];if(!A)continue;let O,V=o.transitions;for(let z=0,$=A.length;z<$;z++){let te=A[z];O=V[te],O||(O=V[te]=Object.create(null)),V=O}V[Pi]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(b(x),pr){je.setUint32(pr.position+t,E-pr.position-t);let P=pr;pr=null,b(P[0]),b(P[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>ur&&_(E),a.offset=E;let P=Xg(R.subarray(t,E),l.idsToInsert);return l=null,P}return C&Au?(R.start=t,R.end=E,R):R.subarray(t,E)}finally{if(o){if(S<10&&S++,w>1e4)o.transitions=null,S=0,w=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let P=0,I=v.length;P<I;P++)v[P][Pi]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=R.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&rx&&(E=t)}};let b=x=>{E>ur&&(R=_(E));var C=typeof x,P;if(C==="string"){let I=x.length;if(pr&&I>=8&&I<4096){let V=$g.test(x);pr[V?0:1]+=x,R[E++]=193,b(V?-I:I);return}let A;I<32?A=1:I<256?A=2:I<65536?A=3:A=5;let O=I*3;if(E+O>ur&&(R=_(E+O)),I<64||!u){let V,z,$,te=E+A;for(V=0;V<I;V++)z=x.charCodeAt(V),z<128?R[te++]=z:z<2048?(R[te++]=z>>6|192,R[te++]=z&63|128):(z&64512)===55296&&(($=x.charCodeAt(V+1))&64512)===56320?(z=65536+((z&1023)<<10)+($&1023),V++,R[te++]=z>>18|240,R[te++]=z>>12&63|128,R[te++]=z>>6&63|128,R[te++]=z&63|128):(R[te++]=z>>12|224,R[te++]=z>>6&63|128,R[te++]=z&63|128);P=te-E-A}else P=u(x,E+A,O);P<32?R[E++]=160|P:P<256?(A<2&&R.copyWithin(E+2,E+1,E+1+P),R[E++]=217,R[E++]=P):P<65536?(A<3&&R.copyWithin(E+3,E+2,E+2+P),R[E++]=218,R[E++]=P>>8,R[E++]=P&255):(A<5&&R.copyWithin(E+5,E+3,E+3+P),R[E++]=219,je.setUint32(E,P),E+=4),E+=P}else if(C==="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,je.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,je.setInt16(E,x),E+=2):(R[E++]=210,je.setInt32(E,x),E+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){R[E++]=202,je.setFloat32(E,x);let A;if(I<4||(A=x*Us[(R[E]&127)<<1|R[E+1]>>7])>>0===A){E+=4;return}else E--}R[E++]=203,je.setFloat64(E,x),E+=8}else if(C==="object")if(!x)R[E++]=192;else{if(l){let A=l.get(x);if(A){if(!A.id){let O=l.idsToInsert||(l.idsToInsert=[]);A.id=O.push(A)}R[E++]=214,R[E++]=112,je.setUint32(E,A.id),E+=4;return}else l.set(x,{offset:E-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?R[E++]=144|P:P<65536?(R[E++]=220,R[E++]=P>>8,R[E++]=P&255):(R[E++]=221,je.setUint32(E,P),E+=4);for(let A=0;A<P;A++)b(x[A])}else if(I===Map){P=x.size,P<16?R[E++]=128|P:P<65536?(R[E++]=222,R[E++]=P>>8,R[E++]=P&255):(R[E++]=223,je.setUint32(E,P),E+=4);for(let[A,O]of x)b(A),b(O)}else{for(let A=0,O=qs.length;A<O;A++){let V=nc[A];if(x instanceof V){let z=qs[A];if(z.write){z.type&&(R[E++]=212,R[E++]=z.type,R[E++]=0),b(z.write.call(this,x));return}let $=R,te=je,K=E;R=null;let q;try{q=z.pack.call(this,x,k=>(R=$,$=null,E+=k,E>ur&&_(E),{target:R,targetView:je,position:E-k}),b)}finally{$&&(R=$,je=te,E=K,ur=R.length-10)}q&&(q.length+E>ur&&_(q.length+E),E=Yg(q,R,E,z.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")R[E++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))R[E++]=211,je.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)R[E++]=207,je.setBigUint64(E,x);else if(this.largeBigIntToFloat)R[E++]=203,je.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(C==="undefined")this.encodeUndefinedAsNil?R[E++]=192:(R[E++]=212,R[E++]=0,R[E++]=0);else if(C==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?R[E++]=128|P:P<65536?(R[E++]=222,R[E++]=P>>8,R[E++]=P&255):(R[E++]=223,je.setUint32(E,P),E+=4);let I;for(let A=0;A<P;A++)b(I=C[A]),b(x[I])}:(x,C)=>{R[E++]=222;let P=E-t;E+=2;let I=0;for(let A in x)(C||x.hasOwnProperty(A))&&(b(A),b(x[A]),I++);R[P+++t]=I>>8,R[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),A=0;for(let V=0,z=C.length;V<z;V++){let $=C[V];P=I[$],P||(P=I[$]=Object.create(null),A++),I=P}let O=I[Pi];if(O)O>=96&&h?(R[E++]=((O-=96)&31)+96,R[E++]=O>>5):R[E++]=O;else{O=s.nextId,O||(O=64),O<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(O=s.nextOwnId,O<g||(O=y),s.nextOwnId=O+1):(O>=g&&(O=y),s.nextId=O+1);let V=C.highByte=O>=96&&h?O-96>>5:-1;I[Pi]=O,s[O-64]=C,O<y?(C.isShared=!0,s.sharedLength=O-63,i=!0,V>=0?(R[E++]=(O&31)+96,R[E++]=V):R[E++]=O):(V>=0?(R[E++]=213,R[E++]=114,R[E++]=(O&31)+96,R[E++]=V):(R[E++]=212,R[E++]=114,R[E++]=O),A&&(w+=S*A),v.length>=m&&(v.shift()[Pi]=0),v.push(I),b(C))}for(let V=0,z=C.length;V<z;V++)b(x[C[V]])},_=x=>{let C;if(x>16777216){if(x-t>wu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(wu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,R.length-1)>>12)+1<<12;let P=new oc(C);return je=new DataView(P.buffer,0,C),R.copy?R.copy(P,0,t,x):P.set(R.slice(t,x)),E-=t,t=0,ur=P.length-10,R=P}}useBuffer(r){R=r,je=new DataView(R.buffer,R.byteOffset,R.byteLength),E=0}};nc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ti];qs=[{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?_u(n,16,r):Tu($s?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Pu&&this.structuredClone?_u(n,rc.indexOf(e.name),r):Tu(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function _u(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 Yg(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 Xg(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function Xr(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");nc.unshift(n.Class),qs.unshift(n)}Su(n)}var Ou=new bo({useRecords:!1}),Kg=Ou.pack,Zg=Ou.pack;var{NEVER:Qg,ALWAYS:Jg,DECIMAL_ROUND:ex,DECIMAL_FIT:tx}=Hs,Au=512,rx=1024;var Iu=new bo({structuredClone:!0});Xr({Class:Ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ce.prototype),n}});Xr({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Xr({Class:ze.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});Xr({Class:wi.prototype.constructor,type:4,write(n){return n.id},read(n){return new wi(n)}});Xr({Class:_i.prototype.constructor,type:5,write(n){return n.data},read(n){return new _i(n)}});Xr({Class:Le.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});function ox(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 ic(n){if(Yo(n))return n;if(Array.isArray(n))return n.map(ic);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=ic(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Ys;(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 ox(n(ic(o))).toString()}t.checksum=e})(Ys||(Ys={}));var Cu;(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})(Cu||(Cu={}));var Kr;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(Kr||(Kr={}));var Nu;(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})(Nu||(Nu={}));var Zr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=t})(Zr||(Zr={}));var bt;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(bt||(bt={}));var qt;(l=>{l.white={...bt.white,a:1},l.transparent={...bt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...bt.fromHex(c),a:u}}l.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}l.toRgb255a1=o;function i(c,u){return bt.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(qt||(qt={}));var Xs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Xs||(Xs={}));var Eu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Eu||(Eu={}));var Mu;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Mu||(Mu={}));var $t;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})($t||($t={}));var So;(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})(So||(So={}));var fr;(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(nx.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;ix.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;sx.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;ax.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;lx.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;cx.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(fr||(fr={}));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 nx=["count"],ix=["radius","start","end","position","scale","rotation"],sx=["position","scale","rotation"],ax=["count","size"],lx=["count","position","scale","rotation"],cx=["strength","scale","rotation","position","movement","seed","freqScale"];var Zs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Zs||(Zs={}));var Qs;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:qt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Qs||(Qs={}));var sc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(sc||(sc={}));var ac;(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})(ac||(ac={}));var Js;(r=>r.defaultData={...ac.defaultData,...sc.defaultData})(Js||(Js={}));var tn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(tn||(tn={}));var Lu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Bu=["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:tn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:bt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...bt.fromHex(6710886),a:1},colorB:{...bt.fromHex(6710886),a:1},colorC:{...bt.fromHex(16777215),a:1},colorD:{...bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:qt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:qt.fromHexAndA(0,1),contourColor:qt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(pt||(pt={}));var St;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:pt.defaultData("light",u),id:a}),p.push({fi:1,data:pt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=pt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:pt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=pt.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:pt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(St||(St={}));var rn;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(rn||(rn={}));var on;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(on||(on={}));var lc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var ea;(r=>{function n(e,t){let o={...e};return dx.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(ea||(ea={}));var ta={shape:lc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},dx=["depth","offset","angle","twist","startScale","endScale"];var Oi;(r=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=n})(Oi||(Oi={}));var ra;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,ea.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ra||(ra={}));var Qr;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:on.defaultData(),extrusion:ta};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:rn.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}r.defaultData=n})(Qr||(Qr={}));var Du;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Du||(Du={}));var nn;(o=>{o.identity={...Xs.identity,hiddenMatrix:Zr.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return{position:Kr.isEqual(i.position,s.position)?null:s.position,rotation:Kr.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Kr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Zr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(nn||(nn={}));var cc;(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]})(cc||(cc={}));var Nt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:null,pathSnapping:{pathId:null,slide:0,orientation:"tangential"},...nn.identity,cloner:null})(Nt||(Nt={}));var Gu;(r=>r.defaultData={type:"Empty",...Nt.defaultData})(Gu||(Gu={}));var Ru;(r=>r.defaultData={type:"Component",...Nt.defaultData})(Ru||(Ru={}));var wo;(r=>r.defaultData={type:"Mesh",...Nt.defaultData,...Js.defaultData})(wo||(wo={}));var sn;(r=>r.defaultData={...Nt.defaultData,...nn.identity,...So.defaultData})(sn||(sn={}));var Vu;(r=>{function n(e){return{...Nt.defaultData,...Qs.defaultData(e)}}r.defaultData=n})(Vu||(Vu={}));var an;(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})(an||(an={}));var Jr;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Nt.defaultData,...l,component:s,overrides:new Le,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=nn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(Jr||(Jr={}));var ju;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Zr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:cc.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0},...So.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,...wo.defaultData,geometry:Qr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Nt.defaultData,...wo.defaultData,geometry:Qr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Nt.defaultData,...wo.defaultData,geometry:Qr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(ju||(ju={}));var _o;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Le}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Le})))):$t.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=Jo(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=Jo(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==="pathSnapping")c.push({path:[d],props:{slide:p.slide},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,nn.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping.slide})}),$t.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:ra.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:fr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:fr.merge(l.cloner,s.cloner)});else if(Zs.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})(_o||(_o={}));var ln;(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})(ln||(ln={}));var oa;(r=>r.defaultData={orbitControls:ln.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})(oa||(oa={}));function eo(n,r){return Object.setPrototypeOf(n,r),n}function na(n){return Array.isArray(n)?n:[n]}function Fu(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 ia;(e=>{function n(){let t={};return t["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},eo(t,Ce.prototype)}e.defaultColors=n;function r(){return{materials:new Ce,images:new Ce,videos:new Ce,colors:new Ce,audios:new Ce,fonts:new Ce,penumbraSize:[.5,.5,.5]}}e.emptyData=r})(ia||(ia={}));var ux=typeof global=="object"&&global&&global.Object===Object&&global,sa=ux;var px=typeof self=="object"&&self&&self.Object===Object&&self,fx=sa||px||Function("return this")(),Ue=fx;var mx=Ue.Symbol,Ke=mx;var zu=Object.prototype,hx=zu.hasOwnProperty,yx=zu.toString,Ii=Ke?Ke.toStringTag:void 0;function gx(n){var r=hx.call(n,Ii),e=n[Ii];try{n[Ii]=void 0;var t=!0}catch{}var o=yx.call(n);return t&&(r?n[Ii]=e:delete n[Ii]),o}var Uu=gx;var xx=Object.prototype,vx=xx.toString;function bx(n){return vx.call(n)}var ku=bx;var Sx="[object Null]",wx="[object Undefined]",Hu=Ke?Ke.toStringTag:void 0;function _x(n){return n==null?n===void 0?wx:Sx:Hu&&Hu in Object(n)?Uu(n):ku(n)}var Et=_x;function Tx(n){return n!=null&&typeof n=="object"}var rt=Tx;var Px="[object Symbol]";function Ox(n){return typeof n=="symbol"||rt(n)&&Et(n)==Px}var cn=Ox;function Ax(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 aa=Ax;var Ix=Array.isArray,Ve=Ix;var Cx=1/0,Wu=Ke?Ke.prototype:void 0,qu=Wu?Wu.toString:void 0;function $u(n){if(typeof n=="string")return n;if(Ve(n))return aa(n,$u)+"";if(cn(n))return qu?qu.call(n):"";var r=n+"";return r=="0"&&1/n==-Cx?"-0":r}var Yu=$u;function Nx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=Nx;function Ex(n){return n}var Xu=Ex;var Mx="[object AsyncFunction]",Lx="[object Function]",Bx="[object GeneratorFunction]",Dx="[object Proxy]";function Gx(n){if(!Mt(n))return!1;var r=Et(n);return r==Lx||r==Bx||r==Mx||r==Dx}var la=Gx;var Rx=Ue["__core-js_shared__"],ca=Rx;var Ku=function(){var n=/[^.]+$/.exec(ca&&ca.keys&&ca.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Vx(n){return!!Ku&&Ku in n}var Zu=Vx;var jx=Function.prototype,Fx=jx.toString;function zx(n){if(n!=null){try{return Fx.call(n)}catch{}try{return n+""}catch{}}return""}var Br=zx;var Ux=/[\\^$.*+?()[\]{}|]/g,kx=/^\[object .+?Constructor\]$/,Hx=Function.prototype,Wx=Object.prototype,qx=Hx.toString,$x=Wx.hasOwnProperty,Yx=RegExp("^"+qx.call($x).replace(Ux,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Xx(n){if(!Mt(n)||Zu(n))return!1;var r=la(n)?Yx:kx;return r.test(Br(n))}var Qu=Xx;function Kx(n,r){return n?.[r]}var Ju=Kx;function Zx(n,r){var e=Ju(n,r);return Qu(e)?e:void 0}var wt=Zx;var Qx=wt(Ue,"WeakMap"),da=Qx;var ep=Object.create,Jx=function(){function n(){}return function(r){if(!Mt(r))return{};if(ep)return ep(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),tp=Jx;function e0(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 rp=e0;function t0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var op=t0;var r0=800,o0=16,n0=Date.now;function i0(n){var r=0,e=0;return function(){var t=n0(),o=o0-(t-e);if(e=t,o>0){if(++r>=r0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var np=i0;function s0(n){return function(){return n}}var ip=s0;var a0=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),dn=a0;var l0=dn?function(n,r){return dn(n,"toString",{configurable:!0,enumerable:!1,value:ip(r),writable:!0})}:Xu,sp=l0;var c0=np(sp),ap=c0;function d0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var lp=d0;var u0=9007199254740991,p0=/^(?:0|[1-9]\d*)$/;function f0(n,r){var e=typeof n;return r=r??u0,!!r&&(e=="number"||e!="symbol"&&p0.test(n))&&n>-1&&n%1==0&&n<r}var un=f0;function m0(n,r,e){r=="__proto__"&&dn?dn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ua=m0;function h0(n,r){return n===r||n!==n&&r!==r}var pn=h0;var y0=Object.prototype,g0=y0.hasOwnProperty;function x0(n,r,e){var t=n[r];(!(g0.call(n,r)&&pn(t,e))||e===void 0&&!(r in n))&&ua(n,r,e)}var fn=x0;function v0(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?ua(e,l,c):fn(e,l,c)}return e}var mr=v0;var cp=Math.max;function b0(n,r,e){return r=cp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=cp(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),rp(n,this,l)}}var dp=b0;var S0=9007199254740991;function w0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=S0}var mn=w0;function _0(n){return n!=null&&mn(n.length)&&!la(n)}var pa=_0;var T0=Object.prototype;function P0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||T0;return n===e}var hn=P0;function O0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var up=O0;var A0="[object Arguments]";function I0(n){return rt(n)&&Et(n)==A0}var dc=I0;var pp=Object.prototype,C0=pp.hasOwnProperty,N0=pp.propertyIsEnumerable,E0=dc(function(){return arguments}())?dc:function(n){return rt(n)&&C0.call(n,"callee")&&!N0.call(n,"callee")},yn=E0;function M0(){return!1}var fp=M0;var yp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,mp=yp&&typeof module=="object"&&module&&!module.nodeType&&module,L0=mp&&mp.exports===yp,hp=L0?Ue.Buffer:void 0,B0=hp?hp.isBuffer:void 0,D0=B0||fp,To=D0;var G0="[object Arguments]",R0="[object Array]",V0="[object Boolean]",j0="[object Date]",F0="[object Error]",z0="[object Function]",U0="[object Map]",k0="[object Number]",H0="[object Object]",W0="[object RegExp]",q0="[object Set]",$0="[object String]",Y0="[object WeakMap]",X0="[object ArrayBuffer]",K0="[object DataView]",Z0="[object Float32Array]",Q0="[object Float64Array]",J0="[object Int8Array]",ev="[object Int16Array]",tv="[object Int32Array]",rv="[object Uint8Array]",ov="[object Uint8ClampedArray]",nv="[object Uint16Array]",iv="[object Uint32Array]",Ee={};Ee[Z0]=Ee[Q0]=Ee[J0]=Ee[ev]=Ee[tv]=Ee[rv]=Ee[ov]=Ee[nv]=Ee[iv]=!0;Ee[G0]=Ee[R0]=Ee[X0]=Ee[V0]=Ee[K0]=Ee[j0]=Ee[F0]=Ee[z0]=Ee[U0]=Ee[k0]=Ee[H0]=Ee[W0]=Ee[q0]=Ee[$0]=Ee[Y0]=!1;function sv(n){return rt(n)&&mn(n.length)&&!!Ee[Et(n)]}var gp=sv;function av(n){return function(r){return n(r)}}var gn=av;var xp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ci=xp&&typeof module=="object"&&module&&!module.nodeType&&module,lv=Ci&&Ci.exports===xp,uc=lv&&sa.process,cv=function(){try{var n=Ci&&Ci.require&&Ci.require("util").types;return n||uc&&uc.binding&&uc.binding("util")}catch{}}(),Dr=cv;var vp=Dr&&Dr.isTypedArray,dv=vp?gn(vp):gp,fa=dv;var uv=Object.prototype,pv=uv.hasOwnProperty;function fv(n,r){var e=Ve(n),t=!e&&yn(n),o=!e&&!t&&To(n),i=!e&&!t&&!o&&fa(n),s=e||t||o||i,l=s?up(n.length,String):[],c=l.length;for(var u in n)(r||pv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||un(u,c)))&&l.push(u);return l}var ma=fv;function mv(n,r){return function(e){return n(r(e))}}var ha=mv;var hv=ha(Object.keys,Object),bp=hv;var yv=Object.prototype,gv=yv.hasOwnProperty;function xv(n){if(!hn(n))return bp(n);var r=[];for(var e in Object(n))gv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Sp=xv;function vv(n){return pa(n)?ma(n):Sp(n)}var xn=vv;function bv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var wp=bv;var Sv=Object.prototype,wv=Sv.hasOwnProperty;function _v(n){if(!Mt(n))return wp(n);var r=hn(n),e=[];for(var t in n)t=="constructor"&&(r||!wv.call(n,t))||e.push(t);return e}var _p=_v;function Tv(n){return pa(n)?ma(n,!0):_p(n)}var vn=Tv;var Pv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ov=/^\w*$/;function Av(n,r){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||cn(n)?!0:Ov.test(n)||!Pv.test(n)||r!=null&&n in Object(r)}var Tp=Av;var Iv=wt(Object,"create"),Gr=Iv;function Cv(){this.__data__=Gr?Gr(null):{},this.size=0}var Pp=Cv;function Nv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Op=Nv;var Ev="__lodash_hash_undefined__",Mv=Object.prototype,Lv=Mv.hasOwnProperty;function Bv(n){var r=this.__data__;if(Gr){var e=r[n];return e===Ev?void 0:e}return Lv.call(r,n)?r[n]:void 0}var Ap=Bv;var Dv=Object.prototype,Gv=Dv.hasOwnProperty;function Rv(n){var r=this.__data__;return Gr?r[n]!==void 0:Gv.call(r,n)}var Ip=Rv;var Vv="__lodash_hash_undefined__";function jv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Gr&&r===void 0?Vv:r,this}var Cp=jv;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=Op;bn.prototype.get=Ap;bn.prototype.has=Ip;bn.prototype.set=Cp;var pc=bn;function Fv(){this.__data__=[],this.size=0}var Np=Fv;function zv(n,r){for(var e=n.length;e--;)if(pn(n[e][0],r))return e;return-1}var to=zv;var Uv=Array.prototype,kv=Uv.splice;function Hv(n){var r=this.__data__,e=to(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():kv.call(r,e,1),--this.size,!0}var Ep=Hv;function Wv(n){var r=this.__data__,e=to(r,n);return e<0?void 0:r[e][1]}var Mp=Wv;function qv(n){return to(this.__data__,n)>-1}var Lp=qv;function $v(n,r){var e=this.__data__,t=to(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Bp=$v;function Sn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Sn.prototype.clear=Np;Sn.prototype.delete=Ep;Sn.prototype.get=Mp;Sn.prototype.has=Lp;Sn.prototype.set=Bp;var ro=Sn;var Yv=wt(Ue,"Map"),oo=Yv;function Xv(){this.size=0,this.__data__={hash:new pc,map:new(oo||ro),string:new pc}}var Dp=Xv;function Kv(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Gp=Kv;function Zv(n,r){var e=n.__data__;return Gp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var no=Zv;function Qv(n){var r=no(this,n).delete(n);return this.size-=r?1:0,r}var Rp=Qv;function Jv(n){return no(this,n).get(n)}var Vp=Jv;function eb(n){return no(this,n).has(n)}var jp=eb;function tb(n,r){var e=no(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Fp=tb;function wn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}wn.prototype.clear=Dp;wn.prototype.delete=Rp;wn.prototype.get=Vp;wn.prototype.has=jp;wn.prototype.set=Fp;var Po=wn;var rb="Expected a function";function fc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(rb);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(fc.Cache||Po),e}fc.Cache=Po;var zp=fc;var ob=500;function nb(n){var r=zp(n,function(t){return e.size===ob&&e.clear(),t}),e=r.cache;return r}var Up=nb;var ib=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,sb=/\\(\\)?/g,ab=Up(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(ib,function(e,t,o,i){r.push(o?i.replace(sb,"$1"):t||e)}),r}),kp=ab;function lb(n){return n==null?"":Yu(n)}var Hp=lb;function cb(n,r){return Ve(n)?n:Tp(n,r)?[n]:kp(Hp(n))}var Gt=cb;var db=1/0;function ub(n){if(typeof n=="string"||cn(n))return n;var r=n+"";return r=="0"&&1/n==-db?"-0":r}var io=ub;function pb(n,r){r=Gt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[io(r[e++])];return e&&e==t?n:void 0}var ya=pb;function fb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var _n=fb;var Wp=Ke?Ke.isConcatSpreadable:void 0;function mb(n){return Ve(n)||yn(n)||!!(Wp&&n&&n[Wp])}var qp=mb;function $p(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=qp),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?$p(l,r-1,e,t,o):_n(o,l):t||(o[o.length]=l)}return o}var Yp=$p;function hb(n){var r=n==null?0:n.length;return r?Yp(n,1):[]}var Xp=hb;function yb(n){return ap(dp(n,void 0,Xp),n+"")}var ga=yb;var gb=ha(Object.getPrototypeOf,Object),Tn=gb;var xb="[object Object]",vb=Function.prototype,bb=Object.prototype,Kp=vb.toString,Sb=bb.hasOwnProperty,wb=Kp.call(Object);function _b(n){if(!rt(n)||Et(n)!=xb)return!1;var r=Tn(n);if(r===null)return!0;var e=Sb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Kp.call(e)==wb}var Zp=_b;function Tb(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 Qp=Tb;function Pb(){this.__data__=new ro,this.size=0}var Jp=Pb;function Ob(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var ef=Ob;function Ab(n){return this.__data__.get(n)}var tf=Ab;function Ib(n){return this.__data__.has(n)}var rf=Ib;var Cb=200;function Nb(n,r){var e=this.__data__;if(e instanceof ro){var t=e.__data__;if(!oo||t.length<Cb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Po(t)}return e.set(n,r),this.size=e.size,this}var of=Nb;function Pn(n){var r=this.__data__=new ro(n);this.size=r.size}Pn.prototype.clear=Jp;Pn.prototype.delete=ef;Pn.prototype.get=tf;Pn.prototype.has=rf;Pn.prototype.set=of;var On=Pn;function Eb(n,r){return n&&mr(r,xn(r),n)}var nf=Eb;function Mb(n,r){return n&&mr(r,vn(r),n)}var sf=Mb;var df=typeof exports=="object"&&exports&&!exports.nodeType&&exports,af=df&&typeof module=="object"&&module&&!module.nodeType&&module,Lb=af&&af.exports===df,lf=Lb?Ue.Buffer:void 0,cf=lf?lf.allocUnsafe:void 0;function Bb(n,r){if(r)return n.slice();var e=n.length,t=cf?cf(e):new n.constructor(e);return n.copy(t),t}var uf=Bb;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 pf=Db;function Gb(){return[]}var xa=Gb;var Rb=Object.prototype,Vb=Rb.propertyIsEnumerable,ff=Object.getOwnPropertySymbols,jb=ff?function(n){return n==null?[]:(n=Object(n),pf(ff(n),function(r){return Vb.call(n,r)}))}:xa,An=jb;function Fb(n,r){return mr(n,An(n),r)}var mf=Fb;var zb=Object.getOwnPropertySymbols,Ub=zb?function(n){for(var r=[];n;)_n(r,An(n)),n=Tn(n);return r}:xa,va=Ub;function kb(n,r){return mr(n,va(n),r)}var hf=kb;function Hb(n,r,e){var t=r(n);return Ve(n)?t:_n(t,e(n))}var ba=Hb;function Wb(n){return ba(n,xn,An)}var Ni=Wb;function qb(n){return ba(n,vn,va)}var Sa=qb;var $b=wt(Ue,"DataView"),wa=$b;var Yb=wt(Ue,"Promise"),_a=Yb;var Xb=wt(Ue,"Set"),Ta=Xb;var yf="[object Map]",Kb="[object Object]",gf="[object Promise]",xf="[object Set]",vf="[object WeakMap]",bf="[object DataView]",Zb=Br(wa),Qb=Br(oo),Jb=Br(_a),eS=Br(Ta),tS=Br(da),Oo=Et;(wa&&Oo(new wa(new ArrayBuffer(1)))!=bf||oo&&Oo(new oo)!=yf||_a&&Oo(_a.resolve())!=gf||Ta&&Oo(new Ta)!=xf||da&&Oo(new da)!=vf)&&(Oo=function(n){var r=Et(n),e=r==Kb?n.constructor:void 0,t=e?Br(e):"";if(t)switch(t){case Zb:return bf;case Qb:return yf;case Jb:return gf;case eS:return xf;case tS:return vf}return r});var Rr=Oo;var rS=Object.prototype,oS=rS.hasOwnProperty;function nS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&oS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Sf=nS;var iS=Ue.Uint8Array,In=iS;function sS(n){var r=new n.constructor(n.byteLength);return new In(r).set(new In(n)),r}var Cn=sS;function aS(n,r){var e=r?Cn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var wf=aS;var lS=/\w*$/;function cS(n){var r=new n.constructor(n.source,lS.exec(n));return r.lastIndex=n.lastIndex,r}var _f=cS;var Tf=Ke?Ke.prototype:void 0,Pf=Tf?Tf.valueOf:void 0;function dS(n){return Pf?Object(Pf.call(n)):{}}var Of=dS;function uS(n,r){var e=r?Cn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Af=uS;var pS="[object Boolean]",fS="[object Date]",mS="[object Map]",hS="[object Number]",yS="[object RegExp]",gS="[object Set]",xS="[object String]",vS="[object Symbol]",bS="[object ArrayBuffer]",SS="[object DataView]",wS="[object Float32Array]",_S="[object Float64Array]",TS="[object Int8Array]",PS="[object Int16Array]",OS="[object Int32Array]",AS="[object Uint8Array]",IS="[object Uint8ClampedArray]",CS="[object Uint16Array]",NS="[object Uint32Array]";function ES(n,r,e){var t=n.constructor;switch(r){case bS:return Cn(n);case pS:case fS:return new t(+n);case SS:return wf(n,e);case wS:case _S:case TS:case PS:case OS:case AS:case IS:case CS:case NS:return Af(n,e);case mS:return new t;case hS:case xS:return new t(n);case yS:return _f(n);case gS:return new t;case vS:return Of(n)}}var If=ES;function MS(n){return typeof n.constructor=="function"&&!hn(n)?tp(Tn(n)):{}}var Cf=MS;var LS="[object Map]";function BS(n){return rt(n)&&Rr(n)==LS}var Nf=BS;var Ef=Dr&&Dr.isMap,DS=Ef?gn(Ef):Nf,Mf=DS;var GS="[object Set]";function RS(n){return rt(n)&&Rr(n)==GS}var Lf=RS;var Bf=Dr&&Dr.isSet,VS=Bf?gn(Bf):Lf,Df=VS;var jS=1,FS=2,zS=4,Gf="[object Arguments]",US="[object Array]",kS="[object Boolean]",HS="[object Date]",WS="[object Error]",Rf="[object Function]",qS="[object GeneratorFunction]",$S="[object Map]",YS="[object Number]",Vf="[object Object]",XS="[object RegExp]",KS="[object Set]",ZS="[object String]",QS="[object Symbol]",JS="[object WeakMap]",e1="[object ArrayBuffer]",t1="[object DataView]",r1="[object Float32Array]",o1="[object Float64Array]",n1="[object Int8Array]",i1="[object Int16Array]",s1="[object Int32Array]",a1="[object Uint8Array]",l1="[object Uint8ClampedArray]",c1="[object Uint16Array]",d1="[object Uint32Array]",Ne={};Ne[Gf]=Ne[US]=Ne[e1]=Ne[t1]=Ne[kS]=Ne[HS]=Ne[r1]=Ne[o1]=Ne[n1]=Ne[i1]=Ne[s1]=Ne[$S]=Ne[YS]=Ne[Vf]=Ne[XS]=Ne[KS]=Ne[ZS]=Ne[QS]=Ne[a1]=Ne[l1]=Ne[c1]=Ne[d1]=!0;Ne[WS]=Ne[Rf]=Ne[JS]=!1;function Pa(n,r,e,t,o,i){var s,l=r&jS,c=r&FS,u=r&zS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Mt(n))return n;var a=Ve(n);if(a){if(s=Sf(n),!l)return op(n,s)}else{var d=Rr(n),p=d==Rf||d==qS;if(To(n))return uf(n,l);if(d==Vf||d==Gf||p&&!o){if(s=c||p?{}:Cf(n),!l)return c?hf(n,sf(s,n)):mf(n,nf(s,n))}else{if(!Ne[d])return o?n:{};s=If(n,d,l)}}i||(i=new On);var f=i.get(n);if(f)return f;i.set(n,s),Df(n)?n.forEach(function(y){s.add(Pa(y,r,e,y,n,i))}):Mf(n)&&n.forEach(function(y,g){s.set(g,Pa(y,r,e,g,n,i))});var m=u?c?Sa:Ni:c?vn:xn,h=a?void 0:m(n);return lp(h||n,function(y,g){h&&(g=y,y=n[g]),fn(s,g,Pa(y,r,e,g,n,i))}),s}var Oa=Pa;var u1=1,p1=4;function f1(n){return Oa(n,u1|p1)}var Vr=f1;var m1="__lodash_hash_undefined__";function h1(n){return this.__data__.set(n,m1),this}var jf=h1;function y1(n){return this.__data__.has(n)}var Ff=y1;function Aa(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Po;++r<e;)this.add(n[r])}Aa.prototype.add=Aa.prototype.push=jf;Aa.prototype.has=Ff;var zf=Aa;function g1(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 Uf=g1;function x1(n,r){return n.has(r)}var kf=x1;var v1=1,b1=2;function S1(n,r,e,t,o,i){var s=e&v1,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&b1?new zf: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(!Uf(r,function(g,v){if(!kf(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 Ia=S1;function w1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Hf=w1;function _1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Wf=_1;var T1=1,P1=2,O1="[object Boolean]",A1="[object Date]",I1="[object Error]",C1="[object Map]",N1="[object Number]",E1="[object RegExp]",M1="[object Set]",L1="[object String]",B1="[object Symbol]",D1="[object ArrayBuffer]",G1="[object DataView]",qf=Ke?Ke.prototype:void 0,mc=qf?qf.valueOf:void 0;function R1(n,r,e,t,o,i,s){switch(e){case G1: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 In(n),new In(r)));case O1:case A1:case N1:return pn(+n,+r);case I1:return n.name==r.name&&n.message==r.message;case E1:case L1:return n==r+"";case C1:var l=Hf;case M1:var c=t&T1;if(l||(l=Wf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=P1,s.set(n,r);var a=Ia(l(n),l(r),t,o,i,s);return s.delete(n),a;case B1:if(mc)return mc.call(n)==mc.call(r)}return!1}var $f=R1;var V1=1,j1=Object.prototype,F1=j1.hasOwnProperty;function z1(n,r,e,t,o,i){var s=e&V1,l=Ni(n),c=l.length,u=Ni(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:F1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var w=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(w===void 0?g===v||o(g,v,e,t,i):w)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var S=n.constructor,b=r.constructor;S!=b&&"constructor"in n&&"constructor"in r&&!(typeof S=="function"&&S instanceof S&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var Yf=z1;var U1=1,Xf="[object Arguments]",Kf="[object Array]",Ca="[object Object]",k1=Object.prototype,Zf=k1.hasOwnProperty;function H1(n,r,e,t,o,i){var s=Ve(n),l=Ve(r),c=s?Kf:Rr(n),u=l?Kf:Rr(r);c=c==Xf?Ca:c,u=u==Xf?Ca:u;var a=c==Ca,d=u==Ca,p=c==u;if(p&&To(n)){if(!To(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new On),s||fa(n)?Ia(n,r,e,t,o,i):$f(n,r,c,e,t,o,i);if(!(e&U1)){var f=a&&Zf.call(n,"__wrapped__"),m=d&&Zf.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new On),o(h,y,e,t,i)}}return p?(i||(i=new On),Yf(n,r,e,t,o,i)):!1}var Qf=H1;function Jf(n,r,e,t,o){return n===r?!0:n==null||r==null||!rt(n)&&!rt(r)?n!==n&&r!==r:Qf(n,r,e,t,Jf,o)}var em=Jf;function W1(n,r){return n!=null&&r in Object(n)}var tm=W1;function q1(n,r,e){r=Gt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=io(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&mn(o)&&un(s,o)&&(Ve(n)||yn(n)))}var rm=q1;function $1(n,r){return n!=null&&rm(n,r,tm)}var om=$1;function Y1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var nm=Y1;function X1(n,r){return r.length<2?n:ya(n,Qp(r,0,-1))}var im=X1;function K1(n,r){return em(n,r)}var Ei=K1;function Z1(n,r){return r=Gt(r,n),n=im(n,r),n==null||delete n[io(nm(r))]}var sm=Z1;function Q1(n){return Zp(n)?void 0:n}var am=Q1;var J1=1,ew=2,tw=4,rw=ga(function(n,r){var e={};if(n==null)return e;var t=!1;r=aa(r,function(i){return i=Gt(i,n),t||(t=i.length>1),i}),mr(n,Sa(n),e),t&&(e=Oa(e,J1|ew|tw,am));for(var o=r.length;o--;)sm(e,r[o]);return e}),Nn=rw;function ow(n,r,e,t){if(!Mt(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=io(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Mt(a)?a:un(r[o+1])?[]:{})}fn(l,c,u),l=l[c]}return n}var lm=ow;function nw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=ya(n,s);e(l,s)&&lm(i,Gt(s,n),l)}return i}var cm=nw;function iw(n,r){return cm(n,r,function(e,t){return om(n,t)})}var dm=iw;var sw=ga(function(n,r){return n==null?{}:dm(n,r)}),En=sw;import{MathUtils as Na}from"three";function um(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...En(Ye(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ye(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ea(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ma(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 aw(n){Object.assign(n.scene.publish,{orbitControls:{...ln.defaultData,...Ye(n.scene.publish.orbitControls)}})}function lw(n){Object.assign(n.scene.publish.settings,{video:{...oa.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function cw(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((Lu.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Bu.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 dw(n){n.scene.publish.withBackground=!0}function uw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function pw(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 fw(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 mw(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 hw(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 yw(n){function r(t){Object.setPrototypeOf(t,Le.prototype),t.texture&&Object.setPrototypeOf(t.texture,Le.prototype)}function e(t){Object.setPrototypeOf(t,Le.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 pm(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function hc(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 gw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function fm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&hc(t)}):"material"in e&&typeof e.material!="string"&&hc(e.material)}),Object.values(n.shared.materials).forEach(r=>hc(r))}function xw(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 vw(n){n.shared.audios=eo({},Ce.prototype)}function bw(n){n.shared.videos=eo({},Ce.prototype)}function Sw(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 ww(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 _w(n){n.scene.publish.settings.web.preload=!1}function mm(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 Tw(n){n.shared.fonts=eo({},Ce.prototype)}function Pw(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 Ow(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=Pw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Nt.defaultData,...wo.defaultData,flatShading:!1,wireframe:!1,geometry:{...Qr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ye(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function Aw(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Na.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,En(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Na.generateUUID(),data:u},{fi:1,id:Na.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Iw(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...En(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...En(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:Na.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function hm(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 ym(n){Ea(n,hm),Ma(n,hm)}function Cw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function Nw(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"))})}function Mw(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function Lw(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,orientation:"tangential"})})}var gm=32;function xm(n){let r=n.schema??0;r!==gm&&(console.warn("updating from ",r,"to ",gm),r<1&&(Ma(n,um),Ea(n,um),n.schema=1),r<2&&(aw(n),n.schema=2),r<3&&(cw(n),n.schema=3),r<4&&(dw(n),n.schema=4),r<5&&(uw(n),n.schema=5),r<6&&(pw(n),n.schema=6),r<7&&(fw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(fm(n),n.schema=9),r<10&&(gw(n),n.schema=10),r<11&&(xw(n),n.schema=11),r<12&&(fm(n),n.schema=12),r<13&&(vw(n),n.schema=13),r<14&&(Sw(n),n.schema=14),r<15&&(ww(n),n.schema=15),r<16&&(_w(n),n.schema=16),r<17&&(Ma(n,mm),Ea(n,mm),n.schema=17),r<18&&(Ma(n,pm),Ea(n,pm),n.schema=18),r<19&&(lw(n),n.schema=19),r<20&&(Tw(n),Ow(n),n.schema=20),r<21&&(Aw(n),Iw(n),n.schema=21),r<22&&(ym(n),n.schema=22),r<23&&(Cw(n),n.schema=23),r<24&&(Nw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(bw(n),r<25&&(n.schema=25)),r<26&&(mw(n),n.schema=26),r<27&&(hw(n),n.schema=27),r<28&&(ym(n),n.schema=28),r<29&&(yw(n),n.schema=29),r<30&&(Ew(n),n.schema=30),r<31&&(Mw(n),n.schema=31),r<32&&(Lw(n),n.schema=32))}var La;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(La||(La={}));var ui=Fl(bm());import{Object3D as ZP,Vector3 as Lt,Euler as Ud,MathUtils as Ey,Matrix4 as Ho}from"three";var Bw=.5*(Math.sqrt(3)-1),Li=(3-Math.sqrt(3))/6,Dw=1/3,hr=1/6,LG=(Math.sqrt(5)-1)/4,BG=(5-Math.sqrt(5))/20,Bi=n=>Math.floor(n)|0,Sm=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]),gc=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 Ba(n=Math.random){let r=_m(n),e=new Float64Array(r).map(o=>Sm[o%12*2]),t=new Float64Array(r).map(o=>Sm[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*Bw,d=Bi(i+a),p=Bi(s+a),f=(d+p)*Li,m=d-f,h=p-f,y=i-m,g=s-h,v,w;y>g?(v=1,w=0):(v=0,w=1);let S=y-v+Li,b=g-w+Li,T=y-1+2*Li,_=g-1+2*Li,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let O=x+r[C],V=e[O],z=t[O];P*=P,l=P*P*(V*y+z*g)}let I=.5-S*S-b*b;if(I>=0){let O=x+v+r[C+w],V=e[O],z=t[O];I*=I,c=I*I*(V*S+z*b)}let A=.5-T*T-_*_;if(A>=0){let O=x+1+r[C+1],V=e[O],z=t[O];A*=A,u=A*A*(V*T+z*_)}return 70*(l+c+u)}}function wm(n=Math.random){let r=_m(n),e=new Float64Array(r).map(i=>gc[i%12*3]),t=new Float64Array(r).map(i=>gc[i%12*3+1]),o=new Float64Array(r).map(i=>gc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*Dw,m=Bi(s+f),h=Bi(l+f),y=Bi(c+f),g=(m+h+y)*hr,v=m-g,w=h-g,S=y-g,b=s-v,T=l-w,_=c-S,x,C,P,I,A,O;b>=T?T>=_?(x=1,C=0,P=0,I=1,A=1,O=0):b>=_?(x=1,C=0,P=0,I=1,A=0,O=1):(x=0,C=0,P=1,I=1,A=0,O=1):T<_?(x=0,C=0,P=1,I=0,A=1,O=1):b<_?(x=0,C=1,P=0,I=0,A=1,O=1):(x=0,C=1,P=0,I=1,A=1,O=0);let V=b-x+hr,z=T-C+hr,$=_-P+hr,te=b-I+2*hr,K=T-A+2*hr,q=_-O+2*hr,k=b-1+3*hr,G=T-1+3*hr,D=_-1+3*hr,B=m&255,L=h&255,F=y&255,W=.6-b*b-T*T-_*_;if(W<0)u=0;else{let M=B+r[L+r[F]];W*=W,u=W*W*(e[M]*b+t[M]*T+o[M]*_)}let H=.6-V*V-z*z-$*$;if(H<0)a=0;else{let M=B+x+r[L+C+r[F+P]];H*=H,a=H*H*(e[M]*V+t[M]*z+o[M]*$)}let j=.6-te*te-K*K-q*q;if(j<0)d=0;else{let M=B+I+r[L+A+r[F+O]];j*=j,d=j*j*(e[M]*te+t[M]*K+o[M]*q)}let U=.6-k*k-G*G-D*D;if(U<0)p=0;else{let M=B+1+r[L+1+r[F+1]];U*=U,p=U*U*(e[M]*k+t[M]*G+o[M]*D)}return 32*(u+a+d+p)}}function _m(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 Gw}from"three";var Yt=new Gw,Da=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Yt.a.fromBufferAttribute(r,o),Yt.b.fromBufferAttribute(r,o+1),Yt.c.fromBufferAttribute(r,o+2),i*=Yt.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Yt.a.fromBufferAttribute(this.positionAttribute,r*3),Yt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Yt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Yt.a,o).addScaledVector(Yt.b,i).addScaledVector(Yt.c,1-(o+i)),Yt.getNormal(t),this}};import{Object3D as zw}from"three";var Om=Fl(Pm());import{Object3D as Rw,Matrix4 as jr}from"three";var Vw=new jr,jw=new jr,Fw=new jr,Di;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Di||(Di={}));var Mn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new jr;this.matrixWorldRigid=new jr;this.shearScale=new jr;this.shearScaleInv=new jr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof Rw&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Di.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:l}=(0,Om.SVD)(o),c=Vw.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=jw.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=Fw.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new jr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof jr?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}};var xc=class extends Mn(zw){},Uw=n=>n.type==="Mesh",Fr=class extends xc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Fr(t),this.add(o),o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return Uw(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 PT,BufferGeometry as OT,MeshBasicMaterial as AT}from"three";import{Matrix4 as _T,Mesh as TT}from"three";import{Matrix4 as Va,Vector3 as Yw,Euler as Xw}from"three";import{Box3 as kw,Line3 as Hw,Matrix4 as vc,Vector3 as Rt}from"three";var Ao=new Rt,Io=new Rt,Ln=new vc,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)],Ww=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],qw=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Am=(n,r,e)=>{n.updateEntityBoxSize(Ao,Io),Ln.copy(r).multiply(n.matrixWorld),Io.x===0&&Io.y===0&&Io.z===0?e.push(new Rt(Ao.x,Ao.y,Ao.z).applyMatrix4(Ln)):Im.forEach(t=>{e.push(t.clone().multiply(Io).add(Ao).applyMatrix4(Ln))})},Gi=class extends kw{constructor(){super(...arguments);this.matrix=new vc;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 vc().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&&Am(s,t,i)}):Am(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(Ln.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Io).multiplyScalar(.5),this.getCenter(Ao),Ln.copy(this.matrix).setPosition(Ao),this.vertices=Im.map(e=>e.clone().multiply(Io).applyMatrix4(Ln))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Ww.map(([e,t])=>new Hw(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=qw.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Xt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as $w,CubicBezierCurve3 as bc,Vector3 as Kt}from"three";var wc=class extends $w{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var _c=.001;function Tc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=_c}function Sc(n,r){let e=new Kt(...n.position),t=new Kt(...n.controlNext.position),o=new Kt(...r.controlPrevious.position),i=new Kt(...r.position);return Tc(e,t,i)&&Tc(e,o,i)}function Ra(n){let r=n.points.map(a=>new Kt(...a.data.position)),e=[n.points[0]],t=new Kt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Tc(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new Kt(...d.position),f=new Kt(...d.controlPrevious.position),m=new Kt(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,w=e[g].data,S=new Kt(...v.position),b=new Kt(...w.position),T=S.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=Sc(v,d),C=Sc(d,w);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!Sc(e[d].data,e[p].data))f.position.distanceTo(m.position)>_c&&(h=new bc(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>_c&&(h=new bc(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),v=f.distanceTo(m)/2,w=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),S=y.clone().multiplyScalar(-h).add(w),b=p.distanceTo(S)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=T.clone().lerp(S,2),x=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*a]=new bc(f,x,C,m)}let u=new wc;return c.forEach(a=>{a&&u.add(a)}),u}var Be;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Be||(Be={}));var Zt=n=>Be.is(n),ja=n=>class extends Mn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Gi;this._recursiveBBox=new Gi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Be.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(Be.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)_o.toOps(this.data,s.data).forEach(c=>{let u=Bs.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=_o.patch(this.data,s),_o.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(o.scene)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Zt(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(Be.is(o[i]))return o[i];if(Be.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Be.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)Zt(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Be.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Zt(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Zt(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=>Zt(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Nn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Zr.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Be.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Be.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Nn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Wt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=dt.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=dt.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,_o.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Wt(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(Mr.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=an.resolve(o.overrides,a),p.updateByOp(t,tt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of Jr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of Jr.rootOverrideProps)if(Wt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,a);p&&d.updateByOp(p,tt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=tt.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!$t.is(t.props.type)&&Xt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Xt.changeEntityProptotype(this,o,i);for(let s of this.children)Be.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Wt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(i.scene),Wt(t.path,["cloner"])!==null){let s=tt.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t,o=this.dataPatched.pathSnapping){if(o?.pathId){let i=t.find(o.pathId);this._pathSnappingObject=i,i?this.updatePathSnappingSlide(o):t.addPendingCommand(()=>{this.updatePathSnapping(t)})}}updatePathSnappingSlide(t=this.dataPatched.pathSnapping){let o=this._pathSnappingObject;if(!o)return;o.snappedEntities.add(this);let i=o.data,s=Ra(i.geometry.path),l=s.getPointAt(t.slide),c=this.parent?this.parent?.matrixWorld:new Va,u=new Va().multiplyMatrices(c.clone().invert(),o.matrixWorld);l.applyMatrix4(u);let a={position:l.toArray(),rotation:i.rotation};if(t.orientation==="tangential"){let d=s.getTangentAt(t.slide).add(l),p=new Va().lookAt(l,d,new Yw(0,1,0)),f=new Va().extractRotation(o.matrixWorld),m=new Xw().setFromRotationMatrix(f.clone().multiply(p));a={...a,rotation:[m.x,m.y,m.z]}}this.updateTransformState(a)}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t),o?.scene&&this.updatePathSnapping(o.scene,t.pathSnapping)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Xt.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):(this.cloner===void 0&&(this.cloner=new Xt.Cloner(this,t),o.scene.addPendingExpandCloner(this)),this.cloner.updateState(t,o.scene)))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};import{ConeGeometry as Qw}from"three";import{BufferGeometry as Kw,CylinderGeometry as Zw,Float32BufferAttribute as Pc,Vector2 as Qt,Vector3 as Fa}from"three";var Nm=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 Ri(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new Zw(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 so(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Cm(n){return new Qt(n.y,-n.x)}var Ri=class extends Kw{constructor(r,e,t,o,i,s,l,c,u,a,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],y=[],g=[],v=0,w=t/2,S=new Fa,b=new Fa;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new Qt(r,w),_=new Qt(e,-w),x=null,C=null,P=null,I=null,A=T.clone().sub(_),O=0,V=0,z=0;p>0&&(O=Math.min(r,e)*(1-p),V=r-O,z=e-O);let $=T.clone();$.x-=O;let te=Math.PI-A.angle(),K=A.angle(),q=Math.tan(K/2),k=Math.tan(te/2),G=q+k,D=p?G:k,B=p?G:q;if(u=Math.min(u,(r-V)/D,A.length()/G),a=Math.min(a,(e-z)/B,A.length()/G),u>0){let U=u/q;x=T.clone().sub(new Qt(U,u)),p&&(P=x.clone(),P.x-=O-G*u),T.sub(A.clone().setLength(U))}if(a>0){let U=a/k;C=_.clone().sub(new Qt(U,-a)),_.add(A.clone().setLength(U)),p&&(I=C.clone(),I.x-=O-G*a,$.sub(A.clone().setLength(U)))}A=T.clone().sub(_);let L=A.length()<.5,F=[];for(let U=0;U<=o;U++){let M=[],oe=U/o,Y=oe*c+l,re=new Qt(Math.sin(Y),Math.cos(Y));I&&C?(W(M,oe,re,te,a,I,-1,!0),W(M,oe,re,K,a,C,-1,!1)):C?(H(M,re,C.x,0,-1),W(M,oe,re,K,a,C,-1,!1)):s||H(M,re,e,z,-1);let X=Cm(A).normalize();if(so(X,re,S),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,ie=A.clone().multiplyScalar(Z).add(_);so(ie,re,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),g.push(oe,.5+b.y/t),M.push(v++)}if(P&&x?(W(M,oe,re,te,u,x,1,!1),W(M,oe,re,K,u,P,1,!0)):x?(W(M,oe,re,te,u,x,1,!1),H(M,re,x.x,0,1)):s||H(M,re,r,V,1),p&&!L){let ee=Cm(A).multiplyScalar(-1).normalize();so(ee,re,S);for(let Z=0;Z<=i;Z++){let ie=Z/i,ce=A.clone().multiplyScalar(-ie).add($);so(ce,re,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),g.push(oe,.5+b.y/t),M.push(v++)}}p&&!s&&M.push(M[0]),F.push(M)}for(let U=0;U<F.length-1;U++)for(let M=0;M<F[0].length-1;M++){if(s&&p&&M==i)continue;let oe=F[U][M],Y=F[U+1][M],re=F[U+1][M+1],X=F[U][M+1],ee=h[re*3+0],Z=h[re*3+2];m.push(oe,Y,X),(ee!=0||Z!=0)&&m.push(Y,re,X)}c<Math.PI*2&&(j(-1,F[0],l),j(1,F[F.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Pc(h,3)),this.setAttribute("normal",new Pc(y,3)),this.setAttribute("uv",new Pc(g,2));function W(U,M,oe,Y,re,X,ee,Z){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;Z&&(se-=1),se*=Y;let pe=new Qt(Math.sin(se),Math.cos(se)*ee),Me=pe.clone().multiplyScalar(re).add(X);so(Me,oe,b),h.push(b.x,b.y,b.z),so(pe,oe,S),y.push(S.x,S.y,S.z),g.push(M,.5+b.y/t),U.push(v++)}}function H(U,M,oe,Y,re){let X=new Fa,ee=new Qt,Z=[oe,Y];re<0&&Z.reverse();for(let ie of Z)ee.set(ie,w*re),so(ee,M,X),h.push(X.x,X.y,X.z),y.push(0,re,0),g.push(.5,.5),U.push(v++)}function j(U,M,oe){let Y=new Qt(Math.sin(oe),Math.cos(oe)),re=new Qt(-Math.cos(oe),Math.sin(oe)),X=new Fa,ee=U<0?(ce,se,pe)=>m.push(ce,se,pe):(ce,se,pe)=>m.push(ce,pe,se),Z=new Qt((r+e+V+z)/4,0);so(Z,Y,X),h.push(X.x,X.y,X.z),y.push(re.x,0,re.y),g.push(.5,.5);let ie=v++;for(let ce of M){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(re.x,0,re.y);let pe=g.slice(ce*2,ce*2+2);g.push(...pe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var Em=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 Ri(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new Qw(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as Jw,BufferGeometry as e_,Float32BufferAttribute as Oc,Vector3 as Vi}from"three";var Mm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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 Jw(r,e,t,o,i,s):u=new Ic(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Ac=Math.PI/2,Ic=class extends e_{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 Oc(d,3)),this.setAttribute("normal",new Oc(p,3)),this.setAttribute("uv",new Oc(f,2));function y(w,S,b,T,_,x,C,P,I,A,O){let V=(x-2*l)/I,z=(C-2*l)/A,$=x/2-l,te=C/2-l,K=P/2,q=I+1,k=A+1,G=0,D=0,B=new Vi;for(let L=0;L<k;L++){let F=L*z-te;for(let W=0;W<q;W++){let H=W*V-$;B[w]=H*T,B[S]=F*_,B[b]=K,d.push(B.x,B.y,B.z),B[w]=0,B[S]=0,B[b]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(W/I),f.push(1-L/A),G+=1}}for(let L=0;L<A;L++)for(let F=0;F<I;F++){let W=m+F+q*L,H=m+F+q*(L+1),j=m+(F+1)+q*(L+1),U=m+(F+1)+q*L;a.push(W,H,U),a.push(H,j,U),D+=6}u.addGroup(h,D,O),h+=D,m+=G}function g(w,S,b,T,_,x,C,P,I,A,O){let V=(C-2*l)/A,z=C/2-l,$=P/2-l,te=I/2,K=A+1,q=0,k=0,G=new Vi,D=new Vi;for(let B=0;B<c+1;B++){let L=B/c*Ac,F=Math.sin(L)*l,W=(1-Math.cos(L))*l,H=Math.sin(L),j=Math.cos(L);G[S]=($+F)*_,G[b]=(te-W)*x,D[w]=0,D[S]=H*Math.sign(G[S]),D[b]=j*Math.sign(G[b]);for(let U=0;U<K;U++){let M=U*V-z;G[w]=M*T,d.push(G.x,G.y,G.z),p.push(D.x,D.y,D.z),f.push(U/A),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<A;L++){let F=m+L+K*B,W=m+L+K*(B+1),H=m+(L+1)+K*(B+1),j=m+(L+1)+K*B;a.push(F,W,j),a.push(W,H,j),k+=6}u.addGroup(h,k,O),h+=k,m+=q}function v(w,S,b){let T=new Vi,_=new Vi(r/2,e/2,t/2);_.subScalar(l);let x=[],C=w*S*b>0?(I,A,O)=>a.push(I,A,O):(I,A,O)=>a.push(I,O,A);for(let I=0;I<=c;I++){let A=[],O=Ac*(1-I/c),V=Math.cos(O),z=Math.sin(O),$=0;for(let te=0;te<=I;te++){let K=Math.cos($),q=Math.sin($);T.x=V*K,T.y=z,T.z=V*q;let k=_.clone().addScaledVector(T,l);d.push(w*k.x,S*k.y,b*k.z),p.push(w*T.x,S*T.y,b*T.z),f.push(0,0),A.push(m++),$+=Ac/I}x.push(A)}let P=x.length-1;for(let I=0;I<P;I++){let A=x[I],O=x[I+1],V=A.length-1;C(A[0],O[1],O[0]);for(let z=1;z<=V;z++)C(A[z-1],A[z],O[z]),C(A[z],O[z+1],O[z])}}}};import{BufferGeometry as t_,Float32BufferAttribute as Cc,Triangle as r_,Vector3 as zr,Vector2 as Nc}from"three";var ao=class extends t_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Cc(l,3)),this.setAttribute("normal",new Cc(u,3)),this.setAttribute("uv",new Cc(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new zr,h=m.clone(),y=new r_,g=i*o,v=o-g,w=s+1,S=new zr,b=(q,k)=>S.subVectors(q,k).normalize(),T=(q,k)=>Array(q).fill(void 0).map(k),_=T(r.length/3,(q,k)=>new zr().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let q=0;q<_.length;q++){let k=_[q],G=[],D,B,L,F=1e10,W=-1;for(;(W=e.indexOf(q,W+1))!=-1;){let M=W-W%3;D=e[M+(W+1)%3],B=e[M+(W+2)%3],L=k.distanceToSquared(_[D]),F=Math.min(F,L),G.push([D,B,L])}F+=1e-6;let H=[],j=0,U=G.length;for(let M=0;M<U;M++){[D,B,L]=G[j];let oe=x[D]?.includes(q)==!0;L<=F&&H.push(D+ +oe*C),j=G.findIndex(Y=>Y[0]==B)}x.push(H)}let P=[];{let q=0,k=0,G,D,B=f==3;for(let L=0;L<=s;L++){G=L*(L+1)/2,D=(L+1)*(L+2)/2;for(let F=0;F<s-L;F++)[q,k]=[G+F+L+2,D+F+L+3],P.push(G,D,...B?[k,G]:[q,D],k,q),[G,D]=[q,k];P.push(G,D,G+s+2)}}let I=m.clone(),A=m.clone(),O=m.clone(),V=m.clone(),z=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),I.copy(m).multiplyScalar(v);let k=x[q];for(let H=0;H<k.length;H++){let j=k[H],U=k[(H+1)%f];y.setFromPointsAndIndices(_,q,j%C,U%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[q][H])}let G=[],D=[],B=[],L=new zr;s==0&&[...te[q]].reduce((H,j)=>H.add(j),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let j=[],U=(H-1+f)%f,M=te[q][U],oe=te[q][H];m.copy(M).sub(I),h.copy(oe).sub(I);let Y=I.angleTo(m),re=m.angleTo(h),X=Math.cos(Y)*g;s==0?A.copy(L):A.copy(I).setLength(v+X),D.push(X);let ee=[A,M,oe];for(let Z=0;Z<2;Z++){let ie=ee[Z],ce=ee[Z+1];V.subVectors(ie,I),z.subVectors(ce,I),O.crossVectors(V,z).normalize();for(let se=0;se<w;se++){let pe=[Y,re][Z]*se/w;m.copy(V).applyAxisAngle(O,pe).add(I),G.push(m.clone()),Z&&(b(m,I),j.push([se==0?ie:m.clone(),S.clone()]))}Z&&(b(ce,I),j.push([ce,S.clone()]))}B.push(j)}$.push(B);let F=2*w,W=2;for(let H=0;H<f;H++){let j=F*H,U=F*((H+1)%f),M=[G[j]];for(let Y=1;Y<w;Y++){V=G[j+Y],z=G[U+Y],M.push(V);for(let re=1,X=Y-W+1;re<=X;re++)m.lerpVectors(V,z,re/(X+1)),m.sub(I).setLength(D[H]).add(I),M.push(m.clone());M.push(z)}for(let Y=0;Y<w;Y++)M.push(G[Y+w+j]);M.push(G[U+w]);let oe=P.map(Y=>M[Y]);l.push(...oe.map(Y=>[Y.x,Y.y,Y.z]).flat()),u.push(...oe.map(Y=>(b(Y,I),[S.x,S.y,S.z])).flat())}}let K=[];for(let q=0;q<x.length;q++)for(let k=0;k<f;k++){let G=x[q][k];if(G<C){let D=x[G].findIndex(F=>F%C==q),B=$[q][k],L=$[G][D];for(let F=0;F<w;F++){let W=B[F],H=L[w-F],j=B[F+1],U=L[w-(F+1)];[W,H,j,j,H,U].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}K.push(B[0][0],L[w][0],B[w][0],L[0][0])}}for(;K.length;){let q,k,G,D;[q,k]=K.splice(0,2);let B=[q];for(;q!=k;)B.push(k),G=K.indexOf(k),D=G%2,k=K.splice(G-D,2)[1-D];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=S.dot(B[0])<0;L&&S.negate();for(let F=1;F<=B.length-2;F++)[B[F+ +L],B[F+1-+L],B[0]].forEach(W=>{l.push(W.x,W.y,W.z),u.push(S.x,S.y,S.z)})}}function d(){let p=new zr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=b(p)/2/Math.PI+.5,C=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new zr,m=new zr,h=new zr,y=new zr,g=new Nc,v=new Nc,w=new Nc,S=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),w.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=b(y);S(g,x+0,f,C),S(v,x+2,m,C),S(w,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],P=c[_+4],I=Math.max(x,C,P),A=Math.min(x,C,P);I>.9&&A<.1&&(x<.2&&(c[_+0]+=1),C<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function b(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new ao(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as o_}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,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 ji(r*.5,i,s):new o_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},ji=class extends ao{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 ji(r.radius,r.corner,r.cornerSides)}};import{Plane as m_,Shape as Ym,Vector2 as Ur,Vector3 as h_,MathUtils as Rc,LineCurve as Vc,QuadraticBezierCurve as Xm,CubicBezierCurve as Ha}from"three";import{CubicBezierCurve as za,EllipseCurve as n_,LineCurve as Ua,LineCurve3 as i_,MathUtils as s_,QuadraticBezierCurve as Mc,SplineCurve as a_,Vector2 as at,Vector3 as Gm}from"three";var Fi=1e-12,Bn=class{constructor(r){this.position=new at;this.startPosition=new at;this.uuid=s_.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Bn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Dn=class extends Bn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Dn(this.parent).copy(this)}},Jt=class extends Bn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Dn(this),new Dn(this))}static create(e,t){let o=new Jt(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 Jt(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&&(Bm(o,e),Bm(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 Bm(n,r=new at){let e=n.length();return r.set(-n.y/e,n.x/e)}var Lc=n=>n,Gn=new at,ka=new at,l_=new at,c_=new at,d_=new at,u_=new at,Rm=new Gm,Vm=new Gm;function jm(n){let r=new at;r.addVectors(n.v0,Gn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new at;return e.addVectors(n.v2,ka.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new za(n.v0,r,e,n.v2)}function zi(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function p_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function f_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Bc(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 Fm(n,r,e){return Dm(n,r)&&Dm(r,e)&&Ec(n.position,r.position,e.position)}function Ec(n,r,e){return Gn.copy(r).sub(n).cross(ka.copy(e).sub(n))===0}function zm(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 Um(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function km(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 Bc(r,n,e)>Math.PI&&(a*=-1),zi(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 Dc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Dm(n,r){return Ec(n.position,n.controls[1].position,r.position)&&Ec(n.position,r.controls[0].position,r.position)}function Hm(n,r,e,t,o=.5){let i=Gn.subVectors(r,n).multiplyScalar(o).add(n),s=ka.subVectors(e,r).multiplyScalar(o).add(r),l=l_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=c_.subVectors(s,i).multiplyScalar(o).add(i),a=d_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=u_.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=Vm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=Lc(r[c]),a=Gn,d=lo(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof za||u instanceof Mc||u instanceof Ua){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&f_(i,o))continue;i===void 0&&(i=Rm),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 qm(n,r,e,t=12,o=!0){let i=Vm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=Lc(r[c]),d=Gn,p=lo(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof za||a instanceof Mc||a instanceof Ua){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Rm:(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 Gc(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=lo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=lo(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=lo(n[0].roundedCurveCorner,r)*.5),t}function lo(n,r=12){return n&&n instanceof n_?r*2:n&&(n instanceof Ua||n instanceof i_)?1:n&&n instanceof a_?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=Lc(r[s]),c=lo(l,e),u=Gn;for(let a=0;a<=c;a++)if(l instanceof za||l instanceof Mc||l instanceof Ua){if(l.getPoint(a/c,u),o!==void 0&&p_(o,u,Fi))continue;o===void 0&&(o=ka),o.copy(u),n.push(u.x,u.y),i++}}return zi(n[0],n[n.length-2],Fi)&&zi(n[1],n[n.length-1],Fi)&&(n.pop(),n.pop()),t&&i>1&&!(zi(n[i-1],n[1],Fi)&&zi(n[i-2],n[0],Fi))&&(n.push(n[0],n[1]),i++),n}var jc=new Ur,y_=new Ur,g_=new Ur,x_=new Ur,v_=new Ur,b_=new Ur,Se=class extends Ym{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new m_(new h_(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=Rc.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=>Jt.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=jc.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=Rc.generateUUID()){let i;e instanceof Ur?i=e:i=new Ur(e,t);let s=new Jt(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=Gc(this.points,e,!1),this.roundedCurveDivisions=Gc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return qm(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=lo(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(Dc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(jc.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){Dc(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&&Fm(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),w=Math.min(g,v),S=1-w/h,b=w/y,T=d.getPointAt(S,jc),_=p.getPointAt(b,y_);this._subSplitCurve(d,f,S,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Bc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,A]=zm(T,_,P,g_,x_),O=Um(I,A,s.position),[V,z]=km(O,T,_,P,v_,b_);x=new Ha(T.clone(),V.clone(),z.clone(),_.clone())}else x=new Xm(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Vc)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=Hm(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 Jt(Rc.generateUUID(),new Ur(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Ha&&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 Xm&&(i[l]=jm(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 Ha?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Vc&&(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 Ha?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof Vc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Ym&&(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 zc=Math.PI*2;function Fc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function S_(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 Km(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,S=(l-y)/i,b=(-s-h)/o,T=(-l-y)/i,_=Km(1,0,w,S),x=Km(w,S,b,T);return!u&&x>0&&(x-=zc),u&&x<0&&(x+=zc),{centerx:g,centery:v,ang1:_,ang2:x}}function Zm({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)/(zc/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(S_(f,m)),f+=m;return c.map(w=>{let{x:S,y:b}=Fc(w[0],o,i,h,y),{x:T,y:_}=Fc(w[1],o,i,h,y),{x,y:C}=Fc(w[2],o,i,h,y);return{x1:S,y1:b,x2:T,y2:_,x,y:C}})}import{BufferAttribute as qa,BufferGeometry as A_}from"three";var ve;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(ve||(ve={}));var De;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(De||(De={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,l,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),Ui=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}(),Wa=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),Rn=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),Qm=function(){function n(){var r=new Rn,e=new Ui,t=new Wa(0),o=new Wa(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 Wa(0),t=new Wa(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;ue(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;ue(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new Rn,e=new Rn,t=new Ui,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new Rn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Ui;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 Ui;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new Rn;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new Ui;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}(),Jm=function(){function n(){this.handle=null}return n}(),eh=function(){function n(){this.key=null,this.node=0}return n}(),__=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Jm,this.handles[t]=new eh;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 Jm;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new eh}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}(),Uc=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}(),th=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),T_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new th,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 th;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}(),P_=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 Uc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do ue(ae.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,ue(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),i=ae.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new Rn,f,m;if(ue(!ae.vertEq(u,c)),ue(ae.edgeSign(c,r.event,s)<=0),ue(ae.edgeSign(u,r.event,l)>=0),ue(s!==r.event&&l!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ae.intersect(c,s,u,l,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(l.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(l.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ae.vertEq(p,s)||ae.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)>=0||!ae.vertEq(u,r.event)&&ae.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(ae.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ae.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,l,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ae.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ae.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,l,c;if(o=e.eUp,ae.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new Uc;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 Uc,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 T_(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 __(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}(),O_=function(){function n(){this.mesh=new Qm,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=ve.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,l,c=[0,0,0],u=[0,0,0],a=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ae.edgeGoesRight(t.Lprev)||ae.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===De.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===De.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Qm),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=De.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),P_.computeInterior(this,s);var l=this.mesh;return e===De.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===De.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function er(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?De.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new O_;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 ZR=ve.ODD,QR=ve.NONZERO,JR=ve.POSITIVE,eV=ve.NEGATIVE,tV=ve.ABS_GEQ_TWO,rV=De.POLYGONS,oV=De.CONNECTED_POLYGONS,nV=De.BOUNDARY_CONTOURS;var Vn=class extends A_{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=De.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}!c&&!u&&(l=er({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 qa(new Float32Array(p*3),3),this._normalAttribute=new qa(new Float32Array(p*3),3),this._uvAttribute=new qa(new Float32Array(p*2),2),this._indexAttribute=new qa(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let S=0,b=p;S<b;S++){let T=S*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,w=g-y;for(let S=0,b=p;S<b;S++){let T=S*2,_=l.vertices[T+0],x=l.vertices[T+1],C=(_-m)/v,P=(x-y)/w;this._positionAttribute.setXYZ(S,_,x,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,C,P)}for(let S=0,b=f;S<b;S++){let T=S*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new Vn(this._shape,this._curveSegments);return e.userData=Vr(this.userData),e}};import{BufferAttribute as Ya,BufferGeometry as I_}from"three";var $a=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*$a.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*$a.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)}},ki=$a;ki.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var kc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),jn=class extends I_{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),C=[];for(let P=x.length-1;P>=1;P-=2){let I=x[P-1],A=x[P-0];C.push(I,A)}return C}),a=er({windingRule:l,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),d=er({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]});if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let C=_*2,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new ki(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],A=P+I,O={start:P,count:I,normals:[],continuous:[],concave:[]},V=P,z=A-1,$=P+1,te=this._shape.roundedCurves.length;do{let G=V-P,D=a.vertices[z*2+0],B=a.vertices[z*2+1],L=a.vertices[V*2+0],F=a.vertices[V*2+1],W=a.vertices[$*2+0],H=a.vertices[$*2+1],j=L-D,U=F-B,M=Math.sqrt(j*j+U*U);j/=M,U/=M;let oe=L-W,Y=F-H,re=Math.sqrt(oe*oe+Y*Y);oe/=re,Y/=re,O.normals[G*2+0]=-Y,O.normals[G*2+1]=oe,O.concave[G]=j*Y-U*oe>0;let X=a.vertexIndices[V];if(Array.isArray(X))O.continuous[G]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)O.continuous[G]=!0;else{let ie=Z===1?ee+1:ee-1;ie=(ie+te)%te;let ce=Z===1?0:1,se=this._shape.roundedCurves[ee].getTangent(Z),pe=this._shape.roundedCurves[ie].getTangent(ce);O.continuous[G]=se.dot(pe)>.95}}x&&(O.normals[G*2+0]*=-1,O.normals[G*2+1]*=-1),[z,V,$]=[V,$,$+1],$>=A&&($-=I)}while($!==P+1);let K=[];K.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,A*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((G,D)=>[D,D]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,A*2)});for(let G=1;G<=this._bevelSegments;G++){let D=G/this._bevelSegments*Math.PI/2,B=(1-Math.cos(D))*this._bevelSize,L=[],F=[],W=[],H=[],j=0;for(let M=0;M<I;M++){let oe=M*2,Y=(M-1+I)%I*2,re=a.vertices[O.start*2+oe+0],X=a.vertices[O.start*2+oe+1],ee=-O.normals[Y+0]*B,Z=-O.normals[Y+1]*B,ie=-O.normals[oe+0]*B,ce=-O.normals[oe+1]*B;if(O.concave[M]||!O.concave[M]&&x){let se=Math.atan2(Z,ee),pe=Math.atan2(ce,ie);pe>se&&(pe-=Math.PI*2);let Me=pe-se;if(O.continuous[M]||x){let ge=se+Me/2,Ge=Math.cos(ge)*B,Pe=Math.sin(ge)*B;L[2*j+0]=re+Ge*(x?-1:1),L[2*j+1]=X+Pe*(x?-1:1),H[j]=M,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Me)/Math.PI));for(let Ge=0;Ge<=ge;Ge++){let Pe=se+Me*(Ge/ge),yt=Math.cos(Pe)*B,gt=Math.sin(Pe)*B;L[2*j+0]=re+yt,L[2*j+1]=X+gt,H[j]=M,j++}}}else L[2*j+0]=re+ee,L[2*j+1]=X+Z,H[j]=M,F[M]=j,j++,L[2*j+0]=re,L[2*j+1]=X,H[j]=M,j++,L[2*j+0]=re+ie,L[2*j+1]=X+ce,H[j]=M,W[M]=j,j++}let U=er({windingRule:ve.POSITIVE,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let Y=M.Org.idx,re=H[Y],X=H[(Y+1)%H.length];M.idx=[re,X],M.Sym.idx=[X,re]},vertexIdCallback:M=>{let oe=M.Lprev.idx;return[oe?oe[1]:0,M.idx[0]]}});if(!U)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!U.vertexCount)break;for(let M=0;M<U.vertexIndices.length;M++){let[oe,Y]=U.vertexIndices[M];if(oe===Y)continue;let re=Y;Y<oe&&(re+=I);for(let X=oe;X<re;X++){let ee=X%I,Z=(X+1)%I;if(!O.continuous[ee]||!O.continuous[Z]){U.vertexIndices[M]=[oe,ee],U.vertexIndices.splice(M+1,0,[Z,Y]),U.vertices.splice((M+1)*2,0,U.vertices[M*2],U.vertices[M*2+1]);break}}}K.push({bevelI:G,angle:D,size:B,boundary:U,reverseMap:H,insetPoints:L})}let q=(G,D,B)=>{let L=0,F=G.boundary.vertexIndices.length;for(;L<F&&B(G.boundary.vertexIndices[D]);)D=(D+1)%F,L++;return L},k=g.length;for(let G=1;G<K.length;G++){let D=K[G-1],B=K[G],L=D.boundary.vertexIndices.length,F=B.boundary.vertexIndices.length;if(!L||!F)break;let W=O.concave.length,H=0,j=kc(H,I);for(;!D.boundary.vertexIndices.filter(j).length||!B.boundary.vertexIndices.filter(j).length;)H++,j=kc(H,I);let U=D.boundary.vertexIndices.findIndex(j),M=B.boundary.vertexIndices.findIndex(j);do U=(U+1)%L;while(j(D.boundary.vertexIndices[U]));do M=(M+1)%F;while(j(B.boundary.vertexIndices[M]));H=(H+1)%I;let oe=H,Y=this._buildBevelVert(O,D,(U-1+L)%L),re=this._buildBevelVert(O,B,(M-1+F)%F),X=Y,ee=re,Z,ie,ce=!1;do{j=kc(H,I);let se=q(D,U,j),pe=q(B,M,j),Me=ce;if(ce=!1,se&&!pe){for(let ge=0;ge<se;ge++)Z=this._buildBevelVert(O,D,(U+ge)%L,ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;ce=!0}else if(!se&&pe)for(let ge=0;ge<pe;ge++)ie=this._buildBevelVert(O,B,(M+ge)%F,ge/(pe-1)),g.push(ee.topN,X.topP,ie.topP),g.push(X.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&pe)if(Z=this._buildBevelVert(O,D,U,0),ie=this._buildBevelVert(O,B,M,0),Me?(g.push(X.topN,ie.topP,ee.topN),g.push(X.topN,Z.topP,ie.topP),g.push(ie.bottomP,X.bottomN,ee.bottomN),g.push(ie.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP)),X=Z,ee=ie,se===pe)for(let ge=1;ge<se;ge++)Z=this._buildBevelVert(O,D,(U+ge)%L,ge/(se-1)),ie=this._buildBevelVert(O,B,(M+ge)%F,ge/(pe-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP),X=Z,ee=ie;else if(se>pe){let ge=se/pe,Ge=0;for(let Pe=1;Pe<se;Pe++)Z=this._buildBevelVert(O,D,(U+Pe)%L,Pe/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Pe>(Ge+1)*ge&&(Ge++,ie=this._buildBevelVert(O,B,(M+Ge)%F,Ge/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ge=pe/se,Ge=0;for(let Pe=1;Pe<pe;Pe++)ie=this._buildBevelVert(O,B,(M+Pe)%F,Pe/(pe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie,Pe>(Ge+1)*ge&&(Ge++,Z=this._buildBevelVert(O,D,(U+Ge)%L,Ge/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}U=(U+se)%L,M=(M+pe)%F,H=(H+1)%W}while(H!==oe)}if(this._buildWall(K,O,g),x){let G=[];for(let D=g.length-1;D>=k+2;D-=3){let B=g[D-2],L=g[D-1],F=g[D-0];G.push(F,L,B)}g.splice(k,g.length-k,...G)}if(x){let G=[];for(let D=K[K.length-1].boundary.vertices.length-1;D>=1;D-=2){let B=K[K.length-1].boundary.vertices[D-1],L=K[K.length-1].boundary.vertices[D-0];G.push(B,L)}v.push(G)}if(!x){let G=K[K.length-1],D=er({windingRule:K.length>1?ve.POSITIVE:ve.ODD,elementType:De.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...v]});if(!D)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<D.elementCount*3;B+=3){let L=this._buildSurfaceVert(D,D.elements[B+0]),F=this._buildSurfaceVert(D,D.elements[B+1]),W=this._buildSurfaceVert(D,D.elements[B+2]);g.push(L.top,F.top,W.top),g.push(W.bottom,F.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new Ya(Uint32Array.from(g),1),S=new Ya(this._buffer.positions,3),b=new Ya(this._buffer.normals,3),T=new Ya(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,T.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",T),this.setIndex(w)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],w=t.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,T=(w-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],C=e.normals[g+0],P=e.normals[g+1];if(p){let z=C-_,$=P-x;_=_+z*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),A=I*3,O=I*2,V={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[A+0]=v,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=this._depth-S,this._buffer.normals[A+0]=_*f,this._buffer.normals[A+1]=x*f,this._buffer.normals[A+2]=m,this._buffer.uvs[O+0]=b,this._buffer.uvs[O+1]=T,this._buffer.positions[A+3]=v,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=S,this._buffer.normals[A+3]=_*f,this._buffer.normals[A+4]=x*f,this._buffer.normals[A+5]=-m,this._buffer.uvs[O+2]=T,this._buffer.uvs[O+3]=b,d||(I+=2,A+=6,O+=4,V.topP=I+0,V.bottomP=I+1,this._buffer.positions[A+0]=v,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=this._depth-S,this._buffer.normals[A+0]=C*f,this._buffer.normals[A+1]=P*f,this._buffer.normals[A+2]=m,this._buffer.uvs[O+0]=b,this._buffer.uvs[O+1]=T,this._buffer.positions[A+3]=v,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=S,this._buffer.normals[A+3]=C*f,this._buffer.normals[A+4]=P*f,this._buffer.normals[A+5]=-m,this._buffer.uvs[O+2]=T,this._buffer.uvs[O+3]=b),this.vertexCache[s]=V,V}clone(){let e=new jn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Vr(this.userData),e}};var Fn=class extends jn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Vr(this.userData),e}};var _t=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new Vn(n.shape,o,{windingRule:s}):l=new Fn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as oh,Vector2 as nh}from"three";var ih=Math.PI*2,Un=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=C_(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 C_(n,r,e,t,o,i){if(t>=ih)return o>30||o%4===0?(E_(n,r,e,i),Math.round(o/4)):rh(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=Zm({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?N_(n,s.x,s.y,u,o,r,e,i):rh(n,t,o,r,e,i)}function N_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(zn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=zn(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return l>0?sh(n,i,s,l):n.addPoint(zn(0,0)),c}function rh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(zn(u,a))}return r<ih?i>0?sh(n,t,o,i):n.addPoint(zn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&ah(n,t,o,i)),1}function E_(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(Xa(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Xa(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Xa(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Xa(o,i-e,o+l,i-e,o-l,i-e)),t>0&&ah(n,r,e,t)}function zn(n,r){return new Jt(oh.generateUUID(),new nh(n,r))}function Xa(n,r,e,t,o,i){let s=zn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function sh(n,r,e,t){lh(n,r,e,t).forEach(i=>n.addPoint(i))}function ah(n,r,e,t){let o=lh(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function lh(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new nh(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=oh.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 M_,Float32BufferAttribute as Hc,Vector3 as ch}from"three";var dh=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 M_{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 ch,y=new ch,g=h(),v=h(),w=h(),S,b,T,_,x,C,P,I,A=h(),O=h(),V=h(),z=h(),$=h(),te=h(),K=h(),q=h(),k=t-2*c+.001,G=k/s,D=Math.ceil(l*s),B=D+1,L=k/D,F=-k/2,W=a+1,H=2*Math.PI/a,j=Math.PI/2/p,U=.01,M=Math.min((1-d/100)*c,c-U),oe=c-M,Y=0,re=2,X=p*re+re,ee=W*X/re,Z=ee+W*B,ie=W*(B+X),[ce,se,pe]=[3,3,2].map(He=>Array(ie*He).fill(0)),Me=[],ge=i-c;function Ge(He,It){let ar=Math.PI/2;C=It*L,I=2*Math.PI*(C%G)/G+ar,C+=F,P=Math.sin(I)*ge,x=Math.cos(I)*ge,r?He.set(x,P,C):He.set(x,C,P)}Ge(y,-1e-10),Ge(g,0),A.copy(y),Ge(y,1);let Pe=y.distanceTo(g),yt=m?0:oe+M,gt=Pe*D+2*yt,Wo=M,Bt=gt-yt;for(let He=0;He<=D;He++){Ge(v,He),q.subVectors(v,A).normalize(),A.copy(v),te.copy(v).setComponent(+r+1,0).normalize(),K.crossVectors(q,te).normalize();let It=He===0,ar=He===D,vg=It?3*Math.PI/2:j,bg=It?Wo:Bt,Sg=It?W:Z,wg=It?0:ie-W,_g=q.clone().multiplyScalar(It?-oe:oe).add(v),Tg=q.clone().multiplyScalar(It?-1:1).normalize();for(let Er=0;Er<W;Er++){let Qd=Er*H;if(O.addVectors(y.copy(te).multiplyScalar(c*Math.cos(Qd)),g.copy(K).multiplyScalar(c*Math.sin(Qd))),V.copy(O).normalize(),It||ar){m||(Y=wg+Er,[0,1,2].forEach(xt=>{ce[Y*3+xt]=_g.getComponent(xt),se[Y*3+xt]=Tg.getComponent(xt)}),pe[Y*2]=+ar,pe[Y*2+1]=Er/a),g.copy(V).multiplyScalar(M),w.addVectors(v,g);for(let xt=0;xt<p;xt++){let Rl=xt*j+vg;z.addVectors(y.copy(q).multiplyScalar(oe*Math.sin(Rl)),g.copy(V).multiplyScalar(oe*Math.cos(Rl))),$.copy(z).normalize(),g.addVectors(w,z),z.normalize(),Y=Sg+xt*W+Er,[0,1,2].forEach(Ns=>{ce[Y*3+Ns]=g.getComponent(Ns),se[Y*3+Ns]=$.getComponent(Ns)});let Pg=+It+Math.sin(Rl);pe[Y*2]=(bg+oe*Pg)/gt,pe[Y*2+1]=Er/a}}g.addVectors(v,O),Y=ee+He*W+Er,[0,1,2].forEach(xt=>{ce[Y*3+xt]=g.getComponent(xt),se[Y*3+xt]=V.getComponent(xt)}),pe[Y*2]=(yt+He*Pe)/gt,pe[Y*2+1]=Er/a}}let qo=B+2*p+re,Dl=1,[Gl,xi]=[+m,qo-1];f&&(xi-=1);for(let He=Gl;He<=xi-1;He++){let It=m&&He===xi-1;for(let ar=0;ar<W-1;ar++)S=He*W+ar,b=S+1,T=(It?ar:S)+W,_=(It?ar+1:b)+W,He===0?Me.push(b,_,T):He===qo-2?Me.push(S,b,T):Me.push(S,b,T,b,_,T)}this.setIndex(Me),this.setAttribute("position",new Hc(ce,3)),this.setAttribute("normal",new Hc(se,3)),this.setAttribute("uv",new Hc(pe,2))}};import{IcosahedronGeometry as L_}from"three";var uh=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 Hi(r*.5,i,s):new L_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Hi=class extends ao{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 Hi(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as B_,Shape as D_}from"three";var ph=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 D_;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 B_(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as xh,BufferGeometryLoader as W_,Vector3 as q_,BoxGeometry as vh}from"three";import{BufferGeometry as z_,Vector2 as $c,Vector3 as gh}from"three";import{Box3 as G_,BufferAttribute as Wi,BufferGeometry as fh,Color as hh,EventDispatcher as R_,Float32BufferAttribute as kn,Matrix3 as mh,Matrix4 as yh,MathUtils as V_,Object3D as j_,Sphere as F_,Vector2 as Vt,Vector3 as lt}from"three";var yr=new yh,Wc=new j_,Ka=new lt,co=class extends R_{constructor(){super(),this.uuid=V_.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 mh().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 yr.makeRotationX(r),this.applyMatrix4(yr),this}rotateY(r){return yr.makeRotationY(r),this.applyMatrix4(yr),this}rotateZ(r){return yr.makeRotationZ(r),this.applyMatrix4(yr),this}translate(r,e,t){return yr.makeTranslation(r,e,t),this.applyMatrix4(yr),this}scale(r,e,t){return yr.makeScale(r,e,t),this.applyMatrix4(yr),this}lookAt(r){return Wc.lookAt(r),Wc.updateMatrix(),this.applyMatrix4(Wc.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 hh().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 Hn(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(Ka).negate(),this.translate(Ka.x,Ka.y,Ka.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new yh;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 co;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 G_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new F_),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 mh().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,w=new Hn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let S=0,b=g.length;S<b;S++)h=g[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),w.vertexNormals.push(h);w.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)y=v[S],w.vertexColors.push(y.clone());w.materialIndex=m.materialIndex+t,c.push(w)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let w=0,S=g.length;w<S;w++)v.push(g[w].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new 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,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,w),_=a(_,5,S),_=a(_,6,b),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(w&&t.push(d(h.normal)),S){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(b&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new co().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let w=0,S=g.length;w<S;w++){let b=g[w];v.push(b.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new qc().fromGeometry(this),e=new fh,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",new Wi(t,3).copyVector3sArray(r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",new Wi(o,3).copyVector3sArray(r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",new Wi(o,3).copyColorsArray(r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",new Wi(o,2).copyVector2sArray(r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",new Wi(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 kn(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 kn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(r.skinIndices))}if(r.skinWeights.length>0){let o=new kn(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 fh,t=r.geometry;if(r.isPoints||r.isLine){let o=new kn(t.vertices.length*3,3),i=new kn(t.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(t.vertices)),e.setAttribute("color",i.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new kn(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}};co.prototype.isGeometry=!0;var qc=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let w=v.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Vt,new Vt,new Vt))}if(s===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Vt,new Vt,new Vt))}for(let b=0;b<c;b++){let T=l[b].vertices;u[b].data.push(T[v.a],T[v.b],T[v.c])}for(let b=0;b<d;b++){let T=a[b].vertexNormals[g];p[b].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},Hn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new lt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new hh,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 U_=["a","b","c"];function k_(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Yc(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Xc(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],Xc(s.a,s.b,n,t,s,e),Xc(s.b,s.c,n,t,s,e),Xc(s.c,s.a,n,t,s,e)}function Za(n,r,e,t,o){n.push(new Hn(r,e,t,void 0,void 0,o))}function Wn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Qa(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ja=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof z_?r=new co().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 gh,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,S,b;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new gh,w=3/8,S=1/8,b=y.faces.length,b!=2&&(w=.5,S=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(w),e.set(0,0,0),s=0;s<b;s++){for(v=y.faces[s],l=0;l<3&&(h=c[k_(v,U_[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(S),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,C,P,I,A,O=[];for(o=0,i=c.length;o<i;o++){for(I=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),A=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),A.add(e),O.push(A)}let V=O.concat(m),z=O.length,$,te,K,q=[],k=[],G,D,B,L,F=new $c,W=new $c,H=new $c;for(o=0,i=u.length;o<i;o++)v=u[o],$=Number(Yc(v.a,v.b,f).newEdge)+z,te=Number(Yc(v.b,v.c,f).newEdge)+z,K=Number(Yc(v.c,v.a,f).newEdge)+z,Za(q,$,te,K,v.materialIndex),Za(q,v.a,$,K,v.materialIndex),Za(q,v.b,te,$,v.materialIndex),Za(q,v.c,K,te,v.materialIndex),d&&(G=a[o],D=G[0],B=G[1],L=G[2],F.set(Wn(D.x,B.x),Wn(D.y,B.y)),W.set(Wn(B.x,L.x),Wn(B.y,L.y)),H.set(Wn(D.x,L.x),Wn(D.y,L.y)),Qa(k,F,W,H),Qa(k,D,F,H),Qa(k,B,W,F),Qa(k,L,H,W));r.vertices=V,r.faces=q,d&&(r.faceVertexUvs[0]=k)}};var We=new q_,bh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new xh().copy(new vh(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 xh().copy(new vh(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 Ja(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 W_(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 el=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 $_,Float32BufferAttribute as Kc,Vector2 as gr,Vector3 as Ze}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,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 Qc(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function qi(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Zc(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 Y_(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Qc=class extends $_{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,w=new Ze(0,-f,0),S=new Ze(0,f,0),b=new gr(r,-f),T=new gr(h,-f),_=new gr(0,S.y).sub(T),x=new gr(0,S.y).sub(b),C=new gr(_.y,-_.x).normalize(),P=new gr(x.y,-x.x).normalize(),A=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,A);let O;{let k=new Ze(C.x,C.y,0),G=new Ze(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);O=k.angleTo(G)}let V=s/Math.tan((Math.PI-_.angle())/2),z=s/Math.tan((Math.PI-O)/2),$=new Ze;if(!i){u.push(w.x,w.y,w.z),a.push(0,-1,0),d.push(0,0);let k=p++,G=[],D=b.clone(),B=V/Math.cos(Math.PI/t);D.x-=B;for(let L=0;L<t;L++){let F=L/t*Math.PI*2+m,W=new gr(Math.sin(F),Math.cos(F));qi(D,W,$),u.push($.x,$.y,$.z),a.push(0,-1,0),d.push(0,0),G.push(p++)}for(let L=0;L<G.length;L++)c.push(G[L],k,G[(L+1)%G.length])}let te=[];{let k=new Ze,G=new Ze,D=new Ze,B=new Ze,L=new Ze,F=new Ze;for(let W=0;W<t;W++){let H=W/t*Math.PI*2+m,j=(W+.5)/t*Math.PI*2+m,U=(W+1)/t*Math.PI*2+m,M=new gr(Math.sin(H),Math.cos(H)),oe=new gr(Math.sin(j),Math.cos(j)),Y=new gr(Math.sin(U),Math.cos(U));qi(b,M,G),qi(b,Y,D),qi(C,oe,k),Zc(S,G,D,z,z,B),u.push(B.x,B.y,B.z),Zc(G,S,D,z,V,L),u.push(L.x,L.y,L.z),Zc(D,G,S,V,z,F),u.push(F.x,F.y,F.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let re=p++,X=p++,ee=p++;if(c.push(re,X,ee),s>0){{let ce=G.clone().add(D).multiplyScalar(.5),se=S.clone().sub(ce).normalize(),Me=w.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ge=F.clone().sub(L);K(ce,ge,Me,_.angle())}let Z,ie;{let ce=new Ze;qi(P,Y,ce);let se=F.clone().add(B).multiplyScalar(.5);se=Y_(se,D,S);let pe=F.clone().sub(B);[Z,ie]=K(se,pe,ce,O,B.y)}{let ce=Z,se=ce.clone().setY(0).normalize(),pe=new Ze(0,-1,0),Me=se.clone().cross(pe);q(ce,se,pe,Me)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,pe=S.clone();pe.y-=s/Math.sin(ce-Math.PI/2);let Me=new Ze,ge=[];for(let Pe=0;Pe<l;Pe++){let yt=[],gt=Math.PI/2-se*Pe/l,Wo=Math.cos(gt),Bt=Math.sin(gt),qo=j;for(let Dl=0;Dl<=Pe;Dl++){let Gl=Math.cos(qo),xi=Math.sin(qo);k.x=Wo*xi,k.y=Bt,k.z=Wo*Gl,Me.copy(pe).addScaledVector(k,s),u.push(Me.x,Me.y,Me.z),a.push(k.x,k.y,k.z),d.push(0,0),yt.push(p++),qo+=Math.PI*2/Pe/t}ge.push(yt)}ie.reverse(),ge.push(ie);let Ge=ge.length-1;for(let Pe=0;Pe<Ge;Pe++){let yt=ge[Pe],gt=ge[Pe+1],Wo=yt.length-1;c.push(gt[1],yt[0],gt[0]);for(let Bt=1;Bt<=Wo;Bt++)c.push(yt[Bt],yt[Bt-1],gt[Bt]),c.push(gt[Bt+1],yt[Bt],gt[Bt])}}}}}this.setIndex(c),this.setAttribute("position",new Kc(u,3)),this.setAttribute("normal",new Kc(a,3)),this.setAttribute("uv",new Kc(d,2));function K(k,G,D,B,L){let F=-B/2,W=(Math.PI-B)/2,H=G.clone().normalize().cross(D);k.addScaledVector(D,-s/Math.sin(W));let j=new Ze,U=new Ze,M=1,oe=p,Y=[];for(let re=0;re<=l;re++){let X=F+re/l*B;U.set(0,0,0),U.addScaledVector(H,Math.sin(X)),U.addScaledVector(D,Math.cos(X));for(let ee=0;ee<=M;ee++){let Z=ee/M-.5;if(j.copy(k),j.addScaledVector(G,Z),j.addScaledVector(U,s),L!=null){let ie=Math.max(0,j.y-L);j.addScaledVector(G,-ie/G.y)}u.push(j.x,j.y,j.z),a.push(U.x,U.y,U.z),d.push(0,0),ee===0&&Y.push(p),p++}}for(let re=0;re<l;re++)for(let X=0;X<M;X++){let ee=oe+X+(M+1)*re,Z=ee+(M+1),ie=Z+1,ce=ee+1;c.push(ee,Z,ce),c.push(Z,ie,ce)}return[k.clone().addScaledVector(G,.5),Y]}function q(k,G,D,B){let L=Math.PI/2,F=x.angle()-L,W=[],H=new Ze,j=new Ze;for(let M=0;M<=l;M++){let oe=[],Y=M/l;for(let re=0;re<=M;re++){let ee=((M?re/M:0)-.5)*v,Z=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(F)*Z),se=(L+ce)*Y,pe=Math.cos(se),Me=Math.sin(se);H.set(0,0,0),H.addScaledVector(G,Me*Z),H.addScaledVector(D,pe),H.addScaledVector(B,Me*ie),j.copy(k).addScaledVector(H,s),u.push(j.x,j.y,j.z),a.push(H.x,H.y,H.z),d.push(0,0),oe.push(p++)}W.push(oe)}let U=W.length-1;for(let M=0;M<U;M++){let oe=W[M],Y=W[M+1],re=oe.length-1;c.push(oe[0],Y[1],Y[0]);for(let X=1;X<=re;X++)c.push(oe[X-1],oe[X],Y[X]),c.push(oe[X],Y[X+1],Y[X])}}}};var tl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(S,b,T){return b>e&&T>t?Math.min(S*e/b,S*t/T):b>e?S*e/b:T>t?S*t/T:S}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=d.x,y=d.y,g=a.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let v=!0;for(let S=0,b=r.points.length;S<b;S++)r.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let w=_t.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as X_}from"three";var wh=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 X_(.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 K_}from"three";var _h=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 K_(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as Z_,Float32BufferAttribute as Jc,Vector3 as Q_}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,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 ed(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},ed=class extends Z_{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,U=0,M=0)=>new Q_(j,U,M),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],w=-g,S=+g,[b,T,_]=[f(w,-y,+v),f(w,-y,-v),f(w,+y,-v)],x=(j,U=!1)=>Math.sin(j-Math.PI/(1+ +U)),C=(j,U=!1)=>Math.cos(j-Math.PI/(1+ +U));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=b.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,b.z-a),m.subVectors(b,T),h.subVectors(_,T);let A=Math.min(m.length(),h.length())*i/100,O=A*Math.tan(o/2),V=A/Math.cos(o/2),z=m.clone().normalize().add(h.normalize()).setLength(V).add(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let U=p+o+j*$;m.set(0,Math.sin(U)*O,Math.cos(U)*O),m.add(z),h.set(0,x(U),C(U)),d.push([m.clone(),h.clone()])}d.push([b,f(0,1,0)]);let te=Math.sin($/2)*O*2,K=d.length-1,q=d[0][0].distanceTo(d[1][0]),k=d[K-1][0].distanceTo(d[K][0]),G=q+te*s+k;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*te)/G);d[K].push(0);let[D,B,L]=d[0],F,W,H;for(let j=1;j<d.length;j++)[F,W,H]=d[j],l.push(w,D.y,D.z,w,F.y,F.z,S,D.y,D.z,S,D.y,D.z,w,F.y,F.z,S,F.y,F.z),c.push(0,B.y,B.z,0,W.y,W.z,0,B.y,B.z,0,B.y,B.z,0,W.y,W.z,0,W.y,W.z),u.push(0,L,0,H,1,L,1,L,0,H,1,H),[D,B,L]=[F,W,H];this.setAttribute("position",new Jc(l,3)),this.setAttribute("normal",new Jc(c,3)),this.setAttribute("uv",new Jc(u,2))}};var rl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,T=f+Math.sin(b)*d,_=m+Math.cos(b)*p;a.addPoint(a.createPoint(T,_))}}else for(let S=0;S<o;S++){let b=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(b,T)),y+=h,b=f+Math.cos(y)*g,T=m+Math.sin(y)*v,S<=o,a.addPoint(a.createPoint(b,T)),y+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let w=_t.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as J_}from"three";var Ph=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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 J_(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Oh=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=eT(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 eT(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 tT}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 tT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};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,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=_t.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Nh,Vector3 as xr,Matrix4 as ol,BufferGeometry as Mh,BufferAttribute as td,MathUtils as Eh}from"three";function Ch(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var Lh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??Un.create({parameters:lc}).userData.shape;return{path:n.path??on.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...ta,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new rd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Mh,{userData:{...n,type:"PathGeometry"}})}},rd=class extends Mh{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!Ch(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=Math.max(2,Math.ceil(this.inputs.path.isClosed?o*e.length:(Math.min(i+o,1)-i)*e.length)),l=[],c=[],u=Math.floor(i*e.length);for(let b=0;b<s;b++){let T=this.inputs.path.isClosed?(b+u)%e.length:Math.min(e.length-1,b+u);l.push(e[T]),c.push(t[T])}this._isOpenEnded()&&this._isGeometryClosed()&&(s++,l.push(l[0].clone()),c.push(c[0].clone())),this._applyPathModifiers(c);let{regions:a,infos:d,vertices:p}=this._computeShapePoints(5),f=0,m=0;d.sort((b,T)=>b.start-T.start),d.forEach(b=>{b.verticesStart=f,b.verticesCount=b.count+b.continuous.reduce((T,_)=>T+(_?0:1),0),m+=b.verticesCount,f=m});let h=m*s,y,g=0;this._isOpenEnded()&&(y=er({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:a}),g=y.vertexCount);let v=h+2*g,w={positions:new Float32Array(v*3),normals:new Float32Array(v*3),uvs:new Float32Array(v*2)},S=[];d.forEach(b=>{this._extrudeRegion(b,p,c,l,w,S,this._isGeometryClosed()&&!this._isOpenEnded())}),y&&(this._closeEnd(y,h,S,w,c[0],l[0],!1),this._closeEnd(y,h+g,S,w,c[c.length-1],l[l.length-1],!0)),this.setAttribute("position",new td(w.positions,3)),this.setAttribute("normal",new td(w.normals,3)),this.setAttribute("uv",new td(w.uvs,2)),this.setIndex(S),this.computeVertexNormals()}_extractPathPoints(){let e=this.inputs.path.isClosed,o=Ra(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(o.length<2)return[];let i=[o[0]];return o.forEach(s=>{i[i.length-1].distanceToSquared(s)>.001&&i.push(s)}),e&&i[i.length-1].distanceTo(i[0])<.001&&i.pop(),i}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new xr,l=new xr,c=new xr,u=new xr,a=new xr(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-1]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let w;y===o-1?w=i?e[0]:g.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let S=g.clone().sub(v).normalize(),b=w.clone().sub(g).normalize(),T=S.clone().add(b).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let C=new ol().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new xr(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ol().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e){let t=e.length,{angle:o,twist:i,startScale:s,endScale:l}=this.inputs.parameters.extrusion,c=new ol,u=new ol;return e.forEach((a,d)=>{let p=this._isGeometryClosed()?d/t:d/(t-1);c.makeRotationZ(Eh.lerp(o,o+i,p));let f=Eh.lerp(s,l,p);u.makeScale(f,f,f),a.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let w=y[v-1],S=y[v-0];g.push(w,S)}return g}),l=er({windingRule:t,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]}),c=er({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]});if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],w=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),w<p&&(p=w),w>f&&(f=w)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],w=l.elements[g+1],S=v+w,b={start:v,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let T=v,_=S-1,x=v+1,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],A=l.vertices[_*2+1],O=l.vertices[T*2+0],V=l.vertices[T*2+1],z=l.vertices[x*2+0],$=l.vertices[x*2+1],te=O-I,K=V-A,q=Math.sqrt(te*te+K*K);te/=q,K/=q;let k=O-z,G=V-$,D=Math.sqrt(k*k+G*G);k/=D,G/=D,b.normals[P*2+0]=-G,b.normals[P*2+1]=k;let B=l.vertexIndices[T];if(Array.isArray(B))b.continuous[P]=!1;else{let[L,F]=o.getCurveIndexFromVertexId(B-1,!0);if(F>0&&F<1)b.continuous[P]=!0;else{let W=F===1?L+1:L-1;W=(W+C)%C;let H=F===1?0:1,j=o.roundedCurves[L].getTangent(F),U=o.roundedCurves[W].getTangent(H);b.continuous[P]=j.dot(U)>.95}}y&&(b.normals[P*2+0]*=-1,b.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=S&&(x-=w)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new xr,a=new xr,d=new Nh;o.forEach((f,m)=>{let h=i[m],y=e.verticesStart*o.length+e.verticesCount*m;for(let g=0;g<e.count;g++){let v=(e.start+g)*2;u.set(t[v+0],t[v+1],0).applyMatrix4(f).add(h),a.set(e.normals[g*2+0],e.normals[g*2+1],0).applyMatrix4(f).normalize(),d.set(g/(e.count-1),m/(o.length-1)),this._insertVertex(s,y,u,a,d),y++,e.continuous[g]||(this._insertVertex(s,y,u,a,d),y++)}});let p=c?o.length:o.length-1;for(let f=0;f<p;f++){let m=e.verticesStart*o.length+e.verticesCount*f,h=c&&f===p-1?e.verticesStart*o.length:e.verticesStart*o.length+e.verticesCount*(f+1),y=0;for(let g=0;g<e.count;g++){e.continuous[g]||y++;let v=(g+1)%e.count===0?0:y+1,w=m+y,S=m+v,b=h+v,T=h+y;e.isHole?l.push(w,b,S,w,T,b):l.push(w,S,b,w,b,T),y++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new xr(0,0,c?-1:1).applyMatrix4(s),d=new xr,p=new Nh;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as Bh,BufferGeometry as od}from"three";import{mergeBufferGeometries as rT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function oT(){let n=new od;return n.setAttribute("position",new Bh(new Float32Array([]),3)),n.setIndex(new Bh(new Uint16Array([]),1)),n}var nT=12,iT=1,qn=class extends od{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=sT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(b=>new Se().fromShape(b));this.vectorShapes=v;let w=v.map(b=>_t.create({shape:b,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?iT:nT}})),S=w.length?rT(w):oT();S.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([b,T])=>{this.setAttribute(b,T)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=eo(new od,qn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function sT(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 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=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.225/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 Co(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 Un(n,r)}let o;try{o=Bc(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(en.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=$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 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 Io(!0,d,f,p,d*.5,m/(2*Math.PI),h,f/2,0,y,0,0,!0)}else i=e.shape!==void 0?t.geometry:Co(e,o,!1);let s,l,c,u;({positions:s,triIndices:u}=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"),
|
|
5
|
-
`)),sRGBToLinear:new
|
|
6
|
-
`)),LinearTosRGB:new
|
|
7
|
-
`))},ft.LINEAR_TO_LINEAR="LinearToLinear",ft.SRGB_TO_LINEAR="sRGBToLinear",ft.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends
|
|
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 id,BufferAttribute as Vh,Uint32BufferAttribute as sd,Float32BufferAttribute as ad,Matrix4 as dT,Vector3 as Yi,Sphere as uT,Box3 as pT,BoxGeometry as fT}from"three";var Gh,Yn=new Promise(n=>{Gh=n}),Dh=!1;async function Rh(){if(Dh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.226/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});Gh(i),Dh=!0}import{BufferGeometryLoader as aT}from"three";function No(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new aT().parse(n);else{if(n.type==="SubdivGeometry")return new Fe(n,e);if(n.type==="TextGeometry")return new qn(n,r)}let o;try{o=nd(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(rn.defaultData(),100,100);t.shape=i,o=nd(t)}return o}import{Matrix4 as lT}from"three";var cT=new lT;function $i(n,r,e,t){let o=n.position.array,i=n.normal.array,s=cT.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 nl=new pT,Xn=new Yi,de;Yn.then(n=>{de=n});var jh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Fh=new Uint32Array([0,1,2,3]),zh=new Uint8Array([4]),Fe=class extends id{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Kr.div(t,o);this.subdividedGeometry&&$i(this.subdividedGeometry.attributes,...i),this.originalGeometry&&$i(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Xn.fromArray(i));let l=Xn.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=Fe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new fT(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new uT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;nl.setFromBufferAttribute(t),nl.getCenter(o),e.boundingSphere.radius=o.distanceTo(nl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),nl.getSize(Xn);let i={width:Xn.x,height:Xn.y,depth:Xn.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=Fe.allocate(e,i)}catch(a){console.error(a,e),s=Fe.allocate({positionWASM:jh,indexWASM:Fh,verticesPerFaceWASM:zh},i)}if(de.set_destination_refinement_level(s,0),l=Fe.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=Fe.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=Fe.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i;if(e.type==="TorusGeometry"&&e.arc===Math.PI*2){let{width:d,height:p,depth:f,arc:m,tubularSegments:h,radialSegments:y}=e;i=new 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}=ud(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}=pd(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=jh,i=Fh,s=zh);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),w=new Uint32Array(de.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),w.set(i,0),w.set(s,i.length);let S;e?.scaleBaked?.some(T=>T!==1)&&(S=new dT().makeScale(...e.scaleBaked)),t&&(S?S.premultiply(t):S=t);let b=S?de.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,S.elements):de.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),b}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,u=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=de.HEAPU32[u[d]>>2],w=de.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let S=new id;if(S.setIndex(new sd(w,1)),S.setAttribute("position",new ad(f,3)),S.setAttribute("normal",new ad(h,3)),t){S.setAttribute("faceMap",new sd(g,1));let b=new Float32Array(h.length/3*4).fill(0);S.setAttribute("color",new Vh(b,4))}return de.free_mesh_data(l),S.userData.type="SubdivGeometry",S}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=de.HEAPU32[l[u]>>2],d=de.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=de.HEAPU32[l[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new id;m.setAttribute("position",new ad(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 Vh(h,3)),m.setIndex(new sd(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var Uh=["getX","getY","getZ"];function ud(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[Uh[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[Uh[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 il=new Yi,ld=new Yi,cd=new Yi,dd=new Yi;function pd(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]){il.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),ld.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),cd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),dd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),ld.sub(il).normalize(),cd.sub(il).normalize(),dd.sub(il).normalize();let c=ld.cross(cd).dot(dd);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 tr={};Eg(tr,{calcBoolean:()=>xT,calcBooleanTopological:()=>gT,freeMeshSet:()=>ST,getMeshSet:()=>vT,transformMeshSet:()=>bT});var mT,kh=new Promise(n=>{mT=n});import{Float32BufferAttribute as Hh,Sphere as hT}from"three";var ye,Kn;kh.then(n=>ye=n);function yT(n,r,e){let t,{positions:o,triIndices:i}=ud(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=pd(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 Wh(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,r):new Float32Array(ye.HEAPF32.buffer,i,r)).set(n,0),i}function qh(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function gT(n,r){Kn===void 0&&(Kn=ye.init_csg());let e=Wh(n),t=ye.csg_calc_topological(Kn,e,n.length,qh(r));ye._free(e);let o=6,i=ye.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ye.HEAPU32[i[l]>>2],u=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ye.HEAPU32[i[l]>>2],d=new Uint32Array(ye.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ye.HEAPU32[i[l]>>2],f=new Uint8Array(ye.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ye.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function xT(n,r,e,t){Kn===void 0&&(Kn=ye.init_csg());let o=Wh(n),i=ye.csg_calc(Kn,o,n.length,t,qh(r));ye._free(o);let s=5,l=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ye.HEAPU32[l[u]>>2],d=ye.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ye.HEAPU32[l[u]>>2],f=ye.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Hh(d,3)),e.setAttribute("normal",new Hh(f,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new hT),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},ye.free_mesh_data(i),m}function vT(n,r,e){if(ye===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,v)=>g+v,0)+i);for(let g=0,v=0,w=0;g<y.verticesPerFace.length;g++){o[w++]=y.verticesPerFace[g];for(let S=0;S<y.verticesPerFace[g];S++)o[w++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=yT(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=ye._malloc(a),m=new Float32Array(ye.HEAPF32.buffer,f,c),h=new Uint32Array(ye.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ye.get_csg_mesh(f,s,f+d,l,i)}function bT(n,r){ye.transform_csg_mesh(n,r.elements)}function ST(n){ye.free_csg_mesh(n)}var wT={ConeGeometry:Em,CubeGeometry:Mm,CylinderGeometry:Nm,DodecahedronGeometry:Lm,EllipseGeometry:Un,HelixGeometry:dh,IcosahedronGeometry:uh,LatheGeometry:ph,NonParametricGeometry:bh,PolygonGeometry:el,PyramidGeometry:Sh,RectangleGeometry:tl,SphereGeometry:wh,PlaneGeometry:_h,BackdropGeometry:Th,StarGeometry:rl,TextFrameGeometry:Ph,TorusGeometry:Oh,TorusKnotGeometry:Ah,TriangleGeometry:Ih,PathGeometry:Lh,VectorGeometry:_t},nd=n=>wT[n.type].create(n);function Xi(n){return n!==null&&"booleanOp"in n}var Zn=class extends ja(TT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new _T}updateVisible(){super.updateVisible(),this.visible=!Xi(this.parent)&&this.visible,Xi(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(tr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Xi(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Zn&&(e.freeBooleanPointer(),Xi(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Xi(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var sl=new PT;function Ki(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)}sl.min.set(i,s,l),sl.max.set(c,u,a),sl.getCenter(t),sl.getSize(o).multiplyScalar(.5)}var IT=new OT,CT=new AT,ot=class extends Zn{constructor(r,e){super(IT,CT),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?Ki(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 RP,Matrix4 as VP,Sphere as xy,Vector3 as jP}from"three";import{BufferAttribute as BP,Float32BufferAttribute as gy,MathUtils as Vd,Vector3 as jd}from"three";import{ShaderMaterial as SP}from"three";import{CubeReflectionMapping as zT,CubeRefractionMapping as UT,CubeUVReflectionMapping as kT,LinearEncoding as Kh,sRGBEncoding as HT}from"three";var Zi=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 NT}from"three";var Qe=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=NT.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 fd=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 fd;import{Vector2 as $h}from"three";import{MathUtils as ET}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=ET.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 Ie=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 Ie{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 Yh}from"three";var nt=class extends Ie{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Yh?e:new Yh(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 MT}from"three";var $e=class extends MT{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 Ie{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 LT=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Xh=/[a-z_0-9]+/gi,Q=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let l,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let a=[];for(;l=Xh.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=LT.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Xh);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 BT=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,md=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||md.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=BT.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=u}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},be=md;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var DT=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
+
)*?)}`,"gim"),GT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Qn=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=DT.exec(e);if(t){let o=t[2],i;for(;i=GT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Jn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};qe.addKeyword("uv",function(){return new Jn});qe.addKeyword("uv2",function(){return new Jn(1)});import{LinearEncoding as RT,sRGBEncoding as VT}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 VT: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 Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
5
|
+
`)),sRGBToLinear:new Q(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
6
|
+
`)),LinearTosRGB:new Q(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
7
|
+
`))},ft.LINEAR_TO_LINEAR="LinearToLinear",ft.SRGB_TO_LINEAR="sRGBToLinear",ft.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends Q{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as jT}from"three";var Tt=class extends Ie{constructor(e=new jT,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Jn,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new ft(new _e("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,t)}};var J=class extends Ie{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 Qi=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 hd=class extends le{constructor(e,t,o=hd.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},Pt=hd;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Ae=class extends le{constructor(e,t=Ae.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,l=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ae.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,u===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},fe=Ae;fe.RAD="radians",fe.DEG="degrees",fe.EXP="exp",fe.EXP2="exp2",fe.LOG="log",fe.LOG2="log2",fe.SQRT="sqrt",fe.INV_SQRT="inversesqrt",fe.FLOOR="floor",fe.CEIL="ceil",fe.NORMALIZE="normalize",fe.FRACT="fract",fe.SATURATE="saturate",fe.SIN="sin",fe.COS="cos",fe.TAN="tan",fe.ASIN="asin",fe.ACOS="acos",fe.ARCTAN="atan",fe.ABS="abs",fe.SIGN="sign",fe.LENGTH="length",fe.NEGATE="negate",fe.INVERT="invert",fe.MIN="min",fe.MAX="max",fe.MOD="mod",fe.STEP="step",fe.REFLECT="reflect",fe.DISTANCE="distance",fe.DOT="dot",fe.CROSS="cross",fe.POW="pow",fe.MIX="mix",fe.CLAMP="clamp",fe.REFRACT="refract",fe.SMOOTHSTEP="smoothstep",fe.FACEFORWARD="faceforward";var ei=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new Qi(ei.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new ft(new _e("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new ft(new _e("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new ft(new _e("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new ft(new _e("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new _e(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new _e(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new _e(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new _e(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new _e("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new Qi(ei.Nodes.roughnessToMip,[i]),l=new fe(s,ei.Nodes.m0,ei.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(l,fe.FLOOR),u=new fe(l,fe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new Pt(c,new J(1).setReadonly(!0),Pt.ADD)),p=new fe(a,d,u,fe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},ti=ei;ti.Nodes=function(){let e=new Qn(`struct TextureCubeUVData {
|
|
8
8
|
vec4 tl;
|
|
9
9
|
vec4 tr;
|
|
10
10
|
vec4 br;
|
|
11
11
|
vec4 bl;
|
|
12
12
|
vec2 f;
|
|
13
|
-
}`),t=new
|
|
13
|
+
}`),t=new be("float cubeUV_maxMipLevel 8.0",!0),o=new be("float cubeUV_minMipLevel 4.0",!0),i=new be("float cubeUV_maxTileSize 256.0",!0),s=new be("float cubeUV_minTileSize 16.0",!0),l=new Q(`float getFace(vec3 direction) {
|
|
14
14
|
vec3 absDirection = abs(direction);
|
|
15
15
|
float face = -1.0;
|
|
16
16
|
if (absDirection.x > absDirection.z) {
|
|
@@ -25,7 +25,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
25
25
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
26
26
|
}
|
|
27
27
|
return face;
|
|
28
|
-
}`);l.useKeywords=!1;let c=new
|
|
28
|
+
}`);l.useKeywords=!1;let c=new Q(`vec2 getUV(vec3 direction, float face) {
|
|
29
29
|
vec2 uv;
|
|
30
30
|
if (face == 0.0) {
|
|
31
31
|
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
@@ -41,7 +41,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
41
41
|
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
42
42
|
}
|
|
43
43
|
return 0.5 * (uv + 1.0);
|
|
44
|
-
}`);c.useKeywords=!1;let u=new
|
|
44
|
+
}`);c.useKeywords=!1;let u=new Q(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
45
45
|
float face = getFace(direction);
|
|
46
46
|
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
47
47
|
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
@@ -69,7 +69,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
69
69
|
uv.x -= texelSize;
|
|
70
70
|
vec4 bl = texture2D(envMap, uv);
|
|
71
71
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
72
|
-
}`,[e,l,c,t,o,i,s]);u.useKeywords=!1;let a=new
|
|
72
|
+
}`,[e,l,c,t,o,i,s]);u.useKeywords=!1;let a=new be("float r0 1.0",!0),d=new be("float v0 0.339",!0),p=new be("float m0 -2.0",!0),f=new be("float r1 0.8",!0),m=new be("float v1 0.276",!0),h=new be("float m1 -1.0",!0),y=new be("float r4 0.4",!0),g=new be("float v4 0.046",!0),v=new be("float m4 2.0",!0),w=new be("float r5 0.305",!0),S=new be("float v5 0.016",!0),b=new be("float m5 3.0",!0),T=new be("float r6 0.21",!0),_=new be("float v6 0.0038",!0),x=new be("float m6 4.0",!0),C=[a,d,p,f,m,h,y,g,v,w,S,b,T,_,x],P=new Q(`float roughnessToMip(float roughness) {
|
|
73
73
|
float mip = 0.0;
|
|
74
74
|
if (roughness >= r1) {
|
|
75
75
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -83,7 +83,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
83
83
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
84
84
|
}
|
|
85
85
|
return mip;
|
|
86
|
-
}`,
|
|
86
|
+
}`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Mo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Mo.VIEW}getShared(){return this.scope===Mo.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 Mo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Mo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Mo.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=Mo;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 vr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??vr.LOCAL}getType(){switch(this.scope){case vr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case vr.LOCAL:case vr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case vr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case vr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case vr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case vr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},Ot=vr;Ot.LOCAL="local",Ot.WORLD="world",Ot.VIEW="view",Ot.PROJECTION="projection";qe.addKeyword("position",function(){return new Ot});qe.addKeyword("worldPosition",function(){return new Ot(Ot.WORLD)});qe.addKeyword("viewPosition",function(){return new Ot(Ot.VIEW)});var rr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??rr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case rr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case rr.VECTOR:{let s=new et(et.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new Ot(Ot.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;a&&(d=`normalize( mix( ${d}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case rr.CUBE:{let s=new rr(rr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case rr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new rr(rr.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)}},br=rr;br.CUBE="cube",br.SPHERE="sphere",br.VECTOR="vector";var al=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ti(this.value,t??new br(br.VECTOR),o),this.irradianceNode=new ti(this.value,new et(et.WORLD),new J(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};import{CubeTexture as FT}from"three";var ll=class extends Ie{constructor(e=new FT,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new br,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 Zh=["x","y","z","w"],WT=["float","vec2","vec3","vec4"],qT={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},$T={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[]"},cl=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 rg=Object.create;var wl=Object.defineProperty;var og=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
|
|
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 Zi({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 Zi({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?qe.get(r):r,this.context.include===!1)return r.name;r instanceof Q?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof Qn&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof Q&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return WT[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case zT:case UT:return new ll(t);case kT:return new al(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 qT[r]||r}getFormatByType(r){return $T[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Zh[r]}getIndexByElement(r){return Zh.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=Kh,e===Kh&&this.context.gamma&&(e=HT),e}};import{Vector2 as Do,Vector3 as Tr,Vector4 as ii}from"three";var Te=class extends Ie{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 Ie{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 YT,UniformsUtils as XT}from"three";var Lo=class extends Qe{constructor(){super("basic");this.nodeType="Basic";this.color=new Te(5855577),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(XT.merge([YT.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 rg=Object.create;var wl=Object.defineProperty;var og=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
|
|
151
|
+
`)}return t}};import{UniformsLib as Qh,UniformsUtils as KT}from"three";var or=class extends Ie{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 J(1),resolution:new Je,penumbraSize:new or(5,.5)};for(let n of Object.values(it))n.isRenderGlobal=!0;var Ji=class extends Qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Te(5855577),this.emissive=new Te(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(KT.merge([Qh.fog,Qh.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 rg=Object.create;var wl=Object.defineProperty;var og=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
|
|
257
|
+
`)}return t}};import{UniformsLib as Jh,UniformsUtils as ZT}from"three";var dl=class extends Qe{constructor(){super("phong");this.nodeType="Phong";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(ZT.merge([Jh.fog,Jh.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 rg=Object.create;var wl=Object.defineProperty;var og=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
|
|
292
|
+
`)}return t}};import{UniformsLib as yd,UniformsUtils as QT}from"three";var es=class extends Qe{constructor(){super("standard");this.nodeType="Standard";this.color=new Te(5855577),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(QT.merge([yd.fog,yd.lights])),yd.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 rg=Object.create;var wl=Object.defineProperty;var og=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
|
|
326
|
+
`)}return t}};import{UniformsLib as ey,UniformsUtils as JT}from"three";var ts=class extends Qe{constructor(){super("toon");this.nodeType="Toon";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new J(30),this.shadingAlpha=new J(1),this.shadingBlend=new xe(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(JT.merge([ey.fog,ey.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 rg=Object.create;var wl=Object.defineProperty;var og=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
|
|
380
|
+
`)}return t}};var uo=class extends Ie{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 eP}from"three";var ri=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new eP}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 ty}from"three";var nr=class extends Ie{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof ty?new Array(e).fill(t):new Array(e).fill(new ty(0))}};var rs=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(rs||{}),ct=function(){let r=new Q(`vec3 random3(vec3 c) {
|
|
381
381
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
382
382
|
vec3 r;
|
|
383
383
|
r.z = fract(512.0*j);
|
|
@@ -386,7 +386,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
386
386
|
j *= .125;
|
|
387
387
|
r.y = fract(512.0*j);
|
|
388
388
|
return r-0.5;
|
|
389
|
-
}`),e=new
|
|
389
|
+
}`),e=new Q(`float simplex3d(vec3 p) {
|
|
390
390
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
391
391
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
392
392
|
|
|
@@ -417,7 +417,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
417
417
|
d *= w;
|
|
418
418
|
|
|
419
419
|
return dot(d, vec4(52.0));
|
|
420
|
-
}`,[r]);e.keywords.F3=new
|
|
420
|
+
}`,[r]);e.keywords.F3=new be("float F3 0.3333333"),e.keywords.G3=new be("float G3 0.1666667");let t=new Q(`float simplex3dFractal(vec3 m) {
|
|
421
421
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
422
422
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
423
423
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -425,7 +425,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
425
425
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
426
426
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
427
427
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
428
|
-
}`,[e]),o=new
|
|
428
|
+
}`,[e]),o=new Q("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new Q("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new Q(`float simplexAshima(vec3 v) {
|
|
429
429
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
430
430
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
431
431
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -470,7 +470,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
470
470
|
m = m * m;
|
|
471
471
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
472
472
|
dot(p2,x2), dot(p3,x3) ) );
|
|
473
|
-
}`,[o,i]),l=new
|
|
473
|
+
}`,[o,i]),l=new Q("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new Q("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),u=new Q(`float noise(vec3 p){
|
|
474
474
|
vec3 a = floor(p);
|
|
475
475
|
vec3 d = p - a;
|
|
476
476
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -485,7 +485,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
485
485
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
486
486
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
487
487
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
488
|
-
}`,[c]),a=new
|
|
488
|
+
}`,[c]),a=new Q(`float fbm(vec3 x) {
|
|
489
489
|
float v = 0.0;
|
|
490
490
|
float a = 0.5;
|
|
491
491
|
vec3 shift = vec3(100);
|
|
@@ -495,7 +495,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
495
495
|
a *= 0.5;
|
|
496
496
|
}
|
|
497
497
|
return v;
|
|
498
|
-
}`,[u]);a.keywords.NUM_OCTAVES=new
|
|
498
|
+
}`,[u]);a.keywords.NUM_OCTAVES=new be(`int NUM_OCTAVES ${5}`);let d=new Q("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new Q(`float perlin(vec3 P){
|
|
499
499
|
vec3 Pi0 = floor(P);
|
|
500
500
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
501
501
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -554,7 +554,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
554
554
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
555
555
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
556
556
|
return 2.2 * n_xyz;
|
|
557
|
-
}`,[o,i,d]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p}}();var
|
|
557
|
+
}`,[o,i,d]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p}}();var os=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=u,this.colorC=a,this.colorD=d,this.alpha=p,this.noiseType=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(rs)[this.noiseType.value],c=new Q(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
|
|
558
558
|
vec3 st = position / size;
|
|
559
559
|
st /= scale;
|
|
560
560
|
vec3 q = vec3(${l}(st),
|
|
@@ -574,14 +574,14 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
574
574
|
|
|
575
575
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
576
576
|
return clamp(color, 0.0, 1.0).rgb;
|
|
577
|
-
}`,[ct.simplex,ct.simplexFractal,ct.simplexAshima,ct.fbm,ct.perlin]),u=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(u+"("+a.join(",")+")",this.getType(e),t)}};
|
|
577
|
+
}`,[ct.simplex,ct.simplexFractal,ct.simplexAshima,ct.fbm,ct.perlin]),u=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(u+"("+a.join(",")+")",this.getType(e),t)}};os.numOctaves=5;var gd=class extends le{constructor(e,t,o,i,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(gd.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),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("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ns=gd;ns.Nodes=function(){return{fresnel:new Q(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
578
578
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
579
579
|
|
|
580
580
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
581
581
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
582
582
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
583
583
|
return color;
|
|
584
|
-
}`)}}();var
|
|
584
|
+
}`)}}();var xd=class extends le{constructor(e,t,o,i,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(xd.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},is=xd;is.Nodes=function(){let e=new Q(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
585
585
|
vec3 st = position / noiseScale;
|
|
586
586
|
vec3 q = vec3(simplex3d(st),
|
|
587
587
|
simplex3d(st + vec3(1.0)),
|
|
@@ -594,7 +594,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
594
594
|
float noise = simplex3d(st + r);
|
|
595
595
|
|
|
596
596
|
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
597
|
-
}`,[ct.simplex]);return{rainbow:new
|
|
597
|
+
}`,[ct.simplex]);return{rainbow:new Q(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
598
598
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
599
599
|
|
|
600
600
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -603,7 +603,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
603
603
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
604
604
|
|
|
605
605
|
return res;
|
|
606
|
-
}`,[e])}}();var
|
|
606
|
+
}`,[e])}}();var vd=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=a,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
607
607
|
vID = randomColor.r;
|
|
608
608
|
if (${s}) {
|
|
609
609
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -617,7 +617,7 @@ var rg=Object.create;var wl=Object.defineProperty;var og=Object.getOwnPropertyDe
|
|
|
617
617
|
// if this offset is the biggest of all the potential offsets
|
|
618
618
|
gl_Position = ${c}_clipPosition;
|
|
619
619
|
}
|
|
620
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
620
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(vd.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ss=vd;ss.Nodes=function(){let e=new Q(`
|
|
621
621
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
622
622
|
{
|
|
623
623
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -718,7 +718,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
718
718
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
719
719
|
return edgeNormal;
|
|
720
720
|
}
|
|
721
|
-
`);return{outline:new
|
|
721
|
+
`);return{outline:new Q(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
|
|
722
722
|
vec3 result = outlineColor;
|
|
723
723
|
float resultAlpha = 0.0;
|
|
724
724
|
|
|
@@ -757,11 +757,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
757
757
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
758
758
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
759
759
|
return result;
|
|
760
|
-
}`,[e])}}();var
|
|
760
|
+
}`,[e])}}();var bd=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(bd.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},as=bd;as.Nodes=function(){let e=new Q(`
|
|
761
761
|
float gaussian(vec2 i) {
|
|
762
762
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
763
763
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
764
|
-
}`),t=new
|
|
764
|
+
}`),t=new Q(`
|
|
765
765
|
vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
766
766
|
// Slightly modified version of this:
|
|
767
767
|
// https://www.shadertoy.com/view/ltScRG
|
|
@@ -791,7 +791,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
791
791
|
a += gaussian;
|
|
792
792
|
}
|
|
793
793
|
return O / a;
|
|
794
|
-
}`,[e]),o=new
|
|
794
|
+
}`,[e]),o=new Q(`
|
|
795
795
|
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
796
796
|
// Direction of refracted light.
|
|
797
797
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
@@ -802,18 +802,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
802
802
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
803
803
|
// The thickness is specified in local space.
|
|
804
804
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
805
|
-
}`),i=new
|
|
805
|
+
}`),i=new Q(`
|
|
806
806
|
float applyIorToRoughness( float roughness, float ior ) {
|
|
807
807
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
808
808
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
809
809
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
810
|
-
} `),s=new
|
|
810
|
+
} `),s=new Q(`
|
|
811
811
|
vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
812
812
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
813
813
|
float lod = applyIorToRoughness(roughness, ior);
|
|
814
814
|
|
|
815
815
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
816
|
-
}`,[i,t]),l=new
|
|
816
|
+
}`,[i,t]),l=new Q(`
|
|
817
817
|
vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
818
818
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
819
819
|
vec3 refractedRayExit = position + transmissionRay;
|
|
@@ -831,7 +831,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
831
831
|
|
|
832
832
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
833
833
|
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
834
|
-
}`,[s,o]);return{transmission:new
|
|
834
|
+
}`,[s,o]);return{transmission:new Q(`
|
|
835
835
|
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
836
836
|
vec3 v = vec3(0.);
|
|
837
837
|
if (isOrthographic) {
|
|
@@ -845,7 +845,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
845
845
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
846
846
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
847
847
|
return transmission;
|
|
848
|
-
}`,[l])}}();var
|
|
848
|
+
}`,[l])}}();var oi=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=u,this.colors=a,this.steps=d,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Q(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
849
849
|
vec4 color = colors[0];
|
|
850
850
|
#ifdef ${o}_IS_VECTOR
|
|
851
851
|
#ifdef ${o}_LINEAR
|
|
@@ -885,25 +885,25 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
885
885
|
|
|
886
886
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
887
887
|
return color.rgb;
|
|
888
|
-
}`,[
|
|
888
|
+
}`,[oi.Nodes.vectorLinearWorldSpaceDepth,oi.Nodes.vectorLinearObjectSpaceDepth,oi.Nodes.vectorSphericalObjectSpaceDepth,oi.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=oi;ls.Nodes=function(){let e=new Q(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
889
889
|
vec3 n = normalize(direction);
|
|
890
890
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
891
891
|
return ( dist - near ) / ( far - near );
|
|
892
|
-
}`),t=new
|
|
892
|
+
}`),t=new Q(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
893
893
|
vec3 n = normalize(direction);
|
|
894
894
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
895
895
|
return ( dist - near ) / ( far - near );
|
|
896
|
-
}`),o=new
|
|
896
|
+
}`),o=new Q(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
897
897
|
float dist = length(vWPosition - origin);
|
|
898
898
|
return ( dist - near ) / ( far - near );
|
|
899
|
-
}`),i=new
|
|
899
|
+
}`),i=new Q(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
900
900
|
float dist = length(position - origin);
|
|
901
901
|
return ( dist - near ) / ( far - near );
|
|
902
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
902
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var cs=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Sd=(e=>(e.NOISE="noise",e.MAP="map",e))(Sd||{}),wd=class extends le{constructor(e,t,o,i,s){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Sd)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ri(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Sd)[this.displacementTypeIndex.value]){case"map":{o=e.include(wd.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let l=Object.values(rs)[this.noiseFunctionIndex.value],c=new Q(`vec3 orthogonal(vec3 v) {
|
|
903
903
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
904
|
-
}`),u=new
|
|
904
|
+
}`),u=new Q(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
905
905
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
906
|
-
}`,[ct.simplex,ct.simplexFractal,ct.simplexAshima,ct.fbm,ct.perlin]),a=new
|
|
906
|
+
}`,[ct.simplex,ct.simplexFractal,ct.simplexAshima,ct.fbm,ct.perlin]),a=new Q(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
907
907
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
908
908
|
vec3 tangent1 = orthogonal(normal);
|
|
909
909
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -919,9 +919,9 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
919
919
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
920
920
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
921
921
|
return displaced_position;
|
|
922
|
-
}`,[u,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},
|
|
922
|
+
}`,[u,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ds=wd;ds.Nodes=function(){let e=new Q(`vec3 orthogonal(vec3 v) {
|
|
923
923
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
924
|
-
}`),t=new
|
|
924
|
+
}`),t=new Q(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
925
925
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
926
926
|
vec4 tmp = texture2D(tex, uvs);
|
|
927
927
|
vec3 col = tmp.rgb;
|
|
@@ -931,7 +931,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
931
931
|
}
|
|
932
932
|
}
|
|
933
933
|
return col.r;
|
|
934
|
-
}`);return{map:new
|
|
934
|
+
}`);return{map:new Q(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
935
935
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
936
936
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
937
937
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -941,7 +941,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
941
941
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
942
942
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
943
943
|
return displaced_position;
|
|
944
|
-
}`,[e,t])}}();var
|
|
944
|
+
}`,[e,t])}}();var _d=class extends le{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(_d.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},us=_d;us.Nodes=function(){return{gradient:new Q(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
945
945
|
vec4 color = colors[0];
|
|
946
946
|
vec2 m = morph / vUv.xy;
|
|
947
947
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -983,7 +983,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
983
983
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
984
984
|
|
|
985
985
|
return color.xyz;
|
|
986
|
-
}`)}}();var
|
|
986
|
+
}`)}}();var fs=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.mat=u,this.alpha=a,this.mode=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(fs.Nodes.cylindrical);break;case 2:i=e.include(fs.Nodes.spherical);break;case 1:let l=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=new Q(`
|
|
987
987
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
988
988
|
|
|
989
989
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -1002,7 +1002,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
1002
1002
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1003
1003
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1004
1004
|
return col;
|
|
1005
|
-
}`);i=e.include(c);break;default:i=e.include(
|
|
1005
|
+
}`);i=e.include(c);break;default:i=e.include(fs.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}},ps=fs;ps.Nodes=function(){let e=new Q(`
|
|
1006
1006
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1007
1007
|
vec3 posN = normalize(position);
|
|
1008
1008
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -1032,7 +1032,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
|
|
|
1032
1032
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1033
1033
|
return col;
|
|
1034
1034
|
}
|
|
1035
|
-
`),t=new
|
|
1035
|
+
`),t=new Q(`
|
|
1036
1036
|
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1037
1037
|
vec3 posN = normalize(vPosition);
|
|
1038
1038
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -1060,7 +1060,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1060
1060
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1061
1061
|
return col;
|
|
1062
1062
|
}
|
|
1063
|
-
`),o=new
|
|
1063
|
+
`),o=new Q(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1064
1064
|
|
|
1065
1065
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1066
1066
|
vec4 tmp = texture2D( tex, uvs );
|
|
@@ -1076,14 +1076,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1076
1076
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1077
1077
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1078
1078
|
return col;
|
|
1079
|
-
}`);return{cylindrical:e,spherical:t,uv:o}}();var
|
|
1079
|
+
}`);return{cylindrical:e,spherical:t,uv:o}}();var Td=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t}generate(e,t){if(e.isShader("fragment")){let o=e.include(Td.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ms=Td;ms.Nodes=function(){return{customNormal:new Q(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
1080
1080
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
1081
1081
|
normal *= step( vec3(0.5), cnormal );
|
|
1082
1082
|
|
|
1083
1083
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1084
1084
|
|
|
1085
1085
|
return normal;
|
|
1086
|
-
}`)}}();import{Vector2 as
|
|
1086
|
+
}`)}}();import{Vector2 as hs,Vector3 as wr,Vector4 as ul}from"three";function mt(n,r){return r.color(n)}function ry(n,r){switch(n.type){case"fresnel":return oP(n,r);case"gradient":return nP(n);case"depth":return iP(n);case"normal":return sP(n);case"noise":return aP(n,r);case"rainbow":return lP(n);case"toon":return cP(n,r);case"outline":return dP(n,r);case"transmission":return uP(n,r);case"color":return rP(n,r)}}function tP(n){return{type:n.type}}function _r(n){let{alpha:r,mode:e}=n;return{...tP(n),alpha:r,mode:e}}function rP(n,r){return{..._r(n),color:mt(n.color,r)}}function oP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{..._r(n),color:mt(s,r),bias:e,scale:t,intensity:o,factor:i}}function nP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{..._r(n),gradientType:r,smooth:e,colors:t.map(c=>new ul(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new hs(...s),morph:new hs(...l),angle:i}}function iP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{..._r(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new wr(...s),direction:l?new wr(...l):new wr(1,0,0),colors:c.map(d=>d!==void 0?new ul(d[0],d[1],d[2],d[3]):new ul(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function sP(n){let{cnormal:r}=n;return{..._r(n),cnormal:new wr(r[0],r[1],r[2])}}function aP(n,r){return{..._r(n),scale:n.scale,move:n.move,fA:new hs(...n.fA),fB:new hs(...n.fB),size:new wr(...n.size),distortion:new hs(...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 lP(n){return{..._r(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new wr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new wr(...n.offset)}}function cP(n,r){return{..._r(n),positioning:n.positioning,colors:n.colors.map(e=>new ul(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new wr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:mt(n.shadowColor,r),offset:new wr(...n.offset)}}function dP(n,r){return{..._r(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 wr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function uP(n,r){return{..._r(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var po=class extends $e{};import{Vector4 as mP}from"three";import{VideoTexture as pP,Texture as fP}from"three";var pl=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 pl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Pd;function oy(n){return typeof n=="string"?n:(Pd||(Pd=new Od),Pd.load(n))}var fl=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},ml=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var ni=class extends fl{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=oy(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new pP(this.img,void 0,e,e):o=new fP(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var Ft=class extends ni{};var fo=class extends Ie{};var Ad={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Id={depth:["colors"]};function hP(n,r,e){let t=Ad[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 Cd(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 ny(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Nd(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 fo))switch(o=o||hP(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 po?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 po?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:{Cd(s,r,e);break}case nr:{l.value=s.map(c=>new mP(...c));break}default:{l.value=s;break}}}return o}var Ed=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(Ed.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)}},ys=Ed;ys.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1087
1087
|
vec3 viewDir = normalize( vViewPosition );
|
|
1088
1088
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1089
1089
|
vec3 y = cross( viewDir, x );
|
|
@@ -1095,14 +1095,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1095
1095
|
|
|
1096
1096
|
return matcapColor.rgb;
|
|
1097
1097
|
}
|
|
1098
|
-
`)}}();var
|
|
1098
|
+
`)}}();var Bo=class extends fo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as yP}from"three";var hl=class extends fo{constructor(e){super("v3");this.image=e;this._value=new yP}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 Md=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(Md.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)}},gs=Md;gs.Nodes=function(){let e=new Q(`float rand(float n) {
|
|
1099
1099
|
return fract(sin(n) * 43758.5453123);
|
|
1100
|
-
}`),t=new
|
|
1100
|
+
}`),t=new Q(`float hash1(float p) {
|
|
1101
1101
|
p = fract(p * 0.011);
|
|
1102
1102
|
p *= p + 7.5;
|
|
1103
1103
|
p *= p + p;
|
|
1104
1104
|
return fract(p);
|
|
1105
|
-
}`),o=new
|
|
1105
|
+
}`),o=new Q(`float valueNoise(vec3 x) {
|
|
1106
1106
|
const vec3 step = vec3(110, 241, 171);
|
|
1107
1107
|
|
|
1108
1108
|
vec3 i = floor(x);
|
|
@@ -1117,13 +1117,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1117
1117
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1118
1118
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1119
1119
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1120
|
-
}`,[t]),i=new
|
|
1120
|
+
}`,[t]),i=new Q(`vec3 hash3(vec3 x) {
|
|
1121
1121
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1122
1122
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1123
1123
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1124
1124
|
|
|
1125
1125
|
return fract(sin(x)*43758.5453123);
|
|
1126
|
-
}`),s=new
|
|
1126
|
+
}`),s=new Q(`vec3 voronoiNoise(in vec3 x)
|
|
1127
1127
|
{
|
|
1128
1128
|
vec3 p = floor(x);
|
|
1129
1129
|
vec3 f = fract(x);
|
|
@@ -1154,7 +1154,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1154
1154
|
|
|
1155
1155
|
return vec3(sqrt(res), abs(id));
|
|
1156
1156
|
}
|
|
1157
|
-
`,[i]);return{toon:new
|
|
1157
|
+
`,[i]);return{toon:new Q(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
|
|
1158
1158
|
float t = 0.0;
|
|
1159
1159
|
float shadow = 1.0;
|
|
1160
1160
|
|
|
@@ -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 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 wr=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 _r.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 Mo(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 Bo(t.size[0],t.size[1]):new Bo(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 Mo(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 Sr(...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 wr{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 wr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},_r=class extends wr{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 Lo,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 _r(e,t,o,s,u)}get category(){return this.node.category}};function kT(n){let r=n instanceof wr?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 Sr(0,0,0)),l=new Q(t.noiseStrength??0),c=new Q(t.noiseScale??1),u=new nt(t.offset??new Sr(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 Sr(0,0,0)),c=new ao(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 Sr(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 Sr(0,1,0)),f=new ao(t.positionalLines??!1),m=new ao(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 ao(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 Sr),d=new nt(t.direction??new Sr),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 Sr(100,100,100)),s=new Q(t.move??1),l=new Je(t.fA??new Bo(1.7,9.2)),c=new Je(t.fB??new Bo(8.3,2.8)),u=new Je(t.distortion??new Bo(1,1)),a=new jt(t.colorA),d=new jt(t.colorB),p=new jt(t.colorC),f=new jt(t.colorD),m=new 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 Sr(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 ao(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 Bo(0,0)),u=new Je(t.morph??new Bo(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=>wr.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 _r),this.lightLayer===void 0&&(this.lightLayer=new _r(0,"",{...pt.defaultData("light","phong"),visible:!1},new Lo,{})),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=wr.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=wr.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 _r);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 _r);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 Mo&&!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 Do=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 Go=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src: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 Ro,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 Ro(P.x,P.y)))}}return v}function l(h,y,g){let v=new Ro;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 Ro;h.boundingBox.getCenter(b);let S=[new Ro(g,b.y),new Ro(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 Ro(b,v),new Ro(w,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new 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
|
-
`,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],
|
|
1336
|
-
`:x.unicode?String.fromCharCode(x.unicode):void 0,
|
|
1337
|
-
`)
|
|
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):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},fs=class extends fd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Co(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var 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)}},Vo=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 Do(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Ft(_a.emptyImage,this);this.deletedVideo=new Ft(Jo.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Do(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new 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 lo(e.r,e.g,e.b,e.a):this.colors[r]=new lo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new $e(0,0,0,0))}else return"a"in r?new $e(r.r,r.g,r.b,r.a):new $e(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Go)return e;{let t=new Go({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Go&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new 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 Go&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},qh=new Vo(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 Do||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 Vo){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return 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=Co(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&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=Co(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 Tr=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 jo=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;Tr.setFromBufferAttribute(t),Tr.getCenter(o),e.boundingSphere.radius=o.distanceTo(Tr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Tr.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;Tr.min.set(e[0],e[2],e[4]),Tr.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Tr.min.applyMatrix4(this.shearScaleInv),Tr.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Yh);let o=t.boundingSphere.center;Tr.getCenter(o),t.boundingSphere.radius=o.distanceTo(Tr.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 Uo}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 Uo,nl=new Uo,hO=new Uo,yO=new Uo;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 Uo,sl=new Uo,Fo=new Uo;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(Fo),!(isNaN(Fo.x)||isNaN(Fo.y)||isNaN(Fo.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(Fo).toArray();y===u&&!g&&(v=[f,m,m],w=p),y===a&&!g&&(v=[p,m,m],w=f),y===d&&!g&&(v=[p,f,f],w=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:w,norm: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(Fo);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:Fo.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)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(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,Or,dy,uy,py,ly=new Mt,cy=new Mt;kn.then(n=>{Or=n,dy=[Or.get_face_center,Or.get_edge_midpoint,Or.get_vertex_position],uy=[Or.get_face_normal,Or.get_edge_normal,Or.get_vertex_normal],py=[Or.face_count,Or.edge_count,Or.vertex_count]});var _O=new ko,TO=new ko,uo=new Mt,zo=new Mt,ys=new Mt,bd=new Mt,OO=new Mt,AO=new Mt;var jr=new ry,ai=class extends Cn(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 Gr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Gr&&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 Gr(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 Gr(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";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=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?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;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?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 jo&&ys.applyMatrix4(_O.copy(this.objectForSample.matrixWorld).invert())),ys.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(ys),uo.fromArray(h);let x=t.align==="normal"?bd:this.object.getWorldDirection(AO),P=zo.fromArray(t.position);zo.x+=zo.x+c(g,fe(b,i.position[0])),zo.y+=zo.y+c(g,fe(b,i.position[1])),zo.z+=zo.z+c(g,fe(b,i.position[2]));let O=Math.acos(x.dot(uo)),I=OO.crossVectors(uo,x).normalize(),T=TO.makeRotationAxis(I,O),N=x.clone().cross(this.object.up).normalize(),L=N.clone().cross(x).normalize(),U=new ko().makeBasis(N,x,L),K=new Mt(uo.y,uo.z,uo.x).normalize(),J=K.clone().cross(uo).normalize(),ie=new ko().makeBasis(K,uo,J).invert(),z=new ko().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 jo){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=To(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 ko,this.hiddenMatrix=new ko,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as 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 Ar=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 Fr}from"three";var al=new IO,Sd=new CO,fy=new NO,Pr=(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 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 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 Ar(_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){Pr(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 po=(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,Ur=class extends po(VO,cl){constructor(e="",t={...rn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=xo.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 Pn(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 po(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 Ur;var wy=n=>dl.is(n);import{Group as WO}from"three";import{AxesHelper as HO}from"three";var fo=class extends Ar(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){Pr(this.object,fo.geometryHelper,e,t)}update(){}};var vs=class extends po(WO,fo){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 Ar(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){Pr(this.object,di.geometryHelper,e,t)}};import{PointLightHelper as $O}from"three";var ui=class extends Ar($O){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Pr(this.object,ui.geometryHelper,e,t)}};import{SpotLightHelper as YO,Vector3 as XO}from"three";var ul=class extends Ar(YO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Pr(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 zr=class extends po(nA,fo){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&&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 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=on.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?Cr.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 jo(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 zr(n,r,e):Wt.is(r.type)?new Ur(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 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=Zo(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(!1)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=Zo(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(Ad.PERSONAL_CAMERA_ID,{...rn.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 mo;function wA(){return mo||(mo=new SA,mo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),mo.decoderPending}async function _A(n){if(mo){let r={attributeIDs:mo.defaultAttributeIDs,attributeTypes:mo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await mo.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 B9}from"three";import{mergeBufferGeometries as R9}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 Vo(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};
|
|
1334
|
+
}`,[ct.simplex,e,o,s])}}();import{Matrix3 as gP}from"three";function iy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var yl=class extends ri{constructor(e,t){super(new gP);this.repeat=e;this.offset=t;iy(this.value,e,t)}updateMatrix(){iy(this.value,this.repeat,this.offset)}};var Pr=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)Nd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Or.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 hl(i),c=new yl(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),a=new xe(t.projection??0),d=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new Je(t.size?new Do(t.size[0],t.size[1]):new Do(100,100)),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new ps(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new ke(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Bo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new xe(t.mode??0),u=new ys(s,l,c),a=new _e(u.calpha,"f");return new ke(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new nt(new Tr(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new xe(t.noiseType??0),a=new ds(l,c,i,s,u);return new xs(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return bP(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):ny(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Cd(o.props,t.shared,this):!0;return!1}dispose(){if(xP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Ft||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},ke=class extends Pr{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}},xs=class extends Pr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Or=class extends Pr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Lo,u={};else if(o.category==="lambert"){s=new Ji;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new ts;let a=new J(o.shininess??30),d=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new es;let a=new J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new dl;let a=new J(o.shininess??30),d=new Te(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Or(e,t,o,s,u)}get category(){return this.node.category}};function xP(n){let r=n instanceof Pr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function vP(n,r,e,t){switch(n.type){case"color":{let o=new Te(t.color??5855577),i=new J(t.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(t.mode??0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new xe(t.mode??0),d=new ns(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new ke(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new nt(t.wavelengths??new Tr(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new nt(t.offset??new Tr(0,0,0)),a=new J(t.alpha??1),d=new is(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new ke(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=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 J(t.alpha??1),m=new as(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new nr(t.colors.length,t.colors):(i=new nr(10,new ii(0,0,0,1)),i.value[1]=new ii(1,1,1,1));let s;t.steps?s=new or(t.steps.length,t.steps):(s=new or(10,1),s.value[0]=0);let l=new nt(t.source??new Tr(0,0,0)),c=new uo(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new jt(t.shadowColor),p=new nt(t.offset??new Tr(0,0,0)),f=new J(t.alpha??1),m=new gs(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new ke(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Te(t.outlineColor??16777215),i=new Te(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new nt(t.contourDirection??new Tr(0,1,0)),f=new uo(t.positionalLines??!1),m=new uo(t.compensation??!0),h=it.normalRenderTarget,y=it.normalRenderTargetDepth,g=it.pixelRatioNode,v=it.resolution,w=new J(t.alpha??1),S=new ss(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,w),b=new _e(S.calpha,"f"),T=new xe(t.mode??0);return new ke(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,alpha:w,mode:T},S,T,b)}case"depth":{let o=new xe(t.gradientType??0),i=new uo(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new nt(t.origin??new Tr),d=new nt(t.direction??new Tr),p;t.colors?p=new nr(t.colors.length,t.colors):(p=new nr(2,new ii(0,0,0,1)),p.value[1]=new ii(1,1,1,1));let f;t.steps?f=new or(t.steps.length,t.steps):(f=new or(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new xe(t.mode??0),y=new ls(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new nt(t.size??new Tr(100,100,100)),s=new J(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 J(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new os(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new ke(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new nt(t.cnormal??new Tr(1,1,1)),i=new J(t.alpha??1),s=new xe(t.mode??0),l=new ms(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ke(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new uo(t.smooth??!1),s;t.colors?s=new nr(t.colors.length,t.colors):(s=new nr(10,new ii(0,0,0,1)),s.value[1]=new ii(1,1,1,1));let l;t.steps?l=new or(t.steps.length,t.steps):(l=new or(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 J(t.angle??0),d=new J(t.alpha??1),p=new xe(t.mode??0),f=new us(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new ke(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Te(1,0,0,1),i=new J(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new ke(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function bP(n,r,e,t){let o=ry(e,t);return vP(e,n,r,o)}function Nd(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 sy(n,r){let e=0;for(let t of n.layers)if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"){let o=t.data.visible?t.data.alpha:0;if(o==1&&t.data.type=="depth"||t.data.type=="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o==1&&t.data.type=="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}return e<1}var At=class extends SP{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}},Ld=class extends At{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},si=class extends At{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new Ld(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=>Pr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=sy(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 Or),this.lightLayer===void 0&&(this.lightLayer=new Or(0,"",{...pt.defaultData("light","phong"),visible:!1},new Lo,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(this.data=t,this.transparent=sy(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=Pr.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=Pr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}blendColors(){let e=this.layers.findIndex(o=>o instanceof ke),t=this.layers.findIndex(o=>o instanceof Or);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof ke&&(o=new cs(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 Or);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ke&&(e=new cs(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 xs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Pt(t,e[o].position,Pt.ADD),t=new Pt(t,new J(.5).setReadonly(!0),Pt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Ad[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 cl;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof ke){let t=e.params.texture;if(t instanceof Bo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(At.prototype,{properties:{get:function(){return this.fragment.properties}}});var Go=class extends si{};var dy=Fl(ay());var ly=new Map;function cy(n){if(typeof n=="string")return n;let r=ly.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},ly.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:cy(r),format:"wav"},this.sound=new dy.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 wP,Vector2 as Vo,Path as uy,Shape as _P,ShapeUtils as TP,Color as PP}from"three";var xl=class{constructor(){this.type="ShapePath";this.color=new PP;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new uy,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,v){let w=h.x,S=y.x,b=g.x,T=v.x,_=h.y,x=y.y,C=g.y,P=v.y,I=(T-b)*(_-C)-(P-C)*(w-b),A=(S-w)*(_-C)-(x-_)*(w-b),O=(P-C)*(S-w)-(T-b)*(x-_),V=I/O,z=A/O;if(O===0&&I!==0||V<=0||V>=1||z<0||z>1)return null;if(I===0&&O===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(w+t.t*(S-w)).toPrecision(10),K=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:K,t:t.t}}return null}else{for(let K=0;K<2;K++)if(i(K===0?g:v,h,y),t.loc===e.ORIGIN){let q=K===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(w+V*(S-w)).toPrecision(10),te=+(_+V*(x-_)).toPrecision(10);return{x:$,y:te,t:V}}}function i(h,y,g){let v=g.x-y.x,w=g.y-y.y,S=h.x-y.x,b=h.y-y.y,T=v*b-S*w;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*S<0||w*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+w*w)<Math.sqrt(S*S+b*b)){t.loc=e.BEYOND;return}let _;v!==0?_=S/v:_=b/w,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let w=1;w<h.length;w++){let S=h[w-1],b=h[w];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],C=o(S,b,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new Vo(C.x,C.y)))}}return v}function l(h,y,g){let v=new Vo;y.getCenter(v);let w=[];return g.forEach(S=>{S.boundingBox.containsPoint(v)&&s(h,S.points).forEach(T=>{w.push({identifier:S.identifier,isCW:S.isCW,point:T})})}),w.sort((S,b)=>S.point.x-b.point.x),w}function c(h,y,g,v,w){(w==null||w==="")&&(w="nonzero");let S=new Vo;h.boundingBox.getCenter(S);let b=[new Vo(g,S.y),new Vo(v,S.y)],T=l(b,h.boundingBox,y);T.sort((A,O)=>A.point.x-O.point.x);let _=[],x=[];T.forEach(A=>{A.identifier===h.identifier?_.push(A):x.push(A)});let C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;if(P.push(h.identifier),w==="evenodd"){let A=P.length%2===0,O=P[P.length-2];return{identifier:h.identifier,isHole:A,for:O}}else if(w==="nonzero"){let A=!0,O=null,V=null;for(let z=0;z<P.length;z++){let $=P[z];y[$]&&(A?(V=y[$].isCW,A=!1,O=$):V!==y[$].isCW&&(V=y[$].isCW,A=!0))}return{identifier:h.identifier,isHole:A,for:O}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,w=-999999999,S=999999999;for(let b=0;b<y.length;b++){let T=y[b];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>w&&(w=T.x),T.x<S&&(S=T.x)}d<=w&&(d=w+1),a>=S&&(a=S-1),y.length&&p.push({curves:h.curves,points:y,isCW:TP.isClockWise(y),identifier:u++,boundingBox:new wP(new Vo(S,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 _P;g.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let S=p[w.identifier],b=new uy;b.curves=S.curves,g.holes.push(b)}}),m.push(g)}}),m}};var fy,Bd=new Promise(n=>{fy=n}),py=!1;async function my(){if(py)return;let n=await import("./opentype.js");fy(n),py=!0}var vs=class{async load(r,e,t=()=>{}){let{load:o}=await Bd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Bd;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 OP(n){return await(await fetch(n)).arrayBuffer()}var AP=new vs;async function Dd(n){let r,e,t=!1;if(n.url?(r=await OP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await AP.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as IP,LineCurve as CP,QuadraticBezierCurve as NP}from"three";function EP(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var vl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Dd(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=Dd(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(EP(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
|
+
`,e),u=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(v=>[]),h=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let w=r[v],S={features:{liga:!0}},b=[];try{b=t.stringToGlyphs(w,S)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,w,c);let T=[];try{T=this.reverseLigaturesTable(t,w,b)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<b.length;_++){let x=b[_],C=x.index===0?`
|
|
1336
|
+
`:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],I=0,A=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(A=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),d+=A+I;let O=0;if(C===`
|
|
1337
|
+
`)O=u;else if(C===" ")O=a;else{let V=this.createPath(x,o,d,p,e);V&&(O=V.offsetX-(I+A),f.push(V.path))}if(P.replacements.length===1)h[v].push([d,p]),m[v].push(O);else{let V=P.replacements.map(K=>(t.glyphs.get(K).advanceWidth??0)*o),z=V.reduce((K,q)=>K+=q,0),$=V.map(K=>K/z),te=d;for(let K=0;K<$.length;K++){let q=O*$[K];h[v].push([te,p]),m[v].push(q),te+=q}}d+=O,y=x}p-=i}let g=[];for(let v=0,w=f.length;v<w;v++)g.push(...f[v].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
|
|
1338
|
+
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new xl,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=MP(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 MP(n){if(n.length){let r=n[0];if(r instanceof CP)return r.v1;if(r instanceof IP||r instanceof NP)return r.v0}}var Gd=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},bs=class extends Gd{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 hy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Rd=class extends ml{constructor(e){super();this.shared=e}create(e){return new ni(e,this.shared)}},jo=class{constructor(r,e={}){this.geometryCache=new bs(!0);this.geometryCache2=new bs(!1);this.imageHolderCache=new Rd(this);this.thisContext={scene:hy,shared:this};this.deletedMaterial=new Go(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Ft(La.emptyImage,this);this.deletedVideo=new Ft(tn.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 si(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new Ft(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new Ft(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new po(e.r,e.g,e.b,e.a):this.colors[r]=new po(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 vl(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()}},yy=new jo(ia.emptyData());var ir=class extends ot{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),au(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(Wt(e.path,["material"])&&this.material instanceof At)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(tt.drop(e,1),t.material,o);else if(Wt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(tt.drop(e,2),s,o)}}}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene?.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene?.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene?.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&na(this.material).forEach(e=>{e instanceof At&&(e instanceof Go||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as LP}from"three";var st=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof LP&&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 Oi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Oi.is2DParametricMesh(this.geometry.userData.type)}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Wt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(tt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let a={...this.data.geometry,...i};this.localGeometry=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&&$i(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)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Ei(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Fe&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function DP(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new jd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new jd})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new gy(i,3))}function GP(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new jd;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new gy(t,3))}function ai(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof At)||n.material.getLayersOfType("outline").length===0)return;n instanceof st&&n.is2DAndNoDepth?GP(n):DP(n)}function li(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Vd.seededRandom(o),Vd.seededRandom(o+1e4),Vd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new BP(t,3))}var FP;Yn.then(n=>{FP=n});var Ar=new RP,Ss=new jP;function vy(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 st{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new VP;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Fe.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,ai(this),li(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,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 xy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Ar.setFromBufferAttribute(t),Ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ar.getSize(Ss),this.hasNonUniformScale&&Ss.divide(this.scale);let i={width:Ss.x,height:Ss.y,depth:Ss.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Ar.min.set(e[0],e[2],e[4]),Ar.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Ar.min.applyMatrix4(this.shearScaleInv),Ar.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new xy);let o=t.boundingSphere.center;Ar.getCenter(o),t.boundingSphere.radius=o.distanceTo(Ar.max)}freeSubdivPointer(){this.subdivPointer&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};import{Triangle as zP,Vector3 as Uo}from"three";var by=-1,UP=1,Sy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},wy={polygon_center:0,edge:1,vertex:2},ws=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-by)*(e-t)/(UP-by)+t};function _y(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 kP=new Uo,bl=new Uo,HP=new Uo,WP=new Uo;function ci(n,r){let e=HP.fromArray(n),t=WP.fromArray(r);bl.copy(t).sub(e);let o=bl.length();return bl.normalize().multiplyScalar(o*.5),kP.copy(e).add(bl).toArray()}var zt=new zP,Sl=new Uo,wl=new Uo,zo=new Uo;function Ty(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Sl.fromArray(n.index.array,e*3),zt.setFromAttributeAndIndices(n.attributes.position,Sl.x,Sl.y,Sl.z),zt.getNormal(wl),zt.getMidpoint(zo),!(isNaN(zo.x)||isNaN(zo.y)||isNaN(zo.z))){let{a:t,b:o,c:i}=zt,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ci(s,l),f=ci(l,c),m=ci(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(S=>Math.round(S)===Math.round(y)).length>1,v=[],w=zt.getMidpoint(zo).toArray();y===u&&!g&&(v=[f,m,m],w=p),y===a&&!g&&(v=[p,m,m],w=f),y===d&&!g&&(v=[p,f,f],w=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:w,norm:zt.getNormal(wl).toArray()})}return r}function Py(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){zt.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),zt.getNormal(wl),zt.getMidpoint(zo);let o=zt.a.toArray(),i=zt.b.toArray(),s=zt.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ci(o,i),ci(i,s),ci(s,o)],midpoint:zo.toArray(),norm:wl.toArray()})}return r}var qP=4,$P=.5,Fd=n=>.5*(1-Math.cos(n*Math.PI)),zd=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<qP;g++){let v=o+(i<<4)+(s<<8);a=Fd(l),d=Fd(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+=Fd(u)*(h-m),p+=m*f,f*=$P,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()}},Oy=zd;import{Vector3 as YP,Matrix4 as XP,Ray as KP}from"three";var Ay=new YP,Iy=new XP,Cy=new KP;function Ny(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var di=class extends st{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Iy.copy(o).invert(),Cy.copy(e.ray).applyMatrix4(Iy),Cy.intersectBox(this.singleBBox,Ay))){let i=Ay.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var ht=1e-4,Ir,By,Dy,Gy,My=new Lt,Ly=new Lt;Yn.then(n=>{Ir=n,By=[Ir.get_face_center,Ir.get_edge_midpoint,Ir.get_vertex_position],Dy=[Ir.get_face_normal,Ir.get_edge_normal,Ir.get_vertex_normal],Gy=[Ir.face_count,Ir.edge_count,Ir.vertex_count]});var QP=new Ho,JP=new Ho,mo=new Lt,ko=new Lt,_s=new Lt,kd=new Lt,eO=new Lt,tO=new Lt;var kr=new Oy,pi=class extends Mn(ZP){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof Fr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Fr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new Fr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new Fr(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Ey.DEG2RAD,i=t.end*Ey.DEG2RAD,s=o-i,l=new Ud(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Lt(0,0,1);break;case"y":c=new Lt(0,1,0);break;default:case"x":c=new Lt(1,0,0);break}let u=e.randomnessObject??fr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";kr.noiseSeed(u.seed);let d=Ba((0,ui.default)(u.seed)),p=ws(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?kr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||ht,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||ht,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||ht,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,u.position[0])),m.position.y+=t.position[1]+p(f,me(y,u.position[1])),m.position.z+=t.position[2]+p(f,me(y,u.position[2]));let v=p(f,me(y,u.rotation[0])),w=p(f,me(y,u.rotation[1])),S=p(f,me(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+w,m.rotation.z+=l.z+S):m.rotation.set(l.x+v,l.y+w,l.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ud(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??fr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";kr.noiseSeed(i.seed);let l=Ba((0,ui.default)(i.seed)),c=ws(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?kr.noise(d):l(d,d),f=c(u,me(p,i.rotation[0])),m=c(u,me(p,i.rotation[1])),h=c(u,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,me(p,i.scale[0]))||ht,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||ht,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||ht,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,me(p,i.position[0])),a.position.y=t.position[1]*u+c(u,me(p,i.position[1])),a.position.z=t.position[2]*u+c(u,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??fr.defaultData([1,1,1]).randomnessObject,s=ws(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";kr.noiseSeed(i.seed);let c=wm((0,ui.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new Lt(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?kr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||ht,y.scale.y=1+s(t,me(h,i.scale[1]))||ht,y.scale.z=1+s(t,me(h,i.scale[2]))||ht;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),w=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,w),y.position.x=o.size[0]*d-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,me(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?kr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||ht,m.scale.y=1+s(t,me(f,i.scale[1]))||ht,m.scale.z=1+s(t,me(f,i.scale[2]))||ht;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ud(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??fr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";kr.noiseSeed(i.seed);let l=Ba((0,ui.default)(i.seed)),c=ws(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof di)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.object.parent===this.objectForSample){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,w=g.map(T=>T[0]).reduce((T,_)=>T+_,0),S=g.map(T=>T[1]).reduce((T,_)=>T+_,0),b=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[w/v,S/v,b/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(w=>p(g.pos[0])===p(w.pos[0])&&p(g.pos[1])===p(w.pos[1])&&p(g.pos[2])===p(w.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(w=>w.norm))}):a.push(g)});let f=_y(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Da(this.objectForSample).build(),h=Sy[t.axis],y=this.children;m.setRandomGenerator((0,ui.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let w=g*(i.freqScale/10)+i.movement,S=s?kr.noise(w):l(w,w),b=c(g,me(S,i.rotation[0])),T=c(g,me(S,i.rotation[1])),_=c(g,me(S,i.rotation[2]));t.spreadType==="random"?m.sample(_s,kd):(f.length&&(_s.fromArray(f[g].pos),kd.fromArray(f[g].norm)),this.objectForSample instanceof Fo&&_s.applyMatrix4(QP.copy(this.objectForSample.matrixWorld).invert())),_s.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(_s),mo.fromArray(h);let x=t.align==="normal"?kd:this.object.getWorldDirection(tO),C=ko.fromArray(t.position);ko.x+=ko.x+c(g,me(S,i.position[0])),ko.y+=ko.y+c(g,me(S,i.position[1])),ko.z+=ko.z+c(g,me(S,i.position[2]));let P=Math.acos(x.dot(mo)),I=eO.crossVectors(mo,x).normalize(),A=JP.makeRotationAxis(I,P),O=x.clone().cross(this.object.up).normalize(),V=O.clone().cross(x).normalize(),z=new Ho().makeBasis(O,x,V),$=new Lt(mo.y,mo.z,mo.x).normalize(),te=$.clone().cross(mo).normalize(),K=new Ho().makeBasis($,mo,te).invert(),q=new Ho().multiplyMatrices(z,K);v.rotation.setFromRotationMatrix(q),C.applyMatrix4(A),v.position.add(C),v.rotation.x=v.rotation.x+o.x+b,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(S,i.scale[0]))||ht,v.scale.y=v.scale.y+t.scale[1]+c(g,me(S,i.scale[1]))||ht,v.scale.z=v.scale.z+t.scale[2]+c(g,me(S,i.scale[2]))||ht,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Fo){let t=this.objectForSample,o=wy[e],i=Gy[o],s=By[o],l=Dy[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);My.fromArray(d).applyMatrix4(t.matrixWorld),Ly.fromArray(p),c.push({pos:My.toArray(),norm:Ly.toArray()})}return c}else return(this.objectForSample.geometry.index?Ty(this.objectForSample.geometry):Py(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=Vr(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof 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 kO,Scene as HO,Vector3 as WO,Fog as qO,Box3 as $O,MeshBasicMaterial as YO}from"three";import{Camera as fO,OrthographicCamera as Fy,PerspectiveCamera as mO,Vector3 as kt,Object3D as zy,Quaternion as hO}from"three";import{Camera as aO,LineSegments as lO,BufferGeometry as cO,LineBasicMaterial as dO,Color as Wd,Vector3 as uO,Float32BufferAttribute as Vy}from"three";import{BoxGeometry as rO}from"three";var Cr=n=>{var r;return r=class extends n{},r.geometryHelper=new rO(30,30,30),r};import{Ray as oO,Sphere as nO,Matrix4 as iO,Vector3 as Hr}from"three";var _l=new oO,Hd=new nO,Ry=new iO,Nr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Hd.copy(i.boundingSphere),Hd.applyMatrix4(s),e.ray.intersectsSphere(Hd)===!1||(Ry.copy(s).invert(),_l.copy(e.ray).applyMatrix4(Ry),i.boundingBox!==null&&_l.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,_l,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,w=new Hr,S=new Hr,b=new Hr,T=new Hr,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),A=Math.min(v.count,f.start+f.count);for(let O=I,V=A-1;O<V;O+=_){if(w.fromBufferAttribute(v,O),S.fromBufferAttribute(v,O+1),_l.distanceSqToSegment(w,S,T,b)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,w,S,b,T,_){let x=new Hr,C=new Hr,P=new Hr,I=new Hr,A=new Hr;if(x.fromBufferAttribute(S,b),C.fromBufferAttribute(S,T),P.fromBufferAttribute(S,_),w.intersectTriangle(x,C,P,!1,I)===null)return null;A.copy(I),A.applyMatrix4(g.matrixWorld);let V=v.ray.origin.distanceTo(A);return V<v.near||V>v.far?null:{faceIndex:1,distance:V,point:A.clone(),object:g}}};var Tl=new uO,Ut=new aO,qd=class extends lO{constructor(e){let t=new cO,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 Vy(i,3)),t.setAttribute("color",new Vy(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;Ut.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;sr("n1",t,e,Ut,-i,-s,l),sr("n2",t,e,Ut,i,-s,l),sr("n3",t,e,Ut,-i,s,l),sr("n4",t,e,Ut,i,s,l);let c=l;sr("f1",t,e,Ut,-i,-s,c),sr("f2",t,e,Ut,i,-s,c),sr("f3",t,e,Ut,-i,s,c),sr("f4",t,e,Ut,i,s,c);let u=c,a=.5;sr("u1",t,e,Ut,i*.7*a,s*1.1,u),sr("u2",t,e,Ut,-i*.7*a,s*1.1,u),sr("u3",t,e,Ut,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,r,e,t,o,i,s){Tl.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],Tl.x,Tl.y,Tl.z)}}var Pl=class extends Cr(qd){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){Nr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as jy,BoxGeometry as pO}from"three";var Ol;(r=>r.is=e=>"objectHelper"in e)(Ol||(Ol={}));var ho=(n,r)=>class extends ja(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 jy&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof pO?(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 jy&&(i.visible=!1)}}};var $d=790,fi=new kt,Yd=new kt,Wr=class extends ho(fO,Pl){constructor(e="",t={...sn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=So.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??$d,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new Fy(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new Fy(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new mO(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new kt(e,t,o)),super.lookAt(e),this.getWorldPosition(fi),this.targetOffset=fi.distanceTo(e)}getTarget(e=new kt){return this.getWorldDirection(Yd),this.getWorldPosition(fi),Yd.multiplyScalar(this.targetOffset),e.copy(fi).add(Yd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(fi),fi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new hO),t=new kt(0,0,1).applyQuaternion(e),o=new kt().copy(zy.DEFAULT_UP);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new kt().copy(zy.DEFAULT_UP).projectOnPlane(t),s=new kt().crossVectors(i,o).dot(t)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new kt),i=e.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new kt),i=this.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??$d,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:$d},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Nn(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{BufferGeometry as Uy,Float16BufferAttribute as yO,Matrix4 as gO}from"three";var ky=new gO;var Ht=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Uy;this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof Ht&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof 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=tr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof Ht&&s.needsTransformForDownstream===!0?(tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(ky.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),tr.transformMeshSet(s.booleanMeshSetAddress,ky),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new yO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return tr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Uy,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=tr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,ai(this),li(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as xO}from"three";var Hy;(r=>{function n(e){return Be.is(e)&&e instanceof xO}r.is=n})(Hy||(Hy={}));var mi=(n,r)=>class extends ho(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 Ts=n=>n instanceof ot,Ps=n=>n!==null&&n instanceof Ht,Wy=n=>n instanceof Wr;var qy=n=>Ol.is(n);import{Group as bO}from"three";import{AxesHelper as vO}from"three";var yo=class extends Cr(vO){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){Nr(this.object,yo.geometryHelper,e,t)}update(){}};var Os=class extends ho(bO,yo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as PO,CameraHelper as $y}from"three";import{DirectionalLightHelper as SO}from"three";var hi=class extends Cr(SO){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,hi.geometryHelper,e,t)}};import{PointLightHelper as wO}from"three";var yi=class extends Cr(wO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,yi.geometryHelper,e,t)}};import{SpotLightHelper as _O,Vector3 as TO}from"three";var Al=class extends Cr(_O){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,Al.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Al._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)}}},As=Al;As._vector=new TO;function OO(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 Il=class extends mi(PO,hi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new $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&&OO(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 AO,Vector3 as Cl,Box3 as IO,Box3Helper as Yy,Color as CO}from"three";var Nl=class extends mi(AO,yi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new Cl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Cl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new IO(s,l),u=new Yy(c,new CO(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 Yy){let t=this.shadow.camera,o=new Cl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Cl(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 NO,CameraHelper as Xy,MathUtils as EO,Vector3 as Jy,Quaternion as MO}from"three";var Ky=new Jy,Zy=new Jy,Qy=new MO,El=class extends mi(NO,As){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=EO.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new Xy(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 Xy&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Zy.setFromMatrixPosition(this.matrixWorld),Qy.setFromRotationMatrix(this.matrixWorld),Ky.copy(this.up).applyQuaternion(Qy).negate().multiplyScalar(this.distance),this.target.position.copy(Zy).add(Ky),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 Ml=class extends st{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Ki(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var gi=class extends st{constructor(e,t,o){super(e,t,o);this._shapeId=null;this.snappedEntities=new Set;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape(),this.updateSnappedEntities(t)}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=tl;break;case"Ellipse":i=Un;break;case"Polygon":i=el;break;case"Star":i=rl;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}updateSnappedEntities(e){this.snappedEntities.forEach(t=>{t.updatePathSnapping(e.scene)})}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e),this.updateSnappedEntities(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Ki(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as LO}from"three";var qr=class extends ho(LO,yo){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of Jr.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of Jr.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Be.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Ll(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&tg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Ll(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)Be.is(e)&&Ll(e)}}function eg(n,r,e,t){return n.component===r&&Ei(n.identity,t)?n.overrideData===e?2:1:0}function tg(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof qr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Be.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=an.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Be.is(m)?m:null,p!==null){let h=eg(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=eg(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?Mr.apply(u.data,d):u.data;$t.is(m.type)&&(m={...m,type:"Empty"}),p=Xt.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,tg(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Be.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function BO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new di(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Fo(n,r,e):r.geometry.type==="PathGeometry"?t=new gi(n,r,e):r.geometry.type==="VectorGeometry"?t=new Ml(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Ht(n,r,e):t=new st(n,r,e),t)}function Bl(n,r,e){return r.type==="Mesh"?BO(n,r,e):r.type==="Empty"?new Os(n,r):r.type==="PointLight"?new Nl(n,r,e):r.type==="SpotLight"?new El(n,r,e):r.type==="DirectionalLight"?new Il(n,r,e):r.type==="Component"||r.type==="Instance"?new qr(n,r,e):$t.is(r.type)?new Wr(n,r):(console.error(r),new Os(n,r))}Xt.createEntity=Bl;function DO(n,r,e){let t=Bl(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Xt.changeEntityProptotype=DO;Xt.Cloner=pi;function rg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as RO,Ray as VO,Raycaster as jO}from"three";function og(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,li(n),ai(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function ng(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 ig(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)og(e,e.material[t])&&(r=!0);else og(e,e.material)&&(r=!0)}),r}function sg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)ng(e,e.material[t])&&(r=!0);else ng(e,e.material)&&(r=!0)}),r}var FO=new jO,zO=new RO,UO=new VO;function ag(n,r,e){let t=n.cloner;if(t)for(let o of t.children){let i=zO.copy(o.matrixWorld).invert(),s=UO.copy(r.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=FO;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 XO=new YO;XO.wireframe=!0;var lg=new WO,Xd=class extends HO{constructor(e,t){super();this.data=e;this.backupFog=new qO(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.bgColor=new $e(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.needsRecomputeInstances=!1;this.ambientLight=new kO(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=sg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=ig(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)=>Fu(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),Ts(i)&&Ps(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),Ps(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ts(o)&&(o.freeBooleanPointer(),i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof gi&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),Ts(o)&&(o.invalidateUpstreamBooleanData(),Ps(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0&&(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props)){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}let s=this.find(e);if(s)try{rg(s,t,o,{scene:this,shared:i}),s instanceof st&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(mt(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Wr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Ps(o)&&o.recomputeBoolean()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Be.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Be.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=Jo(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...na(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;dt.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof qr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Jo(s.data,l=>{l.events.delete(i.id)}).data)}):i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof qr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Ll(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof qr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Zt(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Wr(Xd.PERSONAL_CAMERA_ID,{...sn.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)Zt(s)&&!s.raycastLock&&s.visible&&((Ts(s)||qy(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ag(s,e,t)),o(s))};return o(this),t}forEachEntity(e){for(let t of this.children)Zt(t)&&e(t)}traverseEntity(e){for(let t of this.children)Zt(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Di.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Zt(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=Bl(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 st&&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 $O;return o.setFromPoints(t),o.getCenter(lg),lg}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 At&&e(t.material[o]);else t.material instanceof At&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Cs=Xd;Cs.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as KO}from"three/examples/jsm/loaders/DRACOLoader.js";var go;function ZO(){return go||(go=new KO,go.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),go.decoderPending}async function QO(n){if(go){let r={attributeIDs:go.defaultAttributeIDs,attributeTypes:go.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await go.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 cg(n,r){let[e,t]=$l(Ys.deserialize(new Uint8Array(n)));xm(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 ZO();for(let i of o){let s=await QO(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 YY}from"three";import{mergeBufferGeometries as ZY}from"three/examples/jsm/utils/BufferGeometryUtils.js";function dg(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 ug,ShaderLib as JO}from"three";function pg(n){let r=new Set;return n.traverse(e=>{if(e instanceof ir)if(Ve(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(eA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new ug,specularColor:new ug});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},JO.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 tA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function eA(n){return n.getLayersOfType("transmission").length>0}function tA(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 fg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function mg(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 rA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function hg(n){let r=[];return n.traverse(e=>{e instanceof pi&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&dg(c),c}),s=rA(e.parameters.hideBase?i:[t instanceof ot?t.geometry:[],...i]);t instanceof ot&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:yy})}),n}function yg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function gg(n){Object.values(n.shared.materials).forEach(r=>{Kd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Kd(e.material):"materials"in e&&e.materials.forEach(t=>{Kd(t)})})}function Kd(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 xg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Zd=class extends nA{load(r,e,t,o=console.error){let i=new oA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(xg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(xg),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 cg(r,gg);await Promise.all([vy(e)&&Rh(),Ny(e)&&my()].filter(Boolean));let t=new jo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Cs(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&&Wy(s)&&Object.assign(s,{makeDefault:!0})}return o=hg(o),o=pg(o),o=fg(o),o=mg(o),o=yg(o),o}};export{Zd as default};
|