@splinetool/loader 0.9.390 → 0.9.392

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- var F0=Object.create;var xc=Object.defineProperty;var k0=Object.getOwnPropertyDescriptor;var U0=Object.getOwnPropertyNames;var H0=Object.getPrototypeOf,W0=Object.prototype.hasOwnProperty;var sa=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),q0=(n,r)=>{for(var e in r)xc(n,e,{get:r[e],enumerable:!0})},$0=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of U0(r))!W0.call(n,o)&&o!==e&&xc(n,o,{get:()=>r[o],enumerable:!(t=k0(r,o))||t.enumerable});return n};var aa=(n,r,e)=>(e=n!=null?F0(H0(n)):{},$0(r||!n||!n.__esModule?xc(e,"default",{value:n,enumerable:!0}):e,n));var bh=sa((Jc,vh)=>{(function(n,r){typeof Jc=="object"?vh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Jc,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 a=r();t=a(" "),o=a(" "),i=a(" ");for(var c=0;c<e.length;c++)t-=a(e[c]),t<0&&(t+=1),o-=a(e[c]),o<0&&(o+=1),i-=a(e[c]),i<0&&(i+=1);a=null;var u=function(){var l=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=l-(s=l|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,s=+l[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var 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 Th=sa((gl,Ph)=>{(function(n,r){typeof gl=="object"&&typeof Ph<"u"?r(gl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(gl,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,a,c,u,l,d,p,f,m,h,y,g,x=r[0].length,b=r.length;if(b<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],P=[],_=e==="f"?b:x,v=h=p=0;v<b;v++)S[v]=new Array(_).fill(0);for(v=0;v<x;v++)P[v]=new Array(x).fill(0);var N,T=new Array(x).fill(0);for(v=0;v<b;v++)for(s=0;s<x;s++)S[v][s]=r[v][s];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,s=v;s<b;s++)m+=Math.pow(S[s][v],2);if(m<i)p=0;else for(f=(d=S[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v]=d-p,s=c;s<x;s++){for(m=0,a=v;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(T[v]=p,m=0,s=c;s<x;s++)m+=Math.pow(S[v][s],2);if(m<i)p=0;else{for(f=(d=S[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v+1]=d-p,s=c;s<x;s++)w[s]=S[v][s]/f;for(s=c;s<b;s++){for(m=0,a=c;a<x;a++)m+=S[s][a]*S[v][a];for(a=c;a<x;a++)S[s][a]=S[s][a]+m*w[a]}}h<(y=Math.abs(T[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=S[v][v+1]*p,s=c;s<x;s++)P[s][v]=S[v][s]/f;for(s=c;s<x;s++){for(m=0,a=c;a<x;a++)m+=S[v][a]*P[a][s];for(a=c;a<x;a++)P[a][s]=P[a][s]+m*P[a][v]}}for(s=c;s<x;s++)P[v][s]=0,P[s][v]=0;P[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<b;v++){for(s=x;s<b;s++)S[v][s]=0;S[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=T[v],s=c;s<_;s++)S[v][s]=0;if(p!==0){for(f=S[v][v]*p,s=c;s<_;s++){for(m=0,a=c;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(s=v;s<b;s++)S[s][v]=S[s][v]/p}else for(s=v;s<b;s++)S[s][v]=0;S[v][v]=S[v][v]+1}}for(o*=h,a=x-1;0<=a;a--)for(var C=0;C<50;C++){for(N=!1,c=a;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(T[c-1])<=o)break}if(!N){for(l=0,u=c-(m=1),v=c;v<a+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=T[v],T[v]=Math.sqrt(d*d+p*p),l=p/(f=T[v]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][v],S[s][u]=y*l+g*m,S[s][v]=-y*m+g*l}if(g=T[a],c===a){if(g<0&&(T[a]=-g,t))for(s=0;s<x;s++)P[s][a]=-P[s][a];break}for(h=T[c],d=(((y=T[a-1])-g)*(y+g)+((p=w[a-1])-(f=w[a]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,v=c+(m=l=1);v<a+1;v++){if(p=w[v],y=T[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(s=0;s<x;s++)h=P[s][v-1],g=P[s][v],P[s][v-1]=h*l+g*m,P[s][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(T[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(s=0;s<b;s++)y=S[s][v-1],g=S[s][v],S[s][v-1]=y*l+g*m,S[s][v]=-y*m+g*l}w[c]=0,w[a]=d,T[a]=h}for(v=0;v<x;v++)T[v]<o&&(T[v]=0);return{u:S,q:T,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var yg=sa(Zl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<l._howls.length;b++)l._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),b=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=b*1e3/Math.abs(y._rate),S=p._sprite[l][0]/1e3,P=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=S,y._stop=P,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=P){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,b):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var T=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var C=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||C)T();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",T(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,b=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,b=Math.abs(x/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var P=(Date.now()-S)/f;S=Date.now(),g+=x*P,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),b=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=b*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var b=function(){l._playLock?setTimeout(b,0):x()};setTimeout(b,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);a(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Zl<"u"&&(Zl.Howler=r,Zl.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 a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._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")a._orientation=[r,e,t,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return a},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 a=t._soundById(i[s]);if(a)if(typeof r=="number")a._stereo=r,a._pos=[r,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(r,0,0):a._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",a._id);else return a._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),a=0;a<s.length;a++){var c=i._soundById(s[a]);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),a=0;a<s.length;a++){var c=i._soundById(s[a]);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),a=0;a<s.length;a++)if(i=r._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var I0=sa((qJ,N0)=>{N0.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),a=Number(o[i]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0}});import{FileLoader as YC,Loader as XC}from"three";function Hu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Jt(n,r){return Object.setPrototypeOf(n,r),n}function la(n){return Array.isArray(n)?n:[n]}function Wu(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 Y0=typeof global=="object"&&global&&global.Object===Object&&global,ca=Y0;var X0=typeof self=="object"&&self&&self.Object===Object&&self,K0=ca||X0||Function("return this")(),$e=K0;var Z0=$e.Symbol,et=Z0;var qu=Object.prototype,Q0=qu.hasOwnProperty,J0=qu.toString,es=et?et.toStringTag:void 0;function ex(n){var r=Q0.call(n,es),e=n[es];try{n[es]=void 0;var t=!0}catch{}var o=J0.call(n);return t&&(r?n[es]=e:delete n[es]),o}var $u=ex;var tx=Object.prototype,rx=tx.toString;function ox(n){return rx.call(n)}var Yu=ox;var nx="[object Null]",ix="[object Undefined]",Xu=et?et.toStringTag:void 0;function sx(n){return n==null?n===void 0?ix:nx:Xu&&Xu in Object(n)?$u(n):Yu(n)}var Vt=sx;function ax(n){return n!=null&&typeof n=="object"}var ct=ax;var lx="[object Symbol]";function cx(n){return typeof n=="symbol"||ct(n)&&Vt(n)==lx}var fn=cx;function dx(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var da=dx;var ux=Array.isArray,je=ux;var px=1/0,Ku=et?et.prototype:void 0,Zu=Ku?Ku.toString:void 0;function Qu(n){if(typeof n=="string")return n;if(je(n))return da(n,Qu)+"";if(fn(n))return Zu?Zu.call(n):"";var r=n+"";return r=="0"&&1/n==-px?"-0":r}var Ju=Qu;function fx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var zt=fx;function mx(n){return n}var ep=mx;var hx="[object AsyncFunction]",yx="[object Function]",gx="[object GeneratorFunction]",xx="[object Proxy]";function vx(n){if(!zt(n))return!1;var r=Vt(n);return r==yx||r==gx||r==hx||r==xx}var ua=vx;var bx=$e["__core-js_shared__"],pa=bx;var tp=function(){var n=/[^.]+$/.exec(pa&&pa.keys&&pa.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Sx(n){return!!tp&&tp in n}var rp=Sx;var wx=Function.prototype,_x=wx.toString;function Px(n){if(n!=null){try{return _x.call(n)}catch{}try{return n+""}catch{}}return""}var kr=Px;var Tx=/[\\^$.*+?()[\]{}|]/g,Ox=/^\[object .+?Constructor\]$/,Ax=Function.prototype,Cx=Object.prototype,Nx=Ax.toString,Ix=Cx.hasOwnProperty,Mx=RegExp("^"+Nx.call(Ix).replace(Tx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ex(n){if(!zt(n)||rp(n))return!1;var r=ua(n)?Mx:Ox;return r.test(kr(n))}var op=Ex;function Lx(n,r){return n?.[r]}var np=Lx;function Dx(n,r){var e=np(n,r);return op(e)?e:void 0}var Ct=Dx;var Bx=Ct($e,"WeakMap"),fa=Bx;var ip=Object.create,Rx=function(){function n(){}return function(r){if(!zt(r))return{};if(ip)return ip(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),sp=Rx;function Gx(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 ap=Gx;function Vx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var lp=Vx;var zx=800,jx=16,Fx=Date.now;function kx(n){var r=0,e=0;return function(){var t=Fx(),o=jx-(t-e);if(e=t,o>0){if(++r>=zx)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var cp=kx;function Ux(n){return function(){return n}}var dp=Ux;var Hx=function(){try{var n=Ct(Object,"defineProperty");return n({},"",{}),n}catch{}}(),mn=Hx;var Wx=mn?function(n,r){return mn(n,"toString",{configurable:!0,enumerable:!1,value:dp(r),writable:!0})}:ep,up=Wx;var qx=cp(up),pp=qx;function $x(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var fp=$x;var Yx=9007199254740991,Xx=/^(?:0|[1-9]\d*)$/;function Kx(n,r){var e=typeof n;return r=r??Yx,!!r&&(e=="number"||e!="symbol"&&Xx.test(n))&&n>-1&&n%1==0&&n<r}var hn=Kx;function Zx(n,r,e){r=="__proto__"&&mn?mn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ma=Zx;function Qx(n,r){return n===r||n!==n&&r!==r}var yn=Qx;var Jx=Object.prototype,ev=Jx.hasOwnProperty;function tv(n,r,e){var t=n[r];(!(ev.call(n,r)&&yn(t,e))||e===void 0&&!(r in n))&&ma(n,r,e)}var gn=tv;function rv(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var a=r[i],c=t?t(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?ma(e,a,c):gn(e,a,c)}return e}var yr=rv;var mp=Math.max;function ov(n,r,e){return r=mp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=mp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),ap(n,this,a)}}var hp=ov;var nv=9007199254740991;function iv(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=nv}var xn=iv;function sv(n){return n!=null&&xn(n.length)&&!ua(n)}var ha=sv;var av=Object.prototype;function lv(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||av;return n===e}var vn=lv;function cv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var yp=cv;var dv="[object Arguments]";function uv(n){return ct(n)&&Vt(n)==dv}var vc=uv;var gp=Object.prototype,pv=gp.hasOwnProperty,fv=gp.propertyIsEnumerable,mv=vc(function(){return arguments}())?vc:function(n){return ct(n)&&pv.call(n,"callee")&&!fv.call(n,"callee")},bn=mv;function hv(){return!1}var xp=hv;var Sp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vp=Sp&&typeof module=="object"&&module&&!module.nodeType&&module,yv=vp&&vp.exports===Sp,bp=yv?$e.Buffer:void 0,gv=bp?bp.isBuffer:void 0,xv=gv||xp,Bo=xv;var vv="[object Arguments]",bv="[object Array]",Sv="[object Boolean]",wv="[object Date]",_v="[object Error]",Pv="[object Function]",Tv="[object Map]",Ov="[object Number]",Av="[object Object]",Cv="[object RegExp]",Nv="[object Set]",Iv="[object String]",Mv="[object WeakMap]",Ev="[object ArrayBuffer]",Lv="[object DataView]",Dv="[object Float32Array]",Bv="[object Float64Array]",Rv="[object Int8Array]",Gv="[object Int16Array]",Vv="[object Int32Array]",zv="[object Uint8Array]",jv="[object Uint8ClampedArray]",Fv="[object Uint16Array]",kv="[object Uint32Array]",Le={};Le[Dv]=Le[Bv]=Le[Rv]=Le[Gv]=Le[Vv]=Le[zv]=Le[jv]=Le[Fv]=Le[kv]=!0;Le[vv]=Le[bv]=Le[Ev]=Le[Sv]=Le[Lv]=Le[wv]=Le[_v]=Le[Pv]=Le[Tv]=Le[Ov]=Le[Av]=Le[Cv]=Le[Nv]=Le[Iv]=Le[Mv]=!1;function Uv(n){return ct(n)&&xn(n.length)&&!!Le[Vt(n)]}var wp=Uv;function Hv(n){return function(r){return n(r)}}var Sn=Hv;var _p=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ts=_p&&typeof module=="object"&&module&&!module.nodeType&&module,Wv=ts&&ts.exports===_p,bc=Wv&&ca.process,qv=function(){try{var n=ts&&ts.require&&ts.require("util").types;return n||bc&&bc.binding&&bc.binding("util")}catch{}}(),Ur=qv;var Pp=Ur&&Ur.isTypedArray,$v=Pp?Sn(Pp):wp,ya=$v;var Yv=Object.prototype,Xv=Yv.hasOwnProperty;function Kv(n,r){var e=je(n),t=!e&&bn(n),o=!e&&!t&&Bo(n),i=!e&&!t&&!o&&ya(n),s=e||t||o||i,a=s?yp(n.length,String):[],c=a.length;for(var u in n)(r||Xv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||hn(u,c)))&&a.push(u);return a}var ga=Kv;function Zv(n,r){return function(e){return n(r(e))}}var xa=Zv;var Qv=xa(Object.keys,Object),Tp=Qv;var Jv=Object.prototype,eb=Jv.hasOwnProperty;function tb(n){if(!vn(n))return Tp(n);var r=[];for(var e in Object(n))eb.call(n,e)&&e!="constructor"&&r.push(e);return r}var Op=tb;function rb(n){return ha(n)?ga(n):Op(n)}var wn=rb;function ob(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Ap=ob;var nb=Object.prototype,ib=nb.hasOwnProperty;function sb(n){if(!zt(n))return Ap(n);var r=vn(n),e=[];for(var t in n)t=="constructor"&&(r||!ib.call(n,t))||e.push(t);return e}var Cp=sb;function ab(n){return ha(n)?ga(n,!0):Cp(n)}var _n=ab;var lb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,cb=/^\w*$/;function db(n,r){if(je(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||fn(n)?!0:cb.test(n)||!lb.test(n)||r!=null&&n in Object(r)}var Np=db;var ub=Ct(Object,"create"),Hr=ub;function pb(){this.__data__=Hr?Hr(null):{},this.size=0}var Ip=pb;function fb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Mp=fb;var mb="__lodash_hash_undefined__",hb=Object.prototype,yb=hb.hasOwnProperty;function gb(n){var r=this.__data__;if(Hr){var e=r[n];return e===mb?void 0:e}return yb.call(r,n)?r[n]:void 0}var Ep=gb;var xb=Object.prototype,vb=xb.hasOwnProperty;function bb(n){var r=this.__data__;return Hr?r[n]!==void 0:vb.call(r,n)}var Lp=bb;var Sb="__lodash_hash_undefined__";function wb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Hr&&r===void 0?Sb:r,this}var Dp=wb;function Pn(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])}}Pn.prototype.clear=Ip;Pn.prototype.delete=Mp;Pn.prototype.get=Ep;Pn.prototype.has=Lp;Pn.prototype.set=Dp;var Sc=Pn;function _b(){this.__data__=[],this.size=0}var Bp=_b;function Pb(n,r){for(var e=n.length;e--;)if(yn(n[e][0],r))return e;return-1}var so=Pb;var Tb=Array.prototype,Ob=Tb.splice;function Ab(n){var r=this.__data__,e=so(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Ob.call(r,e,1),--this.size,!0}var Rp=Ab;function Cb(n){var r=this.__data__,e=so(r,n);return e<0?void 0:r[e][1]}var Gp=Cb;function Nb(n){return so(this.__data__,n)>-1}var Vp=Nb;function Ib(n,r){var e=this.__data__,t=so(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var zp=Ib;function Tn(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])}}Tn.prototype.clear=Bp;Tn.prototype.delete=Rp;Tn.prototype.get=Gp;Tn.prototype.has=Vp;Tn.prototype.set=zp;var ao=Tn;var Mb=Ct($e,"Map"),lo=Mb;function Eb(){this.size=0,this.__data__={hash:new Sc,map:new(lo||ao),string:new Sc}}var jp=Eb;function Lb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Fp=Lb;function Db(n,r){var e=n.__data__;return Fp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var co=Db;function Bb(n){var r=co(this,n).delete(n);return this.size-=r?1:0,r}var kp=Bb;function Rb(n){return co(this,n).get(n)}var Up=Rb;function Gb(n){return co(this,n).has(n)}var Hp=Gb;function Vb(n,r){var e=co(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Wp=Vb;function On(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])}}On.prototype.clear=jp;On.prototype.delete=kp;On.prototype.get=Up;On.prototype.has=Hp;On.prototype.set=Wp;var Ro=On;var zb="Expected a function";function wc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(zb);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(wc.Cache||Ro),e}wc.Cache=Ro;var qp=wc;var jb=500;function Fb(n){var r=qp(n,function(t){return e.size===jb&&e.clear(),t}),e=r.cache;return r}var $p=Fb;var kb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ub=/\\(\\)?/g,Hb=$p(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(kb,function(e,t,o,i){r.push(o?i.replace(Ub,"$1"):t||e)}),r}),Yp=Hb;function Wb(n){return n==null?"":Ju(n)}var Xp=Wb;function qb(n,r){return je(n)?n:Np(n,r)?[n]:Yp(Xp(n))}var qt=qb;var $b=1/0;function Yb(n){if(typeof n=="string"||fn(n))return n;var r=n+"";return r=="0"&&1/n==-$b?"-0":r}var uo=Yb;function Xb(n,r){r=qt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[uo(r[e++])];return e&&e==t?n:void 0}var va=Xb;function Kb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var An=Kb;var Kp=et?et.isConcatSpreadable:void 0;function Zb(n){return je(n)||bn(n)||!!(Kp&&n&&n[Kp])}var Zp=Zb;function Qp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Zp),o||(o=[]);++i<s;){var a=n[i];r>0&&e(a)?r>1?Qp(a,r-1,e,t,o):An(o,a):t||(o[o.length]=a)}return o}var Jp=Qp;function Qb(n){var r=n==null?0:n.length;return r?Jp(n,1):[]}var ef=Qb;function Jb(n){return pp(hp(n,void 0,ef),n+"")}var ba=Jb;var eS=xa(Object.getPrototypeOf,Object),Cn=eS;var tS="[object Object]",rS=Function.prototype,oS=Object.prototype,tf=rS.toString,nS=oS.hasOwnProperty,iS=tf.call(Object);function sS(n){if(!ct(n)||Vt(n)!=tS)return!1;var r=Cn(n);if(r===null)return!0;var e=nS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&tf.call(e)==iS}var rf=sS;function aS(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var of=aS;function lS(){this.__data__=new ao,this.size=0}var nf=lS;function cS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var sf=cS;function dS(n){return this.__data__.get(n)}var af=dS;function uS(n){return this.__data__.has(n)}var lf=uS;var pS=200;function fS(n,r){var e=this.__data__;if(e instanceof ao){var t=e.__data__;if(!lo||t.length<pS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Ro(t)}return e.set(n,r),this.size=e.size,this}var cf=fS;function Nn(n){var r=this.__data__=new ao(n);this.size=r.size}Nn.prototype.clear=nf;Nn.prototype.delete=sf;Nn.prototype.get=af;Nn.prototype.has=lf;Nn.prototype.set=cf;var In=Nn;function mS(n,r){return n&&yr(r,wn(r),n)}var df=mS;function hS(n,r){return n&&yr(r,_n(r),n)}var uf=hS;var hf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pf=hf&&typeof module=="object"&&module&&!module.nodeType&&module,yS=pf&&pf.exports===hf,ff=yS?$e.Buffer:void 0,mf=ff?ff.allocUnsafe:void 0;function gS(n,r){if(r)return n.slice();var e=n.length,t=mf?mf(e):new n.constructor(e);return n.copy(t),t}var yf=gS;function xS(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 gf=xS;function vS(){return[]}var Sa=vS;var bS=Object.prototype,SS=bS.propertyIsEnumerable,xf=Object.getOwnPropertySymbols,wS=xf?function(n){return n==null?[]:(n=Object(n),gf(xf(n),function(r){return SS.call(n,r)}))}:Sa,Mn=wS;function _S(n,r){return yr(n,Mn(n),r)}var vf=_S;var PS=Object.getOwnPropertySymbols,TS=PS?function(n){for(var r=[];n;)An(r,Mn(n)),n=Cn(n);return r}:Sa,wa=TS;function OS(n,r){return yr(n,wa(n),r)}var bf=OS;function AS(n,r,e){var t=r(n);return je(n)?t:An(t,e(n))}var _a=AS;function CS(n){return _a(n,wn,Mn)}var rs=CS;function NS(n){return _a(n,_n,wa)}var Pa=NS;var IS=Ct($e,"DataView"),Ta=IS;var MS=Ct($e,"Promise"),Oa=MS;var ES=Ct($e,"Set"),Aa=ES;var Sf="[object Map]",LS="[object Object]",wf="[object Promise]",_f="[object Set]",Pf="[object WeakMap]",Tf="[object DataView]",DS=kr(Ta),BS=kr(lo),RS=kr(Oa),GS=kr(Aa),VS=kr(fa),Go=Vt;(Ta&&Go(new Ta(new ArrayBuffer(1)))!=Tf||lo&&Go(new lo)!=Sf||Oa&&Go(Oa.resolve())!=wf||Aa&&Go(new Aa)!=_f||fa&&Go(new fa)!=Pf)&&(Go=function(n){var r=Vt(n),e=r==LS?n.constructor:void 0,t=e?kr(e):"";if(t)switch(t){case DS:return Tf;case BS:return Sf;case RS:return wf;case GS:return _f;case VS:return Pf}return r});var Wr=Go;var zS=Object.prototype,jS=zS.hasOwnProperty;function FS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&jS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Of=FS;var kS=$e.Uint8Array,En=kS;function US(n){var r=new n.constructor(n.byteLength);return new En(r).set(new En(n)),r}var Ln=US;function HS(n,r){var e=r?Ln(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Af=HS;var WS=/\w*$/;function qS(n){var r=new n.constructor(n.source,WS.exec(n));return r.lastIndex=n.lastIndex,r}var Cf=qS;var Nf=et?et.prototype:void 0,If=Nf?Nf.valueOf:void 0;function $S(n){return If?Object(If.call(n)):{}}var Mf=$S;function YS(n,r){var e=r?Ln(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ef=YS;var XS="[object Boolean]",KS="[object Date]",ZS="[object Map]",QS="[object Number]",JS="[object RegExp]",ew="[object Set]",tw="[object String]",rw="[object Symbol]",ow="[object ArrayBuffer]",nw="[object DataView]",iw="[object Float32Array]",sw="[object Float64Array]",aw="[object Int8Array]",lw="[object Int16Array]",cw="[object Int32Array]",dw="[object Uint8Array]",uw="[object Uint8ClampedArray]",pw="[object Uint16Array]",fw="[object Uint32Array]";function mw(n,r,e){var t=n.constructor;switch(r){case ow:return Ln(n);case XS:case KS:return new t(+n);case nw:return Af(n,e);case iw:case sw:case aw:case lw:case cw:case dw:case uw:case pw:case fw:return Ef(n,e);case ZS:return new t;case QS:case tw:return new t(n);case JS:return Cf(n);case ew:return new t;case rw:return Mf(n)}}var Lf=mw;function hw(n){return typeof n.constructor=="function"&&!vn(n)?sp(Cn(n)):{}}var Df=hw;var yw="[object Map]";function gw(n){return ct(n)&&Wr(n)==yw}var Bf=gw;var Rf=Ur&&Ur.isMap,xw=Rf?Sn(Rf):Bf,Gf=xw;var vw="[object Set]";function bw(n){return ct(n)&&Wr(n)==vw}var Vf=bw;var zf=Ur&&Ur.isSet,Sw=zf?Sn(zf):Vf,jf=Sw;var ww=1,_w=2,Pw=4,Ff="[object Arguments]",Tw="[object Array]",Ow="[object Boolean]",Aw="[object Date]",Cw="[object Error]",kf="[object Function]",Nw="[object GeneratorFunction]",Iw="[object Map]",Mw="[object Number]",Uf="[object Object]",Ew="[object RegExp]",Lw="[object Set]",Dw="[object String]",Bw="[object Symbol]",Rw="[object WeakMap]",Gw="[object ArrayBuffer]",Vw="[object DataView]",zw="[object Float32Array]",jw="[object Float64Array]",Fw="[object Int8Array]",kw="[object Int16Array]",Uw="[object Int32Array]",Hw="[object Uint8Array]",Ww="[object Uint8ClampedArray]",qw="[object Uint16Array]",$w="[object Uint32Array]",Ee={};Ee[Ff]=Ee[Tw]=Ee[Gw]=Ee[Vw]=Ee[Ow]=Ee[Aw]=Ee[zw]=Ee[jw]=Ee[Fw]=Ee[kw]=Ee[Uw]=Ee[Iw]=Ee[Mw]=Ee[Uf]=Ee[Ew]=Ee[Lw]=Ee[Dw]=Ee[Bw]=Ee[Hw]=Ee[Ww]=Ee[qw]=Ee[$w]=!0;Ee[Cw]=Ee[kf]=Ee[Rw]=!1;function Ca(n,r,e,t,o,i){var s,a=r&ww,c=r&_w,u=r&Pw;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!zt(n))return n;var l=je(n);if(l){if(s=Of(n),!a)return lp(n,s)}else{var d=Wr(n),p=d==kf||d==Nw;if(Bo(n))return yf(n,a);if(d==Uf||d==Ff||p&&!o){if(s=c||p?{}:Df(n),!a)return c?bf(n,uf(s,n)):vf(n,df(s,n))}else{if(!Ee[d])return o?n:{};s=Lf(n,d,a)}}i||(i=new In);var f=i.get(n);if(f)return f;i.set(n,s),jf(n)?n.forEach(function(y){s.add(Ca(y,r,e,y,n,i))}):Gf(n)&&n.forEach(function(y,g){s.set(g,Ca(y,r,e,g,n,i))});var m=u?c?Pa:rs:c?_n:wn,h=l?void 0:m(n);return fp(h||n,function(y,g){h&&(g=y,y=n[g]),gn(s,g,Ca(y,r,e,g,n,i))}),s}var Na=Ca;var Yw=1,Xw=4;function Kw(n){return Na(n,Yw|Xw)}var qr=Kw;var Zw="__lodash_hash_undefined__";function Qw(n){return this.__data__.set(n,Zw),this}var Hf=Qw;function Jw(n){return this.__data__.has(n)}var Wf=Jw;function Ia(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Ro;++r<e;)this.add(n[r])}Ia.prototype.add=Ia.prototype.push=Hf;Ia.prototype.has=Wf;var qf=Ia;function e1(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 $f=e1;function t1(n,r){return n.has(r)}var Yf=t1;var r1=1,o1=2;function n1(n,r,e,t,o,i){var s=e&r1,a=n.length,c=r.length;if(a!=c&&!(s&&c>a))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&o1?new qf:void 0;for(i.set(n,r),i.set(r,n);++d<a;){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(!$f(r,function(g,x){if(!Yf(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var Ma=n1;function i1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Xf=i1;function s1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Kf=s1;var a1=1,l1=2,c1="[object Boolean]",d1="[object Date]",u1="[object Error]",p1="[object Map]",f1="[object Number]",m1="[object RegExp]",h1="[object Set]",y1="[object String]",g1="[object Symbol]",x1="[object ArrayBuffer]",v1="[object DataView]",Zf=et?et.prototype:void 0,_c=Zf?Zf.valueOf:void 0;function b1(n,r,e,t,o,i,s){switch(e){case v1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case x1:return!(n.byteLength!=r.byteLength||!i(new En(n),new En(r)));case c1:case d1:case f1:return yn(+n,+r);case u1:return n.name==r.name&&n.message==r.message;case m1:case y1:return n==r+"";case p1:var a=Xf;case h1:var c=t&a1;if(a||(a=Kf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=l1,s.set(n,r);var l=Ma(a(n),a(r),t,o,i,s);return s.delete(n),l;case g1:if(_c)return _c.call(n)==_c.call(r)}return!1}var Qf=b1;var S1=1,w1=Object.prototype,_1=w1.hasOwnProperty;function P1(n,r,e,t,o,i){var s=e&S1,a=rs(n),c=a.length,u=rs(r),l=u.length;if(c!=l&&!s)return!1;for(var d=c;d--;){var p=a[d];if(!(s?p in r:_1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=a[d];var g=n[p],x=r[p];if(t)var b=s?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(b===void 0?g===x||o(g,x,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var Jf=P1;var T1=1,em="[object Arguments]",tm="[object Array]",Ea="[object Object]",O1=Object.prototype,rm=O1.hasOwnProperty;function A1(n,r,e,t,o,i){var s=je(n),a=je(r),c=s?tm:Wr(n),u=a?tm:Wr(r);c=c==em?Ea:c,u=u==em?Ea:u;var l=c==Ea,d=u==Ea,p=c==u;if(p&&Bo(n)){if(!Bo(r))return!1;s=!0,l=!1}if(p&&!l)return i||(i=new In),s||ya(n)?Ma(n,r,e,t,o,i):Qf(n,r,c,e,t,o,i);if(!(e&T1)){var f=l&&rm.call(n,"__wrapped__"),m=d&&rm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new In),o(h,y,e,t,i)}}return p?(i||(i=new In),Jf(n,r,e,t,o,i)):!1}var om=A1;function nm(n,r,e,t,o){return n===r?!0:n==null||r==null||!ct(n)&&!ct(r)?n!==n&&r!==r:om(n,r,e,t,nm,o)}var im=nm;function C1(n,r){return n!=null&&r in Object(n)}var sm=C1;function N1(n,r,e){r=qt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=uo(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&&xn(o)&&hn(s,o)&&(je(n)||bn(n)))}var am=N1;function I1(n,r){return n!=null&&am(n,r,sm)}var lm=I1;function M1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var cm=M1;function E1(n,r){return r.length<2?n:va(n,of(r,0,-1))}var dm=E1;function L1(n,r){return im(n,r)}var os=L1;function D1(n,r){return r=qt(r,n),n=dm(n,r),n==null||delete n[uo(cm(r))]}var um=D1;function B1(n){return rf(n)?void 0:n}var pm=B1;var R1=1,G1=2,V1=4,z1=ba(function(n,r){var e={};if(n==null)return e;var t=!1;r=da(r,function(i){return i=qt(i,n),t||(t=i.length>1),i}),yr(n,Pa(n),e),t&&(e=Na(e,R1|G1|V1,pm));for(var o=r.length;o--;)um(e,r[o]);return e}),Dn=z1;function j1(n,r,e,t){if(!zt(n))return n;r=qt(r,n);for(var o=-1,i=r.length,s=i-1,a=n;a!=null&&++o<i;){var c=uo(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];u=t?t(l,c,a):void 0,u===void 0&&(u=zt(l)?l:hn(r[o+1])?[]:{})}gn(a,c,u),a=a[c]}return n}var fm=j1;function F1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],a=va(n,s);e(a,s)&&fm(i,qt(s,n),a)}return i}var mm=F1;function k1(n,r){return mm(n,r,function(e,t){return lm(n,t)})}var hm=k1;var U1=ba(function(n,r){return n==null?{}:hm(n,r)}),$r=U1;function Bn(n){let r;return()=>r||(r=n(),r)}var Me=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Me.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,a={...e,[i]:s};return Object.setPrototypeOf(a,Me.prototype),{data:a,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Me.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function ns(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"&&ns(t)}return Object.freeze(n)}function ym(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 Rn=class extends Error{};function La(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function gr(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 Gn(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 gm(){return typeof process<"u"}function xm(n,r){for(let e of n)r(e.id,e.data)!==!0&&xm(e.children,r)}function vm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)vm(e,r)}var Be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ns(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&vm(o,t)}}traverse(e){xm(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),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:a}}Object.setPrototypeOf(i,Be.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:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,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 Rn("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:a,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)=>ym(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 gr(0,o,o);{let s=i[0].fi;return gr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return gr(c,c+o,o)}else return gr(s.fi,a.fi,o)}}};var Vn;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],a=!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],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},a=!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,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Vn||(Vn={}));var me=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,me.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ns(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 a=i[s];return i=[...i],i[s]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,me.prototype);let t=e;return gm()||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,a={fi:t,id:o,data:i};return s=[...s,a],s.sort((u,l)=>u.fi-l.fi),e.localIndex=s.indexOf(a),{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(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,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 gr(0,t,t);{let i=o[0].fi;return gr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return gr(a,a+t,t)}else return gr(i.fi,s.fi,t)}}};function zn(n){return n&&typeof n=="object"&&n instanceof Re}var Re=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!zn(t))return null;o+=1}t=t?La(t):new Re;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=La(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=La(c);u[r.path[o-1]]=t,t=u}else{let u=new Re;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Re.prototype),a={...r,props:i};return{data:s,actual:r,reverse:a}}},xr;(t=>{function n(o,i){return is(o,i)??o}t.apply=n;function r(o,i){return Tc(o,i)}t.merge=r;function e(o,i){let s=0,a=i.path,c=o;for(;s<a.length&&c!==void 0;){if(c=vt.zoomOnce(c,a[s]),c===void 0)return i;if(!zn(c))return;s+=1}if(c===void 0)return i;if(!!zn(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Pc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(xr||(xr={}));function Pc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=is(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let a=Pc(o.children,r);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}}else return{...o,id:i,data:s}});if(e)return t}function H1(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=is(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 is(n,r){if(!zn(r))return r;if(n instanceof Be){let e=Pc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof me)return H1(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=is(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 Re)return Tc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=is(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 Tc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!zn(r))return r;if(!zn(n))return xr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Re;for(let o of e){let i=Tc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function bm(n,r){let e={cur:[],result:[],len:0};return n=ss(n,r,e)??n,[n,e.result]}function Da(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Ba(n){n&&(n.len-=1)}function W1(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Sm(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=ss(i.data,r,Da(e,s));Ba(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Sm(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 q1(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=ss(i.data,r,Da(e,s));return Ba(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 ss(n,r,e){if(n instanceof Be){let t=Sm(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof me)return q1(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let a=ss(i,r,Da(e,s));return Ba(e),t=t||a!==void 0,a===void 0&&(a=i),a});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Gn(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let a=r[i];if(typeof a=="string"){if(e!==null)throw new Error("not supported");o=!0,i=a}let c=ss(s,r,Da(e,i));Ba(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");W1(e)}return t}else return}}var Ra;(r=>{function n(e,t){let o=vt.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})(Ra||(Ra={}));var dt;(a=>{function n(c,u){return{...c,path:c.path.slice(u)}}a.drop=n;function r(c,u){return e(c,u)?.data??c}a.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof Re&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof Be||c instanceof me||c instanceof Me?p=c.runOp(u):p=Vn.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof Be){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Re){let b={...x,[g]:h};h=Object.setPrototypeOf(b,Re.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...x],h[g]=b}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof Be){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof me){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}}a.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}a.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}a.pathEq=o;function i(c,u){return t(c.path,u.path)}a.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}a.subsumed=s})(dt||(dt={}));var Oc;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>dt.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>dt.commutative(d,p)))}c.commutative=i;function s(u,l){for(let d of l){let p=a(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function a(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3){let h=vt.zoom(d,[...m.path,m.id]),y=dt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,x]=bm(d,{[m.id]:h});d=g;for(let b of x){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=dt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Rn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=a})(Oc||(Oc={}));var wm=Symbol(),$1=Symbol(),Va=Symbol(),Vo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Ga);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Va];t&&t(),delete this._children[r]}}}},Cc=class extends Vo{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,Vn.runOp(this._current,r),r.path)}},Nc=class extends Vo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Me.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},_m={get(n,r){if(r===Va)return()=>{n._parent=null};if(r===wm)return n._current;if(r===$1)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=za(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]}}},Y1={..._m,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}},X1={..._m,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},jn=class extends Vo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Va]=()=>{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=za(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)}},Fn=class extends Vo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Va]=()=>{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=za(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 Ac(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&vt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Ga=class extends Vo{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){Ac(this.ts,e,r),Ac(this.actual,t,r),Ac(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function za(n,r,e){return e instanceof Be?new jn(n,r,e):e instanceof me?new Fn(n,r,e):e instanceof Me?new Proxy(new Nc(n,r,e),X1):e!==null&&typeof e=="object"?Gn(e)?e:new Proxy(new Cc(n,r,e),Y1):e}function Ic(n){let r=new Ga(n);return[za(r,"",n),r]}function kn(n,r){let[e,t]=Ic(n);return r(e),t.result()}function Ye(n){return n instanceof jn||n instanceof Fn?n._current:n!==null&&typeof n=="object"?n[wm]:n}var vt;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function r(i,s,a){let c=t(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof Be||i instanceof jn)&&typeof s=="string")return i.data(s);if((i instanceof me||i instanceof Fn)&&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,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=t})(vt||(vt={}));function Pm(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 yt(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 ja=class{},as=class extends ja{constructor(e){super();this.id=e}},ls=class extends ja{constructor(e){super();this.data=e}};var Ec;try{Ec=new TextDecoder}catch{}var ne,fo,I=0;var Em=[],Lc=Em,Dc=0,Nt={},Te,po,$t=0,vr=0,jt,Yr,bt=[],Ce,Tm={useRecords:!1,mapsAsObjects:!0},cs=class{},Rc=new cs;Rc.name="MessagePack 0xC1";var Un=!1,br=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 Gm(()=>(ka(),this?this.unpack(r,e):br.prototype.unpack.call(Tm,r,e)));fo=e>-1?e:r.length,I=0,Dc=0,vr=0,po=null,Lc=Em,jt=null,ne=r;try{Ce=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 br){if(Nt=this,this.structures)return Te=this.structures,Fa();(!Te||Te.length>0)&&(Te=[])}else Nt=Tm,(!Te||Te.length>0)&&(Te=[]);return Fa()}unpackMultiple(r,e){let t,o=0;try{Un=!0;let i=r.length,s=this?this.unpack(r,i):Wa.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(Fa())===!1)return}else{for(t=[s];I<i;)o=I,t.push(Fa());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Un=!1,ka()}}_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 Fa(){try{if(!Nt.trusted&&!Un){let r=Te.sharedLength||0;r<Te.length&&(Te.length=r)}let n=Fe();if(I==fo)Te.restoreStructures&&Om(),Te=null,ne=null,Yr&&(Yr=null);else if(I>fo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Un)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Te.restoreStructures&&Om(),ka(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Om(){for(let n in Te.restoreStructures)Te[n]=Te.restoreStructures[n];Te.restoreStructures=null}function Fe(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Te[n&63]||Nt.getStructures&&Lm()[n&63];return r?(r.read||(r.read=Gc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Nt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Bm()]=Fe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Fe(),Fe());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Fe();return r}else if(n<192){let r=n-160;if(vr>=I)return po.slice(I-$t,(I+=r)-$t);if(vr==0&&fo<140){let e=r<16?Vc(r):Dm(r);if(e!=null)return e}return Bc(r)}else{let r;switch(n){case 192:return null;case 193:return jt?(r=Fe(),r>0?jt[1].slice(jt.position1,jt.position1+=r):jt[0].slice(jt.position0,jt.position0-=r)):Rc;case 194:return!1;case 195:return!0;case 196:return Mc(ne[I++]);case 197:return r=Ce.getUint16(I),I+=2,Mc(r);case 198:return r=Ce.getUint32(I),I+=4,Mc(r);case 199:return zo(ne[I++]);case 200:return r=Ce.getUint16(I),I+=2,zo(r);case 201:return r=Ce.getUint32(I),I+=4,zo(r);case 202:if(r=Ce.getFloat32(I),Nt.useFloat32>2){let e=Ha[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Ce.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=Ce.getUint16(I),I+=2,r;case 206:return r=Ce.getUint32(I),I+=4,r;case 207:return Nt.int64AsNumber?(r=Ce.getUint32(I)*4294967296,r+=Ce.getUint32(I+4)):r=Ce.getBigUint64(I),I+=8,r;case 208:return Ce.getInt8(I++);case 209:return r=Ce.getInt16(I),I+=2,r;case 210:return r=Ce.getInt32(I),I+=4,r;case 211:return Nt.int64AsNumber?(r=Ce.getInt32(I)*4294967296,r+=Ce.getUint32(I+4)):r=Ce.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return Mm(ne[I++]&63);{let e=bt[r];if(e)return e.read?(I++,e.read(Fe())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,Mm(ne[I++]&63,ne[I++])):zo(2);case 214:return zo(4);case 215:return zo(8);case 216:return zo(16);case 217:return r=ne[I++],vr>=I?po.slice(I-$t,(I+=r)-$t):Z1(r);case 218:return r=Ce.getUint16(I),I+=2,vr>=I?po.slice(I-$t,(I+=r)-$t):Q1(r);case 219:return r=Ce.getUint32(I),I+=4,vr>=I?po.slice(I-$t,(I+=r)-$t):J1(r);case 220:return r=Ce.getUint16(I),I+=2,Cm(r);case 221:return r=Ce.getUint32(I),I+=4,Cm(r);case 222:return r=Ce.getUint16(I),I+=2,Nm(r);case 223:return r=Ce.getUint32(I),I+=4,Nm(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 K1=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Gc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>K1.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Fe);return n.highByte===0&&(n.read=Am(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Fe()}return t}return e.count=0,n.highByte===0?Am(r,e):e}var Am=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Te[t]||Lm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Gc(o,n)),o.read()};function Lm(){let n=Gm(()=>(ne=null,Nt.getStructures()));return Te=Nt._mergeStructures(n,Te)}var Bc=Ua,Z1=Ua,Q1=Ua,J1=Ua;function Ua(n){let r;if(n<16&&(r=Vc(n)))return r;if(n>64&&Ec)return Ec.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,a=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|a;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+=tt.apply(String,t),t.length=0)}return t.length>0&&(r+=tt.apply(String,t)),r}function Cm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Fe();return r}function Nm(n){if(Nt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Bm()]=Fe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Fe(),Fe());return r}}var tt=String.fromCharCode;function Dm(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return tt.apply(String,e)}function Vc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return tt(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return tt(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return tt(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return tt(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return tt(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return tt(r,e,t,o,i,s);let a=ne[I++];if((a&128)>0){I-=7;return}return tt(r,e,t,o,i,s,a)}else{let i=ne[I++],s=ne[I++],a=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return tt(r,e,t,o,i,s,a,c);{let u=ne[I++];if((u&128)>0){I-=9;return}return tt(r,e,t,o,i,s,a,c,u)}}else if(n<12){let u=ne[I++],l=ne[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return tt(r,e,t,o,i,s,a,c,u,l);let d=ne[I++];if((d&128)>0){I-=11;return}return tt(r,e,t,o,i,s,a,c,u,l,d)}else{let u=ne[I++],l=ne[I++],d=ne[I++],p=ne[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return tt(r,e,t,o,i,s,a,c,u,l,d,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return tt(r,e,t,o,i,s,a,c,u,l,d,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return tt(r,e,t,o,i,s,a,c,u,l,d,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return tt(r,e,t,o,i,s,a,c,u,l,d,p,f,m,h)}}}}}function Mc(n){return Nt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function zo(n){let r=ne[I++];if(bt[r])return bt[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Im=new Array(4096);function Bm(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,vr>=I)return po.slice(I-$t,(I+=n)-$t);if(!(vr==0&&fo<180))return Bc(n)}else return I--,Fe();let r=(n<<5^(n>1?Ce.getUint16(I):n>0?ne[I]:0))&4095,e=Im[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ce.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 I=t,e.string;o-=3,t=I}for(e=[],Im[r]=e,e.bytes=n;t<o;)i=Ce.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let a=n<16?Vc(n):Dm(n);return a!=null?e.string=a:e.string=Bc(n)}var Mm=(n,r)=>{var e=Fe();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Te[n];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[n]=o),Te[n]=e,e.read=Gc(e,t),e.read()},Rm=typeof self=="object"?self:global;bt[0]=()=>{};bt[0].noBuffer=!0;bt[101]=()=>{let n=Fe();return(Rm[n[0]]||Error)(n[1])};bt[105]=n=>{let r=Ce.getUint32(I-4);Yr||(Yr=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Yr.set(r,o);let i=Fe();return o.used?Object.assign(t,i):(o.target=i,i)};bt[112]=n=>{let r=Ce.getUint32(I-4),e=Yr.get(r);return e.used=!0,e.target};bt[115]=()=>new Set(Fe());var zc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");bt[116]=n=>{let r=n[0],e=zc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Rm[e](Uint8Array.prototype.slice.call(n,1).buffer)};bt[120]=()=>{let n=Fe();return new RegExp(n[0],n[1])};bt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,jt=[Fe(),Fe()],jt.position0=0,jt.position1=0;let t=I;I=e;try{return Fe()}finally{I=t}};bt[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 Gm(n){let r=fo,e=I,t=Dc,o=$t,i=vr,s=po,a=Lc,c=Yr,u=jt,l=new Uint8Array(ne.slice(0,fo)),d=Te,p=Te.slice(0,Te.length),f=Nt,m=Un,h=n();return fo=r,I=e,Dc=t,$t=o,vr=i,po=s,Lc=a,Yr=c,jt=u,ne=l,Un=m,Te=d,Te.splice(0,Te.length,...p),Nt=f,Ce=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function ka(){ne=null,Yr=null,Te=null}function Vm(n){n.unpack?bt[n.type]=n.unpack:bt[n.type]=n}var Ha=new Array(147);for(let n=0;n<256;n++)Ha[n]=+("1e"+Math.floor(45.15-n*.30103));var Wa=new br({useRecords:!1}),e_=Wa.unpack,t_=Wa.unpackMultiple,r_=Wa.unpack,qa={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},o_=new Float32Array(1),hR=new Uint8Array(o_.buffer,0,4);var $a;try{$a=new TextEncoder}catch{}var Ya,Fc,Xa=typeof Buffer<"u",jc=Xa?Buffer.allocUnsafeSlow:Uint8Array,km=Xa?Buffer:Uint8Array,zm=Xa?4294967296:2144337920,z,He,E=0,Sr,wr=null,n_=/[\u0080-\uFFFF]/,ds=Symbol("record-id"),jo=class extends br{constructor(r){super(r),this.offset=0;let e,t,o,i,s,a,c=0,u=km.prototype.utf8Write?function(v,N,T){return z.utf8Write(v,N,T)}:$a&&$a.encodeInto?function(v,N){return $a.encodeInto(v,z.subarray(N)).written}:!1,l=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],b=0,w=0;this.pack=this.encode=function(v,N){if(z||(z=new jc(8192),He=new DataView(z.buffer,0,8192),E=0),Sr=z.length-10,Sr-E<2048?(z=new jc(z.length),He=new DataView(z.buffer,0,z.length),Sr=z.length-10,E=0):E=E+7&2147483640,t=E,a=l.structuredClone?new Map:null,l.bundleStrings?(wr=["",""],z[E++]=214,z[E++]=98,wr.position=E-t,E+=4):wr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let C=0;C<T;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let U=0,$=O.length;U<$;U++){let ee=O[U];A=R[ee],A||(A=R[ee]=Object.create(null)),R=A}R[ds]=C+64}c=T}d||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(S(v),wr){He.setUint32(wr.position+t,E-wr.position-t);let T=wr;wr=null,S(T[0]),S(T[1])}if(l.offset=E,a&&a.idsToInsert){E+=a.idsToInsert.length*6,E>Sr&&_(E),l.offset=E;let T=s_(z.subarray(t,E),a.idsToInsert);return a=null,T}return N&Hm?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let T=0,C=x.length;T<C;T++)x[T][ds]=0;x=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let C=z.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=T,C)}}N&f_&&(E=t)}};let S=v=>{E>Sr&&(z=_(E));var N=typeof v,T;if(N==="string"){let C=v.length;if(wr&&C>=8&&C<4096){let R=n_.test(v);wr[R?0:1]+=v,z[E++]=193,S(R?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>Sr&&(z=_(E+A)),C<64||!u){let R,U,$,ee=E+O;for(R=0;R<C;R++)U=v.charCodeAt(R),U<128?z[ee++]=U:U<2048?(z[ee++]=U>>6|192,z[ee++]=U&63|128):(U&64512)===55296&&(($=v.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+($&1023),R++,z[ee++]=U>>18|240,z[ee++]=U>>12&63|128,z[ee++]=U>>6&63|128,z[ee++]=U&63|128):(z[ee++]=U>>12|224,z[ee++]=U>>6&63|128,z[ee++]=U&63|128);T=ee-E-O}else T=u(v,E+O,A);T<32?z[E++]=160|T:T<256?(O<2&&z.copyWithin(E+2,E+1,E+1+T),z[E++]=217,z[E++]=T):T<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+T),z[E++]=218,z[E++]=T>>8,z[E++]=T&255):(O<5&&z.copyWithin(E+5,E+3,E+3+T),z[E++]=219,He.setUint32(E,T),E+=4),E+=T}else if(N==="number")if(v>>>0===v)v<64?z[E++]=v:v<256?(z[E++]=204,z[E++]=v):v<65536?(z[E++]=205,z[E++]=v>>8,z[E++]=v&255):(z[E++]=206,He.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?z[E++]=256+v:v>=-128?(z[E++]=208,z[E++]=v+256):v>=-32768?(z[E++]=209,He.setInt16(E,v),E+=2):(z[E++]=210,He.setInt32(E,v),E+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){z[E++]=202,He.setFloat32(E,v);let O;if(C<4||(O=v*Ha[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,He.setFloat64(E,v),E+=8}else if(N==="object")if(!v)z[E++]=192;else{if(a){let O=a.get(v);if(O){if(!O.id){let A=a.idsToInsert||(a.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,He.setUint32(E,O.id),E+=4;return}else a.set(v,{offset:E-t})}let C=v.constructor;if(C===Object)P(v,!0);else if(C===Array){T=v.length,T<16?z[E++]=144|T:T<65536?(z[E++]=220,z[E++]=T>>8,z[E++]=T&255):(z[E++]=221,He.setUint32(E,T),E+=4);for(let O=0;O<T;O++)S(v[O])}else if(C===Map){T=v.size,T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,He.setUint32(E,T),E+=4);for(let[O,A]of v)S(O),S(A)}else{for(let O=0,A=Ya.length;O<A;O++){let R=Fc[O];if(v instanceof R){let U=Ya[O];if(U.write){U.type&&(z[E++]=212,z[E++]=U.type,z[E++]=0),S(U.write.call(this,v));return}let $=z,ee=He,Y=E;z=null;let q;try{q=U.pack.call(this,v,H=>(z=$,$=null,E+=H,E>Sr&&_(E),{target:z,targetView:He,position:E-H}),S)}finally{$&&(z=$,He=ee,E=Y,Sr=z.length-10)}q&&(q.length+E>Sr&&_(q.length+E),E=i_(q,z,E,U.type));return}}P(v,!v.hasOwnProperty)}}else if(N==="boolean")z[E++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))z[E++]=211,He.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)z[E++]=207,He.setBigUint64(E,v);else if(this.largeBigIntToFloat)z[E++]=203,He.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},P=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),T=N.length;T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,He.setUint32(E,T),E+=4);let C;for(let O=0;O<T;O++)S(C=N[O]),S(v[C])}:(v,N)=>{z[E++]=222;let T=E-t;E+=2;let C=0;for(let O in v)(N||v.hasOwnProperty(O))&&(S(O),S(v[O]),C++);z[T+++t]=C>>8,z[T+t]=C&255}:v=>{let N=Object.keys(v),T,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=N.length;R<U;R++){let $=N[R];T=C[$],T||(T=C[$]=Object.create(null),O++),C=T}let A=C[ds];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=N.highByte=A>=96&&h?A-96>>5:-1;C[ds]=A,s[A-64]=N,A<y?(N.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(z[E++]=(A&31)+96,z[E++]=R):z[E++]=A):(R>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=R):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),x.length>=m&&(x.shift()[ds]=0),x.push(C),S(N))}for(let R=0,U=N.length;R<U;R++)S(v[N[R]])},_=v=>{let N;if(v>16777216){if(v-t>zm)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(zm,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,z.length-1)>>12)+1<<12;let T=new jc(N);return He=new DataView(T.buffer,0,N),z.copy?z.copy(T,0,t,v):T.set(z.slice(t,v)),E-=t,t=0,Sr=T.length-10,z=T}}useBuffer(r){z=r,He=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};Fc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,cs];Ya=[{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?jm(n,16,r):Fm(Xa?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==km&&this.structuredClone?jm(n,zc.indexOf(e.name),r):Fm(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function jm(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:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Fm(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 i_(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 s_(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 a=i+t;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function mo(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)");Fc.unshift(n.Class),Ya.unshift(n)}Vm(n)}var Um=new jo({useRecords:!1}),a_=Um.pack,l_=Um.pack;var{NEVER:c_,ALWAYS:d_,DECIMAL_ROUND:u_,DECIMAL_FIT:p_}=qa,Hm=512,f_=1024;var Wm=new jo({structuredClone:!0});mo({Class:Me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Me.prototype),n}});mo({Class:me.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,me.prototype),n}});mo({Class:Be.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});mo({Class:as.prototype.constructor,type:4,write(n){return n.id},read(n){return new as(n)}});mo({Class:ls.prototype.constructor,type:5,write(n){return n.data},read(n){return new ls(n)}});mo({Class:Re.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Re.prototype),n}});function m_(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 kc(n){if(Gn(n))return n;if(Array.isArray(n))return n.map(kc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=kc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Ka;(t=>{function n(o){return Wm.pack(o)}t.serialize=n;function r(o){return Wm.unpack(o)}t.deserialize=r;function e(o){return m_(n(kc(o))).toString()}t.checksum=e})(Ka||(Ka={}));var go="personal camera",xo="a218fcc3-276b-49b9-b485-49037fd14f5f",Zm=2960946,Ke=5526619;var qm;(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})(qm||(qm={}));var ho;(a=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}a.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}a.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}a.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}a.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}a.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}a.dist=i;function s(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}a.lerp=s})(ho||(ho={}));var $m;(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})($m||($m={}));var yo;(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 a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let a=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=t})(yo||(yo={}));var rt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function s(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=s;function a(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=a;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(rt||(rt={}));var St;(a=>{a.white={...rt.white,a:1},a.transparent={...rt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function t(c,u){return{...rt.fromHex(c),a:u}}a.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}}a.toRgb255a1=o;function i(c,u){return rt.equals(c,u)&&c.a===u.a}a.equals=i;function s(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}a.lerp=s})(St||(St={}));var Za;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Za||(Za={}));var Ym;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ym||(Ym={}));var Xm;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Xm||(Xm={}));var Km;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Km||(Km={}));var er;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(er||(er={}));var vo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(vo||(vo={}));var _r;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(h_.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,a=o.radial;y_.forEach(c=>{Object.assign(i.radial,{[c]:a[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,a=o.linear;g_.forEach(c=>{Object.assign(i.linear,{[c]:a[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,a=o.grid;x_.forEach(c=>{Object.assign(i.grid,{[c]:a[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,a=o.toObject;v_.forEach(c=>{Object.assign(i.toObject,{[c]:a[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,a=o.randomnessObject;b_.forEach(c=>{Object.assign(i.randomnessObject,{[c]:a[c]??s[c]})})}return i}e.merge=r})(_r||(_r={}));var Qa;(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 a of r){let c=o[a];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,a],props:c})}return s}t.toOps=e})(Qa||(Qa={}));var h_=["count"],y_=["radius","start","end","position","scale","rotation"],g_=["position","scale","rotation"],x_=["count","size"],v_=["count","position","scale","rotation"],b_=["strength","scale","rotation","position","movement","seed","freqScale"];var Ja;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Ja||(Ja={}));var el;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:St.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:St.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:St.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(el||(el={}));var bo;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(bo||(bo={}));var Uc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Uc||(Uc={}));var Hc;(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})(Hc||(Hc={}));var tl;(r=>r.defaultData={...Hc.defaultData,...Uc.defaultData})(tl||(tl={}));var Hn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Hn||(Hn={}));var Qm;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Qm||(Qm={}));function eh(n){return n.type!=="displace"}var Jm;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Jm||(Jm={}));var th=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],rh=["wrapping","image","video","name"],wt;(o=>{function n(i,s){let{texture:a,...c}=s;if(Object.assign(i,c),a){let u=i.texture;u&&Object.assign(u,a)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Hn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:rt.fromHex(Ke)};case"depth":return{...s,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...rt.fromHex(6710886),a:1},colorB:{...rt.fromHex(6710886),a:1},colorC:{...rt.fromHex(16777215),a:1},colorD:{...rt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:St.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:St.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:St.fromHexAndA(0,1),contourColor:St.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{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...rt.fromHex(0),a:1},colorB:{...rt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(wt||(wt={}));var It;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new me}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new me;return p.push({fi:0,data:wt.defaultData("light",u),id:l}),p.push({fi:1,data:wt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,l="phong",d="layer1",p="layer2"){let f=wt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new me;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:wt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function a(u,l="phong",d="layer1",p="layer2"){let f=wt.defaultData("video");Object.assign(f.texture,{video:u});let m=new me;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:wt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=a})(It||(It={}));var Wn;(r=>{function n(){return{points:new me,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Wn||(Wn={}));var qn;(r=>{function n(){return{points:new me,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(qn||(qn={}));var Wc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var rl;(r=>{function n(e,t){let o={...e};return S_.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(rl||(rl={}));var ol={shape:Wc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},S_=["depth","offset","angle","twist","startScale","endScale"];var us;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(us||(us={}));var nl;(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,rl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(nl||(nl={}));var So;(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:qn.defaultData(),extrusion:ol};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Wn.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};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI};throw new Error("not implemented")}r.defaultData=n})(So||(So={}));var il;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:rt.white,near:.1,far:2e3})(il||(il={}));var sl;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(sl||(sl={}));var qc;(r=>r.defaultData={softShadowQuality:"low"})(qc||(qc={}));var $c;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})($c||($c={}));var Yc;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Yc||(Yc={}));var ps;(r=>r.defaultData={usePhysics:!1,gravity:-10})(ps||(ps={}));var Xc;(r=>r.defaultData={playCamera:go,gameControlObject:null})(Xc||(Xc={}));var al;(r=>r.defaultData={backgroundColor:St.fromHexAndA(Zm,1),postprocessing:sl.defaultData,fog:il.defaultData,globalPhysics:ps.defaultData,ambient:$c.defaultData,ao:Yc.defaultData,shadow:qc.defaultData,publish:Xc.defaultData})(al||(al={}));var oh;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(oh||(oh={}));var $n;(o=>{o.identity={...Za.identity,hiddenMatrix:yo.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 Hu({position:ho.isEqual(i.position,s.position)?void 0:s.position,rotation:ho.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:ho.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:yo.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})($n||($n={}));var gt;(r=>r.defaultData={states:new me,events:new me,visible:!0,raycastLock:!1,physics:bo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...$n.identity,cloner:null})(gt||(gt={}));var nh;(r=>r.defaultData={type:"Empty",...gt.defaultData})(nh||(nh={}));var ih;(r=>r.defaultData={type:"Component",...gt.defaultData})(ih||(ih={}));var Fo;(r=>r.defaultData={type:"Mesh",...gt.defaultData,...tl.defaultData})(Fo||(Fo={}));var ko;(r=>r.defaultData={...gt.defaultData,...$n.identity,position:[0,0,vo.DefaultTargetOffset],...vo.defaultData})(ko||(ko={}));var ll;(e=>{function n(t){return{...gt.defaultData,...el.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(ll||(ll={}));var Yn;(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 a=Object.keys(s);if(a.length===1&&a[0]==="descendants")return}return s}e.resolve=r})(Yn||(Yn={}));var Xr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,a){return{...gt.defaultData,...a,component:s,overrides:new Re,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let a=$n.fromObject(s.data);return t(s.id,a)}i.fromComponentData=o})(Xr||(Xr={}));var Kr;(r=>r.defaultData={type:"Page",...gt.defaultData,physics:{...bo.defaultData,fusedBody:!1},...al.defaultData,camera:ko.defaultData})(Kr||(Kr={}));var cl;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:yo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:bo.defaultData,states:new me,events:new me,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...vo.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...gt.defaultData,...Fo.defaultData,geometry:So.defaultData("RectangleGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...gt.defaultData,...Fo.defaultData,geometry:So.defaultData("BooleanGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...gt.defaultData,...Fo.defaultData,geometry:So.defaultData("TextGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")}))(cl||(cl={}));var Uo;(o=>{function n(i,s){let a={name:s};return i.type==="Mesh"?(a.geometry={},"material"in i&&(a.material={layers:new Re}),"materials"in i&&(a.materials=i.materials.map(c=>({layers:new Re})))):er.is(i.type)&&(a.perspective={},a.orthographic={}),a}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let a={...i};return"material"in a&&"material"in s&&s.material&&(a.material=kn(a.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&wt.patch(d,l)}}).data),a.materials&&s.materials&&(a.materials=kn(a.materials,c=>{for(let u=0;u<a.materials.length;u++){let l=s.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&wt.patch(f,p)}}}).data),a}function e(i,s){let a,c=[],u={orthographic:0,perspective:0,geometry:0};function l(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...Qa.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else a===void 0&&(a={path:[],props:{},type:0},c.push(a)),a.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let a={...i};if(Object.assign(a,$n.merge(a,s)),Object.assign(a,{pathSnapping:Object.assign({},a.pathSnapping,{slide:s.pathSnapping?.slide??a.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??a.pathSnapping?.offset??0})}),er.is(i.type)){a.orthographic={...a.orthographic},a.perspective={...a.perspective};let c=s;c.orthographic?.zoom!==void 0&&(a.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(a.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(a.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(a.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(a,{geometry:nl.merge(a.geometry,s.geometry)}),(s.material||s.materials)&&(a=r(a,s)),a.cloner&&"cloner"in s&&Object.assign(a,{cloner:_r.merge(a.cloner,s.cloner)});else if(i.type==="Empty")a.cloner&&"cloner"in s&&Object.assign(a,{cloner:_r.merge(a.cloner,s.cloner)});else if(Ja.is(i.type)){let c=s;c.intensity!==void 0&&(a.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?a.color=c.color:a.color=rt.clone(c.color))}return a}o.patch=t})(Uo||(Uo={}));var Xn;(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})(Xn||(Xn={}));var Pr;(r=>r.defaultData={orbitControls:Xn.defaultData,playPage:xo,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Pr||(Pr={}));var Kc;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Kc||(Kc={}));var Zc;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Zc||(Zc={}));var wo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Kc.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Zc.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(wo||(wo={}));var sh;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.traverseFrom(o,(s,a)=>{if(a.type==="Instance"){let c=t.data(a.component);c&&i(a,c.events)}else i(a,a.events)})}e.traverseModuleInstances=r})(sh||(sh={}));var dl;(a=>{a.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=cl.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:ll.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new Be;return d.push({fi:1,id:xo,data:{...Kr.defaultData,name:"Scene 1"},children:u}),d}a.defaultData={objects:r(),publish:Pr.defaultData,styles:wo.defaultData()},a.emptyDataWithoutPage=function(){return{objects:new Be,publish:Pr.defaultData,styles:wo.defaultData()}},a.emptyDataWithPage=function(c){return{objects:r(c),publish:Pr.defaultData,styles:wo.defaultData()}};function i(c){return{...a.defaultData,objects:Jt(c,Be.prototype)}}a.withObjs=i;function s(c,u){return i([{id:c,data:u,children:[],fi:0}])}a.withObj=s})(dl||(dl={}));var Kn;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Kn||(Kn={}));var ul;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Jt(o,Me.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Kn.emptyImage,name:"AI generated image"}),Jt(i,Me.prototype)}t.defaultImages=r;function e(){return{materials:new Me,images:new Me,videos:new Me,colors:new Me,audios:new Me,fonts:new Me}}t.emptyData=e})(ul||(ul={}));import{MathUtils as ml}from"three";var pl;(r=>r.list=["idle","move","jump","run"])(pl||(pl={}));var fl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new me,move:new me,jump:new me,run:new me},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:St.fromHexAndA(3728051,1)}}))(fl||(fl={}));function ah(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...$r(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 Ho(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Wo(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 w_(n){Object.assign(n.scene.publish,{orbitControls:{...Xn.defaultData,...Ye(n.scene.publish.orbitControls)}})}function __(n){Object.assign(n.scene.publish.settings,{video:{...Pr.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function P_(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((th.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,a]of Object.entries(i))(rh.includes(s)||typeof a=="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 T_(n){n.scene.publish.withBackground=!0}function O_(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function A_(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 C_(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 N_(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 I_(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 M_(n){function r(t){Object.setPrototypeOf(t,Re.prototype),t.texture&&Object.setPrototypeOf(t.texture,Re.prototype)}function e(t){Object.setPrototypeOf(t,Re.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let a=Ye(s.material).layers;e(a),s.material.layers=a}if(s.materials)for(let a=0;a<s.materials.length;a++){let c=s.materials[a],u=Ye(c).layers;e(u),c.layers=u}})})}function lh(n){n.layers===void 0&&Object.assign(n,It.defaultTwoLayerData("lambert"))}function Qc(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 E_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function ch(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Qc(t)}):"material"in e&&typeof e.material!="string"&&Qc(e.material)}),Object.values(n.shared.materials).forEach(r=>Qc(r))}function L_(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 D_(n){n.shared.audios=Jt({},Me.prototype)}function B_(n){n.shared.videos=Jt({},Me.prototype)}function R_(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 G_(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 V_(n){n.scene.publish.settings.web.preload=!1}function dh(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 uh(n){n.layers&&n.layers.forEach(r=>{eh(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function z_(n){n.shared.fonts=Jt({},Me.prototype)}function j_(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 F_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=It.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 a=j_(o.font);n.shared.fonts[a]===void 0&&(n.shared.fonts[a]={name:a});let c={name:o.name,...gt.defaultData,...Fo.defaultData,flatShading:!1,wireframe:!1,geometry:{...So.defaultData("TextGeometry"),width:o.width,height:o.height,font:a,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 k_(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 me,move:new me,jump:new me}});else{let i=new me;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:ml.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,a,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(l,$r(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(l,{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,...l},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new me({fi:0,id:ml.generateUUID(),data:u},{fi:1,id:ml.generateUUID(),data:p})};i.push({fi:c,id:a,data:f})}),delete o.targets)}})})}function U_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new me,a=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;a.push(u),c.interaction==="play"?d={...$r(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={...$r(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:l,id:u,data:d})}}),a.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:ml.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function ph(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=wt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function fh(n){Ho(n,ph),Wo(n,ph)}function H_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function W_(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 q_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=It.defaultTwoLayerData("phong"))})}function $_(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 Y_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function X_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function K_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function Z_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function Q_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function J_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=fl.defaultDataThirdPerson.navmesh)})})}function eP(n){n.scene.styles||(n.scene.styles=wo.defaultData())}function mh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function tP(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Wo(n,mh),Ho(n,mh)}function rP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new me})})})}function oP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function hh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function yh(n,r){if(r<1&&(Wo(n,ah),Ho(n,ah),n.schema=1),r<2&&(w_(n),n.schema=2),r<3&&(P_(n),n.schema=3),r<4&&(T_(n),n.schema=4),r<5&&(O_(n),n.schema=5),r<6&&(A_(n),n.schema=6),r<7&&(C_(n),n.schema=7),r<8&&(n.schema=8),r<9&&(ch(n),n.schema=9),r<10&&(E_(n),n.schema=10),r<11&&(L_(n),n.schema=11),r<12&&(ch(n),n.schema=12),r<13&&(D_(n),n.schema=13),r<14&&(R_(n),n.schema=14),r<15&&(G_(n),n.schema=15),r<16&&(V_(n),n.schema=16),r<17&&(Wo(n,dh),Ho(n,dh),n.schema=17),r<18&&(Wo(n,lh),Ho(n,lh),n.schema=18),r<19&&(__(n),n.schema=19),r<20&&(z_(n),F_(n),n.schema=20),r<21&&(k_(n),U_(n),n.schema=21),r<22&&(fh(n),n.schema=22),r<23&&(H_(n),n.schema=23),r<24&&(W_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(B_(n),r<25&&(n.schema=25)),r<26&&(N_(n),n.schema=26),r<27&&(I_(n),n.schema=27),r<28&&(fh(n),n.schema=28),r<29&&(M_(n),n.schema=29),r<30&&(q_(n),n.schema=30),r<31&&($_(n),n.schema=31),r<33&&(Y_(n),n.schema=33),r<34&&(X_(n),n.schema=34),r<35&&(K_(n),n.schema=35),r<36&&(Z_(n),n.schema=36),r<37&&(Q_(n),n.schema=37),r<38&&(Wo(n,uh),Ho(n,uh),n.schema=38),r<39&&(J_(n),n.schema=39),r<40&&(eP(n),n.schema=40),r<41&&(tP(n),n.schema=41),r<42&&(rP(n),n.schema=42),r<43&&(oP(n),n.schema=43),r<99){Wo(n,hh),Ho(n,hh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=go);let e=Ye(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=xo,t.insertBefore(null,null,[{id:xo,data:{...Kr.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:$r(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:$r(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...ps.defaultData,...$r(n.scene.environment,"usePhysics","gravity")},camera:Ye(n.scene.ownerCamera)??Kr.defaultData.camera,name:"Scene"},children:[]}]);for(let s of e)s.id!==dl.TRASH_CAN_ID&&t.move(xo,s.fi,s.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((s,a)=>{a.type==="DirectionalLight"?(a.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):a.type==="SpotLight"&&(a.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(a.physics===void 0||a.physics===null)&&a.type!=="Instance"&&(a.physics={},Object.assign(a.physics,bo.defaultData)),a.physics!==void 0&&(a.physics.enabled=a.collision??"visibility",delete a.collision)}),n.schema=99}}var gh=100;function xh(n){let r=n.schema??0;r!==gh&&(console.warn("updating from ",r,"to ",gh),yh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Pr.defaultData.joystickSizeAndXYOffset),n.schema=100))}var Hi=aa(bh());import{Object3D as CA,Vector3 as Ht,Euler as Mu,MathUtils as Hg,Matrix4 as un}from"three";var nP=.5*(Math.sqrt(3)-1),ms=(3-Math.sqrt(3))/6,iP=1/3,Tr=1/6,Nz=(Math.sqrt(5)-1)/4,Iz=(5-Math.sqrt(5))/20,hs=n=>Math.floor(n)|0,Sh=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]),ed=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 hl(n=Math.random){let r=_h(n),e=new Float64Array(r).map(o=>Sh[o%12*2]),t=new Float64Array(r).map(o=>Sh[o%12*2+1]);return function(i,s){let a=0,c=0,u=0,l=(i+s)*nP,d=hs(i+l),p=hs(s+l),f=(d+p)*ms,m=d-f,h=p-f,y=i-m,g=s-h,x,b;y>g?(x=1,b=0):(x=0,b=1);let w=y-x+ms,S=g-b+ms,P=y-1+2*ms,_=g-1+2*ms,v=d&255,N=p&255,T=.5-y*y-g*g;if(T>=0){let A=v+r[N],R=e[A],U=t[A];T*=T,a=T*T*(R*y+U*g)}let C=.5-w*w-S*S;if(C>=0){let A=v+x+r[N+b],R=e[A],U=t[A];C*=C,c=C*C*(R*w+U*S)}let O=.5-P*P-_*_;if(O>=0){let A=v+1+r[N+1],R=e[A],U=t[A];O*=O,u=O*O*(R*P+U*_)}return 70*(a+c+u)}}function wh(n=Math.random){let r=_h(n),e=new Float64Array(r).map(i=>ed[i%12*3]),t=new Float64Array(r).map(i=>ed[i%12*3+1]),o=new Float64Array(r).map(i=>ed[i%12*3+2]);return function(s,a,c){let u,l,d,p,f=(s+a+c)*iP,m=hs(s+f),h=hs(a+f),y=hs(c+f),g=(m+h+y)*Tr,x=m-g,b=h-g,w=y-g,S=s-x,P=a-b,_=c-w,v,N,T,C,O,A;S>=P?P>=_?(v=1,N=0,T=0,C=1,O=1,A=0):S>=_?(v=1,N=0,T=0,C=1,O=0,A=1):(v=0,N=0,T=1,C=1,O=0,A=1):P<_?(v=0,N=0,T=1,C=0,O=1,A=1):S<_?(v=0,N=1,T=0,C=0,O=1,A=1):(v=0,N=1,T=0,C=1,O=1,A=0);let R=S-v+Tr,U=P-N+Tr,$=_-T+Tr,ee=S-C+2*Tr,Y=P-O+2*Tr,q=_-A+2*Tr,H=S-1+3*Tr,V=P-1+3*Tr,G=_-1+3*Tr,D=m&255,L=h&255,B=y&255,X=.6-S*S-P*P-_*_;if(X<0)u=0;else{let M=D+r[L+r[B]];X*=X,u=X*X*(e[M]*S+t[M]*P+o[M]*_)}let W=.6-R*R-U*U-$*$;if(W<0)l=0;else{let M=D+v+r[L+N+r[B+T]];W*=W,l=W*W*(e[M]*R+t[M]*U+o[M]*$)}let j=.6-ee*ee-Y*Y-q*q;if(j<0)d=0;else{let M=D+C+r[L+O+r[B+A]];j*=j,d=j*j*(e[M]*ee+t[M]*Y+o[M]*q)}let F=.6-H*H-V*V-G*G;if(F<0)p=0;else{let M=D+1+r[L+1+r[B+1]];F*=F,p=F*F*(e[M]*H+t[M]*V+o[M]*G)}return 32*(u+l+d+p)}}function _h(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 sP}from"three";var tr=new sP,yl=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;tr.a.fromBufferAttribute(r,o),tr.b.fromBufferAttribute(r,o+1),tr.c.fromBufferAttribute(r,o+2),i*=tr.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),tr.a.fromBufferAttribute(this.positionAttribute,r*3),tr.b.fromBufferAttribute(this.positionAttribute,r*3+1),tr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(tr.a,o).addScaledVector(tr.b,i).addScaledVector(tr.c,1-(o+i)),tr.getNormal(t),this}};import{Object3D as uP}from"three";var Oh=aa(Th());import{Object3D as aP,Matrix4 as Or}from"three";var lP=new Or,cP=new Or,dP=new Or,Zn;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Zn||(Zn={}));var Qn=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Or;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Or;this.matrixWorldRigid=new Or;this.shearScale=new Or;this.shearScaleInv=new Or}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof aP&&(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)}traverseChildren(t,o=0){for(let i of this.children)Zn.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Zn.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:a}=(0,Oh.SVD)(o),c=lP.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=cP.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),l=dP.copy(u).transpose();this.shearScale.makeScale(a[0],a[1],a[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),a.every(d=>Math.abs(a[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Or().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Or?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,s,a,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var td=class extends Qn(uP){},pP=n=>n.type==="Mesh",Zr=class extends td{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Zr(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return pP(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 JT,BufferGeometry as eO,MeshBasicMaterial as tO}from"three";import{Matrix4 as ZT,Mesh as QT}from"three";import{Matrix4 as vl,Vector3 as xP,Euler as vP}from"three";import{Box3 as fP,Line3 as mP,Matrix4 as rd,Vector3 as Ft}from"three";var qo=new Ft,$o=new Ft,Jn=new rd,Ch=[new Ft(-1,1,1),new Ft(-1,-1,1),new Ft(1,-1,1),new Ft(1,1,1),new Ft(-1,1,-1),new Ft(-1,-1,-1),new Ft(1,-1,-1),new Ft(1,1,-1)],hP=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],yP=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Ah=(n,r,e)=>{n.updateEntityBoxSize(qo,$o),Jn.copy(r).multiply(n.matrixWorld),$o.x===0&&$o.y===0&&$o.z===0?e.push(new Ft(qo.x,qo.y,qo.z).applyMatrix4(Jn)):Ch.forEach(t=>{e.push(t.clone().multiply($o).add(qo).applyMatrix4(Jn))})},ys=class extends fP{constructor(){super(...arguments);this.matrix=new rd;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 rd().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Ft);return}Ah(s,t,i)}}):Ah(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(Jn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize($o).multiplyScalar(.5),this.getCenter(qo),Jn.copy(this.matrix).setPosition(qo),this.vertices=Ch.map(e=>e.clone().multiply($o).applyMatrix4(Jn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hP.map(([e,t])=>new mP(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ft))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=yP.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var rr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as gP,CubicBezierCurve3 as od,Vector3 as or}from"three";var id=class extends gP{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let a=0,c=this.curves;a<c.length;a++){let u=c[a],l=a===0?o[a]:o[a]-o[a-1],d=Math.ceil(r*l/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 sd=.001;function ad(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=sd}function nd(n,r){let e=new or(...n.position),t=new or(...n.controlNext.position),o=new or(...r.controlPrevious.position),i=new or(...r.position);return ad(e,t,i)&&ad(e,o,i)}function xl(n){let r=n.points.map(l=>new or(...l.data.position)),e=[n.points[0]],t=new or(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)ad(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,a=[];for(let l=0;l<s;l++){let d=e[l].data,p=new or(...d.position),f=new or(...d.controlPrevious.position),m=new or(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===s-1)){a[l]={...h,removedLength:0};continue}let y=o&&l==0?s-1:l-1,g=o&&l==s-1?0:l+1,x=e[y].data,b=e[g].data,w=new or(...x.position),S=new or(...b.position),P=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:P,nextDir:_});let v=nd(x,d),N=nd(d,b);if(!v||!N)a[l]={...h,removedLength:0};else{let T=P.clone().add(_).normalize(),C=T.clone().cross(P).length()/P.dot(T);a[l]={...h,tan:C,removedLength:d.roundness/C}}}for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p],h=null;if(!nd(e[d].data,e[p].data))f.position.distanceTo(m.position)>sd&&(h=new od(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)>sd&&(h=new od(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<s;l++){let d=a[l];if(d.removedLength===0){c[2*l]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),P=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=P.clone().lerp(w,2),v=f.clone().lerp(P,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new od(f,v,N,m)}let u=new id;return c.forEach(l=>{l&&u.add(l)}),u}var Se;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Se||(Se={}));var ei=n=>Se.is(n),bP={type:"completeState",isfromEntity:!0},ti=n=>class extends Qn(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 ys;this._recursiveBBox=new ys;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Se.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Se.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Se.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)Uo.toOps(this.data,s.data).forEach(c=>{let u=Ra.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=Uo.patch(this.data,s),Uo.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{ei(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Se.is(o[i]))return o[i];if(Se.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Se.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)ei(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Se.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)ei(s)&&s.isConcreteEntity&&s.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)ei(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)ei(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>ei(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Dn(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??yo.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)Se.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Se.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Dn(o,t)}updateByObjUpdateOp(t,o){this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,s){let a=this.data;this.data=o;let c=t,u=yt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=vt.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=vt.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,Uo.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),yt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(xr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=vt.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=Yn.resolve(o.overrides,l),p.updateByOp(t,dt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of Xr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of Xr.rootOverrideProps)if(yt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=xr.filterOp(d.overrideData,l);p&&d.updateByOp(p,dt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=xr.filterOp(d.overrideData,t);if(p){let f;a===d.data&&t===p?f=o:f=dt.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&&!er.is(t.props.type)&&rr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){rr.changeEntityProptotype(this,o,i);for(let s of this.children)Se.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),yt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),yt(t.path,["cloner"])!==null){let s=dt.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){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,a=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,l=xl(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new vl;c.updateMatrixWorld();let m=new vl().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(a==="tangential"){let y=new vl().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new vl().lookAt(p,g,new xP(0,1,0)),b=new vP().setFromRotationMatrix(x);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(bP)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof rr.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 rr.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 _P}from"three";import{BufferGeometry as SP,CylinderGeometry as wP,Float32BufferAttribute as ld,Vector2 as nr,Vector3 as bl}from"three";var Ih=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,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:a,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new gs(u,l,t,o,i,s,a,c*Math.PI/180,d,d,p,f):m=new wP(u,l,t,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function _o(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Nh(n){return new nr(n.y,-n.x)}var gs=class extends SP{constructor(r,e,t,o,i,s,a,c,u,l,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,b=t/2,w=new bl,S=new bl;f&&r==0&&(r=u),f&&e==0&&(e=l);let P=new nr(r,b),_=new nr(e,-b),v=null,N=null,T=null,C=null,O=P.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let $=P.clone();$.x-=A;let ee=Math.PI-O.angle(),Y=O.angle(),q=Math.tan(Y/2),H=Math.tan(ee/2),V=q+H,G=p?V:H,D=p?V:q;if(u=Math.min(u,(r-R)/G,O.length()/V),l=Math.min(l,(e-U)/D,O.length()/V),u>0){let F=u/q;v=P.clone().sub(new nr(F,u)),p&&(T=v.clone(),T.x-=A-V*u),P.sub(O.clone().setLength(F))}if(l>0){let F=l/H;N=_.clone().sub(new nr(F,-l)),_.add(O.clone().setLength(F)),p&&(C=N.clone(),C.x-=A-V*l,$.sub(O.clone().setLength(F)))}O=P.clone().sub(_);let L=O.length()<.5,B=[];for(let F=0;F<=o;F++){let M=[],Q=F/o,re=Q*c+a,oe=new nr(Math.sin(re),Math.cos(re));C&&N?(X(M,Q,oe,ee,l,C,-1,!0),X(M,Q,oe,Y,l,N,-1,!1)):N?(W(M,oe,N.x,0,-1),X(M,Q,oe,Y,l,N,-1,!1)):s||W(M,oe,e,U,-1);let K=Nh(O).normalize();if(_o(K,oe,w),!L)for(let te=0;te<=i;te++){let J=te/i,ie=O.clone().multiplyScalar(J).add(_);_o(ie,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}if(T&&v?(X(M,Q,oe,ee,u,v,1,!1),X(M,Q,oe,Y,u,T,1,!0)):v?(X(M,Q,oe,ee,u,v,1,!1),W(M,oe,v.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let te=Nh(O).multiplyScalar(-1).normalize();_o(te,oe,w);for(let J=0;J<=i;J++){let ie=J/i,ce=O.clone().multiplyScalar(-ie).add($);_o(ce,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}}p&&!s&&M.push(M[0]),B.push(M)}for(let F=0;F<B.length-1;F++)for(let M=0;M<B[0].length-1;M++){if(s&&p&&M==i)continue;let Q=B[F][M],re=B[F+1][M],oe=B[F+1][M+1],K=B[F][M+1],te=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(te!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(j(-1,B[0],a),j(1,B[B.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new ld(h,3)),this.setAttribute("normal",new ld(y,3)),this.setAttribute("uv",new ld(g,2));function X(F,M,Q,re,oe,K,te,J){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=te<0?ce:1-ce;J&&(se-=1),se*=re;let fe=new nr(Math.sin(se),Math.cos(se)*te),ze=fe.clone().multiplyScalar(oe).add(K);_o(ze,Q,S),h.push(S.x,S.y,S.z),_o(fe,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),F.push(x++)}}function W(F,M,Q,re,oe){let K=new bl,te=new nr,J=[Q,re];oe<0&&J.reverse();for(let ie of J)te.set(ie,b*oe),_o(te,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),F.push(x++)}function j(F,M,Q){let re=new nr(Math.sin(Q),Math.cos(Q)),oe=new nr(-Math.cos(Q),Math.sin(Q)),K=new bl,te=F<0?(ce,se,fe)=>m.push(ce,se,fe):(ce,se,fe)=>m.push(ce,fe,se),J=new nr((r+e+R+U)/4,0);_o(J,re,K),h.push(K.x,K.y,K.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let ie=x++;for(let ce of M){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(oe.x,0,oe.y);let fe=g.slice(ce*2,ce*2+2);g.push(...fe),x++}for(let ce=ie+1;ce<x-1;ce++)te(ie,ce,ce+1);te(ie,x-1,ie+1)}}};var Mh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return{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:a,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return u>0||l>0||c<360?p=new gs(0,r/2,t,o,i,s,a,c*Math.PI/180,u,l,d,0,!0):p=new _P(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as PP,BufferGeometry as TP,Float32BufferAttribute as cd,Vector3 as xs}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,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:c}=n.parameters,u;return a==0?u=new PP(r,e,t,o,i,s):u=new ud(r,e,t,o,i,s,a,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},dd=Math.PI/2,ud=class extends TP{constructor(r=1,e=1,t=1,o=1,i=1,s=1,a=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),a=Math.min(a,r/2,e/2,t/2);let l=[],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),a>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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new cd(d,3)),this.setAttribute("normal",new cd(p,3)),this.setAttribute("uv",new cd(f,2));function y(b,w,S,P,_,v,N,T,C,O,A){let R=(v-2*a)/C,U=(N-2*a)/O,$=v/2-a,ee=N/2-a,Y=T/2,q=C+1,H=O+1,V=0,G=0,D=new xs;for(let L=0;L<H;L++){let B=L*U-ee;for(let X=0;X<q;X++){let W=X*R-$;D[b]=W*P,D[w]=B*_,D[S]=Y,d.push(D.x,D.y,D.z),D[b]=0,D[w]=0,D[S]=T>0?1:-1,p.push(D.x,D.y,D.z),f.push(X/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let B=0;B<C;B++){let X=m+B+q*L,W=m+B+q*(L+1),j=m+(B+1)+q*(L+1),F=m+(B+1)+q*L;l.push(X,W,F),l.push(W,j,F),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,P,_,v,N,T,C,O,A){let R=(N-2*a)/O,U=N/2-a,$=T/2-a,ee=C/2,Y=O+1,q=0,H=0,V=new xs,G=new xs;for(let D=0;D<c+1;D++){let L=D/c*dd,B=Math.sin(L)*a,X=(1-Math.cos(L))*a,W=Math.sin(L),j=Math.cos(L);V[w]=($+B)*_,V[S]=(ee-X)*v,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=j*Math.sign(V[S]);for(let F=0;F<Y;F++){let M=F*R-U;V[b]=M*P,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(F/O),f.push(0),q+=1}}for(let D=0;D<c;D++)for(let L=0;L<O;L++){let B=m+L+Y*D,X=m+L+Y*(D+1),W=m+(L+1)+Y*(D+1),j=m+(L+1)+Y*D;l.push(B,X,j),l.push(X,W,j),H+=6}u.addGroup(h,H,A),h+=H,m+=q}function x(b,w,S){let P=new xs,_=new xs(r/2,e/2,t/2);_.subScalar(a);let v=[],N=b*w*S>0?(C,O,A)=>l.push(C,O,A):(C,O,A)=>l.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=dd*(1-C/c),R=Math.cos(A),U=Math.sin(A),$=0;for(let ee=0;ee<=C;ee++){let Y=Math.cos($),q=Math.sin($);P.x=R*Y,P.y=U,P.z=R*q;let H=_.clone().addScaledVector(P,a);d.push(b*H.x,w*H.y,S*H.z),p.push(b*P.x,w*P.y,S*P.z),f.push(0,0),O.push(m++),$+=dd/C}v.push(O)}let T=v.length-1;for(let C=0;C<T;C++){let O=v[C],A=v[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let U=1;U<=R;U++)N(O[U-1],O[U],A[U]),N(O[U],A[U+1],A[U])}}}};import{BufferGeometry as OP,Float32BufferAttribute as pd,Triangle as AP,Vector3 as Qr,Vector2 as fd}from"three";var Po=class extends OP{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],u=[];l(),d(),this.setAttribute("position",new pd(a,3)),this.setAttribute("normal",new pd(u,3)),this.setAttribute("uv",new pd(c,2));return;function l(){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 Qr,h=m.clone(),y=new AP,g=i*o,x=o-g,b=s+1,w=new Qr,S=(q,H)=>w.subVectors(q,H).normalize(),P=(q,H)=>Array(q).fill(void 0).map(H),_=P(r.length/3,(q,H)=>new Qr().fromArray(r,H*3).setLength(o)),v=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,D,L,B=1e10,X=-1;for(;(X=e.indexOf(q,X+1))!=-1;){let M=X-X%3;G=e[M+(X+1)%3],D=e[M+(X+2)%3],L=H.distanceToSquared(_[G]),B=Math.min(B,L),V.push([G,D,L])}B+=1e-6;let W=[],j=0,F=V.length;for(let M=0;M<F;M++){[G,D,L]=V[j];let Q=v[G]?.includes(q)==!0;L<=B&&W.push(G+ +Q*N),j=V.findIndex(re=>re[0]==D)}v.push(W)}let T=[];{let q=0,H=0,V,G,D=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let B=0;B<s-L;B++)[q,H]=[V+B+L+2,G+B+L+3],T.push(V,G,...D?[H,V]:[q,G],H,q),[V,G]=[q,H];T.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),$=[],ee=P(_.length,()=>P(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(x);let H=v[q];for(let W=0;W<H.length;W++){let j=H[W],F=H[(W+1)%f];y.setFromPointsAndIndices(_,q,j%N,F%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,ee[q][W])}let V=[],G=[],D=[],L=new Qr;s==0&&[...ee[q]].reduce((W,j)=>W.add(j),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let j=[],F=(W-1+f)%f,M=ee[q][F],Q=ee[q][W];m.copy(M).sub(C),h.copy(Q).sub(C);let re=C.angleTo(m),oe=m.angleTo(h),K=Math.cos(re)*g;s==0?O.copy(L):O.copy(C).setLength(x+K),G.push(K);let te=[O,M,Q];for(let J=0;J<2;J++){let ie=te[J],ce=te[J+1];R.subVectors(ie,C),U.subVectors(ce,C),A.crossVectors(R,U).normalize();for(let se=0;se<b;se++){let fe=[re,oe][J]*se/b;m.copy(R).applyAxisAngle(A,fe).add(C),V.push(m.clone()),J&&(S(m,C),j.push([se==0?ie:m.clone(),w.clone()]))}J&&(S(ce,C),j.push([ce,w.clone()]))}D.push(j)}$.push(D);let B=2*b,X=2;for(let W=0;W<f;W++){let j=B*W,F=B*((W+1)%f),M=[V[j]];for(let re=1;re<b;re++){R=V[j+re],U=V[F+re],M.push(R);for(let oe=1,K=re-X+1;oe<=K;oe++)m.lerpVectors(R,U,oe/(K+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(U)}for(let re=0;re<b;re++)M.push(V[re+b+j]);M.push(V[F+b]);let Q=T.map(re=>M[re]);a.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),u.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let Y=[];for(let q=0;q<v.length;q++)for(let H=0;H<f;H++){let V=v[q][H];if(V<N){let G=v[V].findIndex(B=>B%N==q),D=$[q][H],L=$[V][G];for(let B=0;B<b;B++){let X=D[B],W=L[b-B],j=D[B+1],F=L[b-(B+1)];[X,W,j,j,W,F].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}Y.push(D[0][0],L[b][0],D[b][0],L[0][0])}}for(;Y.length;){let q,H,V,G;[q,H]=Y.splice(0,2);let D=[q];for(;q!=H;)D.push(H),V=Y.indexOf(H),G=V%2,H=Y.splice(V-G,2)[1-G];w.subVectors(D[0],D[1]).cross(m.subVectors(D[0],D[2])).normalize();let L=w.dot(D[0])<0;L&&w.negate();for(let B=1;B<=D.length-2;B++)[D[B+ +L],D[B+1-+L],D[0]].forEach(X=>{a.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Qr;for(let _=0;_<a.length;_+=3){p.x=a[_+0],p.y=a[_+1],p.z=a[_+2];let v=S(p)/2/Math.PI+.5,N=P(p)/Math.PI+.5;c.push(v,1-N)}let f=new Qr,m=new Qr,h=new Qr,y=new Qr,g=new fd,x=new fd,b=new fd,w=(_,v,N,T)=>{T<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=T/2/Math.PI+.5)};for(let _=0,v=0;_<a.length;_+=9,v+=6){f.set(a[_+0],a[_+1],a[_+2]),m.set(a[_+3],a[_+4],a[_+5]),h.set(a[_+6],a[_+7],a[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),b.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=S(y);w(g,v+0,f,N),w(x,v+2,m,N),w(b,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],T=c[_+4],C=Math.max(v,N,T),O=Math.min(v,N,T);C>.9&&O<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),T<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function P(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new Po(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as CP}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,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,a=o===0&&i!==0?new vs(r*.5,i,s):new CP(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},vs=class extends Po{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],a=[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,a,c,r,e,t),this.type=c}static fromJSON(r){return new vs(r.radius,r.corner,r.cornerSides)}};import{Plane as zP,Shape as Yh,Vector2 as Jr,Vector3 as jP,MathUtils as bd,LineCurve as Sd,QuadraticBezierCurve as Xh,CubicBezierCurve as Pl}from"three";import{CubicBezierCurve as Sl,EllipseCurve as NP,LineCurve as wl,LineCurve3 as IP,MathUtils as MP,QuadraticBezierCurve as hd,SplineCurve as EP,Vector2 as xt,Vector3 as Rh}from"three";var bs=1e-12,ri=class{constructor(r){this.position=new xt;this.startPosition=new xt;this.uuid=MP.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 ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},ir=class extends ri{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,t){let o=new ir(e,new xt(...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 ir(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 xt,t=new xt){let[o,i]=this.computeTangents();return o&&i&&(Dh(o,e),Dh(i,t)),[e,t]}computeTangent(e=new xt){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new xt){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Dh(n,r=new xt){let e=n.length();return r.set(-n.y/e,n.x/e)}var yd=n=>n,ni=new xt,_l=new xt,LP=new xt,DP=new xt,BP=new xt,RP=new xt,Gh=new Rh,Vh=new Rh;function zh(n){let r=new xt;r.addVectors(n.v0,ni.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new xt;return e.addVectors(n.v2,_l.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Sl(n.v0,r,e,n.v2)}function Ss(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function GP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function VP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function gd(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 jh(n,r,e){return Bh(n,r)&&Bh(r,e)&&md(n.position,r.position,e.position)}function md(n,r,e){return ni.copy(r).sub(n).cross(_l.copy(e).sub(n))===0}function Fh(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,a=(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(a+c,s+u),o.set(a-c,s-u),[t,o]}function kh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Uh(n,r,e,t,o,i){let s=r.x-n.x,a=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+u)*(a+u)),d;return gd(r,n,e)>Math.PI&&(l*=-1),Ss(u,a)?d=(a+u)*(t/l-.5)*8/3/(s-c):d=(s+c)*(t/l-.5)*8/3/(u-a),o.set(r.x-d*a,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function xd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Bh(n,r){return md(n.position,n.controls[1].position,r.position)&&md(n.position,r.controls[0].position,r.position)}function Hh(n,r,e,t,o=.5){let i=ni.subVectors(r,n).multiplyScalar(o).add(n),s=_l.subVectors(e,r).multiplyScalar(o).add(r),a=LP.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=DP.subVectors(s,i).multiplyScalar(o).add(i),l=BP.subVectors(a,s).multiplyScalar(o).add(s),d=a,p=RP.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function Wh(n,r,e=12,t=!0){let o=Vh.set(0,0,0),i,s=0,a=[];for(let c=0;c<r.length;c++){let u=yd(r[c]),l=ni,d=To(u,e);a.push(d);for(let p=0;p<=d;p++)if(u instanceof Sl||u instanceof hd||u instanceof wl){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&VP(i,o))continue;i===void 0&&(i=Gh),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 qh(n,r,e,t=12,o=!0){let i=Vh.set(0,0,0),s=0,a=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=yd(r[c]),d=ni,p=To(l,t);a.push(p);for(let f=0;f<=p;f++)if(l instanceof Sl||l instanceof hd||l instanceof wl){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Gh:(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++),a}function vd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=To(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=To(s.curveAfter,r)),t.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=To(n[0].roundedCurveCorner,r)*.5),t}function To(n,r=12){return n&&n instanceof NP?r*2:n&&(n instanceof wl||n instanceof IP)?1:n&&n instanceof EP?r*n.points.length:r}function $h(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let a=yd(r[s]),c=To(a,e),u=ni;for(let l=0;l<=c;l++)if(a instanceof Sl||a instanceof hd||a instanceof wl){if(a.getPoint(l/c,u),o!==void 0&&GP(o,u,bs))continue;o===void 0&&(o=_l),o.copy(u),n.push(u.x,u.y),i++}}return Ss(n[0],n[n.length-2],bs)&&Ss(n[1],n[n.length-1],bs)&&(n.pop(),n.pop()),t&&i>1&&!(Ss(n[i-1],n[1],bs)&&Ss(n[i-2],n[0],bs))&&(n.push(n[0],n[1]),i++),n}var wd=new Jr,FP=new Jr,kP=new Jr,UP=new Jr,HP=new Jr,WP=new Jr,_e=class extends Yh{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new zP(new jP(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=bd.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new _e;return i.isClosed=e.isClosed,i.points=e.points.map(s=>ir.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>_e.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,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=e-t;if(a<=s.points.length-1)return s.points[a];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],a=s.points.indexOf(e);if(a>=0)return t+a;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=wd.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.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=bd.generateUUID()){let i;e instanceof Jr?i=e:i=new Jr(e,t);let s=new ir(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 Wh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=vd(this.points,e,!1),this.roundedCurveDivisions=vd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return qh(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),$h(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=To(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(xd(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(wd.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=a[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){xd(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],a=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,l=a&&c&&jh(a,s,c);if(!s.controlsMoved()&&u>0&&!l){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),x=Math.min(u,y*.499),b=Math.min(g,x),w=1-b/h,S=b/y,P=d.getPointAt(w,wd),_=p.getPointAt(S,FP);this._subSplitCurve(d,f,w,P,void 0),this._subSplitCurve(p,m,S,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=gd(P,s.position,_)/2,T=Math.tan(N)*P.distanceTo(s.position),[C,O]=Fh(P,_,T,kP,UP),A=kh(C,O,s.position),[R,U]=Uh(A,P,_,T,HP,WP);v=new Pl(P.clone(),R.clone(),U.clone(),_.clone())}else v=new Xh(P.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Sd)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let a=e,c=t,u=a.getUtoTmapping(o,0),l=Hh(a.v0,a.v1,a.v2,a.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new _e(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],a=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new ir(bd.generateUUID(),new Jr(s,a));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new _e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Pl&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof Xh&&(i[a]=zh(i[a]));for(a=0,c=i.length;a<c;a++){let d=i[a],p=a>0?i[a-1]:null,f;d instanceof Pl?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Sd&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],l=!1;return u instanceof Pl?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),l=!0):u instanceof Sd&&u.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Yh&&(this.shapeHoles=e.holes.map(i=>{let s=new _e;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 Pd=Math.PI*2;function _d({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function qP(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 Kh(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 $P(n,r,e,t,o,i,s,a,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(a,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*a,y=m*-i/o*s,g=h+(n+e)/2,x=y+(r+t)/2,b=(s-h)/o,w=(a-y)/i,S=(-s-h)/o,P=(-a-y)/i,_=Kh(1,0,b,w),v=Kh(b,w,S,P);return!u&&v>0&&(v-=Pd),u&&v<0&&(v+=Pd),{centerx:g,centery:x,ang1:_,ang2:v}}function Zh({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=$P(n,r,e,t,o,i,u,l,s,a),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Pd/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let b=0;b<x;b++)c.push(qP(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=_d(b[0],o,i,h,y),{x:P,y:_}=_d(b[1],o,i,h,y),{x:v,y:N}=_d(b[2],o,i,h,y);return{x1:w,y1:S,x2:P,y2:_,x:v,y:N}})}import{BufferAttribute as Cl,BufferGeometry as JP}from"three";var be;(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"})(be||(be={}));var Ge;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ge||(Ge={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var le=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,a,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),a=n.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,e.s)):(s=n.edgeSign(r,t,e),a=-n.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,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),a=n.transEval(t,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,e.t)):(s=n.transSign(r,t,e),a=-n.transSign(r,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,o.t)):i.t=(t.t+e.t)/2},n}(),ws=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}(),Tl=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}(),ii=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}(),Qh=function(){function n(){var r=new ii,e=new ws,t=new Tl(0),o=new Tl(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 Tl(0),t=new Tl(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 ii,e=new ii,t=new ws,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 ii;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ws;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 ws;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 ii;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 ws;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,a;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,a=r.next,a.prev=s,s.next=a},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,a,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&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=r&&le.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&le.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,a,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),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),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===a&&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}(),Jh=function(){function n(){this.handle=null}return n}(),ey=function(){function n(){this.key=null,this.node=0}return n}(),YP=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 Jh,this.handles[t]=new ey;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 Jh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new ey}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}(),Td=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}(),ty=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),XP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new ty,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 ty;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}(),KP=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?le.vertLeq(i.Org,s.Org)?le.edgeSign(s.Dst,i.Org,s.Org)<=0:le.edgeSign(i.Dst,s.Org,i.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(i.Dst,o,i.Org)>=0;var a=le.edgeEval(i.Dst,o,i.Org),c=le.edgeEval(s.Dst,o,s.Org);return a>=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 Td;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 be.ODD:return(e&1)!==0;case be.NONZERO:return e!==0;case be.POSITIVE:return e>0;case be.NEGATIVE:return e<0;case be.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,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),n.finishRegion(r,s),a=i.eUp,s=i}return a},n.addRightEdges=function(r,e,t,o,i,s){var a,c,u,l,d=!0;u=t;do ue(le.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),u=a.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),a.windingNumber=c.windingNumber-u.winding,a.inside=n.isWindingInside(r,a.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=a,l=u;c.dirty=!0,ue(c.windingNumber-u.winding===a.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=le.vertL1dist(e,r),i=le.vertL1dist(t,r),s=.5*i/(o+i),a=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*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(le.vertLeq(o.Org,i.Org)){if(le.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;le.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(le.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(!le.vertEq(o.Dst,i.Dst)),le.vertLeq(o.Dst,i.Dst)){if(le.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(le.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,a=i.Org,c=o.Dst,u=i.Dst,l,d,p=new ii,f,m;if(ue(!le.vertEq(u,c)),ue(le.edgeSign(c,r.event,s)<=0),ue(le.edgeSign(u,r.event,a)>=0),ue(s!==r.event&&a!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),d=Math.max(a.t,u.t),l>d))return!1;if(le.vertLeq(s,a)){if(le.edgeSign(u,s,a)>0)return!1}else if(le.edgeSign(c,a,s)<0)return!1;return n.debugEvent(r),le.intersect(c,s,u,a,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(a.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(a.s,s.s)),le.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=le.vertLeq(s,a)?s:a,le.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),le.vertEq(p,s)||le.vertEq(p,a)?(n.checkForRightSplice(r,e),!1):!le.vertEq(c,r.event)&&le.edgeSign(c,r.event,p)>=0||!le.vertEq(u,r.event)&&le.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):(le.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),le.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,a,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),a=e.eUp,c=s.eUp,u=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(r,e),le.vertEq(a.Org,r.event)&&(r.mesh.splice(i.Oprev,a),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),le.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}le.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,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,a,c;if(o=e.eUp,le.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!le.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=a=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),le.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,a,c,u=new Td;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=le.vertLeq(a.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=r.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(r,i,null);a.Onext===s?n.connectRightVertex(r,o,a):n.addRightEdges(r,o,a.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Td,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 XP(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,a=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,a)},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,le.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 YP(i,le.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||!le.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}(),ZP=function(){function n(){this.mesh=new Qh,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=be.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,a,c=[0,0,0],u=[0,0,0],l=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,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 a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.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(;le.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;le.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(le.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(le.edgeGoesLeft(o.Lnext)||le.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&&(le.edgeGoesRight(t.Lprev)||le.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,a=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ge.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===Ge.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,l=0;i=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.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[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Qh),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=be.ODD),e===void 0&&(e=Ge.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_(),KP.computeInterior(this,s);var a=this.mesh;return e===Ge.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ge.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},n}();function sr(n){var r=n.windingRule,e=r===void 0?be.ODD:r,t=n.elementType,o=t===void 0?Ge.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,u=n.normal,l=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new ZP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,s,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var nF=be.ODD,iF=be.NONZERO,sF=be.POSITIVE,aF=be.NEGATIVE,lF=be.ABS_GEQ_TWO,cF=Ge.POLYGONS,dF=Ge.CONNECTED_POLYGONS,uF=Ge.BOUNDARY_CONTOURS;import{BufferAttribute as Al,BufferGeometry as QP}from"three";var Ol=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*Ol.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*Ol.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=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);a.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=a,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)}},_s=Ol;_s.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ps={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Ad={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Cd={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Od=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),si=class extends QP{constructor(e,t,o=0,i=12,s=3,a=be.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 v=_.extractShapePointsToFlatArray([],i),N=[];for(let T=v.length-1;T>=1;T-=2){let C=v[T-1],O=v[T-0];N.push(C,O)}return N}),l;try{l=sr({windingRule:a,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{l=Ps}let d;try{d=sr({windingRule:be.ODD,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=Ad}if(!l)throw new Error("error generating geometry");let p=l.elementCount;if(d){l.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let v=d.elements[_],N=_%2===0?l.vertexCount:0;l.elements.push(v+N)}for(let _=0;_<d.vertexIndices.length;_++){let v=d.vertexIndices[_],N=l.vertexCount;l.vertexIndices.push(v+N)}for(let _=0;_<d.vertices.length;_++){let v=d.vertices[_];l.vertices.push(v)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,v=l.vertexCount;_<v;_++){let N=_*2,T=l.vertices[N+0],C=l.vertices[N+1];T<f&&(f=T),T>m&&(m=T),C<h&&(h=C),C>y&&(y=C)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new _s(this._computeBufferEstimatedSize(l));let g=[],x=[];for(let _=l.elementCount-1;_>=0;_--){let v=_>=p,N=_*2,T=l.elements[N+0],C=l.elements[N+1],O=T+C,A={start:T,count:C,normals:[],continuous:[],concave:[]},R=T,U=O-1,$=T+1,ee=this._shape.roundedCurves.length;do{let V=R-T,G=l.vertices[U*2+0],D=l.vertices[U*2+1],L=l.vertices[R*2+0],B=l.vertices[R*2+1],X=l.vertices[$*2+0],W=l.vertices[$*2+1],j=L-G,F=B-D,M=Math.sqrt(j*j+F*F);j/=M,F/=M;let Q=L-X,re=B-W,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=j*re-F*Q>0;let K=l.vertexIndices[R];if(Array.isArray(K))A.continuous[V]=!1;else{let[te,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let ie=J===1?te+1:te-1;ie=(ie+ee)%ee;let ce=J===1?0:1,se=this._shape.roundedCurves[te].getTangent(J),fe=this._shape.roundedCurves[ie].getTangent(ce);A.continuous[V]=se.dot(fe)>.95}}v&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[U,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==T+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(T*2,O*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,G)=>[G,G]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(T*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,D=(1-Math.cos(G))*this._bevelSize,L=[],B=[],X=[],W=[],j=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=l.vertices[A.start*2+Q+0],K=l.vertices[A.start*2+Q+1],te=-A.normals[re+0]*D,J=-A.normals[re+1]*D,ie=-A.normals[Q+0]*D,ce=-A.normals[Q+1]*D;if(A.concave[M]||!A.concave[M]&&v){let se=Math.atan2(J,te),fe=Math.atan2(ce,ie);fe>se&&(fe-=Math.PI*2);let ze=fe-se;if(A.continuous[M]||v){let ge=se+ze/2,qe=Math.cos(ge)*D,Oe=Math.sin(ge)*D;L[2*j+0]=oe+qe*(v?-1:1),L[2*j+1]=K+Oe*(v?-1:1),W[j]=M,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(ze)/Math.PI));for(let qe=0;qe<=ge;qe++){let Oe=se+ze*(qe/ge),Ot=Math.cos(Oe)*D,Wt=Math.sin(Oe)*D;L[2*j+0]=oe+Ot,L[2*j+1]=K+Wt,W[j]=M,j++}}}else L[2*j+0]=oe+te,L[2*j+1]=K+J,W[j]=M,B[M]=j,j++,L[2*j+0]=oe,L[2*j+1]=K,W[j]=M,j++,L[2*j+0]=oe+ie,L[2*j+1]=K+ce,W[j]=M,X[M]=j,j++}let F=sr({windingRule:be.POSITIVE,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=W[re],K=W[(re+1)%W.length];M.idx=[oe,K],M.Sym.idx=[K,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!F.vertexCount)break;for(let M=0;M<F.vertexIndices.length;M++){let[Q,re]=F.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let K=Q;K<oe;K++){let te=K%C,J=(K+1)%C;if(!A.continuous[te]||!A.continuous[J]){F.vertexIndices[M]=[Q,te],F.vertexIndices.splice(M+1,0,[J,re]),F.vertices.splice((M+1)*2,0,F.vertices[M*2],F.vertices[M*2+1]);break}}}Y.push({bevelI:V,angle:G,size:D,boundary:F,reverseMap:W,insetPoints:L})}let q=(V,G,D)=>{let L=0,B=V.boundary.vertexIndices.length;for(;L<B&&D(V.boundary.vertexIndices[G]);)G=(G+1)%B,L++;return L},H=g.length;for(let V=1;V<Y.length;V++){let G=Y[V-1],D=Y[V],L=G.boundary.vertexIndices.length,B=D.boundary.vertexIndices.length;if(!L||!B)break;let X=A.concave.length,W=0,j=Od(W,C);for(;!G.boundary.vertexIndices.filter(j).length||!D.boundary.vertexIndices.filter(j).length;)W++,j=Od(W,C);let F=G.boundary.vertexIndices.findIndex(j),M=D.boundary.vertexIndices.findIndex(j);do F=(F+1)%L;while(j(G.boundary.vertexIndices[F]));do M=(M+1)%B;while(j(D.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(F-1+L)%L),oe=this._buildBevelVert(A,D,(M-1+B)%B),K=re,te=oe,J,ie,ce=!1;do{j=Od(W,C);let se=q(G,F,j),fe=q(D,M,j),ze=ce;if(ce=!1,se&&!fe){for(let ge=0;ge<se;ge++)J=this._buildBevelVert(A,G,(F+ge)%L,ge/(se-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J;ce=!0}else if(!se&&fe)for(let ge=0;ge<fe;ge++)ie=this._buildBevelVert(A,D,(M+ge)%B,ge/(fe-1)),g.push(te.topN,K.topP,ie.topP),g.push(K.bottomP,te.bottomN,ie.bottomP),te=ie;else if(se&&fe)if(J=this._buildBevelVert(A,G,F,0),ie=this._buildBevelVert(A,D,M,0),ze?(g.push(K.topN,ie.topP,te.topN),g.push(K.topN,J.topP,ie.topP),g.push(ie.bottomP,K.bottomN,te.bottomN),g.push(ie.bottomP,J.bottomP,K.bottomN)):(g.push(te.topN,K.topN,J.topP),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,ie.bottomP)),K=J,te=ie,se===fe)for(let ge=1;ge<se;ge++)J=this._buildBevelVert(A,G,(F+ge)%L,ge/(se-1)),ie=this._buildBevelVert(A,D,(M+ge)%B,ge/(fe-1)),g.push(K.topN,J.topP,te.topN),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,ie.bottomP),K=J,te=ie;else if(se>fe){let ge=se/fe,qe=0;for(let Oe=1;Oe<se;Oe++)J=this._buildBevelVert(A,G,(F+Oe)%L,Oe/(se-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J,Oe>(qe+1)*ge&&(qe++,ie=this._buildBevelVert(A,D,(M+qe)%B,qe/(fe-1)),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,te.bottomN,ie.bottomP),te=ie)}else{let ge=fe/se,qe=0;for(let Oe=1;Oe<fe;Oe++)ie=this._buildBevelVert(A,D,(M+Oe)%B,Oe/(fe-1)),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,te.bottomN,ie.bottomP),te=ie,Oe>(qe+1)*ge&&(qe++,J=this._buildBevelVert(A,G,(F+qe)%L,qe/(se-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J)}F=(F+se)%L,M=(M+fe)%B,W=(W+1)%X}while(W!==Q)}if(this._depth>this._bevel*2&&this._buildWall(Y,A,g),v){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let D=g[G-2],L=g[G-1],B=g[G-0];V.push(B,L,D)}g.splice(H,g.length-H,...V)}if(v){let V=[];for(let G=Y[Y.length-1].boundary.vertices.length-1;G>=1;G-=2){let D=Y[Y.length-1].boundary.vertices[G-1],L=Y[Y.length-1].boundary.vertices[G-0];V.push(D,L)}x.push(V)}if(!v){let V=Y[Y.length-1],G;try{G=sr({windingRule:Y.length>1?be.POSITIVE:be.ODD,elementType:Ge.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...x]})}catch{G=Cd}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let D=0;D<G.elementCount*3;D+=3){let L=this._buildSurfaceVert(G,G.elements[D+0]),B=this._buildSurfaceVert(G,G.elements[D+1]),X=this._buildSurfaceVert(G,G.elements[D+2]);g.push(L.top,B.top,X.top),g.push(X.bottom,B.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Al(Uint32Array.from(g),1),w=new Al(this._buffer.positions,3),S=new Al(this._buffer.normals,3),P=new Al(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,P.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",P),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);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],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),l=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[d+0]=a,this._buffer.uvs[d+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[d+2]=a,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[a,c]=t.boundary.vertexIndices[o],u,l,d,p;a!==c?(l=a,u=c,p=!1,d=e.continuous[l]&&e.continuous[u]):(u=a,l=(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=l*2,x=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(x-this._minX)/this._width,P=(b-this._minY)/this._height,_=e.normals[y+0],v=e.normals[y+1],N=e.normals[g+0],T=e.normals[g+1];if(p){let U=N-_,$=T-v;_=_+U*(1-i),v=v+$*(1-i);let ee=Math.sqrt(_*_+v*v);_/=ee,v/=ee}let C=this._buffer.get(d?2:4),O=C*3,A=C*2,R={i:o,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=v*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=v*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S,d||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=N*f,this._buffer.normals[O+1]=T*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=T*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qr(this.userData),e}};var ai=class extends JP{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=be.ODD;this.elementType=Ge.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:be.ODD,elementType:Ge.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)),a,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{a=sr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{a=Ps}let p=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new Cl(new Float32Array(p*3),3),this._normalAttribute=new Cl(new Float32Array(p*3),3),this._uvAttribute=new Cl(new Float32Array(p*2),2),this._indexAttribute=new Cl(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1],N=(_-m)/x,T=(v-y)/b;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,T)}for(let w=0,S=f;w<S;w++){let P=w*3,_=a.elements[P+0],v=a.elements[P+1],N=a.elements[P+2];this._indexAttribute.setX(P+0,_),this._indexAttribute.setX(P+1,v),this._indexAttribute.setX(P+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new ai(this._shape,this._curveSegments);return e.userData=qr(this.userData),e}};var li=class extends si{constructor(e,t,o=0,i=12,s=3,a=be.ODD){super(e,t,o,i,s,a);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new li(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qr(this.userData),e}};var Mt=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:be.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,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof _e?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new _e(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new _e(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:a}),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 a;return r<=0?a=new ai(n.shape,o,{windingRule:s}):a=new li(n.shape,r,e,o,t,s),Object.assign(a,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as oy,Vector2 as ny}from"three";var iy=Math.PI*2,di=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 _e?n.shape:new _e,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:a,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=eT(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Mt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function eT(n,r,e,t,o,i){if(t>=iy)return o>30||o%4===0?(rT(n,r,e,i),Math.round(o/4)):ry(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},a=t+Math.PI*.5,c={x:Math.cos(a)*r,y:Math.sin(a)*e},u=Zh({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?tT(n,s.x,s.y,u,o,r,e,i):ry(n,t,o,r,e,i)}function tT(n,r,e,t,o,i,s,a){let c=Math.round(o/t.length);n.addPoint(ci(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=ci(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 a>0?sy(n,i,s,a):n.addPoint(ci(0,0)),c}function ry(n,r,e,t,o,i){let s=-r/e;for(let a=0;a<=e;a++){let c=s*a,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(ci(u,l))}return r<iy?i>0?sy(n,t,o,i):n.addPoint(ci(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&ay(n,t,o,i)),1}function rT(n,r,e,t=0,o=0,i=0){let s=.5522847498,a=r*s,c=e*s;n.addPoint(Nl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Nl(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Nl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Nl(o,i-e,o+a,i-e,o-a,i-e)),t>0&&ay(n,r,e,t)}function ci(n,r){return new ir(oy.generateUUID(),new ny(n,r))}function Nl(n,r,e,t,o,i){let s=ci(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function sy(n,r,e,t){ly(n,r,e,t).forEach(i=>n.addPoint(i))}function ay(n,r,e,t){let o=ly(n,r,e,t),i=new _e;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function ly(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new ny(o/r,i/e),a=n.points.map(c=>{let u=c.clone();return u.uuid=oy.generateUUID(),u}).reverse();return a.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),a}import{BufferGeometry as oT,Float32BufferAttribute as Nd,Uint32BufferAttribute as nT,Vector3 as cy}from"three";var dy=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:a,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new Ts(!1,r,e,t,o,i,s,a,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Id=new nT([0,0,0],1),Ts=class extends oT{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,a=1,c=1,u=1,l=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new cy,h=new cy,y=m(),g=m(),x=m(),b,w,S,P,_,v,N,T,C=m(),O=m(),A=m(),R=m(),U=m(),$=m(),ee=m(),Y=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(a*s),G=V+1,D=q/V,L=-q/2,B=l+1,X=2*Math.PI/l,W=Math.PI/2/p,j=.01,F=Math.min((1-d/100)*c,c-j),M=c-F,Q=0,re=2,oe=p*re+re,K=B*oe/re,te=K+B*G,J=B*(G+oe),[ie,ce,se]=[3,3,2].map(Ue=>Array(J*Ue).fill(0)),fe=[],ze=i-c;function ge(Ue,Gt){let hr=Math.PI/2;v=Gt*D,T=2*Math.PI*(v%H)/H+hr,v+=L,N=Math.sin(T)*ze,_=Math.cos(T)*ze,r?Ue.set(_,N,v):Ue.set(_,v,N)}ge(h,-1e-10),ge(y,0),C.copy(h),ge(h,1);let qe=h.distanceTo(y),Oe=f?0:M+F,Ot=qe*V+2*Oe,Wt=F,pn=Ot-Oe;for(let Ue=0;Ue<=V;Ue++){ge(g,Ue),Y.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),ee.crossVectors(Y,$).normalize();let Gt=Ue===0,hr=Ue===V,D0=Gt?3*Math.PI/2:W,B0=Gt?Wt:pn,R0=Gt?B:te,G0=Gt?0:J-B,V0=Y.clone().multiplyScalar(Gt?-M:M).add(g),z0=Y.clone().multiplyScalar(Gt?-1:1).normalize();for(let Fr=0;Fr<B;Fr++){let Uu=Fr*X;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(Uu)),y.copy(ee).multiplyScalar(c*Math.sin(Uu))),A.copy(O).normalize(),Gt||hr){f||(Q=G0+Fr,[0,1,2].forEach(At=>{ie[Q*3+At]=V0.getComponent(At),ce[Q*3+At]=z0.getComponent(At)}),se[Q*2]=+hr,se[Q*2+1]=Fr/l),y.copy(A).multiplyScalar(F),x.addVectors(g,y);for(let At=0;At<p;At++){let gc=At*W+D0;R.addVectors(h.copy(Y).multiplyScalar(M*Math.sin(gc)),y.copy(A).multiplyScalar(M*Math.cos(gc))),U.copy(R).normalize(),y.addVectors(x,R),R.normalize(),Q=R0+At*B+Fr,[0,1,2].forEach(ia=>{ie[Q*3+ia]=y.getComponent(ia),ce[Q*3+ia]=U.getComponent(ia)});let j0=+Gt+Math.sin(gc);se[Q*2]=(B0+M*j0)/Ot,se[Q*2+1]=Fr/l}}y.addVectors(g,O),Q=K+Ue*B+Fr,[0,1,2].forEach(At=>{ie[Q*3+At]=y.getComponent(At),ce[Q*3+At]=A.getComponent(At)}),se[Q*2]=(Oe+Ue*qe)/Ot,se[Q*2+1]=Fr/l}}let Rt=G+2*p+re,ra=1,[oa,na]=[+f,Rt-1];for(let Ue=oa;Ue<=na-1;Ue++){let Gt=f&&Ue===na-1;for(let hr=0;hr<B-1;hr++)b=Ue*B+hr,w=b+1,S=(Gt?hr:b)+B,P=(Gt?hr+1:w)+B,Ue===0?fe.push(w,P,S):Ue===Rt-2?fe.push(b,w,S):fe.push(b,w,S,w,P,S)}this.setIndex(fe),this.setAttribute("position",new Nd(ie,3)),this.setAttribute("normal",new Nd(ce,3)),this.setAttribute("uv",new Nd(se,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,a,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,s=i+1,a=(d?p:i)+t,c=(d?p+1:s)+t,o[u++]=i,o[u++]=s,o[u++]=a,o[u++]=s,o[u++]=c,o[u++]=a;return o.length=u,Id.array=o,Id.count=o.length,Id}};import{IcosahedronGeometry as iT}from"three";var uy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Os(r*.5,i,s):new iT(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Os=class extends Po{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],a="IcosahedronGeometry";super(i,s,a,r,e,t),this.type=a}static fromJSON(r){return new Os(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as sT,Shape as aT}from"three";var py=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 aT;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 sT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as by,BufferGeometryLoader as vT,Vector3 as bT,BoxGeometry as Sy}from"three";import{BufferGeometry as hT,Vector2 as Dd,Vector3 as vy}from"three";import{Box3 as lT,BufferAttribute as As,BufferGeometry as fy,Color as Ld,EventDispatcher as cT,Float32BufferAttribute as ui,Matrix3 as my,Matrix4 as xy,MathUtils as dT,Object3D as uT,Sphere as pT,Vector2 as kt,Vector3 as ut,Vector4 as fT}from"three";var Ar=new xy,Md=new uT,Il=new ut,Oo=class extends cT{constructor(){super(),this.uuid=dT.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 my().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,a=i.vertexNormals.length;s<a;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 Ar.makeRotationX(r),this.applyMatrix4(Ar),this}rotateY(r){return Ar.makeRotationY(r),this.applyMatrix4(Ar),this}rotateZ(r){return Ar.makeRotationZ(r),this.applyMatrix4(Ar),this}translate(r,e,t){return Ar.makeTranslation(r,e,t),this.applyMatrix4(Ar),this}scale(r,e,t){return Ar.makeScale(r,e,t),this.applyMatrix4(Ar),this}lookAt(r){return Md.lookAt(r),Md.updateMatrix(),this.applyMatrix4(Md.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,a=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 ut().fromBufferAttribute(i,p)),a!==void 0&&e.colors.push(new Ld().fromBufferAttribute(a,p));function l(p,f,m,h){let y=a===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ut().fromBufferAttribute(s,p),new ut().fromBufferAttribute(s,f),new ut().fromBufferAttribute(s,m)],x=new pi(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new kt().fromBufferAttribute(c,p),new kt().fromBufferAttribute(c,f),new kt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new kt().fromBufferAttribute(u,p),new kt().fromBufferAttribute(u,f),new kt().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Il).negate(),this.translate(Il.x,Il.y,Il.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new xy;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 ut,e=new ut;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,a),e.subVectors(s,a),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 ut;if(r){let t=new ut,o=new ut;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],u=this.vertices[a.b],l=this.vertices[a.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.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 Oo;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 a=0,c=this.faces.length;a<c;a++){let u=new ut,l={a:new ut,b:new ut,c:new ut};i.push(u),s.push(l)}}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 a=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(a.normal),u.a.copy(a.vertexNormals[0]),u.b.copy(a.vertexNormals[1]),u.c.copy(a.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 lT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new pT),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,a=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new my().getNormalMatrix(e));for(let p=0,f=a.length;p<f;p++){let h=a[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,b=new pi(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=x.length;w<S;w++)y=x[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++)x.push(g[b].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ut(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,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),a&&a.push(i[u])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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=[],a={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,P=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,b),_=l(_,5,w),_=l(_,6,S),_=l(_,7,P),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(b&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(S&&t.push(p(h.color)),P){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[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 Oo().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];x.push(S.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let 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],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}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 a=r.skinWeights;for(let p=0,f=a.length;p<f;p++)this.skinWeights.push(a[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Ed().fromGeometry(this),e=new fy,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Ml.call(new As(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Ml.call(new As(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",hy.call(new As(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",yy.call(new As(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",yy.call(new As(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let u=s[a],l=new ui(u.data.length*3,3);l.name=u.name,i.push(Ml.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ui(r.skinIndices.length*4,4);e.setAttribute("skinIndex",gy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ui(r.skinWeights.length*4,4);e.setAttribute("skinWeight",gy.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new fy,t=r.geometry;if(r.isPoints||r.isLine){let o=new ui(t.vertices.length*3,3),i=new ui(t.colors.length*3,3);if(e.setAttribute("position",Ml.call(o,t.vertices)),e.setAttribute("color",hy.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ui(t.lineDistances.length,1);e.setAttribute("lineDistance",mT.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};Oo.prototype.isGeometry=!0;var Ed=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 a=s[o];a.materialIndex!==i&&(i=a.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,a=r.morphTargets,c=a.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:a[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let b=x.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=x.normal;this.normals.push(S,S,S)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=x.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 kt,new kt,new kt))}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 kt,new kt,new kt))}for(let S=0;S<c;S++){let P=a[S].vertices;u[S].data.push(P[x.a],P[x.b],P[x.c])}for(let S=0;S<d;S++){let P=l[S].vertexNormals[g];p[S].data.push(P.a,P.b,P.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},pi=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 ut,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Ld,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function mT(n){return this.array.set(n),this}function hy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new Ld),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function yy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new kt),r[e++]=i.x,r[e++]=i.y}return this}function Ml(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new ut),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function gy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new fT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var yT=["a","b","c"];function gT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Bd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Rd(n,r,e,t,o,i){let s=Math.min(n,r),a=Math.max(n,r),c=s+"_"+a,u;if(t.has(c))u=t.get(c);else{let l=e[s],d=e[a];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function xT(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],Rd(s.a,s.b,n,t,s,e),Rd(s.b,s.c,n,t,s,e),Rd(s.c,s.a,n,t,s,e)}function El(n,r,e,t,o){n.push(new pi(r,e,t,void 0,void 0,o))}function fi(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Ll(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Dl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof hT?r=new Oo().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 vy,t,o,i,s,a,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;xT(c,u,p,f);let m=[],h,y,g,x,b,w,S;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new vy,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(x=y.faces[s],a=0;a<3&&(h=c[gT(x,yT[a])],!(h!==y.a&&h!==y.b));a++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let P,_,v,N,T,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],T=p[o].edges,t=T.length,t==3?P=3/16:t>3&&(P=3/(8*t)),_=1-t*Number(P),v=P,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=T[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,$,ee,Y,q=[],H=[],V,G,D,L,B=new Dd,X=new Dd,W=new Dd;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(Bd(x.a,x.b,f).newEdge)+U,ee=Number(Bd(x.b,x.c,f).newEdge)+U,Y=Number(Bd(x.c,x.a,f).newEdge)+U,El(q,$,ee,Y,x.materialIndex),El(q,x.a,$,Y,x.materialIndex),El(q,x.b,ee,$,x.materialIndex),El(q,x.c,Y,ee,x.materialIndex),d&&(V=l[o],G=V[0],D=V[1],L=V[2],B.set(fi(G.x,D.x),fi(G.y,D.y)),X.set(fi(D.x,L.x),fi(D.y,L.y)),W.set(fi(G.x,L.x),fi(G.y,L.y)),Ll(H,B,X,W),Ll(H,G,B,W),Ll(H,D,X,B),Ll(H,L,W,X));r.vertices=R,r.faces=q,d&&(r.faceVertexUvs[0]=H)}};var Ze=new bT,wy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new by().copy(new Sy(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Ze),t={width:Ze.x,height:Ze.y,depth:Ze.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 by().copy(new Sy(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Ze)):Ze.set(s.width,s.height,s.depth),(r!==Ze.x||e!==Ze.y||t!==Ze.z)&&i.scale(Ze.x===0?1:r/Ze.x,Ze.y===0?1:e/Ze.y,Ze.z===0?1:t/Ze.z);let a=i.originalGeometry;try{o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Dl(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new vT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Ze);let s=100/Ze.x;Object.assign(i.parameters,{width:100,height:Ze.y*s,depth:Ze.z*s}),r(this.build(i))})}};var Bl=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 _e?n.shape:new _e,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:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Mt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as ST,Float32BufferAttribute as Gd,Vector2 as Cr,Vector3 as ot}from"three";var _y=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:a,cornerSegments:c}=n.parameters,u=new zd(r*.5,e,o,i,s,a,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Cs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Vd(n,r,e,t,o,i){let s=r.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let u=s.add(a).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(a,t/Math.sin(u))}}function wT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var zd=class extends ST{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let c=[],u=[],l=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,b=new ot(0,-f,0),w=new ot(0,f,0),S=new Cr(r,-f),P=new Cr(h,-f),_=new Cr(0,w.y).sub(P),v=new Cr(0,w.y).sub(S),N=new Cr(_.y,-_.x).normalize(),T=new Cr(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new ot(N.x,N.y,0),V=new ot(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),$=new ot;if(!i){u.push(b.x,b.y,b.z),l.push(0,-1,0),d.push(0,0);let H=p++,V=[],G=S.clone(),D=R/Math.cos(Math.PI/t);G.x-=D;for(let L=0;L<t;L++){let B=L/t*Math.PI*2+m,X=new Cr(Math.sin(B),Math.cos(B));Cs(G,X,$),u.push($.x,$.y,$.z),l.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let ee=[];{let H=new ot,V=new ot,G=new ot,D=new ot,L=new ot,B=new ot;for(let X=0;X<t;X++){let W=X/t*Math.PI*2+m,j=(X+.5)/t*Math.PI*2+m,F=(X+1)/t*Math.PI*2+m,M=new Cr(Math.sin(W),Math.cos(W)),Q=new Cr(Math.sin(j),Math.cos(j)),re=new Cr(Math.sin(F),Math.cos(F));Cs(S,M,V),Cs(S,re,G),Cs(N,Q,H),Vd(w,V,G,U,U,D),u.push(D.x,D.y,D.z),Vd(V,w,G,U,R,L),u.push(L.x,L.y,L.z),Vd(G,V,w,R,U,B),u.push(B.x,B.y,B.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,K=p++,te=p++;if(c.push(oe,K,te),s>0){{let ce=V.clone().add(G).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),ze=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ge=B.clone().sub(L);Y(ce,ge,ze,_.angle())}let J,ie;{let ce=new ot;Cs(T,re,ce);let se=B.clone().add(D).multiplyScalar(.5);se=wT(se,G,w);let fe=B.clone().sub(D);[J,ie]=Y(se,fe,ce,A,D.y)}{let ce=J,se=ce.clone().setY(0).normalize(),fe=new ot(0,-1,0),ze=se.clone().cross(fe);q(ce,se,fe,ze)}ee.concat(ie);{let ce=_.angle(),se=Math.PI-ce,fe=w.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let ze=new ot,ge=[];for(let Oe=0;Oe<a;Oe++){let Ot=[],Wt=Math.PI/2-se*Oe/a,pn=Math.cos(Wt),Rt=Math.sin(Wt),ra=j;for(let oa=0;oa<=Oe;oa++){let na=Math.cos(ra),Ue=Math.sin(ra);H.x=pn*Ue,H.y=Rt,H.z=pn*na,ze.copy(fe).addScaledVector(H,s),u.push(ze.x,ze.y,ze.z),l.push(H.x,H.y,H.z),d.push(0,0),Ot.push(p++),ra+=Math.PI*2/Oe/t}ge.push(Ot)}ie.reverse(),ge.push(ie);let qe=ge.length-1;for(let Oe=0;Oe<qe;Oe++){let Ot=ge[Oe],Wt=ge[Oe+1],pn=Ot.length-1;c.push(Wt[1],Ot[0],Wt[0]);for(let Rt=1;Rt<=pn;Rt++)c.push(Ot[Rt],Ot[Rt-1],Wt[Rt]),c.push(Wt[Rt+1],Ot[Rt],Wt[Rt])}}}}}this.setIndex(c),this.setAttribute("position",new Gd(u,3)),this.setAttribute("normal",new Gd(l,3)),this.setAttribute("uv",new Gd(d,2));function Y(H,V,G,D,L){let B=-D/2,X=(Math.PI-D)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(X));let j=new ot,F=new ot,M=1,Q=p,re=[];for(let oe=0;oe<=a;oe++){let K=B+oe/a*D;F.set(0,0,0),F.addScaledVector(W,Math.sin(K)),F.addScaledVector(G,Math.cos(K));for(let te=0;te<=M;te++){let J=te/M-.5;if(j.copy(H),j.addScaledVector(V,J),j.addScaledVector(F,s),L!=null){let ie=Math.max(0,j.y-L);j.addScaledVector(V,-ie/V.y)}u.push(j.x,j.y,j.z),l.push(F.x,F.y,F.z),d.push(0,0),te===0&&re.push(p),p++}}for(let oe=0;oe<a;oe++)for(let K=0;K<M;K++){let te=Q+K+(M+1)*oe,J=te+(M+1),ie=J+1,ce=te+1;c.push(te,J,ce),c.push(J,ie,ce)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,D){let L=Math.PI/2,B=v.angle()-L,X=[],W=new ot,j=new ot;for(let M=0;M<=a;M++){let Q=[],re=M/a;for(let oe=0;oe<=M;oe++){let te=((M?oe/M:0)-.5)*x,J=Math.cos(te),ie=Math.sin(te),ce=Math.atan(Math.tan(B)*J),se=(L+ce)*re,fe=Math.cos(se),ze=Math.sin(se);W.set(0,0,0),W.addScaledVector(V,ze*J),W.addScaledVector(G,fe),W.addScaledVector(D,ze*ie),j.copy(H).addScaledVector(W,s),u.push(j.x,j.y,j.z),l.push(W.x,W.y,W.z),d.push(0,0),Q.push(p++)}X.push(Q)}let F=X.length-1;for(let M=0;M<F;M++){let Q=X[M],re=X[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let K=1;K<=oe;K++)c.push(Q[K-1],Q[K],re[K]),c.push(Q[K],re[K+1],re[K])}}}};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,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 _e?n.shape:new _e,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:a,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,P){return S>e&&P>t?Math.min(w*e/S,w*t/P):S>e?w*e/S:P>t?w*t/P:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=d.x,y=d.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Mt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as _T}from"three";var Py=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:a,thetaStart:c,thetaLength:u}=n.parameters,l=new _T(.5*r,o,i,s,a,c,u);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as PT}from"three";var Ty=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 PT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as TT,Float32BufferAttribute as jd,Vector3 as OT}from"three";var Oy=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,a=new Fd(r,e,t,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Fd=class extends TT{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],u=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,F=0,M=0)=>new OT(j,F,M),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],b=-g,w=+g,[S,P,_]=[f(b,-y,+x),f(b,-y,-x),f(b,+y,-x)],v=(j,F=!1)=>Math.sin(j-Math.PI/(1+ +F)),N=(j,F=!1)=>Math.cos(j-Math.PI/(1+ +F));_.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-x,C=S.z-l;o<=p?(_.z=Math.min(T,C),_.z==C&&(_.y-=(T-C)/Math.tan(p-o))):P.z=Math.min(P.z-T-x,S.z-l),m.subVectors(S,P),h.subVectors(_,P);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(R).add(P);m.set(0,v(o,!0),N(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let F=p+o+j*$;m.set(0,Math.sin(F)*A,Math.cos(F)*A),m.add(U),h.set(0,v(F),N(F)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let ee=Math.sin($/2)*A*2,Y=d.length-1,q=d[0][0].distanceTo(d[1][0]),H=d[Y-1][0].distanceTo(d[Y][0]),V=q+ee*s+H;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*ee)/V);d[Y].push(0);let[G,D,L]=d[0],B,X,W;for(let j=1;j<d.length;j++)[B,X,W]=d[j],a.push(b,G.y,G.z,b,B.y,B.z,w,G.y,G.z,w,G.y,G.z,b,B.y,B.z,w,B.y,B.z),c.push(0,D.y,D.z,0,X.y,X.z,0,D.y,D.z,0,D.y,D.z,0,X.y,X.z,0,X.y,X.z),u.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,D,L]=[B,X,W];this.setAttribute("position",new jd(a,3)),this.setAttribute("normal",new jd(c,3)),this.setAttribute("uv",new jd(u,2))}};var Gl=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 _e?n.shape:new _e,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:a,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=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,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,P=f+Math.sin(S)*d,_=m+Math.cos(S)*p;l.addPoint(l.createPoint(P,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,P=m+Math.sin(y)*p;l.addPoint(l.createPoint(S,P)),y+=h,S=f+Math.cos(y)*g,P=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(S,P)),y+=h}l.isClosed=!0;for(let w=0,S=l.points.length;w<S;w++)l.points[w].roundness=i;l.roundness=i,l.update();let b=Mt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as AT}from"three";var Ay=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 AT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Cy=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:a,cornerSegments:c}=n.parameters,u=CT(r,e,t,r*.5,s,i,0,0,o,a,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function CT(n,r,e,t,o,i,s,a,c,u,l){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new Ts(!0,n,r,e,t,o,i,s,a,c,u,l)}import{TorusKnotGeometry as NT}from"three";var Ny=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,a=r*.5;a!==e&&(a-=e);let c=new NT(a,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Iy=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 _e?n.shape:new _e,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:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5;a?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Mt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Ey,Vector3 as nt,Matrix4 as Ns,BufferGeometry as Ly,BufferAttribute as kd,MathUtils as Ud}from"three";function My(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function IT(n,r,e){let t=[new nt,new nt,new nt],o=[new nt,new nt,new nt];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let a=o[s],c=Ud.lerp(i.length(),a.length(),e);i.lerp(a,e).setLength(c)}),new Ns().makeBasis(t[0],t[1],t[2])}var Dy=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??di.create({parameters:Wc}).userData.shape;return{path:n.path??qn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...ol,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new Hd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Ly,{userData:{...n,type:"PathGeometry"}})}},Hd=class extends Ly{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)||!My(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=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-a+1),s+2),l=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+a)%e.length:Math.min(O+a,e.length-1);l.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,R)=>{l[O]=l[O].clone().lerp(l[A],R),d[O]=IT(d[O],d[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let O=l.length-1;l[O].copy(l[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:x,vertices:b}=this._computeShapePoints(5),w=0,S=0;x.sort((O,A)=>O.start-A.start),x.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let P=S*u,_,v=0;if(this._isOpenEnded()){try{_=sr({windingRule:be.ODD,elementType:Ge.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=Cd}v=_.vertexCount}let N=P+2*v,T={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];x.forEach(O=>{this._extrudeRegion(O,b,d,l,T,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,P,C,T,d[0],l[0],!1),this._closeEnd(_,P+v,C,T,d[d.length-1],l[l.length-1],!0)),this.setAttribute("position",new kd(T.positions,3)),this.setAttribute("normal",new kd(T.normals,3)),this.setAttribute("uv",new kd(T.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=xl(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new nt,a=new nt,c=new nt,u=new nt,l=new nt(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(x).normalize(),S=b.clone().sub(g).normalize(),P=w.clone().add(S).normalize();c.copy(P),y===0&&(P.equals(l)||P.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(P).normalize(),v=P.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(s.copy(v),a.copy(P));let N=new Ns().makeBasis(_,v,P);t.push(N)}let d=i?a:c,p=i?s:new nt(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 Ns().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:a,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new Ns,d=new Ns;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(Ud.lerp(s,s+a,m));let h=Ud.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=be.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let b=y[x-1],w=y[x-0];g.push(b,w)}return g}),a;try{a=sr({windingRule:t,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{a=Ps}let c;try{c=sr({windingRule:be.ODD,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=Ad}if(!a)throw new Error("error generating geometry");let u=a.elementCount;if(c){a.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?a.vertexCount:0;a.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=a.vertexCount;a.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];a.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=a.vertexCount;h<y;h++){let g=h*2,x=a.vertices[g+0],b=a.vertices[g+1];x<l&&(l=x),x>d&&(d=x),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=a.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=a.elements[g+0],b=a.elements[g+1],w=x+b,S={start:x,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let P=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let T=P-x,C=a.vertices[_*2+0],O=a.vertices[_*2+1],A=a.vertices[P*2+0],R=a.vertices[P*2+1],U=a.vertices[v*2+0],$=a.vertices[v*2+1],ee=A-C,Y=R-O,q=Math.sqrt(ee*ee+Y*Y);ee/=q,Y/=q;let H=A-U,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[T*2+0]=-V,S.normals[T*2+1]=H;let D=a.vertexIndices[P];if(Array.isArray(D))S.continuous[T]=!1;else{let[L,B]=o.getCurveIndexFromVertexId(D-1,!0);if(B>0&&B<1)S.continuous[T]=!0;else{let X=B===1?L+1:L-1;X=(X+N)%N;let W=B===1?0:1,j=o.roundedCurves[L].getTangent(B),F=o.roundedCurves[X].getTangent(W);S.continuous[T]=j.dot(F)>.95}}y&&(S.normals[T*2+0]*=-1,S.normals[T*2+1]*=-1),[_,P,v]=[P,v,v+1],v>=w&&(v-=b)}while(v!==x+1)}return{regions:[i,...s],infos:m,vertices:a.vertices}}_insertVertex(e,t,o,i,s){let a=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[a+0]=s.x,e.uvs[a+1]=s.y}_extrudeRegion(e,t,o,i,s,a,c){let u=new nt,l=new nt,d=new nt,p=new nt,f=new Ey;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;l.set(t[S+0],t[S+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,x,d,p,f),x++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;l.set(t[S+0],t[S+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,x,d,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&x++;let w=b===e.count-1?0:x+1,S=y+x,P=y+w,_=g+w,v=g+x;e.isHole?a.push(S,_,P,S,v,_):a.push(S,P,_,S,_,v),x++}}}_closeEnd(e,t,o,i,s,a,c){let u=e.vertexCount,l=new nt(0,0,c?-1:1).applyMatrix4(s),d=new nt,p=new Ey;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(a),this._insertVertex(i,t+m,d,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}};import{BufferAttribute as By,BufferGeometry as Wd}from"three";import{mergeBufferGeometries as MT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ry(){let n=new Wd;return n.setAttribute("position",new By(new Float32Array([]),3)),n.setIndex(new By(new Uint16Array([]),1)),n}var ET=Ry().attributes,LT=12,DT=1,mi=class extends Wd{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,ET),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:a,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=l===2?u.toUpperCase():l===3?u.toLowerCase():u,p=BT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,x=f.map(S=>new _e().fromShape(S));this.vectorShapes=x;let b=x.map(S=>Mt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:a,windingRule:s<=0?be.NONZERO:be.ODD,subdivisions:this.isLowResolution&&s>0?DT:LT}})),w=b.length?MT(b):Ry();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,P])=>{this.setAttribute(S,P)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Jt(new Wd,mi.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 BT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ var U0=Object.create;var vc=Object.defineProperty;var H0=Object.getOwnPropertyDescriptor;var W0=Object.getOwnPropertyNames;var q0=Object.getPrototypeOf,$0=Object.prototype.hasOwnProperty;var ia=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Y0=(n,r)=>{for(var e in r)vc(n,e,{get:r[e],enumerable:!0})},X0=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of W0(r))!$0.call(n,o)&&o!==e&&vc(n,o,{get:()=>r[o],enumerable:!(t=H0(r,o))||t.enumerable});return n};var sa=(n,r,e)=>(e=n!=null?U0(q0(n)):{},X0(r||!n||!n.__esModule?vc(e,"default",{value:n,enumerable:!0}):e,n));var Sh=ia((ed,bh)=>{(function(n,r){typeof ed=="object"?bh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(ed,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 a=r();t=a(" "),o=a(" "),i=a(" ");for(var c=0;c<e.length;c++)t-=a(e[c]),t<0&&(t+=1),o-=a(e[c]),o<0&&(o+=1),i-=a(e[c]),i<0&&(i+=1);a=null;var u=function(){var l=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=l-(s=l|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,s=+l[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var 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 Oh=ia((yl,Th)=>{(function(n,r){typeof yl=="object"&&typeof Th<"u"?r(yl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(yl,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,a,c,u,l,d,p,f,m,h,y,g,x=r[0].length,b=r.length;if(b<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],P=[],_=e==="f"?b:x,v=h=p=0;v<b;v++)S[v]=new Array(_).fill(0);for(v=0;v<x;v++)P[v]=new Array(x).fill(0);var N,T=new Array(x).fill(0);for(v=0;v<b;v++)for(s=0;s<x;s++)S[v][s]=r[v][s];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,s=v;s<b;s++)m+=Math.pow(S[s][v],2);if(m<i)p=0;else for(f=(d=S[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v]=d-p,s=c;s<x;s++){for(m=0,a=v;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(T[v]=p,m=0,s=c;s<x;s++)m+=Math.pow(S[v][s],2);if(m<i)p=0;else{for(f=(d=S[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v+1]=d-p,s=c;s<x;s++)w[s]=S[v][s]/f;for(s=c;s<b;s++){for(m=0,a=c;a<x;a++)m+=S[s][a]*S[v][a];for(a=c;a<x;a++)S[s][a]=S[s][a]+m*w[a]}}h<(y=Math.abs(T[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=S[v][v+1]*p,s=c;s<x;s++)P[s][v]=S[v][s]/f;for(s=c;s<x;s++){for(m=0,a=c;a<x;a++)m+=S[v][a]*P[a][s];for(a=c;a<x;a++)P[a][s]=P[a][s]+m*P[a][v]}}for(s=c;s<x;s++)P[v][s]=0,P[s][v]=0;P[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<b;v++){for(s=x;s<b;s++)S[v][s]=0;S[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=T[v],s=c;s<_;s++)S[v][s]=0;if(p!==0){for(f=S[v][v]*p,s=c;s<_;s++){for(m=0,a=c;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(s=v;s<b;s++)S[s][v]=S[s][v]/p}else for(s=v;s<b;s++)S[s][v]=0;S[v][v]=S[v][v]+1}}for(o*=h,a=x-1;0<=a;a--)for(var C=0;C<50;C++){for(N=!1,c=a;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(T[c-1])<=o)break}if(!N){for(l=0,u=c-(m=1),v=c;v<a+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=T[v],T[v]=Math.sqrt(d*d+p*p),l=p/(f=T[v]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][v],S[s][u]=y*l+g*m,S[s][v]=-y*m+g*l}if(g=T[a],c===a){if(g<0&&(T[a]=-g,t))for(s=0;s<x;s++)P[s][a]=-P[s][a];break}for(h=T[c],d=(((y=T[a-1])-g)*(y+g)+((p=w[a-1])-(f=w[a]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,v=c+(m=l=1);v<a+1;v++){if(p=w[v],y=T[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(s=0;s<x;s++)h=P[s][v-1],g=P[s][v],P[s][v-1]=h*l+g*m,P[s][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(T[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(s=0;s<b;s++)y=S[s][v-1],g=S[s][v],S[s][v-1]=y*l+g*m,S[s][v]=-y*m+g*l}w[c]=0,w[a]=d,T[a]=h}for(v=0;v<x;v++)T[v]<o&&(T[v]=0);return{u:S,q:T,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var gg=ia(Zl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<l._howls.length;b++)l._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),b=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=b*1e3/Math.abs(y._rate),S=p._sprite[l][0]/1e3,P=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=S,y._stop=P,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=P){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,b):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var T=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var C=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||C)T();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",T(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,b=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,b=Math.abs(x/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var P=(Date.now()-S)/f;S=Date.now(),g+=x*P,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),b=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=b*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var b=function(){l._playLock?setTimeout(b,0):x()};setTimeout(b,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);a(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Zl<"u"&&(Zl.Howler=r,Zl.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 a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._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")a._orientation=[r,e,t,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return a},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 a=t._soundById(i[s]);if(a)if(typeof r=="number")a._stereo=r,a._pos=[r,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(r,0,0):a._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",a._id);else return a._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),a=0;a<s.length;a++){var c=i._soundById(s[a]);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),a=0;a<s.length;a++){var c=i._soundById(s[a]);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),a=0;a<s.length;a++)if(i=r._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var E0=ia((HJ,M0)=>{M0.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),a=Number(o[i]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0}});import{FileLoader as ZC,Loader as QC}from"three";function Wu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Jt(n,r){return Object.setPrototypeOf(n,r),n}function aa(n){return Array.isArray(n)?n:[n]}function qu(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 K0=typeof global=="object"&&global&&global.Object===Object&&global,la=K0;var Z0=typeof self=="object"&&self&&self.Object===Object&&self,Q0=la||Z0||Function("return this")(),$e=Q0;var J0=$e.Symbol,et=J0;var $u=Object.prototype,ex=$u.hasOwnProperty,tx=$u.toString,Ji=et?et.toStringTag:void 0;function rx(n){var r=ex.call(n,Ji),e=n[Ji];try{n[Ji]=void 0;var t=!0}catch{}var o=tx.call(n);return t&&(r?n[Ji]=e:delete n[Ji]),o}var Yu=rx;var ox=Object.prototype,nx=ox.toString;function ix(n){return nx.call(n)}var Xu=ix;var sx="[object Null]",ax="[object Undefined]",Ku=et?et.toStringTag:void 0;function lx(n){return n==null?n===void 0?ax:sx:Ku&&Ku in Object(n)?Yu(n):Xu(n)}var Vt=lx;function cx(n){return n!=null&&typeof n=="object"}var ct=cx;var dx="[object Symbol]";function ux(n){return typeof n=="symbol"||ct(n)&&Vt(n)==dx}var pn=ux;function px(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 ca=px;var fx=Array.isArray,je=fx;var mx=1/0,Zu=et?et.prototype:void 0,Qu=Zu?Zu.toString:void 0;function Ju(n){if(typeof n=="string")return n;if(je(n))return ca(n,Ju)+"";if(pn(n))return Qu?Qu.call(n):"";var r=n+"";return r=="0"&&1/n==-mx?"-0":r}var ep=Ju;function hx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var zt=hx;function yx(n){return n}var tp=yx;var gx="[object AsyncFunction]",xx="[object Function]",vx="[object GeneratorFunction]",bx="[object Proxy]";function Sx(n){if(!zt(n))return!1;var r=Vt(n);return r==xx||r==vx||r==gx||r==bx}var da=Sx;var wx=$e["__core-js_shared__"],ua=wx;var rp=function(){var n=/[^.]+$/.exec(ua&&ua.keys&&ua.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function _x(n){return!!rp&&rp in n}var op=_x;var Px=Function.prototype,Tx=Px.toString;function Ox(n){if(n!=null){try{return Tx.call(n)}catch{}try{return n+""}catch{}}return""}var kr=Ox;var Ax=/[\\^$.*+?()[\]{}|]/g,Cx=/^\[object .+?Constructor\]$/,Nx=Function.prototype,Ix=Object.prototype,Mx=Nx.toString,Ex=Ix.hasOwnProperty,Lx=RegExp("^"+Mx.call(Ex).replace(Ax,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Dx(n){if(!zt(n)||op(n))return!1;var r=da(n)?Lx:Cx;return r.test(kr(n))}var np=Dx;function Bx(n,r){return n?.[r]}var ip=Bx;function Rx(n,r){var e=ip(n,r);return np(e)?e:void 0}var Ct=Rx;var Gx=Ct($e,"WeakMap"),pa=Gx;var sp=Object.create,Vx=function(){function n(){}return function(r){if(!zt(r))return{};if(sp)return sp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),ap=Vx;function zx(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 lp=zx;function jx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var cp=jx;var Fx=800,kx=16,Ux=Date.now;function Hx(n){var r=0,e=0;return function(){var t=Ux(),o=kx-(t-e);if(e=t,o>0){if(++r>=Fx)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var dp=Hx;function Wx(n){return function(){return n}}var up=Wx;var qx=function(){try{var n=Ct(Object,"defineProperty");return n({},"",{}),n}catch{}}(),fn=qx;var $x=fn?function(n,r){return fn(n,"toString",{configurable:!0,enumerable:!1,value:up(r),writable:!0})}:tp,pp=$x;var Yx=dp(pp),fp=Yx;function Xx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var mp=Xx;var Kx=9007199254740991,Zx=/^(?:0|[1-9]\d*)$/;function Qx(n,r){var e=typeof n;return r=r??Kx,!!r&&(e=="number"||e!="symbol"&&Zx.test(n))&&n>-1&&n%1==0&&n<r}var mn=Qx;function Jx(n,r,e){r=="__proto__"&&fn?fn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var fa=Jx;function ev(n,r){return n===r||n!==n&&r!==r}var hn=ev;var tv=Object.prototype,rv=tv.hasOwnProperty;function ov(n,r,e){var t=n[r];(!(rv.call(n,r)&&hn(t,e))||e===void 0&&!(r in n))&&fa(n,r,e)}var yn=ov;function nv(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var a=r[i],c=t?t(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?fa(e,a,c):yn(e,a,c)}return e}var yr=nv;var hp=Math.max;function iv(n,r,e){return r=hp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=hp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),lp(n,this,a)}}var yp=iv;var sv=9007199254740991;function av(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=sv}var gn=av;function lv(n){return n!=null&&gn(n.length)&&!da(n)}var ma=lv;var cv=Object.prototype;function dv(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||cv;return n===e}var xn=dv;function uv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var gp=uv;var pv="[object Arguments]";function fv(n){return ct(n)&&Vt(n)==pv}var bc=fv;var xp=Object.prototype,mv=xp.hasOwnProperty,hv=xp.propertyIsEnumerable,yv=bc(function(){return arguments}())?bc:function(n){return ct(n)&&mv.call(n,"callee")&&!hv.call(n,"callee")},vn=yv;function gv(){return!1}var vp=gv;var wp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bp=wp&&typeof module=="object"&&module&&!module.nodeType&&module,xv=bp&&bp.exports===wp,Sp=xv?$e.Buffer:void 0,vv=Sp?Sp.isBuffer:void 0,bv=vv||vp,Do=bv;var Sv="[object Arguments]",wv="[object Array]",_v="[object Boolean]",Pv="[object Date]",Tv="[object Error]",Ov="[object Function]",Av="[object Map]",Cv="[object Number]",Nv="[object Object]",Iv="[object RegExp]",Mv="[object Set]",Ev="[object String]",Lv="[object WeakMap]",Dv="[object ArrayBuffer]",Bv="[object DataView]",Rv="[object Float32Array]",Gv="[object Float64Array]",Vv="[object Int8Array]",zv="[object Int16Array]",jv="[object Int32Array]",Fv="[object Uint8Array]",kv="[object Uint8ClampedArray]",Uv="[object Uint16Array]",Hv="[object Uint32Array]",Le={};Le[Rv]=Le[Gv]=Le[Vv]=Le[zv]=Le[jv]=Le[Fv]=Le[kv]=Le[Uv]=Le[Hv]=!0;Le[Sv]=Le[wv]=Le[Dv]=Le[_v]=Le[Bv]=Le[Pv]=Le[Tv]=Le[Ov]=Le[Av]=Le[Cv]=Le[Nv]=Le[Iv]=Le[Mv]=Le[Ev]=Le[Lv]=!1;function Wv(n){return ct(n)&&gn(n.length)&&!!Le[Vt(n)]}var _p=Wv;function qv(n){return function(r){return n(r)}}var bn=qv;var Pp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,es=Pp&&typeof module=="object"&&module&&!module.nodeType&&module,$v=es&&es.exports===Pp,Sc=$v&&la.process,Yv=function(){try{var n=es&&es.require&&es.require("util").types;return n||Sc&&Sc.binding&&Sc.binding("util")}catch{}}(),Ur=Yv;var Tp=Ur&&Ur.isTypedArray,Xv=Tp?bn(Tp):_p,ha=Xv;var Kv=Object.prototype,Zv=Kv.hasOwnProperty;function Qv(n,r){var e=je(n),t=!e&&vn(n),o=!e&&!t&&Do(n),i=!e&&!t&&!o&&ha(n),s=e||t||o||i,a=s?gp(n.length,String):[],c=a.length;for(var u in n)(r||Zv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||mn(u,c)))&&a.push(u);return a}var ya=Qv;function Jv(n,r){return function(e){return n(r(e))}}var ga=Jv;var eb=ga(Object.keys,Object),Op=eb;var tb=Object.prototype,rb=tb.hasOwnProperty;function ob(n){if(!xn(n))return Op(n);var r=[];for(var e in Object(n))rb.call(n,e)&&e!="constructor"&&r.push(e);return r}var Ap=ob;function nb(n){return ma(n)?ya(n):Ap(n)}var Sn=nb;function ib(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Cp=ib;var sb=Object.prototype,ab=sb.hasOwnProperty;function lb(n){if(!zt(n))return Cp(n);var r=xn(n),e=[];for(var t in n)t=="constructor"&&(r||!ab.call(n,t))||e.push(t);return e}var Np=lb;function cb(n){return ma(n)?ya(n,!0):Np(n)}var wn=cb;var db=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ub=/^\w*$/;function pb(n,r){if(je(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||pn(n)?!0:ub.test(n)||!db.test(n)||r!=null&&n in Object(r)}var Ip=pb;var fb=Ct(Object,"create"),Hr=fb;function mb(){this.__data__=Hr?Hr(null):{},this.size=0}var Mp=mb;function hb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Ep=hb;var yb="__lodash_hash_undefined__",gb=Object.prototype,xb=gb.hasOwnProperty;function vb(n){var r=this.__data__;if(Hr){var e=r[n];return e===yb?void 0:e}return xb.call(r,n)?r[n]:void 0}var Lp=vb;var bb=Object.prototype,Sb=bb.hasOwnProperty;function wb(n){var r=this.__data__;return Hr?r[n]!==void 0:Sb.call(r,n)}var Dp=wb;var _b="__lodash_hash_undefined__";function Pb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Hr&&r===void 0?_b:r,this}var Bp=Pb;function _n(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])}}_n.prototype.clear=Mp;_n.prototype.delete=Ep;_n.prototype.get=Lp;_n.prototype.has=Dp;_n.prototype.set=Bp;var wc=_n;function Tb(){this.__data__=[],this.size=0}var Rp=Tb;function Ob(n,r){for(var e=n.length;e--;)if(hn(n[e][0],r))return e;return-1}var io=Ob;var Ab=Array.prototype,Cb=Ab.splice;function Nb(n){var r=this.__data__,e=io(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Cb.call(r,e,1),--this.size,!0}var Gp=Nb;function Ib(n){var r=this.__data__,e=io(r,n);return e<0?void 0:r[e][1]}var Vp=Ib;function Mb(n){return io(this.__data__,n)>-1}var zp=Mb;function Eb(n,r){var e=this.__data__,t=io(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var jp=Eb;function Pn(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])}}Pn.prototype.clear=Rp;Pn.prototype.delete=Gp;Pn.prototype.get=Vp;Pn.prototype.has=zp;Pn.prototype.set=jp;var so=Pn;var Lb=Ct($e,"Map"),ao=Lb;function Db(){this.size=0,this.__data__={hash:new wc,map:new(ao||so),string:new wc}}var Fp=Db;function Bb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var kp=Bb;function Rb(n,r){var e=n.__data__;return kp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var lo=Rb;function Gb(n){var r=lo(this,n).delete(n);return this.size-=r?1:0,r}var Up=Gb;function Vb(n){return lo(this,n).get(n)}var Hp=Vb;function zb(n){return lo(this,n).has(n)}var Wp=zb;function jb(n,r){var e=lo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var qp=jb;function Tn(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])}}Tn.prototype.clear=Fp;Tn.prototype.delete=Up;Tn.prototype.get=Hp;Tn.prototype.has=Wp;Tn.prototype.set=qp;var Bo=Tn;var Fb="Expected a function";function _c(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Fb);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(_c.Cache||Bo),e}_c.Cache=Bo;var $p=_c;var kb=500;function Ub(n){var r=$p(n,function(t){return e.size===kb&&e.clear(),t}),e=r.cache;return r}var Yp=Ub;var Hb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Wb=/\\(\\)?/g,qb=Yp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Hb,function(e,t,o,i){r.push(o?i.replace(Wb,"$1"):t||e)}),r}),Xp=qb;function $b(n){return n==null?"":ep(n)}var Kp=$b;function Yb(n,r){return je(n)?n:Ip(n,r)?[n]:Xp(Kp(n))}var qt=Yb;var Xb=1/0;function Kb(n){if(typeof n=="string"||pn(n))return n;var r=n+"";return r=="0"&&1/n==-Xb?"-0":r}var co=Kb;function Zb(n,r){r=qt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[co(r[e++])];return e&&e==t?n:void 0}var xa=Zb;function Qb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var On=Qb;var Zp=et?et.isConcatSpreadable:void 0;function Jb(n){return je(n)||vn(n)||!!(Zp&&n&&n[Zp])}var Qp=Jb;function Jp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Qp),o||(o=[]);++i<s;){var a=n[i];r>0&&e(a)?r>1?Jp(a,r-1,e,t,o):On(o,a):t||(o[o.length]=a)}return o}var ef=Jp;function eS(n){var r=n==null?0:n.length;return r?ef(n,1):[]}var tf=eS;function tS(n){return fp(yp(n,void 0,tf),n+"")}var va=tS;var rS=ga(Object.getPrototypeOf,Object),An=rS;var oS="[object Object]",nS=Function.prototype,iS=Object.prototype,rf=nS.toString,sS=iS.hasOwnProperty,aS=rf.call(Object);function lS(n){if(!ct(n)||Vt(n)!=oS)return!1;var r=An(n);if(r===null)return!0;var e=sS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&rf.call(e)==aS}var of=lS;function cS(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 nf=cS;function dS(){this.__data__=new so,this.size=0}var sf=dS;function uS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var af=uS;function pS(n){return this.__data__.get(n)}var lf=pS;function fS(n){return this.__data__.has(n)}var cf=fS;var mS=200;function hS(n,r){var e=this.__data__;if(e instanceof so){var t=e.__data__;if(!ao||t.length<mS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Bo(t)}return e.set(n,r),this.size=e.size,this}var df=hS;function Cn(n){var r=this.__data__=new so(n);this.size=r.size}Cn.prototype.clear=sf;Cn.prototype.delete=af;Cn.prototype.get=lf;Cn.prototype.has=cf;Cn.prototype.set=df;var Nn=Cn;function yS(n,r){return n&&yr(r,Sn(r),n)}var uf=yS;function gS(n,r){return n&&yr(r,wn(r),n)}var pf=gS;var yf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ff=yf&&typeof module=="object"&&module&&!module.nodeType&&module,xS=ff&&ff.exports===yf,mf=xS?$e.Buffer:void 0,hf=mf?mf.allocUnsafe:void 0;function vS(n,r){if(r)return n.slice();var e=n.length,t=hf?hf(e):new n.constructor(e);return n.copy(t),t}var gf=vS;function bS(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 xf=bS;function SS(){return[]}var ba=SS;var wS=Object.prototype,_S=wS.propertyIsEnumerable,vf=Object.getOwnPropertySymbols,PS=vf?function(n){return n==null?[]:(n=Object(n),xf(vf(n),function(r){return _S.call(n,r)}))}:ba,In=PS;function TS(n,r){return yr(n,In(n),r)}var bf=TS;var OS=Object.getOwnPropertySymbols,AS=OS?function(n){for(var r=[];n;)On(r,In(n)),n=An(n);return r}:ba,Sa=AS;function CS(n,r){return yr(n,Sa(n),r)}var Sf=CS;function NS(n,r,e){var t=r(n);return je(n)?t:On(t,e(n))}var wa=NS;function IS(n){return wa(n,Sn,In)}var ts=IS;function MS(n){return wa(n,wn,Sa)}var _a=MS;var ES=Ct($e,"DataView"),Pa=ES;var LS=Ct($e,"Promise"),Ta=LS;var DS=Ct($e,"Set"),Oa=DS;var wf="[object Map]",BS="[object Object]",_f="[object Promise]",Pf="[object Set]",Tf="[object WeakMap]",Of="[object DataView]",RS=kr(Pa),GS=kr(ao),VS=kr(Ta),zS=kr(Oa),jS=kr(pa),Ro=Vt;(Pa&&Ro(new Pa(new ArrayBuffer(1)))!=Of||ao&&Ro(new ao)!=wf||Ta&&Ro(Ta.resolve())!=_f||Oa&&Ro(new Oa)!=Pf||pa&&Ro(new pa)!=Tf)&&(Ro=function(n){var r=Vt(n),e=r==BS?n.constructor:void 0,t=e?kr(e):"";if(t)switch(t){case RS:return Of;case GS:return wf;case VS:return _f;case zS:return Pf;case jS:return Tf}return r});var Wr=Ro;var FS=Object.prototype,kS=FS.hasOwnProperty;function US(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&kS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Af=US;var HS=$e.Uint8Array,Mn=HS;function WS(n){var r=new n.constructor(n.byteLength);return new Mn(r).set(new Mn(n)),r}var En=WS;function qS(n,r){var e=r?En(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Cf=qS;var $S=/\w*$/;function YS(n){var r=new n.constructor(n.source,$S.exec(n));return r.lastIndex=n.lastIndex,r}var Nf=YS;var If=et?et.prototype:void 0,Mf=If?If.valueOf:void 0;function XS(n){return Mf?Object(Mf.call(n)):{}}var Ef=XS;function KS(n,r){var e=r?En(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Lf=KS;var ZS="[object Boolean]",QS="[object Date]",JS="[object Map]",ew="[object Number]",tw="[object RegExp]",rw="[object Set]",ow="[object String]",nw="[object Symbol]",iw="[object ArrayBuffer]",sw="[object DataView]",aw="[object Float32Array]",lw="[object Float64Array]",cw="[object Int8Array]",dw="[object Int16Array]",uw="[object Int32Array]",pw="[object Uint8Array]",fw="[object Uint8ClampedArray]",mw="[object Uint16Array]",hw="[object Uint32Array]";function yw(n,r,e){var t=n.constructor;switch(r){case iw:return En(n);case ZS:case QS:return new t(+n);case sw:return Cf(n,e);case aw:case lw:case cw:case dw:case uw:case pw:case fw:case mw:case hw:return Lf(n,e);case JS:return new t;case ew:case ow:return new t(n);case tw:return Nf(n);case rw:return new t;case nw:return Ef(n)}}var Df=yw;function gw(n){return typeof n.constructor=="function"&&!xn(n)?ap(An(n)):{}}var Bf=gw;var xw="[object Map]";function vw(n){return ct(n)&&Wr(n)==xw}var Rf=vw;var Gf=Ur&&Ur.isMap,bw=Gf?bn(Gf):Rf,Vf=bw;var Sw="[object Set]";function ww(n){return ct(n)&&Wr(n)==Sw}var zf=ww;var jf=Ur&&Ur.isSet,_w=jf?bn(jf):zf,Ff=_w;var Pw=1,Tw=2,Ow=4,kf="[object Arguments]",Aw="[object Array]",Cw="[object Boolean]",Nw="[object Date]",Iw="[object Error]",Uf="[object Function]",Mw="[object GeneratorFunction]",Ew="[object Map]",Lw="[object Number]",Hf="[object Object]",Dw="[object RegExp]",Bw="[object Set]",Rw="[object String]",Gw="[object Symbol]",Vw="[object WeakMap]",zw="[object ArrayBuffer]",jw="[object DataView]",Fw="[object Float32Array]",kw="[object Float64Array]",Uw="[object Int8Array]",Hw="[object Int16Array]",Ww="[object Int32Array]",qw="[object Uint8Array]",$w="[object Uint8ClampedArray]",Yw="[object Uint16Array]",Xw="[object Uint32Array]",Ee={};Ee[kf]=Ee[Aw]=Ee[zw]=Ee[jw]=Ee[Cw]=Ee[Nw]=Ee[Fw]=Ee[kw]=Ee[Uw]=Ee[Hw]=Ee[Ww]=Ee[Ew]=Ee[Lw]=Ee[Hf]=Ee[Dw]=Ee[Bw]=Ee[Rw]=Ee[Gw]=Ee[qw]=Ee[$w]=Ee[Yw]=Ee[Xw]=!0;Ee[Iw]=Ee[Uf]=Ee[Vw]=!1;function Aa(n,r,e,t,o,i){var s,a=r&Pw,c=r&Tw,u=r&Ow;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!zt(n))return n;var l=je(n);if(l){if(s=Af(n),!a)return cp(n,s)}else{var d=Wr(n),p=d==Uf||d==Mw;if(Do(n))return gf(n,a);if(d==Hf||d==kf||p&&!o){if(s=c||p?{}:Bf(n),!a)return c?Sf(n,pf(s,n)):bf(n,uf(s,n))}else{if(!Ee[d])return o?n:{};s=Df(n,d,a)}}i||(i=new Nn);var f=i.get(n);if(f)return f;i.set(n,s),Ff(n)?n.forEach(function(y){s.add(Aa(y,r,e,y,n,i))}):Vf(n)&&n.forEach(function(y,g){s.set(g,Aa(y,r,e,g,n,i))});var m=u?c?_a:ts:c?wn:Sn,h=l?void 0:m(n);return mp(h||n,function(y,g){h&&(g=y,y=n[g]),yn(s,g,Aa(y,r,e,g,n,i))}),s}var Ca=Aa;var Kw=1,Zw=4;function Qw(n){return Ca(n,Kw|Zw)}var qr=Qw;var Jw="__lodash_hash_undefined__";function e1(n){return this.__data__.set(n,Jw),this}var Wf=e1;function t1(n){return this.__data__.has(n)}var qf=t1;function Na(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bo;++r<e;)this.add(n[r])}Na.prototype.add=Na.prototype.push=Wf;Na.prototype.has=qf;var $f=Na;function r1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Yf=r1;function o1(n,r){return n.has(r)}var Xf=o1;var n1=1,i1=2;function s1(n,r,e,t,o,i){var s=e&n1,a=n.length,c=r.length;if(a!=c&&!(s&&c>a))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&i1?new $f:void 0;for(i.set(n,r),i.set(r,n);++d<a;){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(!Yf(r,function(g,x){if(!Xf(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var Ia=s1;function a1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Kf=a1;function l1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Zf=l1;var c1=1,d1=2,u1="[object Boolean]",p1="[object Date]",f1="[object Error]",m1="[object Map]",h1="[object Number]",y1="[object RegExp]",g1="[object Set]",x1="[object String]",v1="[object Symbol]",b1="[object ArrayBuffer]",S1="[object DataView]",Qf=et?et.prototype:void 0,Pc=Qf?Qf.valueOf:void 0;function w1(n,r,e,t,o,i,s){switch(e){case S1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case b1:return!(n.byteLength!=r.byteLength||!i(new Mn(n),new Mn(r)));case u1:case p1:case h1:return hn(+n,+r);case f1:return n.name==r.name&&n.message==r.message;case y1:case x1:return n==r+"";case m1:var a=Kf;case g1:var c=t&c1;if(a||(a=Zf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=d1,s.set(n,r);var l=Ia(a(n),a(r),t,o,i,s);return s.delete(n),l;case v1:if(Pc)return Pc.call(n)==Pc.call(r)}return!1}var Jf=w1;var _1=1,P1=Object.prototype,T1=P1.hasOwnProperty;function O1(n,r,e,t,o,i){var s=e&_1,a=ts(n),c=a.length,u=ts(r),l=u.length;if(c!=l&&!s)return!1;for(var d=c;d--;){var p=a[d];if(!(s?p in r:T1.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=a[d];var g=n[p],x=r[p];if(t)var b=s?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(b===void 0?g===x||o(g,x,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var em=O1;var A1=1,tm="[object Arguments]",rm="[object Array]",Ma="[object Object]",C1=Object.prototype,om=C1.hasOwnProperty;function N1(n,r,e,t,o,i){var s=je(n),a=je(r),c=s?rm:Wr(n),u=a?rm:Wr(r);c=c==tm?Ma:c,u=u==tm?Ma:u;var l=c==Ma,d=u==Ma,p=c==u;if(p&&Do(n)){if(!Do(r))return!1;s=!0,l=!1}if(p&&!l)return i||(i=new Nn),s||ha(n)?Ia(n,r,e,t,o,i):Jf(n,r,c,e,t,o,i);if(!(e&A1)){var f=l&&om.call(n,"__wrapped__"),m=d&&om.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Nn),o(h,y,e,t,i)}}return p?(i||(i=new Nn),em(n,r,e,t,o,i)):!1}var nm=N1;function im(n,r,e,t,o){return n===r?!0:n==null||r==null||!ct(n)&&!ct(r)?n!==n&&r!==r:nm(n,r,e,t,im,o)}var sm=im;function I1(n,r){return n!=null&&r in Object(n)}var am=I1;function M1(n,r,e){r=qt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=co(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&&gn(o)&&mn(s,o)&&(je(n)||vn(n)))}var lm=M1;function E1(n,r){return n!=null&&lm(n,r,am)}var cm=E1;function L1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var dm=L1;function D1(n,r){return r.length<2?n:xa(n,nf(r,0,-1))}var um=D1;function B1(n,r){return sm(n,r)}var rs=B1;function R1(n,r){return r=qt(r,n),n=um(n,r),n==null||delete n[co(dm(r))]}var pm=R1;function G1(n){return of(n)?void 0:n}var fm=G1;var V1=1,z1=2,j1=4,F1=va(function(n,r){var e={};if(n==null)return e;var t=!1;r=ca(r,function(i){return i=qt(i,n),t||(t=i.length>1),i}),yr(n,_a(n),e),t&&(e=Ca(e,V1|z1|j1,fm));for(var o=r.length;o--;)pm(e,r[o]);return e}),Ln=F1;function k1(n,r,e,t){if(!zt(n))return n;r=qt(r,n);for(var o=-1,i=r.length,s=i-1,a=n;a!=null&&++o<i;){var c=co(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];u=t?t(l,c,a):void 0,u===void 0&&(u=zt(l)?l:mn(r[o+1])?[]:{})}yn(a,c,u),a=a[c]}return n}var mm=k1;function U1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],a=xa(n,s);e(a,s)&&mm(i,qt(s,n),a)}return i}var hm=U1;function H1(n,r){return hm(n,r,function(e,t){return cm(n,t)})}var ym=H1;var W1=va(function(n,r){return n==null?{}:ym(n,r)}),$r=W1;var Me=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Me.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,a={...e,[i]:s};return Object.setPrototypeOf(a,Me.prototype),{data:a,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Me.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function os(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"&&os(t)}return Object.freeze(n)}function gm(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 Dn=class extends Error{};function Ea(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function gr(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 Bn(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 xm(){return typeof process<"u"}function vm(n,r){for(let e of n)r(e.id,e.data)!==!0&&vm(e.children,r)}function bm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)bm(e,r)}var Be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)os(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&bm(o,t)}}traverse(e){vm(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),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:a}}Object.setPrototypeOf(i,Be.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:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,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 Dn("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:a,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)=>gm(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 gr(0,o,o);{let s=i[0].fi;return gr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return gr(c,c+o,o)}else return gr(s.fi,a.fi,o)}}};var Rn;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],a=!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],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},a=!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,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Rn||(Rn={}));var me=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,me.prototype)}deepFreeze(){let e=0;for(;e<this.length;)os(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 a=i[s];return i=[...i],i[s]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,me.prototype);let t=e;return xm()||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,a={fi:t,id:o,data:i};return s=[...s,a],s.sort((u,l)=>u.fi-l.fi),e.localIndex=s.indexOf(a),{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(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,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 gr(0,t,t);{let i=o[0].fi;return gr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return gr(a,a+t,t)}else return gr(i.fi,s.fi,t)}}};function Gn(n){return n&&typeof n=="object"&&n instanceof Re}var Re=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!Gn(t))return null;o+=1}t=t?Ea(t):new Re;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=Ea(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Ea(c);u[r.path[o-1]]=t,t=u}else{let u=new Re;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Re.prototype),a={...r,props:i};return{data:s,actual:r,reverse:a}}},xr;(t=>{function n(o,i){return ns(o,i)??o}t.apply=n;function r(o,i){return Oc(o,i)}t.merge=r;function e(o,i){let s=0,a=i.path,c=o;for(;s<a.length&&c!==void 0;){if(c=vt.zoomOnce(c,a[s]),c===void 0)return i;if(!Gn(c))return;s+=1}if(c===void 0)return i;if(!!Gn(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=Tc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(xr||(xr={}));function Tc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ns(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let a=Tc(o.children,r);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}}else return{...o,id:i,data:s}});if(e)return t}function q1(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ns(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 ns(n,r){if(!Gn(r))return r;if(n instanceof Be){let e=Tc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof me)return q1(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=ns(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 Re)return Oc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=ns(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 Oc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Gn(r))return r;if(!Gn(n))return xr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Re;for(let o of e){let i=Oc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Sm(n,r){let e={cur:[],result:[],len:0};return n=is(n,r,e)??n,[n,e.result]}function La(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Da(n){n&&(n.len-=1)}function $1(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function wm(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=is(i.data,r,La(e,s));Da(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=wm(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 Y1(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=is(i.data,r,La(e,s));return Da(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 is(n,r,e){if(n instanceof Be){let t=wm(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof me)return Y1(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let a=is(i,r,La(e,s));return Da(e),t=t||a!==void 0,a===void 0&&(a=i),a});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Bn(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let a=r[i];if(typeof a=="string"){if(e!==null)throw new Error("not supported");o=!0,i=a}let c=is(s,r,La(e,i));Da(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");$1(e)}return t}else return}}var Ba;(r=>{function n(e,t){let o=vt.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})(Ba||(Ba={}));var dt;(a=>{function n(c,u){return{...c,path:c.path.slice(u)}}a.drop=n;function r(c,u){return e(c,u)?.data??c}a.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof Re&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof Be||c instanceof me||c instanceof Me?p=c.runOp(u):p=Rn.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof Be){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Re){let b={...x,[g]:h};h=Object.setPrototypeOf(b,Re.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...x],h[g]=b}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof Be){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof me){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}}a.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}a.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}a.pathEq=o;function i(c,u){return t(c.path,u.path)}a.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}a.subsumed=s})(dt||(dt={}));var Ac;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>dt.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>dt.commutative(d,p)))}c.commutative=i;function s(u,l){for(let d of l){let p=a(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function a(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3){let h=vt.zoom(d,[...m.path,m.id]),y=dt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,x]=Sm(d,{[m.id]:h});d=g;for(let b of x){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=dt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Dn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=a})(Ac||(Ac={}));var _m=Symbol(),X1=Symbol(),Ga=Symbol(),Go=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Ra);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Ga];t&&t(),delete this._children[r]}}}},Nc=class extends Go{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Rn.runOp(this._current,r),r.path)}},Ic=class extends Go{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Me.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Pm={get(n,r){if(r===Ga)return()=>{n._parent=null};if(r===_m)return n._current;if(r===X1)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=Va(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]}}},K1={...Pm,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}},Z1={...Pm,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}},Vn=class extends Go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ga]=()=>{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=Va(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)}},zn=class extends Go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ga]=()=>{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=Va(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 Cc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&vt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Ra=class extends Go{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Cc(this.ts,e,r),Cc(this.actual,t,r),Cc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Va(n,r,e){return e instanceof Be?new Vn(n,r,e):e instanceof me?new zn(n,r,e):e instanceof Me?new Proxy(new Ic(n,r,e),Z1):e!==null&&typeof e=="object"?Bn(e)?e:new Proxy(new Nc(n,r,e),K1):e}function Mc(n){let r=new Ra(n);return[Va(r,"",n),r]}function jn(n,r){let[e,t]=Mc(n);return r(e),t.result()}function Ye(n){return n instanceof Vn||n instanceof zn?n._current:n!==null&&typeof n=="object"?n[_m]:n}var vt;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function r(i,s,a){let c=t(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof Be||i instanceof Vn)&&typeof s=="string")return i.data(s);if((i instanceof me||i instanceof zn)&&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,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=t})(vt||(vt={}));function Tm(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 yt(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 za=class{},ss=class extends za{constructor(e){super();this.id=e}},as=class extends za{constructor(e){super();this.data=e}};var Lc;try{Lc=new TextDecoder}catch{}var ne,po,I=0;var Lm=[],Dc=Lm,Bc=0,Nt={},Te,uo,$t=0,vr=0,jt,Yr,bt=[],Ce,Om={useRecords:!1,mapsAsObjects:!0},ls=class{},Gc=new ls;Gc.name="MessagePack 0xC1";var Fn=!1,br=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 Vm(()=>(Fa(),this?this.unpack(r,e):br.prototype.unpack.call(Om,r,e)));po=e>-1?e:r.length,I=0,Bc=0,vr=0,uo=null,Dc=Lm,jt=null,ne=r;try{Ce=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 br){if(Nt=this,this.structures)return Te=this.structures,ja();(!Te||Te.length>0)&&(Te=[])}else Nt=Om,(!Te||Te.length>0)&&(Te=[]);return ja()}unpackMultiple(r,e){let t,o=0;try{Fn=!0;let i=r.length,s=this?this.unpack(r,i):Ha.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(ja())===!1)return}else{for(t=[s];I<i;)o=I,t.push(ja());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Fn=!1,Fa()}}_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 ja(){try{if(!Nt.trusted&&!Fn){let r=Te.sharedLength||0;r<Te.length&&(Te.length=r)}let n=Fe();if(I==po)Te.restoreStructures&&Am(),Te=null,ne=null,Yr&&(Yr=null);else if(I>po){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Fn)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Te.restoreStructures&&Am(),Fa(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Am(){for(let n in Te.restoreStructures)Te[n]=Te.restoreStructures[n];Te.restoreStructures=null}function Fe(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Te[n&63]||Nt.getStructures&&Dm()[n&63];return r?(r.read||(r.read=Vc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Nt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Rm()]=Fe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Fe(),Fe());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Fe();return r}else if(n<192){let r=n-160;if(vr>=I)return uo.slice(I-$t,(I+=r)-$t);if(vr==0&&po<140){let e=r<16?zc(r):Bm(r);if(e!=null)return e}return Rc(r)}else{let r;switch(n){case 192:return null;case 193:return jt?(r=Fe(),r>0?jt[1].slice(jt.position1,jt.position1+=r):jt[0].slice(jt.position0,jt.position0-=r)):Gc;case 194:return!1;case 195:return!0;case 196:return Ec(ne[I++]);case 197:return r=Ce.getUint16(I),I+=2,Ec(r);case 198:return r=Ce.getUint32(I),I+=4,Ec(r);case 199:return Vo(ne[I++]);case 200:return r=Ce.getUint16(I),I+=2,Vo(r);case 201:return r=Ce.getUint32(I),I+=4,Vo(r);case 202:if(r=Ce.getFloat32(I),Nt.useFloat32>2){let e=Ua[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Ce.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=Ce.getUint16(I),I+=2,r;case 206:return r=Ce.getUint32(I),I+=4,r;case 207:return Nt.int64AsNumber?(r=Ce.getUint32(I)*4294967296,r+=Ce.getUint32(I+4)):r=Ce.getBigUint64(I),I+=8,r;case 208:return Ce.getInt8(I++);case 209:return r=Ce.getInt16(I),I+=2,r;case 210:return r=Ce.getInt32(I),I+=4,r;case 211:return Nt.int64AsNumber?(r=Ce.getInt32(I)*4294967296,r+=Ce.getUint32(I+4)):r=Ce.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return Em(ne[I++]&63);{let e=bt[r];if(e)return e.read?(I++,e.read(Fe())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,Em(ne[I++]&63,ne[I++])):Vo(2);case 214:return Vo(4);case 215:return Vo(8);case 216:return Vo(16);case 217:return r=ne[I++],vr>=I?uo.slice(I-$t,(I+=r)-$t):J1(r);case 218:return r=Ce.getUint16(I),I+=2,vr>=I?uo.slice(I-$t,(I+=r)-$t):e_(r);case 219:return r=Ce.getUint32(I),I+=4,vr>=I?uo.slice(I-$t,(I+=r)-$t):t_(r);case 220:return r=Ce.getUint16(I),I+=2,Nm(r);case 221:return r=Ce.getUint32(I),I+=4,Nm(r);case 222:return r=Ce.getUint16(I),I+=2,Im(r);case 223:return r=Ce.getUint32(I),I+=4,Im(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 Q1=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Vc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Q1.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Fe);return n.highByte===0&&(n.read=Cm(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Fe()}return t}return e.count=0,n.highByte===0?Cm(r,e):e}var Cm=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Te[t]||Dm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Vc(o,n)),o.read()};function Dm(){let n=Vm(()=>(ne=null,Nt.getStructures()));return Te=Nt._mergeStructures(n,Te)}var Rc=ka,J1=ka,e_=ka,t_=ka;function ka(n){let r;if(n<16&&(r=zc(n)))return r;if(n>64&&Lc)return Lc.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,a=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|a;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+=tt.apply(String,t),t.length=0)}return t.length>0&&(r+=tt.apply(String,t)),r}function Nm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Fe();return r}function Im(n){if(Nt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Rm()]=Fe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Fe(),Fe());return r}}var tt=String.fromCharCode;function Bm(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return tt.apply(String,e)}function zc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return tt(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return tt(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return tt(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return tt(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return tt(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return tt(r,e,t,o,i,s);let a=ne[I++];if((a&128)>0){I-=7;return}return tt(r,e,t,o,i,s,a)}else{let i=ne[I++],s=ne[I++],a=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return tt(r,e,t,o,i,s,a,c);{let u=ne[I++];if((u&128)>0){I-=9;return}return tt(r,e,t,o,i,s,a,c,u)}}else if(n<12){let u=ne[I++],l=ne[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return tt(r,e,t,o,i,s,a,c,u,l);let d=ne[I++];if((d&128)>0){I-=11;return}return tt(r,e,t,o,i,s,a,c,u,l,d)}else{let u=ne[I++],l=ne[I++],d=ne[I++],p=ne[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return tt(r,e,t,o,i,s,a,c,u,l,d,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return tt(r,e,t,o,i,s,a,c,u,l,d,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return tt(r,e,t,o,i,s,a,c,u,l,d,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return tt(r,e,t,o,i,s,a,c,u,l,d,p,f,m,h)}}}}}function Ec(n){return Nt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function Vo(n){let r=ne[I++];if(bt[r])return bt[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Mm=new Array(4096);function Rm(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,vr>=I)return uo.slice(I-$t,(I+=n)-$t);if(!(vr==0&&po<180))return Rc(n)}else return I--,Fe();let r=(n<<5^(n>1?Ce.getUint16(I):n>0?ne[I]:0))&4095,e=Mm[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ce.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 I=t,e.string;o-=3,t=I}for(e=[],Mm[r]=e,e.bytes=n;t<o;)i=Ce.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let a=n<16?zc(n):Bm(n);return a!=null?e.string=a:e.string=Rc(n)}var Em=(n,r)=>{var e=Fe();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Te[n];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[n]=o),Te[n]=e,e.read=Vc(e,t),e.read()},Gm=typeof self=="object"?self:global;bt[0]=()=>{};bt[0].noBuffer=!0;bt[101]=()=>{let n=Fe();return(Gm[n[0]]||Error)(n[1])};bt[105]=n=>{let r=Ce.getUint32(I-4);Yr||(Yr=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Yr.set(r,o);let i=Fe();return o.used?Object.assign(t,i):(o.target=i,i)};bt[112]=n=>{let r=Ce.getUint32(I-4),e=Yr.get(r);return e.used=!0,e.target};bt[115]=()=>new Set(Fe());var jc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");bt[116]=n=>{let r=n[0],e=jc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Gm[e](Uint8Array.prototype.slice.call(n,1).buffer)};bt[120]=()=>{let n=Fe();return new RegExp(n[0],n[1])};bt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,jt=[Fe(),Fe()],jt.position0=0,jt.position1=0;let t=I;I=e;try{return Fe()}finally{I=t}};bt[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 Vm(n){let r=po,e=I,t=Bc,o=$t,i=vr,s=uo,a=Dc,c=Yr,u=jt,l=new Uint8Array(ne.slice(0,po)),d=Te,p=Te.slice(0,Te.length),f=Nt,m=Fn,h=n();return po=r,I=e,Bc=t,$t=o,vr=i,uo=s,Dc=a,Yr=c,jt=u,ne=l,Fn=m,Te=d,Te.splice(0,Te.length,...p),Nt=f,Ce=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function Fa(){ne=null,Yr=null,Te=null}function zm(n){n.unpack?bt[n.type]=n.unpack:bt[n.type]=n}var Ua=new Array(147);for(let n=0;n<256;n++)Ua[n]=+("1e"+Math.floor(45.15-n*.30103));var Ha=new br({useRecords:!1}),r_=Ha.unpack,o_=Ha.unpackMultiple,n_=Ha.unpack,Wa={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},i_=new Float32Array(1),gR=new Uint8Array(i_.buffer,0,4);var qa;try{qa=new TextEncoder}catch{}var $a,kc,Ya=typeof Buffer<"u",Fc=Ya?Buffer.allocUnsafeSlow:Uint8Array,Um=Ya?Buffer:Uint8Array,jm=Ya?4294967296:2144337920,z,He,E=0,Sr,wr=null,s_=/[\u0080-\uFFFF]/,cs=Symbol("record-id"),zo=class extends br{constructor(r){super(r),this.offset=0;let e,t,o,i,s,a,c=0,u=Um.prototype.utf8Write?function(v,N,T){return z.utf8Write(v,N,T)}:qa&&qa.encodeInto?function(v,N){return qa.encodeInto(v,z.subarray(N)).written}:!1,l=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],b=0,w=0;this.pack=this.encode=function(v,N){if(z||(z=new Fc(8192),He=new DataView(z.buffer,0,8192),E=0),Sr=z.length-10,Sr-E<2048?(z=new Fc(z.length),He=new DataView(z.buffer,0,z.length),Sr=z.length-10,E=0):E=E+7&2147483640,t=E,a=l.structuredClone?new Map:null,l.bundleStrings?(wr=["",""],z[E++]=214,z[E++]=98,wr.position=E-t,E+=4):wr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let C=0;C<T;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let U=0,$=O.length;U<$;U++){let ee=O[U];A=R[ee],A||(A=R[ee]=Object.create(null)),R=A}R[cs]=C+64}c=T}d||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(S(v),wr){He.setUint32(wr.position+t,E-wr.position-t);let T=wr;wr=null,S(T[0]),S(T[1])}if(l.offset=E,a&&a.idsToInsert){E+=a.idsToInsert.length*6,E>Sr&&_(E),l.offset=E;let T=l_(z.subarray(t,E),a.idsToInsert);return a=null,T}return N&Wm?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let T=0,C=x.length;T<C;T++)x[T][cs]=0;x=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let C=z.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=T,C)}}N&h_&&(E=t)}};let S=v=>{E>Sr&&(z=_(E));var N=typeof v,T;if(N==="string"){let C=v.length;if(wr&&C>=8&&C<4096){let R=s_.test(v);wr[R?0:1]+=v,z[E++]=193,S(R?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>Sr&&(z=_(E+A)),C<64||!u){let R,U,$,ee=E+O;for(R=0;R<C;R++)U=v.charCodeAt(R),U<128?z[ee++]=U:U<2048?(z[ee++]=U>>6|192,z[ee++]=U&63|128):(U&64512)===55296&&(($=v.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+($&1023),R++,z[ee++]=U>>18|240,z[ee++]=U>>12&63|128,z[ee++]=U>>6&63|128,z[ee++]=U&63|128):(z[ee++]=U>>12|224,z[ee++]=U>>6&63|128,z[ee++]=U&63|128);T=ee-E-O}else T=u(v,E+O,A);T<32?z[E++]=160|T:T<256?(O<2&&z.copyWithin(E+2,E+1,E+1+T),z[E++]=217,z[E++]=T):T<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+T),z[E++]=218,z[E++]=T>>8,z[E++]=T&255):(O<5&&z.copyWithin(E+5,E+3,E+3+T),z[E++]=219,He.setUint32(E,T),E+=4),E+=T}else if(N==="number")if(v>>>0===v)v<64?z[E++]=v:v<256?(z[E++]=204,z[E++]=v):v<65536?(z[E++]=205,z[E++]=v>>8,z[E++]=v&255):(z[E++]=206,He.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?z[E++]=256+v:v>=-128?(z[E++]=208,z[E++]=v+256):v>=-32768?(z[E++]=209,He.setInt16(E,v),E+=2):(z[E++]=210,He.setInt32(E,v),E+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){z[E++]=202,He.setFloat32(E,v);let O;if(C<4||(O=v*Ua[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,He.setFloat64(E,v),E+=8}else if(N==="object")if(!v)z[E++]=192;else{if(a){let O=a.get(v);if(O){if(!O.id){let A=a.idsToInsert||(a.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,He.setUint32(E,O.id),E+=4;return}else a.set(v,{offset:E-t})}let C=v.constructor;if(C===Object)P(v,!0);else if(C===Array){T=v.length,T<16?z[E++]=144|T:T<65536?(z[E++]=220,z[E++]=T>>8,z[E++]=T&255):(z[E++]=221,He.setUint32(E,T),E+=4);for(let O=0;O<T;O++)S(v[O])}else if(C===Map){T=v.size,T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,He.setUint32(E,T),E+=4);for(let[O,A]of v)S(O),S(A)}else{for(let O=0,A=$a.length;O<A;O++){let R=kc[O];if(v instanceof R){let U=$a[O];if(U.write){U.type&&(z[E++]=212,z[E++]=U.type,z[E++]=0),S(U.write.call(this,v));return}let $=z,ee=He,Y=E;z=null;let q;try{q=U.pack.call(this,v,H=>(z=$,$=null,E+=H,E>Sr&&_(E),{target:z,targetView:He,position:E-H}),S)}finally{$&&(z=$,He=ee,E=Y,Sr=z.length-10)}q&&(q.length+E>Sr&&_(q.length+E),E=a_(q,z,E,U.type));return}}P(v,!v.hasOwnProperty)}}else if(N==="boolean")z[E++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))z[E++]=211,He.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)z[E++]=207,He.setBigUint64(E,v);else if(this.largeBigIntToFloat)z[E++]=203,He.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},P=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),T=N.length;T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,He.setUint32(E,T),E+=4);let C;for(let O=0;O<T;O++)S(C=N[O]),S(v[C])}:(v,N)=>{z[E++]=222;let T=E-t;E+=2;let C=0;for(let O in v)(N||v.hasOwnProperty(O))&&(S(O),S(v[O]),C++);z[T+++t]=C>>8,z[T+t]=C&255}:v=>{let N=Object.keys(v),T,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=N.length;R<U;R++){let $=N[R];T=C[$],T||(T=C[$]=Object.create(null),O++),C=T}let A=C[cs];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=N.highByte=A>=96&&h?A-96>>5:-1;C[cs]=A,s[A-64]=N,A<y?(N.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(z[E++]=(A&31)+96,z[E++]=R):z[E++]=A):(R>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=R):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),x.length>=m&&(x.shift()[cs]=0),x.push(C),S(N))}for(let R=0,U=N.length;R<U;R++)S(v[N[R]])},_=v=>{let N;if(v>16777216){if(v-t>jm)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(jm,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,z.length-1)>>12)+1<<12;let T=new Fc(N);return He=new DataView(T.buffer,0,N),z.copy?z.copy(T,0,t,v):T.set(z.slice(t,v)),E-=t,t=0,Sr=T.length-10,z=T}}useBuffer(r){z=r,He=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};kc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ls];$a=[{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?Fm(n,16,r):km(Ya?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Um&&this.structuredClone?Fm(n,jc.indexOf(e.name),r):km(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Fm(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:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function km(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 a_(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 l_(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 a=i+t;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function fo(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)");kc.unshift(n.Class),$a.unshift(n)}zm(n)}var Hm=new zo({useRecords:!1}),c_=Hm.pack,d_=Hm.pack;var{NEVER:u_,ALWAYS:p_,DECIMAL_ROUND:f_,DECIMAL_FIT:m_}=Wa,Wm=512,h_=1024;var qm=new zo({structuredClone:!0});fo({Class:Me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Me.prototype),n}});fo({Class:me.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,me.prototype),n}});fo({Class:Be.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Be.prototype),n}});fo({Class:ss.prototype.constructor,type:4,write(n){return n.id},read(n){return new ss(n)}});fo({Class:as.prototype.constructor,type:5,write(n){return n.data},read(n){return new as(n)}});fo({Class:Re.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Re.prototype),n}});function y_(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 Uc(n){if(Bn(n))return n;if(Array.isArray(n))return n.map(Uc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Uc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Xa;(t=>{function n(o){return qm.pack(o)}t.serialize=n;function r(o){return qm.unpack(o)}t.deserialize=r;function e(o){return y_(n(Uc(o))).toString()}t.checksum=e})(Xa||(Xa={}));var yo="personal camera",go="a218fcc3-276b-49b9-b485-49037fd14f5f",Qm=2960946,Ke=5526619;var $m;(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})($m||($m={}));var mo;(a=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}a.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}a.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}a.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}a.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}a.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}a.dist=i;function s(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}a.lerp=s})(mo||(mo={}));var Ym;(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})(Ym||(Ym={}));var ho;(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 a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let a=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=t})(ho||(ho={}));var rt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function s(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=s;function a(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=a;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(rt||(rt={}));var St;(a=>{a.white={...rt.white,a:1},a.transparent={...rt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function t(c,u){return{...rt.fromHex(c),a:u}}a.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}}a.toRgb255a1=o;function i(c,u){return rt.equals(c,u)&&c.a===u.a}a.equals=i;function s(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}a.lerp=s})(St||(St={}));var Ka;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ka||(Ka={}));var Xm;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Xm||(Xm={}));var Km;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Km||(Km={}));var Zm;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Zm||(Zm={}));var er;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(er||(er={}));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},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 _r;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(g_.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,a=o.radial;x_.forEach(c=>{Object.assign(i.radial,{[c]:a[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,a=o.linear;v_.forEach(c=>{Object.assign(i.linear,{[c]:a[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,a=o.grid;b_.forEach(c=>{Object.assign(i.grid,{[c]:a[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,a=o.toObject;S_.forEach(c=>{Object.assign(i.toObject,{[c]:a[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,a=o.randomnessObject;w_.forEach(c=>{Object.assign(i.randomnessObject,{[c]:a[c]??s[c]})})}return i}e.merge=r})(_r||(_r={}));var Za;(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 a of r){let c=o[a];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,a],props:c})}return s}t.toOps=e})(Za||(Za={}));var g_=["count"],x_=["radius","start","end","position","scale","rotation"],v_=["position","scale","rotation"],b_=["count","size"],S_=["count","position","scale","rotation"],w_=["strength","scale","rotation","position","movement","seed","freqScale"];var Qa;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Qa||(Qa={}));var Ja;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:St.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:St.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:St.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ja||(Ja={}));var vo;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(vo||(vo={}));var Hc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Hc||(Hc={}));var Wc;(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})(Wc||(Wc={}));var el;(r=>r.defaultData={...Wc.defaultData,...Hc.defaultData})(el||(el={}));var kn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(kn||(kn={}));var Jm;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Jm||(Jm={}));function th(n){return n.type!=="displace"}var eh;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(eh||(eh={}));var rh=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],oh=["wrapping","image","video","name"],wt;(o=>{function n(i,s){let{texture:a,...c}=s;if(Object.assign(i,c),a){let u=i.texture;u&&Object.assign(u,a)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:kn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:rt.fromHex(Ke)};case"depth":return{...s,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...rt.fromHex(6710886),a:1},colorB:{...rt.fromHex(6710886),a:1},colorC:{...rt.fromHex(16777215),a:1},colorD:{...rt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:St.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:St.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:St.fromHexAndA(0,1),contourColor:St.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{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...rt.fromHex(0),a:1},colorB:{...rt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(wt||(wt={}));var It;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new me}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new me;return p.push({fi:0,data:wt.defaultData("light",u),id:l}),p.push({fi:1,data:wt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,l="phong",d="layer1",p="layer2"){let f=wt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new me;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:wt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function a(u,l="phong",d="layer1",p="layer2"){let f=wt.defaultData("video");Object.assign(f.texture,{video:u});let m=new me;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:wt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=a})(It||(It={}));var Un;(r=>{function n(){return{points:new me,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Un||(Un={}));var Hn;(r=>{function n(){return{points:new me,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Hn||(Hn={}));var qc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var tl;(r=>{function n(e,t){let o={...e};return __.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(tl||(tl={}));var rl={shape:qc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},__=["depth","offset","angle","twist","startScale","endScale"];var ds;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(ds||(ds={}));var ol;(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,tl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ol||(ol={}));var bo;(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:Hn.defaultData(),extrusion:rl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Un.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};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI};throw new Error("not implemented")}r.defaultData=n})(bo||(bo={}));var nl;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:rt.white,near:.1,far:2e3})(nl||(nl={}));var il;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(il||(il={}));var $c;(r=>r.defaultData={softShadowQuality:"low"})($c||($c={}));var Yc;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Yc||(Yc={}));var Xc;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Xc||(Xc={}));var us;(r=>r.defaultData={usePhysics:!1,gravity:-10})(us||(us={}));var Kc;(r=>r.defaultData={playCamera:yo,gameControlObject:null})(Kc||(Kc={}));var sl;(r=>r.defaultData={backgroundColor:St.fromHexAndA(Qm,1),postprocessing:il.defaultData,fog:nl.defaultData,globalPhysics:us.defaultData,ambient:Yc.defaultData,ao:Xc.defaultData,shadow:$c.defaultData,publish:Kc.defaultData})(sl||(sl={}));var nh;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(nh||(nh={}));var Wn;(o=>{o.identity={...Ka.identity,hiddenMatrix:ho.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 Wu({position:mo.isEqual(i.position,s.position)?void 0:s.position,rotation:mo.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:mo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:ho.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Wn||(Wn={}));var gt;(r=>r.defaultData={states:new me,events:new me,visible:!0,raycastLock:!1,physics:vo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Wn.identity,cloner:null})(gt||(gt={}));var ih;(r=>r.defaultData={type:"Empty",...gt.defaultData})(ih||(ih={}));var sh;(r=>r.defaultData={type:"Component",...gt.defaultData})(sh||(sh={}));var jo;(r=>r.defaultData={type:"Mesh",...gt.defaultData,...el.defaultData})(jo||(jo={}));var Fo;(r=>r.defaultData={...gt.defaultData,...Wn.identity,position:[0,0,xo.DefaultTargetOffset],...xo.defaultData})(Fo||(Fo={}));var al;(e=>{function n(t){return{...gt.defaultData,...Ja.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(al||(al={}));var qn;(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 a=Object.keys(s);if(a.length===1&&a[0]==="descendants")return}return s}e.resolve=r})(qn||(qn={}));var Xr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,a){return{...gt.defaultData,...a,component:s,overrides:new Re,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let a=Wn.fromObject(s.data);return t(s.id,a)}i.fromComponentData=o})(Xr||(Xr={}));var Kr;(r=>r.defaultData={type:"Page",...gt.defaultData,physics:{...vo.defaultData,fusedBody:!1},...sl.defaultData,camera:Fo.defaultData})(Kr||(Kr={}));var ll;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:ho.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:vo.defaultData,states:new me,events:new me,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...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",...gt.defaultData,...jo.defaultData,geometry:bo.defaultData("RectangleGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...gt.defaultData,...jo.defaultData,geometry:bo.defaultData("BooleanGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...gt.defaultData,...jo.defaultData,geometry:bo.defaultData("TextGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")}))(ll||(ll={}));var ko;(o=>{function n(i,s){let a={name:s};return i.type==="Mesh"?(a.geometry={},"material"in i&&(a.material={layers:new Re}),"materials"in i&&(a.materials=i.materials.map(c=>({layers:new Re})))):er.is(i.type)&&(a.perspective={},a.orthographic={}),a}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let a={...i};return"material"in a&&"material"in s&&s.material&&(a.material=jn(a.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&wt.patch(d,l)}}).data),a.materials&&s.materials&&(a.materials=jn(a.materials,c=>{for(let u=0;u<a.materials.length;u++){let l=s.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&wt.patch(f,p)}}}).data),a}function e(i,s){let a,c=[],u={orthographic:0,perspective:0,geometry:0};function l(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...Za.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else a===void 0&&(a={path:[],props:{},type:0},c.push(a)),a.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let a={...i};if(Object.assign(a,Wn.merge(a,s)),Object.assign(a,{pathSnapping:Object.assign({},a.pathSnapping,{slide:s.pathSnapping?.slide??a.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??a.pathSnapping?.offset??0})}),er.is(i.type)){a.orthographic={...a.orthographic},a.perspective={...a.perspective};let c=s;c.orthographic?.zoom!==void 0&&(a.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(a.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(a.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(a.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(a,{geometry:ol.merge(a.geometry,s.geometry)}),(s.material||s.materials)&&(a=r(a,s)),a.cloner&&"cloner"in s&&Object.assign(a,{cloner:_r.merge(a.cloner,s.cloner)});else if(i.type==="Empty")a.cloner&&"cloner"in s&&Object.assign(a,{cloner:_r.merge(a.cloner,s.cloner)});else if(Qa.is(i.type)){let c=s;c.intensity!==void 0&&(a.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?a.color=c.color:a.color=rt.clone(c.color))}return a}o.patch=t})(ko||(ko={}));var $n;(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})($n||($n={}));var Pr;(r=>r.defaultData={orbitControls:$n.defaultData,playPage:go,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Pr||(Pr={}));var Zc;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Zc||(Zc={}));var Qc;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Qc||(Qc={}));var So;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Zc.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Qc.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(So||(So={}));var ah;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.traverseFrom(o,(s,a)=>{if(a.type==="Instance"){let c=t.data(a.component);c&&i(s,a,c.events)}else i(s,a,a.events)})}e.traverseModuleInstances=r})(ah||(ah={}));var cl;(a=>{a.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=ll.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:al.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new Be;return d.push({fi:1,id:go,data:{...Kr.defaultData,name:"Scene 1"},children:u}),d}a.defaultData={objects:r(),publish:Pr.defaultData,styles:So.defaultData()},a.emptyDataWithoutPage=function(){return{objects:new Be,publish:Pr.defaultData,styles:So.defaultData()}},a.emptyDataWithPage=function(c){return{objects:r(c),publish:Pr.defaultData,styles:So.defaultData()}};function i(c){return{...a.defaultData,objects:Jt(c,Be.prototype)}}a.withObjs=i;function s(c,u){return i([{id:c,data:u,children:[],fi:0}])}a.withObj=s})(cl||(cl={}));var Yn;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Yn||(Yn={}));var dl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Jt(o,Me.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Yn.emptyImage,name:"AI generated image"}),Jt(i,Me.prototype)}t.defaultImages=r;function e(){return{materials:new Me,images:new Me,videos:new Me,colors:new Me,audios:new Me,fonts:new Me}}t.emptyData=e})(dl||(dl={}));import{MathUtils as fl}from"three";var ul;(r=>r.list=["idle","move","jump","run"])(ul||(ul={}));var pl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new me,move:new me,jump:new me,run:new me},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:St.fromHexAndA(3728051,1)}}))(pl||(pl={}));function lh(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...$r(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 Uo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ho(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 P_(n){Object.assign(n.scene.publish,{orbitControls:{...$n.defaultData,...Ye(n.scene.publish.orbitControls)}})}function T_(n){Object.assign(n.scene.publish.settings,{video:{...Pr.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function O_(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((rh.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,a]of Object.entries(i))(oh.includes(s)||typeof a=="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 A_(n){n.scene.publish.withBackground=!0}function C_(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function N_(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 I_(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 M_(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 E_(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function L_(n){function r(t){Object.setPrototypeOf(t,Re.prototype),t.texture&&Object.setPrototypeOf(t.texture,Re.prototype)}function e(t){Object.setPrototypeOf(t,Re.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let a=Ye(s.material).layers;e(a),s.material.layers=a}if(s.materials)for(let a=0;a<s.materials.length;a++){let c=s.materials[a],u=Ye(c).layers;e(u),c.layers=u}})})}function ch(n){n.layers===void 0&&Object.assign(n,It.defaultTwoLayerData("lambert"))}function Jc(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 D_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function dh(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Jc(t)}):"material"in e&&typeof e.material!="string"&&Jc(e.material)}),Object.values(n.shared.materials).forEach(r=>Jc(r))}function B_(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 R_(n){n.shared.audios=Jt({},Me.prototype)}function G_(n){n.shared.videos=Jt({},Me.prototype)}function V_(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 z_(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 j_(n){n.scene.publish.settings.web.preload=!1}function uh(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 ph(n){n.layers&&n.layers.forEach(r=>{th(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function F_(n){n.shared.fonts=Jt({},Me.prototype)}function k_(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function U_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=It.defaultTwoLayerData("phong"),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 a=k_(o.font);n.shared.fonts[a]===void 0&&(n.shared.fonts[a]={name:a});let c={name:o.name,...gt.defaultData,...jo.defaultData,flatShading:!1,wireframe:!1,geometry:{...bo.defaultData("TextGeometry"),width:o.width,height:o.height,font:a,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 H_(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 me,move:new me,jump:new me}});else{let i=new me;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:fl.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,a,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(l,$r(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(l,{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,...l},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new me({fi:0,id:fl.generateUUID(),data:u},{fi:1,id:fl.generateUUID(),data:p})};i.push({fi:c,id:a,data:f})}),delete o.targets)}})})}function W_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new me,a=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;a.push(u),c.interaction==="play"?d={...$r(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={...$r(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:l,id:u,data:d})}}),a.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:fl.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function fh(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=wt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function mh(n){Uo(n,fh),Ho(n,fh)}function q_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function $_(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function Y_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=It.defaultTwoLayerData("phong"))})}function X_(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 K_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function Z_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function Q_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function J_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function eP(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function tP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=pl.defaultDataThirdPerson.navmesh)})})}function rP(n){n.scene.styles||(n.scene.styles=So.defaultData())}function hh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function oP(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Ho(n,hh),Uo(n,hh)}function nP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new me})})})}function iP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function yh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function gh(n,r){if(r<1&&(Ho(n,lh),Uo(n,lh),n.schema=1),r<2&&(P_(n),n.schema=2),r<3&&(O_(n),n.schema=3),r<4&&(A_(n),n.schema=4),r<5&&(C_(n),n.schema=5),r<6&&(N_(n),n.schema=6),r<7&&(I_(n),n.schema=7),r<8&&(n.schema=8),r<9&&(dh(n),n.schema=9),r<10&&(D_(n),n.schema=10),r<11&&(B_(n),n.schema=11),r<12&&(dh(n),n.schema=12),r<13&&(R_(n),n.schema=13),r<14&&(V_(n),n.schema=14),r<15&&(z_(n),n.schema=15),r<16&&(j_(n),n.schema=16),r<17&&(Ho(n,uh),Uo(n,uh),n.schema=17),r<18&&(Ho(n,ch),Uo(n,ch),n.schema=18),r<19&&(T_(n),n.schema=19),r<20&&(F_(n),U_(n),n.schema=20),r<21&&(H_(n),W_(n),n.schema=21),r<22&&(mh(n),n.schema=22),r<23&&(q_(n),n.schema=23),r<24&&($_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(G_(n),r<25&&(n.schema=25)),r<26&&(M_(n),n.schema=26),r<27&&(E_(n),n.schema=27),r<28&&(mh(n),n.schema=28),r<29&&(L_(n),n.schema=29),r<30&&(Y_(n),n.schema=30),r<31&&(X_(n),n.schema=31),r<33&&(K_(n),n.schema=33),r<34&&(Z_(n),n.schema=34),r<35&&(Q_(n),n.schema=35),r<36&&(J_(n),n.schema=36),r<37&&(eP(n),n.schema=37),r<38&&(Ho(n,ph),Uo(n,ph),n.schema=38),r<39&&(tP(n),n.schema=39),r<40&&(rP(n),n.schema=40),r<41&&(oP(n),n.schema=41),r<42&&(nP(n),n.schema=42),r<43&&(iP(n),n.schema=43),r<99){Ho(n,yh),Uo(n,yh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=yo);let e=Ye(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=go,t.insertBefore(null,null,[{id:go,data:{...Kr.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:$r(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:$r(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...us.defaultData,...$r(n.scene.environment,"usePhysics","gravity")},camera:Ye(n.scene.ownerCamera)??Kr.defaultData.camera,name:"Scene"},children:[]}]);for(let s of e)s.id!==cl.TRASH_CAN_ID&&t.move(go,s.fi,s.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((s,a)=>{a.type==="DirectionalLight"?(a.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):a.type==="SpotLight"&&(a.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(a.physics===void 0||a.physics===null)&&a.type!=="Instance"&&(a.physics={},Object.assign(a.physics,vo.defaultData)),a.physics!==void 0&&(a.physics.enabled=a.collision??"visibility",delete a.collision)}),n.schema=99}}var xh=100;function vh(n){let r=n.schema??0;r!==xh&&(console.warn("updating from ",r,"to ",xh),gh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Pr.defaultData.joystickSizeAndXYOffset),n.schema=100))}var Ui=sa(Sh());import{Object3D as MA,Vector3 as Ht,Euler as Eu,MathUtils as qg,Matrix4 as dn}from"three";var sP=.5*(Math.sqrt(3)-1),fs=(3-Math.sqrt(3))/6,aP=1/3,Tr=1/6,Mz=(Math.sqrt(5)-1)/4,Ez=(5-Math.sqrt(5))/20,ms=n=>Math.floor(n)|0,wh=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]),td=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 ml(n=Math.random){let r=Ph(n),e=new Float64Array(r).map(o=>wh[o%12*2]),t=new Float64Array(r).map(o=>wh[o%12*2+1]);return function(i,s){let a=0,c=0,u=0,l=(i+s)*sP,d=ms(i+l),p=ms(s+l),f=(d+p)*fs,m=d-f,h=p-f,y=i-m,g=s-h,x,b;y>g?(x=1,b=0):(x=0,b=1);let w=y-x+fs,S=g-b+fs,P=y-1+2*fs,_=g-1+2*fs,v=d&255,N=p&255,T=.5-y*y-g*g;if(T>=0){let A=v+r[N],R=e[A],U=t[A];T*=T,a=T*T*(R*y+U*g)}let C=.5-w*w-S*S;if(C>=0){let A=v+x+r[N+b],R=e[A],U=t[A];C*=C,c=C*C*(R*w+U*S)}let O=.5-P*P-_*_;if(O>=0){let A=v+1+r[N+1],R=e[A],U=t[A];O*=O,u=O*O*(R*P+U*_)}return 70*(a+c+u)}}function _h(n=Math.random){let r=Ph(n),e=new Float64Array(r).map(i=>td[i%12*3]),t=new Float64Array(r).map(i=>td[i%12*3+1]),o=new Float64Array(r).map(i=>td[i%12*3+2]);return function(s,a,c){let u,l,d,p,f=(s+a+c)*aP,m=ms(s+f),h=ms(a+f),y=ms(c+f),g=(m+h+y)*Tr,x=m-g,b=h-g,w=y-g,S=s-x,P=a-b,_=c-w,v,N,T,C,O,A;S>=P?P>=_?(v=1,N=0,T=0,C=1,O=1,A=0):S>=_?(v=1,N=0,T=0,C=1,O=0,A=1):(v=0,N=0,T=1,C=1,O=0,A=1):P<_?(v=0,N=0,T=1,C=0,O=1,A=1):S<_?(v=0,N=1,T=0,C=0,O=1,A=1):(v=0,N=1,T=0,C=1,O=1,A=0);let R=S-v+Tr,U=P-N+Tr,$=_-T+Tr,ee=S-C+2*Tr,Y=P-O+2*Tr,q=_-A+2*Tr,H=S-1+3*Tr,V=P-1+3*Tr,G=_-1+3*Tr,D=m&255,L=h&255,B=y&255,X=.6-S*S-P*P-_*_;if(X<0)u=0;else{let M=D+r[L+r[B]];X*=X,u=X*X*(e[M]*S+t[M]*P+o[M]*_)}let W=.6-R*R-U*U-$*$;if(W<0)l=0;else{let M=D+v+r[L+N+r[B+T]];W*=W,l=W*W*(e[M]*R+t[M]*U+o[M]*$)}let j=.6-ee*ee-Y*Y-q*q;if(j<0)d=0;else{let M=D+C+r[L+O+r[B+A]];j*=j,d=j*j*(e[M]*ee+t[M]*Y+o[M]*q)}let F=.6-H*H-V*V-G*G;if(F<0)p=0;else{let M=D+1+r[L+1+r[B+1]];F*=F,p=F*F*(e[M]*H+t[M]*V+o[M]*G)}return 32*(u+l+d+p)}}function Ph(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 lP}from"three";var tr=new lP,hl=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;tr.a.fromBufferAttribute(r,o),tr.b.fromBufferAttribute(r,o+1),tr.c.fromBufferAttribute(r,o+2),i*=tr.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),tr.a.fromBufferAttribute(this.positionAttribute,r*3),tr.b.fromBufferAttribute(this.positionAttribute,r*3+1),tr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(tr.a,o).addScaledVector(tr.b,i).addScaledVector(tr.c,1-(o+i)),tr.getNormal(t),this}};import{Object3D as fP}from"three";var Ah=sa(Oh());import{Object3D as cP,Matrix4 as Or}from"three";var dP=new Or,uP=new Or,pP=new Or,Xn;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Xn||(Xn={}));var Kn=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new Or;this.copyPreviousMatrix=!0;this.hiddenMatrix=new Or;this.matrixWorldRigid=new Or;this.shearScale=new Or;this.shearScaleInv=new Or}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof cP&&(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)}traverseChildren(t,o=0){for(let i of this.children)Xn.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Xn.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:a}=(0,Ah.SVD)(o),c=dP.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=uP.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),l=pP.copy(u).transpose();this.shearScale.makeScale(a[0],a[1],a[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),a.every(d=>Math.abs(a[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Or().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Or?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,s,a,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var rd=class extends Kn(fP){},mP=n=>n.type==="Mesh",Zr=class extends rd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Zr(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return mP(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 rO,BufferGeometry as oO,MeshBasicMaterial as nO}from"three";import{Matrix4 as eO,Mesh as tO}from"three";import{Matrix4 as xl,Vector3 as bP,Euler as SP}from"three";import{Box3 as hP,Line3 as yP,Matrix4 as od,Vector3 as Ft}from"three";var Wo=new Ft,qo=new Ft,Zn=new od,Nh=[new Ft(-1,1,1),new Ft(-1,-1,1),new Ft(1,-1,1),new Ft(1,1,1),new Ft(-1,1,-1),new Ft(-1,-1,-1),new Ft(1,-1,-1),new Ft(1,1,-1)],gP=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],xP=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Ch=(n,r,e)=>{n.updateEntityBoxSize(Wo,qo),Zn.copy(r).multiply(n.matrixWorld),qo.x===0&&qo.y===0&&qo.z===0?e.push(new Ft(Wo.x,Wo.y,Wo.z).applyMatrix4(Zn)):Nh.forEach(t=>{e.push(t.clone().multiply(qo).add(Wo).applyMatrix4(Zn))})},hs=class extends hP{constructor(){super(...arguments);this.matrix=new od;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 od().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Ft);return}Ch(s,t,i)}}):Ch(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(Zn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(qo).multiplyScalar(.5),this.getCenter(Wo),Zn.copy(this.matrix).setPosition(Wo),this.vertices=Nh.map(e=>e.clone().multiply(qo).applyMatrix4(Zn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=gP.map(([e,t])=>new yP(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ft))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=xP.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var rr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as vP,CubicBezierCurve3 as nd,Vector3 as or}from"three";var sd=class extends vP{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let a=0,c=this.curves;a<c.length;a++){let u=c[a],l=a===0?o[a]:o[a]-o[a-1],d=Math.ceil(r*l/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 ad=.001;function ld(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=ad}function id(n,r){let e=new or(...n.position),t=new or(...n.controlNext.position),o=new or(...r.controlPrevious.position),i=new or(...r.position);return ld(e,t,i)&&ld(e,o,i)}function gl(n){let r=n.points.map(l=>new or(...l.data.position)),e=[n.points[0]],t=new or(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)ld(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,a=[];for(let l=0;l<s;l++){let d=e[l].data,p=new or(...d.position),f=new or(...d.controlPrevious.position),m=new or(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===s-1)){a[l]={...h,removedLength:0};continue}let y=o&&l==0?s-1:l-1,g=o&&l==s-1?0:l+1,x=e[y].data,b=e[g].data,w=new or(...x.position),S=new or(...b.position),P=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:P,nextDir:_});let v=id(x,d),N=id(d,b);if(!v||!N)a[l]={...h,removedLength:0};else{let T=P.clone().add(_).normalize(),C=T.clone().cross(P).length()/P.dot(T);a[l]={...h,tan:C,removedLength:d.roundness/C}}}for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p],h=null;if(!id(e[d].data,e[p].data))f.position.distanceTo(m.position)>ad&&(h=new nd(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)>ad&&(h=new nd(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<s;l++){let d=a[l];if(d.removedLength===0){c[2*l]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),P=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=P.clone().lerp(w,2),v=f.clone().lerp(P,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new nd(f,v,N,m)}let u=new sd;return c.forEach(l=>{l&&u.add(l)}),u}var Se;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Se||(Se={}));var Qn=n=>Se.is(n),wP={type:"completeState",isfromEntity:!0},Jn=n=>class extends Kn(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 hs;this._recursiveBBox=new hs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Se.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Se.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Se.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)ko.toOps(this.data,s.data).forEach(c=>{let u=Ba.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=ko.patch(this.data,s),ko.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{Qn(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(Se.is(o[i]))return o[i];if(Se.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Se.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)Qn(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Se.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Qn(s)&&s.isConcreteEntity&&s.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Qn(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Qn(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>Qn(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 Ln(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??ho.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)Se.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Se.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ln(o,t)}updateByObjUpdateOp(t,o){this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,s){let a=this.data;this.data=o;let c=t,u=yt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=vt.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=vt.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,ko.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),yt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(xr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=vt.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=qn.resolve(o.overrides,l),p.updateByOp(t,dt.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of Xr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of Xr.rootOverrideProps)if(yt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=xr.filterOp(d.overrideData,l);p&&d.updateByOp(p,dt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=xr.filterOp(d.overrideData,t);if(p){let f;a===d.data&&t===p?f=o:f=dt.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&&!er.is(t.props.type)&&rr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){rr.changeEntityProptotype(this,o,i);for(let s of this.children)Se.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),yt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),yt(t.path,["cloner"])!==null){let s=dt.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){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,a=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,l=gl(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new xl;c.updateMatrixWorld();let m=new xl().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(a==="tangential"){let y=new xl().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new xl().lookAt(p,g,new bP(0,1,0)),b=new SP().setFromRotationMatrix(x);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(wP)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof rr.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 rr.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 TP}from"three";import{BufferGeometry as _P,CylinderGeometry as PP,Float32BufferAttribute as cd,Vector2 as nr,Vector3 as vl}from"three";var Mh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),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:a,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new ys(u,l,t,o,i,s,a,c*Math.PI/180,d,d,p,f):m=new PP(u,l,t,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function wo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Ih(n){return new nr(n.y,-n.x)}var ys=class extends _P{constructor(r,e,t,o,i,s,a,c,u,l,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,b=t/2,w=new vl,S=new vl;f&&r==0&&(r=u),f&&e==0&&(e=l);let P=new nr(r,b),_=new nr(e,-b),v=null,N=null,T=null,C=null,O=P.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let $=P.clone();$.x-=A;let ee=Math.PI-O.angle(),Y=O.angle(),q=Math.tan(Y/2),H=Math.tan(ee/2),V=q+H,G=p?V:H,D=p?V:q;if(u=Math.min(u,(r-R)/G,O.length()/V),l=Math.min(l,(e-U)/D,O.length()/V),u>0){let F=u/q;v=P.clone().sub(new nr(F,u)),p&&(T=v.clone(),T.x-=A-V*u),P.sub(O.clone().setLength(F))}if(l>0){let F=l/H;N=_.clone().sub(new nr(F,-l)),_.add(O.clone().setLength(F)),p&&(C=N.clone(),C.x-=A-V*l,$.sub(O.clone().setLength(F)))}O=P.clone().sub(_);let L=O.length()<.5,B=[];for(let F=0;F<=o;F++){let M=[],Q=F/o,re=Q*c+a,oe=new nr(Math.sin(re),Math.cos(re));C&&N?(X(M,Q,oe,ee,l,C,-1,!0),X(M,Q,oe,Y,l,N,-1,!1)):N?(W(M,oe,N.x,0,-1),X(M,Q,oe,Y,l,N,-1,!1)):s||W(M,oe,e,U,-1);let K=Ih(O).normalize();if(wo(K,oe,w),!L)for(let te=0;te<=i;te++){let J=te/i,ie=O.clone().multiplyScalar(J).add(_);wo(ie,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}if(T&&v?(X(M,Q,oe,ee,u,v,1,!1),X(M,Q,oe,Y,u,T,1,!0)):v?(X(M,Q,oe,ee,u,v,1,!1),W(M,oe,v.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let te=Ih(O).multiplyScalar(-1).normalize();wo(te,oe,w);for(let J=0;J<=i;J++){let ie=J/i,ce=O.clone().multiplyScalar(-ie).add($);wo(ce,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}}p&&!s&&M.push(M[0]),B.push(M)}for(let F=0;F<B.length-1;F++)for(let M=0;M<B[0].length-1;M++){if(s&&p&&M==i)continue;let Q=B[F][M],re=B[F+1][M],oe=B[F+1][M+1],K=B[F][M+1],te=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(te!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(j(-1,B[0],a),j(1,B[B.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new cd(h,3)),this.setAttribute("normal",new cd(y,3)),this.setAttribute("uv",new cd(g,2));function X(F,M,Q,re,oe,K,te,J){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=te<0?ce:1-ce;J&&(se-=1),se*=re;let fe=new nr(Math.sin(se),Math.cos(se)*te),ze=fe.clone().multiplyScalar(oe).add(K);wo(ze,Q,S),h.push(S.x,S.y,S.z),wo(fe,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),F.push(x++)}}function W(F,M,Q,re,oe){let K=new vl,te=new nr,J=[Q,re];oe<0&&J.reverse();for(let ie of J)te.set(ie,b*oe),wo(te,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),F.push(x++)}function j(F,M,Q){let re=new nr(Math.sin(Q),Math.cos(Q)),oe=new nr(-Math.cos(Q),Math.sin(Q)),K=new vl,te=F<0?(ce,se,fe)=>m.push(ce,se,fe):(ce,se,fe)=>m.push(ce,fe,se),J=new nr((r+e+R+U)/4,0);wo(J,re,K),h.push(K.x,K.y,K.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let ie=x++;for(let ce of M){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(oe.x,0,oe.y);let fe=g.slice(ce*2,ce*2+2);g.push(...fe),x++}for(let ce=ie+1;ce<x-1;ce++)te(ie,ce,ce+1);te(ie,x-1,ie+1)}}};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:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return u>0||l>0||c<360?p=new ys(0,r/2,t,o,i,s,a,c*Math.PI/180,u,l,d,0,!0):p=new TP(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as OP,BufferGeometry as AP,Float32BufferAttribute as dd,Vector3 as gs}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,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:c}=n.parameters,u;return a==0?u=new OP(r,e,t,o,i,s):u=new pd(r,e,t,o,i,s,a,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},ud=Math.PI/2,pd=class extends AP{constructor(r=1,e=1,t=1,o=1,i=1,s=1,a=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),a=Math.min(a,r/2,e/2,t/2);let l=[],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),a>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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new dd(d,3)),this.setAttribute("normal",new dd(p,3)),this.setAttribute("uv",new dd(f,2));function y(b,w,S,P,_,v,N,T,C,O,A){let R=(v-2*a)/C,U=(N-2*a)/O,$=v/2-a,ee=N/2-a,Y=T/2,q=C+1,H=O+1,V=0,G=0,D=new gs;for(let L=0;L<H;L++){let B=L*U-ee;for(let X=0;X<q;X++){let W=X*R-$;D[b]=W*P,D[w]=B*_,D[S]=Y,d.push(D.x,D.y,D.z),D[b]=0,D[w]=0,D[S]=T>0?1:-1,p.push(D.x,D.y,D.z),f.push(X/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let B=0;B<C;B++){let X=m+B+q*L,W=m+B+q*(L+1),j=m+(B+1)+q*(L+1),F=m+(B+1)+q*L;l.push(X,W,F),l.push(W,j,F),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,P,_,v,N,T,C,O,A){let R=(N-2*a)/O,U=N/2-a,$=T/2-a,ee=C/2,Y=O+1,q=0,H=0,V=new gs,G=new gs;for(let D=0;D<c+1;D++){let L=D/c*ud,B=Math.sin(L)*a,X=(1-Math.cos(L))*a,W=Math.sin(L),j=Math.cos(L);V[w]=($+B)*_,V[S]=(ee-X)*v,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=j*Math.sign(V[S]);for(let F=0;F<Y;F++){let M=F*R-U;V[b]=M*P,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(F/O),f.push(0),q+=1}}for(let D=0;D<c;D++)for(let L=0;L<O;L++){let B=m+L+Y*D,X=m+L+Y*(D+1),W=m+(L+1)+Y*(D+1),j=m+(L+1)+Y*D;l.push(B,X,j),l.push(X,W,j),H+=6}u.addGroup(h,H,A),h+=H,m+=q}function x(b,w,S){let P=new gs,_=new gs(r/2,e/2,t/2);_.subScalar(a);let v=[],N=b*w*S>0?(C,O,A)=>l.push(C,O,A):(C,O,A)=>l.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=ud*(1-C/c),R=Math.cos(A),U=Math.sin(A),$=0;for(let ee=0;ee<=C;ee++){let Y=Math.cos($),q=Math.sin($);P.x=R*Y,P.y=U,P.z=R*q;let H=_.clone().addScaledVector(P,a);d.push(b*H.x,w*H.y,S*H.z),p.push(b*P.x,w*P.y,S*P.z),f.push(0,0),O.push(m++),$+=ud/C}v.push(O)}let T=v.length-1;for(let C=0;C<T;C++){let O=v[C],A=v[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let U=1;U<=R;U++)N(O[U-1],O[U],A[U]),N(O[U],A[U+1],A[U])}}}};import{BufferGeometry as CP,Float32BufferAttribute as fd,Triangle as NP,Vector3 as Qr,Vector2 as md}from"three";var _o=class extends CP{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],u=[];l(),d(),this.setAttribute("position",new fd(a,3)),this.setAttribute("normal",new fd(u,3)),this.setAttribute("uv",new fd(c,2));return;function l(){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 Qr,h=m.clone(),y=new NP,g=i*o,x=o-g,b=s+1,w=new Qr,S=(q,H)=>w.subVectors(q,H).normalize(),P=(q,H)=>Array(q).fill(void 0).map(H),_=P(r.length/3,(q,H)=>new Qr().fromArray(r,H*3).setLength(o)),v=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,D,L,B=1e10,X=-1;for(;(X=e.indexOf(q,X+1))!=-1;){let M=X-X%3;G=e[M+(X+1)%3],D=e[M+(X+2)%3],L=H.distanceToSquared(_[G]),B=Math.min(B,L),V.push([G,D,L])}B+=1e-6;let W=[],j=0,F=V.length;for(let M=0;M<F;M++){[G,D,L]=V[j];let Q=v[G]?.includes(q)==!0;L<=B&&W.push(G+ +Q*N),j=V.findIndex(re=>re[0]==D)}v.push(W)}let T=[];{let q=0,H=0,V,G,D=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let B=0;B<s-L;B++)[q,H]=[V+B+L+2,G+B+L+3],T.push(V,G,...D?[H,V]:[q,G],H,q),[V,G]=[q,H];T.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),$=[],ee=P(_.length,()=>P(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(x);let H=v[q];for(let W=0;W<H.length;W++){let j=H[W],F=H[(W+1)%f];y.setFromPointsAndIndices(_,q,j%N,F%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,ee[q][W])}let V=[],G=[],D=[],L=new Qr;s==0&&[...ee[q]].reduce((W,j)=>W.add(j),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let j=[],F=(W-1+f)%f,M=ee[q][F],Q=ee[q][W];m.copy(M).sub(C),h.copy(Q).sub(C);let re=C.angleTo(m),oe=m.angleTo(h),K=Math.cos(re)*g;s==0?O.copy(L):O.copy(C).setLength(x+K),G.push(K);let te=[O,M,Q];for(let J=0;J<2;J++){let ie=te[J],ce=te[J+1];R.subVectors(ie,C),U.subVectors(ce,C),A.crossVectors(R,U).normalize();for(let se=0;se<b;se++){let fe=[re,oe][J]*se/b;m.copy(R).applyAxisAngle(A,fe).add(C),V.push(m.clone()),J&&(S(m,C),j.push([se==0?ie:m.clone(),w.clone()]))}J&&(S(ce,C),j.push([ce,w.clone()]))}D.push(j)}$.push(D);let B=2*b,X=2;for(let W=0;W<f;W++){let j=B*W,F=B*((W+1)%f),M=[V[j]];for(let re=1;re<b;re++){R=V[j+re],U=V[F+re],M.push(R);for(let oe=1,K=re-X+1;oe<=K;oe++)m.lerpVectors(R,U,oe/(K+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(U)}for(let re=0;re<b;re++)M.push(V[re+b+j]);M.push(V[F+b]);let Q=T.map(re=>M[re]);a.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),u.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let Y=[];for(let q=0;q<v.length;q++)for(let H=0;H<f;H++){let V=v[q][H];if(V<N){let G=v[V].findIndex(B=>B%N==q),D=$[q][H],L=$[V][G];for(let B=0;B<b;B++){let X=D[B],W=L[b-B],j=D[B+1],F=L[b-(B+1)];[X,W,j,j,W,F].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}Y.push(D[0][0],L[b][0],D[b][0],L[0][0])}}for(;Y.length;){let q,H,V,G;[q,H]=Y.splice(0,2);let D=[q];for(;q!=H;)D.push(H),V=Y.indexOf(H),G=V%2,H=Y.splice(V-G,2)[1-G];w.subVectors(D[0],D[1]).cross(m.subVectors(D[0],D[2])).normalize();let L=w.dot(D[0])<0;L&&w.negate();for(let B=1;B<=D.length-2;B++)[D[B+ +L],D[B+1-+L],D[0]].forEach(X=>{a.push(X.x,X.y,X.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new Qr;for(let _=0;_<a.length;_+=3){p.x=a[_+0],p.y=a[_+1],p.z=a[_+2];let v=S(p)/2/Math.PI+.5,N=P(p)/Math.PI+.5;c.push(v,1-N)}let f=new Qr,m=new Qr,h=new Qr,y=new Qr,g=new md,x=new md,b=new md,w=(_,v,N,T)=>{T<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=T/2/Math.PI+.5)};for(let _=0,v=0;_<a.length;_+=9,v+=6){f.set(a[_+0],a[_+1],a[_+2]),m.set(a[_+3],a[_+4],a[_+5]),h.set(a[_+6],a[_+7],a[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),b.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=S(y);w(g,v+0,f,N),w(x,v+2,m,N),w(b,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],T=c[_+4],C=Math.max(v,N,T),O=Math.min(v,N,T);C>.9&&O<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),T<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function P(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new _o(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as IP}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,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,a=o===0&&i!==0?new xs(r*.5,i,s):new IP(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},xs=class extends _o{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],a=[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,a,c,r,e,t),this.type=c}static fromJSON(r){return new xs(r.radius,r.corner,r.cornerSides)}};import{Plane as FP,Shape as Xh,Vector2 as Jr,Vector3 as kP,MathUtils as Sd,LineCurve as wd,QuadraticBezierCurve as Kh,CubicBezierCurve as _l}from"three";import{CubicBezierCurve as bl,EllipseCurve as MP,LineCurve as Sl,LineCurve3 as EP,MathUtils as LP,QuadraticBezierCurve as yd,SplineCurve as DP,Vector2 as xt,Vector3 as Gh}from"three";var vs=1e-12,ei=class{constructor(r){this.position=new xt;this.startPosition=new xt;this.uuid=LP.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 ei(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ti=class extends ei{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ti(this.parent).copy(this)}},ir=class extends ei{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ti(this),new ti(this))}static create(e,t){let o=new ir(e,new xt(...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 ir(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 xt,t=new xt){let[o,i]=this.computeTangents();return o&&i&&(Bh(o,e),Bh(i,t)),[e,t]}computeTangent(e=new xt){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new xt){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Bh(n,r=new xt){let e=n.length();return r.set(-n.y/e,n.x/e)}var gd=n=>n,ri=new xt,wl=new xt,BP=new xt,RP=new xt,GP=new xt,VP=new xt,Vh=new Gh,zh=new Gh;function jh(n){let r=new xt;r.addVectors(n.v0,ri.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new xt;return e.addVectors(n.v2,wl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new bl(n.v0,r,e,n.v2)}function bs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function zP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function jP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function xd(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 Fh(n,r,e){return Rh(n,r)&&Rh(r,e)&&hd(n.position,r.position,e.position)}function hd(n,r,e){return ri.copy(r).sub(n).cross(wl.copy(e).sub(n))===0}function kh(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,a=(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(a+c,s+u),o.set(a-c,s-u),[t,o]}function Uh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Hh(n,r,e,t,o,i){let s=r.x-n.x,a=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+u)*(a+u)),d;return xd(r,n,e)>Math.PI&&(l*=-1),bs(u,a)?d=(a+u)*(t/l-.5)*8/3/(s-c):d=(s+c)*(t/l-.5)*8/3/(u-a),o.set(r.x-d*a,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function vd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Rh(n,r){return hd(n.position,n.controls[1].position,r.position)&&hd(n.position,r.controls[0].position,r.position)}function Wh(n,r,e,t,o=.5){let i=ri.subVectors(r,n).multiplyScalar(o).add(n),s=wl.subVectors(e,r).multiplyScalar(o).add(r),a=BP.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=RP.subVectors(s,i).multiplyScalar(o).add(i),l=GP.subVectors(a,s).multiplyScalar(o).add(s),d=a,p=VP.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function qh(n,r,e=12,t=!0){let o=zh.set(0,0,0),i,s=0,a=[];for(let c=0;c<r.length;c++){let u=gd(r[c]),l=ri,d=Po(u,e);a.push(d);for(let p=0;p<=d;p++)if(u instanceof bl||u instanceof yd||u instanceof Sl){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&jP(i,o))continue;i===void 0&&(i=Vh),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 $h(n,r,e,t=12,o=!0){let i=zh.set(0,0,0),s=0,a=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=gd(r[c]),d=ri,p=Po(l,t);a.push(p);for(let f=0;f<=p;f++)if(l instanceof bl||l instanceof yd||l instanceof Sl){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Vh:(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++),a}function bd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=Po(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=Po(s.curveAfter,r)),t.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Po(n[0].roundedCurveCorner,r)*.5),t}function Po(n,r=12){return n&&n instanceof MP?r*2:n&&(n instanceof Sl||n instanceof EP)?1:n&&n instanceof DP?r*n.points.length:r}function Yh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let a=gd(r[s]),c=Po(a,e),u=ri;for(let l=0;l<=c;l++)if(a instanceof bl||a instanceof yd||a instanceof Sl){if(a.getPoint(l/c,u),o!==void 0&&zP(o,u,vs))continue;o===void 0&&(o=wl),o.copy(u),n.push(u.x,u.y),i++}}return bs(n[0],n[n.length-2],vs)&&bs(n[1],n[n.length-1],vs)&&(n.pop(),n.pop()),t&&i>1&&!(bs(n[i-1],n[1],vs)&&bs(n[i-2],n[0],vs))&&(n.push(n[0],n[1]),i++),n}var _d=new Jr,UP=new Jr,HP=new Jr,WP=new Jr,qP=new Jr,$P=new Jr,_e=class extends Xh{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new FP(new kP(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=Sd.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new _e;return i.isClosed=e.isClosed,i.points=e.points.map(s=>ir.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>_e.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,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=e-t;if(a<=s.points.length-1)return s.points[a];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],a=s.points.indexOf(e);if(a>=0)return t+a;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=_d.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.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=Sd.generateUUID()){let i;e instanceof Jr?i=e:i=new Jr(e,t);let s=new ir(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 qh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=bd(this.points,e,!1),this.roundedCurveDivisions=bd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return $h(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Yh(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=Po(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(vd(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(_d.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=a[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){vd(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],a=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,l=a&&c&&Fh(a,s,c);if(!s.controlsMoved()&&u>0&&!l){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),x=Math.min(u,y*.499),b=Math.min(g,x),w=1-b/h,S=b/y,P=d.getPointAt(w,_d),_=p.getPointAt(S,UP);this._subSplitCurve(d,f,w,P,void 0),this._subSplitCurve(p,m,S,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=xd(P,s.position,_)/2,T=Math.tan(N)*P.distanceTo(s.position),[C,O]=kh(P,_,T,HP,WP),A=Uh(C,O,s.position),[R,U]=Hh(A,P,_,T,qP,$P);v=new _l(P.clone(),R.clone(),U.clone(),_.clone())}else v=new Kh(P.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof wd)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let a=e,c=t,u=a.getUtoTmapping(o,0),l=Wh(a.v0,a.v1,a.v2,a.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new _e(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],a=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new ir(Sd.generateUUID(),new Jr(s,a));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new _e;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof _l&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof Kh&&(i[a]=jh(i[a]));for(a=0,c=i.length;a<c;a++){let d=i[a],p=a>0?i[a-1]:null,f;d instanceof _l?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof wd&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],l=!1;return u instanceof _l?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),l=!0):u instanceof wd&&u.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Xh&&(this.shapeHoles=e.holes.map(i=>{let s=new _e;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 Td=Math.PI*2;function Pd({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function YP(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 Zh(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 XP(n,r,e,t,o,i,s,a,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(a,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*a,y=m*-i/o*s,g=h+(n+e)/2,x=y+(r+t)/2,b=(s-h)/o,w=(a-y)/i,S=(-s-h)/o,P=(-a-y)/i,_=Zh(1,0,b,w),v=Zh(b,w,S,P);return!u&&v>0&&(v-=Td),u&&v<0&&(v+=Td),{centerx:g,centery:x,ang1:_,ang2:v}}function Qh({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=XP(n,r,e,t,o,i,u,l,s,a),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Td/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let b=0;b<x;b++)c.push(YP(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Pd(b[0],o,i,h,y),{x:P,y:_}=Pd(b[1],o,i,h,y),{x:v,y:N}=Pd(b[2],o,i,h,y);return{x1:w,y1:S,x2:P,y2:_,x:v,y:N}})}import{BufferAttribute as Al,BufferGeometry as tT}from"three";var be;(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"})(be||(be={}));var Ge;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ge||(Ge={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var le=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,a,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),a=n.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,e.s)):(s=n.edgeSign(r,t,e),a=-n.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,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),a=n.transEval(t,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,e.t)):(s=n.transSign(r,t,e),a=-n.transSign(r,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,o.t)):i.t=(t.t+e.t)/2},n}(),Ss=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Pl=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}(),oi=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}(),Jh=function(){function n(){var r=new oi,e=new Ss,t=new Pl(0),o=new Pl(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 Pl(0),t=new Pl(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 oi,e=new oi,t=new Ss,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new oi;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Ss;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 Ss;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new oi;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 Ss;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,a;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,a=r.next,a.prev=s,s.next=a},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,a,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&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=r&&le.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&le.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,a,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),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),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===a&&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}(),ey=function(){function n(){this.handle=null}return n}(),ty=function(){function n(){this.key=null,this.node=0}return n}(),KP=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 ey,this.handles[t]=new ty;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 ey;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new ty}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}(),Od=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}(),ry=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),ZP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new ry,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 ry;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}(),QP=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?le.vertLeq(i.Org,s.Org)?le.edgeSign(s.Dst,i.Org,s.Org)<=0:le.edgeSign(i.Dst,s.Org,i.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(i.Dst,o,i.Org)>=0;var a=le.edgeEval(i.Dst,o,i.Org),c=le.edgeEval(s.Dst,o,s.Org);return a>=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 Od;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 be.ODD:return(e&1)!==0;case be.NONZERO:return e!==0;case be.POSITIVE:return e>0;case be.NEGATIVE:return e<0;case be.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,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),n.finishRegion(r,s),a=i.eUp,s=i}return a},n.addRightEdges=function(r,e,t,o,i,s){var a,c,u,l,d=!0;u=t;do ue(le.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),u=a.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),a.windingNumber=c.windingNumber-u.winding,a.inside=n.isWindingInside(r,a.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=a,l=u;c.dirty=!0,ue(c.windingNumber-u.winding===a.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=le.vertL1dist(e,r),i=le.vertL1dist(t,r),s=.5*i/(o+i),a=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*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(le.vertLeq(o.Org,i.Org)){if(le.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;le.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(le.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(!le.vertEq(o.Dst,i.Dst)),le.vertLeq(o.Dst,i.Dst)){if(le.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(le.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,a=i.Org,c=o.Dst,u=i.Dst,l,d,p=new oi,f,m;if(ue(!le.vertEq(u,c)),ue(le.edgeSign(c,r.event,s)<=0),ue(le.edgeSign(u,r.event,a)>=0),ue(s!==r.event&&a!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),d=Math.max(a.t,u.t),l>d))return!1;if(le.vertLeq(s,a)){if(le.edgeSign(u,s,a)>0)return!1}else if(le.edgeSign(c,a,s)<0)return!1;return n.debugEvent(r),le.intersect(c,s,u,a,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(a.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(a.s,s.s)),le.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=le.vertLeq(s,a)?s:a,le.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),le.vertEq(p,s)||le.vertEq(p,a)?(n.checkForRightSplice(r,e),!1):!le.vertEq(c,r.event)&&le.edgeSign(c,r.event,p)>=0||!le.vertEq(u,r.event)&&le.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):(le.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),le.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,a,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),a=e.eUp,c=s.eUp,u=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(r,e),le.vertEq(a.Org,r.event)&&(r.mesh.splice(i.Oprev,a),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),le.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}le.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,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,a,c;if(o=e.eUp,le.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!le.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=a=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),le.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,a,c,u=new Od;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=le.vertLeq(a.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=r.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(r,i,null);a.Onext===s?n.connectRightVertex(r,o,a):n.addRightEdges(r,o,a.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Od,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 ZP(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,a=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,a)},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,le.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 KP(i,le.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||!le.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}(),JP=function(){function n(){this.mesh=new Jh,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=be.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,a,c=[0,0,0],u=[0,0,0],l=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,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 a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.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(;le.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;le.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(le.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(le.edgeGoesLeft(o.Lnext)||le.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&&(le.edgeGoesRight(t.Lprev)||le.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,a=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ge.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===Ge.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=0,l=0;i=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.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[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Jh),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=be.ODD),e===void 0&&(e=Ge.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_(),QP.computeInterior(this,s);var a=this.mesh;return e===Ge.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ge.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},n}();function sr(n){var r=n.windingRule,e=r===void 0?be.ODD:r,t=n.elementType,o=t===void 0?Ge.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,u=n.normal,l=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new JP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,s,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var sF=be.ODD,aF=be.NONZERO,lF=be.POSITIVE,cF=be.NEGATIVE,dF=be.ABS_GEQ_TWO,uF=Ge.POLYGONS,pF=Ge.CONNECTED_POLYGONS,fF=Ge.BOUNDARY_CONTOURS;import{BufferAttribute as Ol,BufferGeometry as eT}from"three";var Tl=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*Tl.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*Tl.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=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);a.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=a,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)}},ws=Tl;ws.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var _s={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Cd={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Nd={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Ad=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),ni=class extends eT{constructor(e,t,o=0,i=12,s=3,a=be.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 v=_.extractShapePointsToFlatArray([],i),N=[];for(let T=v.length-1;T>=1;T-=2){let C=v[T-1],O=v[T-0];N.push(C,O)}return N}),l;try{l=sr({windingRule:a,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{l=_s}let d;try{d=sr({windingRule:be.ODD,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=Cd}if(!l)throw new Error("error generating geometry");let p=l.elementCount;if(d){l.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let v=d.elements[_],N=_%2===0?l.vertexCount:0;l.elements.push(v+N)}for(let _=0;_<d.vertexIndices.length;_++){let v=d.vertexIndices[_],N=l.vertexCount;l.vertexIndices.push(v+N)}for(let _=0;_<d.vertices.length;_++){let v=d.vertices[_];l.vertices.push(v)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,v=l.vertexCount;_<v;_++){let N=_*2,T=l.vertices[N+0],C=l.vertices[N+1];T<f&&(f=T),T>m&&(m=T),C<h&&(h=C),C>y&&(y=C)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new ws(this._computeBufferEstimatedSize(l));let g=[],x=[];for(let _=l.elementCount-1;_>=0;_--){let v=_>=p,N=_*2,T=l.elements[N+0],C=l.elements[N+1],O=T+C,A={start:T,count:C,normals:[],continuous:[],concave:[]},R=T,U=O-1,$=T+1,ee=this._shape.roundedCurves.length;do{let V=R-T,G=l.vertices[U*2+0],D=l.vertices[U*2+1],L=l.vertices[R*2+0],B=l.vertices[R*2+1],X=l.vertices[$*2+0],W=l.vertices[$*2+1],j=L-G,F=B-D,M=Math.sqrt(j*j+F*F);j/=M,F/=M;let Q=L-X,re=B-W,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=j*re-F*Q>0;let K=l.vertexIndices[R];if(Array.isArray(K))A.continuous[V]=!1;else{let[te,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let ie=J===1?te+1:te-1;ie=(ie+ee)%ee;let ce=J===1?0:1,se=this._shape.roundedCurves[te].getTangent(J),fe=this._shape.roundedCurves[ie].getTangent(ce);A.continuous[V]=se.dot(fe)>.95}}v&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[U,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==T+1);let Y=[];Y.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(T*2,O*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,G)=>[G,G]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(T*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,D=(1-Math.cos(G))*this._bevelSize,L=[],B=[],X=[],W=[],j=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=l.vertices[A.start*2+Q+0],K=l.vertices[A.start*2+Q+1],te=-A.normals[re+0]*D,J=-A.normals[re+1]*D,ie=-A.normals[Q+0]*D,ce=-A.normals[Q+1]*D;if(A.concave[M]||!A.concave[M]&&v){let se=Math.atan2(J,te),fe=Math.atan2(ce,ie);fe>se&&(fe-=Math.PI*2);let ze=fe-se;if(A.continuous[M]||v){let ge=se+ze/2,qe=Math.cos(ge)*D,Oe=Math.sin(ge)*D;L[2*j+0]=oe+qe*(v?-1:1),L[2*j+1]=K+Oe*(v?-1:1),W[j]=M,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(ze)/Math.PI));for(let qe=0;qe<=ge;qe++){let Oe=se+ze*(qe/ge),Ot=Math.cos(Oe)*D,Wt=Math.sin(Oe)*D;L[2*j+0]=oe+Ot,L[2*j+1]=K+Wt,W[j]=M,j++}}}else L[2*j+0]=oe+te,L[2*j+1]=K+J,W[j]=M,B[M]=j,j++,L[2*j+0]=oe,L[2*j+1]=K,W[j]=M,j++,L[2*j+0]=oe+ie,L[2*j+1]=K+ce,W[j]=M,X[M]=j,j++}let F=sr({windingRule:be.POSITIVE,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=W[re],K=W[(re+1)%W.length];M.idx=[oe,K],M.Sym.idx=[K,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!F.vertexCount)break;for(let M=0;M<F.vertexIndices.length;M++){let[Q,re]=F.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let K=Q;K<oe;K++){let te=K%C,J=(K+1)%C;if(!A.continuous[te]||!A.continuous[J]){F.vertexIndices[M]=[Q,te],F.vertexIndices.splice(M+1,0,[J,re]),F.vertices.splice((M+1)*2,0,F.vertices[M*2],F.vertices[M*2+1]);break}}}Y.push({bevelI:V,angle:G,size:D,boundary:F,reverseMap:W,insetPoints:L})}let q=(V,G,D)=>{let L=0,B=V.boundary.vertexIndices.length;for(;L<B&&D(V.boundary.vertexIndices[G]);)G=(G+1)%B,L++;return L},H=g.length;for(let V=1;V<Y.length;V++){let G=Y[V-1],D=Y[V],L=G.boundary.vertexIndices.length,B=D.boundary.vertexIndices.length;if(!L||!B)break;let X=A.concave.length,W=0,j=Ad(W,C);for(;!G.boundary.vertexIndices.filter(j).length||!D.boundary.vertexIndices.filter(j).length;)W++,j=Ad(W,C);let F=G.boundary.vertexIndices.findIndex(j),M=D.boundary.vertexIndices.findIndex(j);do F=(F+1)%L;while(j(G.boundary.vertexIndices[F]));do M=(M+1)%B;while(j(D.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(F-1+L)%L),oe=this._buildBevelVert(A,D,(M-1+B)%B),K=re,te=oe,J,ie,ce=!1;do{j=Ad(W,C);let se=q(G,F,j),fe=q(D,M,j),ze=ce;if(ce=!1,se&&!fe){for(let ge=0;ge<se;ge++)J=this._buildBevelVert(A,G,(F+ge)%L,ge/(se-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J;ce=!0}else if(!se&&fe)for(let ge=0;ge<fe;ge++)ie=this._buildBevelVert(A,D,(M+ge)%B,ge/(fe-1)),g.push(te.topN,K.topP,ie.topP),g.push(K.bottomP,te.bottomN,ie.bottomP),te=ie;else if(se&&fe)if(J=this._buildBevelVert(A,G,F,0),ie=this._buildBevelVert(A,D,M,0),ze?(g.push(K.topN,ie.topP,te.topN),g.push(K.topN,J.topP,ie.topP),g.push(ie.bottomP,K.bottomN,te.bottomN),g.push(ie.bottomP,J.bottomP,K.bottomN)):(g.push(te.topN,K.topN,J.topP),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,ie.bottomP)),K=J,te=ie,se===fe)for(let ge=1;ge<se;ge++)J=this._buildBevelVert(A,G,(F+ge)%L,ge/(se-1)),ie=this._buildBevelVert(A,D,(M+ge)%B,ge/(fe-1)),g.push(K.topN,J.topP,te.topN),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,ie.bottomP),K=J,te=ie;else if(se>fe){let ge=se/fe,qe=0;for(let Oe=1;Oe<se;Oe++)J=this._buildBevelVert(A,G,(F+Oe)%L,Oe/(se-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J,Oe>(qe+1)*ge&&(qe++,ie=this._buildBevelVert(A,D,(M+qe)%B,qe/(fe-1)),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,te.bottomN,ie.bottomP),te=ie)}else{let ge=fe/se,qe=0;for(let Oe=1;Oe<fe;Oe++)ie=this._buildBevelVert(A,D,(M+Oe)%B,Oe/(fe-1)),g.push(te.topN,J.topP,ie.topP),g.push(J.bottomP,te.bottomN,ie.bottomP),te=ie,Oe>(qe+1)*ge&&(qe++,J=this._buildBevelVert(A,G,(F+qe)%L,qe/(se-1)),g.push(K.topN,J.topP,te.topN),g.push(J.bottomP,K.bottomN,te.bottomN),K=J)}F=(F+se)%L,M=(M+fe)%B,W=(W+1)%X}while(W!==Q)}if(this._depth>this._bevel*2&&this._buildWall(Y,A,g),v){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let D=g[G-2],L=g[G-1],B=g[G-0];V.push(B,L,D)}g.splice(H,g.length-H,...V)}if(v){let V=[];for(let G=Y[Y.length-1].boundary.vertices.length-1;G>=1;G-=2){let D=Y[Y.length-1].boundary.vertices[G-1],L=Y[Y.length-1].boundary.vertices[G-0];V.push(D,L)}x.push(V)}if(!v){let V=Y[Y.length-1],G;try{G=sr({windingRule:Y.length>1?be.POSITIVE:be.ODD,elementType:Ge.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...x]})}catch{G=Nd}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let D=0;D<G.elementCount*3;D+=3){let L=this._buildSurfaceVert(G,G.elements[D+0]),B=this._buildSurfaceVert(G,G.elements[D+1]),X=this._buildSurfaceVert(G,G.elements[D+2]);g.push(L.top,B.top,X.top),g.push(X.bottom,B.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new Ol(Uint32Array.from(g),1),w=new Ol(this._buffer.positions,3),S=new Ol(this._buffer.normals,3),P=new Ol(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,P.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",P),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);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],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),l=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[d+0]=a,this._buffer.uvs[d+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[d+2]=a,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[a,c]=t.boundary.vertexIndices[o],u,l,d,p;a!==c?(l=a,u=c,p=!1,d=e.continuous[l]&&e.continuous[u]):(u=a,l=(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=l*2,x=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(x-this._minX)/this._width,P=(b-this._minY)/this._height,_=e.normals[y+0],v=e.normals[y+1],N=e.normals[g+0],T=e.normals[g+1];if(p){let U=N-_,$=T-v;_=_+U*(1-i),v=v+$*(1-i);let ee=Math.sqrt(_*_+v*v);_/=ee,v/=ee}let C=this._buffer.get(d?2:4),O=C*3,A=C*2,R={i:o,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=v*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=v*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S,d||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=N*f,this._buffer.normals[O+1]=T*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=T*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new ni(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qr(this.userData),e}};var ii=class extends tT{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=be.ODD;this.elementType=Ge.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:be.ODD,elementType:Ge.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)),a,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{a=sr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{a=_s}let p=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new Al(new Float32Array(p*3),3),this._normalAttribute=new Al(new Float32Array(p*3),3),this._uvAttribute=new Al(new Float32Array(p*2),2),this._indexAttribute=new Al(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1],N=(_-m)/x,T=(v-y)/b;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,T)}for(let w=0,S=f;w<S;w++){let P=w*3,_=a.elements[P+0],v=a.elements[P+1],N=a.elements[P+2];this._indexAttribute.setX(P+0,_),this._indexAttribute.setX(P+1,v),this._indexAttribute.setX(P+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new ii(this._shape,this._curveSegments);return e.userData=qr(this.userData),e}};var si=class extends ni{constructor(e,t,o=0,i=12,s=3,a=be.ODD){super(e,t,o,i,s,a);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=qr(this.userData),e}};var Mt=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:be.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,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof _e?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new _e(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new _e(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:a}),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 a;return r<=0?a=new ii(n.shape,o,{windingRule:s}):a=new si(n.shape,r,e,o,t,s),Object.assign(a,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as ny,Vector2 as iy}from"three";var sy=Math.PI*2,li=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 _e?n.shape:new _e,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:a,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=rT(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Mt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function rT(n,r,e,t,o,i){if(t>=sy)return o>30||o%4===0?(nT(n,r,e,i),Math.round(o/4)):oy(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},a=t+Math.PI*.5,c={x:Math.cos(a)*r,y:Math.sin(a)*e},u=Qh({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?oT(n,s.x,s.y,u,o,r,e,i):oy(n,t,o,r,e,i)}function oT(n,r,e,t,o,i,s,a){let c=Math.round(o/t.length);n.addPoint(ai(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=ai(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 a>0?ay(n,i,s,a):n.addPoint(ai(0,0)),c}function oy(n,r,e,t,o,i){let s=-r/e;for(let a=0;a<=e;a++){let c=s*a,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(ai(u,l))}return r<sy?i>0?ay(n,t,o,i):n.addPoint(ai(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&ly(n,t,o,i)),1}function nT(n,r,e,t=0,o=0,i=0){let s=.5522847498,a=r*s,c=e*s;n.addPoint(Cl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Cl(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Cl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Cl(o,i-e,o+a,i-e,o-a,i-e)),t>0&&ly(n,r,e,t)}function ai(n,r){return new ir(ny.generateUUID(),new iy(n,r))}function Cl(n,r,e,t,o,i){let s=ai(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function ay(n,r,e,t){cy(n,r,e,t).forEach(i=>n.addPoint(i))}function ly(n,r,e,t){let o=cy(n,r,e,t),i=new _e;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function cy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new iy(o/r,i/e),a=n.points.map(c=>{let u=c.clone();return u.uuid=ny.generateUUID(),u}).reverse();return a.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),a}import{BufferGeometry as iT,Float32BufferAttribute as Id,Uint32BufferAttribute as sT,Vector3 as dy}from"three";var uy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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:a,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new Ps(!1,r,e,t,o,i,s,a,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Md=new sT([0,0,0],1),Ps=class extends iT{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,a=1,c=1,u=1,l=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new dy,h=new dy,y=m(),g=m(),x=m(),b,w,S,P,_,v,N,T,C=m(),O=m(),A=m(),R=m(),U=m(),$=m(),ee=m(),Y=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(a*s),G=V+1,D=q/V,L=-q/2,B=l+1,X=2*Math.PI/l,W=Math.PI/2/p,j=.01,F=Math.min((1-d/100)*c,c-j),M=c-F,Q=0,re=2,oe=p*re+re,K=B*oe/re,te=K+B*G,J=B*(G+oe),[ie,ce,se]=[3,3,2].map(Ue=>Array(J*Ue).fill(0)),fe=[],ze=i-c;function ge(Ue,Gt){let hr=Math.PI/2;v=Gt*D,T=2*Math.PI*(v%H)/H+hr,v+=L,N=Math.sin(T)*ze,_=Math.cos(T)*ze,r?Ue.set(_,N,v):Ue.set(_,v,N)}ge(h,-1e-10),ge(y,0),C.copy(h),ge(h,1);let qe=h.distanceTo(y),Oe=f?0:M+F,Ot=qe*V+2*Oe,Wt=F,un=Ot-Oe;for(let Ue=0;Ue<=V;Ue++){ge(g,Ue),Y.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),ee.crossVectors(Y,$).normalize();let Gt=Ue===0,hr=Ue===V,R0=Gt?3*Math.PI/2:W,G0=Gt?Wt:un,V0=Gt?B:te,z0=Gt?0:J-B,j0=Y.clone().multiplyScalar(Gt?-M:M).add(g),F0=Y.clone().multiplyScalar(Gt?-1:1).normalize();for(let Fr=0;Fr<B;Fr++){let Hu=Fr*X;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(Hu)),y.copy(ee).multiplyScalar(c*Math.sin(Hu))),A.copy(O).normalize(),Gt||hr){f||(Q=z0+Fr,[0,1,2].forEach(At=>{ie[Q*3+At]=j0.getComponent(At),ce[Q*3+At]=F0.getComponent(At)}),se[Q*2]=+hr,se[Q*2+1]=Fr/l),y.copy(A).multiplyScalar(F),x.addVectors(g,y);for(let At=0;At<p;At++){let xc=At*W+R0;R.addVectors(h.copy(Y).multiplyScalar(M*Math.sin(xc)),y.copy(A).multiplyScalar(M*Math.cos(xc))),U.copy(R).normalize(),y.addVectors(x,R),R.normalize(),Q=V0+At*B+Fr,[0,1,2].forEach(na=>{ie[Q*3+na]=y.getComponent(na),ce[Q*3+na]=U.getComponent(na)});let k0=+Gt+Math.sin(xc);se[Q*2]=(G0+M*k0)/Ot,se[Q*2+1]=Fr/l}}y.addVectors(g,O),Q=K+Ue*B+Fr,[0,1,2].forEach(At=>{ie[Q*3+At]=y.getComponent(At),ce[Q*3+At]=A.getComponent(At)}),se[Q*2]=(Oe+Ue*qe)/Ot,se[Q*2+1]=Fr/l}}let Rt=G+2*p+re,ta=1,[ra,oa]=[+f,Rt-1];for(let Ue=ra;Ue<=oa-1;Ue++){let Gt=f&&Ue===oa-1;for(let hr=0;hr<B-1;hr++)b=Ue*B+hr,w=b+1,S=(Gt?hr:b)+B,P=(Gt?hr+1:w)+B,Ue===0?fe.push(w,P,S):Ue===Rt-2?fe.push(b,w,S):fe.push(b,w,S,w,P,S)}this.setIndex(fe),this.setAttribute("position",new Id(ie,3)),this.setAttribute("normal",new Id(ce,3)),this.setAttribute("uv",new Id(se,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,a,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,s=i+1,a=(d?p:i)+t,c=(d?p+1:s)+t,o[u++]=i,o[u++]=s,o[u++]=a,o[u++]=s,o[u++]=c,o[u++]=a;return o.length=u,Md.array=o,Md.count=o.length,Md}};import{IcosahedronGeometry as aT}from"three";var py=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,a=o===0&&i!==0?new Ts(r*.5,i,s):new aT(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Ts=class extends _o{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],a="IcosahedronGeometry";super(i,s,a,r,e,t),this.type=a}static fromJSON(r){return new Ts(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as lT,Shape as cT}from"three";var fy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new cT;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 lT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Sy,BufferGeometryLoader as ST,Vector3 as wT,BoxGeometry as wy}from"three";import{BufferGeometry as gT,Vector2 as Bd,Vector3 as by}from"three";import{Box3 as dT,BufferAttribute as Os,BufferGeometry as my,Color as Dd,EventDispatcher as uT,Float32BufferAttribute as ci,Matrix3 as hy,Matrix4 as vy,MathUtils as pT,Object3D as fT,Sphere as mT,Vector2 as kt,Vector3 as ut,Vector4 as hT}from"three";var Ar=new vy,Ed=new fT,Nl=new ut,To=class extends uT{constructor(){super(),this.uuid=pT.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 hy().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,a=i.vertexNormals.length;s<a;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 Ar.makeRotationX(r),this.applyMatrix4(Ar),this}rotateY(r){return Ar.makeRotationY(r),this.applyMatrix4(Ar),this}rotateZ(r){return Ar.makeRotationZ(r),this.applyMatrix4(Ar),this}translate(r,e,t){return Ar.makeTranslation(r,e,t),this.applyMatrix4(Ar),this}scale(r,e,t){return Ar.makeScale(r,e,t),this.applyMatrix4(Ar),this}lookAt(r){return Ed.lookAt(r),Ed.updateMatrix(),this.applyMatrix4(Ed.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,a=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 ut().fromBufferAttribute(i,p)),a!==void 0&&e.colors.push(new Dd().fromBufferAttribute(a,p));function l(p,f,m,h){let y=a===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ut().fromBufferAttribute(s,p),new ut().fromBufferAttribute(s,f),new ut().fromBufferAttribute(s,m)],x=new di(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new kt().fromBufferAttribute(c,p),new kt().fromBufferAttribute(c,f),new kt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new kt().fromBufferAttribute(u,p),new kt().fromBufferAttribute(u,f),new kt().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Nl).negate(),this.translate(Nl.x,Nl.y,Nl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new vy;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 ut,e=new ut;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,a),e.subVectors(s,a),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 ut;if(r){let t=new ut,o=new ut;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],u=this.vertices[a.b],l=this.vertices[a.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.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 To;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 a=0,c=this.faces.length;a<c;a++){let u=new ut,l={a:new ut,b:new ut,c:new ut};i.push(u),s.push(l)}}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 a=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(a.normal),u.a.copy(a.vertexNormals[0]),u.b.copy(a.vertexNormals[1]),u.c.copy(a.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 dT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new mT),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,a=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new hy().getNormalMatrix(e));for(let p=0,f=a.length;p<f;p++){let h=a[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,b=new di(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=x.length;w<S;w++)y=x[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++)x.push(g[b].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ut(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,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),a&&a.push(i[u])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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=[],a={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,P=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,b),_=l(_,5,w),_=l(_,6,S),_=l(_,7,P),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(b&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(S&&t.push(p(h.color)),P){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[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 To().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];x.push(S.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let 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],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}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 a=r.skinWeights;for(let p=0,f=a.length;p<f;p++)this.skinWeights.push(a[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Ld().fromGeometry(this),e=new my,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Il.call(new Os(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Il.call(new Os(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",yy.call(new Os(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",gy.call(new Os(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",gy.call(new Os(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let u=s[a],l=new ci(u.data.length*3,3);l.name=u.name,i.push(Il.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ci(r.skinIndices.length*4,4);e.setAttribute("skinIndex",xy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ci(r.skinWeights.length*4,4);e.setAttribute("skinWeight",xy.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new my,t=r.geometry;if(r.isPoints||r.isLine){let o=new ci(t.vertices.length*3,3),i=new ci(t.colors.length*3,3);if(e.setAttribute("position",Il.call(o,t.vertices)),e.setAttribute("color",yy.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ci(t.lineDistances.length,1);e.setAttribute("lineDistance",yT.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};To.prototype.isGeometry=!0;var Ld=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.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,a=r.morphTargets,c=a.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:a[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let b=x.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=x.normal;this.normals.push(S,S,S)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=x.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 kt,new kt,new kt))}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 kt,new kt,new kt))}for(let S=0;S<c;S++){let P=a[S].vertices;u[S].data.push(P[x.a],P[x.b],P[x.c])}for(let S=0;S<d;S++){let P=l[S].vertexNormals[g];p[S].data.push(P.a,P.b,P.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},di=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 ut,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Dd,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function yT(n){return this.array.set(n),this}function yy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new Dd),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function gy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new kt),r[e++]=i.x,r[e++]=i.y}return this}function Il(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new ut),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function xy(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new hT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var xT=["a","b","c"];function vT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Rd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Gd(n,r,e,t,o,i){let s=Math.min(n,r),a=Math.max(n,r),c=s+"_"+a,u;if(t.has(c))u=t.get(c);else{let l=e[s],d=e[a];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function bT(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],Gd(s.a,s.b,n,t,s,e),Gd(s.b,s.c,n,t,s,e),Gd(s.c,s.a,n,t,s,e)}function Ml(n,r,e,t,o){n.push(new di(r,e,t,void 0,void 0,o))}function ui(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function El(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Ll=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof gT?r=new To().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 by,t,o,i,s,a,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;bT(c,u,p,f);let m=[],h,y,g,x,b,w,S;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new by,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(x=y.faces[s],a=0;a<3&&(h=c[vT(x,xT[a])],!(h!==y.a&&h!==y.b));a++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let P,_,v,N,T,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],T=p[o].edges,t=T.length,t==3?P=3/16:t>3&&(P=3/(8*t)),_=1-t*Number(P),v=P,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=T[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,$,ee,Y,q=[],H=[],V,G,D,L,B=new Bd,X=new Bd,W=new Bd;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(Rd(x.a,x.b,f).newEdge)+U,ee=Number(Rd(x.b,x.c,f).newEdge)+U,Y=Number(Rd(x.c,x.a,f).newEdge)+U,Ml(q,$,ee,Y,x.materialIndex),Ml(q,x.a,$,Y,x.materialIndex),Ml(q,x.b,ee,$,x.materialIndex),Ml(q,x.c,Y,ee,x.materialIndex),d&&(V=l[o],G=V[0],D=V[1],L=V[2],B.set(ui(G.x,D.x),ui(G.y,D.y)),X.set(ui(D.x,L.x),ui(D.y,L.y)),W.set(ui(G.x,L.x),ui(G.y,L.y)),El(H,B,X,W),El(H,G,B,W),El(H,D,X,B),El(H,L,W,X));r.vertices=R,r.faces=q,d&&(r.faceVertexUvs[0]=H)}};var Ze=new wT,_y=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Sy().copy(new wy(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Ze),t={width:Ze.x,height:Ze.y,depth:Ze.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 Sy().copy(new wy(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Ze)):Ze.set(s.width,s.height,s.depth),(r!==Ze.x||e!==Ze.y||t!==Ze.z)&&i.scale(Ze.x===0?1:r/Ze.x,Ze.y===0?1:e/Ze.y,Ze.z===0?1:t/Ze.z);let a=i.originalGeometry;try{o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Ll(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new ST(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Ze);let s=100/Ze.x;Object.assign(i.parameters,{width:100,height:Ze.y*s,depth:Ze.z*s}),r(this.build(i))})}};var Dl=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 _e?n.shape:new _e,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:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Mt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as _T,Float32BufferAttribute as Vd,Vector2 as Cr,Vector3 as ot}from"three";var Py=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:a,cornerSegments:c}=n.parameters,u=new jd(r*.5,e,o,i,s,a,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function As(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function zd(n,r,e,t,o,i){let s=r.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let u=s.add(a).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(a,t/Math.sin(u))}}function PT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var jd=class extends _T{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let c=[],u=[],l=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,b=new ot(0,-f,0),w=new ot(0,f,0),S=new Cr(r,-f),P=new Cr(h,-f),_=new Cr(0,w.y).sub(P),v=new Cr(0,w.y).sub(S),N=new Cr(_.y,-_.x).normalize(),T=new Cr(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new ot(N.x,N.y,0),V=new ot(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),$=new ot;if(!i){u.push(b.x,b.y,b.z),l.push(0,-1,0),d.push(0,0);let H=p++,V=[],G=S.clone(),D=R/Math.cos(Math.PI/t);G.x-=D;for(let L=0;L<t;L++){let B=L/t*Math.PI*2+m,X=new Cr(Math.sin(B),Math.cos(B));As(G,X,$),u.push($.x,$.y,$.z),l.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let ee=[];{let H=new ot,V=new ot,G=new ot,D=new ot,L=new ot,B=new ot;for(let X=0;X<t;X++){let W=X/t*Math.PI*2+m,j=(X+.5)/t*Math.PI*2+m,F=(X+1)/t*Math.PI*2+m,M=new Cr(Math.sin(W),Math.cos(W)),Q=new Cr(Math.sin(j),Math.cos(j)),re=new Cr(Math.sin(F),Math.cos(F));As(S,M,V),As(S,re,G),As(N,Q,H),zd(w,V,G,U,U,D),u.push(D.x,D.y,D.z),zd(V,w,G,U,R,L),u.push(L.x,L.y,L.z),zd(G,V,w,R,U,B),u.push(B.x,B.y,B.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,K=p++,te=p++;if(c.push(oe,K,te),s>0){{let ce=V.clone().add(G).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),ze=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ge=B.clone().sub(L);Y(ce,ge,ze,_.angle())}let J,ie;{let ce=new ot;As(T,re,ce);let se=B.clone().add(D).multiplyScalar(.5);se=PT(se,G,w);let fe=B.clone().sub(D);[J,ie]=Y(se,fe,ce,A,D.y)}{let ce=J,se=ce.clone().setY(0).normalize(),fe=new ot(0,-1,0),ze=se.clone().cross(fe);q(ce,se,fe,ze)}ee.concat(ie);{let ce=_.angle(),se=Math.PI-ce,fe=w.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let ze=new ot,ge=[];for(let Oe=0;Oe<a;Oe++){let Ot=[],Wt=Math.PI/2-se*Oe/a,un=Math.cos(Wt),Rt=Math.sin(Wt),ta=j;for(let ra=0;ra<=Oe;ra++){let oa=Math.cos(ta),Ue=Math.sin(ta);H.x=un*Ue,H.y=Rt,H.z=un*oa,ze.copy(fe).addScaledVector(H,s),u.push(ze.x,ze.y,ze.z),l.push(H.x,H.y,H.z),d.push(0,0),Ot.push(p++),ta+=Math.PI*2/Oe/t}ge.push(Ot)}ie.reverse(),ge.push(ie);let qe=ge.length-1;for(let Oe=0;Oe<qe;Oe++){let Ot=ge[Oe],Wt=ge[Oe+1],un=Ot.length-1;c.push(Wt[1],Ot[0],Wt[0]);for(let Rt=1;Rt<=un;Rt++)c.push(Ot[Rt],Ot[Rt-1],Wt[Rt]),c.push(Wt[Rt+1],Ot[Rt],Wt[Rt])}}}}}this.setIndex(c),this.setAttribute("position",new Vd(u,3)),this.setAttribute("normal",new Vd(l,3)),this.setAttribute("uv",new Vd(d,2));function Y(H,V,G,D,L){let B=-D/2,X=(Math.PI-D)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(X));let j=new ot,F=new ot,M=1,Q=p,re=[];for(let oe=0;oe<=a;oe++){let K=B+oe/a*D;F.set(0,0,0),F.addScaledVector(W,Math.sin(K)),F.addScaledVector(G,Math.cos(K));for(let te=0;te<=M;te++){let J=te/M-.5;if(j.copy(H),j.addScaledVector(V,J),j.addScaledVector(F,s),L!=null){let ie=Math.max(0,j.y-L);j.addScaledVector(V,-ie/V.y)}u.push(j.x,j.y,j.z),l.push(F.x,F.y,F.z),d.push(0,0),te===0&&re.push(p),p++}}for(let oe=0;oe<a;oe++)for(let K=0;K<M;K++){let te=Q+K+(M+1)*oe,J=te+(M+1),ie=J+1,ce=te+1;c.push(te,J,ce),c.push(J,ie,ce)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,D){let L=Math.PI/2,B=v.angle()-L,X=[],W=new ot,j=new ot;for(let M=0;M<=a;M++){let Q=[],re=M/a;for(let oe=0;oe<=M;oe++){let te=((M?oe/M:0)-.5)*x,J=Math.cos(te),ie=Math.sin(te),ce=Math.atan(Math.tan(B)*J),se=(L+ce)*re,fe=Math.cos(se),ze=Math.sin(se);W.set(0,0,0),W.addScaledVector(V,ze*J),W.addScaledVector(G,fe),W.addScaledVector(D,ze*ie),j.copy(H).addScaledVector(W,s),u.push(j.x,j.y,j.z),l.push(W.x,W.y,W.z),d.push(0,0),Q.push(p++)}X.push(Q)}let F=X.length-1;for(let M=0;M<F;M++){let Q=X[M],re=X[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let K=1;K<=oe;K++)c.push(Q[K-1],Q[K],re[K]),c.push(Q[K],re[K+1],re[K])}}}};var Bl=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 _e?n.shape:new _e,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:a,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,P){return S>e&&P>t?Math.min(w*e/S,w*t/P):S>e?w*e/S:P>t?w*t/P:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=d.x,y=d.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Mt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as TT}from"three";var Ty=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:a,thetaStart:c,thetaLength:u}=n.parameters,l=new TT(.5*r,o,i,s,a,c,u);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as OT}from"three";var Oy=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 OT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as AT,Float32BufferAttribute as Fd,Vector3 as CT}from"three";var Ay=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,a=new kd(r,e,t,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},kd=class extends AT{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],u=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,F=0,M=0)=>new CT(j,F,M),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],b=-g,w=+g,[S,P,_]=[f(b,-y,+x),f(b,-y,-x),f(b,+y,-x)],v=(j,F=!1)=>Math.sin(j-Math.PI/(1+ +F)),N=(j,F=!1)=>Math.cos(j-Math.PI/(1+ +F));_.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-x,C=S.z-l;o<=p?(_.z=Math.min(T,C),_.z==C&&(_.y-=(T-C)/Math.tan(p-o))):P.z=Math.min(P.z-T-x,S.z-l),m.subVectors(S,P),h.subVectors(_,P);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(R).add(P);m.set(0,v(o,!0),N(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let F=p+o+j*$;m.set(0,Math.sin(F)*A,Math.cos(F)*A),m.add(U),h.set(0,v(F),N(F)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let ee=Math.sin($/2)*A*2,Y=d.length-1,q=d[0][0].distanceTo(d[1][0]),H=d[Y-1][0].distanceTo(d[Y][0]),V=q+ee*s+H;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*ee)/V);d[Y].push(0);let[G,D,L]=d[0],B,X,W;for(let j=1;j<d.length;j++)[B,X,W]=d[j],a.push(b,G.y,G.z,b,B.y,B.z,w,G.y,G.z,w,G.y,G.z,b,B.y,B.z,w,B.y,B.z),c.push(0,D.y,D.z,0,X.y,X.z,0,D.y,D.z,0,D.y,D.z,0,X.y,X.z,0,X.y,X.z),u.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,D,L]=[B,X,W];this.setAttribute("position",new Fd(a,3)),this.setAttribute("normal",new Fd(c,3)),this.setAttribute("uv",new Fd(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 _e?n.shape:new _e,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:a,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=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,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,P=f+Math.sin(S)*d,_=m+Math.cos(S)*p;l.addPoint(l.createPoint(P,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,P=m+Math.sin(y)*p;l.addPoint(l.createPoint(S,P)),y+=h,S=f+Math.cos(y)*g,P=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(S,P)),y+=h}l.isClosed=!0;for(let w=0,S=l.points.length;w<S;w++)l.points[w].roundness=i;l.roundness=i,l.update();let b=Mt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as NT}from"three";var Cy=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 NT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Ny=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:a,cornerSegments:c}=n.parameters,u=IT(r,e,t,r*.5,s,i,0,0,o,a,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function IT(n,r,e,t,o,i,s,a,c,u,l){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new Ps(!0,n,r,e,t,o,i,s,a,c,u,l)}import{TorusKnotGeometry as MT}from"three";var Iy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,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,a=r*.5;a!==e&&(a-=e);let c=new MT(a,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var My=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 _e?n.shape:new _e,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:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5;a?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Mt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as Ly,Vector3 as nt,Matrix4 as Cs,BufferGeometry as Dy,BufferAttribute as Ud,MathUtils as Hd}from"three";function Ey(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function ET(n,r,e){let t=[new nt,new nt,new nt],o=[new nt,new nt,new nt];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let a=o[s],c=Hd.lerp(i.length(),a.length(),e);i.lerp(a,e).setLength(c)}),new Cs().makeBasis(t[0],t[1],t[2])}var By=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??li.create({parameters:qc}).userData.shape;return{path:n.path??Hn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...rl,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new Wd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Dy,{userData:{...n,type:"PathGeometry"}})}},Wd=class extends Dy{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)||!Ey(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=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-a+1),s+2),l=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+a)%e.length:Math.min(O+a,e.length-1);l.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,R)=>{l[O]=l[O].clone().lerp(l[A],R),d[O]=ET(d[O],d[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let O=l.length-1;l[O].copy(l[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:x,vertices:b}=this._computeShapePoints(5),w=0,S=0;x.sort((O,A)=>O.start-A.start),x.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let P=S*u,_,v=0;if(this._isOpenEnded()){try{_=sr({windingRule:be.ODD,elementType:Ge.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=Nd}v=_.vertexCount}let N=P+2*v,T={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];x.forEach(O=>{this._extrudeRegion(O,b,d,l,T,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,P,C,T,d[0],l[0],!1),this._closeEnd(_,P+v,C,T,d[d.length-1],l[l.length-1],!0)),this.setAttribute("position",new Ud(T.positions,3)),this.setAttribute("normal",new Ud(T.normals,3)),this.setAttribute("uv",new Ud(T.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=gl(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new nt,a=new nt,c=new nt,u=new nt,l=new nt(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(x).normalize(),S=b.clone().sub(g).normalize(),P=w.clone().add(S).normalize();c.copy(P),y===0&&(P.equals(l)||P.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(P).normalize(),v=P.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(s.copy(v),a.copy(P));let N=new Cs().makeBasis(_,v,P);t.push(N)}let d=i?a:c,p=i?s:new nt(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 Cs().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:a,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new Cs,d=new Cs;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(Hd.lerp(s,s+a,m));let h=Hd.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=be.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let b=y[x-1],w=y[x-0];g.push(b,w)}return g}),a;try{a=sr({windingRule:t,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{a=_s}let c;try{c=sr({windingRule:be.ODD,elementType:Ge.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=Cd}if(!a)throw new Error("error generating geometry");let u=a.elementCount;if(c){a.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?a.vertexCount:0;a.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=a.vertexCount;a.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];a.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=a.vertexCount;h<y;h++){let g=h*2,x=a.vertices[g+0],b=a.vertices[g+1];x<l&&(l=x),x>d&&(d=x),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=a.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=a.elements[g+0],b=a.elements[g+1],w=x+b,S={start:x,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let P=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let T=P-x,C=a.vertices[_*2+0],O=a.vertices[_*2+1],A=a.vertices[P*2+0],R=a.vertices[P*2+1],U=a.vertices[v*2+0],$=a.vertices[v*2+1],ee=A-C,Y=R-O,q=Math.sqrt(ee*ee+Y*Y);ee/=q,Y/=q;let H=A-U,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[T*2+0]=-V,S.normals[T*2+1]=H;let D=a.vertexIndices[P];if(Array.isArray(D))S.continuous[T]=!1;else{let[L,B]=o.getCurveIndexFromVertexId(D-1,!0);if(B>0&&B<1)S.continuous[T]=!0;else{let X=B===1?L+1:L-1;X=(X+N)%N;let W=B===1?0:1,j=o.roundedCurves[L].getTangent(B),F=o.roundedCurves[X].getTangent(W);S.continuous[T]=j.dot(F)>.95}}y&&(S.normals[T*2+0]*=-1,S.normals[T*2+1]*=-1),[_,P,v]=[P,v,v+1],v>=w&&(v-=b)}while(v!==x+1)}return{regions:[i,...s],infos:m,vertices:a.vertices}}_insertVertex(e,t,o,i,s){let a=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[a+0]=s.x,e.uvs[a+1]=s.y}_extrudeRegion(e,t,o,i,s,a,c){let u=new nt,l=new nt,d=new nt,p=new nt,f=new Ly;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;l.set(t[S+0],t[S+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,x,d,p,f),x++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;l.set(t[S+0],t[S+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,x,d,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&x++;let w=b===e.count-1?0:x+1,S=y+x,P=y+w,_=g+w,v=g+x;e.isHole?a.push(S,_,P,S,v,_):a.push(S,P,_,S,_,v),x++}}}_closeEnd(e,t,o,i,s,a,c){let u=e.vertexCount,l=new nt(0,0,c?-1:1).applyMatrix4(s),d=new nt,p=new Ly;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(a),this._insertVertex(i,t+m,d,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}};import{BufferAttribute as Ry,BufferGeometry as qd}from"three";import{mergeBufferGeometries as LT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Gy(){let n=new qd;return n.setAttribute("position",new Ry(new Float32Array([]),3)),n.setIndex(new Ry(new Uint16Array([]),1)),n}var DT=Gy().attributes,BT=12,RT=1,pi=class extends qd{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,DT),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:a,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=l===2?u.toUpperCase():l===3?u.toLowerCase():u,p=GT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,x=f.map(S=>new _e().fromShape(S));this.vectorShapes=x;let b=x.map(S=>Mt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:a,windingRule:s<=0?be.NONZERO:be.ODD,subdivisions:this.isLowResolution&&s>0?RT:BT}})),w=b.length?LT(b):Gy();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,P])=>{this.setAttribute(S,P)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Jt(new qd,pi.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 GT(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 $d,BufferAttribute as zy,Uint32BufferAttribute as Yd,Float32BufferAttribute as Xd,Matrix4 as zT,Vector3 as Ms,Sphere as jT,Box3 as FT,BoxGeometry as kT}from"three";var Gy,hi=new Promise(n=>{Gy=n});var Vy=Bn(async()=>{let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.390/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});Gy(i)});import{BufferGeometryLoader as RT}from"three";function Yo(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=_e.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 RT().parse(n);else{if(n.type==="SubdivGeometry")return new We(n,e);if(n.type==="TextGeometry")return new mi(n,r)}let o;try{o=qd(t)}catch(i){console.error(i)}if(!o){let i=_e.createFromState(Wn.defaultData(),100,100);t.shape=i,o=qd(t)}return o}import{Matrix4 as GT}from"three";var VT=new GT;function Is(n,r,e,t){let o=n.position.array,i=n.normal.array,s=VT.makeScale(r,e,t).invert().elements,a,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,a=i[l],c=i[l+1],u=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*u,i[l+1]=s[1]*a+s[5]*c+s[9]*u,i[l+2]=s[2]*a+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Vl=new FT,yi=new Ms,de;hi.then(n=>{de=n});var jy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Fy=new Uint32Array([0,1,2,3]),ky=new Uint8Array([4]),We=class extends $d{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=ho.div(t,o);this.subdividedGeometry&&Is(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Is(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(yi.fromArray(i));let a=yi.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=a/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=We.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new kT(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&&(We.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new jT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Vl.setFromBufferAttribute(t),Vl.getCenter(o),e.boundingSphere.radius=o.distanceTo(Vl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Vl.getSize(yi);let i={width:yi.x,height:yi.y,depth:yi.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,a,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=We.allocate(e,i)}catch(l){console.error(l,e),s=We.allocate({positionWASM:jy,indexWASM:Fy,verticesPerFaceWASM:ky},i)}if(de.set_destination_refinement_level(s,0),a=We.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=We.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=We.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:a,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0?t.geometry:Yo(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let a,c,u,l;({positions:a,triIndices:l}=Jd(i.getAttribute("position"),s));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=eu(a,l,i,d),{positions:a,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,s,a=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=jy,i=Fy,s=ky);let u=o.length,l=i.length,d=s.length,p=o.length+a.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),x=new Float32Array(de.HEAPF32.buffer,g,p),b=new Uint32Array(de.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(a,o.length),x.set(c,o.length+a.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(P=>P!==1)&&(w=new zT().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?de.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):de.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),S}static buildLevel(e,t,o,i,s){let a=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(a>>2,(a>>2)+c),l=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=de.HEAPU32[u[d]>>2],b=de.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new $d;if(w.setIndex(new Yd(b,1)),w.setAttribute("position",new Xd(f,3)),w.setAttribute("normal",new Xd(h,3)),t){w.setAttribute("faceMap",new Yd(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new zy(S,4))}return de.free_mesh_data(a),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(a)}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,a=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+2),u=0,l=de.HEAPU32[a[u]>>2],d=de.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=de.HEAPU32[a[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new $d;m.setAttribute("position",new Xd(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 zy(h,3)),m.setIndex(new Yd(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),a=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+a),u=c.subarray(3,3+3),l=0,d=de.HEAPU32[c[l]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=de.HEAPU32[c[l]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=de.HEAPU32[c[l]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var Uy=["getX","getY","getZ"];function Jd(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],a=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[Uy[p]](l)*a)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[Uy[p]](l));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var zl=new Ms,Kd=new Ms,Zd=new Ms,Qd=new Ms;function eu(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([]),a=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&a<=24&&a%4===0&&e.userData.parameters.angle>=360){let l=s.length/2/a;s=s.filter((d,p)=>Math.floor(p/2)%l===0)}let c=0;for(let l=0;l<s.length;l+=2)c+=(s[l]-s[(l===0?s.length:l)-2])*(s[l+1]+s[(l===0?s.length:l)-1]);n.length=0;let u=0;if(c<0)for(let l=0;l<s.length;l+=2)n.push(s[l],s[l+1],0),o.push(u++);else for(let l=s.length-2;l>=0;l-=2)n.push(s[l],s[l+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,a=e.capStartIndex??r.length;s<a;)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]){zl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Kd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Zd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Qd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Kd.sub(zl).normalize(),Zd.sub(zl).normalize(),Qd.sub(zl).normalize();let c=Kd.cross(Zd).dot(Qd);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,d=0;l<n.length;l+=3,d++)n[l+2]===0&&(s.push(d),c++),n[l+2]===u&&a.push(d);if(e.userData.parameters.extrudeBevelSize===0){let l=a[0];a[0]=a[1],a[1]=l}s.reverse(),o.push(...s,...a),i.push(c,c)}return{indices:o,verticesPerFace:i}}var ar={};q0(ar,{calcBoolean:()=>qT,calcBooleanTopological:()=>WT,freeMeshSet:()=>XT,getMeshSet:()=>$T,transformMeshSet:()=>YT});var Hy,Wy=new Promise(n=>{Hy=n});var FU=Bn(async()=>{let r=!1?".":"https://unpkg.com/@splinetool/boolean-wasm@0.9.390/build",[e,t]=await Promise.all([import("./boolean.js"),fetch(`${r}/boolean.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});Hy(i)});import{Float32BufferAttribute as qy,Sphere as UT}from"three";var xe,gi;Wy.then(n=>xe=n);function HT(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:s}=Jd(n.getAttribute("position"),o),a;if(r&&e){let{indices:c,verticesPerFace:u}=eu(i,s,n);a=u.length,t=[];for(let l=0,d=0;l<a;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=s.length;t=Array(c+c/3),a=0;for(let u=0,l=0;l<t.length;)t[l++]=3,a++,t[l++]=s[u++],t[l++]=s[u++],t[l++]=s[u++]}return{positions:i,faceIndices:t,nFaces:a}}function $y(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=xe._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(xe.HEAPU32.buffer,i,r):new Float32Array(xe.HEAPF32.buffer,i,r)).set(n,0),i}function Yy(n){switch(n){case 0:return xe.OP.UNION;case 1:return xe.OP.INTERSECTION;case 2:return xe.OP.A_MINUS_B;case 3:return xe.OP.B_MINUS_A;case 4:return xe.OP.SYMMETRIC_DIFFERENCE;case 5:return xe.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function WT(n,r){gi===void 0&&(gi=xe.init_csg());let e=$y(n),t=xe.csg_calc_topological(gi,e,n.length,Yy(r));xe._free(e);let o=6,i=xe.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,c=xe.HEAPU32[i[a]>>2],u=new Float32Array(xe.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=xe.HEAPU32[i[a]>>2],d=new Uint32Array(xe.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let p=xe.HEAPU32[i[a]>>2],f=new Uint8Array(xe.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return xe.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function qT(n,r,e,t){gi===void 0&&(gi=xe.init_csg());let o=$y(n),i=xe.csg_calc(gi,o,n.length,t,Yy(r));xe._free(o);let s=5,a=xe.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),u=0,l=xe.HEAPU32[a[u]>>2],d=xe.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=xe.HEAPU32[a[u]>>2],f=xe.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new qy(d,3)),e.setAttribute("normal",new qy(f,3));let h=xe.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new UT),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},xe.free_mesh_data(i),m}function $T(n,r,e){if(xe===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=HT(n,r,e));let s=t.length,a=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=xe._malloc(l),m=new Float32Array(xe.HEAPF32.buffer,f,c),h=new Uint32Array(xe.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),xe.get_csg_mesh(f,s,f+d,a,i)}function YT(n,r){xe.transform_csg_mesh(n,r.elements)}function XT(n){xe.free_csg_mesh(n)}var KT={ConeGeometry:Mh,CubeGeometry:Eh,CylinderGeometry:Ih,DodecahedronGeometry:Lh,EllipseGeometry:di,HelixGeometry:dy,IcosahedronGeometry:uy,LatheGeometry:py,NonParametricGeometry:wy,PolygonGeometry:Bl,PyramidGeometry:_y,RectangleGeometry:Rl,SphereGeometry:Py,PlaneGeometry:Ty,BackdropGeometry:Oy,StarGeometry:Gl,TextFrameGeometry:Ay,TorusGeometry:Cy,TorusKnotGeometry:Ny,TriangleGeometry:Iy,PathGeometry:Dy,VectorGeometry:Mt},qd=n=>KT[n.type].create(n);function Es(n){return n!==null&&"booleanOp"in n}var xi=class extends ti(QT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ZT}updateVisible(){super.updateVisible(),this.visible=!Es(this.parent)&&this.visible,Es(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(ar.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Es(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof xi&&(e.freeBooleanPointer(),Es(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Es(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var jl=new JT;function Ls(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,a=1/0,c=-1/0,u=-1/0,l=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<a&&(a=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}jl.min.set(i,s,a),jl.max.set(c,u,l),jl.getCenter(t),jl.getSize(o).multiplyScalar(.5)}var rO=new eO,oO=new tO,pt=class extends xi{constructor(r,e){super(rO,oO),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?Ls(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 mA,Matrix4 as hA,Sphere as Mg,Vector3 as yA}from"three";import{BufferAttribute as uA,Float32BufferAttribute as Ig,MathUtils as Au,Vector3 as Cu}from"three";import{ShaderMaterial as ZO}from"three";import{CubeReflectionMapping as hO,CubeRefractionMapping as yO,CubeUVReflectionMapping as gO,LinearEncoding as rg,sRGBEncoding as xO}from"three";var Ds=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 nO}from"three";var it=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=nO.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 it&&(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 tu=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 tu;import{Vector2 as Xy}from"three";import{MathUtils as iO}from"three";var ae=class extends it{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=iO.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.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,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,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 ae{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,a){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,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}};var Ve=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Xy?e:new Xy(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,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as Ky}from"three";var ft=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ky?e:new Ky(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,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as sO}from"three";var Je=class extends sO{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],a=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Et=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Je?e:new Je(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var aO=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Zy=/[a-z_0-9]+/gi,k=class extends ae{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 a,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let l=[];for(;a=Zy.exec(this.src);)l.push(a);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&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=aO.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(Zy);if(a){let c=0;for(;c<a.length;){let u=a[c++],l;u==="in"||u==="out"||u==="inout"?l=a[c++]:(l=u,u="");let d=a[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var lO=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,ru=class extends ae{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||ru.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 a,c,u="",l=lO.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],u=l[3]):(a=this.src,c="f"),this.name=a,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)}},we=ru;we.PI="PI",we.PI2="PI2",we.RECIPROCAL_PI="RECIPROCAL_PI",we.RECIPROCAL_PI2="RECIPROCAL_PI2",we.LOG2="LOG2",we.EPSILON="EPSILON";var cO=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),dO=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),vi=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=cO.exec(e);if(t){let o=t[2],i;for(;i=dO.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var bi=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};Qe.addKeyword("uv",function(){return new bi});Qe.addKeyword("uv2",function(){return new bi(1)});import{LinearEncoding as uO,sRGBEncoding as pO}from"three";var Xo=class extends ae{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Xo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case uO:return["Linear"];case pO:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Xo.Nodes[this.method],a=e.include(s);if(a===Xo.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,t)}else return e.format(a+"( "+o+" )",i,t)}fromEncoding(e){let t=Xo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Xo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},_t=Xo;_t.Nodes={LinearToLinear:new k(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as Yd,BufferAttribute as Fy,Uint32BufferAttribute as Xd,Float32BufferAttribute as Kd,Matrix4 as FT,Vector3 as Is,Sphere as kT,Box3 as UT,BoxGeometry as HT}from"three";var zy,mi=new Promise(n=>{zy=n}),Vy=!1;var Gl;function jy(){if(Vy)return;if(Gl)return Gl;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.392/build",[t,o]=await Promise.all([import("./process.js"),fetch(`${e}/process.wasm`).then(a=>a.arrayBuffer())]),i=t.default,s=await i({wasmBinary:o});zy(s),Vy=!0}return Gl=n(),Gl}import{BufferGeometryLoader as VT}from"three";function $o(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=_e.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 VT().parse(n);else{if(n.type==="SubdivGeometry")return new We(n,e);if(n.type==="TextGeometry")return new pi(n,r)}let o;try{o=$d(t)}catch(i){console.error(i)}if(!o){let i=_e.createFromState(Un.defaultData(),100,100);t.shape=i,o=$d(t)}return o}import{Matrix4 as zT}from"three";var jT=new zT;function Ns(n,r,e,t){let o=n.position.array,i=n.normal.array,s=jT.makeScale(r,e,t).invert().elements,a,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,a=i[l],c=i[l+1],u=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*u,i[l+1]=s[1]*a+s[5]*c+s[9]*u,i[l+2]=s[2]*a+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var Vl=new UT,hi=new Is,de;mi.then(n=>{de=n});var ky=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Uy=new Uint32Array([0,1,2,3]),Hy=new Uint8Array([4]),We=class extends Yd{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=mo.div(t,o);this.subdividedGeometry&&Ns(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ns(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(hi.fromArray(i));let a=hi.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=a/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=We.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new HT(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&&(We.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new kT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Vl.setFromBufferAttribute(t),Vl.getCenter(o),e.boundingSphere.radius=o.distanceTo(Vl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Vl.getSize(hi);let i={width:hi.x,height:hi.y,depth:hi.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,a,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=We.allocate(e,i)}catch(l){console.error(l,e),s=We.allocate({positionWASM:ky,indexWASM:Uy,verticesPerFaceWASM:Hy},i)}if(de.set_destination_refinement_level(s,0),a=We.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=We.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=We.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:a,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:$o(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let a,c,u,l;({positions:a,triIndices:l}=eu(i.getAttribute("position"),s));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=tu(a,l,i,d),{positions:a,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,s,a=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=ky,i=Uy,s=Hy);let u=o.length,l=i.length,d=s.length,p=o.length+a.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),x=new Float32Array(de.HEAPF32.buffer,g,p),b=new Uint32Array(de.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(a,o.length),x.set(c,o.length+a.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(P=>P!==1)&&(w=new FT().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?de.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):de.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),S}static buildLevel(e,t,o,i,s){let a=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(a>>2,(a>>2)+c),l=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=de.HEAPU32[u[d]>>2],b=de.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new Yd;if(w.setIndex(new Xd(b,1)),w.setAttribute("position",new Kd(f,3)),w.setAttribute("normal",new Kd(h,3)),t){w.setAttribute("faceMap",new Xd(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new Fy(S,4))}return de.free_mesh_data(a),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(a)}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,a=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+2),u=0,l=de.HEAPU32[a[u]>>2],d=de.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=de.HEAPU32[a[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new Yd;m.setAttribute("position",new Kd(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 Fy(h,3)),m.setIndex(new Xd(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),a=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+a),u=c.subarray(3,3+3),l=0,d=de.HEAPU32[c[l]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=de.HEAPU32[c[l]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=de.HEAPU32[c[l]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var Wy=["getX","getY","getZ"];function eu(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],a=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[Wy[p]](l)*a)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[Wy[p]](l));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var zl=new Is,Zd=new Is,Qd=new Is,Jd=new Is;function tu(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([]),a=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&a<=24&&a%4===0&&e.userData.parameters.angle>=360){let l=s.length/2/a;s=s.filter((d,p)=>Math.floor(p/2)%l===0)}let c=0;for(let l=0;l<s.length;l+=2)c+=(s[l]-s[(l===0?s.length:l)-2])*(s[l+1]+s[(l===0?s.length:l)-1]);n.length=0;let u=0;if(c<0)for(let l=0;l<s.length;l+=2)n.push(s[l],s[l+1],0),o.push(u++);else for(let l=s.length-2;l>=0;l-=2)n.push(s[l],s[l+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,a=e.capStartIndex??r.length;s<a;)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]){zl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Zd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Qd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Jd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Zd.sub(zl).normalize(),Qd.sub(zl).normalize(),Jd.sub(zl).normalize();let c=Zd.cross(Qd).dot(Jd);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,d=0;l<n.length;l+=3,d++)n[l+2]===0&&(s.push(d),c++),n[l+2]===u&&a.push(d);if(e.userData.parameters.extrudeBevelSize===0){let l=a[0];a[0]=a[1],a[1]=l}s.reverse(),o.push(...s,...a),i.push(c,c)}return{indices:o,verticesPerFace:i}}var ar={};Y0(ar,{calcBoolean:()=>XT,calcBooleanTopological:()=>YT,freeMeshSet:()=>QT,getMeshSet:()=>KT,transformMeshSet:()=>ZT});var WT,qy=new Promise(n=>{WT=n});import{Float32BufferAttribute as $y,Sphere as qT}from"three";var xe,yi;qy.then(n=>xe=n);function $T(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:s}=eu(n.getAttribute("position"),o),a;if(r&&e){let{indices:c,verticesPerFace:u}=tu(i,s,n);a=u.length,t=[];for(let l=0,d=0;l<a;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=s.length;t=Array(c+c/3),a=0;for(let u=0,l=0;l<t.length;)t[l++]=3,a++,t[l++]=s[u++],t[l++]=s[u++],t[l++]=s[u++]}return{positions:i,faceIndices:t,nFaces:a}}function Yy(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=xe._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(xe.HEAPU32.buffer,i,r):new Float32Array(xe.HEAPF32.buffer,i,r)).set(n,0),i}function Xy(n){switch(n){case 0:return xe.OP.UNION;case 1:return xe.OP.INTERSECTION;case 2:return xe.OP.A_MINUS_B;case 3:return xe.OP.B_MINUS_A;case 4:return xe.OP.SYMMETRIC_DIFFERENCE;case 5:return xe.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function YT(n,r){yi===void 0&&(yi=xe.init_csg());let e=Yy(n),t=xe.csg_calc_topological(yi,e,n.length,Xy(r));xe._free(e);let o=6,i=xe.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,c=xe.HEAPU32[i[a]>>2],u=new Float32Array(xe.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=xe.HEAPU32[i[a]>>2],d=new Uint32Array(xe.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let p=xe.HEAPU32[i[a]>>2],f=new Uint8Array(xe.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return xe.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function XT(n,r,e,t){yi===void 0&&(yi=xe.init_csg());let o=Yy(n),i=xe.csg_calc(yi,o,n.length,t,Xy(r));xe._free(o);let s=5,a=xe.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),u=0,l=xe.HEAPU32[a[u]>>2],d=xe.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=xe.HEAPU32[a[u]>>2],f=xe.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new $y(d,3)),e.setAttribute("normal",new $y(f,3));let h=xe.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new qT),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},xe.free_mesh_data(i),m}function KT(n,r,e){if(xe===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=$T(n,r,e));let s=t.length,a=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=xe._malloc(l),m=new Float32Array(xe.HEAPF32.buffer,f,c),h=new Uint32Array(xe.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),xe.get_csg_mesh(f,s,f+d,a,i)}function ZT(n,r){xe.transform_csg_mesh(n,r.elements)}function QT(n){xe.free_csg_mesh(n)}var JT={ConeGeometry:Eh,CubeGeometry:Lh,CylinderGeometry:Mh,DodecahedronGeometry:Dh,EllipseGeometry:li,HelixGeometry:uy,IcosahedronGeometry:py,LatheGeometry:fy,NonParametricGeometry:_y,PolygonGeometry:Dl,PyramidGeometry:Py,RectangleGeometry:Bl,SphereGeometry:Ty,PlaneGeometry:Oy,BackdropGeometry:Ay,StarGeometry:Rl,TextFrameGeometry:Cy,TorusGeometry:Ny,TorusKnotGeometry:Iy,TriangleGeometry:My,PathGeometry:By,VectorGeometry:Mt},$d=n=>JT[n.type].create(n);function Ms(n){return n!==null&&"booleanOp"in n}var gi=class extends Jn(tO){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new eO}updateVisible(){super.updateVisible(),this.visible=!Ms(this.parent)&&this.visible,Ms(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(ar.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ms(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof gi&&(e.freeBooleanPointer(),Ms(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Ms(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var jl=new rO;function Es(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,a=1/0,c=-1/0,u=-1/0,l=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<a&&(a=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}jl.min.set(i,s,a),jl.max.set(c,u,l),jl.getCenter(t),jl.getSize(o).multiplyScalar(.5)}var iO=new oO,sO=new nO,pt=class extends gi{constructor(r,e){super(iO,sO),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?Es(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 gA,Matrix4 as xA,Sphere as Lg,Vector3 as vA}from"three";import{BufferAttribute as mA,Float32BufferAttribute as Eg,MathUtils as Cu,Vector3 as Nu}from"three";import{ShaderMaterial as eA}from"three";import{CubeReflectionMapping as xO,CubeRefractionMapping as vO,CubeUVReflectionMapping as bO,LinearEncoding as og,sRGBEncoding as SO}from"three";var Ls=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 aO}from"three";var it=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=aO.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 it&&(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 ru=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 ru;import{Vector2 as Ky}from"three";import{MathUtils as lO}from"three";var ae=class extends it{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=lO.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.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,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,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 ae{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,a){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,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}};var Ve=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ky?e:new Ky(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,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as Zy}from"three";var ft=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Zy?e:new Zy(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,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as cO}from"three";var Je=class extends cO{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],a=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Et=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Je?e:new Je(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var dO=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Qy=/[a-z_0-9]+/gi,k=class extends ae{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 a,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let l=[];for(;a=Qy.exec(this.src);)l.push(a);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&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=dO.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(Qy);if(a){let c=0;for(;c<a.length;){let u=a[c++],l;u==="in"||u==="out"||u==="inout"?l=a[c++]:(l=u,u="");let d=a[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var uO=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,ou=class extends ae{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||ou.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 a,c,u="",l=uO.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],u=l[3]):(a=this.src,c="f"),this.name=a,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)}},we=ou;we.PI="PI",we.PI2="PI2",we.RECIPROCAL_PI="RECIPROCAL_PI",we.RECIPROCAL_PI2="RECIPROCAL_PI2",we.LOG2="LOG2",we.EPSILON="EPSILON";var pO=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),fO=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),xi=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=pO.exec(e);if(t){let o=t[2],i;for(;i=fO.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var vi=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};Qe.addKeyword("uv",function(){return new vi});Qe.addKeyword("uv2",function(){return new vi(1)});import{LinearEncoding as mO,sRGBEncoding as hO}from"three";var Yo=class extends ae{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Yo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case mO:return["Linear"];case hO:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Yo.Nodes[this.method],a=e.include(s);if(a===Yo.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,t)}else return e.format(a+"( "+o+" )",i,t)}fromEncoding(e){let t=Yo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Yo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},_t=Yo;_t.Nodes={LinearToLinear:new k(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
5
  `)),sRGBToLinear:new k(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
6
6
  `)),LinearTosRGB:new k(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
7
- `))},_t.LINEAR_TO_LINEAR="LinearToLinear",_t.SRGB_TO_LINEAR="sRGBToLinear",_t.LINEAR_TO_SRGB="LinearTosRGB";var Pe=class extends k{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as fO}from"three";var Pt=class extends Ne{constructor(e=new fO,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new bi,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 a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+i+", "+s+" )":c=a+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new _t(new Pe("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,t)}};var Z=class extends Ne{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Bs=class extends ae{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let a=this.value,c=a.build(e,t)+"( ",u=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let d=a.inputs[l],p=this.inputs[l]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var ou=class extends ae{constructor(e,t,o=ou.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)}},st=ou;st.ADD="+",st.SUB="-",st.MUL="*",st.DIV="/";var Ie=class extends ae{constructor(e,t=Ie.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 Ie.MIX:case Ie.CLAMP:case Ie.REFRACT:case Ie.SMOOTHSTEP:case Ie.FACEFORWARD:return 3;case Ie.MIN:case Ie.MAX:case Ie.MOD:case Ie.STEP:case Ie.REFLECT:case Ie.DISTANCE:case Ie.DOT:case Ie.CROSS:case Ie.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 Ie.LENGTH:case Ie.DISTANCE:case Ie.DOT:return"f";case Ie.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ie.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case Ie.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case Ie.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ie.STEP:o=this.a.build(e,a===1?"f":l),i=this.b.build(e,l);break;case Ie.MIN:case Ie.MAX:case Ie.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case Ie.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case Ie.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,u===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},pe=Ie;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var Si=class extends ae{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new Bs(Si.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new _t(new Pe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new _t(new Pe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new _t(new Pe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new _t(new Pe("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Pe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Pe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Pe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Pe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Pe("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 Bs(Si.Nodes.roughnessToMip,[i]),a=new pe(s,Si.Nodes.m0,Si.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(a,pe.FLOOR),u=new pe(a,pe.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new st(c,new Z(1).setReadonly(!0),st.ADD)),p=new pe(l,d,u,pe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},wi=Si;wi.Nodes=function(){let e=new vi(`struct TextureCubeUVData {
7
+ `))},_t.LINEAR_TO_LINEAR="LinearToLinear",_t.SRGB_TO_LINEAR="sRGBToLinear",_t.LINEAR_TO_SRGB="LinearTosRGB";var Pe=class extends k{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as yO}from"three";var Pt=class extends Ne{constructor(e=new yO,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new vi,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 a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+i+", "+s+" )":c=a+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new _t(new Pe("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,t)}};var Z=class extends Ne{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Ds=class extends ae{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let a=this.value,c=a.build(e,t)+"( ",u=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let d=a.inputs[l],p=this.inputs[l]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var nu=class extends ae{constructor(e,t,o=nu.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},st=nu;st.ADD="+",st.SUB="-",st.MUL="*",st.DIV="/";var Ie=class extends ae{constructor(e,t=Ie.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 Ie.MIX:case Ie.CLAMP:case Ie.REFRACT:case Ie.SMOOTHSTEP:case Ie.FACEFORWARD:return 3;case Ie.MIN:case Ie.MAX:case Ie.MOD:case Ie.STEP:case Ie.REFLECT:case Ie.DISTANCE:case Ie.DOT:case Ie.CROSS:case Ie.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 Ie.LENGTH:case Ie.DISTANCE:case Ie.DOT:return"f";case Ie.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Ie.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case Ie.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case Ie.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ie.STEP:o=this.a.build(e,a===1?"f":l),i=this.b.build(e,l);break;case Ie.MIN:case Ie.MAX:case Ie.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case Ie.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case Ie.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,u===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},pe=Ie;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var bi=class extends ae{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new Ds(bi.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new _t(new Pe("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new _t(new Pe("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new _t(new Pe("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new _t(new Pe("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Pe(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Pe(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Pe(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Pe(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Pe("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 Ds(bi.Nodes.roughnessToMip,[i]),a=new pe(s,bi.Nodes.m0,bi.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(a,pe.FLOOR),u=new pe(a,pe.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new st(c,new Z(1).setReadonly(!0),st.ADD)),p=new pe(l,d,u,pe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},Si=bi;Si.Nodes=function(){let e=new xi(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
@@ -83,7 +83,7 @@ var F0=Object.create;var xc=Object.defineProperty;var k0=Object.getOwnPropertyDe
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,N);return{bilinearCubeUV:u,roughnessToMip:T,m0:p,cubeUV_maxMipLevel:t}}();var Ko=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Ko.VIEW}getShared(){return this.scope===Ko.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 a;switch(this.scope){case Ko.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case Ko.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case Ko.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),t)}},at=Ko;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";Qe.addKeyword("viewNormal",function(){return new at(at.VIEW)});Qe.addKeyword("localNormal",function(){return new at(at.NORMAL)});Qe.addKeyword("worldNormal",function(){return new at(at.WORLD)});var Nr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Nr.LOCAL}getType(){switch(this.scope){case Nr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Nr.LOCAL:case Nr.WORLD:return!1}return!0}generate(e,t,o,i,s){let a;switch(this.scope){case Nr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case Nr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case Nr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Nr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},Lt=Nr;Lt.LOCAL="local",Lt.WORLD="world",Lt.VIEW="view",Lt.PROJECTION="projection";Qe.addKeyword("position",function(){return new Lt});Qe.addKeyword("worldPosition",function(){return new Lt(Lt.WORLD)});Qe.addKeyword("viewPosition",function(){return new Lt(Lt.VIEW)});var lr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??lr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case lr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case lr.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,c=s.build(e,"v3"),u=new Lt(Lt.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;l&&(d=`normalize( mix( ${d}, ${c}, ${l} * ${l} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case lr.CUBE:{let s=new lr(lr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case lr.SPHERE:{let a="normalize( ( viewMatrix * vec4( "+new lr(lr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;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)}},Ir=lr;Ir.CUBE="cube",Ir.SPHERE="sphere",Ir.VECTOR="vector";var Fl=class extends ae{constructor(e=new Pt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new wi(this.value,t??new Ir(Ir.VECTOR),o),this.irradianceNode=new wi(this.value,new at(at.WORLD),new Z(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 mO}from"three";var kl=class extends Ne{constructor(e=new mO,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Ir,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 a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new _t(new Pe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,u),e.removeContext(),e.format(a,u,t)}};var Qy=`
86
+ }`,N);return{bilinearCubeUV:u,roughnessToMip:T,m0:p,cubeUV_maxMipLevel:t}}();var Xo=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Xo.VIEW}getShared(){return this.scope===Xo.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 a;switch(this.scope){case Xo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case Xo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case Xo.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),t)}},at=Xo;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";Qe.addKeyword("viewNormal",function(){return new at(at.VIEW)});Qe.addKeyword("localNormal",function(){return new at(at.NORMAL)});Qe.addKeyword("worldNormal",function(){return new at(at.WORLD)});var Nr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Nr.LOCAL}getType(){switch(this.scope){case Nr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Nr.LOCAL:case Nr.WORLD:return!1}return!0}generate(e,t,o,i,s){let a;switch(this.scope){case Nr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case Nr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case Nr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Nr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},Lt=Nr;Lt.LOCAL="local",Lt.WORLD="world",Lt.VIEW="view",Lt.PROJECTION="projection";Qe.addKeyword("position",function(){return new Lt});Qe.addKeyword("worldPosition",function(){return new Lt(Lt.WORLD)});Qe.addKeyword("viewPosition",function(){return new Lt(Lt.VIEW)});var lr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??lr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case lr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case lr.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,c=s.build(e,"v3"),u=new Lt(Lt.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;l&&(d=`normalize( mix( ${d}, ${c}, ${l} * ${l} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case lr.CUBE:{let s=new lr(lr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case lr.SPHERE:{let a="normalize( ( viewMatrix * vec4( "+new lr(lr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;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)}},Ir=lr;Ir.CUBE="cube",Ir.SPHERE="sphere",Ir.VECTOR="vector";var Fl=class extends ae{constructor(e=new Pt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Si(this.value,t??new Ir(Ir.VECTOR),o),this.irradianceNode=new Si(this.value,new at(at.WORLD),new Z(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 gO}from"three";var kl=class extends Ne{constructor(e=new gO,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Ir,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 a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new _t(new Pe("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,u),e.removeContext(),e.format(a,u,t)}};var Jy=`
87
87
  uniform int frameIndex;
88
88
  uniform vec2 resolution;
89
89
  uniform mat4 previousModelViewMatrix;
@@ -91,7 +91,7 @@ uniform mat4 previousProjectionMatrix;
91
91
 
92
92
  varying vec4 vCurrentPosition;
93
93
  varying vec4 vPreviousPosition;
94
- `,Jy=`
94
+ `,eg=`
95
95
  layout(location = 1) out vec4 gVelocity;
96
96
 
97
97
  uniform int frameIndex;
@@ -133,7 +133,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
133
133
  return fract(magic.z * fract(dot(screenPos, magic.xy)));
134
134
  }
135
135
 
136
- `,eg=`
136
+ `,tg=`
137
137
  // TODO: This could be generated CPU side and passed to the shader every frame
138
138
  const vec2 haltonSequence[16] = vec2[16](
139
139
  vec2( 0.000000,-0.333334),
@@ -170,7 +170,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
170
170
  #endif
171
171
  gl_Position = currentPositionJittered;
172
172
 
173
- `,tg=`
173
+ `,rg=`
174
174
  vec2 oldPos = vPreviousPosition.xy;
175
175
  oldPos /= vPreviousPosition.w;
176
176
  oldPos.xy = (oldPos.xy+1.)/2.0;
@@ -184,7 +184,7 @@ vec2 velocity = (newPos - oldPos);
184
184
  // NOTE: We use the blue channel to avoid temporal reprojection
185
185
  // with incorrect velocity if the fragment is transparent.
186
186
  gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
187
- `;var og=["x","y","z","w"],vO=["float","vec2","vec3","vec4"],bO={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},SO={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[]"},Ul=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
187
+ `;var ng=["x","y","z","w"],wO=["float","vec2","vec3","vec4"],_O={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},PO={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[]"},Ul=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
188
188
  `);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",`
189
189
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
190
190
  #define SPE_BLENDING_NORMAL 0
@@ -222,20 +222,20 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
222
222
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
223
223
  accumAlpha += (1.0 - accumAlpha) * alpha;
224
224
  }`,""].join(`
225
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(Qy),this.addFragmentParsCode(Jy),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(eg),this.addFragmentFinalCode(tg)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
225
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(Jy),this.addFragmentParsCode(eg),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(tg),this.addFragmentFinalCode(rg)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
226
226
  `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
227
227
  `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
228
228
  `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
229
229
  `}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 a=this.getVars(o),c=a[r];if(!c){let u=a.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},a.push(c),a[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(`
230
230
  `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],a=s.type,c=s.name,u=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?t+=e+" "+l.substring(0,l.length-2)+" "+c+`[${u}];
231
231
  `:t+=e+" "+l+" "+c+`;
232
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof it?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,c=a.list.length,u=new Ds({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[r][u.name]=u,this.uniforms[u.name]=u,u}else{let a=this.inputs.uniforms,c=a.list.length,u=new Ds({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[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 k?o=this.includes.functions:r instanceof we?o=this.includes.consts:r instanceof vi&&(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 k&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<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 vO[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 hO:case yO:return new kl(t);case gO:return new Fl(new Pt(t));default:return new Pt(t)}else{if(t.isVector2)return new Ve(t);if(t.isVector3)return new ft(t);if(t.isVector4)return new Et(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 bO[r]||r}getFormatByType(r){return SO[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return og[r]}getIndexByElement(r){return og.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=rg,e===rg&&this.context.gamma&&(e=xO),e}};import{Vector2 as pr,Vector3 as Lr,Vector4 as zi}from"three";var Ae=class extends Ne{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Je?e:new Je(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return u?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var ve=class extends Ne{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,a){return e.format(this.value.toString(),i,t)}};import{UniformsLib as OO,UniformsUtils as AO}from"three";var ke=class extends Ne{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var cr=class extends Ne{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};import{Vector3 as wO}from"three";var Ao=class extends Ne{};var Hl=class extends Ao{constructor(e){super("v3");this.image=e;this._value=new wO}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 Zo=class extends Ao{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as _O}from"three";var _i=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new _O}generateReadonly(e,t,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as PO}from"three";var mt=class extends Ne{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new PO}generateReadonly(e,t,o,i,s,a){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as TO}from"three";function ng(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Wl=class extends _i{constructor(e,t){super(new TO);this.repeat=e;this.offset=t;ng(this.value,e,t)}updateMatrix(){ng(this.value,this.repeat,this.offset)}};import{Vector4 as ig}from"three";var dr=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof ig?new Array(e).fill(t):new Array(e).fill(new ig(0))}};var Pi=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var nu=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(nu.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Qo=nu;Qo.Nodes=function(){return{customColor:new k(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
232
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof it?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,c=a.list.length,u=new Ls({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[r][u.name]=u,this.uniforms[u.name]=u,u}else{let a=this.inputs.uniforms,c=a.list.length,u=new Ls({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[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 k?o=this.includes.functions:r instanceof we?o=this.includes.consts:r instanceof xi&&(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 k&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<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 wO[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 xO:case vO:return new kl(t);case bO:return new Fl(new Pt(t));default:return new Pt(t)}else{if(t.isVector2)return new Ve(t);if(t.isVector3)return new ft(t);if(t.isVector4)return new Et(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 _O[r]||r}getFormatByType(r){return PO[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return ng[r]}getIndexByElement(r){return ng.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=og,e===og&&this.context.gamma&&(e=SO),e}};import{Vector2 as pr,Vector3 as Lr,Vector4 as Vi}from"three";var Ae=class extends Ne{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Je?e:new Je(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return u?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var ve=class extends Ne{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,a){return e.format(this.value.toString(),i,t)}};import{UniformsLib as NO,UniformsUtils as IO}from"three";var ke=class extends Ne{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var cr=class extends Ne{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};import{Vector3 as TO}from"three";var Oo=class extends Ne{};var Hl=class extends Oo{constructor(e){super("v3");this.image=e;this._value=new TO}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 Ko=class extends Oo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as OO}from"three";var wi=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new OO}generateReadonly(e,t,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as AO}from"three";var mt=class extends Ne{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new AO}generateReadonly(e,t,o,i,s,a){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as CO}from"three";function ig(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Wl=class extends wi{constructor(e,t){super(new CO);this.repeat=e;this.offset=t;ig(this.value,e,t)}updateMatrix(){ig(this.value,this.repeat,this.offset)}};import{Vector4 as sg}from"three";var dr=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof sg?new Array(e).fill(t):new Array(e).fill(new sg(0))}};var _i=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var iu=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(iu.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Zo=iu;Zo.Nodes=function(){return{customColor:new k(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
233
233
  float lalpha = alpha * mask;
234
234
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
235
235
  accumAlpha += (1.0 - accumAlpha) * lalpha;
236
236
 
237
237
  return color;
238
- }`)}}();var iu=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(iu.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ti=iu;Ti.Nodes=function(){return{customNormal:new k(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
238
+ }`)}}();var su=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(su.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Pi=su;Pi.Nodes=function(){return{customNormal:new k(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
239
239
  vec3 normal = packNormalToRGB( norm ).rgb;
240
240
  normal *= step( vec3(0.5), cnormal );
241
241
 
@@ -244,7 +244,7 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
244
244
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
245
245
 
246
246
  return normal;
247
- }`)}}();var Oi=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.blending=u,this.mat=l,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Oi.Nodes.cylindrical);break;case 2:i=e.include(Oi.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=["zy","xz","xy"][this.axis.value],u=new k(`
247
+ }`)}}();var Ti=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.blending=u,this.mat=l,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Ti.Nodes.cylindrical);break;case 2:i=e.include(Ti.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=["zy","xz","xy"][this.axis.value],u=new k(`
248
248
  vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
249
249
  vec2 projected = (1. + (position.${c})) / 2.;
250
250
  vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -268,7 +268,7 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
268
268
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
269
269
 
270
270
  return col;
271
- }`);i=e.include(u);break;case 4:i=e.include(Oi.Nodes.triplanar);break;default:i=e.include(Oi.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let s=[];if(s.push("normal"),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.blending.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.projection.value===4){let a=`${o}_writeUvs`,c=a+"0",u=a+"1",l=a+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec3"),s.push(c),s.push(u),s.push(l),s.push(d)}else{let a=`${o}_writeUvs`;e.addFragmentVariable(a,"vec2"),s.push(a)}return e.format(i+"("+s.join(",")+")",this.getType(e),t)}},Co=Oi;Co.Nodes=function(){let e=new k(`
271
+ }`);i=e.include(u);break;case 4:i=e.include(Ti.Nodes.triplanar);break;default:i=e.include(Ti.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let s=[];if(s.push("normal"),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.blending.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.projection.value===4){let a=`${o}_writeUvs`,c=a+"0",u=a+"1",l=a+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec3"),s.push(c),s.push(u),s.push(l),s.push(d)}else{let a=`${o}_writeUvs`;e.addFragmentVariable(a,"vec2"),s.push(a)}return e.format(i+"("+s.join(",")+")",this.getType(e),t)}},Ao=Ti;Ao.Nodes=function(){let e=new k(`
272
272
  vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
273
273
  vec3 posN = normalize(position);
274
274
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -423,7 +423,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
423
423
 
424
424
  return col;//n * 0.5 + 0.5;
425
425
  }
426
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var Ai=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=u,this.colors=l,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new k(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
426
+ `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var Oi=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=u,this.colors=l,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new k(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
427
427
  vec4 color = colors[0];
428
428
  #ifdef ${o}_IS_VECTOR
429
429
  #ifdef ${o}_LINEAR
@@ -463,7 +463,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
463
463
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
464
464
 
465
465
  return color.rgb;
466
- }`,[Ai.Nodes.vectorLinearWorldSpaceDepth,Ai.Nodes.vectorLinearObjectSpaceDepth,Ai.Nodes.vectorSphericalObjectSpaceDepth,Ai.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),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.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)}},Ci=Ai;Ci.Nodes=function(){let e=new k(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
466
+ }`,[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),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.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)}},Ai=Oi;Ai.Nodes=function(){let e=new k(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
467
467
  vec3 n = normalize(direction);
468
468
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
469
469
  return ( dist - near ) / ( far - near );
@@ -477,7 +477,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
477
477
  }`),i=new k(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
478
478
  float dist = length(position - origin);
479
479
  return ( dist - near ) / ( far - near );
480
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Rs=class extends ae{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=u,this.alpha=a,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new k(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
480
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Bs=class extends ae{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=u,this.alpha=a,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new k(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
481
481
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
482
482
 
483
483
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -485,7 +485,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
485
485
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
486
486
 
487
487
  return color;
488
- }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var su=class extends ae{constructor(e,t,o,i,s,a,c,u,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=c,this.isMask=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(su.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ni=su;Ni.Nodes=function(){return{gradient:new k(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
488
+ }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var au=class extends ae{constructor(e,t,o,i,s,a,c,u,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=c,this.isMask=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(au.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ci=au;Ci.Nodes=function(){return{gradient:new k(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
489
489
  vec4 color = colors[0];
490
490
  vec2 m = morph / vUv.xy;
491
491
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -527,7 +527,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
527
527
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
528
528
 
529
529
  return color.xyz;
530
- }`)}}();var au=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(au.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ii=au;Ii.Nodes=function(){return{matcap:new k(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
530
+ }`)}}();var lu=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(lu.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ni=lu;Ni.Nodes=function(){return{matcap:new k(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
531
531
  vec3 viewDir = normalize( vViewPosition );
532
532
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
533
533
  vec3 y = cross( viewDir, x );
@@ -539,7 +539,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
539
539
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
540
540
 
541
541
  return matcapColor.rgb;
542
- }`)}}();var Gs=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(Gs||{}),lt=function(){let r=new k(`vec3 random3(vec3 c) {
542
+ }`)}}();var Rs=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(Rs||{}),lt=function(){let r=new k(`vec3 random3(vec3 c) {
543
543
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
544
544
  vec3 r;
545
545
  r.z = fract(512.0*j);
@@ -892,7 +892,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
892
892
  return hashwithoutsine13(vec3(p + mb) + seed);
893
893
  }
894
894
  }
895
- `,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:l,perlin:p,voronoi:b}}();var Mi=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=c,this.colorB=u,this.colorC=l,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,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 a=Object.values(Gs)[this.noiseType.value],c=a=="voronoi"?`
895
+ `,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:l,perlin:p,voronoi:b}}();var Ii=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=c,this.colorB=u,this.colorC=l,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,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 a=Object.values(Rs)[this.noiseType.value],c=a=="voronoi"?`
896
896
  float v = ${a}(st + move, voronoiStyle, smoothness, seed, quality);
897
897
 
898
898
  // Apply clipping to colors
@@ -929,7 +929,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
929
929
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
930
930
 
931
931
  return clamp(color, 0.0, 1.0).rgb;
932
- }`,[lt.simplex,lt.simplexFractal,lt.simplexAshima,lt.fbm,lt.perlin,lt.voronoi]),l=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}};Mi.numOctaves=5;var lu=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=l,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),s=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(s,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
932
+ }`,[lt.simplex,lt.simplexFractal,lt.simplexAshima,lt.fbm,lt.perlin,lt.voronoi]),l=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}};Ii.numOctaves=5;var cu=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=l,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),s=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(s,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
933
933
  vID = randomColor.r;
934
934
  vec2 ${o}_offset = vec2(0.0);
935
935
  if (${a}) {
@@ -944,7 +944,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
944
944
  // if this offset is the biggest of all the potential offsets
945
945
  gl_Position = ${o}_clipPosition;
946
946
  }
947
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(lu.Nodes.outline),s=[];return s.push(this.outlineColor.build(e,"c")),s.push(this.contourColor.build(e,"c")),s.push(this.outlineWidth.build(e,"f")),s.push(this.contourWidth.build(e,"f")),s.push(this.contourThreshold.build(e,"f")),s.push(this.outlineThreshold.build(e,"f")),s.push(this.contourFrequency.build(e,"f")),s.push(this.outlineSmoothing.build(e,"f")),s.push(this.contourDirection.build(e,"v3")),s.push(this.positionalLines.build(e,"b")),s.push(this.resolution.build(e,"v2")),s.push(this.normalMap.getTexture(e,"t")),s.push(this.depthMap.getTexture(e,"t")),s.push(this.pixelRatio.build(e,"f")),s.push(this.compensation.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Ei=lu;Ei.Nodes=function(){let e=new k(`
947
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(cu.Nodes.outline),s=[];return s.push(this.outlineColor.build(e,"c")),s.push(this.contourColor.build(e,"c")),s.push(this.outlineWidth.build(e,"f")),s.push(this.contourWidth.build(e,"f")),s.push(this.contourThreshold.build(e,"f")),s.push(this.outlineThreshold.build(e,"f")),s.push(this.contourFrequency.build(e,"f")),s.push(this.outlineSmoothing.build(e,"f")),s.push(this.contourDirection.build(e,"v3")),s.push(this.positionalLines.build(e,"b")),s.push(this.resolution.build(e,"v2")),s.push(this.normalMap.getTexture(e,"t")),s.push(this.depthMap.getTexture(e,"t")),s.push(this.pixelRatio.build(e,"f")),s.push(this.compensation.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Mi=cu;Mi.Nodes=function(){let e=new k(`
948
948
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
949
949
  {
950
950
  vec2 halton = haltonSequence[frameIndex];
@@ -1179,7 +1179,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1179
1179
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1180
1180
 
1181
1181
  return clamp(color, 0.0, 1.0).rgb;
1182
- }`,[a,s,Mr.DrawFunctions.circle,Mr.DrawFunctions.ring,Mr.DrawFunctions.polygon,Mr.DrawFunctions.cross,Mr.DrawFunctions.diamond,Mr.DrawFunctions.checkerboard,Mr.DrawFunctions.line,Mr.DrawFunctions.wave]),l=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},Li=Mr;Li.DrawFunctions=function(){let e=new k(`float hashwithoutsine12(vec2 p) {
1182
+ }`,[a,s,Mr.DrawFunctions.circle,Mr.DrawFunctions.ring,Mr.DrawFunctions.polygon,Mr.DrawFunctions.cross,Mr.DrawFunctions.diamond,Mr.DrawFunctions.checkerboard,Mr.DrawFunctions.line,Mr.DrawFunctions.wave]),l=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},Ei=Mr;Ei.DrawFunctions=function(){let e=new k(`float hashwithoutsine12(vec2 p) {
1183
1183
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1184
1184
  p3 += dot(p3, p3.yzx + 33.33);
1185
1185
  return fract((p3.x + p3.y) * p3.z);
@@ -1344,7 +1344,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1344
1344
  float s = mix(size, size * rand, variation);
1345
1345
 
1346
1346
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1347
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:a,diamond:c,checkerboard:u,line:l,wave:d}}();var cu=class extends ae{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(cu.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Di=cu;Di.Nodes=function(){let e=new k(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1347
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:a,diamond:c,checkerboard:u,line:l,wave:d}}();var du=class extends ae{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(du.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Li=du;Li.Nodes=function(){let e=new k(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1348
1348
  vec3 st = position / noiseScale;
1349
1349
  vec3 q = vec3(simplex3d(st),
1350
1350
  simplex3d(st + vec3(1.0)),
@@ -1367,7 +1367,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1367
1367
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1368
1368
 
1369
1369
  return res;
1370
- }`,[e])}}();var du=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=u,this.offset=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(du.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Bi=du;Bi.Nodes=function(){let e=new k(`float rand(float n) {
1370
+ }`,[e])}}();var uu=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=u,this.offset=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(uu.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Di=uu;Di.Nodes=function(){let e=new k(`float rand(float n) {
1371
1371
  return fract(sin(n) * 43758.5453123);
1372
1372
  }`),t=new k(`float hash1(float p) {
1373
1373
  p = fract(p * 0.011);
@@ -1603,7 +1603,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1603
1603
 
1604
1604
  return color.xyz;
1605
1605
 
1606
- }`,[lt.simplex,e,o,s])}}();import{Vector2 as ag}from"three";var sg=function(){return{textureBicubic:new k(`float w0( float a ) {
1606
+ }`,[lt.simplex,e,o,s])}}();import{Vector2 as lg}from"three";var ag=function(){return{textureBicubic:new k(`float w0( float a ) {
1607
1607
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1608
1608
  }
1609
1609
 
@@ -1667,7 +1667,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1667
1667
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1668
1668
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1669
1669
  return mix( fSample, cSample, fract( lod ) );
1670
- }`)}}();function lg(n,r){return n>=r?new ag(r/n,1):new ag(1,n/r)}var uu=class extends ae{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,ye.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(uu.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ri=uu;Ri.Nodes=function(){let e=new k(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1670
+ }`)}}();function cg(n,r){return n>=r?new lg(r/n,1):new lg(1,n/r)}var pu=class extends ae{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,ye.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(pu.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Bi=pu;Bi.Nodes=function(){let e=new k(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1671
1671
  // Slightly modified version of this:
1672
1672
  // https://www.shadertoy.com/view/ltScRG
1673
1673
 
@@ -1727,7 +1727,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1727
1727
  float lod = applyIorToRoughness(roughness, ior);
1728
1728
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1729
1729
  #endif
1730
- }`,[sg.textureBicubic,o,e]),s=new k(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1730
+ }`,[ag.textureBicubic,o,e]),s=new k(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1731
1731
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1732
1732
  vec3 refractedRayExit = position + transmissionRay;
1733
1733
 
@@ -1758,7 +1758,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1758
1758
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1759
1759
 
1760
1760
  return transmission;
1761
- }`,[s])}}();var pu=(e=>(e.NOISE="noise",e.MAP="map",e))(pu||{}),fu=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p){super("v3");this.displacementTypeIndex=new ve(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(pu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new _i(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=a,this.highCut=c,this.lowCut=u,this.quality=l}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(pu)[this.displacementTypeIndex.value]){case"map":{o=e.include(fu.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(Gs)[this.noiseFunctionIndex.value],c=new k(`vec3 orthogonal(vec3 v) {
1761
+ }`,[s])}}();var fu=(e=>(e.NOISE="noise",e.MAP="map",e))(fu||{}),mu=class extends ae{constructor(e,t,o,i,s,a,c,u,l,d,p){super("v3");this.displacementTypeIndex=new ve(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(fu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new wi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=a,this.highCut=c,this.lowCut=u,this.quality=l}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(fu)[this.displacementTypeIndex.value]){case"map":{o=e.include(mu.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 a=Object.values(Rs)[this.noiseFunctionIndex.value],c=new k(`vec3 orthogonal(vec3 v) {
1762
1762
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1763
1763
  }`),u=a=="voronoi"?`
1764
1764
  float v = ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
@@ -1787,7 +1787,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1787
1787
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1788
1788
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1789
1789
  return displaced_position;
1790
- }`,[l,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Gi=fu;Gi.Nodes=function(){let e=new k(`vec3 orthogonal(vec3 v) {
1790
+ }`,[l,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ri=mu;Ri.Nodes=function(){let e=new k(`vec3 orthogonal(vec3 v) {
1791
1791
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1792
1792
  }`),t=new k(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1793
1793
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
@@ -1809,7 +1809,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1809
1809
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1810
1810
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1811
1811
  return displaced_position;
1812
- }`,[e,t])}}();var ye={normalRenderTarget:new Pt,normalRenderTargetDepth:new Pt,transmissionRenderTarget:new Pt,aspectRatio:new Ve,transmissionSize:new Ve(2048,2048),transmissionRenderTargetDepth:new Pt,aoRenderTarget:new Pt,aoEnabled:new ke,pixelRatioNode:new Z(1),resolution:new Ve,penumbraSize:new cr(5,.5),frameIndex:new ve(0),transmissionLod:new ve(2)};for(let n of Object.values(ye))n.isRenderGlobal=!0;var en=class extends it{constructor(){super("basic");this.nodeType="Basic";this.color=new Ae(Ke),this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(AO.merge([OO.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1812
+ }`,[e,t])}}();var ye={normalRenderTarget:new Pt,normalRenderTargetDepth:new Pt,transmissionRenderTarget:new Pt,aspectRatio:new Ve,transmissionSize:new Ve(2048,2048),transmissionRenderTargetDepth:new Pt,aoRenderTarget:new Pt,aoEnabled:new ke,pixelRatioNode:new Z(1),resolution:new Ve,penumbraSize:new cr(5,.5),frameIndex:new ve(0),transmissionLod:new ve(2)};for(let n of Object.values(ye))n.isRenderGlobal=!0;var Jo=class extends it{constructor(){super("basic");this.nodeType="Basic";this.color=new Ae(Ke),this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(IO.merge([NO.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1813
1813
  `));let i=["#include <beginnormal_vertex>",`
1814
1814
  #if !defined( USE_LAYER_DISPLACE )
1815
1815
  #include <defaultnormal_vertex>
@@ -1829,7 +1829,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1829
1829
  `];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(`
1830
1830
  `)}else{this.color===void 0&&(this.color=new Ae(Ke)),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(`
1831
1831
  `));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${c} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),t=a.join(`
1832
- `)}return t}};import{UniformsLib as cg,UniformsUtils as CO}from"three";var Vs=class extends it{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ae(Ke),this.emissive=new Ae(0),this.emissiveIntensity=new Z(1),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.occlusion=new ke(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(CO.merge([cg.fog,cg.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(`
1832
+ `)}return t}};import{UniformsLib as dg,UniformsUtils as MO}from"three";var Gs=class extends it{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ae(Ke),this.emissive=new Ae(0),this.emissiveIntensity=new Z(1),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.occlusion=new ke(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(MO.merge([dg.fog,dg.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(`
1833
1833
  `));let i=["#include <beginnormal_vertex>",`
1834
1834
  #ifndef USE_LAYER_DISPLACE
1835
1835
  #include <defaultnormal_vertex>
@@ -1938,7 +1938,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1938
1938
  outgoingLight *= ao;
1939
1939
  }
1940
1940
  `),l&&p.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
1941
- `)}return t}};import{UniformsLib as dg,UniformsUtils as NO}from"three";var to=function(){let n=new k(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1941
+ `)}return t}};import{UniformsLib as ug,UniformsUtils as EO}from"three";var eo=function(){let n=new k(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1942
1942
 
1943
1943
  vec2 dSTdx = dFdx( bumpMapUv );
1944
1944
  vec2 dSTdy = dFdy( bumpMapUv );
@@ -1963,7 +1963,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1963
1963
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
1964
1964
  return normalize( abs( fDet ) * surf_norm - vGrad );
1965
1965
 
1966
- }`);return{dHdxy:n,perturbNormalArb:r}}();var zs=class extends it{constructor(){super("phong");this.nodeType="Phong";this.color=new Ae(Ke),this.specular=new Ae(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.occlusion=new ke(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(NO.merge([dg.fog,dg.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1966
+ }`);return{dHdxy:n,perturbNormalArb:r}}();var Vs=class extends it{constructor(){super("phong");this.nodeType="Phong";this.color=new Ae(Ke),this.specular=new Ae(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.occlusion=new ke(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(EO.merge([ug.fog,ug.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1967
1967
  `));let i=["#include <beginnormal_vertex>",`
1968
1968
  #include <skinbase_vertex>
1969
1969
  #include <skinnormal_vertex>
@@ -1993,7 +1993,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1993
1993
  if (dot(normal, faceNormal) < 0.0) {
1994
1994
  normal *= -1.0;
1995
1995
  }
1996
- `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(to.dHdxy),e.include(to.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),h=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
1996
+ `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(eo.dHdxy),e.include(eo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),h=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
1997
1997
  vec3 bumpNormal = vec3(0.0);
1998
1998
  {
1999
1999
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2031,7 +2031,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2031
2031
  outgoingLight *= ao;
2032
2032
  }
2033
2033
  `),l&&p.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
2034
- `)}return t}};import{UniformsLib as mu,UniformsUtils as IO}from"three";var js=class extends it{constructor(){super("standard");this.nodeType="Standard";this.color=new Ae(Ke),this.roughness=new Z(.3),this.metalness=new Z(0),this.reflectivity=new Z(.5),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.occlusion=new ke(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(IO.merge([mu.fog,mu.lights])),mu.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(`
2034
+ `)}return t}};import{UniformsLib as hu,UniformsUtils as LO}from"three";var zs=class extends it{constructor(){super("standard");this.nodeType="Standard";this.color=new Ae(Ke),this.roughness=new Z(.3),this.metalness=new Z(0),this.reflectivity=new Z(.5),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0),this.occlusion=new ke(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(LO.merge([hu.fog,hu.lights])),hu.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(`
2035
2035
  `));let i=["#include <beginnormal_vertex>",`
2036
2036
  #if !defined( USE_LAYER_DISPLACE )
2037
2037
  #include <defaultnormal_vertex>
@@ -2058,7 +2058,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2058
2058
  if (dot(normal, faceNormal) < 0.0) {
2059
2059
  normal *= -1.0;
2060
2060
  }
2061
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(to.dHdxy),e.include(to.perturbNormalArb);let y=this.bumpMap.texture.flow(e,"t"),g=this.bumpMap.flow(e,"v3"),x=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",b="";this.bumpMap.projection.value===4?b=`
2061
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(eo.dHdxy),e.include(eo.perturbNormalArb);let y=this.bumpMap.texture.flow(e,"t"),g=this.bumpMap.flow(e,"v3"),x=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",b="";this.bumpMap.projection.value===4?b=`
2062
2062
  vec3 bumpNormal = vec3(0.0);
2063
2063
  {
2064
2064
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2122,7 +2122,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2122
2122
  outgoingLight *= ao;
2123
2123
  }
2124
2124
  `),d&&m.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
2125
- `)}return t}};import{UniformsLib as ug,UniformsUtils as MO}from"three";var Fs=class extends it{constructor(){super("toon");this.nodeType="Toon";this.color=new Ae(Ke),this.specular=new Ae(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(MO.merge([ug.fog,ug.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(`
2125
+ `)}return t}};import{UniformsLib as pg,UniformsUtils as DO}from"three";var js=class extends it{constructor(){super("toon");this.nodeType="Toon";this.color=new Ae(Ke),this.specular=new Ae(1118481),this.shininess=new Z(30),this.previousModelViewMatrix=new mt,this.previouseProjectionMatrix=new mt,this.shadingAlpha=new Z(1),this.shadingBlend=new ve(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:ye.frameIndex}),e.mergeUniform({resolution:ye.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(DO.merge([pg.fog,pg.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(`
2126
2126
  `));let i=["#include <beginnormal_vertex>",`
2127
2127
  #ifndef USE_LAYER_DISPLACE
2128
2128
  #include <defaultnormal_vertex>
@@ -2169,7 +2169,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2169
2169
  if (dot(normal, faceNormal) < 0.0) {
2170
2170
  normal *= -1.0;
2171
2171
  }
2172
- `," ToonMaterial material;"];if(this.bumpMap){e.include(to.dHdxy),e.include(to.perturbNormalArb);let f=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),h=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",y="";this.bumpMap.projection.value===4?y=`
2172
+ `," ToonMaterial material;"];if(this.bumpMap){e.include(eo.dHdxy),e.include(eo.perturbNormalArb);let f=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),h=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",y="";this.bumpMap.projection.value===4?y=`
2173
2173
  vec3 bumpNormal = vec3(0.0);
2174
2174
  {
2175
2175
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2205,11 +2205,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2205
2205
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result} * ${p}, ${c.result} );
2206
2206
  }
2207
2207
  `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),l?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
2208
- `)}return t}};import{VideoTexture as EO,Texture as LO}from"three";var ql=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 yu=class extends ql{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},hu;function pg(n){return typeof n=="string"?n:(hu||(hu=new yu),hu.load(n))}var $l=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")}},Yl=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 Vi=class extends $l{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 a=this[s];a&&(a.image=this.img,a.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=a=>{i=a.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=pg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new EO(this.img,void 0,e,e):o=new LO(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 Yt=class extends Vi{};import{Vector2 as ro,Vector3 as Er,Vector4 as Xl}from"three";function ht(n,r){return r.color(n)}function fg(n,r){switch(n.type){case"fresnel":return RO(n,r);case"gradient":return GO(n);case"depth":return VO(n);case"normal":return zO(n);case"noise":return jO(n,r);case"rainbow":return FO(n);case"toon":return kO(n,r);case"outline":return UO(n,r);case"transmission":return HO(n,r);case"color":return BO(n,r);case"pattern":return WO(n,r)}}function DO(n){return{type:n.type}}function ur(n){let{alpha:r,mode:e,isMask:t}=n;return{...DO(n),alpha:r,mode:e,isMask:t}}function BO(n,r){return{...ur(n),color:ht(n.color,r)}}function RO(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:a}=n;return{...ur(n),color:ht(s,r),bias:e,scale:t,intensity:o,factor:i}}function GO(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:a}=n;return{...ur(n),gradientType:r,smooth:e,colors:t.map(c=>new Xl(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new ro(...s),morph:new ro(...a),angle:i}}function VO(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:u,smooth:l}=n;return{...ur(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Er(...s),direction:a?new Er(...a):new Er(1,0,0),colors:c.map(d=>d!==void 0?new Xl(d[0],d[1],d[2],d[3]):new Xl(0,0,0,0)),steps:u.slice(0,c.length),smooth:l}}function zO(n){let{cnormal:r}=n;return{...ur(n),cnormal:new Er(r[0],r[1],r[2])}}function jO(n,r){return{...ur(n),scale:n.scale,move:n.move,fA:new ro(...n.fA),fB:new ro(...n.fB),size:new Er(...n.size),distortion:new ro(...n.distortion),colorA:ht(n.colorA,r),colorB:ht(n.colorB,r),colorC:ht(n.colorC,r),colorD:ht(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function FO(n){return{...ur(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Er(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Er(...n.offset)}}function kO(n,r){return{...ur(n),positioning:n.positioning,colors:n.colors.map(e=>new Xl(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Er(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:ht(n.shadowColor,r),offset:new Er(...n.offset)}}function UO(n,r){return{...ur(n),outlineColor:ht(n.outlineColor,r),contourColor:ht(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Er(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function HO(n,r){return{...ur(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function WO(n,r){return{...ur(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new ro(...n.offset),colorA:ht(n.colorA,r),colorB:ht(n.colorB,r),frequency:new ro(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new ro(...n.vertical),horizontal:new ro(...n.horizontal),sides:n.sides}}var No=class extends Je{};import{Vector4 as qO}from"three";var gu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},xu={depth:["colors"]};function $O(n,r,e){if(r==="isMask")return!0;let t=gu[n.type],o=xu[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 vu(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,a=r.image(s),c=t;c.image instanceof Yt||c.image.deref(),c.image=a}if("video"in i){let s=i.video,a=r.video(s),c=t;c.image instanceof Yt||c.image.deref(),c.image=a}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function mg(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||s===void 0)continue;if(bu(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Ao))switch(o=o||$O(e,i,s),a.constructor){case Ae:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof No?a.value=new Je(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case Et:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof No?a.value=new Je(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case Ve:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case ft:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Pt:{vu(s,r,e);break}case dr:{a.value=s.map(c=>new qO(...c));break}default:{a.value=s;break}}}return console.log(o),o}var Dr=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)bu(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Ut.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 Zo(i,t.texture.wrapping),a=new Hl(i),c=new Wl(t.texture.repeat,t.texture.offset),u=new Z(t.crop?1:0),l=new ve(t.projection??0),d=new ve(["x","y","z"].indexOf(t.axis)??0),p=new ve(t.side??0),f=new Ve(t.size?new pr(t.size[0],t.size[1]):new pr(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new ve(t.mode??0),g=new ke(t.isMask??!1),x=new Co(s,a,u,l,d,p,f,m,c,h,y,g),b=new Pe(x.calpha,"f");return new De(r,e,t,{texture:s,textureSize:a,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Zo(i,t.texture.wrapping),a=new Z(t.alpha??1),c=new ve(t.mode??0),u=new ke(t.isMask??!1),l=new Ii(s,a,c,u),d=new Pe(l.calpha,"f");return new De(r,e,t,{texture:s,alpha:a,mode:c,isMask:u},l,c,d,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new ft(new Lr(...t.offset)),s=new Z(t.scale??10),a=new Z(t.intensity??8),c=new Z(t.movement??1),u=new ve(t.noiseType??0),l=new ve(t.voronoiStyle??0),d=new Z(t.smoothness??.5),p=new Z(t.seed??0),f=new Z(t.highCut??1),m=new Z(t.lowCut??0),h=new ve(t.quality??1),y=new Gi(a,c,i,l,d,p,f,m,h,s,u);return new ks(r,e,t,{offset:i,scale:s,intensity:a,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return KO(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):mg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?vu(o.props,t.shared,this):!0;return!1}dispose(){if(YO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Yt||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}},De=class extends Dr{constructor(e,t,o,i,s,a,c,u){super(e,t,o,i);this.params=i;this.color=s;this.mode=a;this.alpha=c;this.isMask=u}},ks=class extends Dr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Ut=class extends Dr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,a=new Z(o.alpha),c=new ve(o.mode),u=new Z(o.bumpMapIntensity),l;if(!o.visible)s=new en,l={};else if(o.category==="lambert"){s=new Vs;let d=new Ae(i.color(o.emissive)??0),p=new ke(o.occlusion??!0);l={emissive:d,occlusion:p},s.emissive=d,s.occlusion=p}else if(o.category==="toon"){s=new Fs;let d=new Z(o.shininess??30),p=new Ae(i.color(o.specular)??1118481);l={shininess:d,specular:p},s.shininess=d,s.specular=p}else if(o.category==="physical"){s=new js;let d=new Z(o.roughness??.3),p=new Z(o.metalness??0),f=new Z(o.reflectivity??.5),m=new ke(o.occlusion??!0);l={roughness:d,metalness:p,reflectivity:f,occlusion:m},s.roughness=d,s.metalness=p,s.reflectivity=f,s.occlusion=m}else{s=new zs;let d=new Z(o.shininess??30),p=new Ae(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new ke(o.occlusion??!0);l={shininess:d,specular:p,occlusion:f},s.shininess=d,s.specular=p,s.occlusion=f}return s.alpha=new Z(1),s.shadingAlpha=a,s.shadingBlend=c,s.bumpMapIntensity=u,l.alpha=s.shadingAlpha,l.mode=s.shadingBlend,l.bumpMapIntensity=s.bumpMapIntensity,new Ut(e,t,o,s,l)}get category(){return this.node.category}};function YO(n){let r=n instanceof Dr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function Xt(n){return{alpha:new Z(n.alpha??1),mode:new ve(n.mode??0),isMask:new ke(n.isMask??!1)}}function XO(n,r,e,t){switch(n.type){case"color":{let o=new Ae(t.color??Ke),i=Xt(t),s=new Qo(o,i.alpha),a=new Pe(s.calpha,"f");return new De(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}case"fresnel":{let o=new Ae(t.color??16777215),i=new Z(t.bias??.1),s=new Z(t.scale??1),a=new Z(t.intensity??2),c=new Z(t.factor??1),u=Xt(t),l=new Rs(o,i,s,a,c,u.alpha,u.mode,u.isMask),d=new Pe(l.calpha,"f");return new De(r,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,...u},l,u.mode,d,u.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new ft(t.wavelengths??new Lr(0,0,0)),a=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),u=new ft(t.offset??new Lr(0,0,0)),l=Xt(t),d=new Di(o,i,s,a,c,u,l.alpha,l.isMask),p=new Pe(d.calpha,"f");return new De(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:u,...l},d,l.mode,p,l.isMask)}case"transmission":{let o=new Z(t.thickness??10),i=new Z(t.ior??1.5),s=new Z(t.roughness??.5),a=ye.transmissionSize,c=ye.transmissionRenderTarget,u=ye.transmissionRenderTargetDepth,l=window.innerWidth,d=window.innerHeight,p=l>=d?new Ve(d/l,1):new Ve(1,l/d),f=Xt(t),m=new Ri(o,i,s,a,c,u,p,f.alpha),h=new Pe(m.calpha,"f");return new De(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new ve(t.positioning??0),i;t.colors?i=new dr(t.colors.length,t.colors):(i=new dr(10,new zi(0,0,0,1)),i.value[1]=new zi(1,1,1,1));let s;t.steps?s=new cr(t.steps.length,t.steps):(s=new cr(10,1),s.value[0]=0);let a=new ft(t.source??new Lr(0,0,0)),c=new ke(t.isWorldSpace??!0),u=new Z(t.noiseStrength??0),l=new Z(t.noiseScale??1),d=new Et(t.shadowColor),p=new ft(t.offset??new Lr(0,0,0)),f=Xt(t),m=new Bi(o,i,s,a,c,u,l,d,p,f.alpha),h=new Pe(m.calpha,"f");return new De(r,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:u,noiseScale:l,shadowColor:d,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Ae(t.outlineColor??16777215),i=new Ae(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),a=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),u=new Z(t.contourThreshold??.1),l=new Z(t.outlineSmoothing??.1),d=new Z(t.contourFrequency??.1),p=new ft(t.contourDirection??new Lr(0,1,0)),f=new ke(t.positionalLines??!1),m=new ke(t.compensation??!0),h=ye.normalRenderTarget,y=ye.normalRenderTargetDepth,g=ye.pixelRatioNode,x=ye.resolution,b=Xt(t),w=new Ei(o,i,s,a,c,u,l,d,p,f,m,x,h,y,g,b.alpha),S=new Pe(w.calpha,"f");return new De(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:u,outlineSmoothing:l,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new ve(t.gradientType??0),i=new ke(t.smooth??!1),s=new Z(t.near??50),a=new Z(t.far??200),c=new Z(t.isVector??1),u=new Z(t.isWorldSpace??0),l=new ft(t.origin??new Lr),d=new ft(t.direction??new Lr),p;t.colors?p=new dr(t.colors.length,t.colors):(p=new dr(2,new zi(0,0,0,1)),p.value[1]=new zi(1,1,1,1));let f;t.steps?f=new cr(t.steps.length,t.steps):(f=new cr(2,1),f.value[0]=0);let m=Xt(t),h=new Ci(o,i,s,a,c,u,l,d,p,f,m.alpha,m.isMask),y=new Pe(h.calpha,"f");return new De(r,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:u,origin:l,direction:d,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new ft(t.size??new Lr(100,100,100)),s=new Z(t.move??1),a=new Ve(t.fA??new pr(1.7,9.2)),c=new Ve(t.fB??new pr(8.3,2.8)),u=new Ve(t.distortion??new pr(1,1)),l=new Et(t.colorA),d=new Et(t.colorB),p=new Et(t.colorC),f=new Et(t.colorD),m=new ve(t.noiseType??0),h=new ve(t.voronoiStyle??0),y=new Z(t.highCut??1),g=new Z(t.lowCut??0),x=new Z(t.smoothness??.5),b=new Z(t.seed??.5),w=new ve(t.quality??1),S=Xt(t),P=new Mi(o,i,s,a,c,u,l,d,p,f,S.alpha,m,S.isMask,h,y,g,x,b,w),_=new Pe(P.calpha,"f");return new De(r,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:u,colorA:l,colorB:d,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:x,seed:b,quality:w},P,S.mode,_,S.isMask)}case"normal":{let o=new ft(t.cnormal??new Lr(1,1,1)),i=Xt(t),s=new Ti(o,i.alpha),a=new Pe(s.calpha,"f");return new De(r,e,n,{cnormal:o,...i},s,i.mode,a,i.isMask)}case"gradient":{let o=new ve(t.gradientType??0),i=new ke(t.smooth??!1),s;t.colors?s=new dr(t.colors.length,t.colors):(s=new dr(10,new zi(0,0,0,1)),s.value[1]=new zi(1,1,1,1));let a;t.steps?a=new cr(t.steps.length,t.steps):(a=new cr(10,1),a.value[0]=0);let c=new Ve(t.offset??new pr(0,0)),u=new Ve(t.morph??new pr(0,0)),l=new Z(t.angle??0),d=Xt(t),p=new Ni(o,i,s,a,c,u,l,d.alpha,d.isMask),f=new Pe(p.calpha,"f");return new De(r,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:u,angle:l,...d},p,d.mode,f,d.isMask)}case"pattern":{let o=new ve(t.style??0),i=new ve(t.projection??0),s=new ve(["x","y","z"].indexOf(t.axis)??0),a=new Z(t.blending??0),c=new Ve(t.offset??new pr(0,0)),u=new Et(t.colorA),l=new Et(t.colorB),d=new Ve(t.frequency??new pr(10,10)),p=new Z(t.size??.5),f=new Z(t.variation??0),m=new Z(t.smoothness??.5),h=new Z(t.zigzag??0),y=new Z(t.rotation??0),g=new Ve(t.vertical??new pr(0,1)),x=new Ve(t.horizontal??new pr(0,1)),b=new ve(t.sides??6),w=Xt(t),S=new Li(o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w.alpha,w.isMask),P=new Pe(S.calpha,"f");return new De(r,e,n,{style:o,projection:i,axis:s,blending:a,offset:c,colorA:u,colorB:l,frequency:d,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:x,sides:b,...w},S,w.mode,P,w.isMask)}default:{let o=new Ae(1,0,0,1),i=Xt(t),s=new Qo(o,i.alpha),a=new Pe(s.calpha,"f");return new De(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}}}function KO(n,r,e,t){let o=fg(e,t);return XO(e,n,r,o)}function bu(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 hg(n,r){let e=0;for(let t of n.layers){if(t.data.type!=="displace"&&t.data.isMask)return!0;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"&&t.data.type!=="pattern"){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,a=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(a,c)));u<1&&(o=u)}e+=(1-e)*o}}return e<1}var Dt=class extends ZO{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Kl=class extends Dt{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},tn=class extends Dt{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new Kl(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}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??It.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>Dr.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=hg(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 Ut),this.lightLayer===void 0&&(this.lightLayer=new Ut(0,"",{...wt.defaultData("light","phong"),visible:!1},new en,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(s=>s instanceof Ut);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let s=0;s<this.layers.length;++s){let a=this.layers[s];a instanceof De&&a.color instanceof Co&&(a.uuid===o&&(e.node.bumpMap=a.color),a.uuid===i&&(e.node.roughnessMap=a.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=hg(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 a=Dr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,a),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 a=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let a=this.layers.find(c=>c.uuid===s);if(a){let c=t.layers.data(s);if(a.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=Dr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,l),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof De?t.color.mask=void 0:t instanceof Ut&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof De&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Ut?i.node.mask=new st(t.color,t.alpha,st.MUL):i instanceof De&&(i.isMask.value||(i.color.mask=new st(t.color,t.alpha,st.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof De),t=this.layers.findIndex(o=>o instanceof Ut);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof De){if(s.isMask.value)continue;o=new Pi(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Pe("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Ut);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof De){if(i.isMask.value)continue;e=new Pi(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 ks);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new st(t,e[o].position,st.ADD),t=new st(t,new Z(.5).setReadonly(!0),st.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,a)=>Math.min(Math.max(i,s),a);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=(gu[t.type]??[]).map(u=>t[u]),i=(xu[t.type]??[]).map(u=>t[u]?.length??0),s=[...o,...i],a="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${a}"`;s.length?e+=`[${c}, "${s.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Ul;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof De){let t=e.params.texture;if(t instanceof Zo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Dt.prototype,{properties:{get:function(){return this.fragment.properties}}});var rn=class extends tn{};var vg=aa(yg());var gg=new Map;function xg(n){if(typeof n=="string")return n;let r=gg.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},gg.set(n,r)),r.url}var on=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:xg(r),format:"wav"},this.sound=new vg.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 QO,Vector2 as nn,Path as bg,Shape as JO,ShapeUtils as eA,Color as tA}from"three";var Ql=class{constructor(){this.type="ShapePath";this.color=new tA;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new bg,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,x){let b=h.x,w=y.x,S=g.x,P=x.x,_=h.y,v=y.y,N=g.y,T=x.y,C=(P-S)*(_-N)-(T-N)*(b-S),O=(w-b)*(_-N)-(v-_)*(b-S),A=(T-N)*(w-b)-(P-S)*(v-_),R=C/A,U=O/A;if(A===0&&C!==0||R<=0||R>=1||U<0||U>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:x,h,y),t.loc===e.ORIGIN){let ee=$===0?g:x;return{x:ee.x,y:ee.y,t:t.t}}else if(t.loc===e.BETWEEN){let ee=+(b+t.t*(w-b)).toPrecision(10),Y=+(_+t.t*(v-_)).toPrecision(10);return{x:ee,y:Y,t:t.t}}return null}else{for(let Y=0;Y<2;Y++)if(i(Y===0?g:x,h,y),t.loc===e.ORIGIN){let q=Y===0?g:x;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),ee=+(_+R*(v-_)).toPrecision(10);return{x:$,y:ee,t:R}}}function i(h,y,g){let x=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,P=x*S-w*b;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(P<-Number.EPSILON){t.loc=e.LEFT;return}if(P>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],x=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let P=1;P<y.length;P++){let _=y[P-1],v=y[P],N=o(w,S,_,v);N!==null&&g.find(T=>T.t<=N.t+Number.EPSILON&&T.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new nn(N.x,N.y)))}}return x}function a(h,y,g){let x=new nn;y.getCenter(x);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&s(h,w.points).forEach(P=>{b.push({identifier:w.identifier,isCW:w.isCW,point:P})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,x,b){(b==null||b==="")&&(b="nonzero");let w=new nn;h.boundingBox.getCenter(w);let S=[new nn(g,w.y),new nn(x,w.y)],P=a(S,h.boundingBox,y);P.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];P.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let N=_[0].point.x,T=[],C=0;for(;C<v.length&&v[C].point.x<N;)T.length>0&&T[T.length-1]===v[C].identifier?T.pop():T.push(v[C].identifier),C++;if(T.push(h.identifier),b==="evenodd"){let O=T.length%2===0,A=T[T.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let U=0;U<T.length;U++){let $=T[U];y[$]&&(O?(R=y[$].isCW,O=!1,A=$):R!==y[$].isCW&&(R=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let P=y[S];P.y>g&&(g=P.y),P.y<x&&(x=P.y),P.x>b&&(b=P.x),P.x<w&&(w=P.x)}d<=b&&(d=b+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:eA.isClockWise(y),identifier:u++,boundingBox:new QO(new nn(w,x),new nn(b,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new JO;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new bg;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Sg,Su=new Promise(n=>{Sg=n});var wg=Bn(async()=>{let n=await import("./opentype.js");Sg(n)});var Us=class{async load(r,e,t=()=>{}){let{load:o}=await Su;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Su;try{let o=e(r),i=new t,s=a=>o.charToGlyphIndex(a.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function rA(n){return await(await fetch(n)).arrayBuffer()}var oA=new Us;async function wu(n){let r,e,t=!1;if(n.url?(r=await rA(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await oA.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as nA,LineCurve as iA,QuadraticBezierCurve as sA}from"three";function aA(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Jl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=wu(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=wu(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=[],a=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[a];if(aA(l,p)||c)s.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),a++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)a++,m=e.charAt(a),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),a>e.length&&(g=!0);s.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),a++}}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(x=>this.getTextWidth(x,e)),a=e.width,c=this.getCharWidth(`
2208
+ `)}return t}};import{VideoTexture as BO,Texture as RO}from"three";var ql=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var gu=class extends ql{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},yu;function fg(n){return typeof n=="string"?n:(yu||(yu=new gu),yu.load(n))}var $l=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")}},Yl=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 Gi=class extends $l{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 a=this[s];a&&(a.image=this.img,a.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=a=>{i=a.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=fg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new BO(this.img,void 0,e,e):o=new RO(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 Yt=class extends Gi{};import{Vector2 as to,Vector3 as Er,Vector4 as Xl}from"three";function ht(n,r){return r.color(n)}function mg(n,r){switch(n.type){case"fresnel":return zO(n,r);case"gradient":return jO(n);case"depth":return FO(n);case"normal":return kO(n);case"noise":return UO(n,r);case"rainbow":return HO(n);case"toon":return WO(n,r);case"outline":return qO(n,r);case"transmission":return $O(n,r);case"color":return VO(n,r);case"pattern":return YO(n,r)}}function GO(n){return{type:n.type}}function ur(n){let{alpha:r,mode:e,isMask:t}=n;return{...GO(n),alpha:r,mode:e,isMask:t}}function VO(n,r){return{...ur(n),color:ht(n.color,r)}}function zO(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:a}=n;return{...ur(n),color:ht(s,r),bias:e,scale:t,intensity:o,factor:i}}function jO(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:a}=n;return{...ur(n),gradientType:r,smooth:e,colors:t.map(c=>new Xl(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new to(...s),morph:new to(...a),angle:i}}function FO(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:u,smooth:l}=n;return{...ur(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Er(...s),direction:a?new Er(...a):new Er(1,0,0),colors:c.map(d=>d!==void 0?new Xl(d[0],d[1],d[2],d[3]):new Xl(0,0,0,0)),steps:u.slice(0,c.length),smooth:l}}function kO(n){let{cnormal:r}=n;return{...ur(n),cnormal:new Er(r[0],r[1],r[2])}}function UO(n,r){return{...ur(n),scale:n.scale,move:n.move,fA:new to(...n.fA),fB:new to(...n.fB),size:new Er(...n.size),distortion:new to(...n.distortion),colorA:ht(n.colorA,r),colorB:ht(n.colorB,r),colorC:ht(n.colorC,r),colorD:ht(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function HO(n){return{...ur(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Er(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Er(...n.offset)}}function WO(n,r){return{...ur(n),positioning:n.positioning,colors:n.colors.map(e=>new Xl(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Er(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:ht(n.shadowColor,r),offset:new Er(...n.offset)}}function qO(n,r){return{...ur(n),outlineColor:ht(n.outlineColor,r),contourColor:ht(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Er(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function $O(n,r){return{...ur(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function YO(n,r){return{...ur(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new to(...n.offset),colorA:ht(n.colorA,r),colorB:ht(n.colorB,r),frequency:new to(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new to(...n.vertical),horizontal:new to(...n.horizontal),sides:n.sides}}var Co=class extends Je{};import{Vector4 as XO}from"three";var xu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},vu={depth:["colors"]};function KO(n,r,e){if(r==="isMask")return!0;let t=xu[n.type],o=vu[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 bu(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,a=r.image(s),c=t;c.image instanceof Yt||c.image.deref(),c.image=a}if("video"in i){let s=i.video,a=r.video(s),c=t;c.image instanceof Yt||c.image.deref(),c.image=a}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function hg(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||s===void 0)continue;if(Su(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Oo))switch(o=o||KO(e,i,s),a.constructor){case Ae:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Co?a.value=new Je(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case Et:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Co?a.value=new Je(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case Ve:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case ft:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Pt:{bu(s,r,e);break}case dr:{a.value=s.map(c=>new XO(...c));break}default:{a.value=s;break}}}return console.log(o),o}var Dr=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)Su(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Ut.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 Ko(i,t.texture.wrapping),a=new Hl(i),c=new Wl(t.texture.repeat,t.texture.offset),u=new Z(t.crop?1:0),l=new ve(t.projection??0),d=new ve(["x","y","z"].indexOf(t.axis)??0),p=new ve(t.side??0),f=new Ve(t.size?new pr(t.size[0],t.size[1]):new pr(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new ve(t.mode??0),g=new ke(t.isMask??!1),x=new Ao(s,a,u,l,d,p,f,m,c,h,y,g),b=new Pe(x.calpha,"f");return new De(r,e,t,{texture:s,textureSize:a,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Ko(i,t.texture.wrapping),a=new Z(t.alpha??1),c=new ve(t.mode??0),u=new ke(t.isMask??!1),l=new Ni(s,a,c,u),d=new Pe(l.calpha,"f");return new De(r,e,t,{texture:s,alpha:a,mode:c,isMask:u},l,c,d,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new ft(new Lr(...t.offset)),s=new Z(t.scale??10),a=new Z(t.intensity??8),c=new Z(t.movement??1),u=new ve(t.noiseType??0),l=new ve(t.voronoiStyle??0),d=new Z(t.smoothness??.5),p=new Z(t.seed??0),f=new Z(t.highCut??1),m=new Z(t.lowCut??0),h=new ve(t.quality??1),y=new Ri(a,c,i,l,d,p,f,m,h,s,u);return new Fs(r,e,t,{offset:i,scale:s,intensity:a,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return JO(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):hg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?bu(o.props,t.shared,this):!0;return!1}dispose(){if(ZO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof Yt||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}},De=class extends Dr{constructor(e,t,o,i,s,a,c,u){super(e,t,o,i);this.params=i;this.color=s;this.mode=a;this.alpha=c;this.isMask=u}},Fs=class extends Dr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Ut=class extends Dr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,a=new Z(o.alpha),c=new ve(o.mode),u=new Z(o.bumpMapIntensity),l;if(!o.visible)s=new Jo,l={};else if(o.category==="lambert"){s=new Gs;let d=new Ae(i.color(o.emissive)??0),p=new ke(o.occlusion??!0);l={emissive:d,occlusion:p},s.emissive=d,s.occlusion=p}else if(o.category==="toon"){s=new js;let d=new Z(o.shininess??30),p=new Ae(i.color(o.specular)??1118481);l={shininess:d,specular:p},s.shininess=d,s.specular=p}else if(o.category==="physical"){s=new zs;let d=new Z(o.roughness??.3),p=new Z(o.metalness??0),f=new Z(o.reflectivity??.5),m=new ke(o.occlusion??!0);l={roughness:d,metalness:p,reflectivity:f,occlusion:m},s.roughness=d,s.metalness=p,s.reflectivity=f,s.occlusion=m}else{s=new Vs;let d=new Z(o.shininess??30),p=new Ae(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new ke(o.occlusion??!0);l={shininess:d,specular:p,occlusion:f},s.shininess=d,s.specular=p,s.occlusion=f}return s.alpha=new Z(1),s.shadingAlpha=a,s.shadingBlend=c,s.bumpMapIntensity=u,l.alpha=s.shadingAlpha,l.mode=s.shadingBlend,l.bumpMapIntensity=s.bumpMapIntensity,new Ut(e,t,o,s,l)}get category(){return this.node.category}};function ZO(n){let r=n instanceof Dr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function Xt(n){return{alpha:new Z(n.alpha??1),mode:new ve(n.mode??0),isMask:new ke(n.isMask??!1)}}function QO(n,r,e,t){switch(n.type){case"color":{let o=new Ae(t.color??Ke),i=Xt(t),s=new Zo(o,i.alpha),a=new Pe(s.calpha,"f");return new De(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}case"fresnel":{let o=new Ae(t.color??16777215),i=new Z(t.bias??.1),s=new Z(t.scale??1),a=new Z(t.intensity??2),c=new Z(t.factor??1),u=Xt(t),l=new Bs(o,i,s,a,c,u.alpha,u.mode,u.isMask),d=new Pe(l.calpha,"f");return new De(r,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,...u},l,u.mode,d,u.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new ft(t.wavelengths??new Lr(0,0,0)),a=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),u=new ft(t.offset??new Lr(0,0,0)),l=Xt(t),d=new Li(o,i,s,a,c,u,l.alpha,l.isMask),p=new Pe(d.calpha,"f");return new De(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:u,...l},d,l.mode,p,l.isMask)}case"transmission":{let o=new Z(t.thickness??10),i=new Z(t.ior??1.5),s=new Z(t.roughness??.5),a=ye.transmissionSize,c=ye.transmissionRenderTarget,u=ye.transmissionRenderTargetDepth,l=window.innerWidth,d=window.innerHeight,p=l>=d?new Ve(d/l,1):new Ve(1,l/d),f=Xt(t),m=new Bi(o,i,s,a,c,u,p,f.alpha),h=new Pe(m.calpha,"f");return new De(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new ve(t.positioning??0),i;t.colors?i=new dr(t.colors.length,t.colors):(i=new dr(10,new Vi(0,0,0,1)),i.value[1]=new Vi(1,1,1,1));let s;t.steps?s=new cr(t.steps.length,t.steps):(s=new cr(10,1),s.value[0]=0);let a=new ft(t.source??new Lr(0,0,0)),c=new ke(t.isWorldSpace??!0),u=new Z(t.noiseStrength??0),l=new Z(t.noiseScale??1),d=new Et(t.shadowColor),p=new ft(t.offset??new Lr(0,0,0)),f=Xt(t),m=new Di(o,i,s,a,c,u,l,d,p,f.alpha),h=new Pe(m.calpha,"f");return new De(r,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:u,noiseScale:l,shadowColor:d,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Ae(t.outlineColor??16777215),i=new Ae(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),a=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),u=new Z(t.contourThreshold??.1),l=new Z(t.outlineSmoothing??.1),d=new Z(t.contourFrequency??.1),p=new ft(t.contourDirection??new Lr(0,1,0)),f=new ke(t.positionalLines??!1),m=new ke(t.compensation??!0),h=ye.normalRenderTarget,y=ye.normalRenderTargetDepth,g=ye.pixelRatioNode,x=ye.resolution,b=Xt(t),w=new Mi(o,i,s,a,c,u,l,d,p,f,m,x,h,y,g,b.alpha),S=new Pe(w.calpha,"f");return new De(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:u,outlineSmoothing:l,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new ve(t.gradientType??0),i=new ke(t.smooth??!1),s=new Z(t.near??50),a=new Z(t.far??200),c=new Z(t.isVector??1),u=new Z(t.isWorldSpace??0),l=new ft(t.origin??new Lr),d=new ft(t.direction??new Lr),p;t.colors?p=new dr(t.colors.length,t.colors):(p=new dr(2,new Vi(0,0,0,1)),p.value[1]=new Vi(1,1,1,1));let f;t.steps?f=new cr(t.steps.length,t.steps):(f=new cr(2,1),f.value[0]=0);let m=Xt(t),h=new Ai(o,i,s,a,c,u,l,d,p,f,m.alpha,m.isMask),y=new Pe(h.calpha,"f");return new De(r,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:u,origin:l,direction:d,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new ft(t.size??new Lr(100,100,100)),s=new Z(t.move??1),a=new Ve(t.fA??new pr(1.7,9.2)),c=new Ve(t.fB??new pr(8.3,2.8)),u=new Ve(t.distortion??new pr(1,1)),l=new Et(t.colorA),d=new Et(t.colorB),p=new Et(t.colorC),f=new Et(t.colorD),m=new ve(t.noiseType??0),h=new ve(t.voronoiStyle??0),y=new Z(t.highCut??1),g=new Z(t.lowCut??0),x=new Z(t.smoothness??.5),b=new Z(t.seed??.5),w=new ve(t.quality??1),S=Xt(t),P=new Ii(o,i,s,a,c,u,l,d,p,f,S.alpha,m,S.isMask,h,y,g,x,b,w),_=new Pe(P.calpha,"f");return new De(r,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:u,colorA:l,colorB:d,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:x,seed:b,quality:w},P,S.mode,_,S.isMask)}case"normal":{let o=new ft(t.cnormal??new Lr(1,1,1)),i=Xt(t),s=new Pi(o,i.alpha),a=new Pe(s.calpha,"f");return new De(r,e,n,{cnormal:o,...i},s,i.mode,a,i.isMask)}case"gradient":{let o=new ve(t.gradientType??0),i=new ke(t.smooth??!1),s;t.colors?s=new dr(t.colors.length,t.colors):(s=new dr(10,new Vi(0,0,0,1)),s.value[1]=new Vi(1,1,1,1));let a;t.steps?a=new cr(t.steps.length,t.steps):(a=new cr(10,1),a.value[0]=0);let c=new Ve(t.offset??new pr(0,0)),u=new Ve(t.morph??new pr(0,0)),l=new Z(t.angle??0),d=Xt(t),p=new Ci(o,i,s,a,c,u,l,d.alpha,d.isMask),f=new Pe(p.calpha,"f");return new De(r,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:u,angle:l,...d},p,d.mode,f,d.isMask)}case"pattern":{let o=new ve(t.style??0),i=new ve(t.projection??0),s=new ve(["x","y","z"].indexOf(t.axis)??0),a=new Z(t.blending??0),c=new Ve(t.offset??new pr(0,0)),u=new Et(t.colorA),l=new Et(t.colorB),d=new Ve(t.frequency??new pr(10,10)),p=new Z(t.size??.5),f=new Z(t.variation??0),m=new Z(t.smoothness??.5),h=new Z(t.zigzag??0),y=new Z(t.rotation??0),g=new Ve(t.vertical??new pr(0,1)),x=new Ve(t.horizontal??new pr(0,1)),b=new ve(t.sides??6),w=Xt(t),S=new Ei(o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w.alpha,w.isMask),P=new Pe(S.calpha,"f");return new De(r,e,n,{style:o,projection:i,axis:s,blending:a,offset:c,colorA:u,colorB:l,frequency:d,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:x,sides:b,...w},S,w.mode,P,w.isMask)}default:{let o=new Ae(1,0,0,1),i=Xt(t),s=new Zo(o,i.alpha),a=new Pe(s.calpha,"f");return new De(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}}}function JO(n,r,e,t){let o=mg(e,t);return QO(e,n,r,o)}function Su(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 yg(n,r){let e=0;for(let t of n.layers){if(t.data.type!=="displace"&&t.data.isMask)return!0;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"&&t.data.type!=="pattern"){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,a=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(a,c)));u<1&&(o=u)}e+=(1-e)*o}}return e<1}var Dt=class extends eA{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Kl=class extends Dt{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},en=class extends Dt{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new Kl(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}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??It.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>Dr.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=yg(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 Ut),this.lightLayer===void 0&&(this.lightLayer=new Ut(0,"",{...wt.defaultData("light","phong"),visible:!1},new Jo,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(s=>s instanceof Ut);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let s=0;s<this.layers.length;++s){let a=this.layers[s];a instanceof De&&a.color instanceof Ao&&(a.uuid===o&&(e.node.bumpMap=a.color),a.uuid===i&&(e.node.roughnessMap=a.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=yg(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 a=Dr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,a),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 a=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let a=this.layers.find(c=>c.uuid===s);if(a){let c=t.layers.data(s);if(a.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=Dr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,l),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof De?t.color.mask=void 0:t instanceof Ut&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof De&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Ut?i.node.mask=new st(t.color,t.alpha,st.MUL):i instanceof De&&(i.isMask.value||(i.color.mask=new st(t.color,t.alpha,st.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof De),t=this.layers.findIndex(o=>o instanceof Ut);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof De){if(s.isMask.value)continue;o=new _i(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Pe("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Ut);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof De){if(i.isMask.value)continue;e=new _i(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 Fs);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new st(t,e[o].position,st.ADD),t=new st(t,new Z(.5).setReadonly(!0),st.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,a)=>Math.min(Math.max(i,s),a);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=(xu[t.type]??[]).map(u=>t[u]),i=(vu[t.type]??[]).map(u=>t[u]?.length??0),s=[...o,...i],a="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${a}"`;s.length?e+=`[${c}, "${s.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Ul;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof De){let t=e.params.texture;if(t instanceof Ko&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Dt.prototype,{properties:{get:function(){return this.fragment.properties}}});var tn=class extends en{};var bg=sa(gg());var xg=new Map;function vg(n){if(typeof n=="string")return n;let r=xg.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},xg.set(n,r)),r.url}var rn=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:vg(r),format:"wav"},this.sound=new bg.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 tA,Vector2 as on,Path as Sg,Shape as rA,ShapeUtils as oA,Color as nA}from"three";var Ql=class{constructor(){this.type="ShapePath";this.color=new nA;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Sg,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,x){let b=h.x,w=y.x,S=g.x,P=x.x,_=h.y,v=y.y,N=g.y,T=x.y,C=(P-S)*(_-N)-(T-N)*(b-S),O=(w-b)*(_-N)-(v-_)*(b-S),A=(T-N)*(w-b)-(P-S)*(v-_),R=C/A,U=O/A;if(A===0&&C!==0||R<=0||R>=1||U<0||U>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:x,h,y),t.loc===e.ORIGIN){let ee=$===0?g:x;return{x:ee.x,y:ee.y,t:t.t}}else if(t.loc===e.BETWEEN){let ee=+(b+t.t*(w-b)).toPrecision(10),Y=+(_+t.t*(v-_)).toPrecision(10);return{x:ee,y:Y,t:t.t}}return null}else{for(let Y=0;Y<2;Y++)if(i(Y===0?g:x,h,y),t.loc===e.ORIGIN){let q=Y===0?g:x;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),ee=+(_+R*(v-_)).toPrecision(10);return{x:$,y:ee,t:R}}}function i(h,y,g){let x=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,P=x*S-w*b;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(P<-Number.EPSILON){t.loc=e.LEFT;return}if(P>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],x=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let P=1;P<y.length;P++){let _=y[P-1],v=y[P],N=o(w,S,_,v);N!==null&&g.find(T=>T.t<=N.t+Number.EPSILON&&T.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new on(N.x,N.y)))}}return x}function a(h,y,g){let x=new on;y.getCenter(x);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&s(h,w.points).forEach(P=>{b.push({identifier:w.identifier,isCW:w.isCW,point:P})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,x,b){(b==null||b==="")&&(b="nonzero");let w=new on;h.boundingBox.getCenter(w);let S=[new on(g,w.y),new on(x,w.y)],P=a(S,h.boundingBox,y);P.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];P.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let N=_[0].point.x,T=[],C=0;for(;C<v.length&&v[C].point.x<N;)T.length>0&&T[T.length-1]===v[C].identifier?T.pop():T.push(v[C].identifier),C++;if(T.push(h.identifier),b==="evenodd"){let O=T.length%2===0,A=T[T.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let U=0;U<T.length;U++){let $=T[U];y[$]&&(O?(R=y[$].isCW,O=!1,A=$):R!==y[$].isCW&&(R=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let P=y[S];P.y>g&&(g=P.y),P.y<x&&(x=P.y),P.x>b&&(b=P.x),P.x<w&&(w=P.x)}d<=b&&(d=b+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:oA.isClockWise(y),identifier:u++,boundingBox:new tA(new on(w,x),new on(b,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new rA;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Sg;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var _g,wu=new Promise(n=>{_g=n}),wg=!1;var Jl;function Pg(){if(wg)return;if(Jl)return Jl;async function n(){let r=await import("./opentype.js");_g(r),wg=!0}return Jl=n(),Jl}var ks=class{async load(r,e,t=()=>{}){let{load:o}=await wu;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await wu;try{let o=e(r),i=new t,s=a=>o.charToGlyphIndex(a.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function iA(n){return await(await fetch(n)).arrayBuffer()}var sA=new ks;async function _u(n){let r,e,t=!1;if(n.url?(r=await iA(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await sA.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as aA,LineCurve as lA,QuadraticBezierCurve as cA}from"three";function dA(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var ec=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=_u(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=_u(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=[],a=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[a];if(dA(l,p)||c)s.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),a++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)a++,m=e.charAt(a),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),a>e.length&&(g=!0);s.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),a++}}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(x=>this.getTextWidth(x,e)),a=e.width,c=this.getCharWidth(`
2209
2209
  `,e),u=e.horizontalAlign===1?c:0,l=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],a,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(x=>[]),h=r.map(x=>[]),y;for(let x=0;x<r.length;x++){let b=r[x],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[x],a,e.horizontalAlign,b,c);let P=[];try{P=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}l=this.computeSpaceWidthForLine(r,x,e);for(let _=0;_<S.length;_++){let v=S[_],N=v.index===0?`
2210
2210
  `:v.unicode?String.fromCharCode(v.unicode):void 0,T=P[_],C=0,O=0;_===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(O=-v.leftSideBearing*o),y&&(C=t.getKerningValue(v,y)*o),d+=O+C;let A=0;if(N===`
2211
2211
  `)A=u;else if(N===" ")A=l;else{let R=this.createPath(v,o,d,p,e);R&&(A=R.offsetX-(C+O),f.push(R.path))}if(T.replacements.length===1)h[x].push([d,p]),m[x].push(A);else{let R=T.replacements.map(Y=>(t.glyphs.get(Y).advanceWidth??0)*o),U=R.reduce((Y,q)=>Y+=q,0),$=R.map(Y=>Y/U),ee=d;for(let Y=0;Y<$.length;Y++){let q=A*$[Y];h[x].push([ee,p]),m[x].push(q),ee+=q}}d+=A,y=v}p-=i}let g=[];for(let x=0,b=f.length;x<b;x++)g.push(...f[x].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(`
2212
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,a=Math.abs(this.ascender-this.descender)*o,c=r-a,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 a=new Ql,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let l=a.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":a.moveTo(u.x,-u.y);break;case"L":a.lineTo(u.x,-u.y);break;case"Q":a.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":a.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return a.subPaths.forEach(u=>{let l=lA(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:a}}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 a=t.width,c=this.getTextWidth(i,t);return(a-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function lA(n){if(n.length){let r=n[0];if(r instanceof iA)return r.v1;if(r instanceof nA||r instanceof sA)return r.v0}}var _u=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()}},Hs=class extends _u{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Yo(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var _g={markNeedsUpdateRendererDirty:()=>{}};var Pu=class extends Yl{constructor(e){super();this.shared=e}create(e){return new Vi(e,this.shared)}},sn=class{constructor(r,e={}){this.geometryCache=new Hs(!0);this.geometryCache2=new Hs(!1);this.imageHolderCache=new Pu(this);this.thisContext={scene:_g,shared:this};this.deletedMaterial=new rn(It.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Yt(Kn.emptyImage,this);this.deletedVideo=new Yt(Hn.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};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 rn(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)}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):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 tn(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 Yt(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 Yt(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 No(e.r,e.g,e.b,e.a):this.colors[r]=new No(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 Je(0,0,0,0))}else return"a"in r?new Je(r.r,r.g,r.b,r.a):new Je(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 on)return e;{let t=new on({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof on&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Jl(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 on&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Pg=new sn(ul.emptyData());var Bt=class extends pt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Pm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let a=o.shared.material(s);this.material[Number(i)]=a}else if(yt(e.path,["material"])&&this.material instanceof Dt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(dt.drop(e,1),t.material,o);else if(yt(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(dt.drop(e,2),s,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&la(this.material).forEach(e=>{e instanceof Dt&&(e instanceof rn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as cA,Matrix4 as Tu,Vector3 as Ng,Vector4 as Ou}from"three";var Tg=new Ng,Og=new Ou,Ag=new Ou,dA=new Ng,Cg=new Tu,Xe=class extends Bt{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new Tu().fromArray(t.bindMatrix),this.bindMatrixInverse=new Tu)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof cA&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof sn){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 us.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return us.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),yt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(dt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=Yo(l,t,this.data.flatShading)}let s,a,c;i.scaleBaked?[s,a,c]=i.scaleBaked:{width:s,height:a,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Is(this.localGeometry.attributes,s/u.sxPrev,a/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=a,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Yo(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&&os(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof We&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Ou,o=this.geometry.attributes.skinWeight;for(let i=0,s=o.count;i<s;i++){t.fromBufferAttribute(o,i);let a=1/t.manhattanLength();a!==1/0?t.multiplyScalar(a):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Og.fromBufferAttribute(i.attributes.skinIndex,e),Ag.fromBufferAttribute(i.attributes.skinWeight,e),Tg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){let a=Ag.getComponent(s);if(a!==0){let c=Og.getComponent(s);Cg.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(dA.copy(Tg).applyMatrix4(Cg),a)}}return t.applyMatrix4(this.bindMatrixInverse)}};function pA(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 a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new Cu(o[s],o[s+1],o[s+2]);r.has(a)?r.get(a)?.normals.push(c):r.set(a,{normals:[c],result:new Cu})}r.forEach((s,a)=>{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 a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(a)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new Ig(i,3))}function fA(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 Cu;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 Ig(t,3))}function ji(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Dt)||n.material.getLayersOfType("outline").length===0)return;n instanceof Xe&&n.is2DAndNoDepth?fA(n):pA(n)}function Fi(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=[Au.seededRandom(o),Au.seededRandom(o+1e4),Au.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new uA(t,3))}var gA;hi.then(n=>{gA=n});var Br=new mA,Ws=new yA;function Eg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var an=class extends Xe{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new hA;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}=We.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,ji(this),Fi(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){We.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&We.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=We.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=We.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,pt.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 Mg,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Br.setFromBufferAttribute(t),Br.getCenter(o),e.boundingSphere.radius=o.distanceTo(Br.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Br.getSize(Ws),this.hasNonUniformScale&&Ws.divide(this.scale);let i={width:Ws.x,height:Ws.y,depth:Ws.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Br.min.set(e[0],e[2],e[4]),Br.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Br.min.applyMatrix4(this.shearScaleInv),Br.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Mg);let o=t.boundingSphere.center;Br.getCenter(o),t.boundingSphere.radius=o.distanceTo(Br.max)}freeSubdivPointer(){this.subdivPointer&&(We.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 xA,Vector3 as cn}from"three";var Lg=-1,vA=1,Dg={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Bg={polygon_center:0,edge:1,vertex:2},qs=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,he=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Lg)*(e-t)/(vA-Lg)+t};function Rg(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 bA=new cn,ec=new cn,SA=new cn,wA=new cn;function ki(n,r){let e=SA.fromArray(n),t=wA.fromArray(r);ec.copy(t).sub(e);let o=ec.length();return ec.normalize().multiplyScalar(o*.5),bA.copy(e).add(ec).toArray()}var Kt=new xA,tc=new cn,rc=new cn,ln=new cn;function Gg(n){let r=[];for(let e=0;e<=n.index.count;e++)if(tc.fromArray(n.index.array,e*3),Kt.setFromAttributeAndIndices(n.attributes.position,tc.x,tc.y,tc.z),Kt.getNormal(rc),Kt.getMidpoint(ln),!(isNaN(ln.x)||isNaN(ln.y)||isNaN(ln.z))){let{a:t,b:o,c:i}=Kt,s=t.toArray(),a=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=ki(s,a),f=ki(a,c),m=ki(c,s),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],b=Kt.getMidpoint(ln).toArray();y===u&&!g&&(x=[f,m,m],b=p),y===l&&!g&&(x=[p,m,m],b=f),y===d&&!g&&(x=[p,f,f],b=m),g&&(x=[p,f,m]),r.push({vertices:[s,a,c],faceCenters:x,midpoint:b,norm:Kt.getNormal(rc).toArray()})}return r}function Vg(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Kt.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Kt.getNormal(rc),Kt.getMidpoint(ln);let o=Kt.a.toArray(),i=Kt.b.toArray(),s=Kt.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ki(o,i),ki(i,s),ki(s,o)],midpoint:ln.toArray(),norm:rc.toArray()})}return r}var _A=4,PA=.5,Nu=n=>.5*(1-Math.cos(n*Math.PI)),Iu=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),a=r-o,c=e-i,u=t-s,l,d,p=0,f=.5,m,h,y;for(let g=0;g<_A;g++){let x=o+(i<<4)+(s<<8);l=Nu(a),d=Nu(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Nu(u)*(h-m),p+=m*f,f*=PA,o<<=1,a*=2,i<<=1,c*=2,s<<=1,u*=2,a>=1&&(o++,a--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,a;return{setSeed(c){a=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return a=(1664525*a+1013904223)%4294967296,a/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},zg=Iu;import{Vector3 as TA,Matrix4 as OA,Ray as AA}from"three";var jg=new TA,Fg=new OA,kg=new AA;function Ug(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Ui=class extends Xe{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)&&(Fg.copy(o).invert(),kg.copy(e.ray).applyMatrix4(Fg),kg.intersectBox(this.singleBBox,jg))){let i=jg.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Tt=1e-4,Rr,$g,Yg,Xg,Wg=new Ht,qg=new Ht;hi.then(n=>{Rr=n,$g=[Rr.get_face_center,Rr.get_edge_midpoint,Rr.get_vertex_position],Yg=[Rr.get_face_normal,Rr.get_edge_normal,Rr.get_vertex_normal],Xg=[Rr.face_count,Rr.edge_count,Rr.vertex_count]});var NA=new un,IA=new un,Io=new Ht,dn=new Ht,$s=new Ht,Eu=new Ht,MA=new Ht,EA=new Ht;var oo=new zg,Wi=class extends Qn(CA){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 Zr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Zr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,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 a=new Zr(this.object);a.expand(),this.add(a)}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 Zr(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*Hg.DEG2RAD,i=t.end*Hg.DEG2RAD,s=o-i,a=new Mu(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Ht(0,0,1);break;case"y":c=new Ht(0,1,0);break;default:case"x":c=new Ht(1,0,0);break}let u=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";oo.noiseSeed(u.seed);let d=hl((0,Hi.default)(u.seed)),p=qs(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?oo.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,he(y,u.scale[0]))||Tt,m.scale.y=t.scale[1]+p(g,he(y,u.scale[1]))||Tt,m.scale.z=t.scale[2]+p(g,he(y,u.scale[2]))||Tt,m.position.setScalar(0);let x=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,he(y,u.position[0])),m.position.y+=t.position[1]+p(g,he(y,u.position[1])),m.position.z+=t.position[2]+p(g,he(y,u.position[2]));let b=p(g,he(y,u.rotation[0])),w=p(g,he(y,u.rotation[1])),S=p(g,he(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=a.x+b,m.rotation.y+=a.y+w,m.rotation.z+=a.z+S):m.rotation.set(a.x+b,a.y+w,a.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Mu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";oo.noiseSeed(i.seed);let a=hl((0,Hi.default)(i.seed)),c=qs(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?oo.noise(d):a(d,d),f=u+1,m=c(f,he(p,i.rotation[0])),h=c(f,he(p,i.rotation[1])),y=c(f,he(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,he(p,i.scale[0]))||Tt,l.scale.y=1+(t.scale[1]-1)*u+c(f,he(p,i.scale[1]))||Tt,l.scale.z=1+(t.scale[2]-1)*u+c(f,he(p,i.scale[2]))||Tt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,he(p,i.position[0])),l.position.y=t.position[1]*u+c(f,he(p,i.position[1])),l.position.z=t.position[2]*u+c(f,he(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,s=qs(i.strength,this.parameters.randomness),a=i.noiseType==="perlin";oo.noiseSeed(i.seed);let c=wh((0,Hi.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},l=new Ht(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=a?oo.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,he(h,i.scale[0]))||Tt,y.scale.y=1+s(t,he(h,i.scale[1]))||Tt,y.scale.z=1+s(t,he(h,i.scale[2]))||Tt;let g=s(t,he(h,i.rotation[0])),x=s(t,he(h,i.rotation[1])),b=s(t,he(h,i.rotation[2]));y.rotation.set(g,x,b),y.position.x=o.size[0]*d-l.x+s(t,he(h,i.position[0])),y.position.y=o.size[1]*p-l.y+s(t,he(h,i.position[1])),y.position.z=o.size[2]*f-l.z+s(t,he(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=a?oo.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,he(f,i.scale[0]))||Tt,m.scale.y=1+s(t,he(f,i.scale[1]))||Tt,m.scale.z=1+s(t,he(f,i.scale[2]))||Tt;let h=s(t,he(f,i.rotation[0])),y=s(t,he(f,i.rotation[1])),g=s(t,he(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,he(f,i.position[0])),m.position.y=-o.size[1]*l+s(t,he(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,he(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Mu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";oo.noiseSeed(i.seed);let a=hl((0,Hi.default)(i.seed)),c=qs(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 Ui)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),l=[],d=g=>{let x=g.length,b=g.map(P=>P[0]).reduce((P,_)=>P+_,0),w=g.map(P=>P[1]).reduce((P,_)=>P+_,0),S=g.map(P=>P[2]).reduce((P,_)=>P+_,0);return[b/x,w/x,S/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(b=>b.norm))}):l.push(g)});let f=Rg(l);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new yl(this.objectForSample).build(),h=Dg[t.axis],y=this.children;m.setRandomGenerator((0,Hi.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?oo.noise(b):a(b,b),S=g+1,P=c(S,he(w,i.rotation[0])),_=c(S,he(w,i.rotation[1])),v=c(S,he(w,i.rotation[2]));t.spreadType==="random"?m.sample($s,Eu):(f.length&&($s.fromArray(f[g].pos),Eu.fromArray(f[g].norm)),this.objectForSample instanceof an&&$s.applyMatrix4(NA.copy(this.objectForSample.matrixWorld).invert())),$s.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy($s),Io.fromArray(h);let N=t.align==="normal"?Eu:this.object.getWorldDirection(EA),T=dn.fromArray(t.position);dn.x+=dn.x+c(S,he(w,i.position[0])),dn.y+=dn.y+c(S,he(w,i.position[1])),dn.z+=dn.z+c(S,he(w,i.position[2]));let C=Math.acos(N.dot(Io)),O=MA.crossVectors(Io,N).normalize(),A=IA.makeRotationAxis(O,C),R=N.clone().cross(this.object.up).normalize(),U=R.clone().cross(N).normalize(),$=new un().makeBasis(R,N,U),ee=new Ht(Io.y,Io.z,Io.x).normalize(),Y=ee.clone().cross(Io).normalize(),q=new un().makeBasis(ee,Io,Y).invert(),H=new un().multiplyMatrices($,q);x.rotation.setFromRotationMatrix(H),T.applyMatrix4(A),x.position.add(T),x.rotation.x=x.rotation.x+o.x+P,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(S,he(w,i.scale[0]))||Tt,x.scale.y=x.scale.y+t.scale[1]+c(S,he(w,i.scale[1]))||Tt,x.scale.z=x.scale.z+t.scale[2]+c(S,he(w,i.scale[2]))||Tt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof an){let t=this.objectForSample,o=Bg[e],i=Xg[o],s=$g[o],a=Yg[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=s(t.subdivPointerNew,l),p=a(t.subdivPointerNew,l);Wg.fromArray(d).applyMatrix4(t.matrixWorld),qg.fromArray(p),c.push({pos:Wg.toArray(),norm:qg.toArray()})}return c}else return(this.objectForSample.geometry.index?Gg(this.objectForSample.geometry):Vg(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=qr(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof pt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new un,this.hiddenMatrix=new un,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as DC,Vector3 as BC,Matrix4 as RC,Box3 as GC,MeshBasicMaterial as VC,Skeleton as zC}from"three";import{Camera as HA,OrthographicCamera as WA,PerspectiveCamera as qA,Vector3 as mr,Object3D as Jg,Quaternion as $A,Matrix4 as YA}from"three";import{Camera as VA,LineSegments as zA,BufferGeometry as jA,LineBasicMaterial as FA,Color as Du,Vector3 as kA,Float32BufferAttribute as Zg}from"three";import{BoxGeometry as LA}from"three";var Gr=n=>{var r;return r=class extends n{},r.geometryHelper=new LA(30,30,30),r};import{Ray as DA,Sphere as BA,Matrix4 as RA,Vector3 as no}from"three";var oc=new DA,Lu=new BA,Kg=new RA,Vr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Lu.copy(i.boundingSphere),Lu.applyMatrix4(s),e.ray.intersectsSphere(Lu)===!1||(Kg.copy(s).invert(),oc.copy(e.ray).applyMatrix4(Kg),i.boundingBox!==null&&oc.intersectsBox(i.boundingBox)===!1))return;let a,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),a=y(n,e,oc,p,c,u,l),a){a.faceIndex=Math.floor(m/3),t.push(a);return}}else{let x=i.attributes.position,b=new no,w=new no,S=new no,P=new no,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=N*N,C=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),oc.distanceSqToSegment(b,w,P,S)>T)continue;P.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(P);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,b,w,S,P,_){let v=new no,N=new no,T=new no,C=new no,O=new no;if(v.fromBufferAttribute(w,S),N.fromBufferAttribute(w,P),T.fromBufferAttribute(w,_),b.intersectTriangle(v,N,T,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=x.ray.origin.distanceTo(O);return R<x.near||R>x.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var nc=new kA,Zt=new VA,Bu=class extends zA{constructor(e){let t=new jA,o=new FA({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new Du(15711266),u=new Du(15711266),l=new Du(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}t.setAttribute("position",new Zg(i,3)),t.setAttribute("color",new Zg(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=a,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,a=o?.8:1e-4;fr("n1",t,e,Zt,-i,-s,a),fr("n2",t,e,Zt,i,-s,a),fr("n3",t,e,Zt,-i,s,a),fr("n4",t,e,Zt,i,s,a);let c=a;fr("f1",t,e,Zt,-i,-s,c),fr("f2",t,e,Zt,i,-s,c),fr("f3",t,e,Zt,-i,s,c),fr("f4",t,e,Zt,i,s,c);let u=c,l=.5;fr("u1",t,e,Zt,i*.7*l,s*1.1,u),fr("u2",t,e,Zt,-i*.7*l,s*1.1,u),fr("u3",t,e,Zt,0,s*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function fr(n,r,e,t,o,i,s){nc.set(o,i,s).unproject(t);let a=r[n];if(a!==void 0){let c=e.getAttribute("position");for(let u=0,l=a.length;u<l;u++)c.setXYZ(a[u],nc.x,nc.y,nc.z)}}var ic=class extends Gr(Bu){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){Vr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as Qg,BoxGeometry as UA}from"three";var sc;(r=>r.is=e=>"objectHelper"in e)(sc||(sc={}));var zr=(n,r)=>class extends ti(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 Qg&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof UA?(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 Qg&&(i.visible=!1)}}};var ac=790,qi=new mr,Ru=new mr,Gu=new $A,Vu=new mr,Ys=new mr,zu=new mr,Mo=class extends zr(HA,ic){constructor(e="",t={...ko.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=vo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new YA,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new WA(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new qA(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 mr(e,t,o)),super.lookAt(e),this.getWorldPosition(qi),this.targetOffset=qi.distanceTo(e)}getTarget(e=new mr){return this.getWorldDirection(Ru),this.getWorldPosition(qi),Ru.multiplyScalar(this.targetOffset),e.copy(qi).add(Ru),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(qi),qi.distanceTo(e)}updateUp(){this.getWorldQuaternion(Gu),Vu.set(0,0,1).applyQuaternion(Gu),Ys.copy(Jg.DEFAULT_UP),this.isUpVectorFlipped&&Ys.negate(),Ys.applyQuaternion(Gu),zu.copy(Jg.DEFAULT_UP).projectOnPlane(Vu),this.angleOffsetFromUp=zu.angleTo(Ys),this.angleOffsetFromUp*=zu.cross(Ys).dot(Vu)>=0?1:-1}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 mr),i=e.getWorldDirection(new mr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new mr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new mr,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-ac*.5*i,this.right=ac*.5*i,this.top=ac*.5*(1/s),this.bottom=-ac*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,a):this.orthoCamera.setViewOffset(e,t,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Dn(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 e0,Matrix4 as t0,Float32BufferAttribute as XA}from"three";var $i=new t0,KA=new t0;var Qt=class extends Bt{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new e0;this.onAfterRender=(e,t,o,i,s,a)=>{super.onAfterRender(e,t,o,i,s,a),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof Qt&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof pt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if($i.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=ar.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;ar.transformMeshSet(s.booleanMeshSetAddress,$i),s.booleanMatrixInvOld.copy($i).invert(),s.booleanWasTransformed=!1}else s instanceof Qt&&s.needsTransformForDownstream===!0?(ar.transformMeshSet(s.booleanMeshSetAddress,$i),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(ar.transformMeshSet(s.booleanMeshSetAddress,KA.multiplyMatrices($i,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy($i).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new XA([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return ar.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new e0,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=ar.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,ji(this),Fi(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as ZA}from"three";var r0;(r=>{function n(e){return Se.is(e)&&e instanceof ZA}r.is=n})(r0||(r0={}));var Yi=(n,r)=>class extends zr(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 Eo=n=>n instanceof pt,Xs=n=>n!==null&&n instanceof Qt;var Ks=n=>sc.is(n);import{Group as JA}from"three";import{AxesHelper as QA}from"three";var jr=class extends Gr(QA){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){Vr(this.object,jr.geometryHelper,e,t)}update(){}};var Zs=class extends zr(JA,jr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{Color as fC,Fog as mC,HemisphereLight as hC}from"three";import{ShaderChunk as Qs}from"three";var eC=n=>`
2212
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,a=Math.abs(this.ascender-this.descender)*o,c=r-a,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 a=new Ql,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let l=a.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":a.moveTo(u.x,-u.y);break;case"L":a.lineTo(u.x,-u.y);break;case"Q":a.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":a.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return a.subPaths.forEach(u=>{let l=uA(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:a}}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 a=t.width,c=this.getTextWidth(i,t);return(a-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function uA(n){if(n.length){let r=n[0];if(r instanceof lA)return r.v1;if(r instanceof aA||r instanceof cA)return r.v0}}var Pu=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()}},Us=class extends Pu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=$o(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Tg={markNeedsUpdateRendererDirty:()=>{}};var Tu=class extends Yl{constructor(e){super();this.shared=e}create(e){return new Gi(e,this.shared)}},nn=class{constructor(r,e={}){this.geometryCache=new Us(!0);this.geometryCache2=new Us(!1);this.imageHolderCache=new Tu(this);this.thisContext={scene:Tg,shared:this};this.deletedMaterial=new tn(It.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new Yt(Yn.emptyImage,this);this.deletedVideo=new Yt(kn.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};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 tn(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)}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):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):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new en(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new Yt(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 Yt(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Co(e.r,e.g,e.b,e.a):this.colors[r]=new Co(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Je(0,0,0,0))}else return"a"in r?new Je(r.r,r.g,r.b,r.a):new Je(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 rn)return e;{let t=new rn({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof rn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new ec(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 rn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Og=new nn(dl.emptyData());var Bt=class extends pt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Tm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let a=o.shared.material(s);this.material[Number(i)]=a}else if(yt(e.path,["material"])&&this.material instanceof Dt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(dt.drop(e,1),t.material,o);else if(yt(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(dt.drop(e,2),s,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&aa(this.material).forEach(e=>{e instanceof Dt&&(e instanceof tn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as pA,Matrix4 as Ou,Vector3 as Mg,Vector4 as Au}from"three";var Ag=new Mg,Cg=new Au,Ng=new Au,fA=new Mg,Ig=new Ou,Xe=class extends Bt{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new Ou().fromArray(t.bindMatrix),this.bindMatrixInverse=new Ou)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof pA&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof nn){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 ds.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return ds.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),yt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(dt.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=$o(l,t,this.data.flatShading)}let s,a,c;i.scaleBaked?[s,a,c]=i.scaleBaked:{width:s,height:a,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Ns(this.localGeometry.attributes,s/u.sxPrev,a/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=a,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=$o(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&&rs(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof We&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new Au,o=this.geometry.attributes.skinWeight;for(let i=0,s=o.count;i<s;i++){t.fromBufferAttribute(o,i);let a=1/t.manhattanLength();a!==1/0?t.multiplyScalar(a):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Cg.fromBufferAttribute(i.attributes.skinIndex,e),Ng.fromBufferAttribute(i.attributes.skinWeight,e),Ag.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){let a=Ng.getComponent(s);if(a!==0){let c=Cg.getComponent(s);Ig.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(fA.copy(Ag).applyMatrix4(Ig),a)}}return t.applyMatrix4(this.bindMatrixInverse)}};function hA(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 a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new Nu(o[s],o[s+1],o[s+2]);r.has(a)?r.get(a)?.normals.push(c):r.set(a,{normals:[c],result:new Nu})}r.forEach((s,a)=>{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 a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(a)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new Eg(i,3))}function yA(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 Nu;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 Eg(t,3))}function zi(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Dt)||n.material.getLayersOfType("outline").length===0)return;n instanceof Xe&&n.is2DAndNoDepth?yA(n):hA(n)}function ji(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=[Cu.seededRandom(o),Cu.seededRandom(o+1e4),Cu.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new mA(t,3))}var bA;mi.then(n=>{bA=n});var Br=new gA,Hs=new vA;function Dg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var sn=class extends Xe{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new xA;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}=We.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,zi(this),ji(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){We.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&We.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=We.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=We.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,pt.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 Lg,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Br.setFromBufferAttribute(t),Br.getCenter(o),e.boundingSphere.radius=o.distanceTo(Br.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Br.getSize(Hs),this.hasNonUniformScale&&Hs.divide(this.scale);let i={width:Hs.x,height:Hs.y,depth:Hs.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Br.min.set(e[0],e[2],e[4]),Br.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Br.min.applyMatrix4(this.shearScaleInv),Br.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Lg);let o=t.boundingSphere.center;Br.getCenter(o),t.boundingSphere.radius=o.distanceTo(Br.max)}freeSubdivPointer(){this.subdivPointer&&(We.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 SA,Vector3 as ln}from"three";var Bg=-1,wA=1,Rg={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Gg={polygon_center:0,edge:1,vertex:2},Ws=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,he=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Bg)*(e-t)/(wA-Bg)+t};function Vg(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 _A=new ln,tc=new ln,PA=new ln,TA=new ln;function Fi(n,r){let e=PA.fromArray(n),t=TA.fromArray(r);tc.copy(t).sub(e);let o=tc.length();return tc.normalize().multiplyScalar(o*.5),_A.copy(e).add(tc).toArray()}var Kt=new SA,rc=new ln,oc=new ln,an=new ln;function zg(n){let r=[];for(let e=0;e<=n.index.count;e++)if(rc.fromArray(n.index.array,e*3),Kt.setFromAttributeAndIndices(n.attributes.position,rc.x,rc.y,rc.z),Kt.getNormal(oc),Kt.getMidpoint(an),!(isNaN(an.x)||isNaN(an.y)||isNaN(an.z))){let{a:t,b:o,c:i}=Kt,s=t.toArray(),a=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=Fi(s,a),f=Fi(a,c),m=Fi(c,s),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],b=Kt.getMidpoint(an).toArray();y===u&&!g&&(x=[f,m,m],b=p),y===l&&!g&&(x=[p,m,m],b=f),y===d&&!g&&(x=[p,f,f],b=m),g&&(x=[p,f,m]),r.push({vertices:[s,a,c],faceCenters:x,midpoint:b,norm:Kt.getNormal(oc).toArray()})}return r}function jg(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Kt.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Kt.getNormal(oc),Kt.getMidpoint(an);let o=Kt.a.toArray(),i=Kt.b.toArray(),s=Kt.c.toArray();r.push({vertices:[o,i,s],faceCenters:[Fi(o,i),Fi(i,s),Fi(s,o)],midpoint:an.toArray(),norm:oc.toArray()})}return r}var OA=4,AA=.5,Iu=n=>.5*(1-Math.cos(n*Math.PI)),Mu=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),a=r-o,c=e-i,u=t-s,l,d,p=0,f=.5,m,h,y;for(let g=0;g<OA;g++){let x=o+(i<<4)+(s<<8);l=Iu(a),d=Iu(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Iu(u)*(h-m),p+=m*f,f*=AA,o<<=1,a*=2,i<<=1,c*=2,s<<=1,u*=2,a>=1&&(o++,a--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,a;return{setSeed(c){a=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return a=(1664525*a+1013904223)%4294967296,a/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Fg=Mu;import{Vector3 as CA,Matrix4 as NA,Ray as IA}from"three";var kg=new CA,Ug=new NA,Hg=new IA;function Wg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var ki=class extends Xe{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)&&(Ug.copy(o).invert(),Hg.copy(e.ray).applyMatrix4(Ug),Hg.intersectBox(this.singleBBox,kg))){let i=kg.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Tt=1e-4,Rr,Xg,Kg,Zg,$g=new Ht,Yg=new Ht;mi.then(n=>{Rr=n,Xg=[Rr.get_face_center,Rr.get_edge_midpoint,Rr.get_vertex_position],Kg=[Rr.get_face_normal,Rr.get_edge_normal,Rr.get_vertex_normal],Zg=[Rr.face_count,Rr.edge_count,Rr.vertex_count]});var EA=new dn,LA=new dn,No=new Ht,cn=new Ht,qs=new Ht,Lu=new Ht,DA=new Ht,BA=new Ht;var ro=new Fg,Hi=class extends Kn(MA){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 Zr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Zr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,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 a=new Zr(this.object);a.expand(),this.add(a)}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 Zr(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*qg.DEG2RAD,i=t.end*qg.DEG2RAD,s=o-i,a=new Eu(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Ht(0,0,1);break;case"y":c=new Ht(0,1,0);break;default:case"x":c=new Ht(1,0,0);break}let u=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";ro.noiseSeed(u.seed);let d=ml((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=l?ro.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,he(y,u.scale[0]))||Tt,m.scale.y=t.scale[1]+p(g,he(y,u.scale[1]))||Tt,m.scale.z=t.scale[2]+p(g,he(y,u.scale[2]))||Tt,m.position.setScalar(0);let x=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,he(y,u.position[0])),m.position.y+=t.position[1]+p(g,he(y,u.position[1])),m.position.z+=t.position[2]+p(g,he(y,u.position[2]));let b=p(g,he(y,u.rotation[0])),w=p(g,he(y,u.rotation[1])),S=p(g,he(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=a.x+b,m.rotation.y+=a.y+w,m.rotation.z+=a.z+S):m.rotation.set(a.x+b,a.y+w,a.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Eu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";ro.noiseSeed(i.seed);let a=ml((0,Ui.default)(i.seed)),c=Ws(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?ro.noise(d):a(d,d),f=u+1,m=c(f,he(p,i.rotation[0])),h=c(f,he(p,i.rotation[1])),y=c(f,he(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,he(p,i.scale[0]))||Tt,l.scale.y=1+(t.scale[1]-1)*u+c(f,he(p,i.scale[1]))||Tt,l.scale.z=1+(t.scale[2]-1)*u+c(f,he(p,i.scale[2]))||Tt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,he(p,i.position[0])),l.position.y=t.position[1]*u+c(f,he(p,i.position[1])),l.position.z=t.position[2]*u+c(f,he(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,s=Ws(i.strength,this.parameters.randomness),a=i.noiseType==="perlin";ro.noiseSeed(i.seed);let c=_h((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},l=new Ht(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=a?ro.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,he(h,i.scale[0]))||Tt,y.scale.y=1+s(t,he(h,i.scale[1]))||Tt,y.scale.z=1+s(t,he(h,i.scale[2]))||Tt;let g=s(t,he(h,i.rotation[0])),x=s(t,he(h,i.rotation[1])),b=s(t,he(h,i.rotation[2]));y.rotation.set(g,x,b),y.position.x=o.size[0]*d-l.x+s(t,he(h,i.position[0])),y.position.y=o.size[1]*p-l.y+s(t,he(h,i.position[1])),y.position.z=o.size[2]*f-l.z+s(t,he(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=a?ro.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,he(f,i.scale[0]))||Tt,m.scale.y=1+s(t,he(f,i.scale[1]))||Tt,m.scale.z=1+s(t,he(f,i.scale[2]))||Tt;let h=s(t,he(f,i.rotation[0])),y=s(t,he(f,i.rotation[1])),g=s(t,he(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,he(f,i.position[0])),m.position.y=-o.size[1]*l+s(t,he(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,he(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Eu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??_r.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";ro.noiseSeed(i.seed);let a=ml((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 ki)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),l=[],d=g=>{let x=g.length,b=g.map(P=>P[0]).reduce((P,_)=>P+_,0),w=g.map(P=>P[1]).reduce((P,_)=>P+_,0),S=g.map(P=>P[2]).reduce((P,_)=>P+_,0);return[b/x,w/x,S/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(b=>b.norm))}):l.push(g)});let f=Vg(l);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new hl(this.objectForSample).build(),h=Rg[t.axis],y=this.children;m.setRandomGenerator((0,Ui.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?ro.noise(b):a(b,b),S=g+1,P=c(S,he(w,i.rotation[0])),_=c(S,he(w,i.rotation[1])),v=c(S,he(w,i.rotation[2]));t.spreadType==="random"?m.sample(qs,Lu):(f.length&&(qs.fromArray(f[g].pos),Lu.fromArray(f[g].norm)),this.objectForSample instanceof sn&&qs.applyMatrix4(EA.copy(this.objectForSample.matrixWorld).invert())),qs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(qs),No.fromArray(h);let N=t.align==="normal"?Lu:this.object.getWorldDirection(BA),T=cn.fromArray(t.position);cn.x+=cn.x+c(S,he(w,i.position[0])),cn.y+=cn.y+c(S,he(w,i.position[1])),cn.z+=cn.z+c(S,he(w,i.position[2]));let C=Math.acos(N.dot(No)),O=DA.crossVectors(No,N).normalize(),A=LA.makeRotationAxis(O,C),R=N.clone().cross(this.object.up).normalize(),U=R.clone().cross(N).normalize(),$=new dn().makeBasis(R,N,U),ee=new Ht(No.y,No.z,No.x).normalize(),Y=ee.clone().cross(No).normalize(),q=new dn().makeBasis(ee,No,Y).invert(),H=new dn().multiplyMatrices($,q);x.rotation.setFromRotationMatrix(H),T.applyMatrix4(A),x.position.add(T),x.rotation.x=x.rotation.x+o.x+P,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(S,he(w,i.scale[0]))||Tt,x.scale.y=x.scale.y+t.scale[1]+c(S,he(w,i.scale[1]))||Tt,x.scale.z=x.scale.z+t.scale[2]+c(S,he(w,i.scale[2]))||Tt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof sn){let t=this.objectForSample,o=Gg[e],i=Zg[o],s=Xg[o],a=Kg[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=s(t.subdivPointerNew,l),p=a(t.subdivPointerNew,l);$g.fromArray(d).applyMatrix4(t.matrixWorld),Yg.fromArray(p),c.push({pos:$g.toArray(),norm:Yg.toArray()})}return c}else return(this.objectForSample.geometry.index?zg(this.objectForSample.geometry):jg(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=qr(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof pt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new dn,this.hiddenMatrix=new dn,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{Scene as GC,Vector3 as VC,Matrix4 as zC,Box3 as jC,MeshBasicMaterial as FC,Skeleton as kC}from"three";import{Camera as $A,OrthographicCamera as YA,PerspectiveCamera as XA,Vector3 as mr,Object3D as t0,Quaternion as KA,Matrix4 as ZA}from"three";import{Camera as FA,LineSegments as kA,BufferGeometry as UA,LineBasicMaterial as HA,Color as Bu,Vector3 as WA,Float32BufferAttribute as Jg}from"three";import{BoxGeometry as RA}from"three";var Gr=n=>{var r;return r=class extends n{},r.geometryHelper=new RA(30,30,30),r};import{Ray as GA,Sphere as VA,Matrix4 as zA,Vector3 as oo}from"three";var nc=new GA,Du=new VA,Qg=new zA,Vr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Du.copy(i.boundingSphere),Du.applyMatrix4(s),e.ray.intersectsSphere(Du)===!1||(Qg.copy(s).invert(),nc.copy(e.ray).applyMatrix4(Qg),i.boundingBox!==null&&nc.intersectsBox(i.boundingBox)===!1))return;let a,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),a=y(n,e,nc,p,c,u,l),a){a.faceIndex=Math.floor(m/3),t.push(a);return}}else{let x=i.attributes.position,b=new oo,w=new oo,S=new oo,P=new oo,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=N*N,C=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),nc.distanceSqToSegment(b,w,P,S)>T)continue;P.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(P);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,b,w,S,P,_){let v=new oo,N=new oo,T=new oo,C=new oo,O=new oo;if(v.fromBufferAttribute(w,S),N.fromBufferAttribute(w,P),T.fromBufferAttribute(w,_),b.intersectTriangle(v,N,T,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=x.ray.origin.distanceTo(O);return R<x.near||R>x.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var ic=new WA,Zt=new FA,Ru=class extends kA{constructor(e){let t=new UA,o=new HA({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new Bu(15711266),u=new Bu(15711266),l=new Bu(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}t.setAttribute("position",new Jg(i,3)),t.setAttribute("color",new Jg(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=a,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,a=o?.8:1e-4;fr("n1",t,e,Zt,-i,-s,a),fr("n2",t,e,Zt,i,-s,a),fr("n3",t,e,Zt,-i,s,a),fr("n4",t,e,Zt,i,s,a);let c=a;fr("f1",t,e,Zt,-i,-s,c),fr("f2",t,e,Zt,i,-s,c),fr("f3",t,e,Zt,-i,s,c),fr("f4",t,e,Zt,i,s,c);let u=c,l=.5;fr("u1",t,e,Zt,i*.7*l,s*1.1,u),fr("u2",t,e,Zt,-i*.7*l,s*1.1,u),fr("u3",t,e,Zt,0,s*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function fr(n,r,e,t,o,i,s){ic.set(o,i,s).unproject(t);let a=r[n];if(a!==void 0){let c=e.getAttribute("position");for(let u=0,l=a.length;u<l;u++)c.setXYZ(a[u],ic.x,ic.y,ic.z)}}var sc=class extends Gr(Ru){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){Vr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as e0,BoxGeometry as qA}from"three";var ac;(r=>r.is=e=>"objectHelper"in e)(ac||(ac={}));var zr=(n,r)=>class extends Jn(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof e0&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof qA?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof e0&&(i.visible=!1)}}};var lc=790,Wi=new mr,Gu=new mr,Vu=new KA,zu=new mr,$s=new mr,ju=new mr,Io=class extends zr($A,sc){constructor(e="",t={...Fo.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=xo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new ZA,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new YA(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new XA(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 mr(e,t,o)),super.lookAt(e),this.getWorldPosition(Wi),this.targetOffset=Wi.distanceTo(e)}getTarget(e=new mr){return this.getWorldDirection(Gu),this.getWorldPosition(Wi),Gu.multiplyScalar(this.targetOffset),e.copy(Wi).add(Gu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Wi),Wi.distanceTo(e)}updateUp(){this.getWorldQuaternion(Vu),zu.set(0,0,1).applyQuaternion(Vu),$s.copy(t0.DEFAULT_UP),this.isUpVectorFlipped&&$s.negate(),$s.applyQuaternion(Vu),ju.copy(t0.DEFAULT_UP).projectOnPlane(zu),this.angleOffsetFromUp=ju.angleTo($s),this.angleOffsetFromUp*=ju.cross($s).dot(zu)>=0?1:-1}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 mr),i=e.getWorldDirection(new mr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new mr).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new mr,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-lc*.5*i,this.right=lc*.5*i,this.top=lc*.5*(1/s),this.bottom=-lc*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,a):this.orthoCamera.setViewOffset(e,t,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ln(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 r0,Matrix4 as o0,Float32BufferAttribute as QA}from"three";var qi=new o0,JA=new o0;var Qt=class extends Bt{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new r0;this.onAfterRender=(e,t,o,i,s,a)=>{super.onAfterRender(e,t,o,i,s,a),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof Qt&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof pt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(qi.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=ar.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;ar.transformMeshSet(s.booleanMeshSetAddress,qi),s.booleanMatrixInvOld.copy(qi).invert(),s.booleanWasTransformed=!1}else s instanceof Qt&&s.needsTransformForDownstream===!0?(ar.transformMeshSet(s.booleanMeshSetAddress,qi),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(ar.transformMeshSet(s.booleanMeshSetAddress,JA.multiplyMatrices(qi,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(qi).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new QA([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return ar.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new r0,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=ar.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,zi(this),ji(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as eC}from"three";var n0;(r=>{function n(e){return Se.is(e)&&e instanceof eC}r.is=n})(n0||(n0={}));var $i=(n,r)=>class extends zr(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 Mo=n=>n instanceof pt,Ys=n=>n!==null&&n instanceof Qt;var Xs=n=>ac.is(n);import{Group as rC}from"three";import{AxesHelper as tC}from"three";var jr=class extends Gr(tC){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){Vr(this.object,jr.geometryHelper,e,t)}update(){}};var Ks=class extends zr(rC,jr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{Color as yC,Fog as gC,HemisphereLight as xC}from"three";import{ShaderChunk as Zs}from"three";var oC=n=>`
2213
2213
 
2214
2214
  // PCSS implementation based on:
2215
2215
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2583,4 +2583,4 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2583
2583
  }
2584
2584
 
2585
2585
  #endif
2586
- `,tC=Qs.lights_fragment_begin,rC=Qs.shadowmask_pars_fragment,o0=null,oC=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},n0=(n="medium")=>{if(o0===n)return!1;o0=n;let r=oC(n);Qs.shadowmap_pars_fragment=eC(r);let e=tC.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Qs.lights_fragment_begin=e;let t=rC.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Qs.shadowmask_pars_fragment=t,!0};import{DirectionalLight as lC,CameraHelper as i0}from"three";import{DirectionalLightHelper as nC}from"three";var Xi=class extends Gr(nC){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Vr(this.object,Xi.geometryHelper,e,t)}};import{PointLightHelper as iC}from"three";var Ki=class extends Gr(iC){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Vr(this.object,Ki.geometryHelper,e,t)}};import{SpotLightHelper as sC,Vector3 as aC}from"three";var lc=class extends Gr(sC){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Vr(this.object,lc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=lc._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,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Js=lc;Js._vector=new aC;function cC(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 Zi=class extends Yi(lC,Xi){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 i0(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 i0&&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&&cC(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};import{Scene as yC}from"three";import{SpotLight as dC,CameraHelper as s0,MathUtils as uC,Vector3 as d0,Quaternion as pC}from"three";var a0=new d0,l0=new d0,c0=new pC,Qi=class extends Yi(dC,Js){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=uC.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new s0(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 s0&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),l0.setFromMatrixPosition(this.matrixWorld),c0.setFromRotationMatrix(this.matrixWorld),a0.copy(this.up).applyQuaternion(c0).negate().multiplyScalar(this.distance),this.target.position.copy(l0).add(a0),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Lo=class extends ti(yC){constructor(e,t){super();this.data=t;this.bgColor=new Je(1,1,1,1);this.fog=null;this.backupFog=new mC(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new fC;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Mo(go,{...ko.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new hC(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=ht(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Bt)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&n0(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=ht(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=ht(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let s=t;yt(e.path,["fog"])?this.updateFog(s.fog,o.shared):yt(e.path,["ao"])?this.updateAo(s.ao,o.shared):yt(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):yt(e.path,["shadow"])&&this.updateShadow(s.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(ht(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Zi&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Qi&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Se.is(s)&&(s.visible||a?.object.data.visible)&&((Eo(s)||Ks(s)&&this.scene.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ta(s,e,t,!0)),o(s))}};return o(this),t}};import{PointLight as gC,Vector3 as cc,Box3 as xC,Box3Helper as u0,Color as vC}from"three";var dc=class extends Yi(gC,Ki){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 cc(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),a=new cc(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new xC(s,a),u=new u0(c,new vC(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 u0){let t=this.shadow.camera,o=new cc(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new cc(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var uc=class extends Xe{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Ls(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Ji=class extends Xe{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,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=Rl;break;case"Ellipse":i=di;break;case"Polygon":i=Bl;break;case"Star":i=Gl;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Ls(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 bC,Matrix4 as SC,Skeleton as wC}from"three";var io=class extends zr(bC,jr){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 a of Xr.rootOverrideProps)e[a]===void 0?(i===void 0&&(i={...e}),i[a]=o.data[a]):(s===void 0&&(s={}),s[a]=e[a],i===void 0&&(i={...e}),i[a]=xr.apply(o.data[a],e[a]));return this.overrideData=s,i}else return{...gt.defaultData,...e}}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let a of Xr.rootOverrideProps)a in e.props&&e.props[a]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[a]=this.component.data[a]);else if(e.type===0&&e.path.length>0&&Xr.rootOverrideProps.includes(e.path[0])){let a=e.path[0];s===void 0&&(s={...e,path:[],props:{[a]:t[a]}})}}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){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let s=0;for(let a of this.children)if(Se.is(a))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),pc(a),s+=1;else break;this.children.splice(0,s)}i=!0}if(o){let s={};f0(e,[this.uuid],t.overrides,this,o,o,0,i,s);for(let a of this.children)if(Se.is(a)){let c=a.data;c.type==="Empty"&&c.animations&&a.traverseEntity(u=>{if(u instanceof Xe&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(s[m])),p=l.boneInverses.map(m=>new SC().fromArray(m)),f=new wC(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function pc(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)Se.is(e)&&pc(e)}}function p0(n,r,e,t){return n.component===r&&os(n.identity,t)?n.overrideData===e?2:1:0}function f0(n,r,e,t,o,i,s,a,c){if(s>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof io&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Se.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=Yn.resolve(e,d,1),f=null,m;if(!a){let h=t.children[u];if(f=Se.is(h)?h:null,f!==null){let y=p0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=p0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?xr.apply(l.data,p):l.data;er.is(h.type)&&(h={...h,type:"Empty"}),f=rr.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,f0(n,r,e,f,l,i,s+1,a,c)}if(!a){let l=u;for(;;){let d=t.children[u];if(Se.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}import{Bone as _C}from"three";var fc=class extends zr(_C,jr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function PC(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Ui(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new an(n,r,e):r.geometry.type==="PathGeometry"?t=new Ji(n,r,e):r.geometry.type==="VectorGeometry"?t=new uc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Qt(n,r,e):t=new Xe(n,r,e),t)}function mc(n,r,e){return r.type==="Mesh"?PC(n,r,e):r.type==="Empty"?new Zs(n,r):r.type==="Bone"?new fc(n,r):r.type==="Page"?new Lo(n,r):r.type==="PointLight"?new dc(n,r,e):r.type==="SpotLight"?new Qi(n,r,e):r.type==="DirectionalLight"?new Zi(n,r,e):r.type==="Component"||r.type==="Instance"?new io(n,r,e):er.is(r.type)?new Mo(n,r):(console.error(r),new Zs(n,r))}rr.createEntity=mc;function TC(n,r,e){let t=mc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,a=n.component,c=n.instances,u=n.overrideData,l=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=a,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}rr.changeEntityProptotype=TC;rr.Cloner=Wi;function m0(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as CC,Ray as NC,Raycaster as IC}from"three";function h0(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,Fi(n),ji(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Bt&&n.needsAO&&n.layers.enable(5),e}function y0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function g0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Bt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)h0(e,e.material[t])&&(r=!0);else h0(e,e.material)&&(r=!0)}),r}function x0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Bt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)y0(e,e.material[t])&&(r=!0);else y0(e,e.material)&&(r=!0)}),r}var MC=new IC,EC=new CC,LC=new NC;function ta(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=EC.copy(i.matrixWorld).invert(),a=LC.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;a.applyMatrix4(c);let u=MC;u.set(a.origin,a.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var hc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let a=i.length-2;a>=0;a--)if(!e.has(i[a])){let c=r.find(i[a]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[a]}`),e.add(i[a])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var jC=new VC;jC.wireframe=!0;var v0=new BC,yc=class extends DC{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new hc;this.errorPage=new Lo("fdasfa",{...Kr.defaultData,name:""});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=x0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=g0(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Lo&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let a=i.children.indexOf(s);o.splice(0,0,a)}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)=>Wu(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===go)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}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(),Eo(i)&&Xs(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Xs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Eo(o)&&(o.freeBooleanPointer(),i instanceof Qt&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Ji&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let 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(),this.markPenumbraSizeDirty();let a=e.localIndex;s.children.splice(a,0,s.children.pop()),Eo(o)&&(o.invalidateUpstreamBooleanData(),Xs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Qt&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof Lo&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{m0(s,t,o,{scene:this,shared:i}),s instanceof Xe&&s.updateGeometryGroupsIfNeeded()}catch(a){console.error(a)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}init(e,t){this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(o=>{Xs(o)&&o.recomputeBoolean(),o instanceof Mo&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Se.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Se.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,a,c){if(e){let u=i.find(e);u&&u!==i&&s.forInstancesRec(l=>{l.data=kn(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(a);if(f){let m=[...la(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=vt.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,s,a){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof io&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let s=!1;if(t.forInstancesRec(a=>{a.data=kn(a.data,c=>{a.isInstanceRoot||(c.events.delete(i.id),s=!0)}).data}),s===!1)for(let a of pl.list)this.rewriteActions(i.data.gameActions[a],["gameActions",a],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(s=>{if(s instanceof io&&s.isInstanceRoot)return s.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||s.resetBBoxNeedsUpdate(),o&&s.traverseEntity(a=>{o.addClip(a)}),!0});for(let s of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),pc(s)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof io&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Se.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=s=>{for(let a of s.children){let c=a.cloner;if(Se.is(a)&&!a.raycastLock&&(a.visible||c?.object.data.visible))if(t===!0&&a.isInstanceRoot){let u=[];if(e.intersectObject(a,!0,u),u.length){let l=u[0];l.object=a,l.point.applyMatrix4(l.object.matrixWorld);let d=a.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else(Eo(a)||Ks(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,o),ta(a,e,o)),i(a)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Se.is(s)&&(s.visible||a?.object.data.visible)&&((Eo(s)||Ks(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ta(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Se.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Se.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Se.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Zn.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Se.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}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,a){let c={scene:this,shared:a},u=mc(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,a)),u.updateState(t,c),u instanceof Xe&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof Xe&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new RC().fromArray(h)),m=new zC(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],u=this.find(a),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new GC;return o.setFromPoints(t),o.getCenter(v0),v0}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 pt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Dt&&e(t.material[o]);else t.material instanceof Dt&&e(t.material)})}updateCanvasSize(e,t,o=!1){this.activeCamera.setViewplaneSize(e,t,o)}};import{DRACOLoader as FC}from"three/examples/jsm/loaders/DRACOLoader.js";var Do;function kC(){return Do||(Do=new FC,Do.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Do.decoderPending}async function UC(n){if(Do){let r={attributeIDs:Do.defaultAttributeIDs,attributeTypes:Do.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Do.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 b0(n,r){let[e,t]=Ic(Ka.deserialize(new Uint8Array(n)));xh(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 kC();for(let i of o){let s=await UC(Ye(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:u,itemSize:l})=>{a[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as _J}from"three";import{mergeBufferGeometries as OJ}from"three/examples/jsm/utils/BufferGeometryUtils.js";function S0(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 w0,ShaderLib as HC}from"three";function _0(n){let r=new Set;return n.traverse(e=>{if(e instanceof Bt)if(je(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(WC(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new w0,specularColor:new w0});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},HC.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=lg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else qC(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function WC(n){return n.getLayersOfType("transmission").length>0}function qC(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function P0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function T0(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(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as $C}from"three/examples/jsm/utils/BufferGeometryUtils.js";function O0(n){let r=[];return n.traverse(e=>{e instanceof Wi&&r.push(e)}),r.forEach(e=>{let t=e.object,s=[...e.children.map(a=>{a.updateMatrix();let c;if(a.geometry!==void 0)try{c=a.geometry.clone().applyMatrix4(a.matrix)}catch(u){console.error(u)}return c!==void 0&&a.matrix.determinant()<0&&S0(c),c}).filter(a=>a!==void 0)];if(!e.parameters.hideBase&&t instanceof pt&&s.unshift(t.geometry),s.length){let a=$C(s);t instanceof pt&&(t.geometry=a)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Pg})}),n}function A0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function C0(n){Object.values(n.shared.materials).forEach(r=>{Fu(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Fu(e.material):"materials"in e&&e.materials.forEach(t=>{Fu(t)})})}function Fu(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 L0=aa(I0(),1);function M0(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var E0="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",ku=class extends XC{load(r,e,t,o=console.error){let i=new YC(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(E0+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(E0),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},t,o)}async parse(r){let e=await b0(r,C0);e.version&&(0,L0.default)(e.version,"0.9.390")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Eg(e)&&Vy(),Ug(e)&&wg()].filter(Boolean));let t=new sn(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new yc(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=O0(o),o=_0(o),o=P0(o),o=T0(o),o=A0(o),o=M0(o),o}};export{ku as default};
2586
+ `,nC=Zs.lights_fragment_begin,iC=Zs.shadowmask_pars_fragment,i0=null,sC=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},s0=(n="medium")=>{if(i0===n)return!1;i0=n;let r=sC(n);Zs.shadowmap_pars_fragment=oC(r);let e=nC.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Zs.lights_fragment_begin=e;let t=iC.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Zs.shadowmask_pars_fragment=t,!0};import{DirectionalLight as uC,CameraHelper as a0}from"three";import{DirectionalLightHelper as aC}from"three";var Yi=class extends Gr(aC){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Vr(this.object,Yi.geometryHelper,e,t)}};import{PointLightHelper as lC}from"three";var Xi=class extends Gr(lC){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Vr(this.object,Xi.geometryHelper,e,t)}};import{SpotLightHelper as cC,Vector3 as dC}from"three";var cc=class extends Gr(cC){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Vr(this.object,cc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=cc._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,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Qs=cc;Qs._vector=new dC;function pC(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 Ki=class extends $i(uC,Yi){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 a0(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 a0&&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&&pC(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};import{Scene as vC}from"three";import{SpotLight as fC,CameraHelper as l0,MathUtils as mC,Vector3 as p0,Quaternion as hC}from"three";var c0=new p0,d0=new p0,u0=new hC,Zi=class extends $i(fC,Qs){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=mC.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new l0(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 l0&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),d0.setFromMatrixPosition(this.matrixWorld),u0.setFromRotationMatrix(this.matrixWorld),c0.copy(this.up).applyQuaternion(u0).negate().multiplyScalar(this.distance),this.target.position.copy(d0).add(c0),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Eo=class extends Jn(vC){constructor(e,t){super();this.data=t;this.bgColor=new Je(1,1,1,1);this.fog=null;this.backupFog=new gC(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new yC;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Io(yo,{...Fo.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new xC(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=ht(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Bt)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&s0(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=ht(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=ht(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let s=t;yt(e.path,["fog"])?this.updateFog(s.fog,o.shared):yt(e.path,["ao"])?this.updateAo(s.ao,o.shared):yt(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):yt(e.path,["shadow"])&&this.updateShadow(s.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(ht(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Ki&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Zi&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Se.is(s)&&(s.visible||a?.object.data.visible)&&((Mo(s)||Xs(s)&&this.scene.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ea(s,e,t,!0)),o(s))}};return o(this),t}};import{PointLight as bC,Vector3 as dc,Box3 as SC,Box3Helper as f0,Color as wC}from"three";var uc=class extends $i(bC,Xi){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 dc(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),a=new dc(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new SC(s,a),u=new f0(c,new wC(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 f0){let t=this.shadow.camera,o=new dc(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new dc(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var pc=class extends Xe{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Es(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Qi=class extends Xe{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,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=Bl;break;case"Ellipse":i=li;break;case"Polygon":i=Dl;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()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Es(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 _C,Matrix4 as PC,Skeleton as TC}from"three";var no=class extends zr(_C,jr){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 a of Xr.rootOverrideProps)e[a]===void 0?(i===void 0&&(i={...e}),i[a]=o.data[a]):(s===void 0&&(s={}),s[a]=e[a],i===void 0&&(i={...e}),i[a]=xr.apply(o.data[a],e[a]));return this.overrideData=s,i}else return{...gt.defaultData,...e}}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let a of Xr.rootOverrideProps)a in e.props&&e.props[a]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[a]=this.component.data[a]);else if(e.type===0&&e.path.length>0&&Xr.rootOverrideProps.includes(e.path[0])){let a=e.path[0];s===void 0&&(s={...e,path:[],props:{[a]:t[a]}})}}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){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let s=0;for(let a of this.children)if(Se.is(a))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),fc(a),s+=1;else break;this.children.splice(0,s)}i=!0}if(o){let s={};h0(e,[this.uuid],t.overrides,this,o,o,0,i,s);for(let a of this.children)if(Se.is(a)){let c=a.data;c.type==="Empty"&&c.animations&&a.traverseEntity(u=>{if(u instanceof Xe&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(s[m])),p=l.boneInverses.map(m=>new PC().fromArray(m)),f=new TC(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function fc(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)Se.is(e)&&fc(e)}}function m0(n,r,e,t){return n.component===r&&rs(n.identity,t)?n.overrideData===e?2:1:0}function h0(n,r,e,t,o,i,s,a,c){if(s>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof no&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Se.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=qn.resolve(e,d,1),f=null,m;if(!a){let h=t.children[u];if(f=Se.is(h)?h:null,f!==null){let y=m0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=m0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?xr.apply(l.data,p):l.data;er.is(h.type)&&(h={...h,type:"Empty"}),f=rr.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,h0(n,r,e,f,l,i,s+1,a,c)}if(!a){let l=u;for(;;){let d=t.children[u];if(Se.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}import{Bone as OC}from"three";var mc=class extends zr(OC,jr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function AC(n,r,e){let t;return r.geometry.type==="TextGeometry"?new ki(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new sn(n,r,e):r.geometry.type==="PathGeometry"?t=new Qi(n,r,e):r.geometry.type==="VectorGeometry"?t=new pc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Qt(n,r,e):t=new Xe(n,r,e),t)}function hc(n,r,e){return r.type==="Mesh"?AC(n,r,e):r.type==="Empty"?new Ks(n,r):r.type==="Bone"?new mc(n,r):r.type==="Page"?new Eo(n,r):r.type==="PointLight"?new uc(n,r,e):r.type==="SpotLight"?new Zi(n,r,e):r.type==="DirectionalLight"?new Ki(n,r,e):r.type==="Component"||r.type==="Instance"?new no(n,r,e):er.is(r.type)?new Io(n,r):(console.error(r),new Ks(n,r))}rr.createEntity=hc;function CC(n,r,e){let t=hc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,a=n.component,c=n.instances,u=n.overrideData,l=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=a,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}rr.changeEntityProptotype=CC;rr.Cloner=Hi;function y0(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as MC,Ray as EC,Raycaster as LC}from"three";function g0(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,ji(n),zi(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Bt&&n.needsAO&&n.layers.enable(5),e}function x0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function v0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Bt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)g0(e,e.material[t])&&(r=!0);else g0(e,e.material)&&(r=!0)}),r}function b0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Bt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)x0(e,e.material[t])&&(r=!0);else x0(e,e.material)&&(r=!0)}),r}var DC=new LC,BC=new MC,RC=new EC;function ea(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=BC.copy(i.matrixWorld).invert(),a=RC.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;a.applyMatrix4(c);let u=DC;u.set(a.origin,a.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var yc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let a=i.length-2;a>=0;a--)if(!e.has(i[a])){let c=r.find(i[a]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[a]}`),e.add(i[a])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var UC=new FC;UC.wireframe=!0;var S0=new VC,gc=class extends GC{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new yc;this.errorPage=new Eo("fdasfa",{...Kr.defaultData,name:""});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=b0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=v0(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Eo&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let a=i.children.indexOf(s);o.splice(0,0,a)}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)=>qu(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===yo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}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(),Mo(i)&&Ys(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Ys(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Mo(o)&&(o.freeBooleanPointer(),i instanceof Qt&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Qi&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let 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(),this.markPenumbraSizeDirty();let a=e.localIndex;s.children.splice(a,0,s.children.pop()),Mo(o)&&(o.invalidateUpstreamBooleanData(),Ys(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Qt&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof Eo&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{y0(s,t,o,{scene:this,shared:i}),s instanceof Xe&&s.updateGeometryGroupsIfNeeded()}catch(a){console.error(a)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}init(e,t){this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(o=>{Ys(o)&&o.recomputeBoolean(),o instanceof Io&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Se.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Se.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,a,c){if(e){let u=i.find(e);u&&u!==i&&s.forInstancesRec(l=>{l.data=jn(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(a);if(f){let m=[...aa(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=vt.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,s,a){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof no&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let s=!1;if(t.forInstancesRec(a=>{a.data=jn(a.data,c=>{a.isInstanceRoot||(c.events.delete(i.id),s=!0)}).data}),s===!1)for(let a of ul.list)this.rewriteActions(i.data.gameActions[a],["gameActions",a],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(s=>{if(s instanceof no&&s.isInstanceRoot)return s.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||s.resetBBoxNeedsUpdate(),o&&s.traverseEntity(a=>{o.addClip(a)}),!0});for(let s of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),fc(s)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof no&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Se.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=s=>{for(let a of s.children){let c=a.cloner;if(Se.is(a)&&!a.raycastLock&&(a.visible||c?.object.data.visible))if(t===!0&&a.isInstanceRoot){let u=[];if(e.intersectObject(a,!0,u),u.length){let l=u[0];l.object=a,l.point.applyMatrix4(l.object.matrixWorld);let d=a.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else(Mo(a)||Xs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,o),ea(a,e,o)),i(a)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Se.is(s)&&(s.visible||a?.object.data.visible)&&((Mo(s)||Xs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ea(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Se.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Se.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Se.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Xn.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Se.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}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,a){let c={scene:this,shared:a},u=hc(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,a)),u.updateState(t,c),u instanceof Xe&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof Xe&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new zC().fromArray(h)),m=new kC(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],u=this.find(a),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new jC;return o.setFromPoints(t),o.getCenter(S0),S0}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 pt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Dt&&e(t.material[o]);else t.material instanceof Dt&&e(t.material)})}updateCanvasSize(e,t,o=!1){this.activeCamera.setViewplaneSize(e,t,o)}};import{DRACOLoader as HC}from"three/examples/jsm/loaders/DRACOLoader.js";var Lo;function WC(){return Lo||(Lo=new HC,Lo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Lo.decoderPending}async function qC(n){if(Lo){let r={attributeIDs:Lo.defaultAttributeIDs,attributeTypes:Lo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Lo.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function w0(n,r){let[e,t]=Mc(Xa.deserialize(new Uint8Array(n)));vh(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 WC();for(let i of o){let s=await qC(Ye(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:u,itemSize:l})=>{a[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as SJ}from"three";import{mergeBufferGeometries as PJ}from"three/examples/jsm/utils/BufferGeometryUtils.js";function _0(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 P0,ShaderLib as $C}from"three";function T0(n){let r=new Set;return n.traverse(e=>{if(e instanceof Bt)if(je(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(YC(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new P0,specularColor:new P0});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},$C.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=cg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else XC(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function YC(n){return n.getLayersOfType("transmission").length>0}function XC(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function O0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function A0(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(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as KC}from"three/examples/jsm/utils/BufferGeometryUtils.js";function C0(n){let r=[];return n.traverse(e=>{e instanceof Hi&&r.push(e)}),r.forEach(e=>{let t=e.object,s=[...e.children.map(a=>{a.updateMatrix();let c;if(a.geometry!==void 0)try{c=a.geometry.clone().applyMatrix4(a.matrix)}catch(u){console.error(u)}return c!==void 0&&a.matrix.determinant()<0&&_0(c),c}).filter(a=>a!==void 0)];if(!e.parameters.hideBase&&t instanceof pt&&s.unshift(t.geometry),s.length){let a=KC(s);t instanceof pt&&(t.geometry=a)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Og})}),n}function N0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function I0(n){Object.values(n.shared.materials).forEach(r=>{ku(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?ku(e.material):"materials"in e&&e.materials.forEach(t=>{ku(t)})})}function ku(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 B0=sa(E0(),1);function L0(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var D0="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Uu=class extends QC{load(r,e,t,o=console.error){let i=new ZC(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(D0+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(D0),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},t,o)}async parse(r){let e=await w0(r,I0);e.version&&(0,B0.default)(e.version,"0.9.392")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Dg(e)&&jy(),Wg(e)&&Pg()].filter(Boolean));let t=new nn(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new gc(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=C0(o),o=T0(o),o=O0(o),o=A0(o),o=N0(o),o=L0(o),o}};export{Uu as default};